[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@3.0.0/schema.json\",\n  \"changelog\": \"@changesets/cli/changelog\",\n  \"commit\": false,\n  \"fixed\": [],\n  \"linked\": [[\"@builder.io/mitosis\", \"@builder.io/mitosis-cli\"]],\n  \"access\": \"public\",\n  \"baseBranch\": \"origin/main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": [\n    \"@builder.io/mitosis-fiddle\",\n    \"@builder.io/e2e-*\",\n    \"@builder.io/*example*\",\n    \"@e2e-app/*\",\n    \"@builder.io/e2e*\"\n  ]\n}\n"
  },
  {
    "path": ".eslintignore",
    "content": "**/dist/\n*.d.ts\nnode_modules\n\n# ignore the starter package, it is not part of the workspace\npackages/starter/\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  env: {\n    node: true,\n    browser: true,\n  },\n  parser: '@typescript-eslint/parser', // Specifies the ESLint parser\n  plugins: ['@typescript-eslint', 'unused-imports'],\n  extends: [],\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n  rules: {\n    'no-unused-vars': 'off', // or \"@typescript-eslint/no-unused-vars\": \"off\",\n    'unused-imports/no-unused-imports': 'error',\n  },\n};\n"
  },
  {
    "path": ".gitattributes",
    "content": "*.json linguist-language=JSON-with-Comments\n\n/.yarn/releases/** binary\n/.yarn/plugins/** binary\n"
  },
  {
    "path": ".gitguardian.yml",
    "content": "matches-ignore:\n  - name: public test API key\n    match: 23dfd7cef1104af59f281d58ec525923\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
    "content": "name: 🐞 Bug Report\ndescription: Something does not work or is flaky? let us know!\nlabels: [bug, triage]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for taking the time to fill out this bug report! We are always on the lookout for folks interested in becoming active contributors to Mitosis. Given its large surface area, there is a ton of room for any engineer to make a large and sustained impact on the project. \n      \n        We invest a ton of time in helping newcomers get onboarded, and teach them how to make changes to the codebase (see the following examples: [#847](https://github.com/BuilderIO/mitosis/issues/847#issuecomment-1307439504), [#372](https://github.com/BuilderIO/mitosis/issues/372#issuecomment-1133471614), [#734](https://github.com/BuilderIO/mitosis/issues/734#issuecomment-1255453702)). \n      \n        So consider ticking that \"Yes\" box below, and we'll do our best to set you up for success. 🙂\n  - type: dropdown\n    id: help-fix\n    validations:\n      required: true\n    attributes:\n      label: I am interested in helping provide a fix!\n      description: We will offer whatever guidance you need to contribute :)\n      options:\n        - \"Yes\"\n        - \"No\"\n\n  - type: checkboxes\n    id: component\n    attributes:\n      label: Which generators are impacted?\n      description: Select all the ones that apply, to the best of your knowledge.\n      options:\n        - label: All\n        - label: Angular\n        - label: HTML\n        - label: Preact\n        - label: Qwik\n        - label: React\n        - label: React-Native\n        - label: Solid\n        - label: Stencil\n        - label: Svelte\n        - label: Vue\n        - label: Web components\n\n  - type: input\n    id: reproduction_fiddle\n    attributes:\n      description: A link to a https://mitosis.builder.io/playground playground show-casing the bug\n      label: Reproduction case\n    validations:\n      required: true\n\n  - type: textarea\n    id: expected_behaviour\n    attributes:\n      description: A clear and concise description of what you expected to happen.\n      label: Expected Behaviour\n    validations:\n      required: true\n\n  - type: textarea\n    id: actual_behaviour\n    attributes:\n      label: Actual Behaviour\n    validations:\n      required: true\n\n  - type: textarea\n    id: additional_information\n    attributes:\n      label: Additional Information\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yaml",
    "content": "name: 🚀 Feature Proposal\ndescription: Suggest an idea for this project\nlabels: [enhancement, triage]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for taking the time to fill out this feature proposal! We are always on the lookout for folks interested in becoming active contributors to Mitosis. Given its large surface area, there is a ton of room for any engineer to make a large and sustained impact on the project.\n        So consider ticking that \"Yes\" box below, and we'll do our best to set you up for success. 🙂\n  - type: dropdown\n    id: help-fix\n    validations:\n      required: true\n    attributes:\n      label: I am interested in helping provide a feature!\n      description: We will offer whatever guidance you need to contribute :)\n      options:\n        - \"Yes\"\n        - \"No\"\n\n  - type: checkboxes\n    id: component\n    attributes:\n      label: Which generators are impacted?\n      description: Select all the ones that apply, to the best of your knowledge.\n      options:\n        - label: All\n        - label: Angular\n        - label: HTML\n        - label: Qwik\n        - label: React\n        - label: React-Native\n        - label: Solid\n        - label: Stencil\n        - label: Svelte\n        - label: Vue\n        - label: Web components\n\n  - type: textarea\n    id: problem-description\n    attributes:\n      description: |\n        Explain your use case, context, and rationale behind this feature request. More importantly, what is the **end user experience** you are trying to build that led to the need for this feature?“\n      label: What problem does this feature solve?\n    validations:\n      required: true\n\n  - type: textarea\n    id: proposed-API\n    attributes:\n      label: What does the proposed API look like?\n      description: |\n        Describe how you propose to solve the problem and provide code samples of how the API would work once implemented.\n    validations:\n      required: true\n\n  - type: textarea\n    id: additional_information\n    attributes:\n      label: Additional Information\n    validations:\n      required: false"
  },
  {
    "path": ".github/actions/yarn-nm-install/action.yml",
    "content": "########################################################################################\n# \"yarn install\" composite action for yarn 3/4+ and \"nodeLinker: node-modules\"         #\n#--------------------------------------------------------------------------------------#\n# Requirement: @setup/node should be run before                                        #\n#                                                                                      #\n# Usage in workflows steps:                                                            #\n#                                                                                      #\n#      - name: 📥 Monorepo install                                                     #\n#        uses: ./.github/actions/yarn-nm-install                                       #\n#        with:                                                                         #\n#          enable-corepack: false                   # (default = 'false')              #\n#          cwd: ${{ github.workspace }}/apps/my-app # (default = '.')                  #\n#          cache-prefix: add cache key prefix       # (default = 'default')            #\n#          cache-node-modules: false                # (default = 'false')              #\n#          cache-install-state: false               # (default = 'false')              #\n#                                                                                      #\n# Reference:                                                                           #\n#   - latest: https://gist.github.com/belgattitude/042f9caf10d029badbde6cf9d43e400a    #\n#                                                                                      #\n# Versions:                                                                            #\n#   - 1.2.1 - 25-05-2024 - fix a missing action/cache not upraded to v4                #\n#   - 1.2.0 - 01-05-2024 - action/cache upraded to v4                                  #\n#   - 1.1.0 - 22-07-2023 - Option to enable npm global cache folder.                   #\n#   - 1.0.4 - 15-07-2023 - Fix corepack was always enabled.                            #\n#   - 1.0.3 - 05-07-2023 - YARN_ENABLE_MIRROR to false (speed up cold start)           #\n#   - 1.0.2 - 02-06-2023 - install-state default to false                              #\n#   - 1.0.1 - 29-05-2023 - cache-prefix doc                                            #\n#   - 1.0.0 - 27-05-2023 - new input: cache-prefix                                     #\n########################################################################################\n\nname: 'Monorepo install (yarn)'\ndescription: 'Run yarn install with node_modules linker and cache enabled'\ninputs:\n  cwd:\n    description: \"Changes node's process.cwd() if the project is not located on the root. Default to process.cwd()\"\n    required: false\n    default: '.'\n  cache-prefix:\n    description: 'Add a specific cache-prefix'\n    required: false\n    default: 'default'\n  cache-npm-cache:\n    description: 'Cache npm global cache folder often used by node-gyp, prebuild binaries (invalidated on lock/os/node-version)'\n    required: false\n    default: 'true'\n  cache-node-modules:\n    description: 'Cache node_modules, might speed up link step (invalidated lock/os/node-version/branch)'\n    required: false\n    default: 'false'\n  cache-install-state:\n    description: 'Cache yarn install state, might speed up resolution step when node-modules cache is activated (invalidated lock/os/node-version/branch)'\n    required: false\n    default: 'false'\n  enable-corepack:\n    description: 'Enable corepack'\n    required: false\n    default: 'true'\n\nruns:\n  using: 'composite'\n\n  steps:\n    - name: ⚙️ Enable Corepack\n      if: inputs.enable-corepack == 'true'\n      shell: bash\n      working-directory: ${{ inputs.cwd }}\n      run: corepack enable\n\n    - name: ⚙️ Expose yarn config as \"$GITHUB_OUTPUT\"\n      id: yarn-config\n      shell: bash\n      working-directory: ${{ inputs.cwd }}\n      env:\n        YARN_ENABLE_GLOBAL_CACHE: 'false'\n      run: |\n        echo \"CACHE_FOLDER=$(yarn config get cacheFolder)\" >> $GITHUB_OUTPUT\n        echo \"CURRENT_NODE_VERSION=\"node-$(node --version)\"\" >> $GITHUB_OUTPUT\n        echo \"CURRENT_BRANCH=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's,/,-,g')\" >> $GITHUB_OUTPUT\n        echo \"NPM_GLOBAL_CACHE_FOLDER=$(npm config get cache)\" >> $GITHUB_OUTPUT\n\n    - name: ♻️ Restore yarn cache\n      uses: actions/cache@v4\n      id: yarn-download-cache\n      with:\n        path: ${{ steps.yarn-config.outputs.CACHE_FOLDER }}\n        key: yarn-download-cache-${{ inputs.cache-prefix }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }}\n        restore-keys: |\n          yarn-download-cache-${{ inputs.cache-prefix }}-\n\n    - name: ♻️ Restore node_modules\n      if: inputs.cache-node-modules == 'true'\n      id: yarn-nm-cache\n      uses: actions/cache@v4\n      with:\n        path: ${{ inputs.cwd }}/**/node_modules\n        key: yarn-nm-cache-${{ inputs.cache-prefix }}-${{ runner.os }}-${{ steps.yarn-config.outputs.CURRENT_NODE_VERSION }}-${{ steps.yarn-config.outputs.CURRENT_BRANCH }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }}\n\n    - name: ♻️ Restore global npm cache folder\n      if: inputs.cache-npm-cache == 'true'\n      id: npm-global-cache\n      uses: actions/cache@v4\n      with:\n        path: ${{ steps.yarn-config.outputs.NPM_GLOBAL_CACHE_FOLDER }}\n        key: npm-global-cache-${{ inputs.cache-prefix }}-${{ runner.os }}-${{ steps.yarn-config.outputs.CURRENT_NODE_VERSION }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }}\n\n    - name: ♻️ Restore yarn install state\n      if: inputs.cache-install-state == 'true' && inputs.cache-node-modules == 'true'\n      id: yarn-install-state-cache\n      uses: actions/cache@v4\n      with:\n        path: ${{ inputs.cwd }}/.yarn/ci-cache\n        key: yarn-install-state-cache-${{ inputs.cache-prefix }}-${{ runner.os }}-${{ steps.yarn-config.outputs.CURRENT_NODE_VERSION }}-${{ steps.yarn-config.outputs.CURRENT_BRANCH }}-${{ hashFiles(format('{0}/yarn.lock', inputs.cwd), format('{0}/.yarnrc.yml', inputs.cwd)) }}\n\n    - name: 📥 Install dependencies\n      shell: bash\n      working-directory: ${{ inputs.cwd }}\n      run: yarn install --immutable --inline-builds\n      env:\n        # Overrides/align yarnrc.yml options (v3, v4) for a CI context\n        YARN_ENABLE_GLOBAL_CACHE: 'false' # Use local cache folder to keep downloaded archives\n        YARN_ENABLE_MIRROR: 'false' # Prevent populating global cache for caches misses (local cache only)\n        YARN_NM_MODE: 'hardlinks-local' # Reduce node_modules size\n        YARN_INSTALL_STATE_PATH: '.yarn/ci-cache/install-state.gz' # Might speed up resolution step when node_modules present\n        # Other environment variables\n        HUSKY: '0' # By default do not run HUSKY install\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "## Description\n\nPlease provide the following information:\n\n- What changes you made:\n\n- Why you made them, and:\n\n- Any other useful context:\n\nMake sure to follow the PR preparation steps in [CONTRIBUTING.md](../CONTRIBUTING.md#preparing-your-pr) before submitting your PR:\n\n- [ ] format the codebase: from the root, run `yarn fmt:prettier`.\n- [ ] update all snapshots (in core & CLI): from the root, run `yarn test:update`\n- [ ] add Changeset entry: from the root, run `yarn g:changeset` and follow the CLI instructions. Alternatively, use the Changeset Github Bot to create the file.\n"
  },
  {
    "path": ".github/workflows/checks.yml",
    "content": "# This workflow runs when new change is pushed to repo OR when a new PR is created\n# It performs all of the tests to make sure everything is good.\n\n---\nname: PR Runner\n\non:\n  workflow_dispatch:\n  push:\n  pull_request:\n\nenv:\n  NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Lint\n        run: yarn ci:lint\n\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Build\n        run: yarn ci:build\n\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Run tests\n        run: yarn ci:test\n\n  test-update:\n    if: always() && (needs.test.result == 'failure')\n    needs:\n      - test\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: 🏃🆙⏲️ Run test-update\n        run: yarn test:update\n\n      - name: 🆙 Upload snapshots\n        uses: actions/upload-artifact@v4\n        with:\n          name: snapshots-updates\n          path: ./packages/core/src/**/__snapshots__\n          retention-days: 30\n\n  site:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Build Site\n        run: yarn g:nx build @builder.io/mitosis-site\n\n  e2e:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Build\n        run: yarn ci:build\n\n      - name: Run E2E tests\n        run: yarn ci:e2e\n\n      - name: 🆙 Upload test results\n        if: failure()\n        uses: actions/upload-artifact@v4\n        with:\n          name: playwright-results\n          path: ./e2e/e2e-app/test-results\n          retention-days: 14\n\n      - name: 🆙 Upload e2e builds\n        if: failure()\n        uses: actions/upload-artifact@v4\n        with:\n          name: e2e-builds\n          path: |\n            ./e2e/**/dist\n            !**/node_modules/**\n          retention-days: 14\n"
  },
  {
    "path": ".github/workflows/crawl-docs-site.yml",
    "content": "name: Crawl the docs site with Meilisearch Cloud to update the contents to the latest\n\non:\n  push:\n    branches:\n      - main\n  # We allow manually dispatching workflow when needed. Most often, this will not be needed.\n  workflow_dispatch:\n\njobs:\n  crawler:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: meilisearch/actions/cloud-crawler@main\n        with:\n          token: ${{ secrets.MEILISEARCH_CLOUD_CRAWLER_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "---\nname: Publish\n\non:\n  push:\n    branches:\n      - main\n  # We allow manually dispatching workflow when needed. Most often, this will not be needed.\n  workflow_dispatch:\n\nconcurrency: ${{ github.workflow }}-${{ github.ref }}\n\njobs:\n  publish-sdks:\n    name: Publish package\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Setup\n        uses: actions/checkout@v4\n        with:\n          # need this custom token to run CI checks on the created PR\n          token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}\n\n      - name: Use Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: 20\n\n      - name: 📥 Monorepo install\n        uses: ./.github/actions/yarn-nm-install\n        with:\n          cache-node-modules: true\n          cache-install-state: true\n\n      - name: Create Release PR & Publish to npm\n        id: changesets\n        uses: changesets/action@v1\n        with:\n          publish: yarn ci:release\n          title: '📦 Publish Mitosis'\n          commit: '📦 Publish Mitosis'\n        env:\n          # need this custom token to run CI checks on the created PR\n          GITHUB_TOKEN: ${{ secrets.CUSTOM_GITHUB_TOKEN }}\n\n          # probably don't need both of those, but it works!\n          NPM_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }}\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_RELEASE_TOKEN }}\n"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\ndist\n*.log\n.vscode/**\n!.vscode/extensions.json\n!.vscode/settings.json\n.idea\ncoverage\n.DS_Store\n*.tsbuildinfo\n.cache\nfiddle/build/\npackages/core/mitosis-build\n.history\n.pnp.*\n.eslintcache\n\n# ignore everything in .yarn folder, except the .yarn/patches and the .yarn/versions subfolders\n.yarn/*\n!/.yarn/patches\n!/.yarn/versions\n!/.yarn/releases\n\n# sveltekit tmp files\n**/package/__package_types_tmp__/\n\n**/test-results/\n**/playwright-report/\n\npackages/core/src/__tests__/__snapshots__/local.test.ts.snap\n\n.nx/cache\n.nx-cache\n.nx/workspace-data\n"
  },
  {
    "path": ".npmrc",
    "content": "# avoid accidentally using npm\n# https://github.com/yarnpkg/yarn/issues/4895#issuecomment-545644733\nengine-strict=true\n"
  },
  {
    "path": ".nvmrc",
    "content": "20.11.0"
  },
  {
    "path": ".prettierignore",
    "content": "coverage\nnode_modules\ndist\n__snapshots__\npackages/fiddle/build/**\n.yarn\ne2e/**/output/src/**\ne2e/e2e-app-vue3-output/vue3/src/**\ne2e/e2e-angular/angular_src/app/lib/**\ne2e/e2e-qwik/server/**\ne2e/e2e-app-qwik-output/src/e2e-app/**\ne2e/e2e-app-qwik-output/lib/**\n**/test-results/\n**/playwright-report/\n**/playwright/.cache/\n# **/tsconfig.json\n\nexamples/**/output/**/*\ne2e/e2e-app/output/**/src/**/*\ne2e/e2e-app/output/**/types/**/*\npackages/docs/server\n\n.angular\n.next\n\n# ignore the starter package, it is not part of the workspace\n# packages/starter/\n"
  },
  {
    "path": ".prettierrc.js",
    "content": "module.exports = {\n  printWidth: 100,\n  tabWidth: 2,\n  singleQuote: true,\n  trailingComma: 'all',\n  arrowParens: 'always',\n  plugins: ['prettier-plugin-organize-imports']\n};\n"
  },
  {
    "path": ".tool-versions",
    "content": "nodejs 20.11.0\n"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\n    \"bradlc.vscode-tailwindcss\",\n    \"dbaeumer.vscode-eslint\",\n    \"esbenp.prettier-vscode\",\n    \"ms-playwright.playwright\"\n  ]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll\": \"explicit\",\n    \"source.organizeImports\": \"explicit\"\n  },\n  \"typescript.format.enable\": true,\n  \"editor.formatOnSave\": true,\n  \"typescript.tsdk\": \"node_modules/typescript/lib\"\n}\n"
  },
  {
    "path": ".yarn/patches/@sveltejs-package-npm-1.0.0-next.1-2fd015530b.patch",
    "content": "diff --git a/src/index.js b/src/index.js\nindex d751537bf1cff8a65be897172898406c44c55eeb..4de812ee92dbf8fcf300da6097900182bf7e655d 100644\n--- a/src/index.js\n+++ b/src/index.js\n@@ -55,7 +55,7 @@ export async function build(config, cwd = process.cwd()) {\n \t\t}\n \t}\n \n-\twrite(join(dir, 'package.json'), JSON.stringify(pkg, null, 2));\n+\twrite(join(dir, '--package.json'), JSON.stringify(pkg, null, 2));\n \n \tfor (const file of files) {\n \t\tawait process_file(config, file);\n@@ -156,7 +156,7 @@ export async function watch(config, cwd = process.cwd()) {\n \n \t\t\tif (should_update_pkg) {\n \t\t\t\tconst pkg = generate_pkg(cwd, files);\n-\t\t\t\twrite(join(dir, 'package.json'), JSON.stringify(pkg, null, 2));\n+\t\t\t\twrite(join(dir, '--package.json'), JSON.stringify(pkg, null, 2));\n \t\t\t\tconsole.log('Updated package.json');\n \t\t\t}\n \n"
  },
  {
    "path": ".yarn/releases/yarn-4.1.1.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var Z3e=Object.create;var NR=Object.defineProperty;var $3e=Object.getOwnPropertyDescriptor;var e_e=Object.getOwnPropertyNames;var t_e=Object.getPrototypeOf,r_e=Object.prototype.hasOwnProperty;var ve=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+t+'\" is not supported')});var Et=(t,e)=>()=>(t&&(e=t(t=0)),e);var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Vt=(t,e)=>{for(var r in e)NR(t,r,{get:e[r],enumerable:!0})},n_e=(t,e,r,o)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of e_e(e))!r_e.call(t,a)&&a!==r&&NR(t,a,{get:()=>e[a],enumerable:!(o=$3e(e,a))||o.enumerable});return t};var $e=(t,e,r)=>(r=t!=null?Z3e(t_e(t)):{},n_e(e||!t||!t.__esModule?NR(r,\"default\",{value:t,enumerable:!0}):r,t));var vi={};Vt(vi,{SAFE_TIME:()=>x7,S_IFDIR:()=>wD,S_IFLNK:()=>ID,S_IFMT:()=>Ou,S_IFREG:()=>qw});var Ou,wD,qw,ID,x7,k7=Et(()=>{Ou=61440,wD=16384,qw=32768,ID=40960,x7=456789e3});var ar={};Vt(ar,{EBADF:()=>Io,EBUSY:()=>i_e,EEXIST:()=>u_e,EINVAL:()=>o_e,EISDIR:()=>c_e,ENOENT:()=>a_e,ENOSYS:()=>s_e,ENOTDIR:()=>l_e,ENOTEMPTY:()=>f_e,EOPNOTSUPP:()=>p_e,EROFS:()=>A_e,ERR_DIR_CLOSED:()=>LR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function i_e(t){return Tl(\"EBUSY\",t)}function s_e(t,e){return Tl(\"ENOSYS\",`${t}, ${e}`)}function o_e(t){return Tl(\"EINVAL\",`invalid argument, ${t}`)}function Io(t){return Tl(\"EBADF\",`bad file descriptor, ${t}`)}function a_e(t){return Tl(\"ENOENT\",`no such file or directory, ${t}`)}function l_e(t){return Tl(\"ENOTDIR\",`not a directory, ${t}`)}function c_e(t){return Tl(\"EISDIR\",`illegal operation on a directory, ${t}`)}function u_e(t){return Tl(\"EEXIST\",`file already exists, ${t}`)}function A_e(t){return Tl(\"EROFS\",`read-only filesystem, ${t}`)}function f_e(t){return Tl(\"ENOTEMPTY\",`directory not empty, ${t}`)}function p_e(t){return Tl(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function LR(){return Tl(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var BD=Et(()=>{});var Ea={};Vt(Ea,{BigIntStatsEntry:()=>ty,DEFAULT_MODE:()=>UR,DirEntry:()=>OR,StatEntry:()=>ey,areStatsEqual:()=>_R,clearStats:()=>vD,convertToBigIntStats:()=>g_e,makeDefaultStats:()=>Q7,makeEmptyStats:()=>h_e});function Q7(){return new ey}function h_e(){return vD(Q7())}function vD(t){for(let e in t)if(Object.hasOwn(t,e)){let r=t[e];typeof r==\"number\"?t[e]=0:typeof r==\"bigint\"?t[e]=BigInt(0):MR.types.isDate(r)&&(t[e]=new Date(0))}return t}function g_e(t){let e=new ty;for(let r in t)if(Object.hasOwn(t,r)){let o=t[r];typeof o==\"number\"?e[r]=BigInt(o):MR.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function _R(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var MR,UR,OR,ey,ty,HR=Et(()=>{MR=$e(ve(\"util\")),UR=33188,OR=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ey=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=UR;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ty=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(UR);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function C_e(t){let e,r;if(e=t.match(y_e))t=e[1];else if(r=t.match(E_e))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function w_e(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(d_e))?t=`/${e[1]}`:(r=t.match(m_e))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function DD(t,e){return t===ue?R7(e):qR(e)}var jw,Bt,dr,ue,V,F7,d_e,m_e,y_e,E_e,qR,R7,Ca=Et(()=>{jw=$e(ve(\"path\")),Bt={root:\"/\",dot:\".\",parent:\"..\"},dr={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},ue=Object.create(jw.default),V=Object.create(jw.default.posix);ue.cwd=()=>process.cwd();V.cwd=process.platform===\"win32\"?()=>qR(process.cwd()):process.cwd;process.platform===\"win32\"&&(V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?jw.default.posix.resolve(...t):jw.default.posix.resolve(V.cwd(),...t));F7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?\".\":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.contains=(t,e)=>F7(ue,t,e);V.contains=(t,e)=>F7(V,t,e);d_e=/^([a-zA-Z]:.*)$/,m_e=/^\\/\\/(\\.\\/)?(.*)$/,y_e=/^\\/([a-zA-Z]:.*)$/,E_e=/^\\/unc\\/(\\.dot\\/)?(.*)$/;qR=process.platform===\"win32\"?w_e:t=>t,R7=process.platform===\"win32\"?C_e:t=>t;ue.fromPortablePath=R7;ue.toPortablePath=qR});async function SD(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function T7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:Og,mtime:Og}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await jR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let I of A)await I();await Promise.all(p.map(I=>I()))}async function jR(t,e,r,o,a,n,u){let A=u.didParentExist?await N7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=u.stableTime?{atime:Og,mtime:Og}:p,I;switch(!0){case p.isDirectory():I=await B_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():I=await S_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():I=await P_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(u.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((I||A?.mtime?.getTime()!==E.getTime()||A?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,E)),I=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),I=!0)),I}async function N7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function B_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!==\"EEXIST\")throw v}}),h=!0);let E=await n.readdirPromise(u),I=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of E.sort())await jR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),I)&&(h=!0);else(await Promise.all(E.map(async x=>{await jR(t,e,r,r.pathUtils.join(o,x),n,n.pathUtils.join(u,x),I)}))).some(x=>x)&&(h=!0);return h}async function v_e(t,e,r,o,a,n,u,A,p,h){let E=await n.checksumFilePromise(u,{algorithm:\"sha1\"}),I=420,v=A.mode&511,x=`${E}${v!==I?v.toString(8):\"\"}`,C=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),R;(ce=>(ce[ce.Lock=0]=\"Lock\",ce[ce.Rename=1]=\"Rename\"))(R||={});let L=1,U=await N7(r,C);if(a){let ae=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==I_e;if(ae&&fe&&h.autoRepair&&(L=0,U=null),!ae)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let J=!U&&L===1?`${C}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,te=!1;return t.push(async()=>{if(!U&&(L===0&&await r.lockPromise(C,async()=>{let ae=await n.readFilePromise(u);await r.writeFilePromise(C,ae)}),L===1&&J)){let ae=await n.readFilePromise(u);await r.writeFilePromise(J,ae);try{await r.linkPromise(J,C)}catch(fe){if(fe.code===\"EEXIST\")te=!0,await r.unlinkPromise(J);else throw fe}}a||await r.linkPromise(C,o)}),e.push(async()=>{U||(await r.lutimesPromise(C,Og,Og),v!==I&&await r.chmodPromise(C,v)),J&&!te&&await r.unlinkPromise(J)}),!1}async function D_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function S_e(t,e,r,o,a,n,u,A,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?v_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):D_e(t,e,r,o,a,n,u,A,p)}async function P_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(DD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Og,I_e,GR=Et(()=>{Ca();Og=new Date(456789e3*1e3),I_e=Og.getTime()});function PD(t,e,r,o){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let u=t.pathUtils.join(e,n);return Object.assign(t.statSync(u),{name:n,path:void 0})};return new Gw(e,a,o)}var Gw,L7=Et(()=>{BD();Gw=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw LR()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<\"u\"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<\"u\"?e(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function O7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var M7,ry,U7=Et(()=>{M7=ve(\"events\");HR();ry=class extends M7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new ry(r,o,a);return n.start(),n}start(){O7(this.status,\"ready\"),this.status=\"running\",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(\"change\",this.lastStats,this.lastStats)},3)}stop(){O7(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ty:new ey;return vD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;_R(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener(\"change\",r);let o=this.changeListeners.get(r);typeof o<\"u\"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ny(t,e,r,o){let a,n,u,A;switch(typeof r){case\"function\":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=bD.get(t);typeof p>\"u\"&&bD.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=ry.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Mg(t,e,r){let o=bD.get(t);if(typeof o>\"u\")return;let a=o.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Ug(t){let e=bD.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())Mg(t,r)}var bD,YR=Et(()=>{U7();bD=new WeakMap});function b_e(t){let e=t.match(/\\r?\\n/g);if(e===null)return H7.EOL;let r=e.filter(a=>a===`\\r\n`).length,o=e.length-r;return r>o?`\\r\n`:`\n`}function _g(t,e){return e.replace(/\\r?\\n/g,b_e(t))}var _7,H7,gf,Mu,Hg=Et(()=>{_7=ve(\"crypto\"),H7=ve(\"os\");GR();Ca();gf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let o=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,_7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!==\"EBUSY\"&&u.code!==\"ENOTEMPTY\")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=A,r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await T7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(DD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let u=o?_g(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r,{compact:o=!1}={}){let a=o?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:o=!1}={}){let a=o?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Mu=class extends gf{constructor(){super(V)}}});var Ss,df=Et(()=>{Hg();Ss=class extends gf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var Uu,q7=Et(()=>{df();Uu=class extends Ss{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});function j7(t){let e=t;return typeof t.path==\"string\"&&(e.path=ue.toPortablePath(t.path)),e}var G7,Tn,qg=Et(()=>{G7=$e(ve(\"fs\"));Hg();Ca();Tn=class extends Mu{constructor(r=G7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return Bt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<\"u\"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>{let n=a;return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n})}opendirSync(r,o){let n=typeof o<\"u\"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(n,\"path\",{value:r,configurable:!0,writable:!0}),n}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,E)=>{h?p(h):A(E)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o==\"string\"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o==\"string\"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r==\"string\"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\\/+$/,\"\")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r==\"string\"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r==\"string\"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(j7)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(u=>a(u.map(ue.toPortablePath)),n)):this.realFs.readdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}readdirSync(r,o){return o?o.recursive&&process.platform===\"win32\"?o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),o).map(j7):this.realFs.readdirSync(ue.fromPortablePath(r),o).map(ue.toPortablePath):this.realFs.readdirSync(ue.fromPortablePath(r),o):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var gn,Y7=Et(()=>{qg();df();Ca();gn=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var W7,_u,K7=Et(()=>{qg();df();Ca();W7=Bt.root,_u=class extends Ss{constructor(r,{baseFs:o=new Tn}={}){super(V);this.target=this.pathUtils.resolve(Bt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Bt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(W7,r));if(o.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(W7,this.pathUtils.relative(this.target,r))}}});var iy,V7=Et(()=>{df();iy=class extends Ss{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var jg,wa,Hp,J7=Et(()=>{jg=ve(\"fs\");Hg();qg();YR();BD();Ca();wa=4278190080,Hp=class extends Mu{constructor({baseFs:r=new Tn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=jg.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:I}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=E,this.factorySync=I,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(Ug(this),this.mountInstances)for(let[r,{childFs:o}]of this.mountInstances.entries())o.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&wa)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"read\");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&wa)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"readSync\");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"write\");let[p,h]=A;return typeof o==\"string\"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&wa)!==this.magic)return typeof o==\"string\"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>\"u\")throw Io(\"writeSync\");let[p,h]=A;return typeof o==\"string\"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&wa)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"close\");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&wa)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>\"u\")throw Io(\"closeSync\");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>\"u\"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(Bt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstat\");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fstatSync\");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmod\");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&wa)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"fchmodSync\");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchown\");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&wa)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Io(\"fchownSync\");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&jg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:\"EXDEV\"});if(a&jg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncate\");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&wa)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Io(\"ftruncateSync\");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ny(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Mg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath===\"/\"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath===\"/\"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o=\"\";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&jg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(Bt.root,r.substring(o.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[u,{childFs:A,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||A.hasOpenFileHandles?.())){if(o>=p){A.saveAndClose?.(),this.mountInstances.delete(u),n-=1;continue}else if(r===null||n<=0){a=p;break}A.saveAndClose?.(),this.mountInstances.delete(u),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await o(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await o(a)}finally{a.saveAndClose?.()}}}getMountSync(r,o){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,o(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return o(a)}finally{a.saveAndClose?.()}}}}});var Zt,WR,Yw,z7=Et(()=>{Hg();Ca();Zt=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),WR=class extends gf{constructor(){super(V)}getExtractHint(){throw Zt()}getRealPath(){throw Zt()}resolve(){throw Zt()}async openPromise(){throw Zt()}openSync(){throw Zt()}async opendirPromise(){throw Zt()}opendirSync(){throw Zt()}async readPromise(){throw Zt()}readSync(){throw Zt()}async writePromise(){throw Zt()}writeSync(){throw Zt()}async closePromise(){throw Zt()}closeSync(){throw Zt()}createWriteStream(){throw Zt()}createReadStream(){throw Zt()}async realpathPromise(){throw Zt()}realpathSync(){throw Zt()}async readdirPromise(){throw Zt()}readdirSync(){throw Zt()}async existsPromise(e){throw Zt()}existsSync(e){throw Zt()}async accessPromise(){throw Zt()}accessSync(){throw Zt()}async statPromise(){throw Zt()}statSync(){throw Zt()}async fstatPromise(e){throw Zt()}fstatSync(e){throw Zt()}async lstatPromise(e){throw Zt()}lstatSync(e){throw Zt()}async fchmodPromise(){throw Zt()}fchmodSync(){throw Zt()}async chmodPromise(){throw Zt()}chmodSync(){throw Zt()}async fchownPromise(){throw Zt()}fchownSync(){throw Zt()}async chownPromise(){throw Zt()}chownSync(){throw Zt()}async mkdirPromise(){throw Zt()}mkdirSync(){throw Zt()}async rmdirPromise(){throw Zt()}rmdirSync(){throw Zt()}async linkPromise(){throw Zt()}linkSync(){throw Zt()}async symlinkPromise(){throw Zt()}symlinkSync(){throw Zt()}async renamePromise(){throw Zt()}renameSync(){throw Zt()}async copyFilePromise(){throw Zt()}copyFileSync(){throw Zt()}async appendFilePromise(){throw Zt()}appendFileSync(){throw Zt()}async writeFilePromise(){throw Zt()}writeFileSync(){throw Zt()}async unlinkPromise(){throw Zt()}unlinkSync(){throw Zt()}async utimesPromise(){throw Zt()}utimesSync(){throw Zt()}async lutimesPromise(){throw Zt()}lutimesSync(){throw Zt()}async readFilePromise(){throw Zt()}readFileSync(){throw Zt()}async readlinkPromise(){throw Zt()}readlinkSync(){throw Zt()}async truncatePromise(){throw Zt()}truncateSync(){throw Zt()}async ftruncatePromise(e,r){throw Zt()}ftruncateSync(e,r){throw Zt()}watch(){throw Zt()}watchFile(){throw Zt()}unwatchFile(){throw Zt()}},Yw=WR;Yw.instance=new WR});var qp,X7=Et(()=>{df();Ca();qp=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var x_e,KR,k_e,mi,Z7=Et(()=>{qg();df();Ca();x_e=/^[0-9]+$/,KR=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,k_e=/^([^/]+-)?[a-f0-9]+$/,mi=class extends Ss{constructor({baseFs:r=new Tn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!V.basename(o).match(k_e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let u=V.relative(V.dirname(r),a).split(\"/\"),A=0;for(;A<u.length&&u[A]===\"..\";)A+=1;let p=u.slice(A);return V.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(KR);if(!o||!o[3]&&o[5])return r;let a=V.dirname(o[1]);if(!o[3]||!o[4])return a;if(!x_e.test(o[4]))return r;let u=Number(o[4]),A=\"../\".repeat(u),p=o[5]||\".\";return mi.resolveVirtual(V.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(KR);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(KR);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return mi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r===\"\")return r;if(this.pathUtils.isAbsolute(r))return mi.resolveVirtual(r);let o=mi.resolveVirtual(this.baseFs.resolve(Bt.dot)),a=mi.resolveVirtual(this.baseFs.resolve(r));return V.relative(o,a)||Bt.dot}mapFromBase(r){return r}}});function Q_e(t,e){return typeof VR.default.isUtf8<\"u\"?VR.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var VR,$7,eY,xD,tY=Et(()=>{VR=$e(ve(\"buffer\")),$7=ve(\"url\"),eY=ve(\"util\");df();Ca();xD=class extends Ss{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r==\"string\")return r;if(r instanceof URL)return(0,$7.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(!Q_e(r,o))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return o}throw new Error(`Unsupported path type: ${(0,eY.inspect)(r)}`)}}});var rY,Bo,mf,jp,kD,QD,sy,Tc,Nc,F_e,R_e,T_e,N_e,Ww,nY=Et(()=>{rY=ve(\"readline\"),Bo=Symbol(\"kBaseFs\"),mf=Symbol(\"kFd\"),jp=Symbol(\"kClosePromise\"),kD=Symbol(\"kCloseResolve\"),QD=Symbol(\"kCloseReject\"),sy=Symbol(\"kRefs\"),Tc=Symbol(\"kRef\"),Nc=Symbol(\"kUnref\"),Ww=class{constructor(e,r){this[F_e]=1;this[R_e]=void 0;this[T_e]=void 0;this[N_e]=void 0;this[Bo]=r,this[mf]=e}get fd(){return this[mf]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Bo].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Bo].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Bo].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Bo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Bo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??={},n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??=0,o??=0,o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Bo].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Bo].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,rY.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Bo].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Bo].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Bo].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Bo].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[mf]===-1)return Promise.resolve();if(this[jp])return this[jp];if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[jp]=this[Bo].closePromise(e).finally(()=>{this[jp]=void 0})}else this[jp]=new Promise((e,r)=>{this[kD]=e,this[QD]=r}).finally(()=>{this[jp]=void 0,this[QD]=void 0,this[kD]=void 0});return this[jp]}[(Bo,mf,F_e=sy,R_e=jp,T_e=kD,N_e=QD,Tc)](e){if(this[mf]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[sy]++}[Nc](){if(this[sy]--,this[sy]===0){let e=this[mf];this[mf]=-1,this[Bo].closePromise(e).then(this[kD],this[QD])}}}});function Kw(t,e){e=new xD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof u?.[oy.promisify.custom]<\"u\"&&(n[oy.promisify.custom]=u[oy.promisify.custom])};{r(t,\"exists\",(o,...a)=>{let u=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,\"read\",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let E={};o.length<3?h=o[1]:(E=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=E}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let o of iY){let a=o.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[o];if(typeof n>\"u\")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]==\"function\"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,\"readSync\",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of L_e){let a=o;if(typeof t[a]>\"u\")continue;let n=e[o];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of iY){let n=a.replace(/Promise$/,\"\");if(typeof o[n]>\"u\")continue;let u=e[a];typeof u>\"u\"||a!==\"open\"&&r(o,n,(A,...p)=>A instanceof Ww?A[n].apply(A,p):u.call(e,A,...p))}r(o,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new Ww(n,e)})}t.read[oy.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[oy.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function FD(t,e){let r=Object.create(t);return Kw(r,e),r}var oy,L_e,iY,sY=Et(()=>{oy=ve(\"util\");tY();nY();L_e=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),iY=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function oY(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function aY(){if(JR)return JR;let t=ue.toPortablePath(lY.default.tmpdir()),e=oe.realpathSync(t);return process.once(\"exit\",()=>{oe.rmtempSync()}),JR={tmpdir:t,realTmpdir:e}}var lY,Lc,JR,oe,cY=Et(()=>{lY=$e(ve(\"os\"));qg();Ca();Lc=new Set,JR=null;oe=Object.assign(new Tn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=aY();for(;;){let o=oY(\"xfs-\");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{oe.removeSync(t),Lc.delete(t)}catch{}}})});var Vw={};Vt(Vw,{AliasFS:()=>Uu,BasePortableFakeFS:()=>Mu,CustomDir:()=>Gw,CwdFS:()=>gn,FakeFS:()=>gf,Filename:()=>dr,JailFS:()=>_u,LazyFS:()=>iy,MountFS:()=>Hp,NoFS:()=>Yw,NodeFS:()=>Tn,PortablePath:()=>Bt,PosixFS:()=>qp,ProxiedFS:()=>Ss,VirtualFS:()=>mi,constants:()=>vi,errors:()=>ar,extendFs:()=>FD,normalizeLineEndings:()=>_g,npath:()=>ue,opendir:()=>PD,patchFs:()=>Kw,ppath:()=>V,setupCopyIndex:()=>SD,statUtils:()=>Ea,unwatchAllFiles:()=>Ug,unwatchFile:()=>Mg,watchFile:()=>ny,xfs:()=>oe});var St=Et(()=>{k7();BD();HR();GR();L7();YR();Hg();Ca();Ca();q7();Hg();Y7();K7();V7();J7();z7();qg();X7();df();Z7();sY();cY()});var hY=_((obt,pY)=>{pY.exports=fY;fY.sync=M_e;var uY=ve(\"fs\");function O_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function AY(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:O_e(e,r)}function fY(t,e,r){uY.stat(t,function(o,a){r(o,o?!1:AY(a,t,e))})}function M_e(t,e){return AY(uY.statSync(t),t,e)}});var EY=_((abt,yY)=>{yY.exports=dY;dY.sync=U_e;var gY=ve(\"fs\");function dY(t,e,r){gY.stat(t,function(o,a){r(o,o?!1:mY(a,e))})}function U_e(t,e){return mY(gY.statSync(t),e)}function mY(t,e){return t.isFile()&&__e(t,e)}function __e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=A|p,I=r&h||r&p&&a===u||r&A&&o===n||r&E&&n===0;return I}});var wY=_((cbt,CY)=>{var lbt=ve(\"fs\"),RD;process.platform===\"win32\"||global.TESTING_WINDOWS?RD=hY():RD=EY();CY.exports=zR;zR.sync=H_e;function zR(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(o,a){zR(t,e||{},function(n,u){n?a(n):o(u)})})}RD(t,e||{},function(o,a){o&&(o.code===\"EACCES\"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function H_e(t,e){try{return RD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var bY=_((ubt,PY)=>{var ay=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",IY=ve(\"path\"),q_e=ay?\";\":\":\",BY=wY(),vY=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),DY=(t,e)=>{let r=e.colon||q_e,o=t.match(/\\//)||ay&&t.match(/\\\\/)?[\"\"]:[...ay?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=ay?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=ay?a.split(r):[\"\"];return ay&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:o,pathExt:n,pathExtExe:a}},SY=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=DY(t,e),u=[],A=h=>new Promise((E,I)=>{if(h===o.length)return e.all&&u.length?E(u):I(vY(t));let v=o[h],x=/^\".*\"$/.test(v)?v.slice(1,-1):v,C=IY.join(x,t),R=!x&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+C:C;E(p(R,h,0))}),p=(h,E,I)=>new Promise((v,x)=>{if(I===a.length)return v(A(E+1));let C=a[I];BY(h+C,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+C);else return v(h+C);return v(p(h,E,I+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},j_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=DY(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^\".*\"$/.test(A)?A.slice(1,-1):A,h=IY.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let I=0;I<o.length;I++){let v=E+o[I];try{if(BY.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw vY(t)};PY.exports=SY;SY.sync=j_e});var kY=_((Abt,XR)=>{\"use strict\";var xY=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(o=>o.toUpperCase()===\"PATH\")||\"Path\"};XR.exports=xY;XR.exports.default=xY});var TY=_((fbt,RY)=>{\"use strict\";var QY=ve(\"path\"),G_e=bY(),Y_e=kY();function FY(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=G_e.sync(t.command,{path:r[Y_e({env:r})],pathExt:e?QY.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=QY.resolve(a?t.options.cwd:\"\",u)),u}function W_e(t){return FY(t)||FY(t,!0)}RY.exports=W_e});var NY=_((pbt,$R)=>{\"use strict\";var ZR=/([()\\][%!^\"`<>&|;, *?])/g;function K_e(t){return t=t.replace(ZR,\"^$1\"),t}function V_e(t,e){return t=`${t}`,t=t.replace(/(\\\\*)\"/g,'$1$1\\\\\"'),t=t.replace(/(\\\\*)$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(ZR,\"^$1\"),e&&(t=t.replace(ZR,\"^$1\")),t}$R.exports.command=K_e;$R.exports.argument=V_e});var OY=_((hbt,LY)=>{\"use strict\";LY.exports=/^#!(.*)/});var UY=_((gbt,MY)=>{\"use strict\";var J_e=OY();MY.exports=(t=\"\")=>{let e=t.match(J_e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?o:o?`${a} ${o}`:a}});var HY=_((dbt,_Y)=>{\"use strict\";var eT=ve(\"fs\"),z_e=UY();function X_e(t){let r=Buffer.alloc(150),o;try{o=eT.openSync(t,\"r\"),eT.readSync(o,r,0,150,0),eT.closeSync(o)}catch{}return z_e(r.toString())}_Y.exports=X_e});var YY=_((mbt,GY)=>{\"use strict\";var Z_e=ve(\"path\"),qY=TY(),jY=NY(),$_e=HY(),e8e=process.platform===\"win32\",t8e=/\\.(?:com|exe)$/i,r8e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function n8e(t){t.file=qY(t);let e=t.file&&$_e(t.file);return e?(t.args.unshift(t.file),t.command=e,qY(t)):t.file}function i8e(t){if(!e8e)return t;let e=n8e(t),r=!t8e.test(e);if(t.options.forceShell||r){let o=r8e.test(e);t.command=Z_e.normalize(t.command),t.command=jY.command(t.command),t.args=t.args.map(n=>jY.argument(n,o));let a=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=!0}return t}function s8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:i8e(o)}GY.exports=s8e});var VY=_((ybt,KY)=>{\"use strict\";var tT=process.platform===\"win32\";function rT(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:\"ENOENT\",errno:\"ENOENT\",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function o8e(t,e){if(!tT)return;let r=t.emit;t.emit=function(o,a){if(o===\"exit\"){let n=WY(a,e,\"spawn\");if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function WY(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawn\"):null}function a8e(t,e){return tT&&t===1&&!e.file?rT(e.original,\"spawnSync\"):null}KY.exports={hookChildProcess:o8e,verifyENOENT:WY,verifyENOENTSync:a8e,notFoundError:rT}});var sT=_((Ebt,ly)=>{\"use strict\";var JY=ve(\"child_process\"),nT=YY(),iT=VY();function zY(t,e,r){let o=nT(t,e,r),a=JY.spawn(o.command,o.args,o.options);return iT.hookChildProcess(a,o),a}function l8e(t,e,r){let o=nT(t,e,r),a=JY.spawnSync(o.command,o.args,o.options);return a.error=a.error||iT.verifyENOENTSync(a.status,o),a}ly.exports=zY;ly.exports.spawn=zY;ly.exports.sync=l8e;ly.exports._parse=nT;ly.exports._enoent=iT});var ZY=_((Cbt,XY)=>{\"use strict\";function c8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Gg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Gg)}c8e(Gg,Error);Gg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function u8e(t,e){e=e!==void 0?e:{};var r={},o={Start:hg},a=hg,n=function(N){return N||[]},u=function(N,K,re){return[{command:N,type:K}].concat(re||[])},A=function(N,K){return[{command:N,type:K||\";\"}]},p=function(N){return N},h=\";\",E=Br(\";\",!1),I=\"&\",v=Br(\"&\",!1),x=function(N,K){return K?{chain:N,then:K}:{chain:N}},C=function(N,K){return{type:N,line:K}},R=\"&&\",L=Br(\"&&\",!1),U=\"||\",J=Br(\"||\",!1),te=function(N,K){return K?{...N,then:K}:N},ae=function(N,K){return{type:N,chain:K}},fe=\"|&\",ce=Br(\"|&\",!1),me=\"|\",he=Br(\"|\",!1),Be=\"=\",we=Br(\"=\",!1),g=function(N,K){return{name:N,args:[K]}},Ee=function(N){return{name:N,args:[]}},Se=\"(\",le=Br(\"(\",!1),ne=\")\",ee=Br(\")\",!1),Ie=function(N,K){return{type:\"subshell\",subshell:N,args:K}},Fe=\"{\",At=Br(\"{\",!1),H=\"}\",at=Br(\"}\",!1),Re=function(N,K){return{type:\"group\",group:N,args:K}},ke=function(N,K){return{type:\"command\",args:K,envs:N}},xe=function(N){return{type:\"envs\",envs:N}},He=function(N){return N},Te=function(N){return N},Je=/^[0-9]/,qe=Cs([[\"0\",\"9\"]],!1,!1),b=function(N,K,re){return{type:\"redirection\",subtype:K,fd:N!==null?parseInt(N):null,args:[re]}},w=\">>\",P=Br(\">>\",!1),y=\">&\",F=Br(\">&\",!1),z=\">\",X=Br(\">\",!1),Z=\"<<<\",ie=Br(\"<<<\",!1),Pe=\"<&\",Ne=Br(\"<&\",!1),ot=\"<\",dt=Br(\"<\",!1),jt=function(N){return{type:\"argument\",segments:[].concat(...N)}},$t=function(N){return N},bt=\"$'\",an=Br(\"$'\",!1),Qr=\"'\",mr=Br(\"'\",!1),br=function(N){return[{type:\"text\",text:N}]},Wr='\"\"',Kn=Br('\"\"',!1),Ns=function(){return{type:\"text\",text:\"\"}},Ti='\"',ps=Br('\"',!1),io=function(N){return N},Pi=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!0}},Ls=function(N){return{type:\"shell\",shell:N,quoted:!0}},so=function(N){return{type:\"variable\",...N,quoted:!0}},cc=function(N){return{type:\"text\",text:N}},cu=function(N){return{type:\"arithmetic\",arithmetic:N,quoted:!1}},lp=function(N){return{type:\"shell\",shell:N,quoted:!1}},cp=function(N){return{type:\"variable\",...N,quoted:!1}},Os=function(N){return{type:\"glob\",pattern:N}},Dn=/^[^']/,oo=Cs([\"'\"],!0,!1),Ms=function(N){return N.join(\"\")},ml=/^[^$\"]/,yl=Cs([\"$\",'\"'],!0,!1),ao=`\\\\\n`,Vn=Br(`\\\\\n`,!1),On=function(){return\"\"},Ni=\"\\\\\",Mn=Br(\"\\\\\",!1),_i=/^[\\\\$\"`]/,tr=Cs([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Oe=function(N){return N},ii=\"\\\\a\",Ma=Br(\"\\\\a\",!1),hr=function(){return\"a\"},uc=\"\\\\b\",uu=Br(\"\\\\b\",!1),Ac=function(){return\"\\b\"},El=/^[Ee]/,DA=Cs([\"E\",\"e\"],!1,!1),Au=function(){return\"\\x1B\"},Ce=\"\\\\f\",Rt=Br(\"\\\\f\",!1),fc=function(){return\"\\f\"},Hi=\"\\\\n\",fu=Br(\"\\\\n\",!1),Yt=function(){return`\n`},Cl=\"\\\\r\",SA=Br(\"\\\\r\",!1),up=function(){return\"\\r\"},pc=\"\\\\t\",PA=Br(\"\\\\t\",!1),Qn=function(){return\"\t\"},hi=\"\\\\v\",hc=Br(\"\\\\v\",!1),bA=function(){return\"\\v\"},sa=/^[\\\\'\"?]/,Li=Cs([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),_o=function(N){return String.fromCharCode(parseInt(N,16))},Ze=\"\\\\x\",lo=Br(\"\\\\x\",!1),gc=\"\\\\u\",pu=Br(\"\\\\u\",!1),qi=\"\\\\U\",hu=Br(\"\\\\U\",!1),xA=function(N){return String.fromCodePoint(parseInt(N,16))},Ua=/^[0-7]/,dc=Cs([[\"0\",\"7\"]],!1,!1),hs=/^[0-9a-fA-f]/,_t=Cs([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),Fn=ug(),Ci=\"{}\",oa=Br(\"{}\",!1),co=function(){return\"{}\"},Us=\"-\",aa=Br(\"-\",!1),la=\"+\",Ho=Br(\"+\",!1),wi=\".\",gs=Br(\".\",!1),ds=function(N,K,re){return{type:\"number\",value:(N===\"-\"?-1:1)*parseFloat(K.join(\"\")+\".\"+re.join(\"\"))}},ms=function(N,K){return{type:\"number\",value:(N===\"-\"?-1:1)*parseInt(K.join(\"\"))}},_s=function(N){return{type:\"variable\",...N}},Un=function(N){return{type:\"variable\",name:N}},Sn=function(N){return N},ys=\"*\",We=Br(\"*\",!1),tt=\"/\",It=Br(\"/\",!1),nr=function(N,K,re){return{type:K===\"*\"?\"multiplication\":\"division\",right:re}},$=function(N,K){return K.reduce((re,pe)=>({left:re,...pe}),N)},ye=function(N,K,re){return{type:K===\"+\"?\"addition\":\"subtraction\",right:re}},Le=\"$((\",pt=Br(\"$((\",!1),ht=\"))\",Tt=Br(\"))\",!1),er=function(N){return N},$r=\"$(\",ji=Br(\"$(\",!1),es=function(N){return N},bi=\"${\",qo=Br(\"${\",!1),kA=\":-\",QA=Br(\":-\",!1),Ap=function(N,K){return{name:N,defaultValue:K}},ig=\":-}\",gu=Br(\":-}\",!1),sg=function(N){return{name:N,defaultValue:[]}},du=\":+\",uo=Br(\":+\",!1),FA=function(N,K){return{name:N,alternativeValue:K}},mc=\":+}\",ca=Br(\":+}\",!1),og=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},Pm=\"$\",ag=Br(\"$\",!1),$n=function(N){return e.isGlobPattern(N)},fp=function(N){return N},lg=/^[a-zA-Z0-9_]/,RA=Cs([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Hs=function(){return cg()},mu=/^[$@*?#a-zA-Z0-9_\\-]/,Ha=Cs([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Gi=/^[()}<>$|&; \\t\"']/,ua=Cs([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),yu=/^[<>&; \\t\"']/,Es=Cs([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Ec=/^[ \\t]/,Cc=Cs([\" \",\"\t\"],!1,!1),G=0,Dt=0,wl=[{line:1,column:1}],xi=0,wc=[],ct=0,Eu;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function cg(){return t.substring(Dt,G)}function yw(){return Ic(Dt,G)}function TA(N,K){throw K=K!==void 0?K:Ic(Dt,G),pg([fg(N)],t.substring(Dt,G),K)}function pp(N,K){throw K=K!==void 0?K:Ic(Dt,G),bm(N,K)}function Br(N,K){return{type:\"literal\",text:N,ignoreCase:K}}function Cs(N,K,re){return{type:\"class\",parts:N,inverted:K,ignoreCase:re}}function ug(){return{type:\"any\"}}function Ag(){return{type:\"end\"}}function fg(N){return{type:\"other\",description:N}}function hp(N){var K=wl[N],re;if(K)return K;for(re=N-1;!wl[re];)re--;for(K=wl[re],K={line:K.line,column:K.column};re<N;)t.charCodeAt(re)===10?(K.line++,K.column=1):K.column++,re++;return wl[N]=K,K}function Ic(N,K){var re=hp(N),pe=hp(K);return{start:{offset:N,line:re.line,column:re.column},end:{offset:K,line:pe.line,column:pe.column}}}function Ct(N){G<xi||(G>xi&&(xi=G,wc=[]),wc.push(N))}function bm(N,K){return new Gg(N,null,null,K)}function pg(N,K,re){return new Gg(Gg.buildMessage(N,K),N,K,re)}function hg(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=Cu(),re===r&&(re=null),re!==r?(Dt=N,K=n(re),N=K):(G=N,N=r)):(G=N,N=r),N}function Cu(){var N,K,re,pe,ze;if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe!==r?(ze=xm(),ze===r&&(ze=null),ze!==r?(Dt=N,K=u(K,pe,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,K=wu(),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();re!==r?(pe=gg(),pe===r&&(pe=null),pe!==r?(Dt=N,K=A(K,pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function xm(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Cu(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=p(re),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function gg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,ct===0&&Ct(E)),N===r&&(t.charCodeAt(G)===38?(N=I,G++):(N=r,ct===0&&Ct(v))),N}function wu(){var N,K,re;return N=G,K=Aa(),K!==r?(re=Ew(),re===r&&(re=null),re!==r?(Dt=N,K=x(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function Ew(){var N,K,re,pe,ze,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=km(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=wu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=C(re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function km(){var N;return t.substr(G,2)===R?(N=R,G+=2):(N=r,ct===0&&Ct(L)),N===r&&(t.substr(G,2)===U?(N=U,G+=2):(N=r,ct===0&&Ct(J))),N}function Aa(){var N,K,re;return N=G,K=dg(),K!==r?(re=Bc(),re===r&&(re=null),re!==r?(Dt=N,K=te(K,re),N=K):(G=N,N=r)):(G=N,N=r),N}function Bc(){var N,K,re,pe,ze,mt,fr;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(re=Il(),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Aa(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ae(re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Il(){var N;return t.substr(G,2)===fe?(N=fe,G+=2):(N=r,ct===0&&Ct(ce)),N===r&&(t.charCodeAt(G)===124?(N=me,G++):(N=r,ct===0&&Ct(he))),N}function Iu(){var N,K,re,pe,ze,mt;if(N=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r)if(pe=jo(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(Dt=N,K=g(K,pe),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,K=Cg(),K!==r)if(t.charCodeAt(G)===61?(re=Be,G++):(re=r,ct===0&&Ct(we)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=Ee(K),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function dg(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===40?(re=Se,G++):(re=r,ct===0&&Ct(le)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===41?(fr=ne,G++):(fr=r,ct===0&&Ct(ee)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=qa();oi!==r;)yn.push(oi),oi=qa();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Ie(ze,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r)if(t.charCodeAt(G)===123?(re=Fe,G++):(re=r,ct===0&&Ct(At)),re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r)if(ze=Cu(),ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();if(mt!==r)if(t.charCodeAt(G)===125?(fr=H,G++):(fr=r,ct===0&&Ct(at)),fr!==r){for(Cr=[],yn=Qt();yn!==r;)Cr.push(yn),yn=Qt();if(Cr!==r){for(yn=[],oi=qa();oi!==r;)yn.push(oi),oi=qa();if(yn!==r){for(oi=[],Oi=Qt();Oi!==r;)oi.push(Oi),Oi=Qt();oi!==r?(Dt=N,K=Re(ze,yn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){for(re=[],pe=Iu();pe!==r;)re.push(pe),pe=Iu();if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();if(pe!==r){if(ze=[],mt=gp(),mt!==r)for(;mt!==r;)ze.push(mt),mt=gp();else ze=r;if(ze!==r){for(mt=[],fr=Qt();fr!==r;)mt.push(fr),fr=Qt();mt!==r?(Dt=N,K=ke(re,ze),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=Iu(),pe!==r)for(;pe!==r;)re.push(pe),pe=Iu();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=xe(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function NA(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r){if(re=[],pe=dp(),pe!==r)for(;pe!==r;)re.push(pe),pe=dp();else re=r;if(re!==r){for(pe=[],ze=Qt();ze!==r;)pe.push(ze),ze=Qt();pe!==r?(Dt=N,K=He(re),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function gp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();if(K!==r?(re=qa(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();K!==r?(re=dp(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r)}return N}function qa(){var N,K,re,pe,ze;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(Je.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(qe)),re===r&&(re=null),re!==r?(pe=mg(),pe!==r?(ze=dp(),ze!==r?(Dt=N,K=b(re,pe,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function mg(){var N;return t.substr(G,2)===w?(N=w,G+=2):(N=r,ct===0&&Ct(P)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,ct===0&&Ct(F)),N===r&&(t.charCodeAt(G)===62?(N=z,G++):(N=r,ct===0&&Ct(X)),N===r&&(t.substr(G,3)===Z?(N=Z,G+=3):(N=r,ct===0&&Ct(ie)),N===r&&(t.substr(G,2)===Pe?(N=Pe,G+=2):(N=r,ct===0&&Ct(Ne)),N===r&&(t.charCodeAt(G)===60?(N=ot,G++):(N=r,ct===0&&Ct(dt))))))),N}function dp(){var N,K,re;for(N=G,K=[],re=Qt();re!==r;)K.push(re),re=Qt();return K!==r?(re=jo(),re!==r?(Dt=N,K=Te(re),N=K):(G=N,N=r)):(G=N,N=r),N}function jo(){var N,K,re;if(N=G,K=[],re=ws(),re!==r)for(;re!==r;)K.push(re),re=ws();else K=r;return K!==r&&(Dt=N,K=jt(K)),N=K,N}function ws(){var N,K;return N=G,K=Ii(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Qm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Fm(),K!==r&&(Dt=N,K=$t(K)),N=K,N===r&&(N=G,K=Go(),K!==r&&(Dt=N,K=$t(K)),N=K))),N}function Ii(){var N,K,re,pe;return N=G,t.substr(G,2)===bt?(K=bt,G+=2):(K=r,ct===0&&Ct(an)),K!==r?(re=ln(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Qm(){var N,K,re,pe;return N=G,t.charCodeAt(G)===39?(K=Qr,G++):(K=r,ct===0&&Ct(mr)),K!==r?(re=yp(),re!==r?(t.charCodeAt(G)===39?(pe=Qr,G++):(pe=r,ct===0&&Ct(mr)),pe!==r?(Dt=N,K=br(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Fm(){var N,K,re,pe;if(N=G,t.substr(G,2)===Wr?(K=Wr,G+=2):(K=r,ct===0&&Ct(Kn)),K!==r&&(Dt=N,K=Ns()),N=K,N===r)if(N=G,t.charCodeAt(G)===34?(K=Ti,G++):(K=r,ct===0&&Ct(ps)),K!==r){for(re=[],pe=LA();pe!==r;)re.push(pe),pe=LA();re!==r?(t.charCodeAt(G)===34?(pe=Ti,G++):(pe=r,ct===0&&Ct(ps)),pe!==r?(Dt=N,K=io(re),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Go(){var N,K,re;if(N=G,K=[],re=mp(),re!==r)for(;re!==r;)K.push(re),re=mp();else K=r;return K!==r&&(Dt=N,K=io(K)),N=K,N}function LA(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=Pi(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=Ls(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=so(K)),N=K,N===r&&(N=G,K=yg(),K!==r&&(Dt=N,K=cc(K)),N=K))),N}function mp(){var N,K;return N=G,K=Gr(),K!==r&&(Dt=N,K=cu(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=lp(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=cp(K)),N=K,N===r&&(N=G,K=Cw(),K!==r&&(Dt=N,K=Os(K)),N=K,N===r&&(N=G,K=pa(),K!==r&&(Dt=N,K=cc(K)),N=K)))),N}function yp(){var N,K,re;for(N=G,K=[],Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));re!==r;)K.push(re),Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function yg(){var N,K,re;if(N=G,K=[],re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl))),re!==r)for(;re!==r;)K.push(re),re=fa(),re===r&&(ml.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(yl)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function fa(){var N,K,re;return N=G,t.substr(G,2)===ao?(K=ao,G+=2):(K=r,ct===0&&Ct(Vn)),K!==r&&(Dt=N,K=On()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(_i.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(tr)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r)),N}function ln(){var N,K,re;for(N=G,K=[],re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));re!==r;)K.push(re),re=Ao(),re===r&&(Dn.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(oo)));return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Ao(){var N,K,re;return N=G,t.substr(G,2)===ii?(K=ii,G+=2):(K=r,ct===0&&Ct(Ma)),K!==r&&(Dt=N,K=hr()),N=K,N===r&&(N=G,t.substr(G,2)===uc?(K=uc,G+=2):(K=r,ct===0&&Ct(uu)),K!==r&&(Dt=N,K=Ac()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(El.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(DA)),re!==r?(Dt=N,K=Au(),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,ct===0&&Ct(Rt)),K!==r&&(Dt=N,K=fc()),N=K,N===r&&(N=G,t.substr(G,2)===Hi?(K=Hi,G+=2):(K=r,ct===0&&Ct(fu)),K!==r&&(Dt=N,K=Yt()),N=K,N===r&&(N=G,t.substr(G,2)===Cl?(K=Cl,G+=2):(K=r,ct===0&&Ct(SA)),K!==r&&(Dt=N,K=up()),N=K,N===r&&(N=G,t.substr(G,2)===pc?(K=pc,G+=2):(K=r,ct===0&&Ct(PA)),K!==r&&(Dt=N,K=Qn()),N=K,N===r&&(N=G,t.substr(G,2)===hi?(K=hi,G+=2):(K=r,ct===0&&Ct(hc)),K!==r&&(Dt=N,K=bA()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(sa.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Li)),re!==r?(Dt=N,K=Oe(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=OA()))))))))),N}function OA(){var N,K,re,pe,ze,mt,fr,Cr,yn,oi,Oi,Ig;return N=G,t.charCodeAt(G)===92?(K=Ni,G++):(K=r,ct===0&&Ct(Mn)),K!==r?(re=ja(),re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ze?(K=Ze,G+=2):(K=r,ct===0&&Ct(lo)),K!==r?(re=G,pe=G,ze=ja(),ze!==r?(mt=si(),mt!==r?(ze=[ze,mt],pe=ze):(G=pe,pe=r)):(G=pe,pe=r),pe===r&&(pe=ja()),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===gc?(K=gc,G+=2):(K=r,ct===0&&Ct(pu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(ze=[ze,mt,fr,Cr],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=_o(re),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===qi?(K=qi,G+=2):(K=r,ct===0&&Ct(hu)),K!==r?(re=G,pe=G,ze=si(),ze!==r?(mt=si(),mt!==r?(fr=si(),fr!==r?(Cr=si(),Cr!==r?(yn=si(),yn!==r?(oi=si(),oi!==r?(Oi=si(),Oi!==r?(Ig=si(),Ig!==r?(ze=[ze,mt,fr,Cr,yn,oi,Oi,Ig],pe=ze):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r)):(G=pe,pe=r),pe!==r?re=t.substring(re,G):re=pe,re!==r?(Dt=N,K=xA(re),N=K):(G=N,N=r)):(G=N,N=r)))),N}function ja(){var N;return Ua.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(dc)),N}function si(){var N;return hs.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(_t)),N}function pa(){var N,K,re,pe,ze;if(N=G,K=[],re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=G,t.charCodeAt(G)===92?(pe=Ni,G++):(pe=r,ct===0&&Ct(Mn)),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re===r&&(re=G,t.substr(G,2)===Ci?(pe=Ci,G+=2):(pe=r,ct===0&&Ct(oa)),pe!==r&&(Dt=re,pe=co()),re=pe,re===r&&(re=G,pe=G,ct++,ze=Rm(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r)));else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function vc(){var N,K,re,pe,ze,mt;if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe));else re=r;if(re!==r)if(t.charCodeAt(G)===46?(pe=wi,G++):(pe=r,ct===0&&Ct(gs)),pe!==r){if(ze=[],Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(qe)),mt!==r)for(;mt!==r;)ze.push(mt),Je.test(t.charAt(G))?(mt=t.charAt(G),G++):(mt=r,ct===0&&Ct(qe));else ze=r;ze!==r?(Dt=N,K=ds(K,re,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(K=Us,G++):(K=r,ct===0&&Ct(aa)),K===r&&(t.charCodeAt(G)===43?(K=la,G++):(K=r,ct===0&&Ct(Ho))),K===r&&(K=null),K!==r){if(re=[],Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe)),pe!==r)for(;pe!==r;)re.push(pe),Je.test(t.charAt(G))?(pe=t.charAt(G),G++):(pe=r,ct===0&&Ct(qe));else re=r;re!==r?(Dt=N,K=ms(K,re),N=K):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=_s(K)),N=K,N===r&&(N=G,K=Ga(),K!==r&&(Dt=N,K=Un(K)),N=K,N===r)))if(N=G,t.charCodeAt(G)===40?(K=Se,G++):(K=r,ct===0&&Ct(le)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.charCodeAt(G)===41?(mt=ne,G++):(mt=r,ct===0&&Ct(ee)),mt!==r?(Dt=N,K=Sn(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Bl(){var N,K,re,pe,ze,mt,fr,Cr;if(N=G,K=vc(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===42?(mt=ys,G++):(mt=r,ct===0&&Ct(We)),mt===r&&(t.charCodeAt(G)===47?(mt=tt,G++):(mt=r,ct===0&&Ct(It))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=vc(),Cr!==r?(Dt=pe,ze=nr(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,K,re,pe,ze,mt,fr,Cr;if(N=G,K=Bl(),K!==r){for(re=[],pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r;for(;pe!==r;){for(re.push(pe),pe=G,ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();if(ze!==r)if(t.charCodeAt(G)===43?(mt=la,G++):(mt=r,ct===0&&Ct(Ho)),mt===r&&(t.charCodeAt(G)===45?(mt=Us,G++):(mt=r,ct===0&&Ct(aa))),mt!==r){for(fr=[],Cr=Qt();Cr!==r;)fr.push(Cr),Cr=Qt();fr!==r?(Cr=Bl(),Cr!==r?(Dt=pe,ze=ye(K,mt,Cr),pe=ze):(G=pe,pe=r)):(G=pe,pe=r)}else G=pe,pe=r;else G=pe,pe=r}re!==r?(Dt=N,K=$(K,re),N=K):(G=N,N=r)}else G=N,N=r;return N}function Gr(){var N,K,re,pe,ze,mt;if(N=G,t.substr(G,3)===Le?(K=Le,G+=3):(K=r,ct===0&&Ct(pt)),K!==r){for(re=[],pe=Qt();pe!==r;)re.push(pe),pe=Qt();if(re!==r)if(pe=ts(),pe!==r){for(ze=[],mt=Qt();mt!==r;)ze.push(mt),mt=Qt();ze!==r?(t.substr(G,2)===ht?(mt=ht,G+=2):(mt=r,ct===0&&Ct(Tt)),mt!==r?(Dt=N,K=er(pe),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function Ep(){var N,K,re,pe;return N=G,t.substr(G,2)===$r?(K=$r,G+=2):(K=r,ct===0&&Ct(ji)),K!==r?(re=Cu(),re!==r?(t.charCodeAt(G)===41?(pe=ne,G++):(pe=r,ct===0&&Ct(ee)),pe!==r?(Dt=N,K=es(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Dc(){var N,K,re,pe,ze,mt;return N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===kA?(pe=kA,G+=2):(pe=r,ct===0&&Ct(QA)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=Ap(re,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===ig?(pe=ig,G+=3):(pe=r,ct===0&&Ct(gu)),pe!==r?(Dt=N,K=sg(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,2)===du?(pe=du,G+=2):(pe=r,ct===0&&Ct(uo)),pe!==r?(ze=NA(),ze!==r?(t.charCodeAt(G)===125?(mt=H,G++):(mt=r,ct===0&&Ct(at)),mt!==r?(Dt=N,K=FA(re,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.substr(G,3)===mc?(pe=mc,G+=3):(pe=r,ct===0&&Ct(ca)),pe!==r?(Dt=N,K=og(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===bi?(K=bi,G+=2):(K=r,ct===0&&Ct(qo)),K!==r?(re=Ga(),re!==r?(t.charCodeAt(G)===125?(pe=H,G++):(pe=r,ct===0&&Ct(at)),pe!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(K=Pm,G++):(K=r,ct===0&&Ct(ag)),K!==r?(re=Ga(),re!==r?(Dt=N,K=yc(re),N=K):(G=N,N=r)):(G=N,N=r)))))),N}function Cw(){var N,K,re;return N=G,K=Eg(),K!==r?(Dt=G,re=$n(K),re?re=void 0:re=r,re!==r?(Dt=N,K=fp(K),N=K):(G=N,N=r)):(G=N,N=r),N}function Eg(){var N,K,re,pe,ze;if(N=G,K=[],re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r),re!==r)for(;re!==r;)K.push(re),re=G,pe=G,ct++,ze=wg(),ct--,ze===r?pe=void 0:(G=pe,pe=r),pe!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,ct===0&&Ct(Fn)),ze!==r?(Dt=re,pe=Oe(ze),re=pe):(G=re,re=r)):(G=re,re=r);else K=r;return K!==r&&(Dt=N,K=Ms(K)),N=K,N}function Cg(){var N,K,re;if(N=G,K=[],lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA)),re!==r)for(;re!==r;)K.push(re),lg.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(RA));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Ga(){var N,K,re;if(N=G,K=[],mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha)),re!==r)for(;re!==r;)K.push(re),mu.test(t.charAt(G))?(re=t.charAt(G),G++):(re=r,ct===0&&Ct(Ha));else K=r;return K!==r&&(Dt=N,K=Hs()),N=K,N}function Rm(){var N;return Gi.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(ua)),N}function wg(){var N;return yu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,ct===0&&Ct(Es)),N}function Qt(){var N,K;if(N=[],Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc)),K!==r)for(;K!==r;)N.push(K),Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,ct===0&&Ct(Cc));else N=r;return N}if(Eu=a(),Eu!==r&&G===t.length)return Eu;throw Eu!==r&&G<t.length&&Ct(Ag()),pg(wc,xi<t.length?t.charAt(xi):null,xi<t.length?Ic(xi,xi+1):Ic(xi,xi))}XY.exports={SyntaxError:Gg,parse:u8e}});function ND(t,e={isGlobPattern:()=>!1}){try{return(0,$Y.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function cy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${LD(r)}${o===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function LD(t){return`${uy(t.chain)}${t.then?` ${oT(t.then)}`:\"\"}`}function oT(t){return`${t.type} ${LD(t.line)}`}function uy(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:\"\"}`}function aT(t){return`${t.type} ${uy(t.chain)}`}function lT(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>TD(e)).join(\" \")} `:\"\"}${t.args.map(e=>cT(e)).join(\" \")}`;case\"subshell\":return`(${cy(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${cy(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Jw(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>TD(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function TD(t){return`${t.name}=${t.args[0]?Yg(t.args[0]):\"\"}`}function cT(t){switch(t.type){case\"redirection\":return Jw(t);case\"argument\":return Yg(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function Jw(t){return`${t.subtype} ${t.args.map(e=>Yg(e)).join(\" \")}`}function Yg(t){return t.segments.map(e=>uT(e)).join(\"\")}function uT(t){let e=(o,a)=>a?`\"${o}\"`:o,r=o=>o===\"\"?\"''\":o.match(/[()}<>$|&;\"'\\n\\t ]/)?o.match(/['\\t\\p{C}]/u)?o.match(/'/)?`\"${o.replace(/[\"$\\t\\p{C}]/u,f8e)}\"`:`$'${o.replace(/[\\t\\p{C}]/u,tW)}'`:`'${o}'`:o;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`\\${${cy(t.shell)}}`,t.quoted);case\"variable\":return e(typeof t.defaultValue>\"u\"?typeof t.alternativeValue>\"u\"?`\\${${t.name}}`:t.alternativeValue.length===0?`\\${${t.name}:+}`:`\\${${t.name}:+${t.alternativeValue.map(o=>Yg(o)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(o=>Yg(o)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${OD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function OD(t){let e=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(OD(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var $Y,eW,A8e,tW,f8e,rW=Et(()=>{$Y=$e(ZY());eW=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),A8e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(eW,([t,e])=>[t,`\"$'${e}'\"`])]),tW=t=>eW.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,f8e=t=>A8e.get(t)??`\"$'${tW(t)}'\"`});var iW=_((Tbt,nW)=>{\"use strict\";function p8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Wg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Wg)}p8e(Wg,Error);Wg.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function h8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:ke},a=ke,n=\"/\",u=Se(\"/\",!1),A=function(qe,b){return{from:qe,descriptor:b}},p=function(qe){return{descriptor:qe}},h=\"@\",E=Se(\"@\",!1),I=function(qe,b){return{fullName:qe,description:b}},v=function(qe){return{fullName:qe}},x=function(){return Be()},C=/^[^\\/@]/,R=le([\"/\",\"@\"],!0,!1),L=/^[^\\/]/,U=le([\"/\"],!0,!1),J=0,te=0,ae=[{line:1,column:1}],fe=0,ce=[],me=0,he;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Be(){return t.substring(te,J)}function we(){return At(te,J)}function g(qe,b){throw b=b!==void 0?b:At(te,J),Re([Ie(qe)],t.substring(te,J),b)}function Ee(qe,b){throw b=b!==void 0?b:At(te,J),at(qe,b)}function Se(qe,b){return{type:\"literal\",text:qe,ignoreCase:b}}function le(qe,b,w){return{type:\"class\",parts:qe,inverted:b,ignoreCase:w}}function ne(){return{type:\"any\"}}function ee(){return{type:\"end\"}}function Ie(qe){return{type:\"other\",description:qe}}function Fe(qe){var b=ae[qe],w;if(b)return b;for(w=qe-1;!ae[w];)w--;for(b=ae[w],b={line:b.line,column:b.column};w<qe;)t.charCodeAt(w)===10?(b.line++,b.column=1):b.column++,w++;return ae[qe]=b,b}function At(qe,b){var w=Fe(qe),P=Fe(b);return{start:{offset:qe,line:w.line,column:w.column},end:{offset:b,line:P.line,column:P.column}}}function H(qe){J<fe||(J>fe&&(fe=J,ce=[]),ce.push(qe))}function at(qe,b){return new Wg(qe,null,null,b)}function Re(qe,b,w){return new Wg(Wg.buildMessage(qe,b),qe,b,w)}function ke(){var qe,b,w,P;return qe=J,b=xe(),b!==r?(t.charCodeAt(J)===47?(w=n,J++):(w=r,me===0&&H(u)),w!==r?(P=xe(),P!==r?(te=qe,b=A(b,P),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=xe(),b!==r&&(te=qe,b=p(b)),qe=b),qe}function xe(){var qe,b,w,P;return qe=J,b=He(),b!==r?(t.charCodeAt(J)===64?(w=h,J++):(w=r,me===0&&H(E)),w!==r?(P=Je(),P!==r?(te=qe,b=I(b,P),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=He(),b!==r&&(te=qe,b=v(b)),qe=b),qe}function He(){var qe,b,w,P,y;return qe=J,t.charCodeAt(J)===64?(b=h,J++):(b=r,me===0&&H(E)),b!==r?(w=Te(),w!==r?(t.charCodeAt(J)===47?(P=n,J++):(P=r,me===0&&H(u)),P!==r?(y=Te(),y!==r?(te=qe,b=x(),qe=b):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r)):(J=qe,qe=r),qe===r&&(qe=J,b=Te(),b!==r&&(te=qe,b=x()),qe=b),qe}function Te(){var qe,b,w;if(qe=J,b=[],C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R)),w!==r)for(;w!==r;)b.push(w),C.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(R));else b=r;return b!==r&&(te=qe,b=x()),qe=b,qe}function Je(){var qe,b,w;if(qe=J,b=[],L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U)),w!==r)for(;w!==r;)b.push(w),L.test(t.charAt(J))?(w=t.charAt(J),J++):(w=r,me===0&&H(U));else b=r;return b!==r&&(te=qe,b=x()),qe=b,qe}if(he=a(),he!==r&&J===t.length)return he;throw he!==r&&J<t.length&&H(ee()),Re(ce,fe<t.length?t.charAt(fe):null,fe<t.length?At(fe,fe+1):At(fe,fe))}nW.exports={SyntaxError:Wg,parse:h8e}});function MD(t){let e=t.match(/^\\*{1,2}\\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,sW.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function UD(t){let e=\"\";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+=\"/\"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var sW,oW=Et(()=>{sW=$e(iW())});var Vg=_((Lbt,Kg)=>{\"use strict\";function aW(t){return typeof t>\"u\"||t===null}function g8e(t){return typeof t==\"object\"&&t!==null}function d8e(t){return Array.isArray(t)?t:aW(t)?[]:[t]}function m8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function y8e(t,e){var r=\"\",o;for(o=0;o<e;o+=1)r+=t;return r}function E8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Kg.exports.isNothing=aW;Kg.exports.isObject=g8e;Kg.exports.toArray=d8e;Kg.exports.repeat=y8e;Kg.exports.isNegativeZero=E8e;Kg.exports.extend=m8e});var Ay=_((Obt,lW)=>{\"use strict\";function zw(t,e){Error.call(this),this.name=\"YAMLException\",this.reason=t,this.mark=e,this.message=(this.reason||\"(unknown reason)\")+(this.mark?\" \"+this.mark.toString():\"\"),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||\"\"}zw.prototype=Object.create(Error.prototype);zw.prototype.constructor=zw;zw.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};lW.exports=zw});var AW=_((Mbt,uW)=>{\"use strict\";var cW=Vg();function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}AT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=\" ... \",a+=5;break}for(n=\"\",u=this.position;u<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=\" ... \",u-=5;break}return A=this.buffer.slice(a,u),cW.repeat(\" \",e)+o+A+n+`\n`+cW.repeat(\" \",e+this.position-a+o.length)+\"^\"};AT.prototype.toString=function(e){var r,o=\"\";return this.name&&(o+='in \"'+this.name+'\" '),o+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`:\n`+r)),o};uW.exports=AT});var os=_((Ubt,pW)=>{\"use strict\";var fW=Ay(),C8e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],w8e=[\"scalar\",\"sequence\",\"mapping\"];function I8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function B8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(C8e.indexOf(r)===-1)throw new fW('Unknown option \"'+r+'\" is met in definition of \"'+t+'\" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=I8e(e.styleAliases||null),w8e.indexOf(this.kind)===-1)throw new fW('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}pW.exports=B8e});var Jg=_((_bt,gW)=>{\"use strict\";var hW=Vg(),_D=Ay(),v8e=os();function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function D8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function fy(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!==\"scalar\")throw new _D(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=fT(this,\"implicit\",[]),this.compiledExplicit=fT(this,\"explicit\",[]),this.compiledTypeMap=D8e(this.compiledImplicit,this.compiledExplicit)}fy.DEFAULT=null;fy.create=function(){var e,r;switch(arguments.length){case 1:e=fy.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new _D(\"Wrong number of arguments for Schema.create function\")}if(e=hW.toArray(e),r=hW.toArray(r),!e.every(function(o){return o instanceof fy}))throw new _D(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(o){return o instanceof v8e}))throw new _D(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new fy({include:e,explicit:r})};gW.exports=fy});var mW=_((Hbt,dW)=>{\"use strict\";var S8e=os();dW.exports=new S8e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var EW=_((qbt,yW)=>{\"use strict\";var P8e=os();yW.exports=new P8e(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var wW=_((jbt,CW)=>{\"use strict\";var b8e=os();CW.exports=new b8e(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var HD=_((Gbt,IW)=>{\"use strict\";var x8e=Jg();IW.exports=new x8e({explicit:[mW(),EW(),wW()]})});var vW=_((Ybt,BW)=>{\"use strict\";var k8e=os();function Q8e(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function F8e(){return null}function R8e(t){return t===null}BW.exports=new k8e(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:Q8e,construct:F8e,predicate:R8e,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var SW=_((Wbt,DW)=>{\"use strict\";var T8e=os();function N8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t===\"true\"||t===\"True\"||t===\"TRUE\")||e===5&&(t===\"false\"||t===\"False\"||t===\"FALSE\")}function L8e(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function O8e(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}DW.exports=new T8e(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:N8e,construct:L8e,predicate:O8e,represent:{lowercase:function(t){return t?\"true\":\"false\"},uppercase:function(t){return t?\"TRUE\":\"FALSE\"},camelcase:function(t){return t?\"True\":\"False\"}},defaultStyle:\"lowercase\"})});var bW=_((Kbt,PW)=>{\"use strict\";var M8e=Vg(),U8e=os();function _8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function H8e(t){return 48<=t&&t<=55}function q8e(t){return 48<=t&&t<=57}function j8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a===\"-\"||a===\"+\")&&(a=t[++r]),a===\"0\"){if(r+1===e)return!0;if(a=t[++r],a===\"b\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;o=!0}return o&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!_8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!H8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!q8e(t.charCodeAt(r)))return!1;o=!0}return!o||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function G8e(t){var e=t,r=1,o,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),o=e[0],(o===\"-\"||o===\"+\")&&(o===\"-\"&&(r=-1),e=e.slice(1),o=e[0]),e===\"0\"?0:o===\"0\"?e[1]===\"b\"?r*parseInt(e.slice(2),2):e[1]===\"x\"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(\":\")!==-1?(e.split(\":\").forEach(function(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function Y8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!M8e.isNegativeZero(t)}PW.exports=new U8e(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:j8e,construct:G8e,predicate:Y8e,represent:{binary:function(t){return t>=0?\"0b\"+t.toString(2):\"-0b\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\"0\"+t.toString(8):\"-0\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\"0x\"+t.toString(16).toUpperCase():\"-0x\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}})});var QW=_((Vbt,kW)=>{\"use strict\";var xW=Vg(),W8e=os(),K8e=new RegExp(\"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");function V8e(t){return!(t===null||!K8e.test(t)||t[t.length-1]===\"_\")}function J8e(t){var e,r,o,a;return e=t.replace(/_/g,\"\").toLowerCase(),r=e[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\".nan\"?NaN:e.indexOf(\":\")>=0?(e.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var z8e=/^[-+]?[0-9]+e/;function X8e(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(xW.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),z8e.test(r)?r.replace(\"e\",\".e\"):r}function Z8e(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||xW.isNegativeZero(t))}kW.exports=new W8e(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:V8e,construct:J8e,predicate:Z8e,represent:X8e,defaultStyle:\"lowercase\"})});var pT=_((Jbt,FW)=>{\"use strict\";var $8e=Jg();FW.exports=new $8e({include:[HD()],implicit:[vW(),SW(),bW(),QW()]})});var hT=_((zbt,RW)=>{\"use strict\";var eHe=Jg();RW.exports=new eHe({include:[pT()]})});var OW=_((Xbt,LW)=>{\"use strict\";var tHe=os(),TW=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),NW=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 rHe(t){return t===null?!1:TW.exec(t)!==null||NW.exec(t)!==null}function nHe(t){var e,r,o,a,n,u,A,p=0,h=null,E,I,v;if(e=TW.exec(t),e===null&&(e=NW.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],I=+(e[11]||0),h=(E*60+I)*6e4,e[9]===\"-\"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function iHe(t){return t.toISOString()}LW.exports=new tHe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:rHe,construct:nHe,instanceOf:Date,represent:iHe})});var UW=_((Zbt,MW)=>{\"use strict\";var sHe=os();function oHe(t){return t===\"<<\"||t===null}MW.exports=new sHe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:oHe})});var qW=_(($bt,HW)=>{\"use strict\";var zg;try{_W=ve,zg=_W(\"buffer\").Buffer}catch{}var _W,aHe=os(),gT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function lHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function cHe(t){var e,r,o=t.replace(/[\\r\\n=]/g,\"\"),a=o.length,n=gT,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),zg?zg.from?zg.from(A):new zg(A):A}function uHe(t){var e=\"\",r=0,o,a,n=t.length,u=gT;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function AHe(t){return zg&&zg.isBuffer(t)}HW.exports=new aHe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:lHe,construct:cHe,predicate:AHe,represent:uHe})});var GW=_((txt,jW)=>{\"use strict\";var fHe=os(),pHe=Object.prototype.hasOwnProperty,hHe=Object.prototype.toString;function gHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,hHe.call(a)!==\"[object Object]\")return!1;for(n in a)if(pHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function dHe(t){return t!==null?t:[]}jW.exports=new fHe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:gHe,construct:dHe})});var WW=_((rxt,YW)=>{\"use strict\";var mHe=os(),yHe=Object.prototype.toString;function EHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],yHe.call(o)!==\"[object Object]\"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function CHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}YW.exports=new mHe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:EHe,construct:CHe})});var VW=_((nxt,KW)=>{\"use strict\";var wHe=os(),IHe=Object.prototype.hasOwnProperty;function BHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(IHe.call(r,e)&&r[e]!==null)return!1;return!0}function vHe(t){return t!==null?t:{}}KW.exports=new wHe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:BHe,construct:vHe})});var py=_((ixt,JW)=>{\"use strict\";var DHe=Jg();JW.exports=new DHe({include:[hT()],implicit:[OW(),UW()],explicit:[qW(),GW(),WW(),VW()]})});var XW=_((sxt,zW)=>{\"use strict\";var SHe=os();function PHe(){return!0}function bHe(){}function xHe(){return\"\"}function kHe(t){return typeof t>\"u\"}zW.exports=new SHe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:PHe,construct:bHe,predicate:kHe,represent:xHe})});var $W=_((oxt,ZW)=>{\"use strict\";var QHe=os();function FHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return!(e[0]===\"/\"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!==\"/\"))}function RHe(t){var e=t,r=/\\/([gim]*)$/.exec(t),o=\"\";return e[0]===\"/\"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function THe(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function NHe(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}ZW.exports=new QHe(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:FHe,construct:RHe,predicate:NHe,represent:THe})});var rK=_((axt,tK)=>{\"use strict\";var qD;try{eK=ve,qD=eK(\"esprima\")}catch{typeof window<\"u\"&&(qD=window.esprima)}var eK,LHe=os();function OHe(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=qD.parse(e,{range:!0});return!(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")}catch{return!1}}function MHe(t){var e=\"(\"+t+\")\",r=qD.parse(e,{range:!0}),o=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,\"return \"+e.slice(a[0],a[1]))}function UHe(t){return t.toString()}function _He(t){return Object.prototype.toString.call(t)===\"[object Function]\"}tK.exports=new LHe(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:OHe,construct:MHe,predicate:_He,represent:UHe})});var Xw=_((cxt,iK)=>{\"use strict\";var nK=Jg();iK.exports=nK.DEFAULT=new nK({include:[py()],explicit:[XW(),$W(),rK()]})});var BK=_((uxt,Zw)=>{\"use strict\";var yf=Vg(),AK=Ay(),HHe=AW(),fK=py(),qHe=Xw(),Yp=Object.prototype.hasOwnProperty,jD=1,pK=2,hK=3,GD=4,dT=1,jHe=2,sK=3,GHe=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,YHe=/[\\x85\\u2028\\u2029]/,WHe=/[,\\[\\]\\{\\}]/,gK=/^(?:!|!!|![a-z\\-]+!)$/i,dK=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function oK(t){return Object.prototype.toString.call(t)}function Hu(t){return t===10||t===13}function Zg(t){return t===9||t===32}function Ia(t){return t===9||t===32||t===10||t===13}function hy(t){return t===44||t===91||t===93||t===123||t===125}function KHe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function VHe(t){return t===120?2:t===117?4:t===85?8:0}function JHe(t){return 48<=t&&t<=57?t-48:-1}function aK(t){return t===48?\"\\0\":t===97?\"\\x07\":t===98?\"\\b\":t===116||t===9?\"\t\":t===110?`\n`:t===118?\"\\v\":t===102?\"\\f\":t===114?\"\\r\":t===101?\"\\x1B\":t===32?\" \":t===34?'\"':t===47?\"/\":t===92?\"\\\\\":t===78?\"\\x85\":t===95?\"\\xA0\":t===76?\"\\u2028\":t===80?\"\\u2029\":\"\"}function zHe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var mK=new Array(256),yK=new Array(256);for(Xg=0;Xg<256;Xg++)mK[Xg]=aK(Xg)?1:0,yK[Xg]=aK(Xg);var Xg;function XHe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||qHe,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.documents=[]}function EK(t,e){return new AK(e,new HHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Pr(t,e){throw EK(t,e)}function YD(t,e){t.onWarning&&t.onWarning.call(null,EK(t,e))}var lK={YAML:function(e,r,o){var a,n,u;e.version!==null&&Pr(e,\"duplication of %YAML directive\"),o.length!==1&&Pr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(o[0]),a===null&&Pr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&Pr(e,\"unacceptable YAML version of the document\"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&YD(e,\"unsupported YAML version of the document\")},TAG:function(e,r,o){var a,n;o.length!==2&&Pr(e,\"TAG directive accepts exactly two arguments\"),a=o[0],n=o[1],gK.test(a)||Pr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),Yp.call(e.tagMap,a)&&Pr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),dK.test(n)||Pr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function Gp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||Pr(t,\"expected valid JSON character\");else GHe.test(A)&&Pr(t,\"the stream contains non-printable characters\");t.result+=A}}function cK(t,e,r,o){var a,n,u,A;for(yf.isObject(r)||Pr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],Yp.call(e,n)||(e[n]=r[n],o[n]=!0)}function gy(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Pr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&oK(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&oK(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),o===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)cK(t,e,n[p],r);else cK(t,e,n,r);else!t.json&&!Yp.call(r,a)&&Yp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,Pr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function mT(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Pr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Zg(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(Hu(a))for(mT(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&YD(t,\"deficient indentation\"),o}function WD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||Ia(r)))}function yT(t,e){e===1?t.result+=\" \":e>1&&(t.result+=yf.repeat(`\n`,e-1))}function ZHe(t,e,r){var o,a,n,u,A,p,h,E,I=t.kind,v=t.result,x;if(x=t.input.charCodeAt(t.position),Ia(x)||hy(x)||x===35||x===38||x===42||x===33||x===124||x===62||x===39||x===34||x===37||x===64||x===96||(x===63||x===45)&&(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=u=t.position,A=!1;x!==0;){if(x===58){if(a=t.input.charCodeAt(t.position+1),Ia(a)||r&&hy(a))break}else if(x===35){if(o=t.input.charCodeAt(t.position-1),Ia(o))break}else{if(t.position===t.lineStart&&WD(t)||r&&hy(x))break;if(Hu(x))if(p=t.line,h=t.lineStart,E=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,x=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=E;break}}A&&(Gp(t,n,u,!1),yT(t,t.line-p),n=u=t.position,A=!1),Zg(x)||(u=t.position+1),x=t.input.charCodeAt(++t.position)}return Gp(t,n,u,!1),t.result?!0:(t.kind=I,t.result=v,!1)}function $He(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Gp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Hu(r)?(Gp(t,o,a,!0),yT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&WD(t)?Pr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Pr(t,\"unexpected end of the stream within a single quoted scalar\")}function e6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return Gp(t,r,t.position,!0),t.position++,!0;if(A===92){if(Gp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Hu(A))Wi(t,!1,e);else if(A<256&&mK[A])t.result+=yK[A],t.position++;else if((u=VHe(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=KHe(A))>=0?n=(n<<4)+u:Pr(t,\"expected hexadecimal character\");t.result+=zHe(n),t.position++}else Pr(t,\"unknown escape sequence\");r=o=t.position}else Hu(A)?(Gp(t,r,o,!0),yT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&WD(t)?Pr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,o=t.position)}Pr(t,\"unexpected end of the stream within a double quoted scalar\")}function t6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,E,I,v={},x,C,R,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,I=!1,n=[];else if(L===123)p=125,I=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=I?\"mapping\":\"sequence\",t.result=n,!0;r||Pr(t,\"missed comma between flow collection entries\"),C=x=R=null,h=E=!1,L===63&&(A=t.input.charCodeAt(t.position+1),Ia(A)&&(h=E=!0,t.position++,Wi(t,!0,e))),o=t.line,dy(t,e,jD,!1,!0),C=t.tag,x=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(E||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),dy(t,e,jD,!1,!0),R=t.result),I?gy(t,n,v,C,x,R):h?n.push(gy(t,null,v,C,x,R)):n.push(x),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}Pr(t,\"unexpected end of the stream within a flow collection\")}function r6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,E,I;if(I=t.input.charCodeAt(t.position),I===124)o=!1;else if(I===62)o=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";I!==0;)if(I=t.input.charCodeAt(++t.position),I===43||I===45)dT===a?a=I===43?sK:jHe:Pr(t,\"repeat of a chomping mode identifier\");else if((E=JHe(I))>=0)E===0?Pr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):u?Pr(t,\"repeat of an indentation width identifier\"):(A=e+E-1,u=!0);else break;if(Zg(I)){do I=t.input.charCodeAt(++t.position);while(Zg(I));if(I===35)do I=t.input.charCodeAt(++t.position);while(!Hu(I)&&I!==0)}for(;I!==0;){for(mT(t),t.lineIndent=0,I=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&I===32;)t.lineIndent++,I=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Hu(I)){p++;continue}if(t.lineIndent<A){a===sK?t.result+=yf.repeat(`\n`,n?1+p:p):a===dT&&n&&(t.result+=`\n`);break}for(o?Zg(I)?(h=!0,t.result+=yf.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=yf.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=yf.repeat(`\n`,p):t.result+=yf.repeat(`\n`,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Hu(I)&&I!==0;)I=t.input.charCodeAt(++t.position);Gp(t,r,t.position,!1)}return!0}function uK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!Ia(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,dy(t,e,hK,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Pr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function n6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},E={},I=null,v=null,x=null,C=!1,R=!1,L;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),L=t.input.charCodeAt(t.position);L!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(L===63||L===58)&&Ia(o))L===63?(C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!0,a=!0):C?(C=!1,a=!0):Pr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,L=o;else if(dy(t,r,pK,!1,!0))if(t.line===n){for(L=t.input.charCodeAt(t.position);Zg(L);)L=t.input.charCodeAt(++t.position);if(L===58)L=t.input.charCodeAt(++t.position),Ia(L)||Pr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),C&&(gy(t,h,E,I,v,null),I=v=x=null),R=!0,C=!1,a=!1,I=t.tag,v=t.result;else if(R)Pr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=A,t.anchor=p,!0}else if(R)Pr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(dy(t,e,GD,!0,a)&&(C?v=t.result:x=t.result),C||(gy(t,h,E,I,v,x,n,u),I=v=x=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)Pr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return C&&gy(t,h,E,I,v,null),R&&(t.tag=A,t.anchor=p,t.kind=\"mapping\",t.result=h),R}function i6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&Pr(t,\"duplication of a tag property\"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a=\"!!\",u=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):Pr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;u!==0&&!Ia(u);)u===33&&(o?Pr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),gK.test(a)||Pr(t,\"named tag handle cannot contain such characters\"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),WHe.test(n)&&Pr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!dK.test(n)&&Pr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:Yp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Pr(t,'undeclared tag handle \"'+a+'\"'),!0}function s6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Pr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Ia(r)&&!hy(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Pr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function o6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!Ia(o)&&!hy(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&Pr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),Yp.call(t.anchorMap,r)||Pr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function dy(t,e,r,o,a){var n,u,A,p=1,h=!1,E=!1,I,v,x,C,R;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=GD===r||hK===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;i6e(t)||s6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||GD===r)&&(jD===r||pK===r?C=e:C=e+1,R=t.position-t.lineStart,p===1?A&&(uK(t,R)||n6e(t,R,C))||t6e(t,C)?E=!0:(u&&r6e(t,C)||$He(t,C)||e6e(t,C)?E=!0:o6e(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Pr(t,\"alias node should not have any properties\")):ZHe(t,C,jD===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=A&&uK(t,R))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Pr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),I=0,v=t.implicitTypes.length;I<v;I+=1)if(x=t.implicitTypes[I],x.resolve(t.result)){t.result=x.construct(t.result),t.tag=x.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else Yp.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(x=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&x.kind!==t.kind&&Pr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+x.kind+'\", not \"'+t.kind+'\"'),x.resolve(t.result)?(t.result=x.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Pr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Pr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function a6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&Pr(t,\"directive name must not be less than one character in length\");u!==0;){for(;Zg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Hu(u));break}if(Hu(u))break;for(r=t.position;u!==0&&!Ia(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&mT(t),Yp.call(lK,o)?lK[o](t,o,a):YD(t,'unknown document directive \"'+o+'\"')}if(Wi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Wi(t,!0,-1)):n&&Pr(t,\"directives end mark is expected\"),dy(t,t.lineIndent-1,GD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&YHe.test(t.input.slice(e,t.position))&&YD(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&WD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)Pr(t,\"end of the stream or a document separator is expected\");else return}function CK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=`\n`),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new XHe(t,e),o=t.indexOf(\"\\0\");for(o!==-1&&(r.position=o,Pr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)a6e(r);return r.documents}function wK(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var o=CK(t,r);if(typeof e!=\"function\")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function IK(t,e){var r=CK(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new AK(\"expected a single document in the stream, but found more\")}}function l6e(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),wK(t,e,yf.extend({schema:fK},r))}function c6e(t,e){return IK(t,yf.extend({schema:fK},e))}Zw.exports.loadAll=wK;Zw.exports.load=IK;Zw.exports.safeLoadAll=l6e;Zw.exports.safeLoad=c6e});var WK=_((Axt,IT)=>{\"use strict\";var eI=Vg(),tI=Ay(),u6e=Xw(),A6e=py(),QK=Object.prototype.toString,FK=Object.prototype.hasOwnProperty,f6e=9,$w=10,p6e=13,h6e=32,g6e=33,d6e=34,RK=35,m6e=37,y6e=38,E6e=39,C6e=42,TK=44,w6e=45,NK=58,I6e=61,B6e=62,v6e=63,D6e=64,LK=91,OK=93,S6e=96,MK=123,P6e=124,UK=125,vo={};vo[0]=\"\\\\0\";vo[7]=\"\\\\a\";vo[8]=\"\\\\b\";vo[9]=\"\\\\t\";vo[10]=\"\\\\n\";vo[11]=\"\\\\v\";vo[12]=\"\\\\f\";vo[13]=\"\\\\r\";vo[27]=\"\\\\e\";vo[34]='\\\\\"';vo[92]=\"\\\\\\\\\";vo[133]=\"\\\\N\";vo[160]=\"\\\\_\";vo[8232]=\"\\\\L\";vo[8233]=\"\\\\P\";var b6e=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function x6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)===\"!!\"&&(u=\"tag:yaml.org,2002:\"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&FK.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function vK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",o=2;else if(t<=65535)r=\"u\",o=4;else if(t<=4294967295)r=\"U\",o=8;else throw new tI(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+eI.repeat(\"0\",o-e.length)+e}function k6e(t){this.schema=t.schema||u6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=eI.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=x6e(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function DK(t,e){for(var r=eI.repeat(\" \",e),o=0,a=-1,n=\"\",u,A=t.length;o<A;)a=t.indexOf(`\n`,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==`\n`&&(n+=r),n+=u;return n}function ET(t,e){return`\n`+eI.repeat(\" \",t.indent*e)}function Q6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function wT(t){return t===h6e||t===f6e}function my(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function F6e(t){return my(t)&&!wT(t)&&t!==65279&&t!==p6e&&t!==$w}function SK(t,e){return my(t)&&t!==65279&&t!==TK&&t!==LK&&t!==OK&&t!==MK&&t!==UK&&t!==NK&&(t!==RK||e&&F6e(e))}function R6e(t){return my(t)&&t!==65279&&!wT(t)&&t!==w6e&&t!==v6e&&t!==NK&&t!==TK&&t!==LK&&t!==OK&&t!==MK&&t!==UK&&t!==RK&&t!==y6e&&t!==C6e&&t!==g6e&&t!==P6e&&t!==I6e&&t!==B6e&&t!==E6e&&t!==d6e&&t!==m6e&&t!==D6e&&t!==S6e}function _K(t){var e=/^\\n* /;return e.test(t)}var HK=1,qK=2,jK=3,GK=4,KD=5;function T6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,E=o!==-1,I=-1,v=R6e(t.charCodeAt(0))&&!wT(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===$w)p=!0,E&&(h=h||n-I-1>o&&t[I+1]!==\" \",I=n);else if(!my(u))return KD;A=n>0?t.charCodeAt(n-1):null,v=v&&SK(u,A)}h=h||E&&n-I-1>o&&t[I+1]!==\" \"}return!p&&!h?v&&!a(t)?HK:qK:r>9&&_K(t)?KD:h?GK:jK}function N6e(t,e,r,o){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&b6e.indexOf(e)!==-1)return\"'\"+e+\"'\";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return Q6e(t,p)}switch(T6e(e,u,t.indent,n,A)){case HK:return e;case qK:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case jK:return\"|\"+PK(e,t.indent)+bK(DK(e,a));case GK:return\">\"+PK(e,t.indent)+bK(DK(L6e(e,n),a));case KD:return'\"'+O6e(e,n)+'\"';default:throw new tI(\"impossible error: invalid scalar style\")}}()}function PK(t,e){var r=_K(t)?String(e):\"\",o=t[t.length-1]===`\n`,a=o&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":o?\"\":\"-\";return r+n+`\n`}function bK(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function L6e(t,e){for(var r=/(\\n+)([^\\n]*)/g,o=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,xK(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===\" \",o+=A+(!a&&!n&&p!==\"\"?`\n`:\"\")+xK(p,e),a=n}return o}function xK(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p=\"\";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=`\n`+t.slice(a,n),a=n+1),u=A;return p+=`\n`,t.length-a>e&&u>a?p+=t.slice(a,u)+`\n`+t.slice(u+1):p+=t.slice(a),p.slice(1)}function O6e(t){for(var e=\"\",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=vK((r-55296)*1024+o-56320+65536),n++;continue}a=vo[r],e+=!a&&my(r)?t[n]:a||vK(r)}return e}function M6e(t,e,r){var o=\"\",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)$g(t,e,r[n],!1,!1)&&(n!==0&&(o+=\",\"+(t.condenseFlow?\"\":\" \")),o+=t.dump);t.tag=a,t.dump=\"[\"+o+\"]\"}function U6e(t,e,r,o){var a=\"\",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)$g(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=ET(t,e)),t.dump&&$w===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function _6e(t,e,r){var o=\"\",a=t.tag,n=Object.keys(r),u,A,p,h,E;for(u=0,A=n.length;u<A;u+=1)E=\"\",u!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[u],h=r[p],$g(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),$g(t,e,h,!1,!1)&&(E+=t.dump,o+=E));t.tag=a,t.dump=\"{\"+o+\"}\"}function H6e(t,e,r,o){var a=\"\",n=t.tag,u=Object.keys(r),A,p,h,E,I,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys==\"function\")u.sort(t.sortKeys);else if(t.sortKeys)throw new tI(\"sortKeys must be a boolean or a function\");for(A=0,p=u.length;A<p;A+=1)v=\"\",(!o||A!==0)&&(v+=ET(t,e)),h=u[A],E=r[h],$g(t,e+1,h,!0,!0,!0)&&(I=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,I&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\"?\":v+=\"? \"),v+=t.dump,I&&(v+=ET(t,e)),$g(t,e+1,E,!0,I)&&(t.dump&&$w===t.dump.charCodeAt(0)?v+=\":\":v+=\": \",v+=t.dump,a+=v));t.tag=n,t.dump=a||\"{}\"}function kK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e==\"object\"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:\"?\",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,QK.call(A.represent)===\"[object Function]\")o=A.represent(e,p);else if(FK.call(A.represent,p))o=A.represent[p](e,p);else throw new tI(\"!<\"+A.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=o}return!0}return!1}function $g(t,e,r,o,a,n){t.tag=null,t.dump=r,kK(t,r,!1)||kK(t,r,!0);var u=QK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u===\"[object Object]\"||u===\"[object Array]\",p,h;if(A&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!==\"?\"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump=\"*ref_\"+p;else{if(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u===\"[object Object]\")o&&Object.keys(t.dump).length!==0?(H6e(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(_6e(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(u===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(U6e(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(M6e(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(u===\"[object String]\")t.tag!==\"?\"&&N6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new tI(\"unacceptable kind of an object to dump \"+u)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function q6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function CT(t,e,r){var o,a,n;if(t!==null&&typeof t==\"object\")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)CT(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)CT(t[o[a]],e,r)}function YK(t,e){e=e||{};var r=new k6e(e);return r.noRefs||q6e(t,r),$g(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function j6e(t,e){return YK(t,eI.extend({schema:A6e},e))}IT.exports.dump=YK;IT.exports.safeDump=j6e});var VK=_((fxt,ki)=>{\"use strict\";var VD=BK(),KK=WK();function JD(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}ki.exports.Type=os();ki.exports.Schema=Jg();ki.exports.FAILSAFE_SCHEMA=HD();ki.exports.JSON_SCHEMA=pT();ki.exports.CORE_SCHEMA=hT();ki.exports.DEFAULT_SAFE_SCHEMA=py();ki.exports.DEFAULT_FULL_SCHEMA=Xw();ki.exports.load=VD.load;ki.exports.loadAll=VD.loadAll;ki.exports.safeLoad=VD.safeLoad;ki.exports.safeLoadAll=VD.safeLoadAll;ki.exports.dump=KK.dump;ki.exports.safeDump=KK.safeDump;ki.exports.YAMLException=Ay();ki.exports.MINIMAL_SCHEMA=HD();ki.exports.SAFE_SCHEMA=py();ki.exports.DEFAULT_SCHEMA=Xw();ki.exports.scan=JD(\"scan\");ki.exports.parse=JD(\"parse\");ki.exports.compose=JD(\"compose\");ki.exports.addConstructor=JD(\"addConstructor\")});var zK=_((pxt,JK)=>{\"use strict\";var G6e=VK();JK.exports=G6e});var ZK=_((hxt,XK)=>{\"use strict\";function Y6e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ed(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ed)}Y6e(ed,Error);ed.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function W6e(t,e){e=e!==void 0?e:{};var r={},o={Start:pu},a=pu,n=function($){return[].concat(...$)},u=\"-\",A=Qn(\"-\",!1),p=function($){return $},h=function($){return Object.assign({},...$)},E=\"#\",I=Qn(\"#\",!1),v=hc(),x=function(){return{}},C=\":\",R=Qn(\":\",!1),L=function($,ye){return{[$]:ye}},U=\",\",J=Qn(\",\",!1),te=function($,ye){return ye},ae=function($,ye,Le){return Object.assign({},...[$].concat(ye).map(pt=>({[pt]:Le})))},fe=function($){return $},ce=function($){return $},me=sa(\"correct indentation\"),he=\" \",Be=Qn(\" \",!1),we=function($){return $.length===nr*It},g=function($){return $.length===(nr+1)*It},Ee=function(){return nr++,!0},Se=function(){return nr--,!0},le=function(){return SA()},ne=sa(\"pseudostring\"),ee=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,Ie=hi([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Fe=/^[^\\r\\n\\t ,\\][{}:#\"']/,At=hi([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),H=function(){return SA().replace(/^ *| *$/g,\"\")},at=\"--\",Re=Qn(\"--\",!1),ke=/^[a-zA-Z\\/0-9]/,xe=hi([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),He=/^[^\\r\\n\\t :,]/,Te=hi([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),Je=\"null\",qe=Qn(\"null\",!1),b=function(){return null},w=\"true\",P=Qn(\"true\",!1),y=function(){return!0},F=\"false\",z=Qn(\"false\",!1),X=function(){return!1},Z=sa(\"string\"),ie='\"',Pe=Qn('\"',!1),Ne=function(){return\"\"},ot=function($){return $},dt=function($){return $.join(\"\")},jt=/^[^\"\\\\\\0-\\x1F\\x7F]/,$t=hi(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),bt='\\\\\"',an=Qn('\\\\\"',!1),Qr=function(){return'\"'},mr=\"\\\\\\\\\",br=Qn(\"\\\\\\\\\",!1),Wr=function(){return\"\\\\\"},Kn=\"\\\\/\",Ns=Qn(\"\\\\/\",!1),Ti=function(){return\"/\"},ps=\"\\\\b\",io=Qn(\"\\\\b\",!1),Pi=function(){return\"\\b\"},Ls=\"\\\\f\",so=Qn(\"\\\\f\",!1),cc=function(){return\"\\f\"},cu=\"\\\\n\",lp=Qn(\"\\\\n\",!1),cp=function(){return`\n`},Os=\"\\\\r\",Dn=Qn(\"\\\\r\",!1),oo=function(){return\"\\r\"},Ms=\"\\\\t\",ml=Qn(\"\\\\t\",!1),yl=function(){return\"\t\"},ao=\"\\\\u\",Vn=Qn(\"\\\\u\",!1),On=function($,ye,Le,pt){return String.fromCharCode(parseInt(`0x${$}${ye}${Le}${pt}`))},Ni=/^[0-9a-fA-F]/,Mn=hi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),_i=sa(\"blank space\"),tr=/^[ \\t]/,Oe=hi([\" \",\"\t\"],!1,!1),ii=sa(\"white space\"),Ma=/^[ \\t\\n\\r]/,hr=hi([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),uc=`\\r\n`,uu=Qn(`\\r\n`,!1),Ac=`\n`,El=Qn(`\n`,!1),DA=\"\\r\",Au=Qn(\"\\r\",!1),Ce=0,Rt=0,fc=[{line:1,column:1}],Hi=0,fu=[],Yt=0,Cl;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function SA(){return t.substring(Rt,Ce)}function up(){return _o(Rt,Ce)}function pc($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),gc([sa($)],t.substring(Rt,Ce),ye)}function PA($,ye){throw ye=ye!==void 0?ye:_o(Rt,Ce),lo($,ye)}function Qn($,ye){return{type:\"literal\",text:$,ignoreCase:ye}}function hi($,ye,Le){return{type:\"class\",parts:$,inverted:ye,ignoreCase:Le}}function hc(){return{type:\"any\"}}function bA(){return{type:\"end\"}}function sa($){return{type:\"other\",description:$}}function Li($){var ye=fc[$],Le;if(ye)return ye;for(Le=$-1;!fc[Le];)Le--;for(ye=fc[Le],ye={line:ye.line,column:ye.column};Le<$;)t.charCodeAt(Le)===10?(ye.line++,ye.column=1):ye.column++,Le++;return fc[$]=ye,ye}function _o($,ye){var Le=Li($),pt=Li(ye);return{start:{offset:$,line:Le.line,column:Le.column},end:{offset:ye,line:pt.line,column:pt.column}}}function Ze($){Ce<Hi||(Ce>Hi&&(Hi=Ce,fu=[]),fu.push($))}function lo($,ye){return new ed($,null,null,ye)}function gc($,ye,Le){return new ed(ed.buildMessage($,ye),$,ye,Le)}function pu(){var $;return $=xA(),$}function qi(){var $,ye,Le;for($=Ce,ye=[],Le=hu();Le!==r;)ye.push(Le),Le=hu();return ye!==r&&(Rt=$,ye=n(ye)),$=ye,$}function hu(){var $,ye,Le,pt,ht;return $=Ce,ye=hs(),ye!==r?(t.charCodeAt(Ce)===45?(Le=u,Ce++):(Le=r,Yt===0&&Ze(A)),Le!==r?(pt=Sn(),pt!==r?(ht=dc(),ht!==r?(Rt=$,ye=p(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$}function xA(){var $,ye,Le;for($=Ce,ye=[],Le=Ua();Le!==r;)ye.push(Le),Le=Ua();return ye!==r&&(Rt=$,ye=h(ye)),$=ye,$}function Ua(){var $,ye,Le,pt,ht,Tt,er,$r,ji;if($=Ce,ye=Sn(),ye===r&&(ye=null),ye!==r){if(Le=Ce,t.charCodeAt(Ce)===35?(pt=E,Ce++):(pt=r,Yt===0&&Ze(I)),pt!==r){if(ht=[],Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r),Tt!==r)for(;Tt!==r;)ht.push(Tt),Tt=Ce,er=Ce,Yt++,$r=tt(),Yt--,$r===r?er=void 0:(Ce=er,er=r),er!==r?(t.length>Ce?($r=t.charAt(Ce),Ce++):($r=r,Yt===0&&Ze(v)),$r!==r?(er=[er,$r],Tt=er):(Ce=Tt,Tt=r)):(Ce=Tt,Tt=r);else ht=r;ht!==r?(pt=[pt,ht],Le=pt):(Ce=Le,Le=r)}else Ce=Le,Le=r;if(Le===r&&(Le=null),Le!==r){if(pt=[],ht=We(),ht!==r)for(;ht!==r;)pt.push(ht),ht=We();else pt=r;pt!==r?(Rt=$,ye=x(),$=ye):(Ce=$,$=r)}else Ce=$,$=r}else Ce=$,$=r;if($===r&&($=Ce,ye=hs(),ye!==r?(Le=oa(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=hs(),ye!==r?(Le=co(),Le!==r?(pt=Sn(),pt===r&&(pt=null),pt!==r?(t.charCodeAt(Ce)===58?(ht=C,Ce++):(ht=r,Yt===0&&Ze(R)),ht!==r?(Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(er=dc(),er!==r?(Rt=$,ye=L(Le,er),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))){if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r)if(pt=Sn(),pt!==r)if(ht=aa(),ht!==r){if(Tt=[],er=We(),er!==r)for(;er!==r;)Tt.push(er),er=We();else Tt=r;Tt!==r?(Rt=$,ye=L(Le,ht),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;else Ce=$,$=r;if($===r)if($=Ce,ye=hs(),ye!==r)if(Le=co(),Le!==r){if(pt=[],ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(ji=co(),ji!==r?(Rt=ht,Tt=te(Le,ji),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r),ht!==r)for(;ht!==r;)pt.push(ht),ht=Ce,Tt=Sn(),Tt===r&&(Tt=null),Tt!==r?(t.charCodeAt(Ce)===44?(er=U,Ce++):(er=r,Yt===0&&Ze(J)),er!==r?($r=Sn(),$r===r&&($r=null),$r!==r?(ji=co(),ji!==r?(Rt=ht,Tt=te(Le,ji),ht=Tt):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r)):(Ce=ht,ht=r);else pt=r;pt!==r?(ht=Sn(),ht===r&&(ht=null),ht!==r?(t.charCodeAt(Ce)===58?(Tt=C,Ce++):(Tt=r,Yt===0&&Ze(R)),Tt!==r?(er=Sn(),er===r&&(er=null),er!==r?($r=dc(),$r!==r?(Rt=$,ye=ae(Le,pt,$r),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r}return $}function dc(){var $,ye,Le,pt,ht,Tt,er;if($=Ce,ye=Ce,Yt++,Le=Ce,pt=tt(),pt!==r?(ht=_t(),ht!==r?(t.charCodeAt(Ce)===45?(Tt=u,Ce++):(Tt=r,Yt===0&&Ze(A)),Tt!==r?(er=Sn(),er!==r?(pt=[pt,ht,Tt,er],Le=pt):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r)):(Ce=Le,Le=r),Yt--,Le!==r?(Ce=ye,ye=void 0):ye=r,ye!==r?(Le=We(),Le!==r?(pt=Fn(),pt!==r?(ht=qi(),ht!==r?(Tt=Ci(),Tt!==r?(Rt=$,ye=fe(ht),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,ye=tt(),ye!==r?(Le=Fn(),Le!==r?(pt=xA(),pt!==r?(ht=Ci(),ht!==r?(Rt=$,ye=fe(pt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r),$===r))if($=Ce,ye=Us(),ye!==r){if(Le=[],pt=We(),pt!==r)for(;pt!==r;)Le.push(pt),pt=We();else Le=r;Le!==r?(Rt=$,ye=ce(ye),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function hs(){var $,ye,Le;for(Yt++,$=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=we(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),Yt--,$===r&&(ye=r,Yt===0&&Ze(me)),$}function _t(){var $,ye,Le;for($=Ce,ye=[],t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));Le!==r;)ye.push(Le),t.charCodeAt(Ce)===32?(Le=he,Ce++):(Le=r,Yt===0&&Ze(Be));return ye!==r?(Rt=Ce,Le=g(ye),Le?Le=void 0:Le=r,Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)):(Ce=$,$=r),$}function Fn(){var $;return Rt=Ce,$=Ee(),$?$=void 0:$=r,$}function Ci(){var $;return Rt=Ce,$=Se(),$?$=void 0:$=r,$}function oa(){var $;return $=ds(),$===r&&($=la()),$}function co(){var $,ye,Le;if($=ds(),$===r){if($=Ce,ye=[],Le=Ho(),Le!==r)for(;Le!==r;)ye.push(Le),Le=Ho();else ye=r;ye!==r&&(Rt=$,ye=le()),$=ye}return $}function Us(){var $;return $=wi(),$===r&&($=gs(),$===r&&($=ds(),$===r&&($=la()))),$}function aa(){var $;return $=wi(),$===r&&($=ds(),$===r&&($=Ho())),$}function la(){var $,ye,Le,pt,ht,Tt;if(Yt++,$=Ce,ee.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Ie)),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Fe.test(t.charAt(Ce))?(Tt=t.charAt(Ce),Ce++):(Tt=r,Yt===0&&Ze(At)),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ne)),$}function Ho(){var $,ye,Le,pt,ht;if($=Ce,t.substr(Ce,2)===at?(ye=at,Ce+=2):(ye=r,Yt===0&&Ze(Re)),ye===r&&(ye=null),ye!==r)if(ke.test(t.charAt(Ce))?(Le=t.charAt(Ce),Ce++):(Le=r,Yt===0&&Ze(xe)),Le!==r){for(pt=[],He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));ht!==r;)pt.push(ht),He.test(t.charAt(Ce))?(ht=t.charAt(Ce),Ce++):(ht=r,Yt===0&&Ze(Te));pt!==r?(Rt=$,ye=H(),$=ye):(Ce=$,$=r)}else Ce=$,$=r;else Ce=$,$=r;return $}function wi(){var $,ye;return $=Ce,t.substr(Ce,4)===Je?(ye=Je,Ce+=4):(ye=r,Yt===0&&Ze(qe)),ye!==r&&(Rt=$,ye=b()),$=ye,$}function gs(){var $,ye;return $=Ce,t.substr(Ce,4)===w?(ye=w,Ce+=4):(ye=r,Yt===0&&Ze(P)),ye!==r&&(Rt=$,ye=y()),$=ye,$===r&&($=Ce,t.substr(Ce,5)===F?(ye=F,Ce+=5):(ye=r,Yt===0&&Ze(z)),ye!==r&&(Rt=$,ye=X()),$=ye),$}function ds(){var $,ye,Le,pt;return Yt++,$=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(t.charCodeAt(Ce)===34?(Le=ie,Ce++):(Le=r,Yt===0&&Ze(Pe)),Le!==r?(Rt=$,ye=Ne(),$=ye):(Ce=$,$=r)):(Ce=$,$=r),$===r&&($=Ce,t.charCodeAt(Ce)===34?(ye=ie,Ce++):(ye=r,Yt===0&&Ze(Pe)),ye!==r?(Le=ms(),Le!==r?(t.charCodeAt(Ce)===34?(pt=ie,Ce++):(pt=r,Yt===0&&Ze(Pe)),pt!==r?(Rt=$,ye=ot(Le),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)),Yt--,$===r&&(ye=r,Yt===0&&Ze(Z)),$}function ms(){var $,ye,Le;if($=Ce,ye=[],Le=_s(),Le!==r)for(;Le!==r;)ye.push(Le),Le=_s();else ye=r;return ye!==r&&(Rt=$,ye=dt(ye)),$=ye,$}function _s(){var $,ye,Le,pt,ht,Tt;return jt.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze($t)),$===r&&($=Ce,t.substr(Ce,2)===bt?(ye=bt,Ce+=2):(ye=r,Yt===0&&Ze(an)),ye!==r&&(Rt=$,ye=Qr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===mr?(ye=mr,Ce+=2):(ye=r,Yt===0&&Ze(br)),ye!==r&&(Rt=$,ye=Wr()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Kn?(ye=Kn,Ce+=2):(ye=r,Yt===0&&Ze(Ns)),ye!==r&&(Rt=$,ye=Ti()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ps?(ye=ps,Ce+=2):(ye=r,Yt===0&&Ze(io)),ye!==r&&(Rt=$,ye=Pi()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ls?(ye=Ls,Ce+=2):(ye=r,Yt===0&&Ze(so)),ye!==r&&(Rt=$,ye=cc()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===cu?(ye=cu,Ce+=2):(ye=r,Yt===0&&Ze(lp)),ye!==r&&(Rt=$,ye=cp()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Os?(ye=Os,Ce+=2):(ye=r,Yt===0&&Ze(Dn)),ye!==r&&(Rt=$,ye=oo()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===Ms?(ye=Ms,Ce+=2):(ye=r,Yt===0&&Ze(ml)),ye!==r&&(Rt=$,ye=yl()),$=ye,$===r&&($=Ce,t.substr(Ce,2)===ao?(ye=ao,Ce+=2):(ye=r,Yt===0&&Ze(Vn)),ye!==r?(Le=Un(),Le!==r?(pt=Un(),pt!==r?(ht=Un(),ht!==r?(Tt=Un(),Tt!==r?(Rt=$,ye=On(Le,pt,ht,Tt),$=ye):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)):(Ce=$,$=r)))))))))),$}function Un(){var $;return Ni.test(t.charAt(Ce))?($=t.charAt(Ce),Ce++):($=r,Yt===0&&Ze(Mn)),$}function Sn(){var $,ye;if(Yt++,$=[],tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe)),ye!==r)for(;ye!==r;)$.push(ye),tr.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(Oe));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(_i)),$}function ys(){var $,ye;if(Yt++,$=[],Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr)),ye!==r)for(;ye!==r;)$.push(ye),Ma.test(t.charAt(Ce))?(ye=t.charAt(Ce),Ce++):(ye=r,Yt===0&&Ze(hr));else $=r;return Yt--,$===r&&(ye=r,Yt===0&&Ze(ii)),$}function We(){var $,ye,Le,pt,ht,Tt;if($=Ce,ye=tt(),ye!==r){for(Le=[],pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);pt!==r;)Le.push(pt),pt=Ce,ht=Sn(),ht===r&&(ht=null),ht!==r?(Tt=tt(),Tt!==r?(ht=[ht,Tt],pt=ht):(Ce=pt,pt=r)):(Ce=pt,pt=r);Le!==r?(ye=[ye,Le],$=ye):(Ce=$,$=r)}else Ce=$,$=r;return $}function tt(){var $;return t.substr(Ce,2)===uc?($=uc,Ce+=2):($=r,Yt===0&&Ze(uu)),$===r&&(t.charCodeAt(Ce)===10?($=Ac,Ce++):($=r,Yt===0&&Ze(El)),$===r&&(t.charCodeAt(Ce)===13?($=DA,Ce++):($=r,Yt===0&&Ze(Au)))),$}let It=2,nr=0;if(Cl=a(),Cl!==r&&Ce===t.length)return Cl;throw Cl!==r&&Ce<t.length&&Ze(bA()),gc(fu,Hi<t.length?t.charAt(Hi):null,Hi<t.length?_o(Hi,Hi+1):_o(Hi,Hi))}XK.exports={SyntaxError:ed,parse:W6e}});function eV(t){return t.match(K6e)?t:JSON.stringify(t)}function rV(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>rV(t[e])):!1}function BT(t,e,r){if(t===null)return`null\n`;if(typeof t==\"number\"||typeof t==\"boolean\")return`${t.toString()}\n`;if(typeof t==\"string\")return`${eV(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let o=\"  \".repeat(e);return`\n${t.map(n=>`${o}- ${BT(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[o,a]=t instanceof zD?[t.data,!1]:[t,!0],n=\"  \".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let E=$K.indexOf(p),I=$K.indexOf(h);return E===-1&&I===-1?p<h?-1:p>h?1:0:E!==-1&&I===-1?-1:E===-1&&I!==-1?1:E-I});let A=u.filter(p=>!rV(o[p])).map((p,h)=>{let E=o[p],I=eV(p),v=BT(E,e+1,!0),x=h>0||r?n:\"\",C=I.length>1024?`? ${I}\n${x}:`:`${I}:`,R=v.startsWith(`\n`)?v:` ${v}`;return`${x}${C}${R}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=BT(t,0,!1);return e!==`\n`?e:\"\"}catch(e){throw e.location&&(e.message=e.message.replace(/(\\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function V6e(t){return t.endsWith(`\n`)||(t+=`\n`),(0,tV.parse)(t)}function z6e(t){if(J6e.test(t))return V6e(t);let e=(0,XD.safeLoad)(t,{schema:XD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return e}function Ki(t){return z6e(t)}var XD,tV,K6e,$K,zD,J6e,nV=Et(()=>{XD=$e(zK()),tV=$e(ZK()),K6e=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,$K=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],zD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=zD;J6e=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var rI={};Vt(rI,{parseResolution:()=>MD,parseShell:()=>ND,parseSyml:()=>Ki,stringifyArgument:()=>cT,stringifyArgumentSegment:()=>uT,stringifyArithmeticExpression:()=>OD,stringifyCommand:()=>lT,stringifyCommandChain:()=>uy,stringifyCommandChainThen:()=>aT,stringifyCommandLine:()=>LD,stringifyCommandLineThen:()=>oT,stringifyEnvSegment:()=>TD,stringifyRedirectArgument:()=>Jw,stringifyResolution:()=>UD,stringifyShell:()=>cy,stringifyShellLine:()=>cy,stringifySyml:()=>Ba,stringifyValueArgument:()=>Yg});var Nl=Et(()=>{rW();oW();nV()});var sV=_((Ext,vT)=>{\"use strict\";var X6e=t=>{let e=!1,r=!1,o=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+\"-\"+t.slice(a),e=!1,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},iV=(t,e)=>{if(!(typeof t==\"string\"||Array.isArray(t)))throw new TypeError(\"Expected the input to be `string | string[]`\");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join(\"-\"):t=t.trim(),t.length===0?\"\":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=X6e(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};vT.exports=iV;vT.exports.default=iV});var oV=_((Cxt,Z6e)=>{Z6e.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vercel\",constant:\"VERCEL\",env:\"NOW_BUILDER\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"}]});var td=_(Xa=>{\"use strict\";var lV=oV(),qu=process.env;Object.defineProperty(Xa,\"_vendors\",{value:lV.map(function(t){return t.constant})});Xa.name=null;Xa.isPR=null;lV.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return aV(o)});if(Xa[t.constant]=r,r)switch(Xa.name=t.name,typeof t.pr){case\"string\":Xa.isPR=!!qu[t.pr];break;case\"object\":\"env\"in t.pr?Xa.isPR=t.pr.env in qu&&qu[t.pr.env]!==t.pr.ne:\"any\"in t.pr?Xa.isPR=t.pr.any.some(function(o){return!!qu[o]}):Xa.isPR=aV(t.pr);break;default:Xa.isPR=null}});Xa.isCI=!!(qu.CI||qu.CONTINUOUS_INTEGRATION||qu.BUILD_NUMBER||qu.RUN_ID||Xa.name);function aV(t){return typeof t==\"string\"?!!qu[t]:Object.keys(t).every(function(e){return qu[e]===t[e]})}});var Hn,cn,rd,DT,ZD,cV,ST,PT,$D=Et(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(Hn||(Hn={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(cn||(cn={}));rd=-1,DT=/^(-h|--help)(?:=([0-9]+))?$/,ZD=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,cV=/^-[a-zA-Z]{2,}$/,ST=/^([^=]+)=([\\s\\S]*)$/,PT=process.env.DEBUG_CLI===\"1\"});var it,yy,eS,bT,tS=Et(()=>{$D();it=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},yy=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${o}\n${bT(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},eS=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(`\n`)}\n\n${bT(e)}`}},bT=t=>`While running ${t.filter(e=>e!==Hn.EndOfInput&&e!==Hn.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function $6e(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(`\n`)}function Do(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=$6e(t),t=t.replace(/^\\n+|\\n+$/g,\"\"),t=t.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),t=t.replace(/\\n(\\n)?\\n*/g,(o,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(o=>{let a=o.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((u,A)=>\" \".repeat(n)+(A===0?\"- \":\"  \")+u).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var xT,uV,AV,kT=Et(()=>{xT=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)xT[xT.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;uV={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<80-5?` ${xT.slice(t.length+5).join(\"\")}`:\":\"}\\x1B[0m`,bold:t=>`\\x1B[1m${t}\\x1B[22m`,error:t=>`\\x1B[31m\\x1B[1m${t}\\x1B[22m\\x1B[39m`,code:t=>`\\x1B[36m${t}\\x1B[39m`},AV={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Ko(t){return{...t,[nI]:!0}}function ju(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function rS(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,o,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=o!==\".\"||!e?`${o.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function iI(t,e){return e.length===1?new it(`${t}${rS(e[0],{mergeName:!0})}`):new it(`${t}:\n${e.map(r=>`\n- ${rS(r)}`).join(\"\")}`)}function nd(t,e,r){if(typeof r>\"u\")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw iI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var nI,Ef=Et(()=>{tS();nI=Symbol(\"clipanion/isOption\")});var Vo={};Vt(Vo,{KeyRelationship:()=>Gu,TypeAssertionError:()=>Kp,applyCascade:()=>aI,as:()=>yqe,assert:()=>gqe,assertWithErrors:()=>dqe,cascade:()=>oS,fn:()=>Eqe,hasAtLeastOneKey:()=>OT,hasExactLength:()=>dV,hasForbiddenKeys:()=>Mqe,hasKeyRelationship:()=>cI,hasMaxLength:()=>wqe,hasMinLength:()=>Cqe,hasMutuallyExclusiveKeys:()=>Uqe,hasRequiredKeys:()=>Oqe,hasUniqueItems:()=>Iqe,isArray:()=>nS,isAtLeast:()=>NT,isAtMost:()=>Dqe,isBase64:()=>Rqe,isBoolean:()=>aqe,isDate:()=>cqe,isDict:()=>fqe,isEnum:()=>Ks,isHexColor:()=>Fqe,isISO8601:()=>Qqe,isInExclusiveRange:()=>Pqe,isInInclusiveRange:()=>Sqe,isInstanceOf:()=>hqe,isInteger:()=>LT,isJSON:()=>Tqe,isLiteral:()=>pV,isLowerCase:()=>bqe,isMap:()=>Aqe,isNegative:()=>Bqe,isNullable:()=>Lqe,isNumber:()=>RT,isObject:()=>hV,isOneOf:()=>TT,isOptional:()=>Nqe,isPartial:()=>pqe,isPayload:()=>lqe,isPositive:()=>vqe,isRecord:()=>sS,isSet:()=>uqe,isString:()=>Cy,isTuple:()=>iS,isUUID4:()=>kqe,isUnknown:()=>FT,isUpperCase:()=>xqe,makeTrait:()=>gV,makeValidator:()=>Hr,matchesRegExp:()=>oI,softAssert:()=>mqe});function qn(t){return t===null?\"null\":t===void 0?\"undefined\":t===\"\"?\"an empty string\":typeof t==\"symbol\"?`<${t.toString()}>`:Array.isArray(t)?\"an array\":JSON.stringify(t)}function Ey(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return qn(t[0]);let r=t.slice(0,-1),o=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>qn(n)).join(\", \")}${a}${qn(o)}`}function Wp(t,e){var r,o,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:eqe.test(e)?`${(o=t?.p)!==null&&o!==void 0?o:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function QT(t,e,r){return t===1?e:r}function pr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function sqe(t,e){return r=>{t[e]=r}}function Yu(t,e){return r=>{let o=t[e];return t[e]=r,Yu(t,e).bind(null,o)}}function sI(t,e,r){let o=()=>(t(r()),a),a=()=>(t(e),o);return o}function FT(){return Hr({test:(t,e)=>!0})}function pV(t){return Hr({test:(e,r)=>e!==t?pr(r,`Expected ${qn(t)} (got ${qn(e)})`):!0})}function Cy(){return Hr({test:(t,e)=>typeof t!=\"string\"?pr(e,`Expected a string (got ${qn(t)})`):!0})}function Ks(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),o=new Set(e);return o.size===1?pV([...o][0]):Hr({test:(a,n)=>o.has(a)?!0:r?pr(n,`Expected one of ${Ey(e,\"or\")} (got ${qn(a)})`):pr(n,`Expected a valid enumeration value (got ${qn(a)})`)})}function aqe(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o=oqe.get(t);if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a boolean (got ${qn(t)})`)}return!0}})}function RT(){return Hr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)o=a;else return pr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a number (got ${qn(t)})`)}return!0}})}function lqe(t){return Hr({test:(e,r)=>{var o;if(typeof r?.coercions>\"u\")return pr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return pr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return pr(r,`Expected a string (got ${qn(e)})`);let a;try{a=JSON.parse(e)}catch{return pr(r,`Expected a JSON string (got ${qn(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Yu(n,\"value\")}))?(r.coercions.push([(o=r.p)!==null&&o!==void 0?o:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function cqe(){return Hr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return pr(e,\"Unbound coercion result\");let o;if(typeof t==\"string\"&&fV.test(t))o=new Date(t);else{let a;if(typeof t==\"string\"){let n;try{n=JSON.parse(t)}catch{}typeof n==\"number\"&&(a=n)}else typeof t==\"number\"&&(a=t);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return pr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,o)]),!0}return pr(e,`Expected a date (got ${qn(t)})`)}return!0}})}function nS(t,{delimiter:e}={}){return Hr({test:(r,o)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof o?.coercions<\"u\"){if(typeof o?.coercion>\"u\")return pr(o,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return pr(o,`Expected an array (got ${qn(r)})`);let u=!0;for(let A=0,p=r.length;A<p&&(u=t(r[A],Object.assign(Object.assign({},o),{p:Wp(o,A),coercion:Yu(r,A)}))&&u,!(!u&&o?.errors==null));++A);return r!==n&&o.coercions.push([(a=o.p)!==null&&a!==void 0?a:\".\",o.coercion.bind(null,r)]),u}})}function uqe(t,{delimiter:e}={}){let r=nS(t,{delimiter:e});return Hr({test:(o,a)=>{var n,u;if(Object.getPrototypeOf(o).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A=[...o],p=[...o];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,I)=>E!==A[I])?new Set(p):o;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",sI(a.coercion,o,h)]),!0}else{let A=!0;for(let p of o)if(A=t(p,Object.assign({},a))&&A,!A&&a?.errors==null)break;return A}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");let A={value:o};return r(o,Object.assign(Object.assign({},a),{coercion:Yu(A,\"value\")}))?(a.coercions.push([(u=a.p)!==null&&u!==void 0?u:\".\",sI(a.coercion,o,()=>new Set(A.value))]),!0):!1}return pr(a,`Expected a set (got ${qn(o)})`)}})}function Aqe(t,e){let r=nS(iS([t,e])),o=sS(e,{keys:t});return Hr({test:(a,n)=>{var u,A,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let I=()=>E.some((v,x)=>v[0]!==h[x][0]||v[1]!==h[x][1])?new Map(E):a;return n.coercions.push([(u=n.p)!==null&&u!==void 0?u:\".\",sI(n.coercion,a,I)]),!0}else{let h=!0;for(let[E,I]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(I,Object.assign(Object.assign({},n),{p:Wp(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return pr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(A=n.p)!==null&&A!==void 0?A:\".\",sI(n.coercion,a,()=>new Map(h.value))]),!0):!1:o(a,Object.assign(Object.assign({},n),{coercion:Yu(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",sI(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return pr(n,`Expected a map (got ${qn(a)})`)}})}function iS(t,{delimiter:e}={}){let r=dV(t.length);return Hr({test:(o,a)=>{var n;if(typeof o==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)])}if(!Array.isArray(o))return pr(a,`Expected a tuple (got ${qn(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:Wp(a,A),coercion:Yu(o,A)}))&&u,!(!u&&a?.errors==null));++A);return u}})}function sS(t,{keys:e=null}={}){let r=nS(iS([e??Cy(),t]));return Hr({test:(o,a)=>{var n;if(Array.isArray(o)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?pr(a,\"Unbound coercion result\"):r(o,Object.assign(Object.assign({},a),{coercion:void 0}))?(o=Object.fromEntries(o),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,o)]),!0):!1;if(typeof o!=\"object\"||o===null)return pr(a,`Expected an object (got ${qn(o)})`);let u=Object.keys(o),A=!0;for(let p=0,h=u.length;p<h&&(A||a?.errors!=null);++p){let E=u[p],I=o[E];if(E===\"__proto__\"||E===\"constructor\"){A=pr(Object.assign(Object.assign({},a),{p:Wp(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){A=!1;continue}if(!t(I,Object.assign(Object.assign({},a),{p:Wp(a,E),coercion:Yu(o,E)}))){A=!1;continue}}return A}})}function fqe(t,e={}){return sS(t,e)}function hV(t,{extra:e=null}={}){let r=Object.keys(t),o=Hr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return pr(n,`Expected an object (got ${qn(a)})`);let u=new Set([...r,...Object.keys(a)]),A={},p=!0;for(let h of u){if(h===\"constructor\"||h===\"__proto__\")p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,I=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(I,Object.assign(Object.assign({},n),{p:Wp(n,h),coercion:Yu(a,h)}))&&p:e===null?p=pr(Object.assign(Object.assign({},n),{p:Wp(n,h)}),`Extraneous property (got ${qn(I)})`):Object.defineProperty(A,h,{enumerable:!0,get:()=>I,set:sqe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(A,n)&&p),p}});return Object.assign(o,{properties:t})}function pqe(t){return hV(t,{extra:sS(FT())})}function gV(t){return()=>t}function Hr({test:t}){return gV(t)()}function gqe(t,e){if(!e(t))throw new Kp}function dqe(t,e){let r=[];if(!e(t,{errors:r}))throw new Kp({errors:r})}function mqe(t,e){}function yqe(t,e,{coerce:r=!1,errors:o,throw:a}={}){let n=o?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}let u={value:t},A=Yu(u,\"value\"),p=[];if(!e(t,{errors:n,coercion:A,coercions:p})){if(a)throw new Kp({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?u.value:{value:u.value,errors:void 0}}function Eqe(t,e){let r=iS(t);return(...o)=>{if(!r(o))throw new Kp;return e(...o)}}function Cqe(t){return Hr({test:(e,r)=>e.length>=t?!0:pr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function wqe(t){return Hr({test:(e,r)=>e.length<=t?!0:pr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function dV(t){return Hr({test:(e,r)=>e.length!==t?pr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function Iqe({map:t}={}){return Hr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<\"u\"?t(A):A;if(o.has(p)){if(a.has(p))continue;pr(r,`Expected to contain unique elements; got a duplicate with ${qn(e)}`),a.add(p)}else o.add(p)}return a.size===0}})}function Bqe(){return Hr({test:(t,e)=>t<=0?!0:pr(e,`Expected to be negative (got ${t})`)})}function vqe(){return Hr({test:(t,e)=>t>=0?!0:pr(e,`Expected to be positive (got ${t})`)})}function NT(t){return Hr({test:(e,r)=>e>=t?!0:pr(r,`Expected to be at least ${t} (got ${e})`)})}function Dqe(t){return Hr({test:(e,r)=>e<=t?!0:pr(r,`Expected to be at most ${t} (got ${e})`)})}function Sqe(t,e){return Hr({test:(r,o)=>r>=t&&r<=e?!0:pr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function Pqe(t,e){return Hr({test:(r,o)=>r>=t&&r<e?!0:pr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function LT({unsafe:t=!1}={}){return Hr({test:(e,r)=>e!==Math.round(e)?pr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?pr(r,`Expected to be a safe integer (got ${e})`):!0})}function oI(t){return Hr({test:(e,r)=>t.test(e)?!0:pr(r,`Expected to match the pattern ${t.toString()} (got ${qn(e)})`)})}function bqe(){return Hr({test:(t,e)=>t!==t.toLowerCase()?pr(e,`Expected to be all-lowercase (got ${t})`):!0})}function xqe(){return Hr({test:(t,e)=>t!==t.toUpperCase()?pr(e,`Expected to be all-uppercase (got ${t})`):!0})}function kqe(){return Hr({test:(t,e)=>iqe.test(t)?!0:pr(e,`Expected to be a valid UUID v4 (got ${qn(t)})`)})}function Qqe(){return Hr({test:(t,e)=>fV.test(t)?!0:pr(e,`Expected to be a valid ISO 8601 date string (got ${qn(t)})`)})}function Fqe({alpha:t=!1}){return Hr({test:(e,r)=>(t?tqe.test(e):rqe.test(e))?!0:pr(r,`Expected to be a valid hexadecimal color string (got ${qn(e)})`)})}function Rqe(){return Hr({test:(t,e)=>nqe.test(t)?!0:pr(e,`Expected to be a valid base 64 string (got ${qn(t)})`)})}function Tqe(t=FT()){return Hr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return pr(r,`Expected to be a valid JSON string (got ${qn(e)})`)}return t(o,r)}})}function oS(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Hr({test:(o,a)=>{var n,u;let A={value:o},p=typeof a?.coercions<\"u\"?Yu(A,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(o,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,I]of h)E.push(I());try{if(typeof a?.coercions<\"u\"){if(A.value!==o){if(typeof a?.coercion>\"u\")return pr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,A.value)])}(u=a?.coercions)===null||u===void 0||u.push(...h)}return r.every(I=>I(A.value,a))}finally{for(let I of E)I()}}})}function aI(t,...e){let r=Array.isArray(e[0])?e[0]:e;return oS(t,r)}function Nqe(t){return Hr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function Lqe(t){return Hr({test:(e,r)=>e===null?!0:t(e,r)})}function Oqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)||p.push(h);return p.length>0?pr(u,`Missing required ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function OT(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>Object.keys(n).some(h=>a(o,h,n))?!0:pr(u,`Missing at least one property from ${Ey(Array.from(o),\"or\")}`)})}function Mqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>0?pr(u,`Forbidden ${QT(p.length,\"property\",\"properties\")} ${Ey(p,\"and\")}`):!0}})}function Uqe(t,e){var r;let o=new Set(t),a=lI[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Hr({test:(n,u)=>{let A=new Set(Object.keys(n)),p=[];for(let h of o)a(A,h,n)&&p.push(h);return p.length>1?pr(u,`Mutually exclusive properties ${Ey(p,\"and\")}`):!0}})}function cI(t,e,r,o){var a,n;let u=new Set((a=o?.ignore)!==null&&a!==void 0?a:[]),A=lI[(n=o?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=_qe[e],E=e===Gu.Forbids?\"or\":\"and\";return Hr({test:(I,v)=>{let x=new Set(Object.keys(I));if(!A(x,t,I)||u.has(I[t]))return!0;let C=[];for(let R of p)(A(x,R,I)&&!u.has(I[R]))!==h.expect&&C.push(R);return C.length>=1?pr(v,`Property \"${t}\" ${h.message} ${QT(C.length,\"property\",\"properties\")} ${Ey(C,E)}`):!0}})}var eqe,tqe,rqe,nqe,iqe,fV,oqe,hqe,TT,Kp,lI,Gu,_qe,Za=Et(()=>{eqe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;tqe=/^#[0-9a-f]{6}$/i,rqe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,nqe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,iqe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,fV=/^(?:[1-9]\\d{3}(-?)(?:(?:0[1-9]|1[0-2])\\1(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])\\1(?:29|30)|(?:0[13578]|1[02])(?:\\1)31|00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[0-5]))|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\\2)29|-?366))T(?:[01]\\d|2[0-3])(:?)[0-5]\\d(?:\\3[0-5]\\d)?(?:Z|[+-][01]\\d(?:\\3[0-5]\\d)?)$/;oqe=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);hqe=t=>Hr({test:(e,r)=>e instanceof t?!0:pr(r,`Expected an instance of ${t.name} (got ${qn(e)})`)}),TT=(t,{exclusive:e=!1}={})=>Hr({test:(r,o)=>{var a,n,u;let A=[],p=typeof o?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let I=typeof o?.errors<\"u\"?[]:void 0,v=typeof o?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:I,coercions:v,p:`${(a=o?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p?.push(I[0])}if(A.length===1){let[,h]=A[0];return typeof h<\"u\"&&((n=o?.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?pr(o,`Expected to match exactly a single predicate (matched ${A.join(\", \")})`):(u=o?.errors)===null||u===void 0||u.push(...p),!1}});Kp=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let o of e)r+=`\n- ${o}`}super(r)}};lI={missing:(t,e)=>t.has(e),undefined:(t,e,r)=>t.has(e)&&typeof r[e]<\"u\",nil:(t,e,r)=>t.has(e)&&r[e]!=null,falsy:(t,e,r)=>t.has(e)&&!!r[e]};(function(t){t.Forbids=\"Forbids\",t.Requires=\"Requires\"})(Gu||(Gu={}));_qe={[Gu.Forbids]:{expect:!1,message:\"forbids using\"},[Gu.Requires]:{expect:!0,message:\"requires using\"}}});var nt,Vp=Et(()=>{Ef();nt=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:u}=await Promise.resolve().then(()=>(Za(),Vo)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw iI(\"Invalid option schema\",p);for(let[,I]of h)I()}else if(r!=null)throw new Error(\"Invalid command schema\");let o=await this.execute();return typeof o<\"u\"?o:0}};nt.isOption=nI;nt.Default=[]});function va(t){PT&&console.log(t)}function yV(){let t={nodes:[]};for(let e=0;e<cn.CustomNode;++e)t.nodes.push($a());return t}function Hqe(t){let e=yV(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)CV(n)||e.nodes.push(Jqe(a.nodes[n],o));o+=a.nodes.length-cn.CustomNode+1}for(let a of r)wy(e,cn.InitialNode,a);return e}function Oc(t,e){return t.nodes.push(e),t.nodes.length-1}function qqe(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let I of h)E.some(({to:v})=>I.to===v)||E.push(I)}for(let[p,h]of A.dynamics)a.dynamics.some(([E,{to:I}])=>p===E&&h.to===I)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(cn.InitialNode)}function jqe(t,{prefix:e=\"\"}={}){if(PT){va(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)va(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function Gqe(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:cn.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];jqe(t,{prefix:\"  \"});let a=[Hn.StartOfInput,...e];for(let n=0;n<a.length;++n){let u=a[n],A=u===Hn.EndOfInput||u===Hn.EndOfPartialInput,p=n-1;va(`  Processing ${JSON.stringify(u)}`);let h=[];for(let{node:E,state:I}of o){va(`    Current node is ${E}`);let v=t.nodes[E];if(E===cn.ErrorNode){h.push({node:E,state:I});continue}console.assert(v.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let x=Object.prototype.hasOwnProperty.call(v.statics,u);if(!r||n<a.length-1||x)if(x){let C=v.statics[u];for(let{to:R,reducer:L}of C)h.push({node:R,state:typeof L<\"u\"?aS(UT,L,I,u,p):I}),va(`      Static transition to ${R} found`)}else va(\"      No static transition found\");else{let C=!1;for(let R of Object.keys(v.statics))if(!!R.startsWith(u)){if(u===R)for(let{to:L,reducer:U}of v.statics[R])h.push({node:L,state:typeof U<\"u\"?aS(UT,U,I,u,p):I}),va(`      Static transition to ${L} found`);else for(let{to:L}of v.statics[R])h.push({node:L,state:{...I,remainder:R.slice(u.length)}}),va(`      Static transition to ${L} found (partial match)`);C=!0}C||va(\"      No partial static transition found\")}if(!A)for(let[C,{to:R,reducer:L}]of v.dynamics)aS(zqe,C,I,u,p)&&(h.push({node:R,state:typeof L<\"u\"?aS(UT,L,I,u,p):I}),va(`      Dynamic transition to ${R} found (via ${C})`))}if(h.length===0&&A&&e.length===1)return[{node:cn.InitialNode,state:mV}];if(h.length===0)throw new yy(e,o.filter(({node:E})=>E!==cn.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===cn.ErrorNode))throw new yy(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));o=Wqe(h)}if(o.length>0){va(\"  Results:\");for(let n of o)va(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(\"  No results\");return o}function Yqe(t,e,{endToken:r=Hn.EndOfInput}={}){let o=Gqe(t,[...e,r]);return Kqe(e,o.map(({state:a})=>a))}function Wqe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function Kqe(t,e){let r=e.filter(v=>v.selectedIndex!==null),o=r.filter(v=>!v.partial);if(o.length>0&&(r=o),r.length===0)throw new Error;let a=r.filter(v=>v.selectedIndex===rd||v.requiredOptions.every(x=>x.some(C=>v.options.find(R=>R.name===C))));if(a.length===0)throw new yy(t,r.map(v=>({usage:v.candidateUsage,reason:null})));let n=0;for(let v of a)v.path.length>n&&(n=v.path.length);let u=a.filter(v=>v.path.length===n),A=v=>v.positionals.filter(({extra:x})=>!x).length+v.options.length,p=u.map(v=>({state:v,positionalCount:A(v)})),h=0;for(let{positionalCount:v}of p)v>h&&(h=v);let E=p.filter(({positionalCount:v})=>v===h).map(({state:v})=>v),I=Vqe(E);if(I.length>1)throw new eS(t,I.map(v=>v.candidateUsage));return I[0]}function Vqe(t){let e=[],r=[];for(let o of t)o.selectedIndex===rd?r.push(o):e.push(o);return r.length>0&&e.push({...mV,path:EV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function EV(t,e,...r){return e===void 0?Array.from(t):EV(t.filter((o,a)=>o===e[a]),...r)}function $a(){return{dynamics:[],shortcuts:[],statics:{}}}function CV(t){return t===cn.SuccessNode||t===cn.ErrorNode}function MT(t,e=0){return{to:CV(t.to)?t.to:t.to>=cn.CustomNode?t.to+e-cn.CustomNode+1:t.to+e,reducer:t.reducer}}function Jqe(t,e=0){let r=$a();for(let[o,a]of t.dynamics)r.dynamics.push([o,MT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(MT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>MT(n,e));return r}function Ps(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Jo(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function aS(t,e,r,o,a){if(Array.isArray(e)){let[n,...u]=e;return t[n](r,o,a,...u)}else return t[e](r,o,a)}var mV,zqe,UT,el,_T,Iy,lS=Et(()=>{$D();tS();mV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:rd,partial:!1,tokens:[]};zqe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===o,isBatchOption:(t,e,r,o)=>!t.ignoreOptions&&cV.test(e)&&[...e.slice(1)].every(a=>o.has(`-${a}`)),isBoundOption:(t,e,r,o,a)=>{let n=e.match(ST);return!t.ignoreOptions&&!!n&&ZD.test(n[1])&&o.has(n[1])&&a.filter(u=>u.nameSet.includes(n[1])).every(u=>u.allowBinding)},isNegatedOption:(t,e,r,o)=>!t.ignoreOptions&&e===`--no-${o.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&DT.test(e),isUnsupportedOption:(t,e,r,o)=>!t.ignoreOptions&&e.startsWith(\"-\")&&ZD.test(e)&&!o.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!ZD.test(e)},UT={setCandidateState:(t,e,r,o)=>({...t,...o}),setSelectedIndex:(t,e,r,o)=>({...t,selectedIndex:o}),setPartialIndex:(t,e,r,o)=>({...t,selectedIndex:o,partial:!0}),pushBatch:(t,e,r,o)=>{let a=t.options.slice(),n=t.tokens.slice();for(let u=1;u<e.length;++u){let A=o.get(`-${e[u]}`),p=u===1?[0,2]:[u,u+1];a.push({name:A,value:!0}),n.push({segmentIndex:r,type:\"option\",option:A,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,o,a]=e.match(ST),n=t.options.concat({name:o,value:a}),u=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,o.length],option:o},{segmentIndex:r,type:\"assign\",slice:[o.length,o.length+1]},{segmentIndex:r,type:\"value\",slice:[o.length+1,o.length+a.length+1]}]);return{...t,options:n,tokens:u}},pushPath:(t,e,r)=>{let o=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:o,tokens:a}},pushPositional:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtra:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let o=t.positionals.concat({value:e,extra:el}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:o,tokens:a}},pushTrue:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,o)=>{let a=t.options.concat({name:o,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:o});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,o)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var o;let a=t.options[t.options.length-1],n=t.options.slice(),u=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((o=a.value)!==null&&o!==void 0?o:[]).concat([e]),{...t,options:n,tokens:u}},setStringValue:(t,e,r)=>{let o=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return o.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,o)=>{let[,,a]=e.match(DT);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(o)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(o)}]}},setError:(t,e,r,o)=>e===Hn.EndOfInput||e===Hn.EndOfPartialInput?{...t,errorMessage:`${o}.`}:{...t,errorMessage:`${o} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),_T=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===el)throw new Error(\"Optional parameters cannot be declared when using .rest() or .proxy()\");if(!r&&this.arity.trailing.length>0)throw new Error(\"Optional parameters cannot be declared after the required trailing positional arguments\");!r&&this.arity.extra!==el?this.arity.extra.push(e):this.arity.extra!==el&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e=\"arg\",required:r=0}={}){if(this.arity.extra===el)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=el}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);let A=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,A);this.options.push({preferredName:A,nameSet:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{preferredName:u,nameSet:A,arity:p,hidden:h,description:E,required:I}of this.options){if(h)continue;let v=[];for(let C=0;C<p;++C)v.push(` #${C}`);let x=`${A.join(\",\")}${v.join(\"\")}`;!r&&E?a.push({preferredName:u,nameSet:A,definition:x,description:E,required:I}):o.push(I?`<${x}>`:`[${x}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push(\"...\"):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=yV(),r=cn.InitialNode,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.nameSet);r=Oc(e,$a()),Jo(e,cn.InitialNode,Hn.StartOfInput,r,[\"setCandidateState\",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Oc(e,$a());wy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let x=Oc(e,$a());Jo(e,p,A[v],x,\"pushPath\"),p=x}if(this.arity.leading.length>0||!this.arity.proxy){let v=Oc(e,$a());Ps(e,p,\"isHelp\",v,[\"useHelp\",this.cliIndex]),Ps(e,v,\"always\",v,\"pushExtra\"),Jo(e,v,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",rd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Jo(e,p,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,p,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let v=0;v<this.arity.leading.length;++v){let x=Oc(e,$a());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,x),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ps(e,h,\"isNotOptionLike\",x,\"pushPositional\"),h=x}let E=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Oc(e,$a());if(wy(e,h,v),this.arity.extra===el){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),Ps(e,h,n,x,\"pushExtraNoLimits\"),Ps(e,x,n,x,\"pushExtraNoLimits\"),wy(e,x,v)}else for(let x=0;x<this.arity.extra.length;++x){let C=Oc(e,$a());(!this.arity.proxy||x>0)&&this.registerOptions(e,C),Ps(e,E,n,C,\"pushExtra\"),wy(e,C,v),E=C}E=v}this.arity.trailing.length>0&&(Jo(e,E,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,E,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let I=E;for(let v=0;v<this.arity.trailing.length;++v){let x=Oc(e,$a());this.arity.proxy||this.registerOptions(e,x),v+1<this.arity.trailing.length&&(Jo(e,x,Hn.EndOfInput,cn.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Jo(e,x,Hn.EndOfPartialInput,cn.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Ps(e,I,\"isNotOptionLike\",x,\"pushPositional\"),I=x}Ps(e,I,n,cn.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Jo(e,I,Hn.EndOfInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Jo(e,I,Hn.EndOfPartialInput,cn.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ps(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),Ps(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),Ps(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),Ps(e,r,[\"isUnsupportedOption\",this.allOptionNames],cn.ErrorNode,[\"setError\",\"Unsupported option name\"]),Ps(e,r,[\"isInvalidOption\"],cn.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let o of this.options)if(o.arity===0)for(let a of o.nameSet)Ps(e,r,[\"isOption\",a],r,[\"pushTrue\",o.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&Ps(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",o.preferredName]);else{let a=Oc(e,$a());for(let n of o.nameSet)Ps(e,r,[\"isOption\",n],a,[\"pushUndefined\",o.preferredName]);for(let n=0;n<o.arity;++n){let u=Oc(e,$a());Jo(e,a,Hn.EndOfInput,cn.ErrorNode,\"setOptionArityError\"),Jo(e,a,Hn.EndOfPartialInput,cn.ErrorNode,\"setOptionArityError\"),Ps(e,a,\"isOptionLike\",cn.ErrorNode,\"setOptionArityError\");let A=o.arity===1?\"setStringValue\":\"pushStringValue\";Ps(e,a,\"isNotOptionLike\",u,A),a=u}wy(e,a,r)}}},Iy=class{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new Iy(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new _T(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:u}=a.compile();e.push(n),r.push(u)}let o=Hqe(e);return qqe(o),{machine:o,contexts:r,process:(a,{partial:n}={})=>{let u=n?Hn.EndOfPartialInput:Hn.EndOfInput;return Yqe(o,a,{endToken:u})}}}}});function IV(){return cS.default&&\"getColorDepth\"in cS.default.WriteStream.prototype?cS.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR===\"0\"?1:process.env.FORCE_COLOR===\"1\"||typeof process.stdout<\"u\"&&process.stdout.isTTY?8:1}function BV(t){let e=wV;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=ve(\"async_hooks\");e=wV=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var cS,wV,vV=Et(()=>{cS=$e(ve(\"tty\"),1)});var By,DV=Et(()=>{Vp();By=class extends nt{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new By(r);o.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":o.commands.push(Number(a.value));break;case\"-i\":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function bV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).runExit(o,a)}async function xV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=kV(t);return as.from(r,e).run(o,a)}function kV(t){let e,r,o,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof nt||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function PV(t){return t()}var SV,as,QV=Et(()=>{$D();lS();kT();vV();Vp();DV();SV=Symbol(\"clipanion/errorCommand\");as=class{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Iy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new as(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[nt.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<\"u\")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:o,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:u,process:A}=this.builder.compile(),p=A(o,{partial:n}),h={...as.defaultContext,...a};switch(p.selectedIndex){case rd:{let E=By.from(p,u);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=u[p.selectedIndex],I=this.registrations.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let v=new E;v.context=h,v.tokens=p.tokens,v.path=p.path;try{for(let[x,{transformer:C}]of I.specs.entries())v[x]=C(I.builder,x,p,h);return v}catch(x){throw x[SV]=v,x}}break}}async run(e,r){var o,a;let n,u={...as.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(E){return u.stdout.write(this.error(E,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,I)=>this.error(E,I),format:E=>this.format(E),process:(E,I)=>this.process(E,{...u,...I}),run:(E,I)=>this.run(E,{...u,...I}),usage:(E,I)=>this.usage(E,I)};let p=this.enableCapture&&(a=BV(u))!==null&&a!==void 0?a:PV,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return u.stdout.write(this.error(E,{colored:A,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:o}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),u=typeof e.usage.category<\"u\"?Do(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,A=typeof e.usage.description<\"u\"?Do(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?Do(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,I])=>[Do(E,{format:this.format(r),paragraphs:!1}),I.replace(/\\$0/g,this.binaryName)]):void 0;return{path:o,usage:a,category:u,description:A,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let o of this.registrations.keys()){let a=this.definition(o,{colored:e});!a||r.push(a)}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a=\"$ \"}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(x=>x.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof nt?e.constructor:e,A=\"\";if(u)if(o){let{description:p=\"\",details:h=\"\",examples:E=[]}=u.usage||{};p!==\"\"&&(A+=Do(p,{format:this.format(r),paragraphs:!1}).replace(/^./,x=>x.toUpperCase()),A+=`\n`),(h!==\"\"||E.length>0)&&(A+=`${this.format(r).header(\"Usage\")}\n`,A+=`\n`);let{usage:I,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${I}\n`,v.length>0){A+=`\n`,A+=`${this.format(r).header(\"Options\")}\n`;let x=v.reduce((C,R)=>Math.max(C,R.definition.length),0);A+=`\n`;for(let{definition:C,description:R}of v)A+=`  ${this.format(r).bold(C.padEnd(x))}    ${Do(R,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(A+=`\n`,A+=`${this.format(r).header(\"Details\")}\n`,A+=`\n`,A+=Do(h,{format:this.format(r),paragraphs:!0})),E.length>0){A+=`\n`,A+=`${this.format(r).header(\"Examples\")}\n`;for(let[x,C]of E)A+=`\n`,A+=Do(x,{format:this.format(r),paragraphs:!1}),A+=`${C.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(u);A+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[v,{index:x}]of this.registrations.entries()){if(typeof v.usage>\"u\")continue;let C=typeof v.usage.category<\"u\"?Do(v.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(C);typeof R>\"u\"&&p.set(C,R=[]);let{usage:L}=this.getUsageByIndex(x);R.push({commandClass:v,usage:L})}let h=Array.from(p.keys()).sort((v,x)=>v===null?-1:x===null?1:v.localeCompare(x,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",I=typeof this.binaryVersion<\"u\";E||I?(E&&I?A+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?A+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:A+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,A+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):A+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let v of h){let x=p.get(v).slice().sort((R,L)=>R.usage.localeCompare(L.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),C=v!==null?v.trim():\"General commands\";A+=`\n`,A+=`${this.format(r).header(`${C}`)}\n`;for(let{commandClass:R,usage:L}of x){let U=R.usage.description||\"undocumented\";A+=`\n`,A+=`  ${this.format(r).bold(L)}\n`,A+=`    ${Do(U,{format:this.format(r),paragraphs:!1})}`}}A+=`\n`,A+=Do(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return A}error(e,r){var o,{colored:a,command:n=(o=e[SV])!==null&&o!==void 0?o:null}=r===void 0?{}:r;(!e||typeof e!=\"object\"||!(\"stack\"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let u=\"\",A=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");A===\"Error\"&&(A=\"Internal Error\"),u+=`${this.format(a).error(A)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(u+=`\n`,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:as.defaultContext.colorDepth>1)?uV:AV}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};as.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:IV()}});var uI,FV=Et(()=>{Vp();uI=class extends nt{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};uI.paths=[[\"--clipanion=definitions\"]]});var AI,RV=Et(()=>{Vp();AI=class extends nt{async execute(){this.context.stdout.write(this.cli.usage())}};AI.paths=[[\"-h\"],[\"--help\"]]});function uS(t={}){return Ko({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var HT=Et(()=>{Ef()});var fI,TV=Et(()=>{Vp();HT();fI=class extends nt{constructor(){super(...arguments),this.args=uS()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};fI.paths=[[\"--clipanion=tokens\"]]});var pI,NV=Et(()=>{Vp();pI=class extends nt{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};pI.paths=[[\"-v\"],[\"--version\"]]});var qT={};Vt(qT,{DefinitionsCommand:()=>uI,HelpCommand:()=>AI,TokensCommand:()=>fI,VersionCommand:()=>pI});var LV=Et(()=>{FV();RV();TV();NV()});function OV(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let I,v=typeof o<\"u\"?[...o]:void 0;for(let{name:x,value:C}of E.options)!A.has(x)||(I=x,v=v??[],v.push(C));return typeof v<\"u\"?nd(I??h,v,a.validator):v}})}var MV=Et(()=>{Ef()});function UV(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E=v);return E}})}var _V=Et(()=>{Ef()});function HV(t,e,r){let[o,a]=ju(e,r??{}),n=t.split(\",\"),u=new Set(n);return Ko({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let E=o;for(let{name:I,value:v}of h.options)!u.has(I)||(E??(E=0),v?E+=1:E=0);return E}})}var qV=Et(()=>{Ef()});function jV(t={}){return Ko({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var GV=Et(()=>{lS();Ef()});function Xqe(t,e,r){let[o,a]=ju(e,r??{}),{arity:n=1}=a,u=t.split(\",\"),A=new Set(u);return Ko({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,I){let v,x=o;typeof a.env<\"u\"&&I.env[a.env]&&(v=a.env,x=I.env[a.env]);for(let{name:C,value:R}of E.options)!A.has(C)||(v=C,x=R);return typeof x==\"string\"?nd(v??h,x,a.validator):x}})}function Zqe(t={}){let{required:e=!0}=t;return Ko({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===el||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return nd((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function YV(t,...e){return typeof t==\"string\"?Xqe(t,...e):Zqe(t)}var WV=Et(()=>{lS();Ef()});var ge={};Vt(ge,{Array:()=>OV,Boolean:()=>UV,Counter:()=>HV,Proxy:()=>uS,Rest:()=>jV,String:()=>YV,applyValidator:()=>nd,cleanValidationError:()=>rS,formatError:()=>iI,isOptionSymbol:()=>nI,makeCommandOption:()=>Ko,rerouteArguments:()=>ju});var KV=Et(()=>{Ef();HT();MV();_V();qV();GV();WV()});var hI={};Vt(hI,{Builtins:()=>qT,Cli:()=>as,Command:()=>nt,Option:()=>ge,UsageError:()=>it,formatMarkdownish:()=>Do,run:()=>xV,runExit:()=>bV});var qt=Et(()=>{tS();kT();Vp();QV();LV();KV()});var VV=_((Pkt,$qe)=>{$qe.exports={name:\"dotenv\",version:\"16.3.1\",description:\"Loads environment variables from .env file\",main:\"lib/main.js\",types:\"lib/main.d.ts\",exports:{\".\":{types:\"./lib/main.d.ts\",require:\"./lib/main.js\",default:\"./lib/main.js\"},\"./config\":\"./config.js\",\"./config.js\":\"./config.js\",\"./lib/env-options\":\"./lib/env-options.js\",\"./lib/env-options.js\":\"./lib/env-options.js\",\"./lib/cli-options\":\"./lib/cli-options.js\",\"./lib/cli-options.js\":\"./lib/cli-options.js\",\"./package.json\":\"./package.json\"},scripts:{\"dts-check\":\"tsc --project tests/types/tsconfig.json\",lint:\"standard\",\"lint-readme\":\"standard-markdown\",pretest:\"npm run lint && npm run dts-check\",test:\"tap tests/*.js --100 -Rspec\",prerelease:\"npm test\",release:\"standard-version\"},repository:{type:\"git\",url:\"git://github.com/motdotla/dotenv.git\"},funding:\"https://github.com/motdotla/dotenv?sponsor=1\",keywords:[\"dotenv\",\"env\",\".env\",\"environment\",\"variables\",\"config\",\"settings\"],readmeFilename:\"README.md\",license:\"BSD-2-Clause\",devDependencies:{\"@definitelytyped/dtslint\":\"^0.0.133\",\"@types/node\":\"^18.11.3\",decache:\"^4.6.1\",sinon:\"^14.0.1\",standard:\"^17.0.0\",\"standard-markdown\":\"^7.1.0\",\"standard-version\":\"^9.5.0\",tap:\"^16.3.0\",tar:\"^6.1.11\",typescript:\"^4.8.4\"},engines:{node:\">=12\"},browser:{fs:!1}}});var ZV=_((bkt,Cf)=>{var JV=ve(\"fs\"),GT=ve(\"path\"),eje=ve(\"os\"),tje=ve(\"crypto\"),rje=VV(),YT=rje.version,nje=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function ije(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let o;for(;(o=nje.exec(r))!=null;){let a=o[1],n=o[2]||\"\";n=n.trim();let u=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),u==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function sje(t){let e=XV(t),r=bs.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let o=zV(t).split(\",\"),a=o.length,n;for(let u=0;u<a;u++)try{let A=o[u].trim(),p=lje(r,A);n=bs.decrypt(p.ciphertext,p.key);break}catch(A){if(u+1>=a)throw A}return bs.parse(n)}function oje(t){console.log(`[dotenv@${YT}][INFO] ${t}`)}function aje(t){console.log(`[dotenv@${YT}][WARN] ${t}`)}function jT(t){console.log(`[dotenv@${YT}][DEBUG] ${t}`)}function zV(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:\"\"}function lje(t,e){let r;try{r=new URL(e)}catch(A){throw A.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):A}let o=r.password;if(!o)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,u=t.parsed[n];if(!u)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:u,key:o}}function XV(t){let e=GT.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function cje(t){return t[0]===\"~\"?GT.join(eje.homedir(),t.slice(1)):t}function uje(t){oje(\"Loading env from encrypted .env.vault\");let e=bs._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),bs.populate(r,e,t),{parsed:e}}function Aje(t){let e=GT.resolve(process.cwd(),\".env\"),r=\"utf8\",o=Boolean(t&&t.debug);t&&(t.path!=null&&(e=cje(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=bs.parse(JV.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),bs.populate(n,a,t),{parsed:a}}catch(a){return o&&jT(`Failed to load ${e} ${a.message}`),{error:a}}}function fje(t){let e=XV(t);return zV(t).length===0?bs.configDotenv(t):JV.existsSync(e)?bs._configVault(t):(aje(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),bs.configDotenv(t))}function pje(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),o=Buffer.from(t,\"base64\"),a=o.slice(0,12),n=o.slice(-16);o=o.slice(12,-16);try{let u=tje.createDecipheriv(\"aes-256-gcm\",r,a);return u.setAuthTag(n),`${u.update(o)}${u.final()}`}catch(u){let A=u instanceof RangeError,p=u.message===\"Invalid key length\",h=u.message===\"Unsupported state or unable to authenticate data\";if(A||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",u.code),console.error(\"Error: \",u.message),u}}function hje(t,e,r={}){let o=Boolean(r&&r.debug),a=Boolean(r&&r.override);if(typeof e!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),o&&jT(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var bs={configDotenv:Aje,_configVault:uje,_parseVault:sje,config:fje,decrypt:pje,parse:ije,populate:hje};Cf.exports.configDotenv=bs.configDotenv;Cf.exports._configVault=bs._configVault;Cf.exports._parseVault=bs._parseVault;Cf.exports.config=bs.config;Cf.exports.decrypt=bs.decrypt;Cf.exports.parse=bs.parse;Cf.exports.populate=bs.populate;Cf.exports=bs});var eJ=_((xkt,$V)=>{\"use strict\";$V.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var id=_((kkt,WT)=>{\"use strict\";var gje=eJ(),tJ=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let E=gje(A,...h);p(E),E.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};WT.exports=tJ;WT.exports.default=tJ});function Wu(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function AS(t){let e=Number(t.slice(2));if(typeof wr[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var wr,fS=Et(()=>{wr=(Oe=>(Oe[Oe.UNNAMED=0]=\"UNNAMED\",Oe[Oe.EXCEPTION=1]=\"EXCEPTION\",Oe[Oe.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Oe[Oe.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Oe[Oe.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Oe[Oe.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Oe[Oe.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Oe[Oe.MUST_BUILD=7]=\"MUST_BUILD\",Oe[Oe.MUST_REBUILD=8]=\"MUST_REBUILD\",Oe[Oe.BUILD_FAILED=9]=\"BUILD_FAILED\",Oe[Oe.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Oe[Oe.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Oe[Oe.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Oe[Oe.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Oe[Oe.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Oe[Oe.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Oe[Oe.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Oe[Oe.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Oe[Oe.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Oe[Oe.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Oe[Oe.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Oe[Oe.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Oe[Oe.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Oe[Oe.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Oe[Oe.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Oe[Oe.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Oe[Oe.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Oe[Oe.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Oe[Oe.FETCH_FAILED=30]=\"FETCH_FAILED\",Oe[Oe.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Oe[Oe.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Oe[Oe.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Oe[Oe.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Oe[Oe.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Oe[Oe.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Oe[Oe.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Oe[Oe.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Oe[Oe.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Oe[Oe.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Oe[Oe.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Oe[Oe.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Oe[Oe.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Oe[Oe.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Oe[Oe.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Oe[Oe.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Oe[Oe.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Oe[Oe.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Oe[Oe.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Oe[Oe.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Oe[Oe.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Oe[Oe.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Oe[Oe.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Oe[Oe.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Oe[Oe.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Oe[Oe.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Oe[Oe.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Oe[Oe.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Oe[Oe.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Oe[Oe.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Oe[Oe.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Oe[Oe.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Oe[Oe.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Oe[Oe.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Oe[Oe.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Oe[Oe.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Oe[Oe.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Oe[Oe.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Oe[Oe.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Oe[Oe.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Oe[Oe.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Oe[Oe.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Oe[Oe.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Oe[Oe.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Oe[Oe.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Oe[Oe.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Oe[Oe.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Oe[Oe.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Oe[Oe.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Oe[Oe.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Oe[Oe.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Oe[Oe.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Oe[Oe.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Oe[Oe.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Oe[Oe.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Oe[Oe.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Oe[Oe.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Oe[Oe.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Oe[Oe.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Oe[Oe.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Oe))(wr||{})});var gI=_((Fkt,rJ)=>{var dje=\"2.0.0\",mje=Number.MAX_SAFE_INTEGER||9007199254740991,yje=16,Eje=256-6,Cje=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];rJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:yje,MAX_SAFE_BUILD_LENGTH:Eje,MAX_SAFE_INTEGER:mje,RELEASE_TYPES:Cje,SEMVER_SPEC_VERSION:dje,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var dI=_((Rkt,nJ)=>{var wje=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};nJ.exports=wje});var vy=_((wf,iJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:KT,MAX_SAFE_BUILD_LENGTH:Ije,MAX_LENGTH:Bje}=gI(),vje=dI();wf=iJ.exports={};var Dje=wf.re=[],Sje=wf.safeRe=[],lr=wf.src=[],cr=wf.t={},Pje=0,VT=\"[a-zA-Z0-9-]\",bje=[[\"\\\\s\",1],[\"\\\\d\",Bje],[VT,Ije]],xje=t=>{for(let[e,r]of bje)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let o=xje(e),a=Pje++;vje(t,a,e),cr[t]=a,lr[a]=e,Dje[a]=new RegExp(e,r?\"g\":void 0),Sje[a]=new RegExp(o,r?\"g\":void 0)};Jr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Jr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Jr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${VT}*`);Jr(\"MAINVERSION\",`(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})\\\\.(${lr[cr.NUMERICIDENTIFIER]})`);Jr(\"MAINVERSIONLOOSE\",`(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})\\\\.(${lr[cr.NUMERICIDENTIFIERLOOSE]})`);Jr(\"PRERELEASEIDENTIFIER\",`(?:${lr[cr.NUMERICIDENTIFIER]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${lr[cr.NUMERICIDENTIFIERLOOSE]}|${lr[cr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASE\",`(?:-(${lr[cr.PRERELEASEIDENTIFIER]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIER]})*))`);Jr(\"PRERELEASELOOSE\",`(?:-?(${lr[cr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${lr[cr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr(\"BUILDIDENTIFIER\",`${VT}+`);Jr(\"BUILD\",`(?:\\\\+(${lr[cr.BUILDIDENTIFIER]}(?:\\\\.${lr[cr.BUILDIDENTIFIER]})*))`);Jr(\"FULLPLAIN\",`v?${lr[cr.MAINVERSION]}${lr[cr.PRERELEASE]}?${lr[cr.BUILD]}?`);Jr(\"FULL\",`^${lr[cr.FULLPLAIN]}$`);Jr(\"LOOSEPLAIN\",`[v=\\\\s]*${lr[cr.MAINVERSIONLOOSE]}${lr[cr.PRERELEASELOOSE]}?${lr[cr.BUILD]}?`);Jr(\"LOOSE\",`^${lr[cr.LOOSEPLAIN]}$`);Jr(\"GTLT\",\"((?:<|>)?=?)\");Jr(\"XRANGEIDENTIFIERLOOSE\",`${lr[cr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Jr(\"XRANGEIDENTIFIER\",`${lr[cr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Jr(\"XRANGEPLAIN\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIER]})(?:${lr[cr.PRERELEASE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${lr[cr.XRANGEIDENTIFIERLOOSE]})(?:${lr[cr.PRERELEASELOOSE]})?${lr[cr.BUILD]}?)?)?`);Jr(\"XRANGE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAIN]}$`);Jr(\"XRANGELOOSE\",`^${lr[cr.GTLT]}\\\\s*${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COERCE\",`(^|[^\\\\d])(\\\\d{1,${KT}})(?:\\\\.(\\\\d{1,${KT}}))?(?:\\\\.(\\\\d{1,${KT}}))?(?:$|[^\\\\d])`);Jr(\"COERCERTL\",lr[cr.COERCE],!0);Jr(\"LONETILDE\",\"(?:~>?)\");Jr(\"TILDETRIM\",`(\\\\s*)${lr[cr.LONETILDE]}\\\\s+`,!0);wf.tildeTrimReplace=\"$1~\";Jr(\"TILDE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"TILDELOOSE\",`^${lr[cr.LONETILDE]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"LONECARET\",\"(?:\\\\^)\");Jr(\"CARETTRIM\",`(\\\\s*)${lr[cr.LONECARET]}\\\\s+`,!0);wf.caretTrimReplace=\"$1^\";Jr(\"CARET\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAIN]}$`);Jr(\"CARETLOOSE\",`^${lr[cr.LONECARET]}${lr[cr.XRANGEPLAINLOOSE]}$`);Jr(\"COMPARATORLOOSE\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]})$|^$`);Jr(\"COMPARATOR\",`^${lr[cr.GTLT]}\\\\s*(${lr[cr.FULLPLAIN]})$|^$`);Jr(\"COMPARATORTRIM\",`(\\\\s*)${lr[cr.GTLT]}\\\\s*(${lr[cr.LOOSEPLAIN]}|${lr[cr.XRANGEPLAIN]})`,!0);wf.comparatorTrimReplace=\"$1$2$3\";Jr(\"HYPHENRANGE\",`^\\\\s*(${lr[cr.XRANGEPLAIN]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAIN]})\\\\s*$`);Jr(\"HYPHENRANGELOOSE\",`^\\\\s*(${lr[cr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${lr[cr.XRANGEPLAINLOOSE]})\\\\s*$`);Jr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Jr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Jr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var pS=_((Tkt,sJ)=>{var kje=Object.freeze({loose:!0}),Qje=Object.freeze({}),Fje=t=>t?typeof t!=\"object\"?kje:t:Qje;sJ.exports=Fje});var JT=_((Nkt,lJ)=>{var oJ=/^[0-9]+$/,aJ=(t,e)=>{let r=oJ.test(t),o=oJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},Rje=(t,e)=>aJ(e,t);lJ.exports={compareIdentifiers:aJ,rcompareIdentifiers:Rje}});var So=_((Lkt,fJ)=>{var hS=dI(),{MAX_LENGTH:cJ,MAX_SAFE_INTEGER:gS}=gI(),{safeRe:uJ,t:AJ}=vy(),Tje=pS(),{compareIdentifiers:Dy}=JT(),tl=class{constructor(e,r){if(r=Tje(r),e instanceof tl){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof e}\".`);if(e.length>cJ)throw new TypeError(`version is longer than ${cJ} characters`);hS(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?uJ[AJ.LOOSE]:uJ[AJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>gS||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>gS||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>gS||this.patch<0)throw new TypeError(\"Invalid patch version\");o[4]?this.prerelease=o[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<gS)return n}return a}):this.prerelease=[],this.build=o[5]?o[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(e){if(hS(\"SemVer.compare\",this.version,this.options,e),!(e instanceof tl)){if(typeof e==\"string\"&&e===this.version)return 0;e=new tl(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),Dy(this.major,e.major)||Dy(this.minor,e.minor)||Dy(this.patch,e.patch)}comparePre(e){if(e instanceof tl||(e=new tl(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let o=this.prerelease[r],a=e.prerelease[r];if(hS(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(hS(\"prerelease compare\",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Dy(o,a)}while(++r)}inc(e,r,o){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,o);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,o);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,o),this.inc(\"pre\",r,o);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(o)?1:0;if(!r&&o===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&o===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];o===!1&&(n=[r]),Dy(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};fJ.exports=tl});var sd=_((Okt,hJ)=>{var pJ=So(),Nje=(t,e,r=!1)=>{if(t instanceof pJ)return t;try{return new pJ(t,e)}catch(o){if(!r)return null;throw o}};hJ.exports=Nje});var dJ=_((Mkt,gJ)=>{var Lje=sd(),Oje=(t,e)=>{let r=Lje(t,e);return r?r.version:null};gJ.exports=Oje});var yJ=_((Ukt,mJ)=>{var Mje=sd(),Uje=(t,e)=>{let r=Mje(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};mJ.exports=Uje});var wJ=_((_kt,CJ)=>{var EJ=So(),_je=(t,e,r,o,a)=>{typeof r==\"string\"&&(a=o,o=r,r=void 0);try{return new EJ(t instanceof EJ?t.version:t,r).inc(e,o,a).version}catch{return null}};CJ.exports=_je});var vJ=_((Hkt,BJ)=>{var IJ=sd(),Hje=(t,e)=>{let r=IJ(t,null,!0),o=IJ(e,null,!0),a=r.compare(o);if(a===0)return null;let n=a>0,u=n?r:o,A=n?o:r,p=!!u.prerelease.length;if(!!A.prerelease.length&&!p)return!A.patch&&!A.minor?\"major\":u.patch?\"patch\":u.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==o.major?E+\"major\":r.minor!==o.minor?E+\"minor\":r.patch!==o.patch?E+\"patch\":\"prerelease\"};BJ.exports=Hje});var SJ=_((qkt,DJ)=>{var qje=So(),jje=(t,e)=>new qje(t,e).major;DJ.exports=jje});var bJ=_((jkt,PJ)=>{var Gje=So(),Yje=(t,e)=>new Gje(t,e).minor;PJ.exports=Yje});var kJ=_((Gkt,xJ)=>{var Wje=So(),Kje=(t,e)=>new Wje(t,e).patch;xJ.exports=Kje});var FJ=_((Ykt,QJ)=>{var Vje=sd(),Jje=(t,e)=>{let r=Vje(t,e);return r&&r.prerelease.length?r.prerelease:null};QJ.exports=Jje});var Ll=_((Wkt,TJ)=>{var RJ=So(),zje=(t,e,r)=>new RJ(t,r).compare(new RJ(e,r));TJ.exports=zje});var LJ=_((Kkt,NJ)=>{var Xje=Ll(),Zje=(t,e,r)=>Xje(e,t,r);NJ.exports=Zje});var MJ=_((Vkt,OJ)=>{var $je=Ll(),eGe=(t,e)=>$je(t,e,!0);OJ.exports=eGe});var dS=_((Jkt,_J)=>{var UJ=So(),tGe=(t,e,r)=>{let o=new UJ(t,r),a=new UJ(e,r);return o.compare(a)||o.compareBuild(a)};_J.exports=tGe});var qJ=_((zkt,HJ)=>{var rGe=dS(),nGe=(t,e)=>t.sort((r,o)=>rGe(r,o,e));HJ.exports=nGe});var GJ=_((Xkt,jJ)=>{var iGe=dS(),sGe=(t,e)=>t.sort((r,o)=>iGe(o,r,e));jJ.exports=sGe});var mI=_((Zkt,YJ)=>{var oGe=Ll(),aGe=(t,e,r)=>oGe(t,e,r)>0;YJ.exports=aGe});var mS=_(($kt,WJ)=>{var lGe=Ll(),cGe=(t,e,r)=>lGe(t,e,r)<0;WJ.exports=cGe});var zT=_((eQt,KJ)=>{var uGe=Ll(),AGe=(t,e,r)=>uGe(t,e,r)===0;KJ.exports=AGe});var XT=_((tQt,VJ)=>{var fGe=Ll(),pGe=(t,e,r)=>fGe(t,e,r)!==0;VJ.exports=pGe});var yS=_((rQt,JJ)=>{var hGe=Ll(),gGe=(t,e,r)=>hGe(t,e,r)>=0;JJ.exports=gGe});var ES=_((nQt,zJ)=>{var dGe=Ll(),mGe=(t,e,r)=>dGe(t,e,r)<=0;zJ.exports=mGe});var ZT=_((iQt,XJ)=>{var yGe=zT(),EGe=XT(),CGe=mI(),wGe=yS(),IGe=mS(),BGe=ES(),vGe=(t,e,r,o)=>{switch(e){case\"===\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t===r;case\"!==\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t!==r;case\"\":case\"=\":case\"==\":return yGe(t,r,o);case\"!=\":return EGe(t,r,o);case\">\":return CGe(t,r,o);case\">=\":return wGe(t,r,o);case\"<\":return IGe(t,r,o);case\"<=\":return BGe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};XJ.exports=vGe});var $J=_((sQt,ZJ)=>{var DGe=So(),SGe=sd(),{safeRe:CS,t:wS}=vy(),PGe=(t,e)=>{if(t instanceof DGe)return t;if(typeof t==\"number\"&&(t=String(t)),typeof t!=\"string\")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(CS[wS.COERCE]);else{let o;for(;(o=CS[wS.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),CS[wS.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;CS[wS.COERCERTL].lastIndex=-1}return r===null?null:SGe(`${r[2]}.${r[3]||\"0\"}.${r[4]||\"0\"}`,e)};ZJ.exports=PGe});var tz=_((oQt,ez)=>{\"use strict\";ez.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var IS=_((aQt,rz)=>{\"use strict\";rz.exports=Cn;Cn.Node=od;Cn.create=Cn;function Cn(t){var e=this;if(e instanceof Cn||(e=new Cn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach==\"function\")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}Cn.prototype.removeNode=function(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};Cn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};Cn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};Cn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)xGe(this,arguments[t]);return this.length};Cn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)kGe(this,arguments[t]);return this.length};Cn.prototype.pop=function(){if(!!this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};Cn.prototype.shift=function(){if(!!this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};Cn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};Cn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};Cn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};Cn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};Cn.prototype.map=function(t,e){e=e||this;for(var r=new Cn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};Cn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Cn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};Cn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};Cn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};Cn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Cn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Cn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};Cn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Cn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};Cn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=bGe(this,a,r[o]);return n};Cn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function bGe(t,e,r){var o=e===t.head?new od(r,null,e,t):new od(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function xGe(t,e){t.tail=new od(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function kGe(t,e){t.head=new od(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function od(t,e,r,o){if(!(this instanceof od))return new od(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{tz()(Cn)}catch{}});var az=_((lQt,oz)=>{\"use strict\";var QGe=IS(),ad=Symbol(\"max\"),Bf=Symbol(\"length\"),Sy=Symbol(\"lengthCalculator\"),EI=Symbol(\"allowStale\"),ld=Symbol(\"maxAge\"),If=Symbol(\"dispose\"),nz=Symbol(\"noDisposeOnSet\"),xs=Symbol(\"lruList\"),Mc=Symbol(\"cache\"),sz=Symbol(\"updateAgeOnGet\"),$T=()=>1,tN=class{constructor(e){if(typeof e==\"number\"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!=\"number\"||e.max<0))throw new TypeError(\"max must be a non-negative number\");let r=this[ad]=e.max||1/0,o=e.length||$T;if(this[Sy]=typeof o!=\"function\"?$T:o,this[EI]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[ld]=e.maxAge||0,this[If]=e.dispose,this[nz]=e.noDisposeOnSet||!1,this[sz]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!=\"number\"||e<0)throw new TypeError(\"max must be a non-negative number\");this[ad]=e||1/0,yI(this)}get max(){return this[ad]}set allowStale(e){this[EI]=!!e}get allowStale(){return this[EI]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[ld]=e,yI(this)}get maxAge(){return this[ld]}set lengthCalculator(e){typeof e!=\"function\"&&(e=$T),e!==this[Sy]&&(this[Sy]=e,this[Bf]=0,this[xs].forEach(r=>{r.length=this[Sy](r.value,r.key),this[Bf]+=r.length})),yI(this)}get lengthCalculator(){return this[Sy]}get length(){return this[Bf]}get itemCount(){return this[xs].length}rforEach(e,r){r=r||this;for(let o=this[xs].tail;o!==null;){let a=o.prev;iz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[xs].head;o!==null;){let a=o.next;iz(this,e,o,r),o=a}}keys(){return this[xs].toArray().map(e=>e.key)}values(){return this[xs].toArray().map(e=>e.value)}reset(){this[If]&&this[xs]&&this[xs].length&&this[xs].forEach(e=>this[If](e.key,e.value)),this[Mc]=new Map,this[xs]=new QGe,this[Bf]=0}dump(){return this[xs].map(e=>BS(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[xs]}set(e,r,o){if(o=o||this[ld],o&&typeof o!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=o?Date.now():0,n=this[Sy](r,e);if(this[Mc].has(e)){if(n>this[ad])return Py(this,this[Mc].get(e)),!1;let p=this[Mc].get(e).value;return this[If]&&(this[nz]||this[If](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[Bf]+=n-p.length,p.length=n,this.get(e),yI(this),!0}let u=new rN(e,r,n,a,o);return u.length>this[ad]?(this[If]&&this[If](e,r),!1):(this[Bf]+=u.length,this[xs].unshift(u),this[Mc].set(e,this[xs].head),yI(this),!0)}has(e){if(!this[Mc].has(e))return!1;let r=this[Mc].get(e).value;return!BS(this,r)}get(e){return eN(this,e,!0)}peek(e){return eN(this,e,!1)}pop(){let e=this[xs].tail;return e?(Py(this,e),e.value):null}del(e){Py(this,this[Mc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Mc].forEach((e,r)=>eN(this,r,!1))}},eN=(t,e,r)=>{let o=t[Mc].get(e);if(o){let a=o.value;if(BS(t,a)){if(Py(t,o),!t[EI])return}else r&&(t[sz]&&(o.value.now=Date.now()),t[xs].unshiftNode(o));return a.value}},BS=(t,e)=>{if(!e||!e.maxAge&&!t[ld])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ld]&&r>t[ld]},yI=t=>{if(t[Bf]>t[ad])for(let e=t[xs].tail;t[Bf]>t[ad]&&e!==null;){let r=e.prev;Py(t,e),e=r}},Py=(t,e)=>{if(e){let r=e.value;t[If]&&t[If](r.key,r.value),t[Bf]-=r.length,t[Mc].delete(r.key),t[xs].removeNode(e)}},rN=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},iz=(t,e,r,o)=>{let a=r.value;BS(t,a)&&(Py(t,r),t[EI]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};oz.exports=tN});var Ol=_((cQt,Az)=>{var cd=class{constructor(e,r){if(r=RGe(r),e instanceof cd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cd(e.raw,r);if(e instanceof nN)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!cz(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&_Ge(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){let o=((this.options.includePrerelease&&MGe)|(this.options.loose&&UGe))+\":\"+e,a=lz.get(o);if(a)return a;let n=this.options.loose,u=n?Da[zo.HYPHENRANGELOOSE]:Da[zo.HYPHENRANGE];e=e.replace(u,zGe(this.options.includePrerelease)),ci(\"hyphen replace\",e),e=e.replace(Da[zo.COMPARATORTRIM],NGe),ci(\"comparator trim\",e),e=e.replace(Da[zo.TILDETRIM],LGe),ci(\"tilde trim\",e),e=e.replace(Da[zo.CARETTRIM],OGe),ci(\"caret trim\",e);let A=e.split(\" \").map(I=>HGe(I,this.options)).join(\" \").split(/\\s+/).map(I=>JGe(I,this.options));n&&(A=A.filter(I=>(ci(\"loose invalid filter\",I,this.options),!!I.match(Da[zo.COMPARATORLOOSE])))),ci(\"range list\",A);let p=new Map,h=A.map(I=>new nN(I,this.options));for(let I of h){if(cz(I))return[I];p.set(I.value,I)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return lz.set(o,E),E}intersects(e,r){if(!(e instanceof cd))throw new TypeError(\"a Range is required\");return this.set.some(o=>uz(o,r)&&e.set.some(a=>uz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new TGe(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(XGe(this.set[r],e,this.options))return!0;return!1}};Az.exports=cd;var FGe=az(),lz=new FGe({max:1e3}),RGe=pS(),nN=CI(),ci=dI(),TGe=So(),{safeRe:Da,t:zo,comparatorTrimReplace:NGe,tildeTrimReplace:LGe,caretTrimReplace:OGe}=vy(),{FLAG_INCLUDE_PRERELEASE:MGe,FLAG_LOOSE:UGe}=gI(),cz=t=>t.value===\"<0.0.0-0\",_Ge=t=>t.value===\"\",uz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},HGe=(t,e)=>(ci(\"comp\",t,e),t=GGe(t,e),ci(\"caret\",t),t=qGe(t,e),ci(\"tildes\",t),t=WGe(t,e),ci(\"xrange\",t),t=VGe(t,e),ci(\"stars\",t),t),Xo=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",qGe=(t,e)=>t.trim().split(/\\s+/).map(r=>jGe(r,e)).join(\" \"),jGe=(t,e)=>{let r=e.loose?Da[zo.TILDELOOSE]:Da[zo.TILDE];return t.replace(r,(o,a,n,u,A)=>{ci(\"tilde\",t,o,a,n,u,A);let p;return Xo(a)?p=\"\":Xo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Xo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(ci(\"replaceTilde pr\",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,ci(\"tilde return\",p),p})},GGe=(t,e)=>t.trim().split(/\\s+/).map(r=>YGe(r,e)).join(\" \"),YGe=(t,e)=>{ci(\"caret\",t,e);let r=e.loose?Da[zo.CARETLOOSE]:Da[zo.CARET],o=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,u,A,p)=>{ci(\"caret\",t,a,n,u,A,p);let h;return Xo(n)?h=\"\":Xo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Xo(A)?n===\"0\"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(ci(\"replaceCaret pr\",p),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(ci(\"no pr\"),n===\"0\"?u===\"0\"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),ci(\"caret return\",h),h})},WGe=(t,e)=>(ci(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>KGe(r,e)).join(\" \")),KGe=(t,e)=>{t=t.trim();let r=e.loose?Da[zo.XRANGELOOSE]:Da[zo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{ci(\"xRange\",t,o,a,n,u,A,p);let h=Xo(n),E=h||Xo(u),I=E||Xo(A),v=I;return a===\"=\"&&v&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?o=\"<0.0.0-0\":o=\"*\":a&&v?(E&&(u=0),A=0,a===\">\"?(a=\">=\",E?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:u=+u+1),a===\"<\"&&(p=\"-0\"),o=`${a+n}.${u}.${A}${p}`):E?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:I&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),ci(\"xRange return\",o),o})},VGe=(t,e)=>(ci(\"replaceStars\",t,e),t.trim().replace(Da[zo.STAR],\"\")),JGe=(t,e)=>(ci(\"replaceGTE0\",t,e),t.trim().replace(Da[e.includePrerelease?zo.GTE0PRE:zo.GTE0],\"\")),zGe=t=>(e,r,o,a,n,u,A,p,h,E,I,v,x)=>(Xo(o)?r=\"\":Xo(a)?r=`>=${o}.0.0${t?\"-0\":\"\"}`:Xo(n)?r=`>=${o}.${a}.0${t?\"-0\":\"\"}`:u?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,Xo(h)?p=\"\":Xo(E)?p=`<${+h+1}.0.0-0`:Xo(I)?p=`<${h}.${+E+1}.0-0`:v?p=`<=${h}.${E}.${I}-${v}`:t?p=`<${h}.${E}.${+I+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),XGe=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(ci(t[o].semver),t[o].semver!==nN.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var CI=_((uQt,mz)=>{var wI=Symbol(\"SemVer ANY\"),by=class{static get ANY(){return wI}constructor(e,r){if(r=fz(r),e instanceof by){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),sN(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===wI?this.value=\"\":this.value=this.operator+this.semver.version,sN(\"comp\",this)}parse(e){let r=this.options.loose?pz[hz.COMPARATORLOOSE]:pz[hz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),o[2]?this.semver=new gz(o[2],this.options.loose):this.semver=wI}toString(){return this.value}test(e){if(sN(\"Comparator.test\",e,this.options.loose),this.semver===wI||e===wI)return!0;if(typeof e==\"string\")try{e=new gz(e,this.options)}catch{return!1}return iN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof by))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new dz(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new dz(this.value,r).test(e.semver):(r=fz(r),r.includePrerelease&&(this.value===\"<0.0.0-0\"||e.value===\"<0.0.0-0\")||!r.includePrerelease&&(this.value.startsWith(\"<0.0.0\")||e.value.startsWith(\"<0.0.0\"))?!1:!!(this.operator.startsWith(\">\")&&e.operator.startsWith(\">\")||this.operator.startsWith(\"<\")&&e.operator.startsWith(\"<\")||this.semver.version===e.semver.version&&this.operator.includes(\"=\")&&e.operator.includes(\"=\")||iN(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||iN(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};mz.exports=by;var fz=pS(),{safeRe:pz,t:hz}=vy(),iN=ZT(),sN=dI(),gz=So(),dz=Ol()});var II=_((AQt,yz)=>{var ZGe=Ol(),$Ge=(t,e,r)=>{try{e=new ZGe(e,r)}catch{return!1}return e.test(t)};yz.exports=$Ge});var Cz=_((fQt,Ez)=>{var e5e=Ol(),t5e=(t,e)=>new e5e(t,e).set.map(r=>r.map(o=>o.value).join(\" \").trim().split(\" \"));Ez.exports=t5e});var Iz=_((pQt,wz)=>{var r5e=So(),n5e=Ol(),i5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new n5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new r5e(o,r))}),o};wz.exports=i5e});var vz=_((hQt,Bz)=>{var s5e=So(),o5e=Ol(),a5e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new o5e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new s5e(o,r))}),o};Bz.exports=a5e});var Pz=_((gQt,Sz)=>{var oN=So(),l5e=Ol(),Dz=mI(),c5e=(t,e)=>{t=new l5e(t,e);let r=new oN(\"0.0.0\");if(t.test(r)||(r=new oN(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new oN(u.semver.version);switch(u.operator){case\">\":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case\"\":case\">=\":(!n||Dz(A,n))&&(n=A);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Dz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Sz.exports=c5e});var xz=_((dQt,bz)=>{var u5e=Ol(),A5e=(t,e)=>{try{return new u5e(t,e).range||\"*\"}catch{return null}};bz.exports=A5e});var vS=_((mQt,Rz)=>{var f5e=So(),Fz=CI(),{ANY:p5e}=Fz,h5e=Ol(),g5e=II(),kz=mI(),Qz=mS(),d5e=ES(),m5e=yS(),y5e=(t,e,r,o)=>{t=new f5e(t,o),e=new h5e(e,o);let a,n,u,A,p;switch(r){case\">\":a=kz,n=d5e,u=Qz,A=\">\",p=\">=\";break;case\"<\":a=Qz,n=m5e,u=kz,A=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(g5e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],I=null,v=null;if(E.forEach(x=>{x.semver===p5e&&(x=new Fz(\">=0.0.0\")),I=I||x,v=v||x,a(x.semver,I.semver,o)?I=x:u(x.semver,v.semver,o)&&(v=x)}),I.operator===A||I.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Rz.exports=y5e});var Nz=_((yQt,Tz)=>{var E5e=vS(),C5e=(t,e,r)=>E5e(t,e,\">\",r);Tz.exports=C5e});var Oz=_((EQt,Lz)=>{var w5e=vS(),I5e=(t,e,r)=>w5e(t,e,\"<\",r);Lz.exports=I5e});var _z=_((CQt,Uz)=>{var Mz=Ol(),B5e=(t,e,r)=>(t=new Mz(t,r),e=new Mz(e,r),t.intersects(e,r));Uz.exports=B5e});var qz=_((wQt,Hz)=>{var v5e=II(),D5e=Ll();Hz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((E,I)=>D5e(E,I,r));for(let E of u)v5e(E,e,r)?(n=E,a||(a=E)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[E,I]of o)E===I?A.push(E):!I&&E===u[0]?A.push(\"*\"):I?E===u[0]?A.push(`<=${I}`):A.push(`${E} - ${I}`):A.push(`>=${E}`);let p=A.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var Vz=_((IQt,Kz)=>{var jz=Ol(),lN=CI(),{ANY:aN}=lN,BI=II(),cN=Ll(),S5e=(t,e,r={})=>{if(t===e)return!0;t=new jz(t,r),e=new jz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=b5e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},P5e=[new lN(\">=0.0.0-0\")],Gz=[new lN(\">=0.0.0\")],b5e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===aN){if(e.length===1&&e[0].semver===aN)return!0;r.includePrerelease?t=P5e:t=Gz}if(e.length===1&&e[0].semver===aN){if(r.includePrerelease)return!0;e=Gz}let o=new Set,a,n;for(let x of t)x.operator===\">\"||x.operator===\">=\"?a=Yz(a,x,r):x.operator===\"<\"||x.operator===\"<=\"?n=Wz(n,x,r):o.add(x.semver);if(o.size>1)return null;let u;if(a&&n){if(u=cN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let x of o){if(a&&!BI(x,String(a),r)||n&&!BI(x,String(n),r))return null;for(let C of e)if(!BI(x,String(C),r))return!1;return!0}let A,p,h,E,I=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;I&&I.prerelease.length===1&&n.operator===\"<\"&&I.prerelease[0]===0&&(I=!1);for(let x of e){if(E=E||x.operator===\">\"||x.operator===\">=\",h=h||x.operator===\"<\"||x.operator===\"<=\",a){if(v&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===v.major&&x.semver.minor===v.minor&&x.semver.patch===v.patch&&(v=!1),x.operator===\">\"||x.operator===\">=\"){if(A=Yz(a,x,r),A===x&&A!==a)return!1}else if(a.operator===\">=\"&&!BI(a.semver,String(x),r))return!1}if(n){if(I&&x.semver.prerelease&&x.semver.prerelease.length&&x.semver.major===I.major&&x.semver.minor===I.minor&&x.semver.patch===I.patch&&(I=!1),x.operator===\"<\"||x.operator===\"<=\"){if(p=Wz(n,x,r),p===x&&p!==n)return!1}else if(n.operator===\"<=\"&&!BI(n.semver,String(x),r))return!1}if(!x.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&E&&!a&&u!==0||v||I)},Yz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Wz=(t,e,r)=>{if(!t)return e;let o=cN(t.semver,e.semver,r);return o<0?t:o>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};Kz.exports=S5e});var zn=_((BQt,Xz)=>{var uN=vy(),Jz=gI(),x5e=So(),zz=JT(),k5e=sd(),Q5e=dJ(),F5e=yJ(),R5e=wJ(),T5e=vJ(),N5e=SJ(),L5e=bJ(),O5e=kJ(),M5e=FJ(),U5e=Ll(),_5e=LJ(),H5e=MJ(),q5e=dS(),j5e=qJ(),G5e=GJ(),Y5e=mI(),W5e=mS(),K5e=zT(),V5e=XT(),J5e=yS(),z5e=ES(),X5e=ZT(),Z5e=$J(),$5e=CI(),e9e=Ol(),t9e=II(),r9e=Cz(),n9e=Iz(),i9e=vz(),s9e=Pz(),o9e=xz(),a9e=vS(),l9e=Nz(),c9e=Oz(),u9e=_z(),A9e=qz(),f9e=Vz();Xz.exports={parse:k5e,valid:Q5e,clean:F5e,inc:R5e,diff:T5e,major:N5e,minor:L5e,patch:O5e,prerelease:M5e,compare:U5e,rcompare:_5e,compareLoose:H5e,compareBuild:q5e,sort:j5e,rsort:G5e,gt:Y5e,lt:W5e,eq:K5e,neq:V5e,gte:J5e,lte:z5e,cmp:X5e,coerce:Z5e,Comparator:$5e,Range:e9e,satisfies:t9e,toComparators:r9e,maxSatisfying:n9e,minSatisfying:i9e,minVersion:s9e,validRange:o9e,outside:a9e,gtr:l9e,ltr:c9e,intersects:u9e,simplifyRange:A9e,subset:f9e,SemVer:x5e,re:uN.re,src:uN.src,tokens:uN.t,SEMVER_SPEC_VERSION:Jz.SEMVER_SPEC_VERSION,RELEASE_TYPES:Jz.RELEASE_TYPES,compareIdentifiers:zz.compareIdentifiers,rcompareIdentifiers:zz.rcompareIdentifiers}});var $z=_((vQt,Zz)=>{\"use strict\";function p9e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ud(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ud)}p9e(ud,Error);ud.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",I;for(I=0;I<h.parts.length;I++)E+=h.parts[I]instanceof Array?n(h.parts[I][0])+\"-\"+n(h.parts[I][1]):n(h.parts[I]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+o(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+o(E)})}function u(h){return r[h.type](h)}function A(h){var E=new Array(h.length),I,v;for(I=0;I<h.length;I++)E[I]=u(h[I]);if(E.sort(),E.length>0){for(I=1,v=1;I<E.length;I++)E[I-1]!==E[I]&&(E[v]=E[I],v++);E.length=v}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+A(t)+\" but \"+p(e)+\" found.\"};function h9e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n=\"|\",u=Re(\"|\",!1),A=\"&\",p=Re(\"&\",!1),h=\"^\",E=Re(\"^\",!1),I=function(Z,ie){return!!ie.reduce((Pe,Ne)=>{switch(Ne[1]){case\"|\":return Pe|Ne[3];case\"&\":return Pe&Ne[3];case\"^\":return Pe^Ne[3]}},Z)},v=\"!\",x=Re(\"!\",!1),C=function(Z){return!Z},R=\"(\",L=Re(\"(\",!1),U=\")\",J=Re(\")\",!1),te=function(Z){return Z},ae=/^[^ \\t\\n\\r()!|&\\^]/,fe=ke([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),ce=function(Z){return e.queryPattern.test(Z)},me=function(Z){return e.checkFn(Z)},he=Te(\"whitespace\"),Be=/^[ \\t\\n\\r]/,we=ke([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,Ee=0,Se=[{line:1,column:1}],le=0,ne=[],ee=0,Ie;if(\"startRule\"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=o[e.startRule]}function Fe(){return t.substring(Ee,g)}function At(){return qe(Ee,g)}function H(Z,ie){throw ie=ie!==void 0?ie:qe(Ee,g),P([Te(Z)],t.substring(Ee,g),ie)}function at(Z,ie){throw ie=ie!==void 0?ie:qe(Ee,g),w(Z,ie)}function Re(Z,ie){return{type:\"literal\",text:Z,ignoreCase:ie}}function ke(Z,ie,Pe){return{type:\"class\",parts:Z,inverted:ie,ignoreCase:Pe}}function xe(){return{type:\"any\"}}function He(){return{type:\"end\"}}function Te(Z){return{type:\"other\",description:Z}}function Je(Z){var ie=Se[Z],Pe;if(ie)return ie;for(Pe=Z-1;!Se[Pe];)Pe--;for(ie=Se[Pe],ie={line:ie.line,column:ie.column};Pe<Z;)t.charCodeAt(Pe)===10?(ie.line++,ie.column=1):ie.column++,Pe++;return Se[Z]=ie,ie}function qe(Z,ie){var Pe=Je(Z),Ne=Je(ie);return{start:{offset:Z,line:Pe.line,column:Pe.column},end:{offset:ie,line:Ne.line,column:Ne.column}}}function b(Z){g<le||(g>le&&(le=g,ne=[]),ne.push(Z))}function w(Z,ie){return new ud(Z,null,null,ie)}function P(Z,ie,Pe){return new ud(ud.buildMessage(Z,ie),Z,ie,Pe)}function y(){var Z,ie,Pe,Ne,ot,dt,jt,$t;if(Z=g,ie=F(),ie!==r){for(Pe=[],Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)Pe.push(Ne),Ne=g,ot=X(),ot!==r?(t.charCodeAt(g)===124?(dt=n,g++):(dt=r,ee===0&&b(u)),dt===r&&(t.charCodeAt(g)===38?(dt=A,g++):(dt=r,ee===0&&b(p)),dt===r&&(t.charCodeAt(g)===94?(dt=h,g++):(dt=r,ee===0&&b(E)))),dt!==r?(jt=X(),jt!==r?($t=F(),$t!==r?(ot=[ot,dt,jt,$t],Ne=ot):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Pe!==r?(Ee=Z,ie=I(ie,Pe),Z=ie):(g=Z,Z=r)}else g=Z,Z=r;return Z}function F(){var Z,ie,Pe,Ne,ot,dt;return Z=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,ee===0&&b(x)),ie!==r?(Pe=F(),Pe!==r?(Ee=Z,ie=C(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,ee===0&&b(L)),ie!==r?(Pe=X(),Pe!==r?(Ne=y(),Ne!==r?(ot=X(),ot!==r?(t.charCodeAt(g)===41?(dt=U,g++):(dt=r,ee===0&&b(J)),dt!==r?(Ee=Z,ie=te(Ne),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r)):(g=Z,Z=r),Z===r&&(Z=z())),Z}function z(){var Z,ie,Pe,Ne,ot;if(Z=g,ie=X(),ie!==r){if(Pe=g,Ne=[],ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe)),ot!==r)for(;ot!==r;)Ne.push(ot),ae.test(t.charAt(g))?(ot=t.charAt(g),g++):(ot=r,ee===0&&b(fe));else Ne=r;Ne!==r?Pe=t.substring(Pe,g):Pe=Ne,Pe!==r?(Ee=g,Ne=ce(Pe),Ne?Ne=void 0:Ne=r,Ne!==r?(Ee=Z,ie=me(Pe),Z=ie):(g=Z,Z=r)):(g=Z,Z=r)}else g=Z,Z=r;return Z}function X(){var Z,ie;for(ee++,Z=[],Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));ie!==r;)Z.push(ie),Be.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,ee===0&&b(we));return ee--,Z===r&&(ie=r,ee===0&&b(he)),Z}if(Ie=a(),Ie!==r&&g===t.length)return Ie;throw Ie!==r&&g<t.length&&b(He()),P(ne,le<t.length?t.charAt(le):null,le<t.length?qe(le,le+1):qe(le,le))}Zz.exports={SyntaxError:ud,parse:h9e}});var eX=_(DS=>{var{parse:g9e}=$z();DS.makeParser=(t=/[a-z]+/)=>(e,r)=>g9e(e,{queryPattern:t,checkFn:r});DS.parse=DS.makeParser()});var rX=_((SQt,tX)=>{\"use strict\";tX.exports={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],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],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],rebeccapurple:[102,51,153],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]}});var AN=_((PQt,iX)=>{var vI=rX(),nX={};for(let t of Object.keys(vI))nX[vI[t]]=t;var Ar={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};iX.exports=Ar;for(let t of Object.keys(Ar)){if(!(\"channels\"in Ar[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in Ar[t]))throw new Error(\"missing channel labels property: \"+t);if(Ar[t].labels.length!==Ar[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=Ar[t];delete Ar[t].channels,delete Ar[t].labels,Object.defineProperty(Ar[t],\"channels\",{value:e}),Object.defineProperty(Ar[t],\"labels\",{value:r})}Ar.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};Ar.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),E=h-Math.min(u,A,p),I=function(v){return(h-v)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=I(u),r=I(A),o=I(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};Ar.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=Ar.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};Ar.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function d9e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Ar.rgb.keyword=function(t){let e=nX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(vI)){let n=vI[a],u=d9e(t,n);u<r&&(r=u,o=a)}return o};Ar.keyword.rgb=function(t){return vI[t]};Ar.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};Ar.rgb.lab=function(t){let e=Ar.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};Ar.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};Ar.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};Ar.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};Ar.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};Ar.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,E,I;switch(u){default:case 6:case 0:h=A,E=p,I=r;break;case 1:h=p,E=A,I=r;break;case 2:h=r,E=A,I=p;break;case 3:h=r,E=p,I=A;break;case 4:h=p,E=r,I=A;break;case 5:h=A,E=r,I=p;break}return[h*255,E*255,I*255]};Ar.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};Ar.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};Ar.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};Ar.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};Ar.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};Ar.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};Ar.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?Ar.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};Ar.hsv.ansi16=function(t){return Ar.rgb.ansi16(Ar.hsv.rgb(t),t[2])};Ar.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};Ar.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};Ar.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};Ar.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};Ar.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split(\"\").map(A=>A+A).join(\"\"));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};Ar.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};Ar.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};Ar.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};Ar.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};Ar.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};Ar.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};Ar.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};Ar.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};Ar.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Ar.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Ar.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Ar.gray.hsl=function(t){return[0,0,t[0]]};Ar.gray.hsv=Ar.gray.hsl;Ar.gray.hwb=function(t){return[0,100,t[0]]};Ar.gray.cmyk=function(t){return[0,0,0,t[0]]};Ar.gray.lab=function(t){return[t[0],0,0]};Ar.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(o.length)+o};Ar.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var oX=_((bQt,sX)=>{var SS=AN();function m9e(){let t={},e=Object.keys(SS);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function y9e(t){let e=m9e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(SS[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function E9e(t,e){return function(r){return e(t(r))}}function C9e(t,e){let r=[e[t].parent,t],o=SS[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=E9e(SS[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}sX.exports=function(t){let e=y9e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=C9e(u,e))}return r}});var lX=_((xQt,aX)=>{var fN=AN(),w9e=oX(),xy={},I9e=Object.keys(fN);function B9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function v9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a==\"object\")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}I9e.forEach(t=>{xy[t]={},Object.defineProperty(xy[t],\"channels\",{value:fN[t].channels}),Object.defineProperty(xy[t],\"labels\",{value:fN[t].labels});let e=w9e(t);Object.keys(e).forEach(o=>{let a=e[o];xy[t][o]=v9e(a),xy[t][o].raw=B9e(a)})});aX.exports=xy});var DI=_((kQt,pX)=>{\"use strict\";var cX=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,uX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};5;${o}m`},AX=(t,e)=>(...r)=>{let o=t(...r);return`\\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},PS=t=>t,fX=(t,e,r)=>[t,e,r],ky=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},pN,Qy=(t,e,r,o)=>{pN===void 0&&(pN=lX());let a=o?10:0,n={};for(let[u,A]of Object.entries(pN)){let p=u===\"ansi16\"?\"ansi\":u;u===e?n[p]=t(r,a):typeof A==\"object\"&&(n[p]=t(A[e],a))}return n};function D9e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",ky(e.color,\"ansi\",()=>Qy(cX,\"ansi16\",PS,!1)),ky(e.color,\"ansi256\",()=>Qy(uX,\"ansi256\",PS,!1)),ky(e.color,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!1)),ky(e.bgColor,\"ansi\",()=>Qy(cX,\"ansi16\",PS,!0)),ky(e.bgColor,\"ansi256\",()=>Qy(uX,\"ansi256\",PS,!0)),ky(e.bgColor,\"ansi16m\",()=>Qy(AX,\"rgb\",fX,!0)),e}Object.defineProperty(pX,\"exports\",{enumerable:!0,get:D9e})});var gX=_((QQt,hX)=>{\"use strict\";hX.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",o=e.indexOf(r+t),a=e.indexOf(\"--\");return o!==-1&&(a===-1||o<a)}});var dN=_((FQt,mX)=>{\"use strict\";var S9e=ve(\"os\"),dX=ve(\"tty\"),Ml=gX(),{env:ls}=process,Jp;Ml(\"no-color\")||Ml(\"no-colors\")||Ml(\"color=false\")||Ml(\"color=never\")?Jp=0:(Ml(\"color\")||Ml(\"colors\")||Ml(\"color=true\")||Ml(\"color=always\"))&&(Jp=1);\"FORCE_COLOR\"in ls&&(ls.FORCE_COLOR===\"true\"?Jp=1:ls.FORCE_COLOR===\"false\"?Jp=0:Jp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function hN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function gN(t,e){if(Jp===0)return 0;if(Ml(\"color=16m\")||Ml(\"color=full\")||Ml(\"color=truecolor\"))return 3;if(Ml(\"color=256\"))return 2;if(t&&!e&&Jp===void 0)return 0;let r=Jp||0;if(ls.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let o=S9e.release().split(\".\");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if(\"CI\"in ls)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(o=>o in ls)||ls.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in ls)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(ls.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in ls)return 1;if(ls.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(ls.TERM_PROGRAM){case\"iTerm.app\":return o>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||\"COLORTERM\"in ls?1:r}function P9e(t){let e=gN(t,t&&t.isTTY);return hN(e)}mX.exports={supportsColor:P9e,stdout:hN(gN(!0,dX.isatty(1))),stderr:hN(gN(!0,dX.isatty(2)))}});var EX=_((RQt,yX)=>{\"use strict\";var b9e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},x9e=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};yX.exports={stringReplaceAll:b9e,stringEncaseCRLFWithFirstIndex:x9e}});var vX=_((TQt,BX)=>{\"use strict\";var k9e=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,CX=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,Q9e=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,F9e=/\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi,R9e=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function IX(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):R9e.get(t)||t}function T9e(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(Q9e))r.push(a[2].replace(F9e,(A,p,h)=>p?IX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function N9e(t){CX.lastIndex=0;let e=[],r;for(;(r=CX.exec(t))!==null;){let o=r[1];if(r[2]){let a=T9e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function wX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}BX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(k9e,(n,u,A,p,h,E)=>{if(u)a.push(IX(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:wX(t,r)(I)),r.push({inverse:A,styles:N9e(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(wX(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var IN=_((NQt,bX)=>{\"use strict\";var SI=DI(),{stdout:yN,stderr:EN}=dN(),{stringReplaceAll:L9e,stringEncaseCRLFWithFirstIndex:O9e}=EX(),DX=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],Fy=Object.create(null),M9e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=yN?yN.level:0;t.level=e.level===void 0?r:e.level},CN=class{constructor(e){return SX(e)}},SX=t=>{let e={};return M9e(e,t),e.template=(...r)=>H9e(e.template,...r),Object.setPrototypeOf(e,bS.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=CN,e.template};function bS(t){return SX(t)}for(let[t,e]of Object.entries(SI))Fy[t]={get(){let r=xS(this,wN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Fy.visible={get(){let t=xS(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var PX=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of PX)Fy[t]={get(){let{level:e}=this;return function(...r){let o=wN(SI.color[DX[e]][t](...r),SI.color.close,this._styler);return xS(this,o,this._isEmpty)}}};for(let t of PX){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);Fy[e]={get(){let{level:r}=this;return function(...o){let a=wN(SI.bgColor[DX[r]][t](...o),SI.bgColor.close,this._styler);return xS(this,a,this._isEmpty)}}}}var U9e=Object.defineProperties(()=>{},{...Fy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),wN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},xS=(t,e,r)=>{let o=(...a)=>_9e(o,a.length===1?\"\"+a[0]:a.join(\" \"));return o.__proto__=U9e,o._generator=t,o._styler=e,o._isEmpty=r,o},_9e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=L9e(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=O9e(e,a,o,n)),o+e+a},mN,H9e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return mN===void 0&&(mN=vX()),mN(t,a.join(\"\"))};Object.defineProperties(bS.prototype,Fy);var PI=bS();PI.supportsColor=yN;PI.stderr=bS({level:EN?EN.level:0});PI.stderr.supportsColor=EN;PI.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:\"None\",1:\"Basic\",2:\"Ansi256\",3:\"TrueColor\"};bX.exports=PI});var kS=_(Ul=>{\"use strict\";Ul.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;Ul.find=(t,e)=>t.nodes.find(r=>r.type===e);Ul.exceedsLimit=(t,e,r=1,o)=>o===!1||!Ul.isInteger(t)||!Ul.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Ul.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type===\"open\"||o.type===\"close\")&&o.escaped!==!0&&(o.value=\"\\\\\"+o.value,o.escaped=!0)};Ul.encloseBrace=t=>t.type!==\"brace\"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Ul.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Ul.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;Ul.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);Ul.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var QS=_((OQt,kX)=>{\"use strict\";var xX=kS();kX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&xX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=\"\";if(o.value)return(n||u)&&xX.isOpenOrClose(o)?\"\\\\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var FX=_((MQt,QX)=>{\"use strict\";QX.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var HX=_((UQt,_X)=>{\"use strict\";var RX=FX(),Ad=(t,e,r)=>{if(RX(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(RX(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let o={relaxZeros:!0,...r};typeof o.strictZeros==\"boolean\"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+\":\"+e+\"=\"+a+n+u+A;if(Ad.cache.hasOwnProperty(p))return Ad.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+\"|\"+e;return o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let I=UX(t)||UX(e),v={min:t,max:e,a:h,b:E},x=[],C=[];if(I&&(v.isPadded=I,v.maxLen=String(v.max).length),h<0){let R=E<0?Math.abs(E):1;C=TX(R,Math.abs(h),v,o),h=v.a=0}return E>=0&&(x=TX(h,E,v,o)),v.negatives=C,v.positives=x,v.result=q9e(C,x,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&x.length+C.length>1&&(v.result=`(?:${v.result})`),Ad.cache[p]=v,v.result};function q9e(t,e,r){let o=BN(t,e,\"-\",!1,r)||[],a=BN(e,t,\"\",!1,r)||[],n=BN(t,e,\"-?\",!0,r)||[];return o.concat(n).concat(a).join(\"|\")}function j9e(t,e){let r=1,o=1,a=LX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=LX(t,r);for(a=OX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=OX(e+1,o)-1;return n=[...n],n.sort(W9e),n}function G9e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=Y9e(t,e),a=o.length,n=\"\",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=K9e(p,h,r):u++}return u&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[u],digits:a}}function TX(t,e,r,o){let a=j9e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],E=G9e(String(u),String(h),o),I=\"\";if(!r.isPadded&&A&&A.pattern===E.pattern){A.count.length>1&&A.count.pop(),A.count.push(E.count[0]),A.string=A.pattern+MX(A.count),u=h+1;continue}r.isPadded&&(I=V9e(h,r,o)),E.string=I+E.pattern+MX(E.count),n.push(E),u=h+1,A=E}return n}function BN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!NX(e,\"string\",A)&&n.push(r+A),o&&NX(e,\"string\",A)&&n.push(r+A)}return n}function Y9e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function W9e(t,e){return t>e?1:e>t?-1:0}function NX(t,e,r){return t.some(o=>o[e]===r)}function LX(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function OX(t,e){return t-t%Math.pow(10,e)}function MX(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function K9e(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function UX(t){return/^-?(0+)\\d/.test(t)}function V9e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${o}}`:`0{${o}}`}}Ad.cache={};Ad.clearCache=()=>Ad.cache={};_X.exports=Ad});var SN=_((_Qt,JX)=>{\"use strict\";var J9e=ve(\"util\"),GX=HX(),qX=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),z9e=t=>e=>t===!0?Number(e):String(e),vN=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",bI=t=>Number.isInteger(+t),DN=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},X9e=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,Z9e=(t,e,r)=>{if(e>0){let o=t[0]===\"-\"?\"-\":\"\";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,\"0\")}return r===!1?String(t):t},jX=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},$9e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?\"\":\"?:\",o=\"\",a=\"\",n;return t.positives.length&&(o=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},YX=(t,e,r,o)=>{if(r)return GX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},WX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?\"\":\"?:\";return o?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return GX(t,e,r)},KX=(...t)=>new RangeError(\"Invalid range arguments: \"+J9e.inspect(...t)),VX=(t,e,r)=>{if(r.strictRanges===!0)throw KX([t,e]);return[]},e7e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},t7e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw KX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=DN(A)||DN(p)||DN(h),I=E?Math.max(A.length,p.length,h.length):0,v=E===!1&&X9e(t,e,o)===!1,x=o.transform||z9e(v);if(o.toRegex&&r===1)return YX(jX(t,I),jX(e,I),!0,o);let C={negatives:[],positives:[]},R=J=>C[J<0?\"negatives\":\"positives\"].push(Math.abs(J)),L=[],U=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):L.push(Z9e(x(a,U),I,v)),a=u?a-r:a+r,U++;return o.toRegex===!0?r>1?$9e(C,o):WX(L,null,{wrap:!1,...o}):L},r7e=(t,e,r=1,o={})=>{if(!bI(t)&&t.length>1||!bI(e)&&e.length>1)return VX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return YX(p,h,!1,o);let E=[],I=0;for(;A?n>=u:n<=u;)E.push(a(n,I)),n=A?n-r:n+r,I++;return o.toRegex===!0?WX(E,null,{wrap:!1,options:o}):E},RS=(t,e,r,o={})=>{if(e==null&&vN(t))return[t];if(!vN(t)||!vN(e))return VX(t,e,o);if(typeof r==\"function\")return RS(t,e,1,{transform:r});if(qX(r))return RS(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,bI(r)?bI(t)&&bI(e)?t7e(t,e,r,a):r7e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!qX(r)?e7e(r,a):RS(t,e,1,r)};JX.exports=RS});var ZX=_((HQt,XX)=>{\"use strict\";var n7e=SN(),zX=kS(),i7e=(t,e={})=>{let r=(o,a={})=>{let n=zX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type===\"open\")return A?p+o.value:\"(\";if(o.type===\"close\")return A?p+o.value:\")\";if(o.type===\"comma\")return o.prev.type===\"comma\"?\"\":A?o.value:\"|\";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let E=zX.reduce(o.nodes),I=n7e(...E,{...e,wrap:!1,toRegex:!0});if(I.length!==0)return E.length>1&&I.length>1?`(${I})`:I}if(o.nodes)for(let E of o.nodes)h+=r(E,o);return h};return r(t)};XX.exports=i7e});var tZ=_((qQt,eZ)=>{\"use strict\";var s7e=SN(),$X=QS(),Ry=kS(),fd=(t=\"\",e=\"\",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Ry.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(fd(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),o.push(Array.isArray(n)?fd(a,n,r):a+n);return Ry.flatten(o)},o7e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!==\"brace\"&&u.type!==\"root\"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(fd(A.pop(),$X(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){A.push(fd(A.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let I=Ry.reduce(a.nodes);if(Ry.exceedsLimit(...I,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let v=s7e(...I,e);v.length===0&&(v=$X(a,e)),A.push(fd(A.pop(),v)),a.nodes=[];return}let p=Ry.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let I=0;I<a.nodes.length;I++){let v=a.nodes[I];if(v.type===\"comma\"&&a.type===\"brace\"){I===1&&h.push(\"\"),h.push(\"\");continue}if(v.type===\"close\"){A.push(fd(A.pop(),h,p));continue}if(v.value&&v.type!==\"open\"){h.push(fd(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return Ry.flatten(o(t))};eZ.exports=o7e});var nZ=_((jQt,rZ)=>{\"use strict\";rZ.exports={MAX_LENGTH:1024*64,CHAR_0:\"0\",CHAR_9:\"9\",CHAR_UPPERCASE_A:\"A\",CHAR_LOWERCASE_A:\"a\",CHAR_UPPERCASE_Z:\"Z\",CHAR_LOWERCASE_Z:\"z\",CHAR_LEFT_PARENTHESES:\"(\",CHAR_RIGHT_PARENTHESES:\")\",CHAR_ASTERISK:\"*\",CHAR_AMPERSAND:\"&\",CHAR_AT:\"@\",CHAR_BACKSLASH:\"\\\\\",CHAR_BACKTICK:\"`\",CHAR_CARRIAGE_RETURN:\"\\r\",CHAR_CIRCUMFLEX_ACCENT:\"^\",CHAR_COLON:\":\",CHAR_COMMA:\",\",CHAR_DOLLAR:\"$\",CHAR_DOT:\".\",CHAR_DOUBLE_QUOTE:'\"',CHAR_EQUAL:\"=\",CHAR_EXCLAMATION_MARK:\"!\",CHAR_FORM_FEED:\"\\f\",CHAR_FORWARD_SLASH:\"/\",CHAR_HASH:\"#\",CHAR_HYPHEN_MINUS:\"-\",CHAR_LEFT_ANGLE_BRACKET:\"<\",CHAR_LEFT_CURLY_BRACE:\"{\",CHAR_LEFT_SQUARE_BRACKET:\"[\",CHAR_LINE_FEED:`\n`,CHAR_NO_BREAK_SPACE:\"\\xA0\",CHAR_PERCENT:\"%\",CHAR_PLUS:\"+\",CHAR_QUESTION_MARK:\"?\",CHAR_RIGHT_ANGLE_BRACKET:\">\",CHAR_RIGHT_CURLY_BRACE:\"}\",CHAR_RIGHT_SQUARE_BRACKET:\"]\",CHAR_SEMICOLON:\";\",CHAR_SINGLE_QUOTE:\"'\",CHAR_SPACE:\" \",CHAR_TAB:\"\t\",CHAR_UNDERSCORE:\"_\",CHAR_VERTICAL_LINE:\"|\",CHAR_ZERO_WIDTH_NOBREAK_SPACE:\"\\uFEFF\"}});var lZ=_((GQt,aZ)=>{\"use strict\";var a7e=QS(),{MAX_LENGTH:iZ,CHAR_BACKSLASH:PN,CHAR_BACKTICK:l7e,CHAR_COMMA:c7e,CHAR_DOT:u7e,CHAR_LEFT_PARENTHESES:A7e,CHAR_RIGHT_PARENTHESES:f7e,CHAR_LEFT_CURLY_BRACE:p7e,CHAR_RIGHT_CURLY_BRACE:h7e,CHAR_LEFT_SQUARE_BRACKET:sZ,CHAR_RIGHT_SQUARE_BRACKET:oZ,CHAR_DOUBLE_QUOTE:g7e,CHAR_SINGLE_QUOTE:d7e,CHAR_NO_BREAK_SPACE:m7e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:y7e}=nZ(),E7e=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},o=typeof r.maxLength==\"number\"?Math.min(iZ,r.maxLength):iZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:\"root\",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,E=0,I=0,v,x={},C=()=>t[E++],R=L=>{if(L.type===\"text\"&&A.type===\"dot\"&&(A.type=\"text\"),A&&A.type===\"text\"&&L.type===\"text\"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(R({type:\"bos\"});E<h;)if(u=n[n.length-1],v=C(),!(v===y7e||v===m7e)){if(v===PN){R({type:\"text\",value:(e.keepEscaping?v:\"\")+C()});continue}if(v===oZ){R({type:\"text\",value:\"\\\\\"+v});continue}if(v===sZ){p++;let L=!0,U;for(;E<h&&(U=C());){if(v+=U,U===sZ){p++;continue}if(U===PN){v+=C();continue}if(U===oZ&&(p--,p===0))break}R({type:\"text\",value:v});continue}if(v===A7e){u=R({type:\"paren\",nodes:[]}),n.push(u),R({type:\"text\",value:v});continue}if(v===f7e){if(u.type!==\"paren\"){R({type:\"text\",value:v});continue}u=n.pop(),R({type:\"text\",value:v}),u=n[n.length-1];continue}if(v===g7e||v===d7e||v===l7e){let L=v,U;for(e.keepQuotes!==!0&&(v=\"\");E<h&&(U=C());){if(U===PN){v+=U+C();continue}if(U===L){e.keepQuotes===!0&&(v+=U);break}v+=U}R({type:\"text\",value:v});continue}if(v===p7e){I++;let U={type:\"brace\",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)===\"$\"||u.dollar===!0,depth:I,commas:0,ranges:0,nodes:[]};u=R(U),n.push(u),R({type:\"open\",value:v});continue}if(v===h7e){if(u.type!==\"brace\"){R({type:\"text\",value:v});continue}let L=\"close\";u=n.pop(),u.close=!0,R({type:L,value:v}),I--,u=n[n.length-1];continue}if(v===c7e&&I>0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:\"text\",value:a7e(u)}]}R({type:\"comma\",value:v}),u.commas++;continue}if(v===u7e&&I>0&&u.commas===0){let L=u.nodes;if(I===0||L.length===0){R({type:\"text\",value:v});continue}if(A.type===\"dot\"){if(u.range=[],A.value+=v,A.type=\"range\",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type=\"text\";continue}u.ranges++,u.args=[];continue}if(A.type===\"range\"){L.pop();let U=L[L.length-1];U.value+=A.value+v,A=U,u.ranges--;continue}R({type:\"dot\",value:v});continue}R({type:\"text\",value:v})}do if(u=n.pop(),u.type!==\"root\"){u.nodes.forEach(J=>{J.nodes||(J.type===\"open\"&&(J.isOpen=!0),J.type===\"close\"&&(J.isClose=!0),J.nodes||(J.type=\"text\"),J.invalid=!0)});let L=n[n.length-1],U=L.nodes.indexOf(u);L.nodes.splice(U,1,...u.nodes)}while(n.length>0);return R({type:\"eos\"}),a};aZ.exports=E7e});var AZ=_((YQt,uZ)=>{\"use strict\";var cZ=QS(),C7e=ZX(),w7e=tZ(),I7e=lZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>I7e(t,e);rl.stringify=(t,e={})=>cZ(typeof t==\"string\"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t==\"string\"&&(t=rl.parse(t,e)),C7e(t,e));rl.expand=(t,e={})=>{typeof t==\"string\"&&(t=rl.parse(t,e));let r=w7e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);uZ.exports=rl});var xI=_((WQt,dZ)=>{\"use strict\";var B7e=ve(\"path\"),Ku=\"\\\\\\\\/\",fZ=`[^${Ku}]`,vf=\"\\\\.\",v7e=\"\\\\+\",D7e=\"\\\\?\",TS=\"\\\\/\",S7e=\"(?=.)\",pZ=\"[^/]\",bN=`(?:${TS}|$)`,hZ=`(?:^|${TS})`,xN=`${vf}{1,2}${bN}`,P7e=`(?!${vf})`,b7e=`(?!${hZ}${xN})`,x7e=`(?!${vf}{0,1}${bN})`,k7e=`(?!${xN})`,Q7e=`[^.${TS}]`,F7e=`${pZ}*?`,gZ={DOT_LITERAL:vf,PLUS_LITERAL:v7e,QMARK_LITERAL:D7e,SLASH_LITERAL:TS,ONE_CHAR:S7e,QMARK:pZ,END_ANCHOR:bN,DOTS_SLASH:xN,NO_DOT:P7e,NO_DOTS:b7e,NO_DOT_SLASH:x7e,NO_DOTS_SLASH:k7e,QMARK_NO_DOT:Q7e,STAR:F7e,START_ANCHOR:hZ},R7e={...gZ,SLASH_LITERAL:`[${Ku}]`,QMARK:fZ,STAR:`${fZ}*?`,DOTS_SLASH:`${vf}{1,2}(?:[${Ku}]|$)`,NO_DOT:`(?!${vf})`,NO_DOTS:`(?!(?:^|[${Ku}])${vf}{1,2}(?:[${Ku}]|$))`,NO_DOT_SLASH:`(?!${vf}{0,1}(?:[${Ku}]|$))`,NO_DOTS_SLASH:`(?!${vf}{1,2}(?:[${Ku}]|$))`,QMARK_NO_DOT:`[^.${Ku}]`,START_ANCHOR:`(?:^|[${Ku}])`,END_ANCHOR:`(?:[${Ku}]|$)`},T7e={alnum:\"a-zA-Z0-9\",alpha:\"a-zA-Z\",ascii:\"\\\\x00-\\\\x7F\",blank:\" \\\\t\",cntrl:\"\\\\x00-\\\\x1F\\\\x7F\",digit:\"0-9\",graph:\"\\\\x21-\\\\x7E\",lower:\"a-z\",print:\"\\\\x20-\\\\x7E \",punct:\"\\\\-!\\\"#$%&'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~\",space:\" \\\\t\\\\r\\\\n\\\\v\\\\f\",upper:\"A-Z\",word:\"A-Za-z0-9_\",xdigit:\"A-Fa-f0-9\"};dZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:T7e,REGEX_BACKSLASH:/\\\\(?![*+?^${}(|)[\\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\\].,$*+?^{}()|\\\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\\\?)((\\W)(\\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,REPLACEMENTS:{\"***\":\"*\",\"**/**\":\"**\",\"**/**/**\":\"**\"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:B7e.sep,extglobChars(t){return{\"!\":{type:\"negate\",open:\"(?:(?!(?:\",close:`))${t.STAR})`},\"?\":{type:\"qmark\",open:\"(?:\",close:\")?\"},\"+\":{type:\"plus\",open:\"(?:\",close:\")+\"},\"*\":{type:\"star\",open:\"(?:\",close:\")*\"},\"@\":{type:\"at\",open:\"(?:\",close:\")\"}}},globChars(t){return t===!0?R7e:gZ}}});var kI=_(Sa=>{\"use strict\";var N7e=ve(\"path\"),L7e=process.platform===\"win32\",{REGEX_BACKSLASH:O7e,REGEX_REMOVE_BACKSLASH:M7e,REGEX_SPECIAL_CHARS:U7e,REGEX_SPECIAL_CHARS_GLOBAL:_7e}=xI();Sa.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);Sa.hasRegexChars=t=>U7e.test(t);Sa.isRegexChar=t=>t.length===1&&Sa.hasRegexChars(t);Sa.escapeRegex=t=>t.replace(_7e,\"\\\\$1\");Sa.toPosixSlashes=t=>t.replace(O7e,\"/\");Sa.removeBackslashes=t=>t.replace(M7e,e=>e===\"\\\\\"?\"\":e);Sa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Sa.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:L7e===!0||N7e.sep===\"\\\\\";Sa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]===\"\\\\\"?Sa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\\\${t.slice(o)}`};Sa.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};Sa.wrapOutput=(t,e={},r={})=>{let o=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var vZ=_((VQt,BZ)=>{\"use strict\";var mZ=kI(),{CHAR_ASTERISK:kN,CHAR_AT:H7e,CHAR_BACKWARD_SLASH:QI,CHAR_COMMA:q7e,CHAR_DOT:QN,CHAR_EXCLAMATION_MARK:FN,CHAR_FORWARD_SLASH:IZ,CHAR_LEFT_CURLY_BRACE:RN,CHAR_LEFT_PARENTHESES:TN,CHAR_LEFT_SQUARE_BRACKET:j7e,CHAR_PLUS:G7e,CHAR_QUESTION_MARK:yZ,CHAR_RIGHT_CURLY_BRACE:Y7e,CHAR_RIGHT_PARENTHESES:EZ,CHAR_RIGHT_SQUARE_BRACKET:W7e}=xI(),CZ=t=>t===IZ||t===QI,wZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},K7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,E=0,I=0,v=!1,x=!1,C=!1,R=!1,L=!1,U=!1,J=!1,te=!1,ae=!1,fe=!1,ce=0,me,he,Be={value:\"\",depth:0,isGlob:!1},we=()=>h>=o,g=()=>p.charCodeAt(h+1),Ee=()=>(me=he,p.charCodeAt(++h));for(;h<o;){he=Ee();let Ie;if(he===QI){J=Be.backslashes=!0,he=Ee(),he===RN&&(U=!0);continue}if(U===!0||he===RN){for(ce++;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,Ee();continue}if(he===RN){ce++;continue}if(U!==!0&&he===QN&&(he=Ee())===QN){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(U!==!0&&he===q7e){if(v=Be.isBrace=!0,C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===Y7e&&(ce--,ce===0)){U=!1,v=Be.isBrace=!0,fe=!0;break}}if(a===!0)continue;break}if(he===IZ){if(n.push(h),u.push(Be),Be={value:\"\",depth:0,isGlob:!1},fe===!0)continue;if(me===QN&&h===E+1){E+=2;continue}I=h+1;continue}if(r.noext!==!0&&(he===G7e||he===H7e||he===kN||he===yZ||he===FN)===!0&&g()===TN){if(C=Be.isGlob=!0,R=Be.isExtglob=!0,fe=!0,he===FN&&h===E&&(ae=!0),a===!0){for(;we()!==!0&&(he=Ee());){if(he===QI){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){C=Be.isGlob=!0,fe=!0;break}}continue}break}if(he===kN){if(me===kN&&(L=Be.isGlobstar=!0),C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===yZ){if(C=Be.isGlob=!0,fe=!0,a===!0)continue;break}if(he===j7e){for(;we()!==!0&&(Ie=Ee());){if(Ie===QI){J=Be.backslashes=!0,Ee();continue}if(Ie===W7e){x=Be.isBracket=!0,C=Be.isGlob=!0,fe=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&he===FN&&h===E){te=Be.negated=!0,E++;continue}if(r.noparen!==!0&&he===TN){if(C=Be.isGlob=!0,a===!0){for(;we()!==!0&&(he=Ee());){if(he===TN){J=Be.backslashes=!0,he=Ee();continue}if(he===EZ){fe=!0;break}}continue}break}if(C===!0){if(fe=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,C=!1);let Se=p,le=\"\",ne=\"\";E>0&&(le=p.slice(0,E),p=p.slice(E),I-=E),Se&&C===!0&&I>0?(Se=p.slice(0,I),ne=p.slice(I)):C===!0?(Se=\"\",ne=p):Se=p,Se&&Se!==\"\"&&Se!==\"/\"&&Se!==p&&CZ(Se.charCodeAt(Se.length-1))&&(Se=Se.slice(0,-1)),r.unescape===!0&&(ne&&(ne=mZ.removeBackslashes(ne)),Se&&J===!0&&(Se=mZ.removeBackslashes(Se)));let ee={prefix:le,input:t,start:E,base:Se,glob:ne,isBrace:v,isBracket:x,isGlob:C,isExtglob:R,isGlobstar:L,negated:te,negatedExtglob:ae};if(r.tokens===!0&&(ee.maxDepth=0,CZ(he)||u.push(Be),ee.tokens=u),r.parts===!0||r.tokens===!0){let Ie;for(let Fe=0;Fe<n.length;Fe++){let At=Ie?Ie+1:E,H=n[Fe],at=t.slice(At,H);r.tokens&&(Fe===0&&E!==0?(u[Fe].isPrefix=!0,u[Fe].value=le):u[Fe].value=at,wZ(u[Fe]),ee.maxDepth+=u[Fe].depth),(Fe!==0||at!==\"\")&&A.push(at),Ie=H}if(Ie&&Ie+1<t.length){let Fe=t.slice(Ie+1);A.push(Fe),r.tokens&&(u[u.length-1].value=Fe,wZ(u[u.length-1]),ee.maxDepth+=u[u.length-1].depth)}ee.slashes=n,ee.parts=A}return ee};BZ.exports=K7e});var PZ=_((JQt,SZ)=>{\"use strict\";var NS=xI(),nl=kI(),{MAX_LENGTH:LS,POSIX_REGEX_SOURCE:V7e,REGEX_NON_SPECIAL_CHARS:J7e,REGEX_SPECIAL_CHARS_BACKREF:z7e,REPLACEMENTS:DZ}=NS,X7e=(t,e)=>{if(typeof e.expandRange==\"function\")return e.expandRange(...t,e);t.sort();let r=`[${t.join(\"-\")}]`;try{new RegExp(r)}catch{return t.map(a=>nl.escapeRegex(a)).join(\"..\")}return r},Ty=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,NN=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=DZ[t]||t;let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},u=[n],A=r.capture?\"\":\"?:\",p=nl.isWindows(e),h=NS.globChars(p),E=NS.extglobChars(h),{DOT_LITERAL:I,PLUS_LITERAL:v,SLASH_LITERAL:x,ONE_CHAR:C,DOTS_SLASH:R,NO_DOT:L,NO_DOT_SLASH:U,NO_DOTS_SLASH:J,QMARK:te,QMARK_NO_DOT:ae,STAR:fe,START_ANCHOR:ce}=h,me=b=>`(${A}(?:(?!${ce}${b.dot?R:I}).)*?)`,he=r.dot?\"\":L,Be=r.dot?te:ae,we=r.bash===!0?me(r):fe;r.capture&&(we=`(${we})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=nl.removePrefix(t,g),a=t.length;let Ee=[],Se=[],le=[],ne=n,ee,Ie=()=>g.index===a-1,Fe=g.peek=(b=1)=>t[g.index+b],At=g.advance=()=>t[++g.index]||\"\",H=()=>t.slice(g.index+1),at=(b=\"\",w=0)=>{g.consumed+=b,g.index+=w},Re=b=>{g.output+=b.output!=null?b.output:b.value,at(b.value)},ke=()=>{let b=1;for(;Fe()===\"!\"&&(Fe(2)!==\"(\"||Fe(3)===\"?\");)At(),g.start++,b++;return b%2===0?!1:(g.negated=!0,g.start++,!0)},xe=b=>{g[b]++,le.push(b)},He=b=>{g[b]--,le.pop()},Te=b=>{if(ne.type===\"globstar\"){let w=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),P=b.extglob===!0||Ee.length&&(b.type===\"pipe\"||b.type===\"paren\");b.type!==\"slash\"&&b.type!==\"paren\"&&!w&&!P&&(g.output=g.output.slice(0,-ne.output.length),ne.type=\"star\",ne.value=\"*\",ne.output=we,g.output+=ne.output)}if(Ee.length&&b.type!==\"paren\"&&(Ee[Ee.length-1].inner+=b.value),(b.value||b.output)&&Re(b),ne&&ne.type===\"text\"&&b.type===\"text\"){ne.value+=b.value,ne.output=(ne.output||\"\")+b.value;return}b.prev=ne,u.push(b),ne=b},Je=(b,w)=>{let P={...E[w],conditions:1,inner:\"\"};P.prev=ne,P.parens=g.parens,P.output=g.output;let y=(r.capture?\"(\":\"\")+P.open;xe(\"parens\"),Te({type:b,value:w,output:g.output?\"\":C}),Te({type:\"paren\",extglob:!0,value:At(),output:y}),Ee.push(P)},qe=b=>{let w=b.close+(r.capture?\")\":\"\"),P;if(b.type===\"negate\"){let y=we;if(b.inner&&b.inner.length>1&&b.inner.includes(\"/\")&&(y=me(r)),(y!==we||Ie()||/^\\)+$/.test(H()))&&(w=b.close=`)$))${y}`),b.inner.includes(\"*\")&&(P=H())&&/^\\.[^\\\\/.]+$/.test(P)){let F=NN(P,{...e,fastpaths:!1}).output;w=b.close=`)${F})${y})`}b.prev.type===\"bos\"&&(g.negatedExtglob=!0)}Te({type:\"paren\",extglob:!0,value:ee,output:w}),He(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let b=!1,w=t.replace(z7e,(P,y,F,z,X,Z)=>z===\"\\\\\"?(b=!0,P):z===\"?\"?y?y+z+(X?te.repeat(X.length):\"\"):Z===0?Be+(X?te.repeat(X.length):\"\"):te.repeat(F.length):z===\".\"?I.repeat(F.length):z===\"*\"?y?y+z+(X?we:\"\"):we:y?P:`\\\\${P}`);return b===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,P=>P.length%2===0?\"\\\\\\\\\":P?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=nl.wrapOutput(w,g,e),g)}for(;!Ie();){if(ee=At(),ee===\"\\0\")continue;if(ee===\"\\\\\"){let P=Fe();if(P===\"/\"&&r.bash!==!0||P===\".\"||P===\";\")continue;if(!P){ee+=\"\\\\\",Te({type:\"text\",value:ee});continue}let y=/^\\\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(ee+=\"\\\\\")),r.unescape===!0?ee=At():ee+=At(),g.brackets===0){Te({type:\"text\",value:ee});continue}}if(g.brackets>0&&(ee!==\"]\"||ne.value===\"[\"||ne.value===\"[^\")){if(r.posix!==!1&&ee===\":\"){let P=ne.value.slice(1);if(P.includes(\"[\")&&(ne.posix=!0,P.includes(\":\"))){let y=ne.value.lastIndexOf(\"[\"),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=V7e[z];if(X){ne.value=F+X,g.backtrack=!0,At(),!n.output&&u.indexOf(ne)===1&&(n.output=C);continue}}}(ee===\"[\"&&Fe()!==\":\"||ee===\"-\"&&Fe()===\"]\")&&(ee=`\\\\${ee}`),ee===\"]\"&&(ne.value===\"[\"||ne.value===\"[^\")&&(ee=`\\\\${ee}`),r.posix===!0&&ee===\"!\"&&ne.value===\"[\"&&(ee=\"^\"),ne.value+=ee,Re({value:ee});continue}if(g.quotes===1&&ee!=='\"'){ee=nl.escapeRegex(ee),ne.value+=ee,Re({value:ee});continue}if(ee==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&Te({type:\"text\",value:ee});continue}if(ee===\"(\"){xe(\"parens\"),Te({type:\"paren\",value:ee});continue}if(ee===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"(\"));let P=Ee[Ee.length-1];if(P&&g.parens===P.parens+1){qe(Ee.pop());continue}Te({type:\"paren\",value:ee,output:g.parens?\")\":\"\\\\)\"}),He(\"parens\");continue}if(ee===\"[\"){if(r.nobracket===!0||!H().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));ee=`\\\\${ee}`}else xe(\"brackets\");Te({type:\"bracket\",value:ee});continue}if(ee===\"]\"){if(r.nobracket===!0||ne&&ne.type===\"bracket\"&&ne.value.length===1){Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"opening\",\"[\"));Te({type:\"text\",value:ee,output:`\\\\${ee}`});continue}He(\"brackets\");let P=ne.value.slice(1);if(ne.posix!==!0&&P[0]===\"^\"&&!P.includes(\"/\")&&(ee=`/${ee}`),ne.value+=ee,Re({value:ee}),r.literalBrackets===!1||nl.hasRegexChars(P))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(ee===\"{\"&&r.nobrace!==!0){xe(\"braces\");let P={type:\"brace\",value:ee,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};Se.push(P),Te(P);continue}if(ee===\"}\"){let P=Se[Se.length-1];if(r.nobrace===!0||!P){Te({type:\"text\",value:ee,output:ee});continue}let y=\")\";if(P.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!==\"brace\");X--)F[X].type!==\"dots\"&&z.unshift(F[X].value);y=X7e(z,r),g.backtrack=!0}if(P.comma!==!0&&P.dots!==!0){let F=g.output.slice(0,P.outputIndex),z=g.tokens.slice(P.tokensIndex);P.value=P.output=\"\\\\{\",ee=y=\"\\\\}\",g.output=F;for(let X of z)g.output+=X.output||X.value}Te({type:\"brace\",value:ee,output:y}),He(\"braces\"),Se.pop();continue}if(ee===\"|\"){Ee.length>0&&Ee[Ee.length-1].conditions++,Te({type:\"text\",value:ee});continue}if(ee===\",\"){let P=ee,y=Se[Se.length-1];y&&le[le.length-1]===\"braces\"&&(y.comma=!0,P=\"|\"),Te({type:\"comma\",value:ee,output:P});continue}if(ee===\"/\"){if(ne.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",u.pop(),ne=n;continue}Te({type:\"slash\",value:ee,output:x});continue}if(ee===\".\"){if(g.braces>0&&ne.type===\"dot\"){ne.value===\".\"&&(ne.output=I);let P=Se[Se.length-1];ne.type=\"dots\",ne.output+=ee,ne.value+=ee,P.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!==\"bos\"&&ne.type!==\"slash\"){Te({type:\"text\",value:ee,output:I});continue}Te({type:\"dot\",value:ee,output:I});continue}if(ee===\"?\"){if(!(ne&&ne.value===\"(\")&&r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"qmark\",ee);continue}if(ne&&ne.type===\"paren\"){let y=Fe(),F=ee;if(y===\"<\"&&!nl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(ne.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(H()))&&(F=`\\\\${ee}`),Te({type:\"text\",value:ee,output:F});continue}if(r.dot!==!0&&(ne.type===\"slash\"||ne.type===\"bos\")){Te({type:\"qmark\",value:ee,output:ae});continue}Te({type:\"qmark\",value:ee,output:te});continue}if(ee===\"!\"){if(r.noextglob!==!0&&Fe()===\"(\"&&(Fe(2)!==\"?\"||!/[!=<:]/.test(Fe(3)))){Je(\"negate\",ee);continue}if(r.nonegate!==!0&&g.index===0){ke();continue}}if(ee===\"+\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Je(\"plus\",ee);continue}if(ne&&ne.value===\"(\"||r.regex===!1){Te({type:\"plus\",value:ee,output:v});continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\"||ne.type===\"brace\")||g.parens>0){Te({type:\"plus\",value:ee});continue}Te({type:\"plus\",value:v});continue}if(ee===\"@\"){if(r.noextglob!==!0&&Fe()===\"(\"&&Fe(2)!==\"?\"){Te({type:\"at\",extglob:!0,value:ee,output:\"\"});continue}Te({type:\"text\",value:ee});continue}if(ee!==\"*\"){(ee===\"$\"||ee===\"^\")&&(ee=`\\\\${ee}`);let P=J7e.exec(H());P&&(ee+=P[0],g.index+=P[0].length),Te({type:\"text\",value:ee});continue}if(ne&&(ne.type===\"globstar\"||ne.star===!0)){ne.type=\"star\",ne.star=!0,ne.value+=ee,ne.output=we,g.backtrack=!0,g.globstar=!0,at(ee);continue}let b=H();if(r.noextglob!==!0&&/^\\([^?]/.test(b)){Je(\"star\",ee);continue}if(ne.type===\"star\"){if(r.noglobstar===!0){at(ee);continue}let P=ne.prev,y=P.prev,F=P.type===\"slash\"||P.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||b[0]&&b[0]!==\"/\")){Te({type:\"star\",value:ee,output:\"\"});continue}let X=g.braces>0&&(P.type===\"comma\"||P.type===\"brace\"),Z=Ee.length&&(P.type===\"pipe\"||P.type===\"paren\");if(!F&&P.type!==\"paren\"&&!X&&!Z){Te({type:\"star\",value:ee,output:\"\"});continue}for(;b.slice(0,3)===\"/**\";){let ie=t[g.index+4];if(ie&&ie!==\"/\")break;b=b.slice(3),at(\"/**\",3)}if(P.type===\"bos\"&&Ie()){ne.type=\"globstar\",ne.value+=ee,ne.output=me(r),g.output=ne.output,g.globstar=!0,at(ee);continue}if(P.type===\"slash\"&&P.prev.type!==\"bos\"&&!z&&Ie()){g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type=\"globstar\",ne.output=me(r)+(r.strictSlashes?\")\":\"|$)\"),ne.value+=ee,g.globstar=!0,g.output+=P.output+ne.output,at(ee);continue}if(P.type===\"slash\"&&P.prev.type!==\"bos\"&&b[0]===\"/\"){let ie=b[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type=\"globstar\",ne.output=`${me(r)}${x}|${x}${ie})`,ne.value+=ee,g.output+=P.output+ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}if(P.type===\"bos\"&&b[0]===\"/\"){ne.type=\"globstar\",ne.value+=ee,ne.output=`(?:^|${x}|${me(r)}${x})`,g.output=ne.output,g.globstar=!0,at(ee+At()),Te({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-ne.output.length),ne.type=\"globstar\",ne.output=me(r),ne.value+=ee,g.output+=ne.output,g.globstar=!0,at(ee);continue}let w={type:\"star\",value:ee,output:we};if(r.bash===!0){w.output=\".*?\",(ne.type===\"bos\"||ne.type===\"slash\")&&(w.output=he+w.output),Te(w);continue}if(ne&&(ne.type===\"bracket\"||ne.type===\"paren\")&&r.regex===!0){w.output=ee,Te(w);continue}(g.index===g.start||ne.type===\"slash\"||ne.type===\"dot\")&&(ne.type===\"dot\"?(g.output+=U,ne.output+=U):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=he,ne.output+=he),Fe()!==\"*\"&&(g.output+=C,ne.output+=C)),Te(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"]\"));g.output=nl.escapeLast(g.output,\"[\"),He(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\")\"));g.output=nl.escapeLast(g.output,\"(\"),He(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ty(\"closing\",\"}\"));g.output=nl.escapeLast(g.output,\"{\"),He(\"braces\")}if(r.strictSlashes!==!0&&(ne.type===\"star\"||ne.type===\"bracket\")&&Te({type:\"maybe_slash\",value:\"\",output:`${x}?`}),g.backtrack===!0){g.output=\"\";for(let b of g.tokens)g.output+=b.output!=null?b.output:b.value,b.suffix&&(g.output+=b.suffix)}return g};NN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength==\"number\"?Math.min(LS,r.maxLength):LS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=DZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:I,NO_DOTS_SLASH:v,STAR:x,START_ANCHOR:C}=NS.globChars(n),R=r.dot?I:E,L=r.dot?v:E,U=r.capture?\"\":\"?:\",J={negated:!1,prefix:\"\"},te=r.bash===!0?\".*?\":x;r.capture&&(te=`(${te})`);let ae=he=>he.noglobstar===!0?te:`(${U}(?:(?!${C}${he.dot?h:u}).)*?)`,fe=he=>{switch(he){case\"*\":return`${R}${p}${te}`;case\".*\":return`${u}${p}${te}`;case\"*.*\":return`${R}${te}${u}${p}${te}`;case\"*/*\":return`${R}${te}${A}${p}${L}${te}`;case\"**\":return R+ae(r);case\"**/*\":return`(?:${R}${ae(r)}${A})?${L}${p}${te}`;case\"**/*.*\":return`(?:${R}${ae(r)}${A})?${L}${te}${u}${p}${te}`;case\"**/.*\":return`(?:${R}${ae(r)}${A})?${u}${p}${te}`;default:{let Be=/^(.*?)\\.(\\w+)$/.exec(he);if(!Be)return;let we=fe(Be[1]);return we?we+u+Be[2]:void 0}}},ce=nl.removePrefix(t,J),me=fe(ce);return me&&r.strictSlashes!==!0&&(me+=`${A}?`),me};SZ.exports=NN});var xZ=_((zQt,bZ)=>{\"use strict\";var Z7e=ve(\"path\"),$7e=vZ(),LN=PZ(),ON=kI(),eYe=xI(),tYe=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Mi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(v=>Mi(v,e,r));return v=>{for(let x of E){let C=x(v);if(C)return C}return!1}}let o=tYe(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!o)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=ON.isWindows(e),u=o?Mi.compileRe(t,e):Mi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Mi(a.ignore,E,r)}let h=(E,I=!1)=>{let{isMatch:v,match:x,output:C}=Mi.test(E,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:E,output:C,match:x,isMatch:v};return typeof a.onResult==\"function\"&&a.onResult(R),v===!1?(R.isMatch=!1,I?R:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(R),R.isMatch=!1,I?R:!1):(typeof a.onMatch==\"function\"&&a.onMatch(R),I?R:!0)};return r&&(h.state=A),h};Mi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},u=n.format||(a?ON.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Mi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Mi.matchBase=(t,e,r,o=ON.isWindows(r))=>(e instanceof RegExp?e:Mi.makeRe(e,r)).test(Z7e.basename(t));Mi.isMatch=(t,e,r)=>Mi(e,r)(t);Mi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Mi.parse(r,e)):LN(t,{...e,fastpaths:!1});Mi.scan=(t,e)=>$7e(t,e);Mi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",u=a.contains?\"\":\"$\",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Mi.toRegex(A,e);return o===!0&&(p.state=t),p};Mi.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]===\".\"||t[0]===\"*\")&&(a.output=LN.fastpaths(t,e)),a.output||(a=LN(t,e)),Mi.compileRe(a,e,r,o)};Mi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?\"i\":\"\"))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Mi.constants=eYe;bZ.exports=Mi});var QZ=_((XQt,kZ)=>{\"use strict\";kZ.exports=xZ()});var Zo=_((ZQt,NZ)=>{\"use strict\";var RZ=ve(\"util\"),TZ=AZ(),Vu=QZ(),MN=kI(),FZ=t=>t===\"\"||t===\"./\",yi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let I=Vu(String(e[E]),{...r,onResult:A},!0),v=I.state.negated||I.state.negatedExtglob;v&&u++;for(let x of t){let C=I(x,!0);!(v?!C.isMatch:C.isMatch)||(v?o.add(C.output):(o.delete(C.output),a.add(C.output)))}}let h=(u===e.length?[...n]:[...a]).filter(E=>!o.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${e.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\\\/g,\"\")):e}return h};yi.match=yi;yi.matcher=(t,e)=>Vu(t,e);yi.isMatch=(t,e,r)=>Vu(e,r)(t);yi.any=yi.isMatch;yi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(yi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};yi.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);if(Array.isArray(e))return e.some(o=>yi.contains(t,o,r));if(typeof e==\"string\"){if(FZ(t)||FZ(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return yi.isMatch(t,e,{...r,contains:!0})};yi.matchKeys=(t,e,r)=>{if(!MN.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let o=yi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};yi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};yi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};yi.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${RZ.inspect(t)}\"`);return[].concat(e).every(o=>Vu(o,r)(t))};yi.capture=(t,e,r)=>{let o=MN.isWindows(r),n=Vu.makeRe(String(t),{...r,capture:!0}).exec(o?MN.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?\"\":u)};yi.makeRe=(...t)=>Vu.makeRe(...t);yi.scan=(...t)=>Vu.scan(...t);yi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of TZ(String(o),e))r.push(Vu.parse(a,e));return r};yi.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:TZ(t,e)};yi.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return yi.braces(t,{...e,expand:!0})};NZ.exports=yi});var OZ=_(($Qt,LZ)=>{\"use strict\";LZ.exports=({onlyFirst:t=!1}={})=>{let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t?void 0:\"g\")}});var OS=_((eFt,MZ)=>{\"use strict\";var rYe=OZ();MZ.exports=t=>typeof t==\"string\"?t.replace(rYe(),\"\"):t});var _Z=_((tFt,UZ)=>{function nYe(){this.__data__=[],this.size=0}UZ.exports=nYe});var Ny=_((rFt,HZ)=>{function iYe(t,e){return t===e||t!==t&&e!==e}HZ.exports=iYe});var FI=_((nFt,qZ)=>{var sYe=Ny();function oYe(t,e){for(var r=t.length;r--;)if(sYe(t[r][0],e))return r;return-1}qZ.exports=oYe});var GZ=_((iFt,jZ)=>{var aYe=FI(),lYe=Array.prototype,cYe=lYe.splice;function uYe(t){var e=this.__data__,r=aYe(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():cYe.call(e,r,1),--this.size,!0}jZ.exports=uYe});var WZ=_((sFt,YZ)=>{var AYe=FI();function fYe(t){var e=this.__data__,r=AYe(e,t);return r<0?void 0:e[r][1]}YZ.exports=fYe});var VZ=_((oFt,KZ)=>{var pYe=FI();function hYe(t){return pYe(this.__data__,t)>-1}KZ.exports=hYe});var zZ=_((aFt,JZ)=>{var gYe=FI();function dYe(t,e){var r=this.__data__,o=gYe(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}JZ.exports=dYe});var RI=_((lFt,XZ)=>{var mYe=_Z(),yYe=GZ(),EYe=WZ(),CYe=VZ(),wYe=zZ();function Ly(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ly.prototype.clear=mYe;Ly.prototype.delete=yYe;Ly.prototype.get=EYe;Ly.prototype.has=CYe;Ly.prototype.set=wYe;XZ.exports=Ly});var $Z=_((cFt,ZZ)=>{var IYe=RI();function BYe(){this.__data__=new IYe,this.size=0}ZZ.exports=BYe});var t$=_((uFt,e$)=>{function vYe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}e$.exports=vYe});var n$=_((AFt,r$)=>{function DYe(t){return this.__data__.get(t)}r$.exports=DYe});var s$=_((fFt,i$)=>{function SYe(t){return this.__data__.has(t)}i$.exports=SYe});var UN=_((pFt,o$)=>{var PYe=typeof global==\"object\"&&global&&global.Object===Object&&global;o$.exports=PYe});var _l=_((hFt,a$)=>{var bYe=UN(),xYe=typeof self==\"object\"&&self&&self.Object===Object&&self,kYe=bYe||xYe||Function(\"return this\")();a$.exports=kYe});var pd=_((gFt,l$)=>{var QYe=_l(),FYe=QYe.Symbol;l$.exports=FYe});var f$=_((dFt,A$)=>{var c$=pd(),u$=Object.prototype,RYe=u$.hasOwnProperty,TYe=u$.toString,TI=c$?c$.toStringTag:void 0;function NYe(t){var e=RYe.call(t,TI),r=t[TI];try{t[TI]=void 0;var o=!0}catch{}var a=TYe.call(t);return o&&(e?t[TI]=r:delete t[TI]),a}A$.exports=NYe});var h$=_((mFt,p$)=>{var LYe=Object.prototype,OYe=LYe.toString;function MYe(t){return OYe.call(t)}p$.exports=MYe});var hd=_((yFt,m$)=>{var g$=pd(),UYe=f$(),_Ye=h$(),HYe=\"[object Null]\",qYe=\"[object Undefined]\",d$=g$?g$.toStringTag:void 0;function jYe(t){return t==null?t===void 0?qYe:HYe:d$&&d$ in Object(t)?UYe(t):_Ye(t)}m$.exports=jYe});var il=_((EFt,y$)=>{function GYe(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}y$.exports=GYe});var MS=_((CFt,E$)=>{var YYe=hd(),WYe=il(),KYe=\"[object AsyncFunction]\",VYe=\"[object Function]\",JYe=\"[object GeneratorFunction]\",zYe=\"[object Proxy]\";function XYe(t){if(!WYe(t))return!1;var e=YYe(t);return e==VYe||e==JYe||e==KYe||e==zYe}E$.exports=XYe});var w$=_((wFt,C$)=>{var ZYe=_l(),$Ye=ZYe[\"__core-js_shared__\"];C$.exports=$Ye});var v$=_((IFt,B$)=>{var _N=w$(),I$=function(){var t=/[^.]+$/.exec(_N&&_N.keys&&_N.keys.IE_PROTO||\"\");return t?\"Symbol(src)_1.\"+t:\"\"}();function eWe(t){return!!I$&&I$ in t}B$.exports=eWe});var HN=_((BFt,D$)=>{var tWe=Function.prototype,rWe=tWe.toString;function nWe(t){if(t!=null){try{return rWe.call(t)}catch{}try{return t+\"\"}catch{}}return\"\"}D$.exports=nWe});var P$=_((vFt,S$)=>{var iWe=MS(),sWe=v$(),oWe=il(),aWe=HN(),lWe=/[\\\\^$.*+?()[\\]{}|]/g,cWe=/^\\[object .+?Constructor\\]$/,uWe=Function.prototype,AWe=Object.prototype,fWe=uWe.toString,pWe=AWe.hasOwnProperty,hWe=RegExp(\"^\"+fWe.call(pWe).replace(lWe,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function gWe(t){if(!oWe(t)||sWe(t))return!1;var e=iWe(t)?hWe:cWe;return e.test(aWe(t))}S$.exports=gWe});var x$=_((DFt,b$)=>{function dWe(t,e){return t?.[e]}b$.exports=dWe});var zp=_((SFt,k$)=>{var mWe=P$(),yWe=x$();function EWe(t,e){var r=yWe(t,e);return mWe(r)?r:void 0}k$.exports=EWe});var US=_((PFt,Q$)=>{var CWe=zp(),wWe=_l(),IWe=CWe(wWe,\"Map\");Q$.exports=IWe});var NI=_((bFt,F$)=>{var BWe=zp(),vWe=BWe(Object,\"create\");F$.exports=vWe});var N$=_((xFt,T$)=>{var R$=NI();function DWe(){this.__data__=R$?R$(null):{},this.size=0}T$.exports=DWe});var O$=_((kFt,L$)=>{function SWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}L$.exports=SWe});var U$=_((QFt,M$)=>{var PWe=NI(),bWe=\"__lodash_hash_undefined__\",xWe=Object.prototype,kWe=xWe.hasOwnProperty;function QWe(t){var e=this.__data__;if(PWe){var r=e[t];return r===bWe?void 0:r}return kWe.call(e,t)?e[t]:void 0}M$.exports=QWe});var H$=_((FFt,_$)=>{var FWe=NI(),RWe=Object.prototype,TWe=RWe.hasOwnProperty;function NWe(t){var e=this.__data__;return FWe?e[t]!==void 0:TWe.call(e,t)}_$.exports=NWe});var j$=_((RFt,q$)=>{var LWe=NI(),OWe=\"__lodash_hash_undefined__\";function MWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=LWe&&e===void 0?OWe:e,this}q$.exports=MWe});var Y$=_((TFt,G$)=>{var UWe=N$(),_We=O$(),HWe=U$(),qWe=H$(),jWe=j$();function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Oy.prototype.clear=UWe;Oy.prototype.delete=_We;Oy.prototype.get=HWe;Oy.prototype.has=qWe;Oy.prototype.set=jWe;G$.exports=Oy});var V$=_((NFt,K$)=>{var W$=Y$(),GWe=RI(),YWe=US();function WWe(){this.size=0,this.__data__={hash:new W$,map:new(YWe||GWe),string:new W$}}K$.exports=WWe});var z$=_((LFt,J$)=>{function KWe(t){var e=typeof t;return e==\"string\"||e==\"number\"||e==\"symbol\"||e==\"boolean\"?t!==\"__proto__\":t===null}J$.exports=KWe});var LI=_((OFt,X$)=>{var VWe=z$();function JWe(t,e){var r=t.__data__;return VWe(e)?r[typeof e==\"string\"?\"string\":\"hash\"]:r.map}X$.exports=JWe});var $$=_((MFt,Z$)=>{var zWe=LI();function XWe(t){var e=zWe(this,t).delete(t);return this.size-=e?1:0,e}Z$.exports=XWe});var tee=_((UFt,eee)=>{var ZWe=LI();function $We(t){return ZWe(this,t).get(t)}eee.exports=$We});var nee=_((_Ft,ree)=>{var eKe=LI();function tKe(t){return eKe(this,t).has(t)}ree.exports=tKe});var see=_((HFt,iee)=>{var rKe=LI();function nKe(t,e){var r=rKe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}iee.exports=nKe});var _S=_((qFt,oee)=>{var iKe=V$(),sKe=$$(),oKe=tee(),aKe=nee(),lKe=see();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}My.prototype.clear=iKe;My.prototype.delete=sKe;My.prototype.get=oKe;My.prototype.has=aKe;My.prototype.set=lKe;oee.exports=My});var lee=_((jFt,aee)=>{var cKe=RI(),uKe=US(),AKe=_S(),fKe=200;function pKe(t,e){var r=this.__data__;if(r instanceof cKe){var o=r.__data__;if(!uKe||o.length<fKe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new AKe(o)}return r.set(t,e),this.size=r.size,this}aee.exports=pKe});var HS=_((GFt,cee)=>{var hKe=RI(),gKe=$Z(),dKe=t$(),mKe=n$(),yKe=s$(),EKe=lee();function Uy(t){var e=this.__data__=new hKe(t);this.size=e.size}Uy.prototype.clear=gKe;Uy.prototype.delete=dKe;Uy.prototype.get=mKe;Uy.prototype.has=yKe;Uy.prototype.set=EKe;cee.exports=Uy});var Aee=_((YFt,uee)=>{var CKe=\"__lodash_hash_undefined__\";function wKe(t){return this.__data__.set(t,CKe),this}uee.exports=wKe});var pee=_((WFt,fee)=>{function IKe(t){return this.__data__.has(t)}fee.exports=IKe});var gee=_((KFt,hee)=>{var BKe=_S(),vKe=Aee(),DKe=pee();function qS(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new BKe;++e<r;)this.add(t[e])}qS.prototype.add=qS.prototype.push=vKe;qS.prototype.has=DKe;hee.exports=qS});var mee=_((VFt,dee)=>{function SKe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}dee.exports=SKe});var Eee=_((JFt,yee)=>{function PKe(t,e){return t.has(e)}yee.exports=PKe});var qN=_((zFt,Cee)=>{var bKe=gee(),xKe=mee(),kKe=Eee(),QKe=1,FKe=2;function RKe(t,e,r,o,a,n){var u=r&QKe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),E=n.get(e);if(h&&E)return h==e&&E==t;var I=-1,v=!0,x=r&FKe?new bKe:void 0;for(n.set(t,e),n.set(e,t);++I<A;){var C=t[I],R=e[I];if(o)var L=u?o(R,C,I,e,t,n):o(C,R,I,t,e,n);if(L!==void 0){if(L)continue;v=!1;break}if(x){if(!xKe(e,function(U,J){if(!kKe(x,J)&&(C===U||a(C,U,r,o,n)))return x.push(J)})){v=!1;break}}else if(!(C===R||a(C,R,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}Cee.exports=RKe});var jN=_((XFt,wee)=>{var TKe=_l(),NKe=TKe.Uint8Array;wee.exports=NKe});var Bee=_((ZFt,Iee)=>{function LKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}Iee.exports=LKe});var Dee=_(($Ft,vee)=>{function OKe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}vee.exports=OKe});var kee=_((eRt,xee)=>{var See=pd(),Pee=jN(),MKe=Ny(),UKe=qN(),_Ke=Bee(),HKe=Dee(),qKe=1,jKe=2,GKe=\"[object Boolean]\",YKe=\"[object Date]\",WKe=\"[object Error]\",KKe=\"[object Map]\",VKe=\"[object Number]\",JKe=\"[object RegExp]\",zKe=\"[object Set]\",XKe=\"[object String]\",ZKe=\"[object Symbol]\",$Ke=\"[object ArrayBuffer]\",eVe=\"[object DataView]\",bee=See?See.prototype:void 0,GN=bee?bee.valueOf:void 0;function tVe(t,e,r,o,a,n,u){switch(r){case eVe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case $Ke:return!(t.byteLength!=e.byteLength||!n(new Pee(t),new Pee(e)));case GKe:case YKe:case VKe:return MKe(+t,+e);case WKe:return t.name==e.name&&t.message==e.message;case JKe:case XKe:return t==e+\"\";case KKe:var A=_Ke;case zKe:var p=o&qKe;if(A||(A=HKe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=jKe,u.set(t,e);var E=UKe(A(t),A(e),o,a,n,u);return u.delete(t),E;case ZKe:if(GN)return GN.call(t)==GN.call(e)}return!1}xee.exports=tVe});var jS=_((tRt,Qee)=>{function rVe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}Qee.exports=rVe});var Hl=_((rRt,Fee)=>{var nVe=Array.isArray;Fee.exports=nVe});var YN=_((nRt,Ree)=>{var iVe=jS(),sVe=Hl();function oVe(t,e,r){var o=e(t);return sVe(t)?o:iVe(o,r(t))}Ree.exports=oVe});var Nee=_((iRt,Tee)=>{function aVe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}Tee.exports=aVe});var WN=_((sRt,Lee)=>{function lVe(){return[]}Lee.exports=lVe});var GS=_((oRt,Mee)=>{var cVe=Nee(),uVe=WN(),AVe=Object.prototype,fVe=AVe.propertyIsEnumerable,Oee=Object.getOwnPropertySymbols,pVe=Oee?function(t){return t==null?[]:(t=Object(t),cVe(Oee(t),function(e){return fVe.call(t,e)}))}:uVe;Mee.exports=pVe});var _ee=_((aRt,Uee)=>{function hVe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Uee.exports=hVe});var Ju=_((lRt,Hee)=>{function gVe(t){return t!=null&&typeof t==\"object\"}Hee.exports=gVe});var jee=_((cRt,qee)=>{var dVe=hd(),mVe=Ju(),yVe=\"[object Arguments]\";function EVe(t){return mVe(t)&&dVe(t)==yVe}qee.exports=EVe});var OI=_((uRt,Wee)=>{var Gee=jee(),CVe=Ju(),Yee=Object.prototype,wVe=Yee.hasOwnProperty,IVe=Yee.propertyIsEnumerable,BVe=Gee(function(){return arguments}())?Gee:function(t){return CVe(t)&&wVe.call(t,\"callee\")&&!IVe.call(t,\"callee\")};Wee.exports=BVe});var Vee=_((ARt,Kee)=>{function vVe(){return!1}Kee.exports=vVe});var UI=_((MI,_y)=>{var DVe=_l(),SVe=Vee(),Xee=typeof MI==\"object\"&&MI&&!MI.nodeType&&MI,Jee=Xee&&typeof _y==\"object\"&&_y&&!_y.nodeType&&_y,PVe=Jee&&Jee.exports===Xee,zee=PVe?DVe.Buffer:void 0,bVe=zee?zee.isBuffer:void 0,xVe=bVe||SVe;_y.exports=xVe});var _I=_((fRt,Zee)=>{var kVe=9007199254740991,QVe=/^(?:0|[1-9]\\d*)$/;function FVe(t,e){var r=typeof t;return e=e??kVe,!!e&&(r==\"number\"||r!=\"symbol\"&&QVe.test(t))&&t>-1&&t%1==0&&t<e}Zee.exports=FVe});var YS=_((pRt,$ee)=>{var RVe=9007199254740991;function TVe(t){return typeof t==\"number\"&&t>-1&&t%1==0&&t<=RVe}$ee.exports=TVe});var tte=_((hRt,ete)=>{var NVe=hd(),LVe=YS(),OVe=Ju(),MVe=\"[object Arguments]\",UVe=\"[object Array]\",_Ve=\"[object Boolean]\",HVe=\"[object Date]\",qVe=\"[object Error]\",jVe=\"[object Function]\",GVe=\"[object Map]\",YVe=\"[object Number]\",WVe=\"[object Object]\",KVe=\"[object RegExp]\",VVe=\"[object Set]\",JVe=\"[object String]\",zVe=\"[object WeakMap]\",XVe=\"[object ArrayBuffer]\",ZVe=\"[object DataView]\",$Ve=\"[object Float32Array]\",eJe=\"[object Float64Array]\",tJe=\"[object Int8Array]\",rJe=\"[object Int16Array]\",nJe=\"[object Int32Array]\",iJe=\"[object Uint8Array]\",sJe=\"[object Uint8ClampedArray]\",oJe=\"[object Uint16Array]\",aJe=\"[object Uint32Array]\",ui={};ui[$Ve]=ui[eJe]=ui[tJe]=ui[rJe]=ui[nJe]=ui[iJe]=ui[sJe]=ui[oJe]=ui[aJe]=!0;ui[MVe]=ui[UVe]=ui[XVe]=ui[_Ve]=ui[ZVe]=ui[HVe]=ui[qVe]=ui[jVe]=ui[GVe]=ui[YVe]=ui[WVe]=ui[KVe]=ui[VVe]=ui[JVe]=ui[zVe]=!1;function lJe(t){return OVe(t)&&LVe(t.length)&&!!ui[NVe(t)]}ete.exports=lJe});var WS=_((gRt,rte)=>{function cJe(t){return function(e){return t(e)}}rte.exports=cJe});var KS=_((HI,Hy)=>{var uJe=UN(),nte=typeof HI==\"object\"&&HI&&!HI.nodeType&&HI,qI=nte&&typeof Hy==\"object\"&&Hy&&!Hy.nodeType&&Hy,AJe=qI&&qI.exports===nte,KN=AJe&&uJe.process,fJe=function(){try{var t=qI&&qI.require&&qI.require(\"util\").types;return t||KN&&KN.binding&&KN.binding(\"util\")}catch{}}();Hy.exports=fJe});var VS=_((dRt,ote)=>{var pJe=tte(),hJe=WS(),ite=KS(),ste=ite&&ite.isTypedArray,gJe=ste?hJe(ste):pJe;ote.exports=gJe});var VN=_((mRt,ate)=>{var dJe=_ee(),mJe=OI(),yJe=Hl(),EJe=UI(),CJe=_I(),wJe=VS(),IJe=Object.prototype,BJe=IJe.hasOwnProperty;function vJe(t,e){var r=yJe(t),o=!r&&mJe(t),a=!r&&!o&&EJe(t),n=!r&&!o&&!a&&wJe(t),u=r||o||a||n,A=u?dJe(t.length,String):[],p=A.length;for(var h in t)(e||BJe.call(t,h))&&!(u&&(h==\"length\"||a&&(h==\"offset\"||h==\"parent\")||n&&(h==\"buffer\"||h==\"byteLength\"||h==\"byteOffset\")||CJe(h,p)))&&A.push(h);return A}ate.exports=vJe});var JS=_((yRt,lte)=>{var DJe=Object.prototype;function SJe(t){var e=t&&t.constructor,r=typeof e==\"function\"&&e.prototype||DJe;return t===r}lte.exports=SJe});var JN=_((ERt,cte)=>{function PJe(t,e){return function(r){return t(e(r))}}cte.exports=PJe});var Ate=_((CRt,ute)=>{var bJe=JN(),xJe=bJe(Object.keys,Object);ute.exports=xJe});var pte=_((wRt,fte)=>{var kJe=JS(),QJe=Ate(),FJe=Object.prototype,RJe=FJe.hasOwnProperty;function TJe(t){if(!kJe(t))return QJe(t);var e=[];for(var r in Object(t))RJe.call(t,r)&&r!=\"constructor\"&&e.push(r);return e}fte.exports=TJe});var jI=_((IRt,hte)=>{var NJe=MS(),LJe=YS();function OJe(t){return t!=null&&LJe(t.length)&&!NJe(t)}hte.exports=OJe});var zS=_((BRt,gte)=>{var MJe=VN(),UJe=pte(),_Je=jI();function HJe(t){return _Je(t)?MJe(t):UJe(t)}gte.exports=HJe});var zN=_((vRt,dte)=>{var qJe=YN(),jJe=GS(),GJe=zS();function YJe(t){return qJe(t,GJe,jJe)}dte.exports=YJe});var Ete=_((DRt,yte)=>{var mte=zN(),WJe=1,KJe=Object.prototype,VJe=KJe.hasOwnProperty;function JJe(t,e,r,o,a,n){var u=r&WJe,A=mte(t),p=A.length,h=mte(e),E=h.length;if(p!=E&&!u)return!1;for(var I=p;I--;){var v=A[I];if(!(u?v in e:VJe.call(e,v)))return!1}var x=n.get(t),C=n.get(e);if(x&&C)return x==e&&C==t;var R=!0;n.set(t,e),n.set(e,t);for(var L=u;++I<p;){v=A[I];var U=t[v],J=e[v];if(o)var te=u?o(J,U,v,e,t,n):o(U,J,v,t,e,n);if(!(te===void 0?U===J||a(U,J,r,o,n):te)){R=!1;break}L||(L=v==\"constructor\")}if(R&&!L){var ae=t.constructor,fe=e.constructor;ae!=fe&&\"constructor\"in t&&\"constructor\"in e&&!(typeof ae==\"function\"&&ae instanceof ae&&typeof fe==\"function\"&&fe instanceof fe)&&(R=!1)}return n.delete(t),n.delete(e),R}yte.exports=JJe});var wte=_((SRt,Cte)=>{var zJe=zp(),XJe=_l(),ZJe=zJe(XJe,\"DataView\");Cte.exports=ZJe});var Bte=_((PRt,Ite)=>{var $Je=zp(),eze=_l(),tze=$Je(eze,\"Promise\");Ite.exports=tze});var Dte=_((bRt,vte)=>{var rze=zp(),nze=_l(),ize=rze(nze,\"Set\");vte.exports=ize});var Pte=_((xRt,Ste)=>{var sze=zp(),oze=_l(),aze=sze(oze,\"WeakMap\");Ste.exports=aze});var GI=_((kRt,Tte)=>{var XN=wte(),ZN=US(),$N=Bte(),eL=Dte(),tL=Pte(),Rte=hd(),qy=HN(),bte=\"[object Map]\",lze=\"[object Object]\",xte=\"[object Promise]\",kte=\"[object Set]\",Qte=\"[object WeakMap]\",Fte=\"[object DataView]\",cze=qy(XN),uze=qy(ZN),Aze=qy($N),fze=qy(eL),pze=qy(tL),gd=Rte;(XN&&gd(new XN(new ArrayBuffer(1)))!=Fte||ZN&&gd(new ZN)!=bte||$N&&gd($N.resolve())!=xte||eL&&gd(new eL)!=kte||tL&&gd(new tL)!=Qte)&&(gd=function(t){var e=Rte(t),r=e==lze?t.constructor:void 0,o=r?qy(r):\"\";if(o)switch(o){case cze:return Fte;case uze:return bte;case Aze:return xte;case fze:return kte;case pze:return Qte}return e});Tte.exports=gd});var qte=_((QRt,Hte)=>{var rL=HS(),hze=qN(),gze=kee(),dze=Ete(),Nte=GI(),Lte=Hl(),Ote=UI(),mze=VS(),yze=1,Mte=\"[object Arguments]\",Ute=\"[object Array]\",XS=\"[object Object]\",Eze=Object.prototype,_te=Eze.hasOwnProperty;function Cze(t,e,r,o,a,n){var u=Lte(t),A=Lte(e),p=u?Ute:Nte(t),h=A?Ute:Nte(e);p=p==Mte?XS:p,h=h==Mte?XS:h;var E=p==XS,I=h==XS,v=p==h;if(v&&Ote(t)){if(!Ote(e))return!1;u=!0,E=!1}if(v&&!E)return n||(n=new rL),u||mze(t)?hze(t,e,r,o,a,n):gze(t,e,p,r,o,a,n);if(!(r&yze)){var x=E&&_te.call(t,\"__wrapped__\"),C=I&&_te.call(e,\"__wrapped__\");if(x||C){var R=x?t.value():t,L=C?e.value():e;return n||(n=new rL),a(R,L,r,o,n)}}return v?(n||(n=new rL),dze(t,e,r,o,a,n)):!1}Hte.exports=Cze});var Wte=_((FRt,Yte)=>{var wze=qte(),jte=Ju();function Gte(t,e,r,o,a){return t===e?!0:t==null||e==null||!jte(t)&&!jte(e)?t!==t&&e!==e:wze(t,e,r,o,Gte,a)}Yte.exports=Gte});var Vte=_((RRt,Kte)=>{var Ize=Wte();function Bze(t,e){return Ize(t,e)}Kte.exports=Bze});var nL=_((TRt,Jte)=>{var vze=zp(),Dze=function(){try{var t=vze(Object,\"defineProperty\");return t({},\"\",{}),t}catch{}}();Jte.exports=Dze});var ZS=_((NRt,Xte)=>{var zte=nL();function Sze(t,e,r){e==\"__proto__\"&&zte?zte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Xte.exports=Sze});var iL=_((LRt,Zte)=>{var Pze=ZS(),bze=Ny();function xze(t,e,r){(r!==void 0&&!bze(t[e],r)||r===void 0&&!(e in t))&&Pze(t,e,r)}Zte.exports=xze});var ere=_((ORt,$te)=>{function kze(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}$te.exports=kze});var rre=_((MRt,tre)=>{var Qze=ere(),Fze=Qze();tre.exports=Fze});var sL=_((YI,jy)=>{var Rze=_l(),ore=typeof YI==\"object\"&&YI&&!YI.nodeType&&YI,nre=ore&&typeof jy==\"object\"&&jy&&!jy.nodeType&&jy,Tze=nre&&nre.exports===ore,ire=Tze?Rze.Buffer:void 0,sre=ire?ire.allocUnsafe:void 0;function Nze(t,e){if(e)return t.slice();var r=t.length,o=sre?sre(r):new t.constructor(r);return t.copy(o),o}jy.exports=Nze});var $S=_((URt,lre)=>{var are=jN();function Lze(t){var e=new t.constructor(t.byteLength);return new are(e).set(new are(t)),e}lre.exports=Lze});var oL=_((_Rt,cre)=>{var Oze=$S();function Mze(t,e){var r=e?Oze(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}cre.exports=Mze});var eP=_((HRt,ure)=>{function Uze(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}ure.exports=Uze});var pre=_((qRt,fre)=>{var _ze=il(),Are=Object.create,Hze=function(){function t(){}return function(e){if(!_ze(e))return{};if(Are)return Are(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();fre.exports=Hze});var tP=_((jRt,hre)=>{var qze=JN(),jze=qze(Object.getPrototypeOf,Object);hre.exports=jze});var aL=_((GRt,gre)=>{var Gze=pre(),Yze=tP(),Wze=JS();function Kze(t){return typeof t.constructor==\"function\"&&!Wze(t)?Gze(Yze(t)):{}}gre.exports=Kze});var mre=_((YRt,dre)=>{var Vze=jI(),Jze=Ju();function zze(t){return Jze(t)&&Vze(t)}dre.exports=zze});var lL=_((WRt,Ere)=>{var Xze=hd(),Zze=tP(),$ze=Ju(),eXe=\"[object Object]\",tXe=Function.prototype,rXe=Object.prototype,yre=tXe.toString,nXe=rXe.hasOwnProperty,iXe=yre.call(Object);function sXe(t){if(!$ze(t)||Xze(t)!=eXe)return!1;var e=Zze(t);if(e===null)return!0;var r=nXe.call(e,\"constructor\")&&e.constructor;return typeof r==\"function\"&&r instanceof r&&yre.call(r)==iXe}Ere.exports=sXe});var cL=_((KRt,Cre)=>{function oXe(t,e){if(!(e===\"constructor\"&&typeof t[e]==\"function\")&&e!=\"__proto__\")return t[e]}Cre.exports=oXe});var rP=_((VRt,wre)=>{var aXe=ZS(),lXe=Ny(),cXe=Object.prototype,uXe=cXe.hasOwnProperty;function AXe(t,e,r){var o=t[e];(!(uXe.call(t,e)&&lXe(o,r))||r===void 0&&!(e in t))&&aXe(t,e,r)}wre.exports=AXe});var dd=_((JRt,Ire)=>{var fXe=rP(),pXe=ZS();function hXe(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?pXe(r,A,p):fXe(r,A,p)}return r}Ire.exports=hXe});var vre=_((zRt,Bre)=>{function gXe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Bre.exports=gXe});var Sre=_((XRt,Dre)=>{var dXe=il(),mXe=JS(),yXe=vre(),EXe=Object.prototype,CXe=EXe.hasOwnProperty;function wXe(t){if(!dXe(t))return yXe(t);var e=mXe(t),r=[];for(var o in t)o==\"constructor\"&&(e||!CXe.call(t,o))||r.push(o);return r}Dre.exports=wXe});var Gy=_((ZRt,Pre)=>{var IXe=VN(),BXe=Sre(),vXe=jI();function DXe(t){return vXe(t)?IXe(t,!0):BXe(t)}Pre.exports=DXe});var xre=_(($Rt,bre)=>{var SXe=dd(),PXe=Gy();function bXe(t){return SXe(t,PXe(t))}bre.exports=bXe});var Nre=_((eTt,Tre)=>{var kre=iL(),xXe=sL(),kXe=oL(),QXe=eP(),FXe=aL(),Qre=OI(),Fre=Hl(),RXe=mre(),TXe=UI(),NXe=MS(),LXe=il(),OXe=lL(),MXe=VS(),Rre=cL(),UXe=xre();function _Xe(t,e,r,o,a,n,u){var A=Rre(t,r),p=Rre(e,r),h=u.get(p);if(h){kre(t,r,h);return}var E=n?n(A,p,r+\"\",t,e,u):void 0,I=E===void 0;if(I){var v=Fre(p),x=!v&&TXe(p),C=!v&&!x&&MXe(p);E=p,v||x||C?Fre(A)?E=A:RXe(A)?E=QXe(A):x?(I=!1,E=xXe(p,!0)):C?(I=!1,E=kXe(p,!0)):E=[]:OXe(p)||Qre(p)?(E=A,Qre(A)?E=UXe(A):(!LXe(A)||NXe(A))&&(E=FXe(p))):I=!1}I&&(u.set(p,E),a(E,p,o,n,u),u.delete(p)),kre(t,r,E)}Tre.exports=_Xe});var Mre=_((tTt,Ore)=>{var HXe=HS(),qXe=iL(),jXe=rre(),GXe=Nre(),YXe=il(),WXe=Gy(),KXe=cL();function Lre(t,e,r,o,a){t!==e&&jXe(e,function(n,u){if(a||(a=new HXe),YXe(n))GXe(t,e,u,r,Lre,o,a);else{var A=o?o(KXe(t,u),n,u+\"\",t,e,a):void 0;A===void 0&&(A=n),qXe(t,u,A)}},WXe)}Ore.exports=Lre});var uL=_((rTt,Ure)=>{function VXe(t){return t}Ure.exports=VXe});var Hre=_((nTt,_re)=>{function JXe(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)}_re.exports=JXe});var AL=_((iTt,jre)=>{var zXe=Hre(),qre=Math.max;function XXe(t,e,r){return e=qre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=qre(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),zXe(t,this,A)}}jre.exports=XXe});var Yre=_((sTt,Gre)=>{function ZXe(t){return function(){return t}}Gre.exports=ZXe});var Vre=_((oTt,Kre)=>{var $Xe=Yre(),Wre=nL(),eZe=uL(),tZe=Wre?function(t,e){return Wre(t,\"toString\",{configurable:!0,enumerable:!1,value:$Xe(e),writable:!0})}:eZe;Kre.exports=tZe});var zre=_((aTt,Jre)=>{var rZe=800,nZe=16,iZe=Date.now;function sZe(t){var e=0,r=0;return function(){var o=iZe(),a=nZe-(o-r);if(r=o,a>0){if(++e>=rZe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Jre.exports=sZe});var fL=_((lTt,Xre)=>{var oZe=Vre(),aZe=zre(),lZe=aZe(oZe);Xre.exports=lZe});var $re=_((cTt,Zre)=>{var cZe=uL(),uZe=AL(),AZe=fL();function fZe(t,e){return AZe(uZe(t,e,cZe),t+\"\")}Zre.exports=fZe});var tne=_((uTt,ene)=>{var pZe=Ny(),hZe=jI(),gZe=_I(),dZe=il();function mZe(t,e,r){if(!dZe(r))return!1;var o=typeof e;return(o==\"number\"?hZe(r)&&gZe(e,r.length):o==\"string\"&&e in r)?pZe(r[e],t):!1}ene.exports=mZe});var nne=_((ATt,rne)=>{var yZe=$re(),EZe=tne();function CZe(t){return yZe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n==\"function\"?(a--,n):void 0,u&&EZe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}rne.exports=CZe});var sne=_((fTt,ine)=>{var wZe=Mre(),IZe=nne(),BZe=IZe(function(t,e,r,o){wZe(t,e,r,o)});ine.exports=BZe});var _e={};Vt(_e,{AsyncActions:()=>gL,BufferStream:()=>hL,CachingStrategy:()=>mne,DefaultStream:()=>dL,allSettledSafe:()=>Uc,assertNever:()=>yL,bufferStream:()=>Vy,buildIgnorePattern:()=>kZe,convertMapsToIndexableObjects:()=>iP,dynamicRequire:()=>Df,escapeRegExp:()=>DZe,getArrayWithDefault:()=>Yy,getFactoryWithDefault:()=>ol,getMapWithDefault:()=>Wy,getSetWithDefault:()=>md,groupBy:()=>wL,isIndexableObject:()=>pL,isPathLike:()=>QZe,isTaggedYarnVersion:()=>vZe,makeDeferred:()=>hne,mapAndFilter:()=>sl,mapAndFind:()=>KI,mergeIntoTarget:()=>Ene,overrideType:()=>SZe,parseBoolean:()=>VI,parseInt:()=>Jy,parseOptionalBoolean:()=>yne,plural:()=>nP,prettifyAsyncErrors:()=>Ky,prettifySyncErrors:()=>EL,releaseAfterUseAsync:()=>bZe,replaceEnvVariables:()=>sP,sortMap:()=>ks,toMerged:()=>FZe,tryParseOptionalBoolean:()=>CL,validateEnum:()=>PZe});function vZe(t){return!!(Ane.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function nP(t,{one:e,more:r,zero:o=r}){return t===0?o:t===1?e:r}function DZe(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function SZe(t){}function yL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function PZe(t,e){let r=Object.values(t);if(!r.includes(e))throw new it(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(\", \")})`);return e}function sl(t,e){let r=[];for(let o of t){let a=e(o);a!==fne&&r.push(a)}return r}function KI(t,e){for(let r of t){let o=e(r);if(o!==pne)return o}}function pL(t){return typeof t==\"object\"&&t!==null}async function Uc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status===\"rejected\")throw o.reason;r.push(o.value)}return r}function iP(t){if(t instanceof Map&&(t=Object.fromEntries(t)),pL(t))for(let e of Object.keys(t)){let r=t[e];pL(r)&&(t[e]=iP(r))}return t}function ol(t,e,r){let o=t.get(e);return typeof o>\"u\"&&t.set(e,o=r()),o}function Yy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function md(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function Wy(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function bZe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Ky(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function EL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Vy(t){return await new Promise((e,r)=>{let o=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{o.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(o))})})}function hne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function gne(t){return WI(ue.fromPortablePath(t))}function dne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=WI.cache[physicalPath];delete WI.cache[physicalPath];let result;try{result=gne(physicalPath);let freshCacheEntry=WI.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{WI.cache[physicalPath]=currentCacheEntry}return result}function xZe(t){let e=one.get(t),r=oe.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let o=dne(t);return one.set(t,{mtime:r.mtimeMs,instance:o}),o}function Df(t,{cachingStrategy:e=2}={}){switch(e){case 0:return dne(t);case 1:return xZe(t);case 2:return gne(t);default:throw new Error(\"Unsupported caching strategy\")}}function ks(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function kZe(t){return t.length===0?null:t.map(e=>`(${cne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function sP(t,{env:e}){let r=/\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.hasOwn(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new it(`Environment variable not found (${a})`)})}function VI(t){switch(t){case\"true\":case\"1\":case 1:case!0:return!0;case\"false\":case\"0\":case 0:case!1:return!1;default:throw new Error(`Couldn't parse \"${t}\" as a boolean`)}}function yne(t){return typeof t>\"u\"?t:VI(t)}function CL(t){try{return yne(t)}catch{return null}}function QZe(t){return!!(ue.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function Ene(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,lne.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,ane.default)(h,p))||u.push(p);return u}});return n}function FZe(...t){return Ene({},...t)}function wL(t,e){let r=Object.create(null);for(let o of t){let a=o[e];r[a]??=[],r[a].push(o)}return r}function Jy(t){return typeof t==\"string\"?Number.parseInt(t,10):t}var ane,lne,cne,une,Ane,mL,fne,pne,hL,gL,dL,WI,one,mne,ql=Et(()=>{St();qt();ane=$e(Vte()),lne=$e(sne()),cne=$e(Zo()),une=$e(id()),Ane=$e(zn()),mL=ve(\"stream\");fne=Symbol();sl.skip=fne;pne=Symbol();KI.skip=pne;hL=class extends mL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};gL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,une.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>\"u\"&&this.deferred.set(e,o=hne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},dL=class extends mL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},WI=eval(\"require\");one=new Map;mne=(o=>(o[o.NoCache=0]=\"NoCache\",o[o.FsTime=1]=\"FsTime\",o[o.Node=2]=\"Node\",o))(mne||{})});var zy,IL,BL,Cne=Et(()=>{zy=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(zy||{}),IL=(o=>(o.Dependency=\"Dependency\",o.PeerDependency=\"PeerDependency\",o.PeerDependencyMeta=\"PeerDependencyMeta\",o))(IL||{}),BL=(o=>(o.Inactive=\"inactive\",o.Redundant=\"redundant\",o.Active=\"active\",o))(BL||{})});var de={};Vt(de,{LogLevel:()=>uP,Style:()=>aP,Type:()=>yt,addLogFilterSupport:()=>XI,applyColor:()=>Vs,applyHyperlink:()=>Zy,applyStyle:()=>yd,json:()=>Ed,jsonOrPretty:()=>NZe,mark:()=>bL,pretty:()=>Mt,prettyField:()=>zu,prettyList:()=>PL,prettyTruncatedLocatorList:()=>cP,stripAnsi:()=>Xy.default,supportsColor:()=>lP,supportsHyperlinks:()=>SL,tuple:()=>_c});function wne(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let o=1024**r;return`${Math.floor(t*100/o)/100} ${e[r-1]}`}function _c(t,e){return[e,t]}function yd(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=zI.default.bold(e)),e}function Vs(t,e,r){if(!t.get(\"enableColors\"))return e;let o=RZe.get(r);if(o===null)return e;let a=typeof o>\"u\"?r:DL.level>=3?o[0]:o[1],n=typeof a==\"number\"?vL.ansi256(a):a.startsWith(\"#\")?vL.hex(a):vL[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function Zy(t,e,r){return t.get(\"enableHyperlinks\")?TZe?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Mt(t,e,r){if(e===null)return Vs(t,\"null\",yt.NULL);if(Object.hasOwn(oP,r))return oP[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Vs(t,e,r)}function PL(t,e,r,{separator:o=\", \"}={}){return[...e].map(a=>Mt(t,a,r)).join(o)}function Ed(t,e){if(t===null)return null;if(Object.hasOwn(oP,e))return oP[e].json(t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function NZe(t,e,[r,o]){return t?Ed(r,o):Mt(e,r,o)}function bL(t){return{Check:Vs(t,\"\\u2713\",\"green\"),Cross:Vs(t,\"\\u2718\",\"red\"),Question:Vs(t,\"?\",\"cyan\")}}function zu(t,{label:e,value:[r,o]}){return`${Mt(t,e,yt.CODE)}: ${Mt(t,r,o)}`}function cP(t,e,r){let o=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${qr(t,h)}, `,I=xL(h).length+2;if(o.length>0&&n<I)break;o.push([E,I]),n-=I,a.shift()}if(a.length===0)return o.map(([h])=>h).join(\"\").slice(0,-2);let u=\"X\".repeat(a.length.toString().length),A=`and ${u} more.`,p=a.length;for(;o.length>1&&n<A.length;)n+=o[o.length-1][1],p+=1,o.pop();return[o.map(([h])=>h).join(\"\"),A.replace(u,Mt(t,p,yt.NUMBER))].join(\"\")}function XI(t,{configuration:e}){let r=e.get(\"logFilters\"),o=new Map,a=new Map,n=[];for(let I of r){let v=I.get(\"level\");if(typeof v>\"u\")continue;let x=I.get(\"code\");typeof x<\"u\"&&o.set(x,v);let C=I.get(\"text\");typeof C<\"u\"&&a.set(C,v);let R=I.get(\"pattern\");typeof R<\"u\"&&n.push([Ine.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(I,v,x)=>{if(I===null||I===0)return x;let C=a.size>0||n.length>0?(0,Xy.default)(v):v;if(a.size>0){let R=a.get(C);if(typeof R<\"u\")return R??x}if(n.length>0){for(let[R,L]of n)if(R(C))return L??x}if(o.size>0){let R=o.get(Wu(I));if(typeof R<\"u\")return R??x}return x},A=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(I,v,x,C){switch(u(v,x,C)){case\"info\":A.call(I,v,x);break;case\"warning\":p.call(I,v??0,x);break;case\"error\":h.call(I,v??0,x);break}};t.reportInfo=function(...I){return E(this,...I,\"info\")},t.reportWarning=function(...I){return E(this,...I,\"warning\")},t.reportError=function(...I){return E(this,...I,\"error\")}}var zI,JI,Ine,Xy,Bne,yt,aP,DL,lP,SL,vL,RZe,Po,oP,TZe,uP,jl=Et(()=>{St();zI=$e(IN()),JI=$e(td());qt();Ine=$e(Zo()),Xy=$e(OS()),Bne=ve(\"util\");fS();bo();yt={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",PATH:\"PATH\",URL:\"URL\",ADDED:\"ADDED\",REMOVED:\"REMOVED\",CODE:\"CODE\",INSPECT:\"INSPECT\",DURATION:\"DURATION\",SIZE:\"SIZE\",SIZE_DIFF:\"SIZE_DIFF\",IDENT:\"IDENT\",DESCRIPTOR:\"DESCRIPTOR\",LOCATOR:\"LOCATOR\",RESOLUTION:\"RESOLUTION\",DEPENDENT:\"DEPENDENT\",PACKAGE_EXTENSION:\"PACKAGE_EXTENSION\",SETTING:\"SETTING\",MARKDOWN:\"MARKDOWN\",MARKDOWN_INLINE:\"MARKDOWN_INLINE\"},aP=(e=>(e[e.BOLD=2]=\"BOLD\",e))(aP||{}),DL=JI.default.GITHUB_ACTIONS?{level:2}:zI.default.supportsColor?{level:zI.default.supportsColor.level}:{level:0},lP=DL.level!==0,SL=lP&&!JI.default.GITHUB_ACTIONS&&!JI.default.CIRCLE&&!JI.default.GITLAB,vL=new zI.default.Instance(DL),RZe=new Map([[yt.NO_HINT,null],[yt.NULL,[\"#a853b5\",129]],[yt.SCOPE,[\"#d75f00\",166]],[yt.NAME,[\"#d7875f\",173]],[yt.RANGE,[\"#00afaf\",37]],[yt.REFERENCE,[\"#87afff\",111]],[yt.NUMBER,[\"#ffd700\",220]],[yt.PATH,[\"#d75fd7\",170]],[yt.URL,[\"#d75fd7\",170]],[yt.ADDED,[\"#5faf00\",70]],[yt.REMOVED,[\"#ff3131\",160]],[yt.CODE,[\"#87afff\",111]],[yt.SIZE,[\"#ffd700\",220]]]),Po=t=>t;oP={[yt.ID]:Po({pretty:(t,e)=>typeof e==\"number\"?Vs(t,`${e}`,yt.NUMBER):Vs(t,e,yt.CODE),json:t=>t}),[yt.INSPECT]:Po({pretty:(t,e)=>(0,Bne.inspect)(e,{depth:1/0,colors:t.get(\"enableColors\"),compact:!0,breakLength:1/0}),json:t=>t}),[yt.NUMBER]:Po({pretty:(t,e)=>Vs(t,`${e}`,yt.NUMBER),json:t=>t}),[yt.IDENT]:Po({pretty:(t,e)=>cs(t,e),json:t=>fn(t)}),[yt.LOCATOR]:Po({pretty:(t,e)=>qr(t,e),json:t=>ba(t)}),[yt.DESCRIPTOR]:Po({pretty:(t,e)=>jn(t,e),json:t=>Pa(t)}),[yt.RESOLUTION]:Po({pretty:(t,{descriptor:e,locator:r})=>ZI(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Pa(t),locator:e!==null?ba(e):null})}),[yt.DEPENDENT]:Po({pretty:(t,{locator:e,descriptor:r})=>kL(t,e,r),json:({locator:t,descriptor:e})=>({locator:ba(t),descriptor:Pa(e)})}),[yt.PACKAGE_EXTENSION]:Po({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"dependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependency\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependencies\",yt.CODE)} \\u27A4 ${cs(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${cs(t,e.parentDescriptor)} \\u27A4 ${Vs(t,\"peerDependenciesMeta\",yt.CODE)} \\u27A4 ${cs(t,Js(e.selector))} \\u27A4 ${Vs(t,e.key,yt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${fn(t.parentDescriptor)} > ${fn(t.descriptor)}`;case\"PeerDependency\":return`${fn(t.parentDescriptor)} >> ${fn(t.descriptor)}`;case\"PeerDependencyMeta\":return`${fn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[yt.SETTING]:Po({pretty:(t,e)=>(t.get(e),Zy(t,Vs(t,e,yt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[yt.DURATION]:Po({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[yt.SIZE]:Po({pretty:(t,e)=>Vs(t,wne(e),yt.NUMBER),json:t=>t}),[yt.SIZE_DIFF]:Po({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",o=r===\"+\"?yt.REMOVED:yt.ADDED;return Vs(t,`${r} ${wne(Math.max(Math.abs(e),1))}`,o)},json:t=>t}),[yt.PATH]:Po({pretty:(t,e)=>Vs(t,ue.fromPortablePath(e),yt.PATH),json:t=>ue.fromPortablePath(t)}),[yt.MARKDOWN]:Po({pretty:(t,{text:e,format:r,paragraphs:o})=>Do(e,{format:r,paragraphs:o}),json:({text:t})=>t}),[yt.MARKDOWN_INLINE]:Po({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,o,a)=>Mt(t,o+a+o,yt.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,o,a)=>yd(t,a,2)),e),json:t=>t})};TZe=!!process.env.KONSOLE_VERSION;uP=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(uP||{})});var vne=_($y=>{\"use strict\";Object.defineProperty($y,\"__esModule\",{value:!0});$y.splitWhen=$y.flatten=void 0;function LZe(t){return t.reduce((e,r)=>[].concat(e,r),[])}$y.flatten=LZe;function OZe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}$y.splitWhen=OZe});var Dne=_(AP=>{\"use strict\";Object.defineProperty(AP,\"__esModule\",{value:!0});AP.isEnoentCodeError=void 0;function MZe(t){return t.code===\"ENOENT\"}AP.isEnoentCodeError=MZe});var Sne=_(fP=>{\"use strict\";Object.defineProperty(fP,\"__esModule\",{value:!0});fP.createDirentFromStats=void 0;var QL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function UZe(t,e){return new QL(t,e)}fP.createDirentFromStats=UZe});var Pne=_(Xu=>{\"use strict\";Object.defineProperty(Xu,\"__esModule\",{value:!0});Xu.removeLeadingDotSegment=Xu.escape=Xu.makeAbsolute=Xu.unixify=void 0;var _Ze=ve(\"path\"),HZe=2,qZe=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\())/g;function jZe(t){return t.replace(/\\\\/g,\"/\")}Xu.unixify=jZe;function GZe(t,e){return _Ze.resolve(t,e)}Xu.makeAbsolute=GZe;function YZe(t){return t.replace(qZe,\"\\\\$2\")}Xu.escape=YZe;function WZe(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice(HZe)}return t}Xu.removeLeadingDotSegment=WZe});var xne=_((PTt,bne)=>{bne.exports=function(e){if(typeof e!=\"string\"||e===\"\")return!1;for(var r;r=/(\\\\).|([@?!+*]\\(.*\\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Fne=_((bTt,Qne)=>{var KZe=xne(),kne={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},VZe=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||o!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(o<e&&(o=t.indexOf(\"]\",e)),o>e&&(u===-1||u>o||(u=t.indexOf(\"\\\\\",e),u===-1||u>o)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(u=t.indexOf(\"\\\\\",e),u===-1||u>n))||r!==-1&&t[e]===\"(\"&&t[e+1]!==\"|\"&&(r<e&&(r=t.indexOf(\"|\",e)),r!==-1&&t[r+1]!==\")\"&&(n=t.indexOf(\")\",r),n>r&&(u=t.indexOf(\"\\\\\",r),u===-1||u>n))))return!0;if(t[e]===\"\\\\\"){var A=t[e+1];e+=2;var p=kne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},JZe=function(t){if(t[0]===\"!\")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\\]]/.test(t[e]))return!0;if(t[e]===\"\\\\\"){var r=t[e+1];e+=2;var o=kne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};Qne.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(KZe(e))return!0;var o=VZe;return r&&r.strict===!1&&(o=JZe),o(e)}});var Tne=_((xTt,Rne)=>{\"use strict\";var zZe=Fne(),XZe=ve(\"path\").posix.dirname,ZZe=ve(\"os\").platform()===\"win32\",FL=\"/\",$Ze=/\\\\/g,e$e=/[\\{\\[].*[\\}\\]]$/,t$e=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,r$e=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;Rne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&ZZe&&e.indexOf(FL)<0&&(e=e.replace($Ze,FL)),e$e.test(e)&&(e+=FL),e+=\"a\";do e=XZe(e);while(zZe(e)||t$e.test(e));return e.replace(r$e,\"$1\")}});var qne=_(jr=>{\"use strict\";Object.defineProperty(jr,\"__esModule\",{value:!0});jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var n$e=ve(\"path\"),i$e=Tne(),RL=Zo(),Nne=\"**\",s$e=\"\\\\\",o$e=/[*?]|^!/,a$e=/\\[[^[]*]/,l$e=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,c$e=/[!*+?@]\\([^(]*\\)/,u$e=/,|\\.\\./;function Lne(t,e={}){return!One(t,e)}jr.isStaticPattern=Lne;function One(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(s$e)||o$e.test(t)||a$e.test(t)||l$e.test(t)||e.extglob!==!1&&c$e.test(t)||e.braceExpansion!==!1&&A$e(t))}jr.isDynamicPattern=One;function A$e(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let o=t.slice(e,r);return u$e.test(o)}function f$e(t){return pP(t)?t.slice(1):t}jr.convertToPositivePattern=f$e;function p$e(t){return\"!\"+t}jr.convertToNegativePattern=p$e;function pP(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}jr.isNegativePattern=pP;function Mne(t){return!pP(t)}jr.isPositivePattern=Mne;function h$e(t){return t.filter(pP)}jr.getNegativePatterns=h$e;function g$e(t){return t.filter(Mne)}jr.getPositivePatterns=g$e;function d$e(t){return t.filter(e=>!TL(e))}jr.getPatternsInsideCurrentDirectory=d$e;function m$e(t){return t.filter(TL)}jr.getPatternsOutsideCurrentDirectory=m$e;function TL(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}jr.isPatternRelatedToParentDirectory=TL;function y$e(t){return i$e(t,{flipBackslashes:!1})}jr.getBaseDirectory=y$e;function E$e(t){return t.includes(Nne)}jr.hasGlobStar=E$e;function Une(t){return t.endsWith(\"/\"+Nne)}jr.endsWithSlashGlobStar=Une;function C$e(t){let e=n$e.basename(t);return Une(t)||Lne(e)}jr.isAffectDepthOfReadingPattern=C$e;function w$e(t){return t.reduce((e,r)=>e.concat(_ne(r)),[])}jr.expandPatternsWithBraceExpansion=w$e;function _ne(t){return RL.braces(t,{expand:!0,nodupes:!0})}jr.expandBraceExpansion=_ne;function I$e(t,e){let{parts:r}=RL.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith(\"/\")&&(r[0]=r[0].slice(1),r.unshift(\"\")),r}jr.getPatternParts=I$e;function Hne(t,e){return RL.makeRe(t,e)}jr.makeRe=Hne;function B$e(t,e){return t.map(r=>Hne(r,e))}jr.convertPatternsToRe=B$e;function v$e(t,e){return e.some(r=>r.test(t))}jr.matchAny=v$e});var Wne=_((QTt,Yne)=>{\"use strict\";var D$e=ve(\"stream\"),jne=D$e.PassThrough,S$e=Array.prototype.slice;Yne.exports=P$e;function P$e(){let t=[],e=S$e.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=jne(o);function A(){for(let E=0,I=arguments.length;E<I;E++)t.push(Gne(arguments[E],o));return p(),this}function p(){if(r)return;r=!0;let E=t.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let I=E.length+1;function v(){--I>0||(r=!1,p())}function x(C){function R(){C.removeListener(\"merge2UnpipeEnd\",R),C.removeListener(\"end\",R),n&&C.removeListener(\"error\",L),v()}function L(U){u.emit(\"error\",U)}if(C._readableState.endEmitted)return v();C.on(\"merge2UnpipeEnd\",R),C.on(\"end\",R),n&&C.on(\"error\",L),C.pipe(u,{end:!1}),C.resume()}for(let C=0;C<E.length;C++)x(E[C]);v()}function h(){r=!1,u.emit(\"queueDrain\"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&A.apply(null,e),u}function Gne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Gne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(jne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var Vne=_(hP=>{\"use strict\";Object.defineProperty(hP,\"__esModule\",{value:!0});hP.merge=void 0;var b$e=Wne();function x$e(t){let e=b$e(t);return t.forEach(r=>{r.once(\"error\",o=>e.emit(\"error\",o))}),e.once(\"close\",()=>Kne(t)),e.once(\"end\",()=>Kne(t)),e}hP.merge=x$e;function Kne(t){t.forEach(e=>e.emit(\"close\"))}});var Jne=_(eE=>{\"use strict\";Object.defineProperty(eE,\"__esModule\",{value:!0});eE.isEmpty=eE.isString=void 0;function k$e(t){return typeof t==\"string\"}eE.isString=k$e;function Q$e(t){return t===\"\"}eE.isEmpty=Q$e});var Sf=_(xo=>{\"use strict\";Object.defineProperty(xo,\"__esModule\",{value:!0});xo.string=xo.stream=xo.pattern=xo.path=xo.fs=xo.errno=xo.array=void 0;var F$e=vne();xo.array=F$e;var R$e=Dne();xo.errno=R$e;var T$e=Sne();xo.fs=T$e;var N$e=Pne();xo.path=N$e;var L$e=qne();xo.pattern=L$e;var O$e=Vne();xo.stream=O$e;var M$e=Jne();xo.string=M$e});var Zne=_(ko=>{\"use strict\";Object.defineProperty(ko,\"__esModule\",{value:!0});ko.convertPatternGroupToTask=ko.convertPatternGroupsToTasks=ko.groupPatternsByBaseDirectory=ko.getNegativePatternsAsPositive=ko.getPositivePatterns=ko.convertPatternsToTasks=ko.generate=void 0;var Pf=Sf();function U$e(t,e){let r=zne(t),o=Xne(t,e.ignore),a=r.filter(p=>Pf.pattern.isStaticPattern(p,e)),n=r.filter(p=>Pf.pattern.isDynamicPattern(p,e)),u=NL(a,o,!1),A=NL(n,o,!0);return u.concat(A)}ko.generate=U$e;function NL(t,e,r){let o=[],a=Pf.pattern.getPatternsOutsideCurrentDirectory(t),n=Pf.pattern.getPatternsInsideCurrentDirectory(t),u=LL(a),A=LL(n);return o.push(...OL(u,e,r)),\".\"in A?o.push(ML(\".\",n,e,r)):o.push(...OL(A,e,r)),o}ko.convertPatternsToTasks=NL;function zne(t){return Pf.pattern.getPositivePatterns(t)}ko.getPositivePatterns=zne;function Xne(t,e){return Pf.pattern.getNegativePatterns(t).concat(e).map(Pf.pattern.convertToPositivePattern)}ko.getNegativePatternsAsPositive=Xne;function LL(t){let e={};return t.reduce((r,o)=>{let a=Pf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}ko.groupPatternsByBaseDirectory=LL;function OL(t,e,r){return Object.keys(t).map(o=>ML(o,t[o],e,r))}ko.convertPatternGroupsToTasks=OL;function ML(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Pf.pattern.convertToNegativePattern))}}ko.convertPatternGroupToTask=ML});var eie=_(tE=>{\"use strict\";Object.defineProperty(tE,\"__esModule\",{value:!0});tE.removeDuplicateSlashes=tE.transform=void 0;var _$e=/(?!^)\\/{2,}/g;function H$e(t){return t.map(e=>$ne(e))}tE.transform=H$e;function $ne(t){return t.replace(_$e,\"/\")}tE.removeDuplicateSlashes=$ne});var rie=_(gP=>{\"use strict\";Object.defineProperty(gP,\"__esModule\",{value:!0});gP.read=void 0;function q$e(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){tie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){UL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){tie(r,n);return}UL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),UL(r,u)})})}gP.read=q$e;function tie(t,e){t(e)}function UL(t,e){t(null,e)}});var nie=_(dP=>{\"use strict\";Object.defineProperty(dP,\"__esModule\",{value:!0});dP.read=void 0;function j$e(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}dP.read=j$e});var iie=_(Xp=>{\"use strict\";Object.defineProperty(Xp,\"__esModule\",{value:!0});Xp.createFileSystemAdapter=Xp.FILE_SYSTEM_ADAPTER=void 0;var mP=ve(\"fs\");Xp.FILE_SYSTEM_ADAPTER={lstat:mP.lstat,stat:mP.stat,lstatSync:mP.lstatSync,statSync:mP.statSync};function G$e(t){return t===void 0?Xp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Xp.FILE_SYSTEM_ADAPTER),t)}Xp.createFileSystemAdapter=G$e});var sie=_(HL=>{\"use strict\";Object.defineProperty(HL,\"__esModule\",{value:!0});var Y$e=iie(),_L=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Y$e.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};HL.default=_L});var Cd=_(Zp=>{\"use strict\";Object.defineProperty(Zp,\"__esModule\",{value:!0});Zp.statSync=Zp.stat=Zp.Settings=void 0;var oie=rie(),W$e=nie(),qL=sie();Zp.Settings=qL.default;function K$e(t,e,r){if(typeof e==\"function\"){oie.read(t,jL(),e);return}oie.read(t,jL(e),r)}Zp.stat=K$e;function V$e(t,e){let r=jL(e);return W$e.read(t,r)}Zp.statSync=V$e;function jL(t={}){return t instanceof qL.default?t:new qL.default(t)}});var lie=_((qTt,aie)=>{aie.exports=J$e;function J$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,E){r[p]=E,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,E){A(p,h,E)})}):t.forEach(function(p,h){p(function(E,I){A(h,E,I)})}):u(null),n=!1}});var YL=_(EP=>{\"use strict\";Object.defineProperty(EP,\"__esModule\",{value:!0});EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var yP=process.versions.node.split(\".\");if(yP[0]===void 0||yP[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var cie=Number.parseInt(yP[0],10),z$e=Number.parseInt(yP[1],10),uie=10,X$e=10,Z$e=cie>uie,$$e=cie===uie&&z$e>=X$e;EP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Z$e||$$e});var Aie=_(CP=>{\"use strict\";Object.defineProperty(CP,\"__esModule\",{value:!0});CP.createDirentFromStats=void 0;var WL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function eet(t,e){return new WL(t,e)}CP.createDirentFromStats=eet});var KL=_(wP=>{\"use strict\";Object.defineProperty(wP,\"__esModule\",{value:!0});wP.fs=void 0;var tet=Aie();wP.fs=tet});var VL=_(IP=>{\"use strict\";Object.defineProperty(IP,\"__esModule\",{value:!0});IP.joinPathSegments=void 0;function ret(t,e,r){return t.endsWith(r)?t+e:t+r+e}IP.joinPathSegments=ret});var mie=_($p=>{\"use strict\";Object.defineProperty($p,\"__esModule\",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var net=Cd(),fie=lie(),iet=YL(),pie=KL(),hie=VL();function set(t,e,r){if(!e.stats&&iet.IS_SUPPORT_READDIR_WITH_FILE_TYPES){gie(t,e,r);return}die(t,e,r)}$p.read=set;function gie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:hie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){JL(r,n);return}let u=n.map(A=>oet(A,e));fie(u,(A,p)=>{if(A!==null){BP(r,A);return}JL(r,p)})})}$p.readdirWithFileTypes=gie;function oet(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=pie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function die(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){BP(r,o);return}let n=a.map(u=>{let A=hie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{net.stat(A,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let I={name:u,path:A,dirent:pie.fs.createDirentFromStats(u,E)};e.stats&&(I.stats=E),p(null,I)})}});fie(n,(u,A)=>{if(u!==null){BP(r,u);return}JL(r,A)})})}$p.readdir=die;function BP(t,e){t(e)}function JL(t,e){t(null,e)}});var Iie=_(eh=>{\"use strict\";Object.defineProperty(eh,\"__esModule\",{value:!0});eh.readdir=eh.readdirWithFileTypes=eh.read=void 0;var aet=Cd(),cet=YL(),yie=KL(),Eie=VL();function uet(t,e){return!e.stats&&cet.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Cie(t,e):wie(t,e)}eh.read=uet;function Cie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Eie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=yie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}eh.readdirWithFileTypes=Cie;function wie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Eie.joinPathSegments(t,o,e.pathSegmentSeparator),n=aet.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:yie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}eh.readdir=wie});var Bie=_(th=>{\"use strict\";Object.defineProperty(th,\"__esModule\",{value:!0});th.createFileSystemAdapter=th.FILE_SYSTEM_ADAPTER=void 0;var rE=ve(\"fs\");th.FILE_SYSTEM_ADAPTER={lstat:rE.lstat,stat:rE.stat,lstatSync:rE.lstatSync,statSync:rE.statSync,readdir:rE.readdir,readdirSync:rE.readdirSync};function Aet(t){return t===void 0?th.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},th.FILE_SYSTEM_ADAPTER),t)}th.createFileSystemAdapter=Aet});var vie=_(XL=>{\"use strict\";Object.defineProperty(XL,\"__esModule\",{value:!0});var fet=ve(\"path\"),pet=Cd(),het=Bie(),zL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=het.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,fet.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new pet.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};XL.default=zL});var vP=_(rh=>{\"use strict\";Object.defineProperty(rh,\"__esModule\",{value:!0});rh.Settings=rh.scandirSync=rh.scandir=void 0;var Die=mie(),get=Iie(),ZL=vie();rh.Settings=ZL.default;function det(t,e,r){if(typeof e==\"function\"){Die.read(t,$L(),e);return}Die.read(t,$L(e),r)}rh.scandir=det;function met(t,e){let r=$L(e);return get.read(t,r)}rh.scandirSync=met;function $L(t={}){return t instanceof ZL.default?t:new ZL.default(t)}});var Pie=_((ZTt,Sie)=>{\"use strict\";function yet(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}Sie.exports=yet});var xie=_(($Tt,eO)=>{\"use strict\";var Eet=Pie();function bie(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),r<1)throw new Error(\"fastqueue concurrency must be greater than 1\");var o=Eet(Cet),a=null,n=null,u=0,A=null,p={push:R,drain:Gl,saturated:Gl,pause:E,paused:!1,concurrency:r,running:h,resume:x,idle:C,length:I,getQueue:v,unshift:L,empty:Gl,kill:J,killAndDrain:te,error:ae};return p;function h(){return u}function E(){p.paused=!0}function I(){for(var fe=a,ce=0;fe;)fe=fe.next,ce++;return ce}function v(){for(var fe=a,ce=[];fe;)ce.push(fe.value),fe=fe.next;return ce}function x(){if(!!p.paused){p.paused=!1;for(var fe=0;fe<p.concurrency;fe++)u++,U()}}function C(){return u===0&&p.length()===0}function R(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,me.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function L(fe,ce){var me=o.get();me.context=t,me.release=U,me.value=fe,me.callback=ce||Gl,u===p.concurrency||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(u++,e.call(t,me.value,me.worked))}function U(fe){fe&&o.release(fe);var ce=a;ce?p.paused?u--:(n===a&&(n=null),a=ce.next,ce.next=null,e.call(t,ce.value,ce.worked),n===null&&p.empty()):--u===0&&p.drain()}function J(){a=null,n=null,p.drain=Gl}function te(){a=null,n=null,p.drain(),p.drain=Gl}function ae(fe){A=fe}}function Gl(){}function Cet(){this.value=null,this.callback=Gl,this.next=null,this.release=Gl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Gl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function wet(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function o(E,I){e.call(this,E).then(function(v){I(null,v)},I)}var a=bie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(E){var I=new Promise(function(v,x){n(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function p(E){var I=new Promise(function(v,x){u(E,function(C,R){if(C){x(C);return}v(R)})});return I.catch(Gl),I}function h(){var E=a.drain,I=new Promise(function(v){a.drain=function(){E(),v()}});return I}}eO.exports=bie;eO.exports.promise=wet});var DP=_(Zu=>{\"use strict\";Object.defineProperty(Zu,\"__esModule\",{value:!0});Zu.joinPathSegments=Zu.replacePathSegmentSeparator=Zu.isAppliedFilter=Zu.isFatalError=void 0;function Iet(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Zu.isFatalError=Iet;function Bet(t,e){return t===null||t(e)}Zu.isAppliedFilter=Bet;function vet(t,e){return t.split(/[/\\\\]/).join(e)}Zu.replacePathSegmentSeparator=vet;function Det(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}Zu.joinPathSegments=Det});var nO=_(rO=>{\"use strict\";Object.defineProperty(rO,\"__esModule\",{value:!0});var Pet=DP(),tO=class{constructor(e,r){this._root=e,this._settings=r,this._root=Pet.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};rO.default=tO});var oO=_(sO=>{\"use strict\";Object.defineProperty(sO,\"__esModule\",{value:!0});var bet=ve(\"events\"),xet=vP(),ket=xie(),SP=DP(),Qet=nO(),iO=class extends Qet.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=xet.scandir,this._emitter=new bet.EventEmitter,this._queue=ket(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on(\"entry\",e)}onError(e){this._emitter.once(\"error\",e)}onEnd(e){this._emitter.once(\"end\",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!SP.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=SP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),SP.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&SP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};sO.default=iO});var kie=_(lO=>{\"use strict\";Object.defineProperty(lO,\"__esModule\",{value:!0});var Fet=oO(),aO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Fet.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{Ret(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{Tet(e,this._storage)}),this._reader.read()}};lO.default=aO;function Ret(t,e){t(e)}function Tet(t,e){t(null,e)}});var Qie=_(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});var Net=ve(\"stream\"),Let=oO(),cO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Let.default(this._root,this._settings),this._stream=new Net.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit(\"error\",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};uO.default=cO});var Fie=_(fO=>{\"use strict\";Object.defineProperty(fO,\"__esModule\",{value:!0});var Oet=vP(),PP=DP(),Met=nO(),AO=class extends Met.default{constructor(){super(...arguments),this._scandir=Oet.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!PP.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=PP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),PP.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&PP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};fO.default=AO});var Rie=_(hO=>{\"use strict\";Object.defineProperty(hO,\"__esModule\",{value:!0});var Uet=Fie(),pO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Uet.default(this._root,this._settings)}read(){return this._reader.read()}};hO.default=pO});var Tie=_(dO=>{\"use strict\";Object.defineProperty(dO,\"__esModule\",{value:!0});var _et=ve(\"path\"),Het=vP(),gO=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,_et.sep),this.fsScandirSettings=new Het.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};dO.default=gO});var xP=_($u=>{\"use strict\";Object.defineProperty($u,\"__esModule\",{value:!0});$u.Settings=$u.walkStream=$u.walkSync=$u.walk=void 0;var Nie=kie(),qet=Qie(),jet=Rie(),mO=Tie();$u.Settings=mO.default;function Get(t,e,r){if(typeof e==\"function\"){new Nie.default(t,bP()).read(e);return}new Nie.default(t,bP(e)).read(r)}$u.walk=Get;function Yet(t,e){let r=bP(e);return new jet.default(t,r).read()}$u.walkSync=Yet;function Wet(t,e){let r=bP(e);return new qet.default(t,r).read()}$u.walkStream=Wet;function bP(t={}){return t instanceof mO.default?t:new mO.default(t)}});var kP=_(EO=>{\"use strict\";Object.defineProperty(EO,\"__esModule\",{value:!0});var Ket=ve(\"path\"),Vet=Cd(),Lie=Sf(),yO=class{constructor(e){this._settings=e,this._fsStatSettings=new Vet.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Ket.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Lie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Lie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};EO.default=yO});var IO=_(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});var Jet=ve(\"stream\"),zet=Cd(),Xet=xP(),Zet=kP(),CO=class extends Zet.default{constructor(){super(...arguments),this._walkStream=Xet.walkStream,this._stat=zet.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new Jet.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};wO.default=CO});var Oie=_(vO=>{\"use strict\";Object.defineProperty(vO,\"__esModule\",{value:!0});var $et=xP(),ett=kP(),ttt=IO(),BO=class extends ett.default{constructor(){super(...arguments),this._walkAsync=$et.walk,this._readerStream=new ttt.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once(\"error\",u),a.on(\"data\",A=>o.push(A)),a.once(\"end\",()=>n(o))})}};vO.default=BO});var Mie=_(SO=>{\"use strict\";Object.defineProperty(SO,\"__esModule\",{value:!0});var nE=Sf(),DO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=nE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return nE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>nE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:nE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return nE.array.splitWhen(e,r=>r.dynamic&&nE.pattern.hasGlobStar(r.pattern))}};SO.default=DO});var Uie=_(bO=>{\"use strict\";Object.defineProperty(bO,\"__esModule\",{value:!0});var rtt=Mie(),PO=class extends rtt.default{match(e){let r=e.split(\"/\"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};bO.default=PO});var _ie=_(kO=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});var QP=Sf(),ntt=Uie(),xO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new ntt.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(QP.pattern.isAffectDepthOfReadingPattern);return QP.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=QP.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let o=r.split(\"/\").length;if(e===\"\")return o;let a=e.split(\"/\").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!QP.pattern.matchAny(e,r)}};kO.default=xO});var Hie=_(FO=>{\"use strict\";Object.defineProperty(FO,\"__esModule\",{value:!0});var wd=Sf(),QO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=wd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=wd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=wd.path.makeAbsolute(this._settings.cwd,e);return wd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=wd.path.removeLeadingDotSegment(e),n=wd.pattern.matchAny(a,r);return!n&&o?wd.pattern.matchAny(a+\"/\",r):n}};FO.default=QO});var qie=_(TO=>{\"use strict\";Object.defineProperty(TO,\"__esModule\",{value:!0});var itt=Sf(),RO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return itt.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};TO.default=RO});var Gie=_(LO=>{\"use strict\";Object.defineProperty(LO,\"__esModule\",{value:!0});var jie=Sf(),NO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=jie.path.makeAbsolute(this._settings.cwd,r),r=jie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};LO.default=NO});var FP=_(MO=>{\"use strict\";Object.defineProperty(MO,\"__esModule\",{value:!0});var stt=ve(\"path\"),ott=_ie(),att=Hie(),ltt=qie(),ctt=Gie(),OO=class{constructor(e){this._settings=e,this.errorFilter=new ltt.default(this._settings),this.entryFilter=new att.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ott.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new ctt.default(this._settings)}_getRootDirectory(e){return stt.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base===\".\"?\"\":e.base;return{basePath:r,pathSegmentSeparator:\"/\",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};MO.default=OO});var Yie=_(_O=>{\"use strict\";Object.defineProperty(_O,\"__esModule\",{value:!0});var utt=Oie(),Att=FP(),UO=class extends Att.default{constructor(){super(...arguments),this._reader=new utt.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};_O.default=UO});var Wie=_(qO=>{\"use strict\";Object.defineProperty(qO,\"__esModule\",{value:!0});var ftt=ve(\"stream\"),ptt=IO(),htt=FP(),HO=class extends htt.default{constructor(){super(...arguments),this._reader=new ptt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new ftt.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",u=>n.emit(\"error\",u)).on(\"data\",u=>n.emit(\"data\",o.transform(u))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};qO.default=HO});var Kie=_(GO=>{\"use strict\";Object.defineProperty(GO,\"__esModule\",{value:!0});var gtt=Cd(),dtt=xP(),mtt=kP(),jO=class extends mtt.default{constructor(){super(...arguments),this._walkSync=dtt.walkSync,this._statSync=gtt.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};GO.default=jO});var Vie=_(WO=>{\"use strict\";Object.defineProperty(WO,\"__esModule\",{value:!0});var ytt=Kie(),Ett=FP(),YO=class extends Ett.default{constructor(){super(...arguments),this._reader=new ytt.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};WO.default=YO});var Jie=_(sE=>{\"use strict\";Object.defineProperty(sE,\"__esModule\",{value:!0});sE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var iE=ve(\"fs\"),Ctt=ve(\"os\"),wtt=Math.max(Ctt.cpus().length,1);sE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:iE.lstat,lstatSync:iE.lstatSync,stat:iE.stat,statSync:iE.statSync,readdir:iE.readdir,readdirSync:iE.readdirSync};var KO=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,wtt),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},sE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};sE.default=KO});var RP=_((vNt,Zie)=>{\"use strict\";var zie=Zne(),Xie=eie(),Itt=Yie(),Btt=Wie(),vtt=Vie(),VO=Jie(),Id=Sf();async function JO(t,e){oE(t);let r=zO(t,Itt.default,e),o=await Promise.all(r);return Id.array.flatten(o)}(function(t){function e(u,A){oE(u);let p=zO(u,vtt.default,A);return Id.array.flatten(p)}t.sync=e;function r(u,A){oE(u);let p=zO(u,Btt.default,A);return Id.stream.merge(p)}t.stream=r;function o(u,A){oE(u);let p=Xie.transform([].concat(u)),h=new VO.default(A);return zie.generate(p,h)}t.generateTasks=o;function a(u,A){oE(u);let p=new VO.default(A);return Id.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return oE(u),Id.path.escape(u)}t.escapePath=n})(JO||(JO={}));function zO(t,e,r){let o=Xie.transform([].concat(t)),a=new VO.default(r),n=zie.generate(o,a),u=new e(a);return n.map(u.read,u)}function oE(t){if(![].concat(t).every(o=>Id.string.isString(o)&&!Id.string.isEmpty(o)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}Zie.exports=JO});var wn={};Vt(wn,{checksumFile:()=>NP,checksumPattern:()=>LP,makeHash:()=>zs});function zs(...t){let e=(0,TP.createHash)(\"sha512\"),r=\"\";for(let o of t)typeof o==\"string\"?r+=o:o&&(r&&(e.update(r),r=\"\"),e.update(o));return r&&e.update(r),e.digest(\"hex\")}async function NP(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:\"sha512\"}){let o=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,TP.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest(\"hex\")}finally{await e.closePromise(o)}}async function LP(t,{cwd:e}){let o=(await(0,XO.default)(t,{cwd:ue.fromPortablePath(e),onlyDirectories:!0})).map(A=>`${A}/**/*`),a=await(0,XO.default)([t,...o],{cwd:ue.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),E=await oe.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):E.isFile()&&p.push(await oe.readFilePromise(h)),p.join(\"\\0\")})),u=(0,TP.createHash)(\"sha512\");for(let A of n)u.update(A);return u.digest(\"hex\")}var TP,XO,nh=Et(()=>{St();TP=ve(\"crypto\"),XO=$e(RP())});var W={};Vt(W,{areDescriptorsEqual:()=>nse,areIdentsEqual:()=>n1,areLocatorsEqual:()=>i1,areVirtualPackagesEquivalent:()=>Rtt,bindDescriptor:()=>Qtt,bindLocator:()=>Ftt,convertDescriptorToLocator:()=>OP,convertLocatorToDescriptor:()=>$O,convertPackageToLocator:()=>btt,convertToIdent:()=>Ptt,convertToManifestRange:()=>jtt,copyPackage:()=>e1,devirtualizeDescriptor:()=>t1,devirtualizeLocator:()=>r1,ensureDevirtualizedDescriptor:()=>xtt,ensureDevirtualizedLocator:()=>ktt,getIdentVendorPath:()=>nM,isPackageCompatible:()=>qP,isVirtualDescriptor:()=>bf,isVirtualLocator:()=>Hc,makeDescriptor:()=>In,makeIdent:()=>eA,makeLocator:()=>Qs,makeRange:()=>_P,parseDescriptor:()=>ih,parseFileStyleRange:()=>Htt,parseIdent:()=>Js,parseLocator:()=>xf,parseRange:()=>Bd,prettyDependent:()=>kL,prettyDescriptor:()=>jn,prettyIdent:()=>cs,prettyLocator:()=>qr,prettyLocatorNoColors:()=>xL,prettyRange:()=>cE,prettyReference:()=>o1,prettyResolution:()=>ZI,prettyWorkspace:()=>a1,renamePackage:()=>eM,slugifyIdent:()=>ZO,slugifyLocator:()=>lE,sortDescriptors:()=>uE,stringifyDescriptor:()=>Pa,stringifyIdent:()=>fn,stringifyLocator:()=>ba,tryParseDescriptor:()=>s1,tryParseIdent:()=>ise,tryParseLocator:()=>UP,tryParseRange:()=>_tt,virtualizeDescriptor:()=>tM,virtualizePackage:()=>rM});function eA(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:zs(t,e),scope:t,name:e}}function In(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zs(t.identHash,e),range:e}}function Qs(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zs(t.identHash,e),reference:e}}function Ptt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function OP(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function $O(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function btt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function eM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function e1(t){return eM(t,t)}function tM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return In(t,`virtual:${e}#${t.range}`)}function rM(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return eM(t,Qs(t,`virtual:${e}#${t.reference}`))}function bf(t){return t.range.startsWith($I)}function Hc(t){return t.reference.startsWith($I)}function t1(t){if(!bf(t))throw new Error(\"Not a virtual descriptor\");return In(t,t.range.replace(MP,\"\"))}function r1(t){if(!Hc(t))throw new Error(\"Not a virtual descriptor\");return Qs(t,t.reference.replace(MP,\"\"))}function xtt(t){return bf(t)?In(t,t.range.replace(MP,\"\")):t}function ktt(t){return Hc(t)?Qs(t,t.reference.replace(MP,\"\")):t}function Qtt(t,e){return t.range.includes(\"::\")?t:In(t,`${t.range}::${aE.default.stringify(e)}`)}function Ftt(t,e){return t.reference.includes(\"::\")?t:Qs(t,`${t.reference}::${aE.default.stringify(e)}`)}function n1(t,e){return t.identHash===e.identHash}function nse(t,e){return t.descriptorHash===e.descriptorHash}function i1(t,e){return t.locatorHash===e.locatorHash}function Rtt(t,e){if(!Hc(t))throw new Error(\"Invalid package type\");if(!Hc(e))throw new Error(\"Invalid package type\");if(!n1(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!nse(r,o))return!1}return!0}function Js(t){let e=ise(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function ise(t){let e=t.match(Ttt);if(!e)return null;let[,r,o]=e;return eA(typeof r<\"u\"?r:null,o)}function ih(t,e=!1){let r=s1(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function s1(t,e=!1){let r=e?t.match(Ntt):t.match(Ltt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return In(eA(u,a),A)}function xf(t,e=!1){let r=UP(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function UP(t,e=!1){let r=e?t.match(Ott):t.match(Mtt);if(!r)return null;let[,o,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let u=typeof o<\"u\"?o:null,A=typeof n<\"u\"?n:\"unknown\";return Qs(eA(u,a),A)}function Bd(t,e){let r=t.match(Utt);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if(e?.requireProtocol&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),u=e?.parseSelector?aE.default.parse(n):n,A=typeof r[4]<\"u\"?aE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function _tt(t,e){try{return Bd(t,e)}catch{return null}}function Htt(t,{protocol:e}){let{selector:r,params:o}=Bd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:xf(o.locator,!0),path:r}}function $ie(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function qtt(t){return t===null?!1:Object.entries(t).length>0}function _P({protocol:t,source:e,selector:r,params:o}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${$ie(e)}#`),a+=$ie(r),qtt(o)&&(a+=`::${aE.default.stringify(o)}`),a}function jtt(t){let{params:e,protocol:r,source:o,selector:a}=Bd(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return _P({protocol:r,source:o,params:e,selector:a})}function fn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Pa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ba(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function ZO(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function lE(t){let{protocol:e,selector:r}=Bd(t.reference),o=e!==null?e.replace(Gtt,\"\"):\"exotic\",a=ese.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10;return t.scope?`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${ZO(t)}-${n}-${t.locatorHash.slice(0,u)}`}function cs(t,e){return e.scope?`${Mt(t,`@${e.scope}/`,yt.SCOPE)}${Mt(t,e.name,yt.NAME)}`:`${Mt(t,e.name,yt.NAME)}`}function HP(t){if(t.startsWith($I)){let e=HP(t.substring(t.indexOf(\"#\")+1)),r=t.substring($I.length,$I.length+Dtt);return`${e} [${r}]`}else return t.replace(Ytt,\"?[...]\")}function cE(t,e){return`${Mt(t,HP(e),yt.RANGE)}`}function jn(t,e){return`${cs(t,e)}${Mt(t,\"@\",yt.RANGE)}${cE(t,e.range)}`}function o1(t,e){return`${Mt(t,HP(e),yt.REFERENCE)}`}function qr(t,e){return`${cs(t,e)}${Mt(t,\"@\",yt.REFERENCE)}${o1(t,e.reference)}`}function xL(t){return`${fn(t)}@${HP(t.reference)}`}function uE(t){return ks(t,[e=>fn(e),e=>e.range])}function a1(t,e){return cs(t,e.anchoredLocator)}function ZI(t,e,r){let o=bf(e)?t1(e):e;return r===null?`${jn(t,o)} \\u2192 ${bL(t).Cross}`:o.identHash===r.identHash?`${jn(t,o)} \\u2192 ${o1(t,r.reference)}`:`${jn(t,o)} \\u2192 ${qr(t,r)}`}function kL(t,e,r){return r===null?`${qr(t,e)}`:`${qr(t,e)} (via ${cE(t,r.range)})`}function nM(t){return`node_modules/${fn(t)}`}function qP(t,e){return t.conditions?Stt(t.conditions,r=>{let[,o,a]=r.match(rse),n=e[o];return n?n.includes(a):!0}):!0}var aE,ese,tse,$I,Dtt,rse,Stt,MP,Ttt,Ntt,Ltt,Ott,Mtt,Utt,Gtt,Ytt,bo=Et(()=>{aE=$e(ve(\"querystring\")),ese=$e(zn()),tse=$e(eX());jl();nh();ql();bo();$I=\"virtual:\",Dtt=5,rse=/(os|cpu|libc)=([a-z0-9_-]+)/,Stt=(0,tse.makeParser)(rse);MP=/^[^#]*#/;Ttt=/^(?:@([^/]+?)\\/)?([^@/]+)$/;Ntt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Ltt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Ott=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,Mtt=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Utt=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;Gtt=/:$/;Ytt=/\\?.*/});var sse,ose=Et(()=>{bo();sse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==fn(r)||e.configuration.normalizeLocator(Qs(Js(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==fn(t)||e.configuration.normalizeDependency(In(xf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(In(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=a1(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var l1,Xn,vd=Et(()=>{l1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(l1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(l1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(l1.protocol.length));return{...e,version:o.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Xn=l1;Xn.protocol=\"workspace:\"});var kr={};Vt(kr,{SemVer:()=>Ase.SemVer,clean:()=>Ktt,getComparator:()=>cse,mergeComparators:()=>iM,satisfiesWithPrereleases:()=>kf,simplifyRanges:()=>sM,stringifyComparator:()=>use,validRange:()=>xa});function kf(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=ase.get(o);if(typeof a>\"u\")try{a=new sh.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{ase.set(o,a||null)}else if(a===null)return!1;let n;try{n=new sh.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function xa(t){if(t.indexOf(\":\")!==-1)return null;let e=lse.get(t);if(typeof e<\"u\")return e;try{e=new sh.default.Range(t)}catch{e=null}return lse.set(t,e),e}function Ktt(t){let e=Wtt.exec(t);return e?e[1]:null}function cse(t){if(t.semver===sh.default.Comparator.ANY)return{gt:null,lt:null};switch(t.operator){case\"\":return{gt:[\">=\",t.semver],lt:[\"<=\",t.semver]};case\">\":case\">=\":return{gt:[t.operator,t.semver],lt:null};case\"<\":case\"<=\":return{gt:null,lt:[t.operator,t.semver]};default:throw new Error(`Assertion failed: Unexpected comparator operator (${t.operator})`)}}function iM(t){if(t.length===0)return null;let e=null,r=null;for(let o of t){if(o.gt){let a=e!==null?sh.default.compare(o.gt[1],e[1]):null;(a===null||a>0||a===0&&o.gt[0]===\">\")&&(e=o.gt)}if(o.lt){let a=r!==null?sh.default.compare(o.lt[1],r[1]):null;(a===null||a<0||a===0&&o.lt[0]===\"<\")&&(r=o.lt)}}if(e&&r){let o=sh.default.compare(e[1],r[1]);if(o===0&&(e[0]===\">\"||r[0]===\"<\")||o>0)return null}return{gt:e,lt:r}}function use(t){if(t.gt&&t.lt){if(t.gt[0]===\">=\"&&t.lt[0]===\"<=\"&&t.gt[1].version===t.lt[1].version)return t.gt[1].version;if(t.gt[0]===\">=\"&&t.lt[0]===\"<\"){if(t.lt[1].version===`${t.gt[1].major+1}.0.0-0`)return`^${t.gt[1].version}`;if(t.lt[1].version===`${t.gt[1].major}.${t.gt[1].minor+1}.0-0`)return`~${t.gt[1].version}`}}let e=[];return t.gt&&e.push(t.gt[0]+t.gt[1].version),t.lt&&e.push(t.lt[0]+t.lt[1].version),e.length?e.join(\" \"):\"*\"}function sM(t){let e=t.map(o=>xa(o).set.map(a=>a.map(n=>cse(n)))),r=e.shift().map(o=>iM(o)).filter(o=>o!==null);for(let o of e){let a=[];for(let n of r)for(let u of o){let A=iM([n,...u]);A!==null&&a.push(A)}r=a}return r.length===0?null:r.map(o=>use(o)).join(\" || \")}var sh,Ase,ase,lse,Wtt,Qf=Et(()=>{sh=$e(zn()),Ase=$e(zn()),ase=new Map;lse=new Map;Wtt=/^(?:[\\sv=]*?)((0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)(?:\\s*)$/});function fse(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function pse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function $o(t){return t.replace(/\\\\/g,\"/\")}function jP(t,{yamlCompatibilityMode:e}){return e?CL(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function hse(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let o=r%2===0?\"\":\"!\",a=e.slice(r);return`${o}${t}=${a}`}function oM(t,e){return e.length===1?hse(t,e[0]):`(${e.map(r=>hse(t,r)).join(\" | \")})`}var gse,AE,Ot,fE=Et(()=>{St();Nl();gse=$e(zn());vd();ql();Qf();bo();AE=class{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Tn}={}){let o=V.join(e,\"package.json\");try{return await AE.fromFile(o,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await AE.tryFind(e,{baseFs:r});if(o===null)throw new Error(\"Manifest not found\");return o}static async fromFile(e,{baseFs:r=new Tn}={}){let o=new AE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new AE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(pse(e)||\"{}\")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=fse(e)}async loadFile(e,{baseFs:r=new Tn}){let o=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(pse(o)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=fse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Js(e.name)}catch{o.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof e.version==\"string\"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let u of e.os)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'os' field\")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!=\"string\"?o.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(u)}else this.libc=null;if(typeof e.type==\"string\"?this.type=e.type:this.type=null,typeof e.packageManager==\"string\"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private==\"boolean\"?this.private=e.private:this.private=!1,typeof e.license==\"string\"?this.license=e.license:this.license=null,typeof e.languageName==\"string\"?this.languageName=e.languageName:this.languageName=null,typeof e.main==\"string\"?this.main=$o(e.main):this.main=null,typeof e.module==\"string\"?this.module=$o(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=$o(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set($o(n),typeof u==\"string\"?$o(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?o.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,$o(e.bin)):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!=\"string\"||u.trim()===\"\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Js(n);this.bin.set(A.name,$o(u))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!=\"string\"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!=\"string\"||!u.startsWith(Xn.protocol)&&!xa(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u=\"*\");let p=In(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces==\"object\"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta==\"object\"&&e.dependenciesMeta!==null)for(let[n,u]of Object.entries(e.dependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=ih(n),p=this.ensureDependencyMeta(A),h=jP(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=jP(u.optional,{yamlCompatibilityMode:r});if(E===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let I=jP(u.unplugged,{yamlCompatibilityMode:r});if(I===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:I})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!=\"object\"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=ih(n),p=this.ensurePeerDependencyMeta(A),h=jP(u.optional,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions==\"object\"&&e.resolutions!==null)for(let[n,u]of Object.entries(e.resolutions)){if(typeof u!=\"string\"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:MD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig==\"object\"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access==\"string\"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main==\"string\"&&(this.publishConfig.main=$o(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=$o(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=$o(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set($o(n),typeof u==\"string\"?$o(u):u)}if(typeof e.publishConfig.registry==\"string\"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,$o(e.publishConfig.bin)]]):o.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.publishConfig.bin==\"object\"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,u]of Object.entries(e.publishConfig.bin)){if(typeof u!=\"string\"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,$o(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){o.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add($o(n))}}}else this.publishConfig=null;if(typeof e.installConfig==\"object\"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n===\"hoistingLimits\"?typeof e.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!=\"string\"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Js(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=In(A,u);this.dependencies.set(p.identHash,p);let h=In(A,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${e}\")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(oM(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(oM(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(oM(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!gse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${Pa(e)}'`);let r=fn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=fn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(u=>({[u]:n.get(u)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(fn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...uE(o).map(n=>({[fn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...uE(a).map(n=>({[fn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...uE(this.devDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...uE(this.peerDependencies.values()).map(n=>({[fn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of ks(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of ks(u.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=A!==null?Pa(In(Js(n),A)):n,E={...p};r&&A===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...ks(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[UD(n)]:u}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Ot=AE;Ot.fileName=\"package.json\",Ot.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],Ot.hardDependencies=[\"dependencies\",\"devDependencies\"]});var mse=_((UNt,dse)=>{var Vtt=_l(),Jtt=function(){return Vtt.Date.now()};dse.exports=Jtt});var Ese=_((_Nt,yse)=>{var ztt=/\\s/;function Xtt(t){for(var e=t.length;e--&&ztt.test(t.charAt(e)););return e}yse.exports=Xtt});var wse=_((HNt,Cse)=>{var Ztt=Ese(),$tt=/^\\s+/;function ert(t){return t&&t.slice(0,Ztt(t)+1).replace($tt,\"\")}Cse.exports=ert});var pE=_((qNt,Ise)=>{var trt=hd(),rrt=Ju(),nrt=\"[object Symbol]\";function irt(t){return typeof t==\"symbol\"||rrt(t)&&trt(t)==nrt}Ise.exports=irt});var Sse=_((jNt,Dse)=>{var srt=wse(),Bse=il(),ort=pE(),vse=0/0,art=/^[-+]0x[0-9a-f]+$/i,lrt=/^0b[01]+$/i,crt=/^0o[0-7]+$/i,urt=parseInt;function Art(t){if(typeof t==\"number\")return t;if(ort(t))return vse;if(Bse(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=Bse(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=srt(t);var r=lrt.test(t);return r||crt.test(t)?urt(t.slice(2),r?2:8):art.test(t)?vse:+t}Dse.exports=Art});var xse=_((GNt,bse)=>{var frt=il(),aM=mse(),Pse=Sse(),prt=\"Expected a function\",hrt=Math.max,grt=Math.min;function drt(t,e,r){var o,a,n,u,A,p,h=0,E=!1,I=!1,v=!0;if(typeof t!=\"function\")throw new TypeError(prt);e=Pse(e)||0,frt(r)&&(E=!!r.leading,I=\"maxWait\"in r,n=I?hrt(Pse(r.maxWait)||0,e):n,v=\"trailing\"in r?!!r.trailing:v);function x(ce){var me=o,he=a;return o=a=void 0,h=ce,u=t.apply(he,me),u}function C(ce){return h=ce,A=setTimeout(U,e),E?x(ce):u}function R(ce){var me=ce-p,he=ce-h,Be=e-me;return I?grt(Be,n-he):Be}function L(ce){var me=ce-p,he=ce-h;return p===void 0||me>=e||me<0||I&&he>=n}function U(){var ce=aM();if(L(ce))return J(ce);A=setTimeout(U,R(ce))}function J(ce){return A=void 0,v&&o?x(ce):(o=a=void 0,u)}function te(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function ae(){return A===void 0?u:J(aM())}function fe(){var ce=aM(),me=L(ce);if(o=arguments,a=this,p=ce,me){if(A===void 0)return C(p);if(I)return clearTimeout(A),A=setTimeout(U,e),x(p)}return A===void 0&&(A=setTimeout(U,e)),u}return fe.cancel=te,fe.flush=ae,fe}bse.exports=drt});var lM=_((YNt,kse)=>{var mrt=xse(),yrt=il(),Ert=\"Expected a function\";function Crt(t,e,r){var o=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(Ert);return yrt(r)&&(o=\"leading\"in r?!!r.leading:o,a=\"trailing\"in r?!!r.trailing:a),mrt(t,e,{leading:o,maxWait:e,trailing:a})}kse.exports=Crt});function Irt(t){return typeof t.reportCode<\"u\"}var Qse,Fse,Rse,wrt,zt,Xs,Yl=Et(()=>{Qse=$e(lM()),Fse=ve(\"stream\"),Rse=ve(\"string_decoder\"),wrt=15,zt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Xs=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(E=>{o=E}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,Qse.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/wrt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),o?.reportExtra?.(this))}reportWarningOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),o?.reportExtra?.(this))}reportErrorOnce(e,r,o){let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),o?.reportExtra?.(this))}reportExceptionOnce(e){Irt(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new Fse.PassThrough,o=new Rse.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var hE,cM=Et(()=>{Yl();bo();hE=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new zt(11,`${qr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var Dd,uM=Et(()=>{bo();Dd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${jn(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${qr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var gE,AM=Et(()=>{St();bo();gE=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf(\"#\");if(o===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(o+1),n=Qs(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return lE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get(\"virtualFolder\"),u=this.getLocatorFilename(e),A=mi.makeVirtualPath(n,u,a),p=new Uu(A,{baseFs:r.packageFs,pathUtils:V});return{...r,packageFs:p}}}});var dE,c1,Tse=Et(()=>{dE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(dE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(dE.protocol)}supportsDescriptor(e,r){return dE.isVirtualDescriptor(e)}supportsLocator(e,r){return dE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}},c1=dE;c1.protocol=\"virtual:\"});var mE,fM=Et(()=>{St();vd();mE=class{supports(e){return!!e.reference.startsWith(Xn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new gn(o),prefixPath:Bt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Xn.protocol.length))}}});function u1(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function Nse(t){return typeof t>\"u\"?3:u1(t)?0:Array.isArray(t)?1:2}function gM(t,e){return Object.hasOwn(t,e)}function vrt(t){return u1(t)&&gM(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function Drt(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!vrt(t))return{onConflict:\"default\",value:t};if(gM(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function Lse(t,e){let r=u1(t)&&gM(t,e)?t[e]:void 0;return Drt(r)}function yE(t,e){return[t,e,Ose]}function dM(t){return Array.isArray(t)?t[2]===Ose:!1}function pM(t,e){if(u1(t)){let r={};for(let o of Object.keys(t))r[o]=pM(t[o],e);return yE(e,r)}return Array.isArray(t)?yE(e,t.map(r=>pM(r,e))):yE(e,t)}function hM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let E=a-1;E>=o;--E){let[I,v]=t[E],{onConflict:x,value:C}=Lse(v,r),R=Nse(C);if(R!==3){if(n??=R,R!==n||x===\"hardReset\"){p=A;break}if(R===2)return yE(I,C);if(u.unshift([I,C]),x===\"reset\"){p=E;break}x===\"extend\"&&E===o&&(o=0),A=E}}if(typeof n>\"u\")return null;let h=u.map(([E])=>E).join(\", \");switch(n){case 1:return yE(h,new Array().concat(...u.map(([E,I])=>I.map(v=>pM(v,E)))));case 0:{let E=Object.assign({},...u.map(([,R])=>R)),I=Object.keys(E),v={},x=t.map(([R,L])=>[R,Lse(L,r).value]),C=Brt(x,([R,L])=>{let U=Nse(L);return U!==0&&U!==3});if(C!==-1){let R=x.slice(C+1);for(let L of I)v[L]=hM(R,e,L,0,R.length)}else for(let R of I)v[R]=hM(x,e,R,p,x.length);return yE(h,v)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Mse(t){return hM(t.map(([e,r])=>[e,{[\".\"]:r}]),[],\".\",0,t.length)}function A1(t){return dM(t)?t[1]:t}function GP(t){let e=dM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>GP(r));if(u1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=GP(a);return r}return e}function mM(t){return dM(t)?t[0]:null}var Brt,Ose,Use=Et(()=>{Brt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Ose=Symbol()});var YP={};Vt(YP,{getDefaultGlobalFolder:()=>EM,getHomeFolder:()=>EE,isFolderInside:()=>CM});function EM(){if(process.platform===\"win32\"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,yM.homedir)(),\"AppData\",\"Local\"));return V.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return V.resolve(t,\"yarn/berry\")}return V.resolve(EE(),\".yarn/berry\")}function EE(){return ue.toPortablePath((0,yM.homedir)()||\"/usr/local/share\")}function CM(t,e){let r=V.relative(e,t);return r&&!r.startsWith(\"..\")&&!V.isAbsolute(r)}var yM,WP=Et(()=>{St();yM=ve(\"os\")});var jse=_(CE=>{\"use strict\";var iLt=ve(\"net\"),Prt=ve(\"tls\"),wM=ve(\"http\"),_se=ve(\"https\"),brt=ve(\"events\"),sLt=ve(\"assert\"),xrt=ve(\"util\");CE.httpOverHttp=krt;CE.httpsOverHttp=Qrt;CE.httpOverHttps=Frt;CE.httpsOverHttps=Rrt;function krt(t){var e=new Ff(t);return e.request=wM.request,e}function Qrt(t){var e=new Ff(t);return e.request=wM.request,e.createSocket=Hse,e.defaultPort=443,e}function Frt(t){var e=new Ff(t);return e.request=_se.request,e}function Rrt(t){var e=new Ff(t);return e.request=_se.request,e.createSocket=Hse,e.defaultPort=443,e}function Ff(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||wM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on(\"free\",function(o,a,n,u){for(var A=qse(a,n,u),p=0,h=e.requests.length;p<h;++p){var E=e.requests[p];if(E.host===A.host&&E.port===A.port){e.requests.splice(p,1),E.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}xrt.inherits(Ff,brt.EventEmitter);Ff.prototype.addRequest=function(e,r,o,a){var n=this,u=IM({request:e},n.options,qse(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on(\"free\",p),A.on(\"close\",h),A.on(\"agentRemove\",h),e.onSocket(A);function p(){n.emit(\"free\",A,u)}function h(E){n.removeSocket(A),A.removeListener(\"free\",p),A.removeListener(\"close\",h),A.removeListener(\"agentRemove\",h)}})};Ff.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=IM({},o.proxyOptions,{method:\"CONNECT\",path:e.host+\":\"+e.port,agent:!1,headers:{host:e.host+\":\"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers[\"Proxy-Authorization\"]=\"Basic \"+new Buffer(n.proxyAuth).toString(\"base64\")),oh(\"making CONNECT request\");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once(\"response\",A),u.once(\"upgrade\",p),u.once(\"connect\",h),u.once(\"error\",E),u.end();function A(I){I.upgrade=!0}function p(I,v,x){process.nextTick(function(){h(I,v,x)})}function h(I,v,x){if(u.removeAllListeners(),v.removeAllListeners(),I.statusCode!==200){oh(\"tunneling socket could not be established, statusCode=%d\",I.statusCode),v.destroy();var C=new Error(\"tunneling socket could not be established, statusCode=\"+I.statusCode);C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}if(x.length>0){oh(\"got illegal response body from proxy\"),v.destroy();var C=new Error(\"got illegal response body from proxy\");C.code=\"ECONNRESET\",e.request.emit(\"error\",C),o.removeSocket(a);return}return oh(\"tunneling connection has established\"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function E(I){u.removeAllListeners(),oh(`tunneling socket could not be established, cause=%s\n`,I.message,I.stack);var v=new Error(\"tunneling socket could not be established, cause=\"+I.message);v.code=\"ECONNRESET\",e.request.emit(\"error\",v),o.removeSocket(a)}};Ff.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function Hse(t,e){var r=this;Ff.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader(\"host\"),n=IM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,\"\"):t.host}),u=Prt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function qse(t,e,r){return typeof t==\"string\"?{host:t,port:e,localAddress:r}:t}function IM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o==\"object\")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var oh;process.env.NODE_DEBUG&&/\\btunnel\\b/.test(process.env.NODE_DEBUG)?oh=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]==\"string\"?t[0]=\"TUNNEL: \"+t[0]:t.unshift(\"TUNNEL:\"),console.error.apply(console,t)}:oh=function(){};CE.debug=oh});var Yse=_((aLt,Gse)=>{Gse.exports=jse()});var Tf=_((Rf,KP)=>{\"use strict\";Object.defineProperty(Rf,\"__esModule\",{value:!0});var Wse=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function Trt(t){return Wse.includes(t)}var Nrt=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...Wse];function Lrt(t){return Nrt.includes(t)}var Ort=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function Mrt(t){return Ort.includes(t)}function wE(t){return e=>typeof e===t}var{toString:Kse}=Object.prototype,f1=t=>{let e=Kse.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&be.domElement(t))return\"HTMLElement\";if(Lrt(e))return e},ei=t=>e=>f1(e)===t;function be(t){if(t===null)return\"null\";switch(typeof t){case\"undefined\":return\"undefined\";case\"string\":return\"string\";case\"number\":return\"number\";case\"boolean\":return\"boolean\";case\"function\":return\"Function\";case\"bigint\":return\"bigint\";case\"symbol\":return\"symbol\";default:}if(be.observable(t))return\"Observable\";if(be.array(t))return\"Array\";if(be.buffer(t))return\"Buffer\";let e=f1(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError(\"Please don't use object wrappers for primitive types\");return\"Object\"}be.undefined=wE(\"undefined\");be.string=wE(\"string\");var Urt=wE(\"number\");be.number=t=>Urt(t)&&!be.nan(t);be.bigint=wE(\"bigint\");be.function_=wE(\"function\");be.null_=t=>t===null;be.class_=t=>be.function_(t)&&t.toString().startsWith(\"class \");be.boolean=t=>t===!0||t===!1;be.symbol=wE(\"symbol\");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t==\"object\"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>be.iterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>ei(\"Promise\")(t);var _rt=t=>{var e,r;return be.function_((e=t)===null||e===void 0?void 0:e.then)&&be.function_((r=t)===null||r===void 0?void 0:r.catch)};be.promise=t=>be.nativePromise(t)||_rt(t);be.generatorFunction=ei(\"GeneratorFunction\");be.asyncGeneratorFunction=t=>f1(t)===\"AsyncGeneratorFunction\";be.asyncFunction=t=>f1(t)===\"AsyncFunction\";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty(\"prototype\");be.regExp=ei(\"RegExp\");be.date=ei(\"Date\");be.error=ei(\"Error\");be.map=t=>ei(\"Map\")(t);be.set=t=>ei(\"Set\")(t);be.weakMap=t=>ei(\"WeakMap\")(t);be.weakSet=t=>ei(\"WeakSet\")(t);be.int8Array=ei(\"Int8Array\");be.uint8Array=ei(\"Uint8Array\");be.uint8ClampedArray=ei(\"Uint8ClampedArray\");be.int16Array=ei(\"Int16Array\");be.uint16Array=ei(\"Uint16Array\");be.int32Array=ei(\"Int32Array\");be.uint32Array=ei(\"Uint32Array\");be.float32Array=ei(\"Float32Array\");be.float64Array=ei(\"Float64Array\");be.bigInt64Array=ei(\"BigInt64Array\");be.bigUint64Array=ei(\"BigUint64Array\");be.arrayBuffer=ei(\"ArrayBuffer\");be.sharedArrayBuffer=ei(\"SharedArrayBuffer\");be.dataView=ei(\"DataView\");be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>ei(\"URL\")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>Boolean(t);be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||Mrt(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(Kse.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>Trt(f1(t));var Hrt=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&Hrt(t.length);be.inRange=(t,e)=>{if(be.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(be.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var qrt=1,jrt=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];be.domElement=t=>be.object(t)&&t.nodeType===qrt&&be.string(t.nodeName)&&!be.plainObject(t)&&jrt.every(e=>e in t);be.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(o)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var Vse=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=Vse(0);be.oddInteger=Vse(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;be.nonEmptyString=t=>be.string(t)&&t.length>0;var Grt=t=>be.string(t)&&!/\\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||Grt(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>ei(\"FormData\")(t);be.urlSearchParams=t=>ei(\"URLSearchParams\")(t);var Jse=(t,e,r)=>{if(!be.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return t.call(r,e)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(o=>Jse(Array.prototype.some,o,e));be.all=(t,...e)=>Jse(Array.prototype.every,t,e);var Ht=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\\`${be(u)}\\``))].join(\", \")}`:`received value of type \\`${be(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Rf.assert={undefined:t=>Ht(be.undefined(t),\"undefined\",t),string:t=>Ht(be.string(t),\"string\",t),number:t=>Ht(be.number(t),\"number\",t),bigint:t=>Ht(be.bigint(t),\"bigint\",t),function_:t=>Ht(be.function_(t),\"Function\",t),null_:t=>Ht(be.null_(t),\"null\",t),class_:t=>Ht(be.class_(t),\"Class\",t),boolean:t=>Ht(be.boolean(t),\"boolean\",t),symbol:t=>Ht(be.symbol(t),\"symbol\",t),numericString:t=>Ht(be.numericString(t),\"string with a number\",t),array:(t,e)=>{Ht(be.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>Ht(be.buffer(t),\"Buffer\",t),nullOrUndefined:t=>Ht(be.nullOrUndefined(t),\"null or undefined\",t),object:t=>Ht(be.object(t),\"Object\",t),iterable:t=>Ht(be.iterable(t),\"Iterable\",t),asyncIterable:t=>Ht(be.asyncIterable(t),\"AsyncIterable\",t),generator:t=>Ht(be.generator(t),\"Generator\",t),asyncGenerator:t=>Ht(be.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>Ht(be.nativePromise(t),\"native Promise\",t),promise:t=>Ht(be.promise(t),\"Promise\",t),generatorFunction:t=>Ht(be.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>Ht(be.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>Ht(be.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>Ht(be.boundFunction(t),\"Function\",t),regExp:t=>Ht(be.regExp(t),\"RegExp\",t),date:t=>Ht(be.date(t),\"Date\",t),error:t=>Ht(be.error(t),\"Error\",t),map:t=>Ht(be.map(t),\"Map\",t),set:t=>Ht(be.set(t),\"Set\",t),weakMap:t=>Ht(be.weakMap(t),\"WeakMap\",t),weakSet:t=>Ht(be.weakSet(t),\"WeakSet\",t),int8Array:t=>Ht(be.int8Array(t),\"Int8Array\",t),uint8Array:t=>Ht(be.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>Ht(be.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>Ht(be.int16Array(t),\"Int16Array\",t),uint16Array:t=>Ht(be.uint16Array(t),\"Uint16Array\",t),int32Array:t=>Ht(be.int32Array(t),\"Int32Array\",t),uint32Array:t=>Ht(be.uint32Array(t),\"Uint32Array\",t),float32Array:t=>Ht(be.float32Array(t),\"Float32Array\",t),float64Array:t=>Ht(be.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>Ht(be.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>Ht(be.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>Ht(be.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>Ht(be.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>Ht(be.dataView(t),\"DataView\",t),urlInstance:t=>Ht(be.urlInstance(t),\"URL\",t),urlString:t=>Ht(be.urlString(t),\"string with a URL\",t),truthy:t=>Ht(be.truthy(t),\"truthy\",t),falsy:t=>Ht(be.falsy(t),\"falsy\",t),nan:t=>Ht(be.nan(t),\"NaN\",t),primitive:t=>Ht(be.primitive(t),\"primitive\",t),integer:t=>Ht(be.integer(t),\"integer\",t),safeInteger:t=>Ht(be.safeInteger(t),\"integer\",t),plainObject:t=>Ht(be.plainObject(t),\"plain object\",t),typedArray:t=>Ht(be.typedArray(t),\"TypedArray\",t),arrayLike:t=>Ht(be.arrayLike(t),\"array-like\",t),domElement:t=>Ht(be.domElement(t),\"HTMLElement\",t),observable:t=>Ht(be.observable(t),\"Observable\",t),nodeStream:t=>Ht(be.nodeStream(t),\"Node.js Stream\",t),infinite:t=>Ht(be.infinite(t),\"infinite number\",t),emptyArray:t=>Ht(be.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>Ht(be.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>Ht(be.emptyString(t),\"empty string\",t),nonEmptyString:t=>Ht(be.nonEmptyString(t),\"non-empty string\",t),emptyStringOrWhitespace:t=>Ht(be.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),emptyObject:t=>Ht(be.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>Ht(be.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>Ht(be.emptySet(t),\"empty set\",t),nonEmptySet:t=>Ht(be.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>Ht(be.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>Ht(be.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>Ht(be.propertyKey(t),\"PropertyKey\",t),formData:t=>Ht(be.formData(t),\"FormData\",t),urlSearchParams:t=>Ht(be.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>Ht(be.evenInteger(t),\"even integer\",t),oddInteger:t=>Ht(be.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>Ht(be.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>Ht(be.inRange(t,e),\"in range\",t),any:(t,...e)=>Ht(be.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>Ht(be.all(t,...e),\"predicate returns truthy for all values\",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Rf.assert,{class:{value:Rf.assert.class_},function:{value:Rf.assert.function_},null:{value:Rf.assert.null_}});Rf.default=be;KP.exports=be;KP.exports.default=be;KP.exports.assert=Rf.assert});var zse=_((lLt,BM)=>{\"use strict\";var VP=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},IE=class{static fn(e){return(...r)=>new IE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new VP(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(IE.prototype,Promise.prototype);BM.exports=IE;BM.exports.CancelError=VP});var Xse=_((DM,SM)=>{\"use strict\";Object.defineProperty(DM,\"__esModule\",{value:!0});var Yrt=ve(\"tls\"),vM=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let o=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",u=()=>{o&&r.connect(),t instanceof Yrt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once(\"connect\",u):t.destroyed&&n&&r.close(t._hadError)};DM.default=vM;SM.exports=vM;SM.exports.default=vM});var Zse=_((bM,xM)=>{\"use strict\";Object.defineProperty(bM,\"__esModule\",{value:!0});var Wrt=Xse(),Krt=Number(process.versions.node.split(\".\")[0]),PM=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||Krt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener(\"lookup\",A),Wrt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener(\"lookup\",A),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener(\"socket\",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??e.connect)};return(()=>typeof t.writableFinished==\"boolean\"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener(\"finish\",a),t.prependOnceListener(\"response\",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};bM.default=PM;xM.exports=PM;xM.exports.default=PM});var soe=_((cLt,FM)=>{\"use strict\";var{V4MAPPED:Vrt,ADDRCONFIG:Jrt,ALL:ioe,promises:{Resolver:$se},lookup:zrt}=ve(\"dns\"),{promisify:kM}=ve(\"util\"),Xrt=ve(\"os\"),BE=Symbol(\"cacheableLookupCreateConnection\"),QM=Symbol(\"cacheableLookupInstance\"),eoe=Symbol(\"expires\"),Zrt=typeof ioe==\"number\",toe=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},$rt=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},roe=()=>{let t=!1,e=!1;for(let r of Object.values(Xrt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},ent=t=>Symbol.iterator in t,noe={ttl:!0},tnt={all:!0},JP=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new $se,lookup:u=zrt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=kM(u),this._resolver instanceof $se?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=kM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=kM(this._resolver.resolve6.bind(this._resolver))),this._iface=roe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r==\"function\"?(o=r,r={}):typeof r==\"number\"&&(r={family:r}),!o)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&Vrt&&(Zrt&&r.hints&ioe||a.length===0)?$rt(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&Jrt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[o,a]=await Promise.all([this._resolve4(e,noe),this._resolve6(e,noe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[eoe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}ent(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,tnt);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[eoe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(toe(e),BE in e)throw new Error(\"CacheableLookup has been already installed\");e[BE]=e.createConnection,e[QM]=this,e.createConnection=(r,o)=>(\"lookup\"in r||(r.lookup=this.lookup),e[BE](r,o))}uninstall(e){if(toe(e),e[BE]){if(e[QM]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[BE],delete e[BE],delete e[QM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=roe(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};FM.exports=JP;FM.exports.default=JP});var loe=_((uLt,RM)=>{\"use strict\";var rnt=typeof URL>\"u\"?ve(\"url\").URL:URL,nnt=\"text/plain\",int=\"us-ascii\",ooe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),snt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],u=!1;o[o.length-1]===\"base64\"&&(o.pop(),u=!0);let A=(o.shift()||\"\").toLowerCase(),h=[...o.map(E=>{let[I,v=\"\"]=E.split(\"=\").map(x=>x.trim());return I===\"charset\"&&(v=v.toLowerCase(),v===int)?\"\":`${I}${v?`=${v}`:\"\"}`}).filter(Boolean)];return u&&h.push(\"base64\"),(h.length!==0||A&&A!==nnt)&&h.unshift(A),`data:${h.join(\";\")},${u?a.trim():a}${n?`#${n}`:\"\"}`},aoe=(t,e)=>{if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,\"normalizeHttps\"))throw new Error(\"options.normalizeHttps is renamed to options.forceHttp\");if(Reflect.has(e,\"normalizeHttp\"))throw new Error(\"options.normalizeHttp is renamed to options.forceHttps\");if(Reflect.has(e,\"stripFragment\"))throw new Error(\"options.stripFragment is renamed to options.stripHash\");if(t=t.trim(),/^data:/i.test(t))return snt(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new rnt(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,u)=>/^(?!\\/)/g.test(u)?`${u}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),u=n[n.length-1];ooe(u,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])ooe(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\")),t=a.toString(),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t};RM.exports=aoe;RM.exports.default=aoe});var Aoe=_((ALt,uoe)=>{uoe.exports=coe;function coe(t,e){if(t&&e)return coe(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n==\"function\"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var NM=_((fLt,TM)=>{var foe=Aoe();TM.exports=foe(zP);TM.exports.strict=foe(poe);zP.proto=zP(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return zP(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return poe(this)},configurable:!0})});function zP(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function poe(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||\"Function wrapped with `once`\";return e.onceError=r+\" shouldn't be called more than once\",e.called=!1,e}});var LM=_((pLt,goe)=>{var ont=NM(),ant=function(){},lnt=function(t){return t.setHeader&&typeof t.abort==\"function\"},cnt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},hoe=function(t,e,r){if(typeof e==\"function\")return hoe(t,null,e);e||(e={}),r=ont(r||ant);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},E=function(C){r.call(t,C?new Error(\"exited with error code: \"+C):null)},I=function(C){r.call(t,C)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(u&&!(o&&o.ended))return r.call(t,new Error(\"premature close\"))},x=function(){t.req.on(\"finish\",p)};return lnt(t)?(t.on(\"complete\",p),t.on(\"abort\",v),t.req?x():t.on(\"request\",x)):u&&!o&&(t.on(\"end\",A),t.on(\"close\",A)),cnt(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",I),t.on(\"close\",v),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",v),t.removeListener(\"request\",x),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",A),t.removeListener(\"close\",A),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",I),t.removeListener(\"close\",v)}};goe.exports=hoe});var yoe=_((hLt,moe)=>{var unt=NM(),Ant=LM(),OM=ve(\"fs\"),p1=function(){},fnt=/^v?\\.0/.test(process.version),XP=function(t){return typeof t==\"function\"},pnt=function(t){return!fnt||!OM?!1:(t instanceof(OM.ReadStream||p1)||t instanceof(OM.WriteStream||p1))&&XP(t.close)},hnt=function(t){return t.setHeader&&XP(t.abort)},gnt=function(t,e,r,o){o=unt(o);var a=!1;t.on(\"close\",function(){a=!0}),Ant(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,pnt(t))return t.close(p1);if(hnt(t))return t.abort();if(XP(t.destroy))return t.destroy();o(u||new Error(\"stream was destroyed\"))}}},doe=function(t){t()},dnt=function(t,e){return t.pipe(e)},mnt=function(){var t=Array.prototype.slice.call(arguments),e=XP(t[t.length-1]||p1)&&t.pop()||p1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return gnt(a,u,A,function(p){r||(r=p),p&&o.forEach(doe),!u&&(o.forEach(doe),e(r))})});return t.reduce(dnt)};moe.exports=mnt});var Coe=_((gLt,Eoe)=>{\"use strict\";var{PassThrough:ynt}=ve(\"stream\");Eoe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r===\"buffer\",a=!1;e?a=!(r||o):r=r||\"utf8\",o&&(r=null);let n=new ynt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on(\"data\",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(\"\"),n.getBufferedLength=()=>u,n}});var woe=_((dLt,vE)=>{\"use strict\";var Ent=yoe(),Cnt=Coe(),ZP=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function $P(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Ent(t,Cnt(e),A=>{if(A){u(A);return}a()}),o.on(\"data\",()=>{o.getBufferedLength()>r&&u(new ZP)})}),o.getBufferedValue()}vE.exports=$P;vE.exports.default=$P;vE.exports.buffer=(t,e)=>$P(t,{...e,encoding:\"buffer\"});vE.exports.array=(t,e)=>$P(t,{...e,array:!0});vE.exports.MaxBufferError=ZP});var Boe=_((yLt,Ioe)=>{\"use strict\";var wnt=new Set([200,203,204,206,300,301,404,405,410,414,501]),Int=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),Bnt=new Set([500,502,503,504]),vnt={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},Dnt={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function Sd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Snt(t){return t?Bnt.has(t.status):!0}function MM(t){let e={};if(!t)return e;let r=t.trim().split(/\\s*,\\s*/);for(let o of r){let[a,n]=o.split(/\\s*=\\s*/,2);e[a]=n===void 0?!0:n.replace(/^\"|\"$/g,\"\")}return e}function Pnt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+\"=\"+o)}if(!!e.length)return e.join(\", \")}Ioe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=MM(r.headers[\"cache-control\"]),this._method=\"method\"in e?e.method:\"GET\",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=MM(e.headers[\"cache-control\"]),u&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":Pnt(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers[\"cache-control\"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc[\"no-cache\"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc[\"no-store\"]&&(this._method===\"GET\"||this._method===\"HEAD\"||this._method===\"POST\"&&this._hasExplicitExpiration())&&Int.has(this._status)&&!this._rescc[\"no-store\"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc[\"max-age\"]||this._isShared&&this._rescc[\"s-maxage\"]||this._rescc.public||wnt.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc[\"s-maxage\"]||this._rescc[\"max-age\"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error(\"Request headers missing\")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=MM(e.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(e.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method===\"HEAD\")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)vnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\\s*,\\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(\",\").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return Sd(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return Sd(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return Sd(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let o=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Sd(this._rescc[\"stale-if-error\"]),o=e+Sd(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Sd(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Sd(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error(\"Reinitialized\");if(!e||e.v!==1)throw Error(\"Invalid serialization\");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r[\"if-range\"],!this._requestMatches(e,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Snt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?o=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!Dnt[u]?r.headers[u]:this._resHeaders[u];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var eb=_((ELt,voe)=>{\"use strict\";voe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var Soe=_((CLt,Doe)=>{\"use strict\";var bnt=ve(\"stream\").Readable,xnt=eb(),UM=class extends bnt{constructor(e,r,o,a){if(typeof e!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(o instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=e,this.headers=xnt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};Doe.exports=UM});var boe=_((wLt,Poe)=>{\"use strict\";var knt=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];Poe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(knt));for(let o of r)o in e||(e[o]=typeof t[o]==\"function\"?t[o].bind(t):t[o])}});var koe=_((ILt,xoe)=>{\"use strict\";var Qnt=ve(\"stream\").PassThrough,Fnt=boe(),Rnt=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new Qnt;return Fnt(t,e),t.pipe(e)};xoe.exports=Rnt});var Qoe=_(_M=>{_M.stringify=function t(e){if(typeof e>\"u\")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(\":base64:\"+e.toString(\"base64\"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e==\"object\"){var r=\"\",o=Array.isArray(e);r=o?\"[\":\"{\";var a=!0;for(var n in e){var u=typeof e[n]==\"function\"||!o&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=\",\"),a=!1,o?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=o?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};_M.parse=function(t){return JSON.parse(t,function(e,r){return typeof r==\"string\"?/^:base64:/.test(r)?Buffer.from(r.substring(8),\"base64\"):/^:/.test(r)?r.substring(1):r:r})}});var Toe=_((vLt,Roe)=>{\"use strict\";var Tnt=ve(\"events\"),Foe=Qoe(),Nnt=t=>{let e={redis:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(ve(e[r]))(t)}return new Map},HM=class extends Tnt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:\"keyv\",serialize:Foe.stringify,deserialize:Foe.parse},typeof e==\"string\"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=Nnt(o)}typeof this.opts.store.on==\"function\"&&this.opts.store.on(\"error\",o=>this.emit(\"error\",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a==\"string\"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires==\"number\"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>\"u\"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o==\"number\"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};Roe.exports=HM});var Ooe=_((SLt,Loe)=>{\"use strict\";var Lnt=ve(\"events\"),tb=ve(\"url\"),Ont=loe(),Mnt=woe(),qM=Boe(),Noe=Soe(),Unt=eb(),_nt=koe(),Hnt=Toe(),qc=class{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new Hnt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r==\"string\")a=jM(tb.parse(r)),r={};else if(r instanceof tb.URL)a=jM(tb.parse(r.toString())),r={};else{let[I,...v]=(r.path||\"\").split(\"?\"),x=v.length>0?`?${v.join(\"?\")}`:\"\";a=jM({...r,pathname:I,search:x})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...qnt(a)},r.headers=Unt(r.headers);let n=new Lnt,u=Ont(tb.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,E=I=>{h=!0;let v=!1,x,C=new Promise(L=>{x=()=>{v||(v=!0,L())}}),R=L=>{if(p&&!I.forceRefresh){L.status=L.statusCode;let J=qM.fromObject(p.cachePolicy).revalidatedPolicy(I,L);if(!J.modified){let te=J.policy.responseHeaders();L=new Noe(p.statusCode,te,p.body,p.url),L.cachePolicy=J.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new qM(I,L,I),L.fromCache=!1);let U;I.cache&&L.cachePolicy.storable()?(U=_nt(L),(async()=>{try{let J=Mnt.buffer(L);if(await Promise.race([C,new Promise(ce=>L.once(\"end\",ce))]),v)return;let te=await J,ae={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:te},fe=I.strictTtl?L.cachePolicy.timeToLive():void 0;I.maxTtl&&(fe=fe?Math.min(fe,I.maxTtl):I.maxTtl),await this.cache.set(A,ae,fe)}catch(J){n.emit(\"error\",new qc.CacheError(J))}})()):I.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit(\"error\",new qc.CacheError(J))}})(),n.emit(\"response\",U||L),typeof o==\"function\"&&o(U||L)};try{let L=e(I,R);L.once(\"error\",x),L.once(\"abort\",x),n.emit(\"request\",L)}catch(L){n.emit(\"error\",new qc.RequestError(L))}};return(async()=>{let I=async x=>{await Promise.resolve();let C=x.cache?await this.cache.get(A):void 0;if(typeof C>\"u\")return E(x);let R=qM.fromObject(C.cachePolicy);if(R.satisfiesWithoutRevalidation(x)&&!x.forceRefresh){let L=R.responseHeaders(),U=new Noe(C.statusCode,L,C.body,C.url);U.cachePolicy=R,U.fromCache=!0,n.emit(\"response\",U),typeof o==\"function\"&&o(U)}else p=C,x.headers=R.revalidationHeaders(x),E(x)},v=x=>n.emit(\"error\",new qc.CacheError(x));this.cache.once(\"error\",v),n.on(\"response\",()=>this.cache.removeListener(\"error\",v));try{await I(r)}catch(x){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new qc.CacheError(x))}})(),n}}};function qnt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function jM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}qc.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};qc.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};Loe.exports=qc});var Uoe=_((xLt,Moe)=>{\"use strict\";var jnt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Moe.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error(\"The second stream must have the `autoDestroy` option set to `false`\");let r=new Set(Object.keys(t).concat(jnt)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n==\"function\"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once(\"aborted\",()=>{e.destroy(),e.emit(\"aborted\")}),t.once(\"close\",()=>{t.complete&&e.readable?e.once(\"end\",()=>{e.emit(\"close\")}):e.emit(\"close\")}),e}});var Hoe=_((kLt,_oe)=>{\"use strict\";var{Transform:Gnt,PassThrough:Ynt}=ve(\"stream\"),GM=ve(\"zlib\"),Wnt=Uoe();_oe.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof GM.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let o=!0,a=new Gnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new Ynt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?GM.createBrotliDecompress():GM.createUnzip();return u.once(\"error\",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Wnt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var WM=_((QLt,qoe)=>{\"use strict\";var YM=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};qoe.exports=YM});var VM=_((FLt,Woe)=>{\"use strict\";var Knt=ve(\"events\"),Vnt=ve(\"tls\"),Jnt=ve(\"http2\"),znt=WM(),ea=Symbol(\"currentStreamsCount\"),joe=Symbol(\"request\"),Wl=Symbol(\"cachedOriginSet\"),DE=Symbol(\"gracefullyClosing\"),Xnt=[\"maxDeflateDynamicTableSize\",\"maxSessionMemory\",\"maxHeaderListPairs\",\"maxOutstandingPings\",\"maxReservedRemoteStreams\",\"maxSendHeaderBlockLength\",\"paddingStrategy\",\"localAddress\",\"path\",\"rejectUnauthorized\",\"minDHSize\",\"ca\",\"cert\",\"clientCertEngine\",\"ciphers\",\"key\",\"pfx\",\"servername\",\"minVersion\",\"maxVersion\",\"secureProtocol\",\"crl\",\"honorCipherOrder\",\"ecdhCurve\",\"dhparam\",\"secureOptions\",\"sessionIdContext\"],Znt=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},$nt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,KM=(t,e)=>{for(let r of t)r[Wl].length<e[Wl].length&&r[Wl].every(o=>e[Wl].includes(o))&&r[ea]+e[ea]<=e.remoteSettings.maxConcurrentStreams&&Yoe(r)},eit=(t,e)=>{for(let r of t)e[Wl].length<r[Wl].length&&e[Wl].every(o=>r[Wl].includes(o))&&e[ea]+r[ea]<=r.remoteSettings.maxConcurrentStreams&&Yoe(e)},Goe=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[tA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Yoe=t=>{t[DE]=!0,t[ea]===0&&t.close()},tA=class extends Knt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new znt({maxSize:a})}static normalizeOrigin(e,r){return typeof e==\"string\"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r=\"\";if(e)for(let o of Xnt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=tA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:E}of o)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(u in this.sessions){let E=this.sessions[u],I=-1,v=-1,x;for(let C of E){let R=C.remoteSettings.maxConcurrentStreams;if(R<I)break;if(C[Wl].includes(A)){let L=C[ea];if(L>=R||C[DE]||C.destroyed)continue;x||(I=R),L>v&&(x=C,v=L)}}if(x){if(o.length!==1){for(let{reject:C}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);C(R)}return}o[0].resolve(x);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let E=`${A}:${u}`,I=!1;try{let v=Jnt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});v[ea]=0,v[DE]=!1;let x=()=>v[ea]<v.remoteSettings.maxConcurrentStreams,C=!0;v.socket.once(\"session\",L=>{this.tlsSessionCache.set(E,L)}),v.once(\"error\",L=>{for(let{reject:U}of o)U(L);this.tlsSessionCache.delete(E)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once(\"close\",()=>{if(I){C&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error(\"Session closed without receiving a SETTINGS frame\");L.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of o)U(L);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!x())){for(let L of v[Wl])if(L in this.queue[u]){let{listeners:U}=this.queue[u][L];for(;U.length!==0&&x();)U.shift().resolve(v);let J=this.queue[u];if(J[L].listeners.length===0&&(delete J[L],Object.keys(J).length===0)){delete this.queue[u];break}if(!x())break}}};v.on(\"origin\",()=>{v[Wl]=v.originSet,x()&&(R(),KM(this.sessions[u],v))}),v.once(\"remoteSettings\",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error(\"Agent has been destroyed\");for(let U of o)U.reject(L);v.destroy();return}v[Wl]=v.originSet;{let L=this.sessions;if(u in L){let U=L[u];U.splice(Znt(U,v,$nt),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,I=!0,this.emit(\"session\",v),R(),p(),v[ea]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on(\"remoteSettings\",()=>{R(),KM(this.sessions[u],v)})}),v[joe]=v.request,v.request=(L,U)=>{if(v[DE])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let J=v[joe](L,U);return v.ref(),++v[ea],v[ea]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once(\"close\",()=>{if(C=x(),--v[ea],!v.destroyed&&!v.closed&&(eit(this.sessions[u],v),x()&&!v.closed)){C||(this._freeSessionsCount++,C=!0);let te=v[ea]===0;te&&v.unref(),te&&(this._freeSessionsCount>this.maxFreeSessions||v[DE])?v.close():(KM(this.sessions[u],v),R())}}),J}}catch(v){for(let x of o)x.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return tA.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),Vnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[ea]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return Goe({agent:this,isFree:!0})}get busySessions(){return Goe({agent:this,isFree:!1})}};tA.kCurrentStreamsCount=ea;tA.kGracefullyClosing=DE;Woe.exports={Agent:tA,globalAgent:new tA}});var zM=_((RLt,Koe)=>{\"use strict\";var{Readable:tit}=ve(\"stream\"),JM=class extends tit{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage=\"\",this.httpVersion=\"2.0\",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners(\"data\"),this.resume())}_read(){this.req&&this.req._request.resume()}};Koe.exports=JM});var XM=_((TLt,Voe)=>{\"use strict\";Voe.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname==\"string\"&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return typeof t.port==\"string\"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var zoe=_((NLt,Joe)=>{\"use strict\";Joe.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var Zoe=_((LLt,Xoe)=>{\"use strict\";Xoe.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var eae=_((MLt,$oe)=>{\"use strict\";var SE=(t,e,r)=>{$oe.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};SE(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${o?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});SE(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);SE(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);SE(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);SE(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);SE(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var r4=_((ULt,aae)=>{\"use strict\";var rit=ve(\"http2\"),{Writable:nit}=ve(\"stream\"),{Agent:tae,globalAgent:iit}=VM(),sit=zM(),oit=XM(),ait=zoe(),lit=Zoe(),{ERR_INVALID_ARG_TYPE:ZM,ERR_INVALID_PROTOCOL:cit,ERR_HTTP_HEADERS_SENT:rae,ERR_INVALID_HTTP_TOKEN:uit,ERR_HTTP_INVALID_HEADER_VALUE:Ait,ERR_INVALID_CHAR:fit}=eae(),{HTTP2_HEADER_STATUS:nae,HTTP2_HEADER_METHOD:iae,HTTP2_HEADER_PATH:sae,HTTP2_METHOD_CONNECT:pit}=rit.constants,Qo=Symbol(\"headers\"),$M=Symbol(\"origin\"),e4=Symbol(\"session\"),oae=Symbol(\"options\"),rb=Symbol(\"flushedHeaders\"),h1=Symbol(\"jobs\"),hit=/^[\\^`\\-\\w!#$%&*+.|~]+$/,git=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,t4=class extends nit{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=oit(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[e4]=r.h2session;else if(r.agent===!1)this.agent=new tae({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new tae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=iit;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new ZM(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new cit(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[Qo]=Object.create(null),this[h1]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[Qo])&&(this[Qo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[oae]=r,n===443?(this[$M]=`https://${u}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=u)):(this[$M]=`https://${u}:${n}`,\":authority\"in this[Qo]||(this[Qo][\":authority\"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once(\"response\",o),this[rb]=!1}get method(){return this[Qo][iae]}set method(e){e&&(this[Qo][iae]=e.toUpperCase())}get path(){return this[Qo][sae]}set path(e){e&&(this[Qo][sae]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[h1].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[h1].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit(\"abort\")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[rb]||this.destroyed)return;this[rb]=!0;let e=this.method===pit,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||ait(o,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once(\"finish\",()=>{u(...A)})};o.once(\"response\",a((u,A,p)=>{let h=new sit(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[nae],h.headers=u,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit(\"connect\",h,o,Buffer.alloc(0))?this.emit(\"close\"):o.destroy()):(o.on(\"data\",E=>{!h._dumped&&!h.push(E)&&o.pause()}),o.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),o.once(\"headers\",a(u=>this.emit(\"information\",{statusCode:u[nae]}))),o.once(\"trailers\",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[h1])u();this.emit(\"socket\",this.socket)};if(this[e4])try{r(this[e4].request(this[Qo]))}catch(o){this.emit(\"error\",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[$M],this[oae],this[Qo]))}catch(o){this.emit(\"error\",o)}}}getHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);return this[Qo][e.toLowerCase()]}get headersSent(){return this[rb]}removeHeader(e){if(typeof e!=\"string\")throw new ZM(\"name\",\"string\",e);if(this.headersSent)throw new rae(\"remove\");delete this[Qo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new rae(\"set\");if(typeof e!=\"string\"||!hit.test(e)&&!lit(e))throw new uit(\"Header name\",e);if(typeof r>\"u\")throw new Ait(r,e);if(git.test(r))throw new fit(\"header content\",e);this[Qo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[h1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};aae.exports=t4});var cae=_((_Lt,lae)=>{\"use strict\";var dit=ve(\"tls\");lae.exports=(t={})=>new Promise((e,r)=>{let o=dit.connect(t,()=>{t.resolveSocket?(o.off(\"error\",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on(\"error\",r)})});var Aae=_((HLt,uae)=>{\"use strict\";var mit=ve(\"net\");uae.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith(\"[\")?r.indexOf(\"]\")===-1?e=r:e=r.slice(1,-1):e=r.split(\":\",1)[0]),mit.isIP(e)?\"\":e}});var hae=_((qLt,i4)=>{\"use strict\";var fae=ve(\"http\"),n4=ve(\"https\"),yit=cae(),Eit=WM(),Cit=r4(),wit=Aae(),Iit=XM(),nb=new Eit({maxSize:100}),g1=new Map,pae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit(\"free\",e,r)};e.on(\"free\",o);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",o),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},Bit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!nb.has(e)){if(g1.has(e))return(await g1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=yit(t);g1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(nb.set(e,u),t.path=r,u===\"h2\")n.destroy();else{let{globalAgent:A}=n4,p=n4.Agent.prototype.createConnection;o?o.createConnection===p?pae(o,n,t):n.destroy():A.createConnection===p?pae(A,n,t):n.destroy()}return g1.delete(e),u}catch(n){throw g1.delete(e),n}}return nb.get(e)};i4.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=Iit(new URL(t))),typeof e==\"function\"&&(r=e,e=void 0),e={ALPNProtocols:[\"h2\",\"http/1.1\"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");e.protocol=e.protocol||\"https:\";let o=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||wit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?n4.globalAgent:fae.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");e.agent=a[o?\"https\":\"http\"]}return o&&await Bit(e)===\"h2\"?(a&&(e.agent=a.http2),new Cit(e,r)):fae.request(e,r)};i4.exports.protocolCache=nb});var dae=_((jLt,gae)=>{\"use strict\";var vit=ve(\"http2\"),Dit=VM(),s4=r4(),Sit=zM(),Pit=hae(),bit=(t,e,r)=>new s4(t,e,r),xit=(t,e,r)=>{let o=new s4(t,e,r);return o.end(),o};gae.exports={...vit,ClientRequest:s4,IncomingMessage:Sit,...Dit,request:bit,get:xit,auto:Pit}});var a4=_(o4=>{\"use strict\";Object.defineProperty(o4,\"__esModule\",{value:!0});var mae=Tf();o4.default=t=>mae.default.nodeStream(t)&&mae.default.function_(t.getBoundary)});var wae=_(l4=>{\"use strict\";Object.defineProperty(l4,\"__esModule\",{value:!0});var Eae=ve(\"fs\"),Cae=ve(\"util\"),yae=Tf(),kit=a4(),Qit=Cae.promisify(Eae.stat);l4.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(yae.default.string(t))return Buffer.byteLength(t);if(yae.default.buffer(t))return t.length;if(kit.default(t))return Cae.promisify(t.getLength.bind(t))();if(t instanceof Eae.ReadStream){let{size:r}=await Qit(t.path);return r===0?void 0:r}}});var u4=_(c4=>{\"use strict\";Object.defineProperty(c4,\"__esModule\",{value:!0});function Fit(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}c4.default=Fit});var Iae=_(A4=>{\"use strict\";Object.defineProperty(A4,\"__esModule\",{value:!0});A4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var vae=_(d1=>{\"use strict\";Object.defineProperty(d1,\"__esModule\",{value:!0});d1.TimeoutError=void 0;var Rit=ve(\"net\"),Tit=Iae(),Bae=Symbol(\"reentry\"),Nit=()=>{},ib=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};d1.TimeoutError=ib;d1.default=(t,e,r)=>{if(Bae in t)return Nit;t[Bae]=!0;let o=[],{once:a,unhandleAll:n}=Tit.default(),u=(I,v,x)=>{var C;let R=setTimeout(v,I,I,x);(C=R.unref)===null||C===void 0||C.call(R);let L=()=>{clearTimeout(R)};return o.push(L),L},{host:A,hostname:p}=r,h=(I,v)=>{t.destroy(new ib(I,v))},E=()=>{for(let I of o)I();n()};if(t.once(\"error\",I=>{if(E(),t.listenerCount(\"error\")===0)throw I}),t.once(\"close\",E),a(t,\"response\",I=>{a(I,\"end\",E)}),typeof e.request<\"u\"&&u(e.request,h,\"request\"),typeof e.socket<\"u\"){let I=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,I),o.push(()=>{t.removeListener(\"timeout\",I)})}return a(t,\"socket\",I=>{var v;let{socketPath:x}=t;if(I.connecting){let C=Boolean(x??Rit.isIP((v=p??A)!==null&&v!==void 0?v:\"\")!==0);if(typeof e.lookup<\"u\"&&!C&&typeof I.address().address>\"u\"){let R=u(e.lookup,h,\"lookup\");a(I,\"lookup\",R)}if(typeof e.connect<\"u\"){let R=()=>u(e.connect,h,\"connect\");C?a(I,\"connect\",R()):a(I,\"lookup\",L=>{L===null&&a(I,\"connect\",R())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(I,\"connect\",()=>{let R=u(e.secureConnect,h,\"secureConnect\");a(I,\"secureConnect\",R)})}if(typeof e.send<\"u\"){let C=()=>u(e.send,h,\"send\");I.connecting?a(I,\"connect\",()=>{a(t,\"upload-complete\",C())}):a(t,\"upload-complete\",C())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let I=u(e.response,h,\"response\");a(t,\"response\",I)}),E}});var Sae=_(f4=>{\"use strict\";Object.defineProperty(f4,\"__esModule\",{value:!0});var Dae=Tf();f4.default=t=>{t=t;let e={protocol:t.protocol,hostname:Dae.default.string(t.hostname)&&t.hostname.startsWith(\"[\")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||\"\"}${t.search||\"\"}`};return Dae.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||\"\"}:${t.password||\"\"}`),e}});var Pae=_(p4=>{\"use strict\";Object.defineProperty(p4,\"__esModule\",{value:!0});var Lit=ve(\"url\"),Oit=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];p4.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(e.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(e.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(e.search&&e.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!t){if(!e.protocol)throw new TypeError(\"No URL protocol specified\");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:\"\"}`}let a=new Lit.URL(t);if(e.path){let n=e.path.indexOf(\"?\");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of Oit)e[n]&&(a[n]=e[n].toString());return a}});var bae=_(g4=>{\"use strict\";Object.defineProperty(g4,\"__esModule\",{value:!0});var h4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e==\"object\"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e==\"object\"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e==\"object\"?this.weakMap.has(e):this.map.has(e)}};g4.default=h4});var m4=_(d4=>{\"use strict\";Object.defineProperty(d4,\"__esModule\",{value:!0});var Mit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};d4.default=Mit});var kae=_(Pd=>{\"use strict\";Object.defineProperty(Pd,\"__esModule\",{value:!0});Pd.dnsLookupIpVersionToFamily=Pd.isDnsLookupIpVersion=void 0;var xae={auto:0,ipv4:4,ipv6:6};Pd.isDnsLookupIpVersion=t=>t in xae;Pd.dnsLookupIpVersionToFamily=t=>{if(Pd.isDnsLookupIpVersion(t))return xae[t];throw new Error(\"Invalid DNS lookup IP version\")}});var y4=_(sb=>{\"use strict\";Object.defineProperty(sb,\"__esModule\",{value:!0});sb.isResponseOk=void 0;sb.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var Fae=_(E4=>{\"use strict\";Object.defineProperty(E4,\"__esModule\",{value:!0});var Qae=new Set;E4.default=t=>{Qae.has(t)||(Qae.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var Rae=_(C4=>{\"use strict\";Object.defineProperty(C4,\"__esModule\",{value:!0});var Ai=Tf(),Uit=(t,e)=>{if(Ai.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Ai.assert.any([Ai.default.string,Ai.default.undefined],t.encoding),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.resolveBodyOnly),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.methodRewriting),Ai.assert.any([Ai.default.boolean,Ai.default.undefined],t.isStream),Ai.assert.any([Ai.default.string,Ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ai.default.number(r)&&(t.retry.limit=r),Ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ai.default.number))),Ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!Ai.default.function_(o.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Ai.default.function_(o.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Ai.default.function_(o.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Ai.default.function_(o.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return t.responseType===\"json\"&&t.headers.accept===void 0&&(t.headers.accept=\"application/json\"),t};C4.default=Uit});var Tae=_(m1=>{\"use strict\";Object.defineProperty(m1,\"__esModule\",{value:!0});m1.retryAfterStatusCodes=void 0;m1.retryAfterStatusCodes=new Set([413,429,503]);var _it=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};m1.default=_it});var C1=_(Bn=>{\"use strict\";Object.defineProperty(Bn,\"__esModule\",{value:!0});Bn.UnsupportedProtocolError=Bn.ReadError=Bn.TimeoutError=Bn.UploadError=Bn.CacheError=Bn.HTTPError=Bn.MaxRedirectsError=Bn.RequestError=Bn.setNonEnumerableProperties=Bn.knownHookEvents=Bn.withoutBody=Bn.kIsNormalizedAlready=void 0;var Nae=ve(\"util\"),Lae=ve(\"stream\"),Hit=ve(\"fs\"),ah=ve(\"url\"),Oae=ve(\"http\"),w4=ve(\"http\"),qit=ve(\"https\"),jit=Zse(),Git=soe(),Mae=Ooe(),Yit=Hoe(),Wit=dae(),Kit=eb(),st=Tf(),Vit=wae(),Uae=a4(),Jit=u4(),_ae=vae(),zit=Sae(),Hae=Pae(),Xit=bae(),Zit=m4(),qae=kae(),$it=y4(),lh=Fae(),est=Rae(),tst=Tae(),I4,Zs=Symbol(\"request\"),lb=Symbol(\"response\"),PE=Symbol(\"responseSize\"),bE=Symbol(\"downloadedSize\"),xE=Symbol(\"bodySize\"),kE=Symbol(\"uploadedSize\"),ob=Symbol(\"serverResponsesPiped\"),jae=Symbol(\"unproxyEvents\"),Gae=Symbol(\"isFromCache\"),B4=Symbol(\"cancelTimeouts\"),Yae=Symbol(\"startedReading\"),QE=Symbol(\"stopReading\"),ab=Symbol(\"triggerRead\"),ch=Symbol(\"body\"),y1=Symbol(\"jobs\"),Wae=Symbol(\"originalResponse\"),Kae=Symbol(\"retryTimeout\");Bn.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var rst=st.default.string(process.versions.brotli);Bn.withoutBody=new Set([\"GET\",\"HEAD\"]);Bn.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function nst(t){for(let e in t){let r=t[e];if(!st.default.string(r)&&!st.default.number(r)&&!st.default.boolean(r)&&!st.default.null_(r)&&!st.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function ist(t){return st.default.object(t)&&!(\"statusCode\"in t)}var v4=new Xit.default,sst=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once(\"error\",o),t.once(\"ready\",()=>{t.off(\"error\",o),e()})}),ost=new Set([300,301,302,303,304,307,308]),ast=[\"context\",\"body\",\"json\",\"form\"];Bn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of ast)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Vi=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,o instanceof db?(Object.defineProperty(this,\"request\",{enumerable:!1,value:o}),Object.defineProperty(this,\"response\",{enumerable:!1,value:o[lb]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:o.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,st.default.string(r.stack)&&st.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(`\n`).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(`\n`)}${A.reverse().join(`\n`)}`}}};Bn.RequestError=Vi;var ub=class extends Vi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Bn.MaxRedirectsError=ub;var Ab=class extends Vi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Bn.HTTPError=Ab;var fb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Bn.CacheError=fb;var pb=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Bn.UploadError=pb;var hb=class extends Vi{constructor(e,r,o){super(e.message,e,o),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Bn.TimeoutError=hb;var E1=class extends Vi{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Bn.ReadError=E1;var gb=class extends Vi{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Bn.UnsupportedProtocolError=gb;var lst=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],db=class extends Lae.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[bE]=0,this[kE]=0,this.requestInitialized=!1,this[ob]=new Set,this.redirects=[],this[QE]=!1,this[ab]=!1,this[y1]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on(\"pipe\",h=>{h.prependListener(\"data\",a),h.on(\"data\",n),h.prependListener(\"end\",a),h.on(\"end\",n)}),this.on(\"unpipe\",h=>{h.off(\"data\",a),h.off(\"data\",n),h.off(\"end\",a),h.off(\"end\",n)}),this.on(\"pipe\",h=>{h instanceof w4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),Bn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){st.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Hit.ReadStream&&await sst(this.options.body);let{url:E}=this.options;if(!E)throw new TypeError(\"Missing `url` property\");if(this.requestUrl=E.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[Zs])===null||h===void 0||h.destroy();return}for(let I of this[y1])I();this[y1].length=0,this.requestInitialized=!0}catch(E){if(E instanceof Vi){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(st.default.object(e)&&!st.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...o,...r},e!==void 0&&(r.url=e),st.default.urlInstance(r.url)&&(r.url=new ah.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),st.assert.any([st.default.string,st.default.undefined],r.method),st.assert.any([st.default.object,st.default.undefined],r.headers),st.assert.any([st.default.string,st.default.urlInstance,st.default.undefined],r.prefixUrl),st.assert.any([st.default.object,st.default.undefined],r.cookieJar),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.searchParams),st.assert.any([st.default.object,st.default.string,st.default.undefined],r.cache),st.assert.any([st.default.object,st.default.number,st.default.undefined],r.timeout),st.assert.any([st.default.object,st.default.undefined],r.context),st.assert.any([st.default.object,st.default.undefined],r.hooks),st.assert.any([st.default.boolean,st.default.undefined],r.decompress),st.assert.any([st.default.boolean,st.default.undefined],r.ignoreInvalidCookies),st.assert.any([st.default.boolean,st.default.undefined],r.followRedirect),st.assert.any([st.default.number,st.default.undefined],r.maxRedirects),st.assert.any([st.default.boolean,st.default.undefined],r.throwHttpErrors),st.assert.any([st.default.boolean,st.default.undefined],r.http2),st.assert.any([st.default.boolean,st.default.undefined],r.allowGetBody),st.assert.any([st.default.string,st.default.undefined],r.localAddress),st.assert.any([qae.isDnsLookupIpVersion,st.default.undefined],r.dnsLookupIpVersion),st.assert.any([st.default.object,st.default.undefined],r.https),st.assert.any([st.default.boolean,st.default.undefined],r.rejectUnauthorized),r.https&&(st.assert.any([st.default.boolean,st.default.undefined],r.https.rejectUnauthorized),st.assert.any([st.default.function_,st.default.undefined],r.https.checkServerIdentity),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificateAuthority),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.key),st.assert.any([st.default.string,st.default.object,st.default.array,st.default.undefined],r.https.certificate),st.assert.any([st.default.string,st.default.undefined],r.https.passphrase),st.assert.any([st.default.string,st.default.buffer,st.default.array,st.default.undefined],r.https.pfx)),st.assert.any([st.default.object,st.default.undefined],r.cacheOptions),st.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===o?.headers?r.headers={...r.headers}:r.headers=Kit({...o?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==o?.searchParams){let x;if(st.default.string(r.searchParams)||r.searchParams instanceof ah.URLSearchParams)x=new ah.URLSearchParams(r.searchParams);else{nst(r.searchParams),x=new ah.URLSearchParams;for(let C in r.searchParams){let R=r.searchParams[C];R===null?x.append(C,\"\"):R!==void 0&&x.append(C,R)}}(a=o?.searchParams)===null||a===void 0||a.forEach((C,R)=>{x.has(R)||x.append(R,C)}),r.searchParams=x}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(u=r.password)!==null&&u!==void 0?u:\"\",st.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o?.prefixUrl)!==null&&A!==void 0?A:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),st.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=Hae.default(r.prefixUrl+r.url,r)}else(st.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=Hae.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:x}=r;Object.defineProperty(r,\"prefixUrl\",{set:R=>{let L=r.url;if(!L.href.startsWith(R))throw new Error(`Cannot change \\`prefixUrl\\` from ${x} to ${R}: ${L.href}`);r.url=new ah.URL(R+L.href.slice(x.length)),x=R},get:()=>x});let{protocol:C}=r.url;if(C===\"unix:\"&&(C=\"http:\",r.url=new ah.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),C!==\"http:\"&&C!==\"https:\")throw new gb(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:x,getCookieString:C}=E;st.assert.function_(x),st.assert.function_(C),x.length===4&&C.length===0&&(x=Nae.promisify(x.bind(r.cookieJar)),C=Nae.promisify(C.bind(r.cookieJar)),r.cookieJar={setCookie:x,getCookieString:C})}let{cache:I}=r;if(I&&(v4.has(I)||v4.set(I,new Mae((x,C)=>{let R=x[Zs](x,C);return st.default.promise(R)&&(R.once=(L,U)=>{if(L===\"error\")R.catch(U);else if(L===\"abort\")(async()=>{try{(await R).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return R}),R},I))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)I4||(I4=new Git.default),r.dnsCache=I4;else if(!st.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${st.default(r.dnsCache)}`);st.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===o?.hooks;r.hooks={...r.hooks};for(let x of Bn.knownHookEvents)if(x in r.hooks)if(st.default.array(r.hooks[x]))r.hooks[x]=[...r.hooks[x]];else throw new TypeError(`Parameter \\`${x}\\` must be an Array, got ${st.default(r.hooks[x])}`);else r.hooks[x]=[];if(o&&!v)for(let x of Bn.knownHookEvents)o.hooks[x].length>0&&(r.hooks[x]=[...o.hooks[x],...r.hooks[x]]);if(\"family\"in r&&lh.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),o?.https&&(r.https={...o.https,...r.https}),\"rejectUnauthorized\"in r&&lh.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&lh.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&lh.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&lh.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&lh.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&lh.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&lh.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let x in r.agent)if(x!==\"http\"&&x!==\"https\"&&x!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${x}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Bn.setNonEnumerableProperties([o,h],r),est.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!st.default.undefined(e.form),a=!st.default.undefined(e.json),n=!st.default.undefined(e.body),u=o||a||n,A=Bn.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof Lae.Readable)&&!st.default.string(e.body)&&!st.default.buffer(e.body)&&!Uae.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(o&&!st.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!st.default.string(r[\"content-type\"]);n?(Uae.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ch]=e.body):o?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[ch]=new ah.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[ch]=e.stringifyJson(e.json));let h=await Vit.default(this[ch],e.headers);st.default.undefined(r[\"content-length\"])&&st.default.undefined(r[\"transfer-encoding\"])&&!A&&!st.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[xE]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Wae]=e,r.decompress&&(e=Yit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Oae.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Gae]=n.isFromCache,this[PE]=Number(e.headers[\"content-length\"])||void 0,this[lb]=e,e.once(\"end\",()=>{this[PE]=this[bE],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",A=>{e.destroy(),this._beforeError(new E1(A,this))}),e.once(\"aborted\",()=>{this._beforeError(new E1({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let u=e.headers[\"set-cookie\"];if(st.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&ost.has(a)){if(e.resume(),this[Zs]&&(this[B4](),delete this[Zs],this[jae]()),(a===303&&r.method!==\"GET\"&&r.method!==\"HEAD\"||!r.methodRewriting)&&(r.method=\"GET\",\"body\"in r&&delete r.body,\"json\"in r&&delete r.json,\"form\"in r&&delete r.form,this[ch]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new ub(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new ah.URL(p,o),E=h.toString();decodeURI(E),h.hostname!==o.hostname||h.port!==o.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let I of r.hooks.beforeRedirect)await I(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!$it.isResponseOk(n)){this._beforeError(new Ab(n));return}e.on(\"readable\",()=>{this[ab]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let A of this[ob])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&A.setHeader(p,E)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;jit.default(e),this[B4]=_ae.default(e,o,a);let n=r.cache?\"cacheableResponse\":\"response\";e.once(n,p=>{this._onResponse(p)}),e.once(\"error\",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof _ae.TimeoutError?new hb(p,this.timings,this):new Vi(p.message,p,this),this._beforeError(p)}),this[jae]=Jit.default(e,this,lst),this[Zs]=e,this.emit(\"uploadProgress\",this.uploadProgress);let u=this[ch],A=this.redirects.length===0?this:e;st.default.nodeStream(u)?(u.pipe(A),u.once(\"error\",p=>{this._beforeError(new pb(p,this))})):(this._unlockWrite(),st.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,zit.default(e)),delete r.url;let n,u=v4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",A),o(A)});r.url=e,u.once(\"error\",a),u.once(\"request\",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let U in A)if(st.default.undefined(A[U]))delete A[U];else if(st.default.null_(A[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(u.decompress&&st.default.undefined(A[\"accept-encoding\"])&&(A[\"accept-encoding\"]=rst?\"gzip, deflate, br\":\"gzip, deflate\"),u.cookieJar){let U=await u.cookieJar.getCookieString(u.url.toString());st.default.nonEmptyString(U)&&(u.headers.cookie=U)}for(let U of u.hooks.beforeRequest){let J=await U(u);if(!st.default.undefined(J)){u.request=()=>J;break}}u.body&&this[ch]!==u.body&&(this[ch]=u.body);let{agent:p,request:h,timeout:E,url:I}=u;if(u.dnsCache&&!(\"lookup\"in u)&&(u.lookup=u.dnsCache.lookup),I.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${I.pathname}${I.search}`);if(U?.groups){let{socketPath:J,path:te}=U.groups;Object.assign(u,{socketPath:J,path:te,host:\"\"})}}let v=I.protocol===\"https:\",x;u.http2?x=Wit.auto:x=v?qit.request:Oae.request;let C=(e=u.request)!==null&&e!==void 0?e:x,R=u.cache?this._createCacheableRequest:C;p&&!u.http2&&(u.agent=p[v?\"https\":\"http\"]),u[Zs]=C,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=qae.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}u.https&&(\"rejectUnauthorized\"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let U=await R(I,L);st.default.undefined(U)&&(U=x(I,L)),u.request=h,u.timeout=E,u.agent=p,u.https&&(\"rejectUnauthorized\"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),ist(U)?this._onRequest(U):this.writable?(this.once(\"finish\",()=>{this._onResponse(U)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(U)}catch(U){throw U instanceof Mae.CacheError?new fb(U,this):new Vi(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Vi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[QE])return;let{options:r}=this,o=this.retryCount+1;this[QE]=!0,e instanceof Vi||(e=new Vi(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Zit.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let u;try{let A;n&&\"retry-after\"in n.headers&&(A=Number(n.headers[\"retry-after\"]),Number.isNaN(A)?(A=Date.parse(n.headers[\"retry-after\"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:tst.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Vi(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Vi(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",o,e))};this[Kae]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[ab]=!0;let e=this[lb];if(e&&!this[QE]){e.readableLength&&(this[ab]=!1);let r;for(;(r=e.read())!==null;){this[bE]+=r.length,this[Yae]=!0;let o=this.downloadProgress;o.percent<1&&this.emit(\"downloadProgress\",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[y1].push(a)}_writeRequest(e,r,o){this[Zs].destroyed||(this._progressCallbacks.push(()=>{this[kE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[Zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Zs in this)){e();return}if(this[Zs].destroyed){e();return}this[Zs].end(o=>{o||(this[xE]=this[kE],this.emit(\"uploadProgress\",this.uploadProgress),this[Zs].emit(\"upload-complete\")),e(o)})};this.requestInitialized?r():this[y1].push(r)}_destroy(e,r){var o;this[QE]=!0,clearTimeout(this[Kae]),Zs in this&&(this[B4](),!((o=this[lb])===null||o===void 0)&&o.complete||this[Zs].destroy()),e!==null&&!st.default.undefined(e)&&!(e instanceof Vi)&&(e=new Vi(e.message,e,this)),r(e)}get _isAboutToError(){return this[QE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[Zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Wae])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[Zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[PE]?e=this[bE]/this[PE]:this[PE]===this[bE]?e=1:e=0,{percent:e,transferred:this[bE],total:this[PE]}}get uploadProgress(){let e;return this[xE]?e=this[kE]/this[xE]:this[xE]===this[kE]?e=1:e=0,{percent:e,transferred:this[kE],total:this[xE]}}get timings(){var e;return(e=this[Zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Gae]}pipe(e,r){if(this[Yae])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof w4.ServerResponse&&this[ob].add(e),super.pipe(e,r)}unpipe(e){return e instanceof w4.ServerResponse&&this[ob].delete(e),super.unpipe(e),this}};Bn.default=db});var w1=_(jc=>{\"use strict\";var cst=jc&&jc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),ust=jc&&jc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&cst(e,t,r)};Object.defineProperty(jc,\"__esModule\",{value:!0});jc.CancelError=jc.ParseError=void 0;var Vae=C1(),D4=class extends Vae.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in \"${o.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};jc.ParseError=D4;var S4=class extends Vae.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};jc.CancelError=S4;ust(C1(),jc)});var zae=_(P4=>{\"use strict\";Object.defineProperty(P4,\"__esModule\",{value:!0});var Jae=w1(),Ast=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(o);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new Jae.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new Jae.ParseError(n,t)}};P4.default=Ast});var b4=_(uh=>{\"use strict\";var fst=uh&&uh.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),pst=uh&&uh.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&fst(e,t,r)};Object.defineProperty(uh,\"__esModule\",{value:!0});var hst=ve(\"events\"),gst=Tf(),dst=zse(),mb=w1(),Xae=zae(),Zae=C1(),mst=u4(),yst=m4(),$ae=y4(),Est=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function ele(t){let e,r,o=new hst.EventEmitter,a=new dst((u,A,p)=>{let h=E=>{let I=new Zae.default(void 0,t);I.retryCount=E,I._noPipe=!0,p(()=>I.destroy()),p.shouldReject=!1,p(()=>A(new mb.CancelError(I))),e=I,I.once(\"response\",async C=>{var R;if(C.retryCount=E,C.request.aborted)return;let L;try{L=await yst.default(I),C.rawBody=L}catch{return}if(I._isAboutToError)return;let U=((R=C.headers[\"content-encoding\"])!==null&&R!==void 0?R:\"\").toLowerCase(),J=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:te}=I;if(J&&!te.decompress)C.body=L;else try{C.body=Xae.default(C,te.responseType,te.parseJson,te.encoding)}catch(ae){if(C.body=L.toString(),$ae.isResponseOk(C)){I._beforeError(ae);return}}try{for(let[ae,fe]of te.hooks.afterResponse.entries())C=await fe(C,async ce=>{let me=Zae.default.normalizeArguments(void 0,{...ce,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},te);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ae);for(let Be of me.hooks.beforeRetry)await Be(me);let he=ele(me);return p(()=>{he.catch(()=>{}),he.cancel()}),he})}catch(ae){I._beforeError(new mb.RequestError(ae.message,ae,I));return}if(!$ae.isResponseOk(C)){I._beforeError(new mb.HTTPError(C));return}r=C,u(I.options.resolveBodyOnly?C.body:C)});let v=C=>{if(a.isCanceled)return;let{options:R}=I;if(C instanceof mb.HTTPError&&!R.throwHttpErrors){let{response:L}=C;u(I.options.resolveBodyOnly?L.body:L);return}A(C)};I.once(\"error\",v);let x=I.options.body;I.once(\"retry\",(C,R)=>{var L,U;if(x===((L=R.request)===null||L===void 0?void 0:L.options.body)&&gst.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){v(R);return}h(C)}),mst.default(I,o,Est)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Xae.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}uh.default=ele;pst(w1(),uh)});var tle=_(x4=>{\"use strict\";Object.defineProperty(x4,\"__esModule\",{value:!0});var Cst=w1();function wst(t,...e){let r=(async()=>{if(t instanceof Cst.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}x4.default=wst});var ile=_(k4=>{\"use strict\";Object.defineProperty(k4,\"__esModule\",{value:!0});var rle=Tf();function nle(t){for(let e of Object.values(t))(rle.default.plainObject(e)||rle.default.array(e))&&nle(e);return Object.freeze(t)}k4.default=nle});var ole=_(sle=>{\"use strict\";Object.defineProperty(sle,\"__esModule\",{value:!0})});var Q4=_(Vl=>{\"use strict\";var Ist=Vl&&Vl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Bst=Vl&&Vl.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Ist(e,t,r)};Object.defineProperty(Vl,\"__esModule\",{value:!0});Vl.defaultHandler=void 0;var ale=Tf(),Kl=b4(),vst=tle(),Eb=C1(),Dst=ile(),Sst={RequestError:Kl.RequestError,CacheError:Kl.CacheError,ReadError:Kl.ReadError,HTTPError:Kl.HTTPError,MaxRedirectsError:Kl.MaxRedirectsError,TimeoutError:Kl.TimeoutError,ParseError:Kl.ParseError,CancelError:Kl.CancelError,UnsupportedProtocolError:Kl.UnsupportedProtocolError,UploadError:Kl.UploadError},Pst=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:yb}=Eb.default,lle=(...t)=>{let e;for(let r of t)e=yb(void 0,r,e);return e},bst=t=>t.isStream?new Eb.default(void 0,t):Kl.default(t),xst=t=>\"defaults\"in t&&\"options\"in t.defaults,kst=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Vl.defaultHandler=(t,e)=>e(t);var cle=(t,e)=>{if(t)for(let r of t)r(e)},ule=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:E,finally:I}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=E,p.finally=I}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?bst:h);if(ale.default.plainObject(o)){let E={...o,...a};Eb.setNonEnumerableProperties([o,a],E),a=E,o=void 0}try{let E;try{cle(t.options.hooks.init,a),cle((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){E=v}let I=yb(o,a,n??t.options);if(I[Eb.kIsNormalizedAlready]=!0,E)throw new Kl.RequestError(E.message,E,I);return h(I)}catch(E){if(a.isStream)throw E;return vst.default(E,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)xst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),\"handlers\"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Vl.defaultHandler),n.length===0&&n.push(Vl.defaultHandler),ule({options:lle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=yb(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!ale.default.object(u))throw new TypeError(\"`options.pagination` must be implemented\");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await Pst(u.backoff);let E=await e(void 0,void 0,n),I=await u.transform(E),v=[];for(let C of I)if(u.filter(C,A,v)&&(!u.shouldContinue(C,A,v)||(yield C,u.stackAllItems&&A.push(C),v.push(C),--p<=0)))return;let x=u.paginate(E,A,v);if(x===!1)return;x===E.request.options?n=E.request.options:x!==void 0&&(n=yb(void 0,x,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of kst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Sst),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:Dst.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=lle,e};Vl.default=ule;Bst(ole(),Vl)});var ple=_((Nf,Cb)=>{\"use strict\";var Qst=Nf&&Nf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Ale=Nf&&Nf.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Qst(e,t,r)};Object.defineProperty(Nf,\"__esModule\",{value:!0});var Fst=ve(\"url\"),fle=Q4(),Rst={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType===\"json\"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,\"link\"))return!1;let e=t.headers.link.split(\",\"),r;for(let o of e){let a=o.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Fst.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[fle.defaultHandler],mutableDefaults:!1},F4=fle.default(Rst);Nf.default=F4;Cb.exports=F4;Cb.exports.default=F4;Cb.exports.__esModule=!0;Ale(Q4(),Nf);Ale(b4(),Nf)});var nn={};Vt(nn,{Method:()=>Cle,del:()=>Mst,get:()=>L4,getNetworkSettings:()=>Ele,post:()=>O4,put:()=>Ost,request:()=>I1});function dle(t){let e=new URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function R4(t){return ol(gle,t,()=>oe.readFilePromise(t).then(e=>(gle.set(t,e),e)))}function Lst({statusCode:t,statusMessage:e},r){let o=Mt(r,t,yt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Zy(r,`${o}${e?` (${e})`:\"\"}`,a)}async function wb(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(o){if(o.name!==\"HTTPError\")throw o;let a=r?.(o,e)??o.response.body?.error;a==null&&(o.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=o.message),o.code===\"ETIMEDOUT\"&&o.event===\"socket\"&&(a+=`(can be increased via ${Mt(e,\"httpTimeout\",yt.SETTING)})`);let n=new zt(35,a,u=>{o.response&&u.reportError(35,`  ${zu(e,{label:\"Response Code\",value:_c(yt.NO_HINT,Lst(o.response,e))})}`),o.request&&(u.reportError(35,`  ${zu(e,{label:\"Request Method\",value:_c(yt.NO_HINT,o.request.options.method)})}`),u.reportError(35,`  ${zu(e,{label:\"Request URL\",value:_c(yt.URL,o.request.requestUrl)})}`)),o.request.redirects.length>0&&u.reportError(35,`  ${zu(e,{label:\"Request Redirects\",value:_c(yt.NO_HINT,PL(e,o.request.redirects,yt.URL))})}`),o.request.retryCount===o.request.options.retry.limit&&u.reportError(35,`  ${zu(e,{label:\"Request Retry Count\",value:_c(yt.NO_HINT,`${Mt(e,o.request.retryCount,yt.NUMBER)} (can be increased via ${Mt(e,\"httpRetry\",yt.SETTING)})`)})}`)});throw n.originalError=o,n}}function Ele(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t==\"string\"?new URL(t):t;for(let[u,A]of r)if(N4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>\"u\"&&(o[p]=h)}for(let u of a)typeof o[u]>\"u\"&&(o[u]=e.configuration.get(u));return o}async function I1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\",wrapNetworkRequest:A}){let p={target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u},h=async()=>await Ust(t,e,p),E=typeof A<\"u\"?await A(h,p):h;return await(await r.reduceHook(v=>v.wrapNetworkRequest,E,p))()}async function L4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,wrapNetworkRequest:a,...n}){let u=()=>wb(I1(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:o}).then(p=>p.body),A=await(typeof a<\"u\"?u():ol(hle,t,()=>u().then(p=>(hle.set(t,p),p))));return r?JSON.parse(A.toString()):A}async function Ost(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"PUT\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function O4(t,e,{customErrorMessage:r,...o}){return(await wb(I1(t,e,{...o,method:\"POST\"}),{customErrorMessage:r,configuration:o.configuration})).body}async function Mst(t,{customErrorMessage:e,...r}){return(await wb(I1(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Ust(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u=\"GET\"}){let A=typeof t==\"string\"?new URL(t):t,p=Ele(A,{configuration:r});if(p.enableNetwork===!1)throw new zt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol===\"http:\"&&!N4.default.isMatch(A.hostname,r.get(\"unsafeHttpWhitelist\")))throw new zt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let E={agent:{http:p.httpProxy?T4.default.httpOverHttp(dle(p.httpProxy)):Tst,https:p.httpsProxy?T4.default.httpsOverHttp(dle(p.httpsProxy)):Nst},headers:o,method:u};E.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?E.body=e:E.json=e);let I=r.get(\"httpTimeout\"),v=r.get(\"httpRetry\"),x=r.get(\"enableStrictSsl\"),C=p.httpsCaFilePath,R=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:U}=await Promise.resolve().then(()=>$e(ple())),J=C?await R4(C):void 0,te=R?await R4(R):void 0,ae=L?await R4(L):void 0,fe=U.extend({timeout:{socket:I},retry:v,https:{rejectUnauthorized:x,certificateAuthority:J,certificate:te,key:ae},...E});return r.getLimit(\"networkConcurrency\")(()=>fe(A))}var mle,yle,N4,T4,hle,gle,Tst,Nst,Cle,Ib=Et(()=>{St();mle=ve(\"https\"),yle=ve(\"http\"),N4=$e(Zo()),T4=$e(Yse());Yl();jl();ql();hle=new Map,gle=new Map,Tst=new yle.Agent({keepAlive:!0}),Nst=new mle.Agent({keepAlive:!0});Cle=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(Cle||{})});var Ji={};Vt(Ji,{availableParallelism:()=>U4,getArchitecture:()=>B1,getArchitectureName:()=>Gst,getArchitectureSet:()=>M4,getCaller:()=>Vst,major:()=>_st,openUrl:()=>Hst});function jst(){if(process.platform===\"darwin\"||process.platform===\"win32\")return null;let t;try{t=oe.readFileSync(qst)}catch{}if(typeof t<\"u\"){if(t&&t.includes(\"GLIBC\"))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],o=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return KI(r,a=>{let n=a.match(o);if(!n)return KI.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function B1(){return Ile=Ile??{os:process.platform,cpu:process.arch,libc:jst()}}function Gst(t=B1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function M4(){let t=B1();return Ble=Ble??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Kst(t){let e=Yst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,o=e[2]&&e[2].indexOf(\"eval\")===0,a=Wst.exec(e[2]);return o&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||\"<unknown>\",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function Vst(){let e=new Error().stack.split(`\n`)[3];return Kst(e)}function U4(){return typeof Bb.default.availableParallelism<\"u\"?Bb.default.availableParallelism():Math.max(1,Bb.default.cpus().length)}var Bb,_st,wle,Hst,qst,Ile,Ble,Yst,Wst,vb=Et(()=>{St();Bb=$e(ve(\"os\"));Db();ql();_st=Number(process.versions.node.split(\".\")[0]),wle=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),Hst=typeof wle<\"u\"?async t=>{try{return await _4(wle,[t],{cwd:V.cwd()}),!0}catch{return!1}}:void 0,qst=\"/usr/bin/ldd\";Yst=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,Wst=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function Y4(t,e,r,o,a){let n=A1(r);if(o.isArray||o.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>H4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>H4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return H4(t,e,r,o,a)}function H4(t,e,r,o,a){let n=A1(r);switch(o.type){case\"ANY\":return GP(n);case\"SHAPE\":return Zst(t,e,r,o,a);case\"MAP\":return $st(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(o.values?.includes(n))return n;let A=(()=>{if(o.type===\"BOOLEAN\"&&typeof n!=\"string\")return VI(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=sP(n,{env:t.env});switch(o.type){case\"ABSOLUTE_PATH\":{let h=a,E=mM(r);return E&&E[0]!==\"<\"&&(h=V.dirname(E)),V.resolve(h,ue.toPortablePath(p))}case\"LOCATOR_LOOSE\":return xf(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return xf(p);case\"BOOLEAN\":return VI(p);default:return p}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(\", \")}`);return A}function Zst(t,e,r,o,a){let n=A1(r);if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Object configuration settings \"${e}\" must be an object`);let u=W4(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new it(`Unrecognized configuration settings found: ${e}.${A} - run \"yarn config -v\" to see the list of settings supported in Yarn`);u.set(A,Y4(t,h,p,o.properties[A],a))}return u}function $st(t,e,r,o,a){let n=A1(r),u=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new it(`Map configuration settings \"${e}\" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,E=`${e}['${h}']`,I=o.valueDefinition;u.set(h,Y4(t,E,p,I,a))}return u}function W4(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,W4(t,n));return o}case\"MAP\":return e.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(o=>V.normalize(o)):V.isAbsolute(e.default)?V.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>V.resolve(t.projectCwd,o)):V.resolve(t.projectCwd,e.default);default:return e.default}}function Pb(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return Xst;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(Pb(a,e,r));return o}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=Pb(n,e.valueDefinition,r);typeof u<\"u\"&&o.set(a,u)}return o}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a],A=Pb(n,u,r);typeof A<\"u\"&&o.set(a,A)}return o}return t}function eot(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(bb)&&(e=(0,Dle.default)(e.slice(bb.length)),t[e]=r);return t}function j4(){let t=`${bb}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return G4}async function vle(t){try{return await oe.readFilePromise(t)}catch{return Buffer.of()}}async function tot(t,e){return Buffer.compare(...await Promise.all([vle(t),vle(e)]))===0}async function rot(t,e){let[r,o]=await Promise.all([oe.statPromise(t),oe.statPromise(e)]);return r.dev===o.dev&&r.ino===o.ino}async function iot({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await not(r,e)?null:r}var Dle,Lf,Sle,Ple,ble,q4,Jst,v1,zst,FE,bb,G4,Xst,D1,xle,xb,Sb,not,rA,Ke,S1=Et(()=>{St();Nl();Dle=$e(sV()),Lf=$e(td());qt();Sle=$e(ZV()),Ple=ve(\"module\"),ble=$e(id()),q4=ve(\"stream\");ose();fE();cM();uM();AM();Tse();fM();vd();Use();WP();jl();nh();Ib();ql();vb();Qf();bo();Jst=function(){if(!Lf.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=ue.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=oe.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),v1=new Set([\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]),zst=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),FE=/^(?!v)[a-z0-9._-]+$/i,bb=\"yarn_\",G4=\".yarnrc.yml\",Xst=\"********\",D1=(E=>(E.ANY=\"ANY\",E.BOOLEAN=\"BOOLEAN\",E.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",E.LOCATOR=\"LOCATOR\",E.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",E.NUMBER=\"NUMBER\",E.STRING=\"STRING\",E.SECRET=\"SECRET\",E.SHAPE=\"SHAPE\",E.MAP=\"MAP\",E))(D1||{}),xle=yt,xb=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(xb||{}),Sb={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:EM()},cacheFolder:{description:\"Folder where the cache files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/cache\"},compressionLevel:{description:\"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)\",type:\"NUMBER\",values:[\"mixed\",0,1,2,3,4,5,6,7,8,9],default:0},virtualFolder:{description:\"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/__virtual__\"},installStatePath:{description:\"Path of the file where the install state will be persisted\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/install-state.gz\"},immutablePatterns:{description:\"Array of glob patterns; files matching them won't be allowed to change during immutable installs\",type:\"STRING\",default:[],isArray:!0},rcFilename:{description:\"Name of the files where the configuration can be found\",type:\"STRING\",default:j4()},enableGlobalCache:{description:\"If true, the system-wide cache folder will be used regardless of `cache-folder`\",type:\"BOOLEAN\",default:!0},cacheMigrationMode:{description:\"Defines the conditions under which Yarn upgrades should cause the cache archives to be regenerated.\",type:\"STRING\",values:[\"always\",\"match-spec\",\"required-only\"],default:\"always\"},enableColors:{description:\"If true, the CLI is allowed to use colors in its output\",type:\"BOOLEAN\",default:lP,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:SL,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Lf.isCI,defaultText:\"<dynamic>\"},enableMessageNames:{description:\"If true, the CLI will prefix most messages with codes suitable for search engines\",type:\"BOOLEAN\",default:!0},enableProgressBars:{description:\"If true, the CLI is allowed to show a progress bar for long-running events\",type:\"BOOLEAN\",default:!Lf.isCI,defaultText:\"<dynamic>\"},enableTimers:{description:\"If true, the CLI is allowed to print the time spent executing commands\",type:\"BOOLEAN\",default:!0},enableTips:{description:\"If true, installs will print a helpful message every day of the week\",type:\"BOOLEAN\",default:!Lf.isCI,defaultText:\"<dynamic>\"},preferInteractive:{description:\"If true, the CLI will automatically use the interactive mode when called from a TTY\",type:\"BOOLEAN\",default:!1},preferTruncatedLines:{description:\"If true, the CLI will truncate lines that would go beyond the size of the terminal\",type:\"BOOLEAN\",default:!1},progressBarStyle:{description:\"Which style of progress bar should be used (only when progress bars are enabled)\",type:\"STRING\",default:void 0,defaultText:\"<dynamic>\"},defaultLanguageName:{description:\"Default language mode that should be used when a package doesn't offer any insight\",type:\"STRING\",default:\"node\"},defaultProtocol:{description:\"Default resolution protocol used when resolving pure semver and tag ranges\",type:\"STRING\",default:\"npm:\"},enableTransparentWorkspaces:{description:\"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol\",type:\"BOOLEAN\",default:!0},supportedArchitectures:{description:\"Architectures that Yarn will fetch and inject into the resolver\",type:\"SHAPE\",properties:{os:{description:\"Array of supported process.platform strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},cpu:{description:\"Array of supported process.arch strings, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]},libc:{description:\"Array of supported libc libraries, or null to target them all\",type:\"STRING\",isArray:!0,isNullable:!0,default:[\"current\"]}}},enableMirror:{description:\"If true, the downloaded packages will be retrieved and stored in both the local and global folders\",type:\"BOOLEAN\",default:!0},enableNetwork:{description:\"If false, Yarn will refuse to use the network if required to\",type:\"BOOLEAN\",default:!0},enableOfflineMode:{description:\"If true, Yarn will attempt to retrieve files and metadata from the global cache rather than the network\",type:\"BOOLEAN\",default:!1},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},unsafeHttpWhitelist:{description:\"List of the hostnames for which http queries are allowed (glob patterns are supported)\",type:\"STRING\",default:[],isArray:!0},httpTimeout:{description:\"Timeout of each http request in milliseconds\",type:\"NUMBER\",default:6e4},httpRetry:{description:\"Retry times on http failure\",type:\"NUMBER\",default:3},networkConcurrency:{description:\"Maximal number of concurrent requests\",type:\"NUMBER\",default:50},taskPoolConcurrency:{description:\"Maximal amount of concurrent heavy task processing\",type:\"NUMBER\",default:U4()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values(uP),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads, in days\",type:\"NUMBER\",default:7},telemetryUserId:{description:\"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.\",type:\"STRING\",default:null},enableHardenedMode:{description:\"If true, automatically enable --check-resolutions --refresh-lockfile on installs\",type:\"BOOLEAN\",default:Lf.isPR&&Jst,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};not=process.platform===\"win32\"?tot:rot;rA=class{constructor(e){this.isCI=Lf.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static create(e,r,o){let a=new rA(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Sb);let n=typeof o<\"u\"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{strict:o=!0,usePathCheck:a=null,useRc:n=!0}={}){let u=eot();delete u.rcFilename;let A=new rA(e),p=await rA.findRcFiles(e),h=await rA.findFolderRcFile(EE());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Mse(p.map(ce=>[ce.path,ce.data])),I=Bt.dot,v=new Set(Object.keys(Sb)),x=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he})=>({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he}),C=({yarnPath:ce,ignorePath:me,injectEnvironmentFiles:he,...Be})=>{let we={};for(let[g,Ee]of Object.entries(Be))v.has(g)&&(we[g]=Ee);return we},R=({yarnPath:ce,ignorePath:me,...he})=>{let Be={};for(let[we,g]of Object.entries(he))v.has(we)||(Be[we]=g);return Be};if(A.importSettings(x(Sb)),A.useWithSource(\"<environment>\",x(u),e,{strict:!1}),E){let[ce,me]=E;A.useWithSource(ce,x(me),I,{strict:!1})}if(a){if(await iot({configuration:A,selfPath:a})!==null)return A;A.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let L=await rA.findProjectCwd(e);A.startingCwd=e,A.projectCwd=L;let U=Object.assign(Object.create(null),process.env);A.env=U;let J=await Promise.all(A.get(\"injectEnvironmentFiles\").map(async ce=>{let me=ce.endsWith(\"?\")?await oe.readFilePromise(ce.slice(0,-1),\"utf8\").catch(()=>\"\"):await oe.readFilePromise(ce,\"utf8\");return(0,Sle.parse)(me)}));for(let ce of J)for(let[me,he]of Object.entries(ce))A.env[me]=sP(he,{env:U});if(A.importSettings(C(Sb)),A.useWithSource(\"<environment>\",C(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,C(me),I,{strict:o})}let te=ce=>\"default\"in ce?ce.default:ce,ae=new Map([[\"@@core\",sse]]);if(r!==null)for(let ce of r.plugins.keys())ae.set(ce,te(r.modules.get(ce)));for(let[ce,me]of ae)A.activatePlugin(ce,me);let fe=new Map([]);if(r!==null){let ce=new Map;for(let Be of Ple.builtinModules)ce.set(Be,()=>Df(Be));for(let[Be,we]of r.modules)ce.set(Be,()=>we);let me=new Set,he=async(Be,we)=>{let{factory:g,name:Ee}=Df(Be);if(!g||me.has(Ee))return;let Se=new Map(ce),le=ee=>{if(Se.has(ee))return Se.get(ee)();throw new it(`This plugin cannot access the package referenced via ${ee} which is neither a builtin, nor an exposed entry`)},ne=await Ky(async()=>te(await g(le)),ee=>`${ee} (when initializing ${Ee}, defined in ${we})`);ce.set(Ee,()=>ne),me.add(Ee),fe.set(Ee,ne)};if(u.plugins)for(let Be of u.plugins.split(\";\")){let we=V.resolve(e,ue.toPortablePath(Be));await he(we,\"<environment>\")}for(let{path:Be,cwd:we,data:g}of p)if(!!n&&!!Array.isArray(g.plugins))for(let Ee of g.plugins){let Se=typeof Ee!=\"string\"?Ee.path:Ee,le=Ee?.spec??\"\",ne=Ee?.checksum??\"\";if(v1.has(le))continue;let ee=V.resolve(we,ue.toPortablePath(Se));if(!await oe.existsPromise(ee)){if(!le){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,\".gitignore\",yt.NAME),at=Mt(A,A.values.get(\"rcFilename\"),yt.NAME),Re=Mt(A,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",yt.URL);throw new it(`Missing source for the ${At} plugin - please try to remove the plugin from ${at} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Re} to make sure your plugin folder isn't gitignored.`)}if(!le.match(/^https?:/)){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,A.values.get(\"rcFilename\"),yt.NAME);throw new it(`Failed to recognize the source for the ${At} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let Ie=await L4(le,{configuration:A}),Fe=zs(Ie);if(ne&&ne!==Fe){let At=Mt(A,V.basename(ee,\".cjs\"),yt.NAME),H=Mt(A,A.values.get(\"rcFilename\"),yt.NAME),at=Mt(A,`yarn plugin import ${le}`,yt.CODE);throw new it(`Failed to fetch the ${At} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${at} to reimport it.`)}await oe.mkdirPromise(V.dirname(ee),{recursive:!0}),await oe.writeFilePromise(ee,Ie)}await he(ee,Be)}}for(let[ce,me]of fe)A.activatePlugin(ce,me);if(A.useWithSource(\"<environment>\",R(u),e,{strict:o}),E){let[ce,me]=E;A.useWithSource(ce,R(me),I,{strict:o})}return A.get(\"enableGlobalCache\")&&(A.values.set(\"cacheFolder\",`${A.get(\"globalFolder\")}/cache`),A.sources.set(\"cacheFolder\",\"<internal>\")),A}static async findRcFiles(e){let r=j4(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=V.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,\"utf8\"),p;try{p=Ki(A)}catch{let E=\"\";throw A.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(E=\" (in particular, make sure you list the colons after each key name)\"),new it(`Parse error when loading ${u}; please check it's proper Yaml${E}`)}o.unshift({path:u,cwd:n,data:p})}a=V.dirname(n)}return o}static async findFolderRcFile(e){let r=V.join(e,dr.rc),o;try{o=await oe.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=Ki(o);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,o=e,a=null;for(;o!==a;){if(a=o,oe.existsSync(V.join(a,dr.lockfile)))return a;oe.existsSync(V.join(a,dr.manifest))&&(r=a),o=V.dirname(a)}return r}static async updateConfiguration(e,r,o={}){let a=j4(),n=V.join(e,a),u=oe.existsSync(n)?Ki(await oe.readFilePromise(n,\"utf8\")):{},A=!1,p;if(typeof r==\"function\"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let E=u[h],I=r[h],v;if(typeof I==\"function\")try{v=I(E)}catch{v=I(void 0)}else v=I;E!==v&&(v===rA.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await rA.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!=\"string\"?A.path:A,h=u.find(E=>E.path===p);h?(n.push(h),u=u.filter(E=>E!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=EE();return await rA.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,o),this.values.set(r,W4(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Mt(this,e,yt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let u of[\"enableStrictSettings\",...Object.keys(r)]){let A=r[u],p=mM(A);if(p&&(e=p),typeof A>\"u\"||u===\"plugins\"||e===\"<environment>\"&&zst.has(u))continue;if(u===\"rcFilename\")throw new it(`The rcFilename settings can only be set via ${`${bb}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let I=EE(),v=e[0]!==\"<\"?V.dirname(e):null;if(a&&!(v!==null?I===v:!1))throw new it(`Unrecognized or legacy configuration settings found: ${u} - run \"yarn config -v\" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=Y4(this,u,A,h,o)}catch(I){throw I.message+=` in ${Mt(this,e,yt.PATH)}`,I}if(u===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let I=this.values.get(u);this.values.set(u,new Map(n?[...I,...E]:[...E,...I])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let I=this.values.get(u);this.values.set(u,n?[...I,...E]:[...E,...I]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,E),this.sources.set(u,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key \"${e}\"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new it(`Couldn't find a configuration settings named \"${e}\"`);return Pb(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${o} ${Mt(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${o} ${Mt(this,\"STDERR\",\"red\")}`);n=new q4.PassThrough,n.pipe(p),n.pipe(A),u=new q4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new Dd([new c1,new Xn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new hE([new gE,new mE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=B1(),r=this.get(\"supportedArchitectures\"),o=r.get(\"os\");o!==null&&(o=o.map(u=>u===\"current\"?e.os:u));let a=r.get(\"cpu\");a!==null&&(a=a.map(u=>u===\"current\"?e.cpu:u));let n=r.get(\"libc\");return n!==null&&(n=sl(n,u=>u===\"current\"?e.libc??sl.skip:u)),{os:o,cpu:a,libc:n}}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!xa(o.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let u=new Ot;u.load(a,{yamlCompatibilityMode:!0});let A=Yy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:o};for(let E of u.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of u.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,I]of u.peerDependenciesMeta)for(let[v,x]of Object.entries(I))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:v,value:x})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get(\"packageExtensions\"))r(ih(o,!0),iP(a),{userProvided:!0});return e}normalizeLocator(e){return xa(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):FE.test(e.reference)?Qs(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return xa(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):FE.test(e.range)?In(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e,{packageExtensions:r}){let o=e1(e),a=r.get(e.identHash);if(typeof a<\"u\"){let u=e.version;if(u!==null){for(let[A,p]of a)if(!!kf(u,A))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof o.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof o.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",o.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=o.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",ol(o.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:yL(h)}}}let n=u=>u.scope?`${u.scope}__${u.name}`:`${u.name}`;for(let u of o.peerDependenciesMeta.keys()){let A=Js(u);o.peerDependencies.has(A.identHash)||o.peerDependencies.set(A.identHash,In(A,\"*\"))}for(let u of o.peerDependencies.values()){if(u.scope===\"types\")continue;let A=n(u),p=eA(\"types\",A),h=fn(p);o.peerDependencies.has(p.identHash)||o.peerDependenciesMeta.has(h)||(o.peerDependencies.set(p.identHash,In(p,\"*\")),o.peerDependenciesMeta.set(h,{optional:!0}))}return o.dependencies=new Map(ks(o.dependencies,([,u])=>Pa(u))),o.peerDependencies=new Map(ks(o.peerDependencies,([,u])=>Pa(u))),o}getLimit(e){return ol(this.limits,e,()=>(0,ble.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<\"u\")return u}return null}},Ke=rA;Ke.deleteProperty=Symbol(),Ke.telemetry=null});var Ur={};Vt(Ur,{EndStrategy:()=>z4,ExecError:()=>kb,PipeError:()=>P1,execvp:()=>_4,pipevp:()=>Gc});function bd(t){return t!==null&&typeof t.fd==\"number\"}function K4(){}function V4(){for(let t of xd)t.kill()}async function Gc(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":bd(n)&&(h[0]=n),bd(u)&&(h[1]=u),bd(A)&&(h[2]=A);let E=(0,J4.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});xd.add(E),xd.size===1&&(process.on(\"SIGINT\",K4),process.on(\"SIGTERM\",V4)),!bd(n)&&n!==null&&n.pipe(E.stdin),bd(u)||E.stdout.pipe(u,{end:!1}),bd(A)||E.stderr.pipe(A,{end:!1});let I=()=>{for(let v of new Set([u,A]))bd(v)||v.end()};return new Promise((v,x)=>{E.on(\"error\",C=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1)&&I(),x(C)}),E.on(\"close\",(C,R)=>{xd.delete(E),xd.size===0&&(process.off(\"SIGINT\",K4),process.off(\"SIGTERM\",V4)),(p===2||p===1&&C!==0)&&I(),C===0||!a?v({code:X4(C,R)}):x(new P1({fileName:t,code:C,signal:R}))})})}async function _4(t,e,{cwd:r,env:o=process.env,encoding:a=\"utf8\",strict:n=!1}){let u=[\"ignore\",\"pipe\",\"pipe\"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<\"u\"&&(o={...o,PWD:h});let E=(0,J4.default)(t,e,{cwd:h,env:o,stdio:u});return E.stdout.on(\"data\",I=>{A.push(I)}),E.stderr.on(\"data\",I=>{p.push(I)}),await new Promise((I,v)=>{E.on(\"error\",x=>{let C=Ke.create(r),R=Mt(C,t,yt.PATH);v(new zt(1,`Process ${R} failed to spawn`,L=>{L.reportError(1,`  ${zu(C,{label:\"Thrown Error\",value:_c(yt.NO_HINT,x.message)})}`)}))}),E.on(\"close\",(x,C)=>{let R=a===\"buffer\"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);x===0||!n?I({code:X4(x,C),stdout:R,stderr:L}):v(new kb({fileName:t,code:x,signal:C,stdout:R,stderr:L}))})})}function X4(t,e){let r=sot.get(e);return typeof r<\"u\"?128+r:t??1}function oot(t,e,{configuration:r,report:o}){o.reportError(1,`  ${zu(r,t!==null?{label:\"Exit Code\",value:_c(yt.NUMBER,t)}:{label:\"Exit Signal\",value:_c(yt.CODE,e)})}`)}var J4,z4,P1,kb,xd,sot,Db=Et(()=>{St();J4=$e(sT());S1();Yl();jl();z4=(o=>(o[o.Never=0]=\"Never\",o[o.ErrorCode=1]=\"ErrorCode\",o[o.Always=2]=\"Always\",o))(z4||{}),P1=class extends zt{constructor({fileName:r,code:o,signal:a}){let n=Ke.create(V.cwd()),u=Mt(n,r,yt.PATH);super(1,`Child ${u} reported an error`,A=>{oot(o,a,{configuration:n,report:A})});this.code=X4(o,a)}},kb=class extends P1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;sot=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function Qle(t){kle=t}function b1(){return typeof Z4>\"u\"&&(Z4=kle()),Z4}var Z4,kle,$4=Et(()=>{kle=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var Fle=_((Qb,tU)=>{var aot=Object.assign({},ve(\"fs\")),eU=function(){var t=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<\"u\"?e:{},o,a;r.ready=new Promise(function(We,tt){o=We,a=tt});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p=\"./this.program\",h=function(We,tt){throw tt},E=!1,I=!0,v=\"\";function x(We){return r.locateFile?r.locateFile(We,v):v+We}var C,R,L,U;I&&(E?v=ve(\"path\").dirname(v)+\"/\":v=__dirname+\"/\",C=function(tt,It){var nr=ii(tt);return nr?It?nr:nr.toString():(L||(L=aot),U||(U=ve(\"path\")),tt=U.normalize(tt),L.readFileSync(tt,It?null:\"utf8\"))},R=function(tt){var It=C(tt,!0);return It.buffer||(It=new Uint8Array(It)),Ee(It.buffer),It},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),A=process.argv.slice(2),h=function(We){process.exit(We)},r.inspect=function(){return\"[Emscripten Module object]\"});var J=r.print||console.log.bind(console),te=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ae=0,fe=function(We){ae=We},ce;r.wasmBinary&&(ce=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&Ti(\"no native wasm support detected\");function he(We,tt,It){switch(tt=tt||\"i8\",tt.charAt(tt.length-1)===\"*\"&&(tt=\"i32\"),tt){case\"i1\":return He[We>>0];case\"i8\":return He[We>>0];case\"i16\":return cp((We>>1)*2);case\"i32\":return Os((We>>2)*4);case\"i64\":return Os((We>>2)*4);case\"float\":return cu((We>>2)*4);case\"double\":return lp((We>>3)*8);default:Ti(\"invalid type for getValue: \"+tt)}return null}var Be,we=!1,g;function Ee(We,tt){We||Ti(\"Assertion failed: \"+tt)}function Se(We){var tt=r[\"_\"+We];return Ee(tt,\"Cannot call unknown function \"+We+\", make sure it is exported\"),tt}function le(We,tt,It,nr,$){var ye={string:function(es){var bi=0;if(es!=null&&es!==0){var qo=(es.length<<2)+1;bi=Un(qo),At(es,bi,qo)}return bi},array:function(es){var bi=Un(es.length);return Re(es,bi),bi}};function Le(es){return tt===\"string\"?Ie(es):tt===\"boolean\"?Boolean(es):es}var pt=Se(We),ht=[],Tt=0;if(nr)for(var er=0;er<nr.length;er++){var $r=ye[It[er]];$r?(Tt===0&&(Tt=ms()),ht[er]=$r(nr[er])):ht[er]=nr[er]}var ji=pt.apply(null,ht);return ji=Le(ji),Tt!==0&&_s(Tt),ji}function ne(We,tt,It,nr){It=It||[];var $=It.every(function(Le){return Le===\"number\"}),ye=tt!==\"string\";return ye&&$&&!nr?Se(We):function(){return le(We,tt,It,arguments,nr)}}var ee=new TextDecoder(\"utf8\");function Ie(We,tt){if(!We)return\"\";for(var It=We+tt,nr=We;!(nr>=It)&&Te[nr];)++nr;return ee.decode(Te.subarray(We,nr))}function Fe(We,tt,It,nr){if(!(nr>0))return 0;for(var $=It,ye=It+nr-1,Le=0;Le<We.length;++Le){var pt=We.charCodeAt(Le);if(pt>=55296&&pt<=57343){var ht=We.charCodeAt(++Le);pt=65536+((pt&1023)<<10)|ht&1023}if(pt<=127){if(It>=ye)break;tt[It++]=pt}else if(pt<=2047){if(It+1>=ye)break;tt[It++]=192|pt>>6,tt[It++]=128|pt&63}else if(pt<=65535){if(It+2>=ye)break;tt[It++]=224|pt>>12,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}else{if(It+3>=ye)break;tt[It++]=240|pt>>18,tt[It++]=128|pt>>12&63,tt[It++]=128|pt>>6&63,tt[It++]=128|pt&63}}return tt[It]=0,It-$}function At(We,tt,It){return Fe(We,Te,tt,It)}function H(We){for(var tt=0,It=0;It<We.length;++It){var nr=We.charCodeAt(It);nr>=55296&&nr<=57343&&(nr=65536+((nr&1023)<<10)|We.charCodeAt(++It)&1023),nr<=127?++tt:nr<=2047?tt+=2:nr<=65535?tt+=3:tt+=4}return tt}function at(We){var tt=H(We)+1,It=Li(tt);return It&&Fe(We,He,It,tt),It}function Re(We,tt){He.set(We,tt)}function ke(We,tt){return We%tt>0&&(We+=tt-We%tt),We}var xe,He,Te,Je,qe,b,w,P,y,F;function z(We){xe=We,r.HEAP_DATA_VIEW=F=new DataView(We),r.HEAP8=He=new Int8Array(We),r.HEAP16=Je=new Int16Array(We),r.HEAP32=b=new Int32Array(We),r.HEAPU8=Te=new Uint8Array(We),r.HEAPU16=qe=new Uint16Array(We),r.HEAPU32=w=new Uint32Array(We),r.HEAPF32=P=new Float32Array(We),r.HEAPF64=y=new Float64Array(We)}var X=r.INITIAL_MEMORY||16777216,Z,ie=[],Pe=[],Ne=[],ot=!1;function dt(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)bt(r.preRun.shift());oo(ie)}function jt(){ot=!0,oo(Pe)}function $t(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Qr(r.postRun.shift());oo(Ne)}function bt(We){ie.unshift(We)}function an(We){Pe.unshift(We)}function Qr(We){Ne.unshift(We)}var mr=0,br=null,Wr=null;function Kn(We){mr++,r.monitorRunDependencies&&r.monitorRunDependencies(mr)}function Ns(We){if(mr--,r.monitorRunDependencies&&r.monitorRunDependencies(mr),mr==0&&(br!==null&&(clearInterval(br),br=null),Wr)){var tt=Wr;Wr=null,tt()}}r.preloadedImages={},r.preloadedAudios={};function Ti(We){r.onAbort&&r.onAbort(We),We+=\"\",te(We),we=!0,g=1,We=\"abort(\"+We+\"). Build with -s ASSERTIONS=1 for more info.\";var tt=new WebAssembly.RuntimeError(We);throw a(tt),tt}var ps=\"data:application/octet-stream;base64,\";function io(We){return We.startsWith(ps)}var Pi=\"data:application/octet-stream;base64,AGFzbQEAAAAB/wEkYAN/f38Bf2ABfwF/YAJ/fwF/YAF/AGAEf39/fwF/YAN/f38AYAV/f39/fwF/YAJ/fwBgBH9/f38AYAABf2AFf39/fn8BfmAEf35/fwF/YAR/f35/AX5gAn9+AX9gA398fwBgA39/fgF/YAF/AX5gBn9/f39/fwF/YAN/fn8Bf2AEf39/fwF+YAV/f35/fwF/YAR/f35/AX9gA39/fgF+YAJ/fgBgAn9/AX5gBX9/f39/AGADf35/AX5gBX5+f35/AX5gA39/fwF+YAZ/fH9/f38Bf2AAAGAHf35/f39+fwF/YAV/fn9/fwF/YAV/f39/fwF+YAJ+fwF/YAJ/fAACJQYBYQFhAAMBYQFiAAEBYQFjAAABYQFkAAEBYQFlAAIBYQFmAAED5wHlAQMAAwEDAwEHDAgDFgcNEgEDDRcFAQ8DEAUQAwIBAhgECxkEAQMBBQsFAwMDARACBAMAAggLBwEAAwADGgQDGwYGABwBBgMTFBEHBwcVCx4ABAgHBAICAgAfAQICAgIGFSAAIQAiAAIBBgIHAg0LEw0FAQUCACMDAQAUAAAGBQECBQUDCwsSAgEDBQIHAQEICAACCQQEAQABCAEBCQoBAwkBAQEBBgEGBgYABAIEBAQGEQQEAAARAAEDCQEJAQAJCQkBAQECCgoAAAMPAQEBAwACAgICBQIABwAKBgwHAAADAgICBQEEBQFwAT8/BQcBAYACgIACBgkBfwFBgInBAgsH+gEzAWcCAAFoAFQBaQDqAQFqALsBAWsAwQEBbACpAQFtAKgBAW4ApwEBbwClAQFwAKMBAXEAoAEBcgCbAQFzAMABAXQAugEBdQC5AQF2AEsBdwDiAQF4AMgBAXkAxwEBegDCAQFBAMkBAUIAuAEBQwAGAUQACQFFAKYBAUYAtwEBRwC2AQFIALUBAUkAtAEBSgCzAQFLALIBAUwAsQEBTQCwAQFOAK8BAU8AvAEBUACuAQFRAK0BAVIArAEBUwAaAVQACwFVAKQBAVYAMgFXAQABWACrAQFZAKoBAVoAxgEBXwDFAQEkAMQBAmFhAL8BAmJhAL4BAmNhAL0BCXgBAEEBCz6iAeMBjgGQAVpbjwFYnwGdAVeeAV1coQFZVlWcAZoBmQGYAZcBlgGVAZQBkwGSAZEB6QHoAecB5gHlAeQB4QHfAeAB3gHdAdwB2gHbAYUB2QHYAdcB1gHVAdQB0wHSAdEB0AHPAc4BzQHMAcsBygE4wwEK1N8G5QHMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNBxIQBKAIASQ0BIAAgAWohACADQciEASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RB3IQBakYaIAIgAygCDCIBRgRAQbSEAUG0hAEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQbyEASAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAM2AgBBwIQBQcCEASgCACAAaiIANgIAIAMgAEEBcjYCBCADQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASADNgIAQbyEAUG8hAEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QdyEAWpGGiACIAUoAgwiAUYEQEG0hAFBtIQBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQcSEASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QeSGAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANByIQBKAIARw0BQbyEASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QdyEAWohAAJ/QbSEASgCACICQQEgAXQiAXFFBEBBtIQBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHkhgFqIQECQAJAAkBBuIQBKAIAIgRBASACdCIHcUUEQEG4hAEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQdSEAUHUhAEoAgBBAWsiAEF/IAAbNgIACwuDBAEDfyACQYAETwRAIAAgASACEAIaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkEBSARAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALGgAgAARAIAAtAAEEQCAAKAIEEAYLIAAQBgsLoi4BDH8jAEEQayIMJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEH0AU0EQEG0hAEoAgAiBUEQIABBC2pBeHEgAEELSRsiCEEDdiICdiIBQQNxBEAgAUF/c0EBcSACaiIDQQN0IgFB5IQBaigCACIEQQhqIQACQCAEKAIIIgIgAUHchAFqIgFGBEBBtIQBIAVBfiADd3E2AgAMAQsgAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEG8hAEoAgAiCk0NASABBEACQEECIAJ0IgBBACAAa3IgASACdHEiAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqIgNBA3QiAEHkhAFqKAIAIgQoAggiASAAQdyEAWoiAEYEQEG0hAEgBUF+IAN3cSIFNgIADAELIAEgADYCDCAAIAE2AggLIARBCGohACAEIAhBA3I2AgQgBCAIaiICIANBA3QiASAIayIDQQFyNgIEIAEgBGogAzYCACAKBEAgCkEDdiIBQQN0QdyEAWohB0HIhAEoAgAhBAJ/IAVBASABdCIBcUUEQEG0hAEgASAFcjYCACAHDAELIAcoAggLIQEgByAENgIIIAEgBDYCDCAEIAc2AgwgBCABNgIIC0HIhAEgAjYCAEG8hAEgAzYCAAwNC0G4hAEoAgAiBkUNASAGQQAgBmtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB5IYBaigCACIBKAIEQXhxIAhrIQMgASECA0ACQCACKAIQIgBFBEAgAigCFCIARQ0BCyAAKAIEQXhxIAhrIgIgAyACIANJIgIbIQMgACABIAIbIQEgACECDAELCyABIAhqIgkgAU0NAiABKAIYIQsgASABKAIMIgRHBEAgASgCCCIAQcSEASgCAEkaIAAgBDYCDCAEIAA2AggMDAsgAUEUaiICKAIAIgBFBEAgASgCECIARQ0EIAFBEGohAgsDQCACIQcgACIEQRRqIgIoAgAiAA0AIARBEGohAiAEKAIQIgANAAsgB0EANgIADAsLQX8hCCAAQb9/Sw0AIABBC2oiAEF4cSEIQbiEASgCACIJRQ0AQQAgCGshAwJAAkACQAJ/QQAgCEGAAkkNABpBHyAIQf///wdLDQAaIABBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAIIABBFWp2QQFxckEcagsiBUECdEHkhgFqKAIAIgJFBEBBACEADAELQQAhACAIQQBBGSAFQQF2ayAFQR9GG3QhAQNAAkAgAigCBEF4cSAIayIHIANPDQAgAiEEIAciAw0AQQAhAyACIQAMAwsgACACKAIUIgcgByACIAFBHXZBBHFqKAIQIgJGGyAAIAcbIQAgAUEBdCEBIAINAAsLIAAgBHJFBEBBAiAFdCIAQQAgAGtyIAlxIgBFDQMgAEEAIABrcUEBayIAIABBDHZBEHEiAnYiAUEFdkEIcSIAIAJyIAEgAHYiAUECdkEEcSIAciABIAB2IgFBAXZBAnEiAHIgASAAdiIBQQF2QQFxIgByIAEgAHZqQQJ0QeSGAWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAhrIgEgA0khAiABIAMgAhshAyAAIAQgAhshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBvIQBKAIAIAhrTw0AIAQgCGoiBiAETQ0BIAQoAhghBSAEIAQoAgwiAUcEQCAEKAIIIgBBxIQBKAIASRogACABNgIMIAEgADYCCAwKCyAEQRRqIgIoAgAiAEUEQCAEKAIQIgBFDQQgBEEQaiECCwNAIAIhByAAIgFBFGoiAigCACIADQAgAUEQaiECIAEoAhAiAA0ACyAHQQA2AgAMCQsgCEG8hAEoAgAiAk0EQEHIhAEoAgAhAwJAIAIgCGsiAUEQTwRAQbyEASABNgIAQciEASADIAhqIgA2AgAgACABQQFyNgIEIAIgA2ogATYCACADIAhBA3I2AgQMAQtByIQBQQA2AgBBvIQBQQA2AgAgAyACQQNyNgIEIAIgA2oiACAAKAIEQQFyNgIECyADQQhqIQAMCwsgCEHAhAEoAgAiBkkEQEHAhAEgBiAIayIBNgIAQcyEAUHMhAEoAgAiAiAIaiIANgIAIAAgAUEBcjYCBCACIAhBA3I2AgQgAkEIaiEADAsLQQAhACAIQS9qIgkCf0GMiAEoAgAEQEGUiAEoAgAMAQtBmIgBQn83AgBBkIgBQoCggICAgAQ3AgBBjIgBIAxBDGpBcHFB2KrVqgVzNgIAQaCIAUEANgIAQfCHAUEANgIAQYAgCyIBaiIFQQAgAWsiB3EiAiAITQ0KQeyHASgCACIEBEBB5IcBKAIAIgMgAmoiASADTQ0LIAEgBEsNCwtB8IcBLQAAQQRxDQUCQAJAQcyEASgCACIDBEBB9IcBIQADQCADIAAoAgAiAU8EQCABIAAoAgRqIANLDQMLIAAoAggiAA0ACwtBABApIgFBf0YNBiACIQVBkIgBKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITQ0GIAVB/v///wdLDQZB7IcBKAIAIgQEQEHkhwEoAgAiAyAFaiIAIANNDQcgACAESw0HCyAFECkiACABRw0BDAgLIAUgBmsgB3EiBUH+////B0sNBSAFECkiASAAKAIAIAAoAgRqRg0EIAEhAAsCQCAAQX9GDQAgCEEwaiAFTQ0AQZSIASgCACIBIAkgBWtqQQAgAWtxIgFB/v///wdLBEAgACEBDAgLIAEQKUF/RwRAIAEgBWohBSAAIQEMCAtBACAFaxApGgwFCyAAIgFBf0cNBgwECwALQQAhBAwHC0EAIQEMBQsgAUF/Rw0CC0HwhwFB8IcBKAIAQQRyNgIACyACQf7///8HSw0BIAIQKSEBQQAQKSEAIAFBf0YNASAAQX9GDQEgACABTQ0BIAAgAWsiBSAIQShqTQ0BC0HkhwFB5IcBKAIAIAVqIgA2AgBB6IcBKAIAIABJBEBB6IcBIAA2AgALAkACQAJAQcyEASgCACIHBEBB9IcBIQADQCABIAAoAgAiAyAAKAIEIgJqRg0CIAAoAggiAA0ACwwCC0HEhAEoAgAiAEEAIAAgAU0bRQRAQcSEASABNgIAC0EAIQBB+IcBIAU2AgBB9IcBIAE2AgBB1IQBQX82AgBB2IQBQYyIASgCADYCAEGAiAFBADYCAANAIABBA3QiA0HkhAFqIANB3IQBaiICNgIAIANB6IQBaiACNgIAIABBAWoiAEEgRw0AC0HAhAEgBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQcyEASAAIAFqIgA2AgAgACACQQFyNgIEIAEgA2pBKDYCBEHQhAFBnIgBKAIANgIADAILIAAtAAxBCHENACADIAdLDQAgASAHTQ0AIAAgAiAFajYCBEHMhAEgB0F4IAdrQQdxQQAgB0EIakEHcRsiAGoiAjYCAEHAhAFBwIQBKAIAIAVqIgEgAGsiADYCACACIABBAXI2AgQgASAHakEoNgIEQdCEAUGciAEoAgA2AgAMAQtBxIQBKAIAIAFLBEBBxIQBIAE2AgALIAEgBWohAkH0hwEhAAJAAkACQAJAAkACQANAIAIgACgCAEcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAQtB9IcBIQADQCAHIAAoAgAiAk8EQCACIAAoAgRqIgQgB0sNAwsgACgCCCEADAALAAsgACABNgIAIAAgACgCBCAFajYCBCABQXggAWtBB3FBACABQQhqQQdxG2oiCSAIQQNyNgIEIAJBeCACa0EHcUEAIAJBCGpBB3EbaiIFIAggCWoiBmshAiAFIAdGBEBBzIQBIAY2AgBBwIQBQcCEASgCACACaiIANgIAIAYgAEEBcjYCBAwDCyAFQciEASgCAEYEQEHIhAEgBjYCAEG8hAFBvIQBKAIAIAJqIgA2AgAgBiAAQQFyNgIEIAAgBmogADYCAAwDCyAFKAIEIgBBA3FBAUYEQCAAQXhxIQcCQCAAQf8BTQRAIAUoAggiAyAAQQN2IgBBA3RB3IQBakYaIAMgBSgCDCIBRgRAQbSEAUG0hAEoAgBBfiAAd3E2AgAMAgsgAyABNgIMIAEgAzYCCAwBCyAFKAIYIQgCQCAFIAUoAgwiAUcEQCAFKAIIIgAgATYCDCABIAA2AggMAQsCQCAFQRRqIgAoAgAiAw0AIAVBEGoiACgCACIDDQBBACEBDAELA0AgACEEIAMiAUEUaiIAKAIAIgMNACABQRBqIQAgASgCECIDDQALIARBADYCAAsgCEUNAAJAIAUgBSgCHCIDQQJ0QeSGAWoiACgCAEYEQCAAIAE2AgAgAQ0BQbiEAUG4hAEoAgBBfiADd3E2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAE2AgAgAUUNAQsgASAINgIYIAUoAhAiAARAIAEgADYCECAAIAE2AhgLIAUoAhQiAEUNACABIAA2AhQgACABNgIYCyAFIAdqIQUgAiAHaiECCyAFIAUoAgRBfnE2AgQgBiACQQFyNgIEIAIgBmogAjYCACACQf8BTQRAIAJBA3YiAEEDdEHchAFqIQICf0G0hAEoAgAiAUEBIAB0IgBxRQRAQbSEASAAIAFyNgIAIAIMAQsgAigCCAshACACIAY2AgggACAGNgIMIAYgAjYCDCAGIAA2AggMAwtBHyEAIAJB////B00EQCACQQh2IgAgAEGA/j9qQRB2QQhxIgN0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgA3IgAHJrIgBBAXQgAiAAQRVqdkEBcXJBHGohAAsgBiAANgIcIAZCADcCECAAQQJ0QeSGAWohBAJAQbiEASgCACIDQQEgAHQiAXFFBEBBuIQBIAEgA3I2AgAgBCAGNgIAIAYgBDYCGAwBCyACQQBBGSAAQQF2ayAAQR9GG3QhACAEKAIAIQEDQCABIgMoAgRBeHEgAkYNAyAAQR12IQEgAEEBdCEAIAMgAUEEcWoiBCgCECIBDQALIAQgBjYCECAGIAM2AhgLIAYgBjYCDCAGIAY2AggMAgtBwIQBIAVBKGsiA0F4IAFrQQdxQQAgAUEIakEHcRsiAGsiAjYCAEHMhAEgACABaiIANgIAIAAgAkEBcjYCBCABIANqQSg2AgRB0IQBQZyIASgCADYCACAHIARBJyAEa0EHcUEAIARBJ2tBB3EbakEvayIAIAAgB0EQakkbIgJBGzYCBCACQfyHASkCADcCECACQfSHASkCADcCCEH8hwEgAkEIajYCAEH4hwEgBTYCAEH0hwEgATYCAEGAiAFBADYCACACQRhqIQADQCAAQQc2AgQgAEEIaiEBIABBBGohACABIARJDQALIAIgB0YNAyACIAIoAgRBfnE2AgQgByACIAdrIgRBAXI2AgQgAiAENgIAIARB/wFNBEAgBEEDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBzYCCCAAIAc2AgwgByACNgIMIAcgADYCCAwEC0EfIQAgB0IANwIQIARB////B00EQCAEQQh2IgAgAEGA/j9qQRB2QQhxIgJ0IgAgAEGA4B9qQRB2QQRxIgF0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAEgAnIgAHJrIgBBAXQgBCAAQRVqdkEBcXJBHGohAAsgByAANgIcIABBAnRB5IYBaiEDAkBBuIQBKAIAIgJBASAAdCIBcUUEQEG4hAEgASACcjYCACADIAc2AgAgByADNgIYDAELIARBAEEZIABBAXZrIABBH0YbdCEAIAMoAgAhAQNAIAEiAigCBEF4cSAERg0EIABBHXYhASAAQQF0IQAgAiABQQRxaiIDKAIQIgENAAsgAyAHNgIQIAcgAjYCGAsgByAHNgIMIAcgBzYCCAwDCyADKAIIIgAgBjYCDCADIAY2AgggBkEANgIYIAYgAzYCDCAGIAA2AggLIAlBCGohAAwFCyACKAIIIgAgBzYCDCACIAc2AgggB0EANgIYIAcgAjYCDCAHIAA2AggLQcCEASgCACIAIAhNDQBBwIQBIAAgCGsiATYCAEHMhAFBzIQBKAIAIgIgCGoiADYCACAAIAFBAXI2AgQgAiAIQQNyNgIEIAJBCGohAAwDC0GEhAFBMDYCAEEAIQAMAgsCQCAFRQ0AAkAgBCgCHCICQQJ0QeSGAWoiACgCACAERgRAIAAgATYCACABDQFBuIQBIAlBfiACd3EiCTYCAAwCCyAFQRBBFCAFKAIQIARGG2ogATYCACABRQ0BCyABIAU2AhggBCgCECIABEAgASAANgIQIAAgATYCGAsgBCgCFCIARQ0AIAEgADYCFCAAIAE2AhgLAkAgA0EPTQRAIAQgAyAIaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgCEEDcjYCBCAGIANBAXI2AgQgAyAGaiADNgIAIANB/wFNBEAgA0EDdiIAQQN0QdyEAWohAgJ/QbSEASgCACIBQQEgAHQiAHFFBEBBtIQBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwBC0EfIQAgA0H///8HTQRAIANBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCADIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRB5IYBaiECAkACQCAJQQEgAHQiAXFFBEBBuIQBIAEgCXI2AgAgAiAGNgIAIAYgAjYCGAwBCyADQQBBGSAAQQF2ayAAQR9GG3QhACACKAIAIQgDQCAIIgEoAgRBeHEgA0YNAiAAQR12IQIgAEEBdCEAIAEgAkEEcWoiAigCECIIDQALIAIgBjYCECAGIAE2AhgLIAYgBjYCDCAGIAY2AggMAQsgASgCCCIAIAY2AgwgASAGNgIIIAZBADYCGCAGIAE2AgwgBiAANgIICyAEQQhqIQAMAQsCQCALRQ0AAkAgASgCHCICQQJ0QeSGAWoiACgCACABRgRAIAAgBDYCACAEDQFBuIQBIAZBfiACd3E2AgAMAgsgC0EQQRQgCygCECABRhtqIAQ2AgAgBEUNAQsgBCALNgIYIAEoAhAiAARAIAQgADYCECAAIAQ2AhgLIAEoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCABIAMgCGoiAEEDcjYCBCAAIAFqIgAgACgCBEEBcjYCBAwBCyABIAhBA3I2AgQgCSADQQFyNgIEIAMgCWogAzYCACAKBEAgCkEDdiIAQQN0QdyEAWohBEHIhAEoAgAhAgJ/QQEgAHQiACAFcUUEQEG0hAEgACAFcjYCACAEDAELIAQoAggLIQAgBCACNgIIIAAgAjYCDCACIAQ2AgwgAiAANgIIC0HIhAEgCTYCAEG8hAEgAzYCAAsgAUEIaiEACyAMQRBqJAAgAAuJAQEDfyAAKAIcIgEQMAJAIAAoAhAiAiABKAIQIgMgAiADSRsiAkUNACAAKAIMIAEoAgggAhAHGiAAIAAoAgwgAmo2AgwgASABKAIIIAJqNgIIIAAgACgCFCACajYCFCAAIAAoAhAgAms2AhAgASABKAIQIAJrIgA2AhAgAA0AIAEgASgCBDYCCAsLzgEBBX8CQCAARQ0AIAAoAjAiAQRAIAAgAUEBayIBNgIwIAENAQsgACgCIARAIABBATYCICAAEBoaCyAAKAIkQQFGBEAgABBDCwJAIAAoAiwiAUUNACAALQAoDQACQCABKAJEIgNFDQAgASgCTCEEA0AgACAEIAJBAnRqIgUoAgBHBEAgAyACQQFqIgJHDQEMAgsLIAUgBCADQQFrIgJBAnRqKAIANgIAIAEgAjYCRAsLIABBAEIAQQUQDhogACgCACIBBEAgARALCyAAEAYLC1oCAn4BfwJ/AkACQCAALQAARQ0AIAApAxAiAUJ9Vg0AIAFCAnwiAiAAKQMIWA0BCyAAQQA6AABBAAwBC0EAIAAoAgQiA0UNABogACACNwMQIAMgAadqLwAACwthAgJ+AX8CQAJAIAAtAABFDQAgACkDECICQn1WDQAgAkICfCIDIAApAwhYDQELIABBADoAAA8LIAAoAgQiBEUEQA8LIAAgAzcDECAEIAKnaiIAIAFBCHY6AAEgACABOgAAC8wCAQJ/IwBBEGsiBCQAAkAgACkDGCADrYinQQFxRQRAIABBDGoiAARAIABBADYCBCAAQRw2AgALQn8hAgwBCwJ+IAAoAgAiBUUEQCAAKAIIIAEgAiADIAAoAgQRDAAMAQsgBSAAKAIIIAEgAiADIAAoAgQRCgALIgJCf1UNAAJAIANBBGsOCwEAAAAAAAAAAAABAAsCQAJAIAAtABhBEHFFBEAgAEEMaiIBBEAgAUEANgIEIAFBHDYCAAsMAQsCfiAAKAIAIgFFBEAgACgCCCAEQQhqQghBBCAAKAIEEQwADAELIAEgACgCCCAEQQhqQghBBCAAKAIEEQoAC0J/VQ0BCyAAQQxqIgAEQCAAQQA2AgQgAEEUNgIACwwBCyAEKAIIIQEgBCgCDCEDIABBDGoiAARAIAAgAzYCBCAAIAE2AgALCyAEQRBqJAAgAguTFQIOfwN+AkACQAJAAkACQAJAAkACQAJAAkACQCAAKALwLQRAIAAoAogBQQFIDQEgACgCACIEKAIsQQJHDQQgAC8B5AENAyAALwHoAQ0DIAAvAewBDQMgAC8B8AENAyAALwH0AQ0DIAAvAfgBDQMgAC8B/AENAyAALwGcAg0DIAAvAaACDQMgAC8BpAINAyAALwGoAg0DIAAvAawCDQMgAC8BsAINAyAALwG0Ag0DIAAvAbgCDQMgAC8BvAINAyAALwHAAg0DIAAvAcQCDQMgAC8ByAINAyAALwHUAg0DIAAvAdgCDQMgAC8B3AINAyAALwHgAg0DIAAvAYgCDQIgAC8BjAINAiAALwGYAg0CQSAhBgNAIAAgBkECdCIFai8B5AENAyAAIAVBBHJqLwHkAQ0DIAAgBUEIcmovAeQBDQMgACAFQQxyai8B5AENAyAGQQRqIgZBgAJHDQALDAMLIABBBzYC/C0gAkF8Rw0FIAFFDQUMBgsgAkEFaiIEIQcMAwtBASEHCyAEIAc2AiwLIAAgAEHoFmoQUSAAIABB9BZqEFEgAC8B5gEhBCAAIABB7BZqKAIAIgxBAnRqQf//AzsB6gEgAEGQFmohECAAQZQWaiERIABBjBZqIQdBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJA0AgBCEIIAAgCyIOQQFqIgtBAnRqLwHmASEEAkACQCAGQQFqIgVB//8DcSIPIA1B//8DcU8NACAEIAhHDQAgBSEGDAELAn8gACAIQQJ0akHMFWogCkH//wNxIA9LDQAaIAgEQEEBIQUgByAIIAlGDQEaIAAgCEECdGpBzBVqIgYgBi8BAEEBajsBACAHDAELQQEhBSAQIBEgBkH//wNxQQpJGwsiBiAGLwEAIAVqOwEAQQAhBgJ/IARFBEBBAyEKQYoBDAELQQNBBCAEIAhGIgUbIQpBBkEHIAUbCyENIAghCQsgDCAORw0ACwsgAEHaE2ovAQAhBCAAIABB+BZqKAIAIgxBAnRqQd4TakH//wM7AQBBACEGIAxBAE4EQEEHQYoBIAQbIQ1BBEEDIAQbIQpBfyEJQQAhCwNAIAQhCCAAIAsiDkEBaiILQQJ0akHaE2ovAQAhBAJAAkAgBkEBaiIFQf//A3EiDyANQf//A3FPDQAgBCAIRw0AIAUhBgwBCwJ/IAAgCEECdGpBzBVqIApB//8DcSAPSw0AGiAIBEBBASEFIAcgCCAJRg0BGiAAIAhBAnRqQcwVaiIGIAYvAQBBAWo7AQAgBwwBC0EBIQUgECARIAZB//8DcUEKSRsLIgYgBi8BACAFajsBAEEAIQYCfyAERQRAQQMhCkGKAQwBC0EDQQQgBCAIRiIFGyEKQQZBByAFGwshDSAIIQkLIAwgDkcNAAsLIAAgAEGAF2oQUSAAIAAoAvgtAn9BEiAAQYoWai8BAA0AGkERIABB0hVqLwEADQAaQRAgAEGGFmovAQANABpBDyAAQdYVai8BAA0AGkEOIABBghZqLwEADQAaQQ0gAEHaFWovAQANABpBDCAAQf4Vai8BAA0AGkELIABB3hVqLwEADQAaQQogAEH6FWovAQANABpBCSAAQeIVai8BAA0AGkEIIABB9hVqLwEADQAaQQcgAEHmFWovAQANABpBBiAAQfIVai8BAA0AGkEFIABB6hVqLwEADQAaQQQgAEHuFWovAQANABpBA0ECIABBzhVqLwEAGwsiBkEDbGoiBEERajYC+C0gACgC/C1BCmpBA3YiByAEQRtqQQN2IgRNBEAgByEEDAELIAAoAowBQQRHDQAgByEECyAEIAJBBGpPQQAgARsNASAEIAdHDQQLIANBAmqtIRIgACkDmC4hFCAAKAKgLiIBQQNqIgdBP0sNASASIAGthiAUhCESDAILIAAgASACIAMQOQwDCyABQcAARgRAIAAoAgQgACgCEGogFDcAACAAIAAoAhBBCGo2AhBBAyEHDAELIAAoAgQgACgCEGogEiABrYYgFIQ3AAAgACAAKAIQQQhqNgIQIAFBPWshByASQcAAIAFrrYghEgsgACASNwOYLiAAIAc2AqAuIABBgMEAQYDKABCHAQwBCyADQQRqrSESIAApA5guIRQCQCAAKAKgLiIBQQNqIgRBP00EQCASIAGthiAUhCESDAELIAFBwABGBEAgACgCBCAAKAIQaiAUNwAAIAAgACgCEEEIajYCEEEDIQQMAQsgACgCBCAAKAIQaiASIAGthiAUhDcAACAAIAAoAhBBCGo2AhAgAUE9ayEEIBJBwAAgAWutiCESCyAAIBI3A5guIAAgBDYCoC4gAEHsFmooAgAiC6xCgAJ9IRMgAEH4FmooAgAhCQJAAkACfwJ+AkACfwJ/IARBOk0EQCATIASthiAShCETIARBBWoMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQIAmsIRJCBSEUQQoMAgsgACgCBCAAKAIQaiATIASthiAShDcAACAAIAAoAhBBCGo2AhAgE0HAACAEa62IIRMgBEE7awshBSAJrCESIAVBOksNASAFrSEUIAVBBWoLIQcgEiAUhiAThAwBCyAFQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgBq1CA30hE0IFIRRBCQwCCyAAKAIEIAAoAhBqIBIgBa2GIBOENwAAIAAgACgCEEEIajYCECAFQTtrIQcgEkHAACAFa62ICyESIAatQgN9IRMgB0E7Sw0BIAetIRQgB0EEagshBCATIBSGIBKEIRMMAQsgB0HAAEYEQCAAKAIEIAAoAhBqIBI3AAAgACAAKAIQQQhqNgIQQQQhBAwBCyAAKAIEIAAoAhBqIBMgB62GIBKENwAAIAAgACgCEEEIajYCECAHQTxrIQQgE0HAACAHa62IIRMLQQAhBQNAIAAgBSIBQZDWAGotAABBAnRqQc4VajMBACEUAn8gBEE8TQRAIBQgBK2GIBOEIRMgBEEDagwBCyAEQcAARgRAIAAoAgQgACgCEGogEzcAACAAIAAoAhBBCGo2AhAgFCETQQMMAQsgACgCBCAAKAIQaiAUIASthiAThDcAACAAIAAoAhBBCGo2AhAgFEHAACAEa62IIRMgBEE9awshBCABQQFqIQUgASAGRw0ACyAAIAQ2AqAuIAAgEzcDmC4gACAAQeQBaiICIAsQhgEgACAAQdgTaiIBIAkQhgEgACACIAEQhwELIAAQiAEgAwRAAkAgACgCoC4iBEE5TgRAIAAoAgQgACgCEGogACkDmC43AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgQ2AqAuCyAEQQlOBH8gACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACgCoC5BEGsFIAQLQQFIDQAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAAKQOYLjwAAAsgAEEANgKgLiAAQgA3A5guCwsZACAABEAgACgCABAGIAAoAgwQBiAAEAYLC6wBAQJ+Qn8hAwJAIAAtACgNAAJAAkAgACgCIEUNACACQgBTDQAgAlANASABDQELIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAALQA1DQBCACEDIAAtADQNACACUA0AA0AgACABIAOnaiACIAN9QQEQDiIEQn9XBEAgAEEBOgA1Qn8gAyADUBsPCyAEUEUEQCADIAR8IgMgAloNAgwBCwsgAEEBOgA0CyADC3UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCe1YNACACQgR8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUEYdjoAAyAAIAFBEHY6AAIgACABQQh2OgABIAAgAToAAAtUAgF+AX8CQAJAIAAtAABFDQAgASAAKQMQIgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADwsgACgCBCIDRQRAQQAPCyAAIAI3AxAgAyABp2oLdwECfyMAQRBrIgMkAEF/IQQCQCAALQAoDQAgACgCIEEAIAJBA0kbRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALDAELIAMgAjYCCCADIAE3AwAgACADQhBBBhAOQgBTDQBBACEEIABBADoANAsgA0EQaiQAIAQLVwICfgF/AkACQCAALQAARQ0AIAApAxAiAUJ7Vg0AIAFCBHwiAiAAKQMIWA0BCyAAQQA6AABBAA8LIAAoAgQiA0UEQEEADwsgACACNwMQIAMgAadqKAAAC1UCAX4BfyAABEACQCAAKQMIUA0AQgEhAQNAIAAoAgAgAkEEdGoQPiABIAApAwhaDQEgAachAiABQgF8IQEMAAsACyAAKAIAEAYgACgCKBAQIAAQBgsLZAECfwJAAkACQCAARQRAIAGnEAkiA0UNAkEYEAkiAkUNAQwDCyAAIQNBGBAJIgINAkEADwsgAxAGC0EADwsgAkIANwMQIAIgATcDCCACIAM2AgQgAkEBOgAAIAIgAEU6AAEgAgudAQICfgF/AkACQCAALQAARQ0AIAApAxAiAkJ3Vg0AIAJCCHwiAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2oiACABQjiIPAAHIAAgAUIwiDwABiAAIAFCKIg8AAUgACABQiCIPAAEIAAgAUIYiDwAAyAAIAFCEIg8AAIgACABQgiIPAABIAAgATwAAAvwAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsLbwEDfyAAQQxqIQICQAJ/IAAoAiAiAUUEQEF/IQFBEgwBCyAAIAFBAWsiAzYCIEEAIQEgAw0BIABBAEIAQQIQDhogACgCACIARQ0BIAAQGkF/Sg0BQRQLIQAgAgRAIAJBADYCBCACIAA2AgALCyABC58BAgF/AX4CfwJAAn4gACgCACIDKAIkQQFGQQAgAkJ/VRtFBEAgA0EMaiIBBEAgAUEANgIEIAFBEjYCAAtCfwwBCyADIAEgAkELEA4LIgRCf1cEQCAAKAIAIQEgAEEIaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQtBACACIARRDQEaIABBCGoEQCAAQRs2AgwgAEEGNgIICwtBfwsLJAEBfyAABEADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLC5gBAgJ+AX8CQAJAIAAtAABFDQAgACkDECIBQndWDQAgAUIIfCICIAApAwhYDQELIABBADoAAEIADwsgACgCBCIDRQRAQgAPCyAAIAI3AxAgAyABp2oiADEABkIwhiAAMQAHQjiGhCAAMQAFQiiGhCAAMQAEQiCGhCAAMQADQhiGhCAAMQACQhCGhCAAMQABQgiGhCAAMQAAfAsjACAAQShGBEAgAhAGDwsgAgRAIAEgAkEEaygCACAAEQcACwsyACAAKAIkQQFHBEAgAEEMaiIABEAgAEEANgIEIABBEjYCAAtCfw8LIABBAEIAQQ0QDgsPACAABEAgABA2IAAQBgsLgAEBAX8gAC0AKAR/QX8FIAFFBEAgAEEMagRAIABBADYCECAAQRI2AgwLQX8PCyABECoCQCAAKAIAIgJFDQAgAiABECFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAtBfw8LIAAgAUI4QQMQDkI/h6cLC38BA38gACEBAkAgAEEDcQRAA0AgAS0AAEUNAiABQQFqIgFBA3ENAAsLA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsL3wIBCH8gAEUEQEEBDwsCQCAAKAIIIgINAEEBIQQgAC8BBCIHRQRAQQEhAgwBCyAAKAIAIQgDQAJAIAMgCGoiBS0AACICQSBPBEAgAkEYdEEYdUF/Sg0BCyACQQ1NQQBBASACdEGAzABxGw0AAn8CfyACQeABcUHAAUYEQEEBIQYgA0EBagwBCyACQfABcUHgAUYEQCADQQJqIQNBACEGQQEMAgsgAkH4AXFB8AFHBEBBBCECDAULQQAhBiADQQNqCyEDQQALIQlBBCECIAMgB08NAiAFLQABQcABcUGAAUcNAkEDIQQgBg0AIAUtAAJBwAFxQYABRw0CIAkNACAFLQADQcABcUGAAUcNAgsgBCECIANBAWoiAyAHSQ0ACwsgACACNgIIAn8CQCABRQ0AAkAgAUECRw0AIAJBA0cNAEECIQIgAEECNgIICyABIAJGDQBBBSACQQFHDQEaCyACCwtIAgJ+An8jAEEQayIEIAE2AgxCASAArYYhAgNAIAQgAUEEaiIANgIMIAIiA0IBIAEoAgAiBa2GhCECIAAhASAFQX9KDQALIAMLhwUBB38CQAJAIABFBEBBxRQhAiABRQ0BIAFBADYCAEHFFA8LIAJBwABxDQEgACgCCEUEQCAAQQAQIxoLIAAoAgghBAJAIAJBgAFxBEAgBEEBa0ECTw0BDAMLIARBBEcNAgsCQCAAKAIMIgINACAAAn8gACgCACEIIABBEGohCUEAIQICQAJAAkACQCAALwEEIgUEQEEBIQQgBUEBcSEHIAVBAUcNAQwCCyAJRQ0CIAlBADYCAEEADAQLIAVBfnEhBgNAIARBAUECQQMgAiAIai0AAEEBdEHQFGovAQAiCkGAEEkbIApBgAFJG2pBAUECQQMgCCACQQFyai0AAEEBdEHQFGovAQAiBEGAEEkbIARBgAFJG2ohBCACQQJqIQIgBkECayIGDQALCwJ/IAcEQCAEQQFBAkEDIAIgCGotAABBAXRB0BRqLwEAIgJBgBBJGyACQYABSRtqIQQLIAQLEAkiB0UNASAFQQEgBUEBSxshCkEAIQVBACEGA0AgBSAHaiEDAn8gBiAIai0AAEEBdEHQFGovAQAiAkH/AE0EQCADIAI6AAAgBUEBagwBCyACQf8PTQRAIAMgAkE/cUGAAXI6AAEgAyACQQZ2QcABcjoAACAFQQJqDAELIAMgAkE/cUGAAXI6AAIgAyACQQx2QeABcjoAACADIAJBBnZBP3FBgAFyOgABIAVBA2oLIQUgBkEBaiIGIApHDQALIAcgBEEBayICakEAOgAAIAlFDQAgCSACNgIACyAHDAELIAMEQCADQQA2AgQgA0EONgIAC0EACyICNgIMIAINAEEADwsgAUUNACABIAAoAhA2AgALIAIPCyABBEAgASAALwEENgIACyAAKAIAC4MBAQR/QRIhBQJAAkAgACkDMCABWA0AIAGnIQYgACgCQCEEIAJBCHEiB0UEQCAEIAZBBHRqKAIEIgINAgsgBCAGQQR0aiIEKAIAIgJFDQAgBC0ADEUNAUEXIQUgBw0BC0EAIQIgAyAAQQhqIAMbIgAEQCAAQQA2AgQgACAFNgIACwsgAgtuAQF/IwBBgAJrIgUkAAJAIARBgMAEcQ0AIAIgA0wNACAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxAZIAFFBEADQCAAIAVBgAIQLiACQYACayICQf8BSw0ACwsgACAFIAIQLgsgBUGAAmokAAuBAQEBfyMAQRBrIgQkACACIANsIQICQCAAQSdGBEAgBEEMaiACEIwBIQBBACAEKAIMIAAbIQAMAQsgAUEBIAJBxABqIAARAAAiAUUEQEEAIQAMAQtBwAAgAUE/cWsiACABakHAAEEAIABBBEkbaiIAQQRrIAE2AAALIARBEGokACAAC1IBAn9BhIEBKAIAIgEgAEEDakF8cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQA0UNAQtBhIEBIAA2AgAgAQ8LQYSEAUEwNgIAQX8LNwAgAEJ/NwMQIABBADYCCCAAQgA3AwAgAEEANgIwIABC/////w83AyggAEIANwMYIABCADcDIAulAQEBf0HYABAJIgFFBEBBAA8LAkAgAARAIAEgAEHYABAHGgwBCyABQgA3AyAgAUEANgIYIAFC/////w83AxAgAUEAOwEMIAFBv4YoNgIIIAFBAToABiABQQA6AAQgAUIANwNIIAFBgIDYjXg2AkQgAUIANwMoIAFCADcDMCABQgA3AzggAUFAa0EAOwEAIAFCADcDUAsgAUEBOgAFIAFBADYCACABC1gCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgMgAq18IgQgA1QNACAEIAApAwhYDQELIABBADoAAA8LIAAoAgQiBUUEQA8LIAAgBDcDECAFIAOnaiABIAIQBxoLlgEBAn8CQAJAIAJFBEAgAacQCSIFRQ0BQRgQCSIEDQIgBRAGDAELIAIhBUEYEAkiBA0BCyADBEAgA0EANgIEIANBDjYCAAtBAA8LIARCADcDECAEIAE3AwggBCAFNgIEIARBAToAACAEIAJFOgABIAAgBSABIAMQZUEASAR/IAQtAAEEQCAEKAIEEAYLIAQQBkEABSAECwubAgEDfyAALQAAQSBxRQRAAkAgASEDAkAgAiAAIgEoAhAiAAR/IAAFAn8gASABLQBKIgBBAWsgAHI6AEogASgCACIAQQhxBEAgASAAQSByNgIAQX8MAQsgAUIANwIEIAEgASgCLCIANgIcIAEgADYCFCABIAAgASgCMGo2AhBBAAsNASABKAIQCyABKAIUIgVrSwRAIAEgAyACIAEoAiQRAAAaDAILAn8gASwAS0F/SgRAIAIhAANAIAIgACIERQ0CGiADIARBAWsiAGotAABBCkcNAAsgASADIAQgASgCJBEAACAESQ0CIAMgBGohAyABKAIUIQUgAiAEawwBCyACCyEAIAUgAyAAEAcaIAEgASgCFCAAajYCFAsLCwvNBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJoIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAcaAkAgAyAAKAJsIgFNBEAgACABIANrNgJsDAELIABCADcCbAsgACAAKAJoIANrIgE2AmggACAAKAJYIANrNgJYIAEgACgChC5JBEAgACABNgKELgsgAEH8gAEoAgARAwAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJoaiAFaiEFIAEgBCACazYCBAJAAkACQAJAIAEoAhwiBCgCFEEBaw4CAQACCyAEQaABaiAFIAEoAgAgAkHcgAEoAgARCAAMAgsgASABKAIwIAUgASgCACACQcSAASgCABEEADYCMAwBCyAFIAEoAgAgAhAHGgsgASABKAIAIAJqNgIAIAEgASgCCCACajYCCCAAKAI8BSAFCyACaiICNgI8AkAgACgChC4iASACakEDSQ0AIAAoAmggAWshAQJAIAAoAnRBgQhPBEAgACAAIAAoAkggAWoiAi0AACACLQABIAAoAnwRAAA2AlQMAQsgAUUNACAAIAFBAWsgACgChAERAgAaCyAAKAKELiAAKAI8IgJBAUZrIgRFDQAgACABIAQgACgCgAERBQAgACAAKAKELiAEazYChC4gACgCPCECCyACQYUCSw0AIAAoAgAoAgRFDQAgACgCMCEBDAELCwJAIAAoAkQiAiAAKAJAIgNNDQAgAAJ/IAAoAjwgACgCaGoiASADSwRAIAAoAkggAWpBACACIAFrIgNBggIgA0GCAkkbIgMQGSABIANqDAELIAFBggJqIgEgA00NASAAKAJIIANqQQAgAiADayICIAEgA2siAyACIANJGyIDEBkgACgCQCADags2AkALC50CAQF/AkAgAAJ/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDmC48AAAgACAAKQOYLkIIiDcDmC4gACgCoC5BCGsLNgKgLgsLEAAgACgCCBAGIABBADYCCAvwAQECf0F/IQECQCAALQAoDQAgACgCJEEDRgRAIABBDGoEQCAAQQA2AhAgAEEXNgIMC0F/DwsCQCAAKAIgBEAgACkDGELAAINCAFINASAAQQxqBEAgAEEANgIQIABBHTYCDAtBfw8LAkAgACgCACICRQ0AIAIQMkF/Sg0AIAAoAgAhASAAQQxqIgAEQCAAIAEoAgw2AgAgACABKAIQNgIEC0F/DwsgAEEAQgBBABAOQn9VDQAgACgCACIARQ0BIAAQGhpBfw8LQQAhASAAQQA7ATQgAEEMagRAIABCADcCDAsgACAAKAIgQQFqNgIgCyABCzsAIAAtACgEfkJ/BSAAKAIgRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAAQQBCAEEHEA4LC5oIAQt/IABFBEAgARAJDwsgAUFATwRAQYSEAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZSIASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQOwwBCyAHQcyEASgCAEYEQEHAhAEoAgAgBGoiBCAGTQ0CIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgBCAGayICQQFyNgIEQcCEASACNgIAQcyEASADNgIADAELIAdByIQBKAIARgRAQbyEASgCACAEaiIDIAZJDQICQCADIAZrIgJBEE8EQCAFIAlBAXEgBnJBAnI2AgQgBSAGaiIEIAJBAXI2AgQgAyAFaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAUgCUEBcSADckECcjYCBCADIAVqIgIgAigCBEEBcjYCBEEAIQJBACEEC0HIhAEgBDYCAEG8hAEgAjYCAAwBCyAHKAIEIgNBAnENASADQXhxIARqIgogBkkNASAKIAZrIQwCQCADQf8BTQRAIAcoAggiBCADQQN2IgJBA3RB3IQBakYaIAQgBygCDCIDRgRAQbSEAUG0hAEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAHKAIYIQsCQCAHIAcoAgwiCEcEQCAHKAIIIgJBxIQBKAIASRogAiAINgIMIAggAjYCCAwBCwJAIAdBFGoiBCgCACICDQAgB0EQaiIEKAIAIgINAEEAIQgMAQsDQCAEIQMgAiIIQRRqIgQoAgAiAg0AIAhBEGohBCAIKAIQIgINAAsgA0EANgIACyALRQ0AAkAgByAHKAIcIgNBAnRB5IYBaiICKAIARgRAIAIgCDYCACAIDQFBuIQBQbiEASgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAdGG2ogCDYCACAIRQ0BCyAIIAs2AhggBygCECICBEAgCCACNgIQIAIgCDYCGAsgBygCFCICRQ0AIAggAjYCFCACIAg2AhgLIAxBD00EQCAFIAlBAXEgCnJBAnI2AgQgBSAKaiICIAIoAgRBAXI2AgQMAQsgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAMQQNyNgIEIAUgCmoiAiACKAIEQQFyNgIEIAMgDBA7CyAFIQILIAILIgIEQCACQQhqDwsgARAJIgVFBEBBAA8LIAUgAEF8QXggAEEEaygCACICQQNxGyACQXhxaiICIAEgASACSxsQBxogABAGIAUL6QEBA38CQCABRQ0AIAJBgDBxIgIEfwJ/IAJBgCBHBEBBAiACQYAQRg0BGiADBEAgA0EANgIEIANBEjYCAAtBAA8LQQQLIQJBAAVBAQshBkEUEAkiBEUEQCADBEAgA0EANgIEIANBDjYCAAtBAA8LIAQgAUEBahAJIgU2AgAgBUUEQCAEEAZBAA8LIAUgACABEAcgAWpBADoAACAEQQA2AhAgBEIANwMIIAQgATsBBCAGDQAgBCACECNBBUcNACAEKAIAEAYgBCgCDBAGIAQQBkEAIQQgAwRAIANBADYCBCADQRI2AgALCyAEC7UBAQJ/AkACQAJAAkACQAJAAkAgAC0ABQRAIAAtAABBAnFFDQELIAAoAjAQECAAQQA2AjAgAC0ABUUNAQsgAC0AAEEIcUUNAQsgACgCNBAcIABBADYCNCAALQAFRQ0BCyAALQAAQQRxRQ0BCyAAKAI4EBAgAEEANgI4IAAtAAVFDQELIAAtAABBgAFxRQ0BCyAAKAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASELIAMhBQsgBkIuEBciA0UEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyAFEBwMAgsgA0GjEkGoEiACQYACcSIHG0EEECwgB0UEQCADIAkEf0EtBSABLwEIC0H//wNxEA0LIAMgCQR/QS0FIAEvAQoLQf//A3EQDSADIAEvAQwQDSADIAsEf0HjAAUgASgCEAtB//8DcRANIAYgASgCFDYCPAJ/IAZBPGoQjQEiCEUEQEEAIQlBIQwBCwJ/IAgoAhQiBEHQAE4EQCAEQQl0DAELIAhB0AA2AhRBgMACCyEEIAgoAgRBBXQgCCgCCEELdGogCCgCAEEBdmohCSAIKAIMIAQgCCgCEEEFdGpqQaDAAWoLIQQgAyAJQf//A3EQDSADIARB//8DcRANIAMCfyALBEBBACABKQMoQhRUDQEaCyABKAIYCxASIAEpAyAhDCADAn8gAwJ/AkAgBwRAIAxC/v///w9YBEAgASkDKEL/////D1QNAgsgA0F/EBJBfwwDC0F/IAxC/v///w9WDQEaCyAMpwsQEiABKQMoIgxC/////w8gDEL/////D1QbpwsQEiADIAEoAjAiBAR/IAQvAQQFQQALQf//A3EQDSADIAEoAjQgAhBsIAVBgAYQbGpB//8DcRANIAdFBEAgAyABKAI4IgQEfyAELwEEBUEAC0H//wNxEA0gAyABLwE8EA0gAyABLwFAEA0gAyABKAJEEBIgAyABKQNIIgxC/////w8gDEL/////D1QbpxASCyADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAMQCCAFEBwMAgsgACAGIAMtAAAEfiADKQMQBUIACxAbIQQgAxAIIARBf0wNACABKAIwIgMEQCAAIAMQYUF/TA0BCyAFBEAgACAFQYAGEGtBf0wNAQsgBRAcIAEoAjQiBQRAIAAgBSACEGtBAEgNAgsgBw0CIAEoAjgiAUUNAiAAIAEQYUEATg0CDAELIAUQHAtBfyEKCyAGQUBrJAAgCgtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvcAwICfgF/IAOtIQQgACkDmC4hBQJAIAACfyAAAn4gACgCoC4iBkEDaiIDQT9NBEAgBCAGrYYgBYQMAQsgBkHAAEYEQCAAKAIEIAAoAhBqIAU3AAAgACgCEEEIagwCCyAAKAIEIAAoAhBqIAQgBq2GIAWENwAAIAAgACgCEEEIajYCECAGQT1rIQMgBEHAACAGa62ICyIENwOYLiAAIAM2AqAuIANBOU4EQCAAKAIEIAAoAhBqIAQ3AAAgACAAKAIQQQhqNgIQDAILIANBGU4EQCAAKAIEIAAoAhBqIAQ+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiBDcDmC4gACAAKAKgLkEgayIDNgKgLgsgA0EJTgR/IAAoAgQgACgCEGogBD0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghBCAAKAKgLkEQawUgAwtBAUgNASAAKAIQCyIDQQFqNgIQIAAoAgQgA2ogBDwAAAsgAEEANgKgLiAAQgA3A5guIAAoAgQgACgCEGogAjsAACAAIAAoAhBBAmoiAzYCECAAKAIEIANqIAJBf3M7AAAgACAAKAIQQQJqIgM2AhAgAgRAIAAoAgQgA2ogASACEAcaIAAgACgCECACajYCEAsLrAQCAX8BfgJAIAANACABUA0AIAMEQCADQQA2AgQgA0ESNgIAC0EADwsCQAJAIAAgASACIAMQiQEiBEUNAEEYEAkiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAkiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEkNgIEIABCPyACQQBCAEEOQSQRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQciEASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB3IQBakYaIAAoAgwiAyAERw0CQbSEAUG0hAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQbyEASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAA2AgBBwIQBQcCEASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASAANgIAQbyEAUG8hAEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QdyEAWpGGiAEIAUoAgwiA0YEQEG0hAFBtIQBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABByIQBKAIARw0BQbyEASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QdyEAWohAQJ/QbSEASgCACIDQQEgAnQiAnFFBEBBtIQBIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEHkhgFqIQcCQAJAQbiEASgCACIEQQEgAnQiA3FFBEBBuIQBIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC1gCAX8BfgJAAn9BACAARQ0AGiAArUIChiICpyIBIABBBHJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBEAkiAEUNACAAQQRrLQAAQQNxRQ0AIABBACABEBkLIAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAQgBWshAwsgAwsUACAAEEAgACgCABAgIAAoAgQQIAutBAIBfgV/IwBBEGsiBCQAIAAgAWshBgJAAkAgAUEBRgRAIAAgBi0AACACEBkMAQsgAUEJTwRAIAAgBikAADcAACAAIAJBAWtBB3FBAWoiBWohACACIAVrIgFFDQIgBSAGaiECA0AgACACKQAANwAAIAJBCGohAiAAQQhqIQAgAUEIayIBDQALDAILAkACQAJAAkAgAUEEaw4FAAICAgECCyAEIAYoAAAiATYCBCAEIAE2AgAMAgsgBCAGKQAANwMADAELQQghByAEQQhqIQgDQCAIIAYgByABIAEgB0sbIgUQByAFaiEIIAcgBWsiBw0ACyAEIAQpAwg3AwALAkAgBQ0AIAJBEEkNACAEKQMAIQMgAkEQayIGQQR2QQFqQQdxIgEEQANAIAAgAzcACCAAIAM3AAAgAkEQayECIABBEGohACABQQFrIgENAAsLIAZB8ABJDQADQCAAIAM3AHggACADNwBwIAAgAzcAaCAAIAM3AGAgACADNwBYIAAgAzcAUCAAIAM3AEggACADNwBAIAAgAzcAOCAAIAM3ADAgACADNwAoIAAgAzcAICAAIAM3ABggACADNwAQIAAgAzcACCAAIAM3AAAgAEGAAWohACACQYABayICQQ9LDQALCyACQQhPBEBBCCAFayEBA0AgACAEKQMANwAAIAAgAWohACACIAFrIgJBB0sNAAsLIAJFDQEgACAEIAIQBxoLIAAgAmohAAsgBEEQaiQAIAALXwECfyAAKAIIIgEEQCABEAsgAEEANgIICwJAIAAoAgQiAUUNACABKAIAIgJBAXFFDQAgASgCEEF+Rw0AIAEgAkF+cSICNgIAIAINACABECAgAEEANgIECyAAQQA6AAwL1wICBH8BfgJAAkAgACgCQCABp0EEdGooAgAiA0UEQCACBEAgAkEANgIEIAJBFDYCAAsMAQsgACgCACADKQNIIgdBABAUIQMgACgCACEAIANBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQtCACEBIwBBEGsiBiQAQX8hAwJAIABCGkEBEBRBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsgAEIEIAZBCmogAhAtIgRFDQBBHiEAQQEhBQNAIAQQDCAAaiEAIAVBAkcEQCAFQQFqIQUMAQsLIAQtAAAEfyAEKQMQIAQpAwhRBUEAC0UEQCACBEAgAkEANgIEIAJBFDYCAAsgBBAIDAELIAQQCCAAIQMLIAZBEGokACADIgBBAEgNASAHIACtfCIBQn9VDQEgAgRAIAJBFjYCBCACQQQ2AgALC0IAIQELIAELYAIBfgF/AkAgAEUNACAAQQhqEF8iAEUNACABIAEoAjBBAWo2AjAgACADNgIIIAAgAjYCBCAAIAE2AgAgAEI/IAEgA0EAQgBBDiACEQoAIgQgBEIAUxs3AxggACEFCyAFCyIAIAAoAiRBAWtBAU0EQCAAQQBCAEEKEA4aIABBADYCJAsLbgACQAJAAkAgA0IQVA0AIAJFDQECfgJAAkACQCACKAIIDgMCAAEECyACKQMAIAB8DAILIAIpAwAgAXwMAQsgAikDAAsiA0IAUw0AIAEgA1oNAgsgBARAIARBADYCBCAEQRI2AgALC0J/IQMLIAMLggICAX8CfgJAQQEgAiADGwRAIAIgA2oQCSIFRQRAIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgAq0hBgJAAkAgAARAIAAgBhATIgBFBEAgBARAIARBADYCBCAEQQ42AgALDAULIAUgACACEAcaIAMNAQwCCyABIAUgBhARIgdCf1cEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMBAsgBiAHVQRAIAQEQCAEQQA2AgQgBEERNgIACwwECyADRQ0BCyACIAVqIgBBADoAACACQQFIDQAgBSECA0AgAi0AAEUEQCACQSA6AAALIAJBAWoiAiAASQ0ACwsLIAUPCyAFEAZBAAuBAQEBfwJAIAAEQCADQYAGcSEFQQAhAwNAAkAgAC8BCCACRw0AIAUgACgCBHFFDQAgA0EATg0DIANBAWohAwsgACgCACIADQALCyAEBEAgBEEANgIEIARBCTYCAAtBAA8LIAEEQCABIAAvAQo7AQALIAAvAQpFBEBBwBQPCyAAKAIMC1cBAX9BEBAJIgNFBEBBAA8LIAMgATsBCiADIAA7AQggA0GABjYCBCADQQA2AgACQCABBEAgAyACIAEQYyIANgIMIAANASADEAZBAA8LIANBADYCDAsgAwvuBQIEfwV+IwBB4ABrIgQkACAEQQhqIgNCADcDICADQQA2AhggA0L/////DzcDECADQQA7AQwgA0G/hig2AgggA0EBOgAGIANBADsBBCADQQA2AgAgA0IANwNIIANBgIDYjXg2AkQgA0IANwMoIANCADcDMCADQgA3AzggA0FAa0EAOwEAIANCADcDUCABKQMIUCIDRQRAIAEoAgAoAgApA0ghBwsCfgJAIAMEQCAHIQkMAQsgByEJA0AgCqdBBHQiBSABKAIAaigCACIDKQNIIgggCSAIIAlUGyIJIAEpAyBWBEAgAgRAIAJBADYCBCACQRM2AgALQn8MAwsgAygCMCIGBH8gBi8BBAVBAAtB//8Dca0gCCADKQMgfHxCHnwiCCAHIAcgCFQbIgcgASkDIFYEQCACBEAgAkEANgIEIAJBEzYCAAtCfwwDCyAAKAIAIAEoAgAgBWooAgApA0hBABAUIQYgACgCACEDIAZBf0wEQCACBEAgAiADKAIMNgIAIAIgAygCEDYCBAtCfwwDCyAEQQhqIANBAEEBIAIQaEJ/UQRAIARBCGoQNkJ/DAMLAkACQCABKAIAIAVqKAIAIgMvAQogBC8BEkkNACADKAIQIAQoAhhHDQAgAygCFCAEKAIcRw0AIAMoAjAgBCgCOBBiRQ0AAkAgBCgCICIGIAMoAhhHBEAgBCkDKCEIDAELIAMpAyAiCyAEKQMoIghSDQAgCyEIIAMpAyggBCkDMFENAgsgBC0AFEEIcUUNACAGDQAgCEIAUg0AIAQpAzBQDQELIAIEQCACQQA2AgQgAkEVNgIACyAEQQhqEDZCfwwDCyABKAIAIAVqKAIAKAI0IAQoAjwQbyEDIAEoAgAgBWooAgAiBUEBOgAEIAUgAzYCNCAEQQA2AjwgBEEIahA2IApCAXwiCiABKQMIVA0ACwsgByAJfSIHQv///////////wAgB0L///////////8AVBsLIQcgBEHgAGokACAHC8YBAQJ/QdgAEAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAECf0EYEAkiAkUEQCAABEAgAEEANgIEIABBDjYCAAtBAAwBCyACQQA2AhAgAkIANwMIIAJBADYCACACCyIANgJQIABFBEAgARAGQQAPCyABQgA3AwAgAUEANgIQIAFCADcCCCABQgA3AhQgAUEANgJUIAFCADcCHCABQgA3ACEgAUIANwMwIAFCADcDOCABQUBrQgA3AwAgAUIANwNIIAELgBMCD38CfiMAQdAAayIFJAAgBSABNgJMIAVBN2ohEyAFQThqIRBBACEBA0ACQCAOQQBIDQBB/////wcgDmsgAUgEQEGEhAFBPTYCAEF/IQ4MAQsgASAOaiEOCyAFKAJMIgchAQJAAkACQAJAAkACQAJAAkAgBQJ/AkAgBy0AACIGBEADQAJAAkAgBkH/AXEiBkUEQCABIQYMAQsgBkElRw0BIAEhBgNAIAEtAAFBJUcNASAFIAFBAmoiCDYCTCAGQQFqIQYgAS0AAiEMIAghASAMQSVGDQALCyAGIAdrIQEgAARAIAAgByABEC4LIAENDSAFKAJMIQEgBSgCTCwAAUEwa0EKTw0DIAEtAAJBJEcNAyABLAABQTBrIQ9BASERIAFBA2oMBAsgBSABQQFqIgg2AkwgAS0AASEGIAghAQwACwALIA4hDSAADQggEUUNAkEBIQEDQCAEIAFBAnRqKAIAIgAEQCADIAFBA3RqIAAgAhB4QQEhDSABQQFqIgFBCkcNAQwKCwtBASENIAFBCk8NCANAIAQgAUECdGooAgANCCABQQFqIgFBCkcNAAsMCAtBfyEPIAFBAWoLIgE2AkxBACEIAkAgASwAACIKQSBrIgZBH0sNAEEBIAZ0IgZBidEEcUUNAANAAkAgBSABQQFqIgg2AkwgASwAASIKQSBrIgFBIE8NAEEBIAF0IgFBidEEcUUNACABIAZyIQYgCCEBDAELCyAIIQEgBiEICwJAIApBKkYEQCAFAn8CQCABLAABQTBrQQpPDQAgBSgCTCIBLQACQSRHDQAgASwAAUECdCAEakHAAWtBCjYCACABLAABQQN0IANqQYADaygCACELQQEhESABQQNqDAELIBENCEEAIRFBACELIAAEQCACIAIoAgAiAUEEajYCACABKAIAIQsLIAUoAkxBAWoLIgE2AkwgC0F/Sg0BQQAgC2shCyAIQYDAAHIhCAwBCyAFQcwAahB3IgtBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQdyEJIAUoAkwhAQtBACEGA0AgBiESQX8hDSABLAAAQcEAa0E5Sw0HIAUgAUEBaiIKNgJMIAEsAAAhBiAKIQEgBiASQTpsakGf7ABqLQAAIgZBAWtBCEkNAAsgBkETRg0CIAZFDQYgD0EATgRAIAQgD0ECdGogBjYCACAFIAMgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQ0MBQsgBUFAayAGIAIQeCAFKAJMIQoMAgsgD0F/Sg0DC0EAIQEgAEUNBAsgCEH//3txIgwgCCAIQYDAAHEbIQZBACENQaQIIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgCkEBaywAACIBQV9xIAEgAUEPcUEDRhsgASASGyIBQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCABQcEAaw4HDhILEg4ODgALIAFB0wBGDQkMEQsgBSkDQCEUQaQIDAULQQAhAQJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAUoAkAgDjYCAAwWCyAFKAJAIA42AgAMFQsgBSgCQCAOrDcDAAwUCyAFKAJAIA47AQAMEwsgBSgCQCAOOgAADBILIAUoAkAgDjYCAAwRCyAFKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAZBCHIhBkH4ACEBCyAQIQcgAUEgcSEMIAUpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FBsPAAai0AACAMcjoAACAUQg9WIQogFEIEiCEUIAoNAAsLIAUpA0BQDQMgBkEIcUUNAyABQQR2QaQIaiEPQQIhDQwDCyAQIQEgBSkDQCIUUEUEQANAIAFBAWsiASAUp0EHcUEwcjoAACAUQgdWIQcgFEIDiCEUIAcNAAsLIAEhByAGQQhxRQ0CIAkgECAHayIBQQFqIAEgCUgbIQkMAgsgBSkDQCIUQn9XBEAgBUIAIBR9IhQ3A0BBASENQaQIDAELIAZBgBBxBEBBASENQaUIDAELQaYIQaQIIAZBAXEiDRsLIQ8gECEBAkAgFEKAgICAEFQEQCAUIRUMAQsDQCABQQFrIgEgFCAUQgqAIhVCCn59p0EwcjoAACAUQv////+fAVYhByAVIRQgBw0ACwsgFaciBwRAA0AgAUEBayIBIAcgB0EKbiIMQQpsa0EwcjoAACAHQQlLIQogDCEHIAoNAAsLIAEhBwsgBkH//3txIAYgCUF/ShshBgJAIAUpA0AiFEIAUg0AIAkNAEEAIQkgECEHDAoLIAkgFFAgECAHa2oiASABIAlIGyEJDAkLIAUoAkAiAUGKEiABGyIHQQAgCRB6IgEgByAJaiABGyEIIAwhBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIAtBACAGECcMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQeSIHQQBIIgwNACAHIAkgAWtLDQAgCEEEaiEIIAkgASAHaiIBSw0BDAILC0F/IQ0gDA0FCyAAQSAgCyABIAYQJyABRQRAQQAhAQwBC0EAIQggBSgCQCEKA0AgCigCACIHRQ0BIAVBBGogBxB5IgcgCGoiCCABSg0BIAAgBUEEaiAHEC4gCkEEaiEKIAEgCEsNAAsLIABBICALIAEgBkGAwABzECcgCyABIAEgC0gbIQEMBQsgACAFKwNAIAsgCSAGIAFBABEdACEBDAQLIAUgBSkDQDwAN0EBIQkgEyEHIAwhBgwCC0F/IQ0LIAVB0ABqJAAgDQ8LIABBICANIAggB2siDCAJIAkgDEgbIgpqIgggCyAIIAtKGyIBIAggBhAnIAAgDyANEC4gAEEwIAEgCCAGQYCABHMQJyAAQTAgCiAMQQAQJyAAIAcgDBAuIABBICABIAggBkGAwABzECcMAAsAC54DAgR/AX4gAARAIAAoAgAiAQRAIAEQGhogACgCABALCyAAKAIcEAYgACgCIBAQIAAoAiQQECAAKAJQIgMEQCADKAIQIgIEQCADKAIAIgEEfwNAIAIgBEECdGooAgAiAgRAA0AgAigCGCEBIAIQBiABIgINAAsgAygCACEBCyABIARBAWoiBEsEQCADKAIQIQIMAQsLIAMoAhAFIAILEAYLIAMQBgsgACgCQCIBBEAgACkDMFAEfyABBSABED5CAiEFAkAgACkDMEICVA0AQQEhAgNAIAAoAkAgAkEEdGoQPiAFIAApAzBaDQEgBachAiAFQgF8IQUMAAsACyAAKAJACxAGCwJAIAAoAkRFDQBBACECQgEhBQNAIAAoAkwgAkECdGooAgAiAUEBOgAoIAFBDGoiASgCAEUEQCABBEAgAUEANgIEIAFBCDYCAAsLIAUgADUCRFoNASAFpyECIAVCAXwhBQwACwALIAAoAkwQBiAAKAJUIgIEQCACKAIIIgEEQCACKAIMIAERAwALIAIQBgsgAEEIahAxIAAQBgsL6gMCAX4EfwJAIAAEfiABRQRAIAMEQCADQQA2AgQgA0ESNgIAC0J/DwsgAkGDIHEEQAJAIAApAzBQDQBBPEE9IAJBAXEbIQcgAkECcUUEQANAIAAgBCACIAMQUyIFBEAgASAFIAcRAgBFDQYLIARCAXwiBCAAKQMwVA0ADAILAAsDQCAAIAQgAiADEFMiBQRAIAECfyAFECJBAWohBgNAQQAgBkUNARogBSAGQQFrIgZqIggtAABBL0cNAAsgCAsiBkEBaiAFIAYbIAcRAgBFDQULIARCAXwiBCAAKQMwVA0ACwsgAwRAIANBADYCBCADQQk2AgALQn8PC0ESIQYCQAJAIAAoAlAiBUUNACABRQ0AQQkhBiAFKQMIUA0AIAUoAhAgAS0AACIHBH9CpesKIQQgASEAA0AgBCAHrUL/AYN8IQQgAC0AASIHBEAgAEEBaiEAIARC/////w+DQiF+IQQMAQsLIASnBUGFKgsgBSgCAHBBAnRqKAIAIgBFDQADQCABIAAoAgAQOEUEQCACQQhxBEAgACkDCCIEQn9RDQMMBAsgACkDECIEQn9RDQIMAwsgACgCGCIADQALCyADBEAgA0EANgIEIAMgBjYCAAtCfyEECyAEBUJ/Cw8LIAMEQCADQgA3AgALIAQL3AQCB38BfgJAAkAgAEUNACABRQ0AIAJCf1UNAQsgBARAIARBADYCBCAEQRI2AgALQQAPCwJAIAAoAgAiB0UEQEGAAiEHQYACEDwiBkUNASAAKAIQEAYgAEGAAjYCACAAIAY2AhALAkACQCAAKAIQIAEtAAAiBQR/QqXrCiEMIAEhBgNAIAwgBa1C/wGDfCEMIAYtAAEiBQRAIAZBAWohBiAMQv////8Pg0IhfiEMDAELCyAMpwVBhSoLIgYgB3BBAnRqIggoAgAiBQRAA0ACQCAFKAIcIAZHDQAgASAFKAIAEDgNAAJAIANBCHEEQCAFKQMIQn9SDQELIAUpAxBCf1ENBAsgBARAIARBADYCBCAEQQo2AgALQQAPCyAFKAIYIgUNAAsLQSAQCSIFRQ0CIAUgATYCACAFIAgoAgA2AhggCCAFNgIAIAVCfzcDCCAFIAY2AhwgACAAKQMIQgF8Igw3AwggDLogB7hEAAAAAAAA6D+iZEUNACAHQQBIDQAgByAHQQF0IghGDQAgCBA8IgpFDQECQCAMQgAgBxtQBEAgACgCECEJDAELIAAoAhAhCUEAIQQDQCAJIARBAnRqKAIAIgYEQANAIAYoAhghASAGIAogBigCHCAIcEECdGoiCygCADYCGCALIAY2AgAgASIGDQALCyAEQQFqIgQgB0cNAAsLIAkQBiAAIAg2AgAgACAKNgIQCyADQQhxBEAgBSACNwMICyAFIAI3AxBBAQ8LIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgBARAIARBADYCBCAEQQ42AgALQQAL3Q8BF38jAEFAaiIHQgA3AzAgB0IANwM4IAdCADcDICAHQgA3AygCQAJAAkACQAJAIAIEQCACQQNxIQggAkEBa0EDTwRAIAJBfHEhBgNAIAdBIGogASAJQQF0IgxqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBAnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBHJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgCUEEaiEJIAZBBGsiBg0ACwsgCARAA0AgB0EgaiABIAlBAXRqLwEAQQF0aiIGIAYvAQBBAWo7AQAgCUEBaiEJIAhBAWsiCA0ACwsgBCgCACEJQQ8hCyAHLwE+IhENAgwBCyAEKAIAIQkLQQ4hC0EAIREgBy8BPA0AQQ0hCyAHLwE6DQBBDCELIAcvATgNAEELIQsgBy8BNg0AQQohCyAHLwE0DQBBCSELIAcvATINAEEIIQsgBy8BMA0AQQchCyAHLwEuDQBBBiELIAcvASwNAEEFIQsgBy8BKg0AQQQhCyAHLwEoDQBBAyELIAcvASYNAEECIQsgBy8BJA0AIAcvASJFBEAgAyADKAIAIgBBBGo2AgAgAEHAAjYBACADIAMoAgAiAEEEajYCACAAQcACNgEAQQEhDQwDCyAJQQBHIRtBASELQQEhCQwBCyALIAkgCSALSxshG0EBIQ5BASEJA0AgB0EgaiAJQQF0ai8BAA0BIAlBAWoiCSALRw0ACyALIQkLQX8hCCAHLwEiIg9BAksNAUEEIAcvASQiECAPQQF0amsiBkEASA0BIAZBAXQgBy8BJiISayIGQQBIDQEgBkEBdCAHLwEoIhNrIgZBAEgNASAGQQF0IAcvASoiFGsiBkEASA0BIAZBAXQgBy8BLCIVayIGQQBIDQEgBkEBdCAHLwEuIhZrIgZBAEgNASAGQQF0IAcvATAiF2siBkEASA0BIAZBAXQgBy8BMiIZayIGQQBIDQEgBkEBdCAHLwE0IhxrIgZBAEgNASAGQQF0IAcvATYiDWsiBkEASA0BIAZBAXQgBy8BOCIYayIGQQBIDQEgBkEBdCAHLwE6IgxrIgZBAEgNASAGQQF0IAcvATwiCmsiBkEASA0BIAZBAXQgEWsiBkEASA0BIAZBACAARSAOchsNASAJIBtLIRpBACEIIAdBADsBAiAHIA87AQQgByAPIBBqIgY7AQYgByAGIBJqIgY7AQggByAGIBNqIgY7AQogByAGIBRqIgY7AQwgByAGIBVqIgY7AQ4gByAGIBZqIgY7ARAgByAGIBdqIgY7ARIgByAGIBlqIgY7ARQgByAGIBxqIgY7ARYgByAGIA1qIgY7ARggByAGIBhqIgY7ARogByAGIAxqIgY7ARwgByAGIApqOwEeAkAgAkUNACACQQFHBEAgAkF+cSEGA0AgASAIQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAg7AQALIAEgCEEBciIMQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAw7AQALIAhBAmohCCAGQQJrIgYNAAsLIAJBAXFFDQAgASAIQQF0ai8BACICRQ0AIAcgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAIOwEACyAJIBsgGhshDUEUIRBBACEWIAUiCiEYQQAhEgJAAkACQCAADgICAAELQQEhCCANQQpLDQNBgQIhEEHw2QAhGEGw2QAhCkEBIRIMAQsgAEECRiEWQQAhEEHw2gAhGEGw2gAhCiAAQQJHBEAMAQtBASEIIA1BCUsNAgtBASANdCITQQFrIRwgAygCACEUQQAhFSANIQZBACEPQQAhDkF/IQIDQEEBIAZ0IRoCQANAIAkgD2shFwJAIAUgFUEBdGovAQAiCCAQTwRAIAogCCAQa0EBdCIAai8BACERIAAgGGotAAAhAAwBC0EAQeAAIAhBAWogEEkiBhshACAIQQAgBhshEQsgDiAPdiEMQX8gF3QhBiAaIQgDQCAUIAYgCGoiCCAMakECdGoiGSAROwECIBkgFzoAASAZIAA6AAAgCA0AC0EBIAlBAWt0IQYDQCAGIgBBAXYhBiAAIA5xDQALIAdBIGogCUEBdGoiBiAGLwEAQQFrIgY7AQAgAEEBayAOcSAAakEAIAAbIQ4gFUEBaiEVIAZB//8DcUUEQCAJIAtGDQIgASAFIBVBAXRqLwEAQQF0ai8BACEJCyAJIA1NDQAgDiAccSIAIAJGDQALQQEgCSAPIA0gDxsiD2siBnQhAiAJIAtJBEAgCyAPayEMIAkhCAJAA0AgAiAHQSBqIAhBAXRqLwEAayICQQFIDQEgAkEBdCECIAZBAWoiBiAPaiIIIAtJDQALIAwhBgtBASAGdCECC0EBIQggEiACIBNqIhNBtApLcQ0DIBYgE0HQBEtxDQMgAygCACICIABBAnRqIgggDToAASAIIAY6AAAgCCAUIBpBAnRqIhQgAmtBAnY7AQIgACECDAELCyAOBEAgFCAOQQJ0aiIAQQA7AQIgACAXOgABIABBwAA6AAALIAMgAygCACATQQJ0ajYCAAsgBCANNgIAQQAhCAsgCAusAQICfgF/IAFBAmqtIQIgACkDmC4hAwJAIAAoAqAuIgFBA2oiBEE/TQRAIAIgAa2GIAOEIQIMAQsgAUHAAEYEQCAAKAIEIAAoAhBqIAM3AAAgACAAKAIQQQhqNgIQQQMhBAwBCyAAKAIEIAAoAhBqIAIgAa2GIAOENwAAIAAgACgCEEEIajYCECABQT1rIQQgAkHAACABa62IIQILIAAgAjcDmC4gACAENgKgLguXAwICfgN/QYDJADMBACECIAApA5guIQMCQCAAKAKgLiIFQYLJAC8BACIGaiIEQT9NBEAgAiAFrYYgA4QhAgwBCyAFQcAARgRAIAAoAgQgACgCEGogAzcAACAAIAAoAhBBCGo2AhAgBiEEDAELIAAoAgQgACgCEGogAiAFrYYgA4Q3AAAgACAAKAIQQQhqNgIQIARBQGohBCACQcAAIAVrrYghAgsgACACNwOYLiAAIAQ2AqAuIAEEQAJAIARBOU4EQCAAKAIEIAAoAhBqIAI3AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAI+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiAjcDmC4gACAAKAKgLkEgayIENgKgLgsgBEEJTgR/IAAoAgQgACgCEGogAj0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghAiAAKAKgLkEQawUgBAtBAUgNACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAI8AAALIABBADYCoC4gAEIANwOYLgsL8hQBEn8gASgCCCICKAIAIQUgAigCDCEHIAEoAgAhCCAAQoCAgIDQxwA3A6ApQQAhAgJAAkAgB0EASgRAQX8hDANAAkAgCCACQQJ0aiIDLwEABEAgACAAKAKgKUEBaiIDNgKgKSAAIANBAnRqQawXaiACNgIAIAAgAmpBqClqQQA6AAAgAiEMDAELIANBADsBAgsgAkEBaiICIAdHDQALIABB/C1qIQ8gAEH4LWohESAAKAKgKSIEQQFKDQIMAQsgAEH8LWohDyAAQfgtaiERQX8hDAsDQCAAIARBAWoiAjYCoCkgACACQQJ0akGsF2ogDEEBaiIDQQAgDEECSCIGGyICNgIAIAggAkECdCIEakEBOwEAIAAgAmpBqClqQQA6AAAgACAAKAL4LUEBazYC+C0gBQRAIA8gDygCACAEIAVqLwECazYCAAsgAyAMIAYbIQwgACgCoCkiBEECSA0ACwsgASAMNgIEIARBAXYhBgNAIAAgBkECdGpBrBdqKAIAIQkCQCAGIgJBAXQiAyAESg0AIAggCUECdGohCiAAIAlqQagpaiENIAYhBQNAAkAgAyAETgRAIAMhAgwBCyAIIABBrBdqIgIgA0EBciIEQQJ0aigCACILQQJ0ai8BACIOIAggAiADQQJ0aigCACIQQQJ0ai8BACICTwRAIAIgDkcEQCADIQIMAgsgAyECIABBqClqIgMgC2otAAAgAyAQai0AAEsNAQsgBCECCyAKLwEAIgQgCCAAIAJBAnRqQawXaigCACIDQQJ0ai8BACILSQRAIAUhAgwCCwJAIAQgC0cNACANLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAAgAkECdGpBrBdqIAk2AgAgBkECTgRAIAZBAWshBiAAKAKgKSEEDAELCyAAKAKgKSEDA0AgByEGIAAgA0EBayIENgKgKSAAKAKwFyEKIAAgACADQQJ0akGsF2ooAgAiCTYCsBdBASECAkAgA0EDSA0AIAggCUECdGohDSAAIAlqQagpaiELQQIhA0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCCAAQawXaiICIANBAXIiB0ECdGooAgAiBEECdGovAQAiDiAIIAIgA0ECdGooAgAiEEECdGovAQAiAk8EQCACIA5HBEAgAyECDAILIAMhAiAAQagpaiIDIARqLQAAIAMgEGotAABLDQELIAchAgsgDS8BACIHIAggACACQQJ0akGsF2ooAgAiA0ECdGovAQAiBEkEQCAFIQIMAgsCQCAEIAdHDQAgCy0AACAAIANqQagpai0AAEsNACAFIQIMAgsgACAFQQJ0akGsF2ogAzYCACACIQUgAkEBdCIDIAAoAqApIgRMDQALC0ECIQMgAEGsF2oiByACQQJ0aiAJNgIAIAAgACgCpClBAWsiBTYCpCkgACgCsBchAiAHIAVBAnRqIAo2AgAgACAAKAKkKUEBayIFNgKkKSAHIAVBAnRqIAI2AgAgCCAGQQJ0aiINIAggAkECdGoiBS8BACAIIApBAnRqIgQvAQBqOwEAIABBqClqIgkgBmoiCyACIAlqLQAAIgIgCSAKai0AACIKIAIgCksbQQFqOgAAIAUgBjsBAiAEIAY7AQIgACAGNgKwF0EBIQVBASECAkAgACgCoCkiBEECSA0AA0AgDS8BACIKIAggAAJ/IAMgAyAETg0AGiAIIAcgA0EBciICQQJ0aigCACIEQQJ0ai8BACIOIAggByADQQJ0aigCACIQQQJ0ai8BACISTwRAIAMgDiASRw0BGiADIAQgCWotAAAgCSAQai0AAEsNARoLIAILIgJBAnRqQawXaigCACIDQQJ0ai8BACIESQRAIAUhAgwCCwJAIAQgCkcNACALLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAZBAWohByAAIAJBAnRqQawXaiAGNgIAIAAoAqApIgNBAUoNAAsgACAAKAKkKUEBayICNgKkKSAAQawXaiIDIAJBAnRqIAAoArAXNgIAIAEoAgQhCSABKAIIIgIoAhAhBiACKAIIIQogAigCBCEQIAIoAgAhDSABKAIAIQcgAEGkF2pCADcBACAAQZwXakIANwEAIABBlBdqQgA3AQAgAEGMF2oiAUIANwEAQQAhBSAHIAMgACgCpClBAnRqKAIAQQJ0akEAOwECAkAgACgCpCkiAkG7BEoNACACQQFqIQIDQCAHIAAgAkECdGpBrBdqKAIAIgRBAnQiEmoiCyAHIAsvAQJBAnRqLwECIgNBAWogBiADIAZJGyIOOwECIAMgBk8hEwJAIAQgCUoNACAAIA5BAXRqQYwXaiIDIAMvAQBBAWo7AQBBACEDIAQgCk4EQCAQIAQgCmtBAnRqKAIAIQMLIBEgESgCACALLwEAIgQgAyAOamxqNgIAIA1FDQAgDyAPKAIAIAMgDSASai8BAmogBGxqNgIACyAFIBNqIQUgAkEBaiICQb0ERw0ACyAFRQ0AIAAgBkEBdGpBjBdqIQQDQCAGIQIDQCAAIAIiA0EBayICQQF0akGMF2oiDy8BACIKRQ0ACyAPIApBAWs7AQAgACADQQF0akGMF2oiAiACLwEAQQJqOwEAIAQgBC8BAEEBayIDOwEAIAVBAkohAiAFQQJrIQUgAg0ACyAGRQ0AQb0EIQIDQCADQf//A3EiBQRAA0AgACACQQFrIgJBAnRqQawXaigCACIDIAlKDQAgByADQQJ0aiIDLwECIAZHBEAgESARKAIAIAYgAy8BAGxqIgQ2AgAgESAEIAMvAQAgAy8BAmxrNgIAIAMgBjsBAgsgBUEBayIFDQALCyAGQQFrIgZFDQEgACAGQQF0akGMF2ovAQAhAwwACwALIwBBIGsiAiABIgAvAQBBAXQiATsBAiACIAEgAC8BAmpBAXQiATsBBCACIAEgAC8BBGpBAXQiATsBBiACIAEgAC8BBmpBAXQiATsBCCACIAEgAC8BCGpBAXQiATsBCiACIAEgAC8BCmpBAXQiATsBDCACIAEgAC8BDGpBAXQiATsBDiACIAEgAC8BDmpBAXQiATsBECACIAEgAC8BEGpBAXQiATsBEiACIAEgAC8BEmpBAXQiATsBFCACIAEgAC8BFGpBAXQiATsBFiACIAEgAC8BFmpBAXQiATsBGCACIAEgAC8BGGpBAXQiATsBGiACIAEgAC8BGmpBAXQiATsBHCACIAAvARwgAWpBAXQ7AR5BACEAIAxBAE4EQANAIAggAEECdGoiAy8BAiIBBEAgAiABQQF0aiIFIAUvAQAiBUEBajsBACADIAWtQoD+A4NCCIhCgpCAgQh+QpDCiKKIAYNCgYKEiBB+QiCIp0H/AXEgBUH/AXGtQoKQgIEIfkKQwoiiiAGDQoGChIgQfkIYiKdBgP4DcXJBECABa3Y7AQALIAAgDEchASAAQQFqIQAgAQ0ACwsLcgEBfyMAQRBrIgQkAAJ/QQAgAEUNABogAEEIaiEAIAFFBEAgAlBFBEAgAARAIABBADYCBCAAQRI2AgALQQAMAgtBAEIAIAMgABA6DAELIAQgAjcDCCAEIAE2AgAgBEIBIAMgABA6CyEAIARBEGokACAACyIAIAAgASACIAMQJiIARQRAQQAPCyAAKAIwQQAgAiADECULAwABC8gFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEBRgRAIAMgAS0AAGpB8f8DcCIAIARqQfH/A3BBEHQgAHIPCwJAIAEEfyACQRBJDQECQCACQa8rSwRAA0AgAkGwK2shAkG1BSEFIAEhAANAIAMgAC0AAGoiAyAEaiADIAAtAAFqIgNqIAMgAC0AAmoiA2ogAyAALQADaiIDaiADIAAtAARqIgNqIAMgAC0ABWoiA2ogAyAALQAGaiIDaiADIAAtAAdqIgNqIQQgBQRAIABBCGohACAFQQFrIQUMAQsLIARB8f8DcCEEIANB8f8DcCEDIAFBsCtqIQEgAkGvK0sNAAsgAkEISQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgNqIQQgAUEIaiEBIAJBCGsiAkEHSw0ACwsCQCACRQ0AIAJBAWshBiACQQNxIgUEQCABIQADQCACQQFrIQIgAyAALQAAaiIDIARqIQQgAEEBaiIBIQAgBUEBayIFDQALCyAGQQNJDQADQCADIAEtAABqIgAgAS0AAWoiBSABLQACaiIGIAEtAANqIgMgBiAFIAAgBGpqamohBCABQQRqIQEgAkEEayICDQALCyADQfH/A3AgBEHx/wNwQRB0cgVBAQsPCwJAIAJFDQAgAkEBayEGIAJBA3EiBQRAIAEhAANAIAJBAWshAiADIAAtAABqIgMgBGohBCAAQQFqIgEhACAFQQFrIgUNAAsLIAZBA0kNAANAIAMgAS0AAGoiACABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgACAEampqaiEEIAFBBGohASACQQRrIgINAAsLIANB8f8DcCAEQfH/A3BBEHRyCx8AIAAgAiADQcCAASgCABEAACEAIAEgAiADEAcaIAALIwAgACAAKAJAIAIgA0HUgAEoAgARAAA2AkAgASACIAMQBxoLzSoCGH8HfiAAKAIMIgIgACgCECIDaiEQIAMgAWshASAAKAIAIgUgACgCBGohA0F/IAAoAhwiBygCpAF0IQRBfyAHKAKgAXQhCyAHKAI4IQwCf0EAIAcoAiwiEUUNABpBACACIAxJDQAaIAJBhAJqIAwgEWpNCyEWIBBBgwJrIRMgASACaiEXIANBDmshFCAEQX9zIRggC0F/cyESIAcoApwBIRUgBygCmAEhDSAHKAKIASEIIAc1AoQBIR0gBygCNCEOIAcoAjAhGSAQQQFqIQ8DQCAIQThyIQYgBSAIQQN2QQdxayELAn8gAiANIAUpAAAgCK2GIB2EIh2nIBJxQQJ0IgFqIgMtAAAiBA0AGiACIAEgDWoiAS0AAjoAACAGIAEtAAEiAWshBiACQQFqIA0gHSABrYgiHacgEnFBAnQiAWoiAy0AACIEDQAaIAIgASANaiIDLQACOgABIAYgAy0AASIDayEGIA0gHSADrYgiHacgEnFBAnRqIgMtAAAhBCACQQJqCyEBIAtBB2ohBSAGIAMtAAEiAmshCCAdIAKtiCEdAkACQAJAIARB/wFxRQ0AAkACQAJAAkACQANAIARBEHEEQCAVIB0gBK1CD4OIIhqnIBhxQQJ0aiECAn8gCCAEQQ9xIgZrIgRBG0sEQCAEIQggBQwBCyAEQThyIQggBSkAACAErYYgGoQhGiAFIARBA3ZrQQdqCyELIAMzAQIhGyAIIAItAAEiA2shCCAaIAOtiCEaIAItAAAiBEEQcQ0CA0AgBEHAAHFFBEAgCCAVIAIvAQJBAnRqIBqnQX8gBHRBf3NxQQJ0aiICLQABIgNrIQggGiADrYghGiACLQAAIgRBEHFFDQEMBAsLIAdB0f4ANgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsiAw0ACwsgAUEHSQ0BA0AgACACLQAAOgAAIAAgAi0AAToAASAAIAItAAI6AAIgACACLQADOgADIAAgAi0ABDoABCAAIAItAAU6AAUgACACLQAGOgAGIAAgAi0ABzoAByAAQQhqIQAgAkEIaiECIARBCGsiBA0ACwwBCyAERQ0AIAAgASAEED8hAAsgAAvyCAEXfyAAKAJoIgwgACgCMEGGAmsiBWtBACAFIAxJGyENIAAoAnQhAiAAKAKQASEPIAAoAkgiDiAMaiIJIAAoAnAiBUECIAUbIgVBAWsiBmoiAy0AASESIAMtAAAhEyAGIA5qIQZBAyEDIAAoApQBIRYgACgCPCEUIAAoAkwhECAAKAI4IRECQAJ/IAVBA0kEQCANIQggDgwBCyAAIABBACAJLQABIAAoAnwRAAAgCS0AAiAAKAJ8EQAAIQoDQCAAIAogAyAJai0AACAAKAJ8EQAAIQogACgCUCAKQQF0ai8BACIIIAEgCCABQf//A3FJIggbIQEgA0ECayAHIAgbIQcgA0EBaiIDIAVNDQALIAFB//8DcSAHIA1qIghB//8DcU0NASAGIAdB//8DcSIDayEGIA4gA2sLIQMCQAJAIAwgAUH//wNxTQ0AIAIgAkECdiAFIA9JGyEKIA1B//8DcSEVIAlBAmohDyAJQQRrIRcDQAJAAkAgBiABQf//A3EiC2otAAAgE0cNACAGIAtBAWoiAWotAAAgEkcNACADIAtqIgItAAAgCS0AAEcNACABIANqLQAAIAktAAFGDQELIApBAWsiCkUNAiAQIAsgEXFBAXRqLwEAIgEgCEH//wNxSw0BDAILIAJBAmohAUEAIQQgDyECAkADQCACLQAAIAEtAABHDQEgAi0AASABLQABRwRAIARBAXIhBAwCCyACLQACIAEtAAJHBEAgBEECciEEDAILIAItAAMgAS0AA0cEQCAEQQNyIQQMAgsgAi0ABCABLQAERwRAIARBBHIhBAwCCyACLQAFIAEtAAVHBEAgBEEFciEEDAILIAItAAYgAS0ABkcEQCAEQQZyIQQMAgsgAi0AByABLQAHRwRAIARBB3IhBAwCCyABQQhqIQEgAkEIaiECIARB+AFJIRggBEEIaiEEIBgNAAtBgAIhBAsCQAJAIAUgBEECaiICSQRAIAAgCyAHQf//A3FrIgY2AmwgAiAUSwRAIBQPCyACIBZPBEAgAg8LIAkgBEEBaiIFaiIBLQABIRIgAS0AACETAkAgAkEESQ0AIAIgBmogDE8NACAGQf//A3EhCCAEQQFrIQtBACEDQQAhBwNAIBAgAyAIaiARcUEBdGovAQAiASAGQf//A3FJBEAgAyAVaiABTw0IIAMhByABIQYLIANBAWoiAyALTQ0ACyAAIAAgAEEAIAIgF2oiAS0AACAAKAJ8EQAAIAEtAAEgACgCfBEAACABLQACIAAoAnwRAAAhASAAKAJQIAFBAXRqLwEAIgEgBkH//wNxTwRAIAdB//8DcSEDIAYhAQwDCyAEQQJrIgdB//8DcSIDIBVqIAFPDQYMAgsgAyAFaiEGIAIhBQsgCkEBayIKRQ0DIBAgCyARcUEBdGovAQAiASAIQf//A3FNDQMMAQsgByANaiEIIA4gA2siAyAFaiEGIAIhBQsgDCABQf//A3FLDQALCyAFDwsgAiEFCyAFIAAoAjwiACAAIAVLGwuGBQETfyAAKAJ0IgMgA0ECdiAAKAJwIgNBAiADGyIDIAAoApABSRshByAAKAJoIgogACgCMEGGAmsiBWtB//8DcUEAIAUgCkkbIQwgACgCSCIIIApqIgkgA0EBayICaiIFLQABIQ0gBS0AACEOIAlBAmohBSACIAhqIQsgACgClAEhEiAAKAI8IQ8gACgCTCEQIAAoAjghESAAKAKIAUEFSCETA0ACQCAKIAFB//8DcU0NAANAAkACQCALIAFB//8DcSIGai0AACAORw0AIAsgBkEBaiIBai0AACANRw0AIAYgCGoiAi0AACAJLQAARw0AIAEgCGotAAAgCS0AAUYNAQsgB0EBayIHRQ0CIAwgECAGIBFxQQF0ai8BACIBSQ0BDAILCyACQQJqIQRBACECIAUhAQJAA0AgAS0AACAELQAARw0BIAEtAAEgBC0AAUcEQCACQQFyIQIMAgsgAS0AAiAELQACRwRAIAJBAnIhAgwCCyABLQADIAQtAANHBEAgAkEDciECDAILIAEtAAQgBC0ABEcEQCACQQRyIQIMAgsgAS0ABSAELQAFRwRAIAJBBXIhAgwCCyABLQAGIAQtAAZHBEAgAkEGciECDAILIAEtAAcgBC0AB0cEQCACQQdyIQIMAgsgBEEIaiEEIAFBCGohASACQfgBSSEUIAJBCGohAiAUDQALQYACIQILAkAgAyACQQJqIgFJBEAgACAGNgJsIAEgD0sEQCAPDwsgASASTwRAIAEPCyAIIAJBAWoiA2ohCyADIAlqIgMtAAEhDSADLQAAIQ4gASEDDAELIBMNAQsgB0EBayIHRQ0AIAwgECAGIBFxQQF0ai8BACIBSQ0BCwsgAwvLAQECfwJAA0AgAC0AACABLQAARw0BIAAtAAEgAS0AAUcEQCACQQFyDwsgAC0AAiABLQACRwRAIAJBAnIPCyAALQADIAEtAANHBEAgAkEDcg8LIAAtAAQgAS0ABEcEQCACQQRyDwsgAC0ABSABLQAFRwRAIAJBBXIPCyAALQAGIAEtAAZHBEAgAkEGcg8LIAAtAAcgAS0AB0cEQCACQQdyDwsgAUEIaiEBIABBCGohACACQfgBSSEDIAJBCGohAiADDQALQYACIQILIAIL5wwBB38gAEF/cyEAIAJBF08EQAJAIAFBA3FFDQAgAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAkEBayIEQQAgAUEBaiIDQQNxG0UEQCAEIQIgAyEBDAELIAEtAAEgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohAwJAIAJBAmsiBEUNACADQQNxRQ0AIAEtAAIgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBA2ohAwJAIAJBA2siBEUNACADQQNxRQ0AIAEtAAMgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBBGohASACQQRrIQIMAgsgBCECIAMhAQwBCyAEIQIgAyEBCyACQRRuIgNBbGwhCQJAIANBAWsiCEUEQEEAIQQMAQsgA0EUbCABakEUayEDQQAhBANAIAEoAhAgB3MiB0EWdkH8B3FB0DhqKAIAIAdBDnZB/AdxQdAwaigCACAHQQZ2QfwHcUHQKGooAgAgB0H/AXFBAnRB0CBqKAIAc3NzIQcgASgCDCAGcyIGQRZ2QfwHcUHQOGooAgAgBkEOdkH8B3FB0DBqKAIAIAZBBnZB/AdxQdAoaigCACAGQf8BcUECdEHQIGooAgBzc3MhBiABKAIIIAVzIgVBFnZB/AdxQdA4aigCACAFQQ52QfwHcUHQMGooAgAgBUEGdkH8B3FB0ChqKAIAIAVB/wFxQQJ0QdAgaigCAHNzcyEFIAEoAgQgBHMiBEEWdkH8B3FB0DhqKAIAIARBDnZB/AdxQdAwaigCACAEQQZ2QfwHcUHQKGooAgAgBEH/AXFBAnRB0CBqKAIAc3NzIQQgASgCACAAcyIAQRZ2QfwHcUHQOGooAgAgAEEOdkH8B3FB0DBqKAIAIABBBnZB/AdxQdAoaigCACAAQf8BcUECdEHQIGooAgBzc3MhACABQRRqIQEgCEEBayIIDQALIAMhAQsgAiAJaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACAAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgBHNzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBB/wFxQQJ0QdAYaigCACAFc3MgAEEIdnMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEH/AXFBAnRB0BhqKAIAIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyEAIAFBFGohAQsgAkEHSwRAA0AgAS0AByABLQAGIAEtAAUgAS0ABCABLQADIAEtAAIgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACACQQFxBH8gAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAUEBaiEBIAJBAWsFIAILIQMgAkEBRg0AA0AgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohASADQQJrIgMNAAsLIABBf3MLwgIBA38jAEEQayIIJAACfwJAIAAEQCAEDQEgBVANAQsgBgRAIAZBADYCBCAGQRI2AgALQQAMAQtBgAEQCSIHRQRAIAYEQCAGQQA2AgQgBkEONgIAC0EADAELIAcgATcDCCAHQgA3AwAgB0EoaiIJECogByAFNwMYIAcgBDYCECAHIAM6AGAgB0EANgJsIAdCADcCZCAAKQMYIQEgCEF/NgIIIAhCjoCAgPAANwMAIAdBECAIECQgAUL/gQGDhCIBNwNwIAcgAadBBnZBAXE6AHgCQCACRQ0AIAkgAhBgQX9KDQAgBxAGQQAMAQsgBhBfIgIEQCAAIAAoAjBBAWo2AjAgAiAHNgIIIAJBATYCBCACIAA2AgAgAkI/IAAgB0EAQgBBDkEBEQoAIgEgAUIAUxs3AxgLIAILIQAgCEEQaiQAIAALYgEBf0E4EAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAFBADYCCCABQgA3AwAgAUIANwMgIAFCgICAgBA3AiwgAUEAOgAoIAFBADYCFCABQgA3AgwgAUEAOwE0IAELuwEBAX4gASkDACICQgKDUEUEQCAAIAEpAxA3AxALIAJCBINQRQRAIAAgASkDGDcDGAsgAkIIg1BFBEAgACABKQMgNwMgCyACQhCDUEUEQCAAIAEoAig2AigLIAJCIINQRQRAIAAgASgCLDYCLAsgAkLAAINQRQRAIAAgAS8BMDsBMAsgAkKAAYNQRQRAIAAgAS8BMjsBMgsgAkKAAoNQRQRAIAAgASgCNDYCNAsgACAAKQMAIAKENwMAQQALGQAgAUUEQEEADwsgACABKAIAIAEzAQQQGws3AQJ/IABBACABG0UEQCAAIAFGDwsgAC8BBCIDIAEvAQRGBH8gACgCACABKAIAIAMQPQVBAQtFCyIBAX8gAUUEQEEADwsgARAJIgJFBEBBAA8LIAIgACABEAcLKQAgACABIAIgAyAEEEUiAEUEQEEADwsgACACQQAgBBA1IQEgABAGIAELcQEBfgJ/AkAgAkJ/VwRAIAMEQCADQQA2AgQgA0EUNgIACwwBCyAAIAEgAhARIgRCf1cEQCADBEAgAyAAKAIMNgIAIAMgACgCEDYCBAsMAQtBACACIARXDQEaIAMEQCADQQA2AgQgA0ERNgIACwtBfwsLNQAgACABIAJBABAmIgBFBEBBfw8LIAMEQCADIAAtAAk6AAALIAQEQCAEIAAoAkQ2AgALQQAL/AECAn8BfiMAQRBrIgMkAAJAIAAgA0EOaiABQYAGQQAQRiIARQRAIAIhAAwBCyADLwEOIgFBBUkEQCACIQAMAQsgAC0AAEEBRwRAIAIhAAwBCyAAIAGtQv//A4MQFyIBRQRAIAIhAAwBCyABEH0aAkAgARAVIAIEfwJ/IAIvAQQhAEEAIAIoAgAiBEUNABpBACAEIABB1IABKAIAEQAACwVBAAtHBEAgAiEADAELIAEgAS0AAAR+IAEpAwggASkDEH0FQgALIgVC//8DgxATIAWnQf//A3FBgBBBABA1IgBFBEAgAiEADAELIAIQEAsgARAICyADQRBqJAAgAAvmDwIIfwJ+IwBB4ABrIgckAEEeQS4gAxshCwJAAkAgAgRAIAIiBSIGLQAABH4gBikDCCAGKQMQfQVCAAsgC61aDQEgBARAIARBADYCBCAEQRM2AgALQn8hDQwCCyABIAutIAcgBBAtIgUNAEJ/IQ0MAQsgBUIEEBMoAABBoxJBqBIgAxsoAABHBEAgBARAIARBADYCBCAEQRM2AgALQn8hDSACDQEgBRAIDAELIABCADcDICAAQQA2AhggAEL/////DzcDECAAQQA7AQwgAEG/hig2AgggAEEBOgAGIABBADsBBCAAQQA2AgAgAEIANwNIIABBgIDYjXg2AkQgAEIANwMoIABCADcDMCAAQgA3AzggAEFAa0EAOwEAIABCADcDUCAAIAMEf0EABSAFEAwLOwEIIAAgBRAMOwEKIAAgBRAMOwEMIAAgBRAMNgIQIAUQDCEGIAUQDCEJIAdBADYCWCAHQgA3A1AgB0IANwNIIAcgCUEfcTYCPCAHIAZBC3Y2AjggByAGQQV2QT9xNgI0IAcgBkEBdEE+cTYCMCAHIAlBCXZB0ABqNgJEIAcgCUEFdkEPcUEBazYCQCAAIAdBMGoQBTYCFCAAIAUQFTYCGCAAIAUQFa03AyAgACAFEBWtNwMoIAUQDCEIIAUQDCEGIAACfiADBEBBACEJIABBADYCRCAAQQA7AUAgAEEANgI8QgAMAQsgBRAMIQkgACAFEAw2AjwgACAFEAw7AUAgACAFEBU2AkQgBRAVrQs3A0ggBS0AAEUEQCAEBEAgBEEANgIEIARBFDYCAAtCfyENIAINASAFEAgMAQsCQCAALwEMIgpBAXEEQCAKQcAAcQRAIABB//8DOwFSDAILIABBATsBUgwBCyAAQQA7AVILIABBADYCOCAAQgA3AzAgBiAIaiAJaiEKAkAgAgRAIAUtAAAEfiAFKQMIIAUpAxB9BUIACyAKrVoNASAEBEAgBEEANgIEIARBFTYCAAtCfyENDAILIAUQCCABIAqtQQAgBBAtIgUNAEJ/IQ0MAQsCQCAIRQ0AIAAgBSABIAhBASAEEGQiCDYCMCAIRQRAIAQoAgBBEUYEQCAEBEAgBEEANgIEIARBFTYCAAsLQn8hDSACDQIgBRAIDAILIAAtAA1BCHFFDQAgCEECECNBBUcNACAEBEAgBEEANgIEIARBFTYCAAtCfyENIAINASAFEAgMAQsgAEE0aiEIAkAgBkUNACAFIAEgBkEAIAQQRSIMRQRAQn8hDSACDQIgBRAIDAILIAwgBkGAAkGABCADGyAIIAQQbiEGIAwQBiAGRQRAQn8hDSACDQIgBRAIDAILIANFDQAgAEEBOgAECwJAIAlFDQAgACAFIAEgCUEAIAQQZCIBNgI4IAFFBEBCfyENIAINAiAFEAgMAgsgAC0ADUEIcUUNACABQQIQI0EFRw0AIAQEQCAEQQA2AgQgBEEVNgIAC0J/IQ0gAg0BIAUQCAwBCyAAIAAoAjRB9eABIAAoAjAQZzYCMCAAIAAoAjRB9cYBIAAoAjgQZzYCOAJAAkAgACkDKEL/////D1ENACAAKQMgQv////8PUQ0AIAApA0hC/////w9SDQELAkACQAJAIAgoAgAgB0EwakEBQYACQYAEIAMbIAQQRiIBRQRAIAJFDQEMAgsgASAHMwEwEBciAUUEQCAEBEAgBEEANgIEIARBDjYCAAsgAkUNAQwCCwJAIAApAyhC/////w9RBEAgACABEB03AygMAQsgA0UNAEEAIQYCQCABKQMQIg5CCHwiDSAOVA0AIAEpAwggDVQNACABIA03AxBBASEGCyABIAY6AAALIAApAyBC/////w9RBEAgACABEB03AyALAkAgAw0AIAApA0hC/////w9RBEAgACABEB03A0gLIAAoAjxB//8DRw0AIAAgARAVNgI8CyABLQAABH8gASkDECABKQMIUQVBAAsNAiAEBEAgBEEANgIEIARBFTYCAAsgARAIIAINAQsgBRAIC0J/IQ0MAgsgARAICyAFLQAARQRAIAQEQCAEQQA2AgQgBEEUNgIAC0J/IQ0gAg0BIAUQCAwBCyACRQRAIAUQCAtCfyENIAApA0hCf1cEQCAEBEAgBEEWNgIEIARBBDYCAAsMAQsjAEEQayIDJABBASEBAkAgACgCEEHjAEcNAEEAIQECQCAAKAI0IANBDmpBgbICQYAGQQAQRiICBEAgAy8BDiIFQQZLDQELIAQEQCAEQQA2AgQgBEEVNgIACwwBCyACIAWtQv//A4MQFyICRQRAIAQEQCAEQQA2AgQgBEEUNgIACwwBC0EBIQECQAJAAkAgAhAMQQFrDgICAQALQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAILIAApAyhCE1YhAQsgAkICEBMvAABBwYoBRwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAIQfUEBayIFQf8BcUEDTwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAMvAQ5BB0cEQEEAIQEgBARAIARBADYCBCAEQRU2AgALIAIQCAwBCyAAIAE6AAYgACAFQf8BcUGBAmo7AVIgACACEAw2AhAgAhAIQQEhAQsgA0EQaiQAIAFFDQAgCCAIKAIAEG02AgAgCiALaq0hDQsgB0HgAGokACANC4ECAQR/IwBBEGsiBCQAAkAgASAEQQxqQcAAQQAQJSIGRQ0AIAQoAgxBBWoiA0GAgARPBEAgAgRAIAJBADYCBCACQRI2AgALDAELQQAgA60QFyIDRQRAIAIEQCACQQA2AgQgAkEONgIACwwBCyADQQEQcCADIAEEfwJ/IAEvAQQhBUEAIAEoAgAiAUUNABpBACABIAVB1IABKAIAEQAACwVBAAsQEiADIAYgBCgCDBAsAn8gAy0AAEUEQCACBEAgAkEANgIEIAJBFDYCAAtBAAwBCyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwDCwJAAkBBEBAJIgUEQCAFIAY7AQogBSAHOwEIIAUgAjYCBCAFQQA2AgAgBkUNASAFIAggBhBjIgY2AgwgBg0CIAUQBgtBACECIAQEQCAEQQA2AgQgBEEONgIACyABEAggAEUNBANAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwECyAFQQA2AgwLAkAgAEUEQCAFIQAMAQsgCSAFNgIACyAFIQkgAS0AAA0ACwsCQCABLQAABH8gASkDECABKQMIUQVBAAsNACABIAEtAAAEfiABKQMIIAEpAxB9BUIACyIKQv////8PgxATIQICQCAKpyIFQQNLDQAgAkUNACACQcEUIAUQPUUNAQtBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAQNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwBCyABEAggAwRAIAMgADYCAEEBDwtBASECIABFDQADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLIAILvgEBBX8gAAR/IAAhAgNAIAIiBCgCACICDQALIAEEQANAIAEiAy8BCCEGIAMoAgAhASAAIQICQAJAA0ACQCACLwEIIAZHDQAgAi8BCiIFIAMvAQpHDQAgBUUNAiACKAIMIAMoAgwgBRA9RQ0CCyACKAIAIgINAAsgA0EANgIAIAQgAzYCACADIQQMAQsgAiACKAIEIAMoAgRBgAZxcjYCBCADQQA2AgAgAygCDBAGIAMQBgsgAQ0ACwsgAAUgAQsLVQICfgF/AkACQCAALQAARQ0AIAApAxAiAkIBfCIDIAJUDQAgAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2ogAToAAAt9AQN/IwBBEGsiAiQAIAIgATYCDEF/IQMCQCAALQAoDQACQCAAKAIAIgRFDQAgBCABEHFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQsgACACQQxqQgRBExAOQj+HpyEDCyACQRBqJAAgAwvdAQEDfyABIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8PCyAAQQhqIQIgAC0AGEECcQRAIAIEQCACQQA2AgQgAkEZNgIAC0F/DwtBfyEDAkAgACABQQAgAhBTIgRFDQAgACgCUCAEIAIQfkUNAAJ/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfwwBCyABp0EEdCICIAAoAkBqKAIEECAgACgCQCACaiICQQA2AgQgAhBAQQALDQAgACgCQCABp0EEdGpBAToADEEAIQMLIAMLpgIBBX9BfyEFAkAgACABQQBBABAmRQ0AIAAtABhBAnEEQCAAQQhqIgAEQCAAQQA2AgQgAEEZNgIAC0F/DwsCfyAAKAJAIgQgAaciBkEEdGooAgAiBUUEQCADQYCA2I14RyEHQQMMAQsgBSgCRCADRyEHIAUtAAkLIQggBCAGQQR0aiIEIQYgBCgCBCEEQQAgAiAIRiAHG0UEQAJAIAQNACAGIAUQKyIENgIEIAQNACAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0F/DwsgBCADNgJEIAQgAjoACSAEIAQoAgBBEHI2AgBBAA8LQQAhBSAERQ0AIAQgBCgCAEFvcSIANgIAIABFBEAgBBAgIAZBADYCBEEADwsgBCADNgJEIAQgCDoACQsgBQvjCAIFfwR+IAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtCfw8LIAApAzAhCwJAIANBgMAAcQRAIAAgASADQQAQTCIJQn9SDQELAn4CQAJAIAApAzAiCUIBfCIMIAApAzgiClQEQCAAKAJAIQQMAQsgCkIBhiIJQoAIIAlCgAhUGyIJQhAgCUIQVhsgCnwiCadBBHQiBK0gCkIEhkLw////D4NUDQEgACgCQCAEEDQiBEUNASAAIAk3AzggACAENgJAIAApAzAiCUIBfCEMCyAAIAw3AzAgBCAJp0EEdGoiBEIANwIAIARCADcABSAJDAELIABBCGoEQCAAQQA2AgwgAEEONgIIC0J/CyIJQgBZDQBCfw8LAkAgAUUNAAJ/QQAhBCAJIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELAkAgAUUNACABLQAARQ0AQX8gASABECJB//8DcSADIABBCGoQNSIERQ0BGiADQYAwcQ0AIARBABAjQQNHDQAgBEECNgIICwJAIAAgAUEAQQAQTCIKQgBTIgENACAJIApRDQAgBBAQIABBCGoEQCAAQQA2AgwgAEEKNgIIC0F/DAELAkAgAUEBIAkgClEbRQ0AAkACfwJAIAAoAkAiASAJpyIFQQR0aiIGKAIAIgMEQCADKAIwIAQQYg0BCyAEIAYoAgQNARogBiAGKAIAECsiAzYCBCAEIAMNARogAEEIagRAIABBADYCDCAAQQ42AggLDAILQQEhByAGKAIAKAIwC0EAQQAgAEEIaiIDECUiCEUNAAJAAkAgASAFQQR0aiIFKAIEIgENACAGKAIAIgENAEEAIQEMAQsgASgCMCIBRQRAQQAhAQwBCyABQQBBACADECUiAUUNAQsgACgCUCAIIAlBACADEE1FDQAgAQRAIAAoAlAgAUEAEH4aCyAFKAIEIQMgBwRAIANFDQIgAy0AAEECcUUNAiADKAIwEBAgBSgCBCIBIAEoAgBBfXEiAzYCACADRQRAIAEQICAFQQA2AgQgBBAQQQAMBAsgASAGKAIAKAIwNgIwIAQQEEEADAMLIAMoAgAiAUECcQRAIAMoAjAQECAFKAIEIgMoAgAhAQsgAyAENgIwIAMgAUECcjYCAEEADAILIAQQEEF/DAELIAQQEEEAC0UNACALIAApAzBRBEBCfw8LIAAoAkAgCadBBHRqED4gACALNwMwQn8PCyAJpyIGQQR0IgEgACgCQGoQQAJAAkAgACgCQCIEIAFqIgMoAgAiBUUNAAJAIAMoAgQiAwRAIAMoAgAiAEEBcUUNAQwCCyAFECshAyAAKAJAIgQgBkEEdGogAzYCBCADRQ0CIAMoAgAhAAsgA0F+NgIQIAMgAEEBcjYCAAsgASAEaiACNgIIIAkPCyAAQQhqBEAgAEEANgIMIABBDjYCCAtCfwteAQF/IwBBEGsiAiQAAn8gACgCJEEBRwRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQX8MAQsgAkEANgIIIAIgATcDACAAIAJCEEEMEA5CP4enCyEAIAJBEGokACAAC9oDAQZ/IwBBEGsiBSQAIAUgAjYCDCMAQaABayIEJAAgBEEIakHA8ABBkAEQBxogBCAANgI0IAQgADYCHCAEQX4gAGsiA0H/////ByADQf////8HSRsiBjYCOCAEIAAgBmoiADYCJCAEIAA2AhggBEEIaiEAIwBB0AFrIgMkACADIAI2AswBIANBoAFqQQBBKBAZIAMgAygCzAE2AsgBAkBBACABIANByAFqIANB0ABqIANBoAFqEEpBAEgNACAAKAJMQQBOIQcgACgCACECIAAsAEpBAEwEQCAAIAJBX3E2AgALIAJBIHEhCAJ/IAAoAjAEQCAAIAEgA0HIAWogA0HQAGogA0GgAWoQSgwBCyAAQdAANgIwIAAgA0HQAGo2AhAgACADNgIcIAAgAzYCFCAAKAIsIQIgACADNgIsIAAgASADQcgBaiADQdAAaiADQaABahBKIAJFDQAaIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAI2AiwgAEEANgIcIABBADYCECAAKAIUGiAAQQA2AhRBAAsaIAAgACgCACAIcjYCACAHRQ0ACyADQdABaiQAIAYEQCAEKAIcIgAgACAEKAIYRmtBADoAAAsgBEGgAWokACAFQRBqJAALUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEAEQcACwubAgAgAEUEQEEADwsCfwJAIAAEfyABQf8ATQ0BAkBB9IIBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDAQLIAFBgLADT0EAIAFBgEBxQYDAA0cbRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQYSEAUEZNgIAQX8FQQELDAELIAAgAToAAEEBCwvjAQECfyACQQBHIQMCQAJAAkAgAEEDcUUNACACRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAkEBayICQQBHIQMgAEEBaiIAQQNxRQ0BIAINAAsLIANFDQELAkAgAC0AACABQf8BcUYNACACQQRJDQAgAUH/AXFBgYKECGwhAwNAIAAoAgAgA3MiBEF/cyAEQYGChAhrcUGAgYKEeHENASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0AIAFB/wFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQALeQEBfAJAIABFDQAgACsDECAAKwMgIgIgAUQAAAAAAAAAACABRAAAAAAAAAAAZBsiAUQAAAAAAADwPyABRAAAAAAAAPA/YxsgACsDKCACoaKgIgEgACsDGKFjRQ0AIAAoAgAgASAAKAIMIAAoAgQRDgAgACABOQMYCwtIAQF8AkAgAEUNACAAKwMQIAArAyAiASAAKwMoIAGhoCIBIAArAxihY0UNACAAKAIAIAEgACgCDCAAKAIEEQ4AIAAgATkDGAsLWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC4IEAgZ/AX4gAEEAIAEbRQRAIAIEQCACQQA2AgQgAkESNgIAC0EADwsCQAJAIAApAwhQDQAgACgCECABLQAAIgQEf0Kl6wohCSABIQMDQCAJIAStQv8Bg3whCSADLQABIgQEQCADQQFqIQMgCUL/////D4NCIX4hCQwBCwsgCacFQYUqCyIEIAAoAgBwQQJ0aiIGKAIAIgNFDQADQAJAIAMoAhwgBEcNACABIAMoAgAQOA0AAkAgAykDCEJ/UQRAIAMoAhghAQJAIAUEQCAFIAE2AhgMAQsgBiABNgIACyADEAYgACAAKQMIQgF9Igk3AwggCbogACgCACIBuER7FK5H4XqEP6JjRQ0BIAFBgQJJDQECf0EAIQMgACgCACIGIAFBAXYiBUcEQCAFEDwiB0UEQCACBEAgAkEANgIEIAJBDjYCAAtBAAwCCwJAIAApAwhCACAGG1AEQCAAKAIQIQQMAQsgACgCECEEA0AgBCADQQJ0aigCACIBBEADQCABKAIYIQIgASAHIAEoAhwgBXBBAnRqIggoAgA2AhggCCABNgIAIAIiAQ0ACwsgA0EBaiIDIAZHDQALCyAEEAYgACAFNgIAIAAgBzYCEAtBAQsNAQwFCyADQn83AxALQQEPCyADIgUoAhgiAw0ACwsgAgRAIAJBADYCBCACQQk2AgALC0EAC6UGAgl/AX4jAEHwAGsiBSQAAkACQCAARQ0AAkAgAQRAIAEpAzAgAlYNAQtBACEDIABBCGoEQCAAQQA2AgwgAEESNgIICwwCCwJAIANBCHENACABKAJAIAKnQQR0aiIGKAIIRQRAIAYtAAxFDQELQQAhAyAAQQhqBEAgAEEANgIMIABBDzYCCAsMAgsgASACIANBCHIgBUE4ahCKAUF/TARAQQAhAyAAQQhqBEAgAEEANgIMIABBFDYCCAsMAgsgA0EDdkEEcSADciIGQQRxIQcgBSkDUCEOIAUvAWghCQJAIANBIHFFIAUvAWpBAEdxIgtFDQAgBA0AIAAoAhwiBA0AQQAhAyAAQQhqBEAgAEEANgIMIABBGjYCCAsMAgsgBSkDWFAEQCAAQQBCAEEAEFIhAwwCCwJAIAdFIgwgCUEAR3EiDUEBckUEQEEAIQMgBUEAOwEwIAUgDjcDICAFIA43AxggBSAFKAJgNgIoIAVC3AA3AwAgASgCACAOIAVBACABIAIgAEEIahBeIgYNAQwDC0EAIQMgASACIAYgAEEIaiIGECYiB0UNAiABKAIAIAUpA1ggBUE4aiAHLwEMQQF2QQNxIAEgAiAGEF4iBkUNAgsCfyAGIAE2AiwCQCABKAJEIghBAWoiCiABKAJIIgdJBEAgASgCTCEHDAELIAEoAkwgB0EKaiIIQQJ0EDQiB0UEQCABQQhqBEAgAUEANgIMIAFBDjYCCAtBfwwCCyABIAc2AkwgASAINgJIIAEoAkQiCEEBaiEKCyABIAo2AkQgByAIQQJ0aiAGNgIAQQALQX9MBEAgBhALDAELAkAgC0UEQCAGIQEMAQtBJkEAIAUvAWpBAUYbIgFFBEAgAEEIagRAIABBADYCDCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/IAFFBEAgAEEIaiIABEAgAEEANgIEIABBEjYCAAtBAA8LQTgQCSIDRQRAIABBCGoiAARAIABBADYCBCAAQQ42AgALQQAPCyADQQA2AhAgA0IANwIIIANCADcDKCADQQA2AgQgAyACNgIAIANCADcDGCADQQA2AjAgACABQTsgAxBCCw8AIAAgASACQQBBABCCAQusAgECfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPCwJAIAJBfUsNACACQf//A3FBCEYNACAAQQhqIgAEQCAAQQA2AgQgAEEQNgIAC0EADwsCQEGwwAAQCSIFBEAgBUEANgIIIAVCADcCACAFQYiBAUGogQEgAxs2AqhAIAUgAjYCFCAFIAM6ABAgBUEAOgAPIAVBADsBDCAFIAMgAkF9SyIGcToADiAFQQggAiAGG0H//wNxIAQgBUGIgQFBqIEBIAMbKAIAEQAAIgI2AqxAIAINASAFEDEgBRAGCyAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgACABQTogBRBCIgAEfyAABSAFKAKsQCAFKAKoQCgCBBEDACAFEDEgBRAGQQALC6ABAQF/IAIgACgCBCIDIAIgA0kbIgIEQCAAIAMgAms2AgQCQAJAAkACQCAAKAIcIgMoAhRBAWsOAgEAAgsgA0GgAWogASAAKAIAIAJB3IABKAIAEQgADAILIAAgACgCMCABIAAoAgAgAkHEgAEoAgARBAA2AjAMAQsgASAAKAIAIAIQBxoLIAAgACgCACACajYCACAAIAAoAgggAmo2AggLC7cCAQR/QX4hAgJAIABFDQAgACgCIEUNACAAKAIkIgRFDQAgACgCHCIBRQ0AIAEoAgAgAEcNAAJAAkAgASgCICIDQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyADQZoFRg0AIANBKkcNAQsCfwJ/An8gASgCBCICBEAgBCAAKAIoIAIQHiAAKAIcIQELIAEoAlAiAgsEQCAAKAIkIAAoAiggAhAeIAAoAhwhAQsgASgCTCICCwRAIAAoAiQgACgCKCACEB4gACgCHCEBCyABKAJIIgILBEAgACgCJCAAKAIoIAIQHiAAKAIcIQELIAAoAiQgACgCKCABEB4gAEEANgIcQX1BACADQfEARhshAgsgAgvrCQEIfyAAKAIwIgMgACgCDEEFayICIAIgA0sbIQggACgCACIEKAIEIQkgAUEERiEHAkADQCAEKAIQIgMgACgCoC5BKmpBA3UiAkkEQEEBIQYMAgsgCCADIAJrIgMgACgCaCAAKAJYayICIAQoAgRqIgVB//8DIAVB//8DSRsiBiADIAZJGyIDSwRAQQEhBiADQQBHIAdyRQ0CIAFFDQIgAyAFRw0CCyAAQQBBACAHIAMgBUZxIgUQOSAAIAAoAhBBBGsiBDYCECAAKAIEIARqIAM7AAAgACAAKAIQQQJqIgQ2AhAgACgCBCAEaiADQX9zOwAAIAAgACgCEEECajYCECAAKAIAEAoCfyACBEAgACgCACgCDCAAKAJIIAAoAlhqIAMgAiACIANLGyICEAcaIAAoAgAiBCAEKAIMIAJqNgIMIAQgBCgCECACazYCECAEIAQoAhQgAmo2AhQgACAAKAJYIAJqNgJYIAMgAmshAwsgAwsEQCAAKAIAIgIgAigCDCADEIMBIAAoAgAiAiACKAIMIANqNgIMIAIgAigCECADazYCECACIAIoAhQgA2o2AhQLIAAoAgAhBCAFRQ0AC0EAIQYLAkAgCSAEKAIEayICRQRAIAAoAmghAwwBCwJAIAAoAjAiAyACTQRAIABBAjYCgC4gACgCSCAEKAIAIANrIAMQBxogACAAKAIwIgM2AoQuIAAgAzYCaAwBCyACIAAoAkQgACgCaCIFa08EQCAAIAUgA2siBDYCaCAAKAJIIgUgAyAFaiAEEAcaIAAoAoAuIgNBAU0EQCAAIANBAWo2AoAuCyAAIAAoAmgiBSAAKAKELiIDIAMgBUsbNgKELiAAKAIAIQQLIAAoAkggBWogBCgCACACayACEAcaIAAgACgCaCACaiIDNgJoIAAgACgCMCAAKAKELiIEayIFIAIgAiAFSxsgBGo2AoQuCyAAIAM2AlgLIAAgAyAAKAJAIgIgAiADSRs2AkBBAyECAkAgBkUNACAAKAIAIgUoAgQhAgJAAkAgAUF7cUUNACACDQBBASECIAMgACgCWEYNAiAAKAJEIANrIQRBACECDAELIAIgACgCRCADayIETQ0AIAAoAlgiByAAKAIwIgZIDQAgACADIAZrIgM2AmggACAHIAZrNgJYIAAoAkgiAiACIAZqIAMQBxogACgCgC4iA0EBTQRAIAAgA0EBajYCgC4LIAAgACgCaCIDIAAoAoQuIgIgAiADSxs2AoQuIAAoAjAgBGohBCAAKAIAIgUoAgQhAgsCQCACIAQgAiAESRsiAkUEQCAAKAIwIQUMAQsgBSAAKAJIIANqIAIQgwEgACAAKAJoIAJqIgM2AmggACAAKAIwIgUgACgChC4iBGsiBiACIAIgBksbIARqNgKELgsgACADIAAoAkAiAiACIANJGzYCQCADIAAoAlgiBmsiAyAFIAAoAgwgACgCoC5BKmpBA3VrIgJB//8DIAJB//8DSRsiBCAEIAVLG0kEQEEAIQIgAUEERiADQQBHckUNASABRQ0BIAAoAgAoAgQNASADIARLDQELQQAhAiABQQRGBEAgACgCACgCBEUgAyAETXEhAgsgACAAKAJIIAZqIAQgAyADIARLGyIBIAIQOSAAIAAoAlggAWo2AlggACgCABAKQQJBACACGw8LIAIL/woCCn8DfiAAKQOYLiENIAAoAqAuIQQgAkEATgRAQQRBAyABLwECIggbIQlBB0GKASAIGyEFQX8hCgNAIAghByABIAsiDEEBaiILQQJ0ai8BAiEIAkACQCAGQQFqIgMgBU4NACAHIAhHDQAgAyEGDAELAkAgAyAJSARAIAAgB0ECdGoiBkHOFWohCSAGQcwVaiEKA0AgCjMBACEPAn8gBCAJLwEAIgZqIgVBP00EQCAPIASthiANhCENIAUMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIA03AAAgACAAKAIQQQhqNgIQIA8hDSAGDAELIAAoAgQgACgCEGogDyAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIA9BwAAgBGutiCENIAVBQGoLIQQgA0EBayIDDQALDAELIAcEQAJAIAcgCkYEQCANIQ8gBCEFIAMhBgwBCyAAIAdBAnRqIgNBzBVqMwEAIQ8gBCADQc4Vai8BACIDaiIFQT9NBEAgDyAErYYgDYQhDwwBCyAEQcAARgRAIAAoAgQgACgCEGogDTcAACAAIAAoAhBBCGo2AhAgAyEFDAELIAAoAgQgACgCEGogDyAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIAVBQGohBSAPQcAAIARrrYghDwsgADMBjBYhDgJAIAUgAC8BjhYiBGoiA0E/TQRAIA4gBa2GIA+EIQ4MAQsgBUHAAEYEQCAAKAIEIAAoAhBqIA83AAAgACAAKAIQQQhqNgIQIAQhAwwBCyAAKAIEIAAoAhBqIA4gBa2GIA+ENwAAIAAgACgCEEEIajYCECADQUBqIQMgDkHAACAFa62IIQ4LIAasQgN9IQ0gA0E9TQRAIANBAmohBCANIAOthiAOhCENDAILIANBwABGBEAgACgCBCAAKAIQaiAONwAAIAAgACgCEEEIajYCEEECIQQMAgsgACgCBCAAKAIQaiANIAOthiAOhDcAACAAIAAoAhBBCGo2AhAgA0E+ayEEIA1BwAAgA2utiCENDAELIAZBCUwEQCAAMwGQFiEOAkAgBCAALwGSFiIFaiIDQT9NBEAgDiAErYYgDYQhDgwBCyAEQcAARgRAIAAoAgQgACgCEGogDTcAACAAIAAoAhBBCGo2AhAgBSEDDAELIAAoAgQgACgCEGogDiAErYYgDYQ3AAAgACAAKAIQQQhqNgIQIANBQGohAyAOQcAAIARrrYghDgsgBqxCAn0hDSADQTxNBEAgA0EDaiEEIA0gA62GIA6EIQ0MAgsgA0HAAEYEQCAAKAIEIAAoAhBqIA43AAAgACAAKAIQQQhqNgIQQQMhBAwCCyAAKAIEIAAoAhBqIA0gA62GIA6ENwAAIAAgACgCEEEIajYCECADQT1rIQQgDUHAACADa62IIQ0MAQsgADMBlBYhDgJAIAQgAC8BlhYiBWoiA0E/TQRAIA4gBK2GIA2EIQ4MAQsgBEHAAEYEQCAAKAIEIAAoAhBqIA03AAAgACAAKAIQQQhqNgIQIAUhAwwBCyAAKAIEIAAoAhBqIA4gBK2GIA2ENwAAIAAgACgCEEEIajYCECADQUBqIQMgDkHAACAEa62IIQ4LIAatQgp9IQ0gA0E4TQRAIANBB2ohBCANIAOthiAOhCENDAELIANBwABGBEAgACgCBCAAKAIQaiAONwAAIAAgACgCEEEIajYCEEEHIQQMAQsgACgCBCAAKAIQaiANIAOthiAOhDcAACAAIAAoAhBBCGo2AhAgA0E5ayEEIA1BwAAgA2utiCENC0EAIQYCfyAIRQRAQYoBIQVBAwwBC0EGQQcgByAIRiIDGyEFQQNBBCADGwshCSAHIQoLIAIgDEcNAAsLIAAgBDYCoC4gACANNwOYLgv5BQIIfwJ+AkAgACgC8C1FBEAgACkDmC4hCyAAKAKgLiEDDAELA0AgCSIDQQNqIQkgAyAAKALsLWoiAy0AAiEFIAApA5guIQwgACgCoC4hBAJAIAMvAAAiB0UEQCABIAVBAnRqIgMzAQAhCyAEIAMvAQIiBWoiA0E/TQRAIAsgBK2GIAyEIQsMAgsgBEHAAEYEQCAAKAIEIAAoAhBqIAw3AAAgACAAKAIQQQhqNgIQIAUhAwwCCyAAKAIEIAAoAhBqIAsgBK2GIAyENwAAIAAgACgCEEEIajYCECADQUBqIQMgC0HAACAEa62IIQsMAQsgBUGAzwBqLQAAIghBAnQiBiABaiIDQYQIajMBACELIANBhghqLwEAIQMgCEEIa0ETTQRAIAUgBkGA0QBqKAIAa60gA62GIAuEIQsgBkHA0wBqKAIAIANqIQMLIAMgAiAHQQFrIgcgB0EHdkGAAmogB0GAAkkbQYDLAGotAAAiBUECdCIIaiIKLwECaiEGIAozAQAgA62GIAuEIQsgBCAFQQRJBH8gBgUgByAIQYDSAGooAgBrrSAGrYYgC4QhCyAIQcDUAGooAgAgBmoLIgVqIgNBP00EQCALIASthiAMhCELDAELIARBwABGBEAgACgCBCAAKAIQaiAMNwAAIAAgACgCEEEIajYCECAFIQMMAQsgACgCBCAAKAIQaiALIASthiAMhDcAACAAIAAoAhBBCGo2AhAgA0FAaiEDIAtBwAAgBGutiCELCyAAIAs3A5guIAAgAzYCoC4gCSAAKALwLUkNAAsLIAFBgAhqMwEAIQwCQCADIAFBgghqLwEAIgJqIgFBP00EQCAMIAOthiALhCEMDAELIANBwABGBEAgACgCBCAAKAIQaiALNwAAIAAgACgCEEEIajYCECACIQEMAQsgACgCBCAAKAIQaiAMIAOthiALhDcAACAAIAAoAhBBCGo2AhAgAUFAaiEBIAxBwAAgA2utiCEMCyAAIAw3A5guIAAgATYCoC4L8AQBA38gAEHkAWohAgNAIAIgAUECdCIDakEAOwEAIAIgA0EEcmpBADsBACABQQJqIgFBngJHDQALIABBADsBzBUgAEEAOwHYEyAAQZQWakEAOwEAIABBkBZqQQA7AQAgAEGMFmpBADsBACAAQYgWakEAOwEAIABBhBZqQQA7AQAgAEGAFmpBADsBACAAQfwVakEAOwEAIABB+BVqQQA7AQAgAEH0FWpBADsBACAAQfAVakEAOwEAIABB7BVqQQA7AQAgAEHoFWpBADsBACAAQeQVakEAOwEAIABB4BVqQQA7AQAgAEHcFWpBADsBACAAQdgVakEAOwEAIABB1BVqQQA7AQAgAEHQFWpBADsBACAAQcwUakEAOwEAIABByBRqQQA7AQAgAEHEFGpBADsBACAAQcAUakEAOwEAIABBvBRqQQA7AQAgAEG4FGpBADsBACAAQbQUakEAOwEAIABBsBRqQQA7AQAgAEGsFGpBADsBACAAQagUakEAOwEAIABBpBRqQQA7AQAgAEGgFGpBADsBACAAQZwUakEAOwEAIABBmBRqQQA7AQAgAEGUFGpBADsBACAAQZAUakEAOwEAIABBjBRqQQA7AQAgAEGIFGpBADsBACAAQYQUakEAOwEAIABBgBRqQQA7AQAgAEH8E2pBADsBACAAQfgTakEAOwEAIABB9BNqQQA7AQAgAEHwE2pBADsBACAAQewTakEAOwEAIABB6BNqQQA7AQAgAEHkE2pBADsBACAAQeATakEAOwEAIABB3BNqQQA7AQAgAEIANwL8LSAAQeQJakEBOwEAIABBADYC+C0gAEEANgLwLQuKAwIGfwR+QcgAEAkiBEUEQEEADwsgBEIANwMAIARCADcDMCAEQQA2AiggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIIARCADcDOCABUARAIARBCBAJIgA2AgQgAEUEQCAEEAYgAwRAIANBADYCBCADQQ42AgALQQAPCyAAQgA3AwAgBA8LAkAgAaciBUEEdBAJIgZFDQAgBCAGNgIAIAVBA3RBCGoQCSIFRQ0AIAQgATcDECAEIAU2AgQDQCAAIAynIghBBHRqIgcpAwgiDVBFBEAgBygCACIHRQRAIAMEQCADQQA2AgQgA0ESNgIACyAGEAYgBRAGIAQQBkEADwsgBiAKp0EEdGoiCSANNwMIIAkgBzYCACAFIAhBA3RqIAs3AwAgCyANfCELIApCAXwhCgsgDEIBfCIMIAFSDQALIAQgCjcDCCAEQgAgCiACGzcDGCAFIAqnQQN0aiALNwMAIAQgCzcDMCAEDwsgAwRAIANBADYCBCADQQ42AgALIAYQBiAEEAZBAAvlAQIDfwF+QX8hBQJAIAAgASACQQAQJiIERQ0AIAAgASACEIsBIgZFDQACfgJAIAJBCHENACAAKAJAIAGnQQR0aigCCCICRQ0AIAIgAxAhQQBOBEAgAykDAAwCCyAAQQhqIgAEQCAAQQA2AgQgAEEPNgIAC0F/DwsgAxAqIAMgBCgCGDYCLCADIAQpAyg3AxggAyAEKAIUNgIoIAMgBCkDIDcDICADIAQoAhA7ATAgAyAELwFSOwEyQvwBQtwBIAQtAAYbCyEHIAMgBjYCCCADIAE3AxAgAyAHQgOENwMAQQAhBQsgBQspAQF/IAAgASACIABBCGoiABAmIgNFBEBBAA8LIAMoAjBBACACIAAQJQuAAwEGfwJ/An9BMCABQYB/Sw0BGgJ/IAFBgH9PBEBBhIQBQTA2AgBBAAwBC0EAQRAgAUELakF4cSABQQtJGyIFQcwAahAJIgFFDQAaIAFBCGshAgJAIAFBP3FFBEAgAiEBDAELIAFBBGsiBigCACIHQXhxIAFBP2pBQHFBCGsiASABQUBrIAEgAmtBD0sbIgEgAmsiA2shBCAHQQNxRQRAIAIoAgAhAiABIAQ2AgQgASACIANqNgIADAELIAEgBCABKAIEQQFxckECcjYCBCABIARqIgQgBCgCBEEBcjYCBCAGIAMgBigCAEEBcXJBAnI2AgAgAiADaiIEIAQoAgRBAXI2AgQgAiADEDsLAkAgASgCBCICQQNxRQ0AIAJBeHEiAyAFQRBqTQ0AIAEgBSACQQFxckECcjYCBCABIAVqIgIgAyAFayIFQQNyNgIEIAEgA2oiAyADKAIEQQFyNgIEIAIgBRA7CyABQQhqCyIBRQsEQEEwDwsgACABNgIAQQALCwoAIABBiIQBEAQL6AIBBX8gACgCUCEBIAAvATAhBEEEIQUDQCABQQAgAS8BACICIARrIgMgAiADSRs7AQAgAUEAIAEvAQIiAiAEayIDIAIgA0kbOwECIAFBACABLwEEIgIgBGsiAyACIANJGzsBBCABQQAgAS8BBiICIARrIgMgAiADSRs7AQYgBUGAgARGRQRAIAFBCGohASAFQQRqIQUMAQsLAkAgBEUNACAEQQNxIQUgACgCTCEBIARBAWtBA08EQCAEIAVrIQADQCABQQAgAS8BACICIARrIgMgAiADSRs7AQAgAUEAIAEvAQIiAiAEayIDIAIgA0kbOwECIAFBACABLwEEIgIgBGsiAyACIANJGzsBBCABQQAgAS8BBiICIARrIgMgAiADSRs7AQYgAUEIaiEBIABBBGsiAA0ACwsgBUUNAANAIAFBACABLwEAIgAgBGsiAiAAIAJJGzsBACABQQJqIQEgBUEBayIFDQALCwuDAQEEfyACQQFOBEAgAiAAKAJIIAFqIgJqIQMgACgCUCEEA0AgBCACKAAAQbHz3fF5bEEPdkH+/wdxaiIFLwEAIgYgAUH//wNxRwRAIAAoAkwgASAAKAI4cUH//wNxQQF0aiAGOwEAIAUgATsBAAsgAUEBaiEBIAJBAWoiAiADSQ0ACwsLUAECfyABIAAoAlAgACgCSCABaigAAEGx893xeWxBD3ZB/v8HcWoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILugEBAX8jAEEQayICJAAgAkEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgARBYIAJBEGokAAu9AQEBfyMAQRBrIgEkACABQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgAEEANgJAIAFBEGokAEEAC70BAQF/IwBBEGsiASQAIAFBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAKAJAIQAgAUEQaiQAIAALvgEBAX8jAEEQayIEJAAgBEEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACIAMQVyAEQRBqJAALygEAIwBBEGsiAyQAIANBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAAoAkAgASACQdSAASgCABEAADYCQCADQRBqJAALwAEBAX8jAEEQayIDJAAgA0EAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACEF0hACADQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFwhACACQRBqJAAgAAu2AQEBfyMAQRBrIgAkACAAQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgAEEQaiQAQQgLwgEBAX8jAEEQayIEJAAgBEEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAgASACIAMQWSEAIARBEGokACAAC8IBAQF/IwBBEGsiBCQAIARBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEgAiADEFYhACAEQRBqJAAgAAsHACAALwEwC8ABAQF/IwBBEGsiAyQAIANBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEgAhBVIQAgA0EQaiQAIAALBwAgACgCQAsaACAAIAAoAkAgASACQdSAASgCABEAADYCQAsLACAAQQA2AkBBAAsHACAAKAIgCwQAQQgLzgUCA34BfyMAQYBAaiIIJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDhECAwwFAAEECAkJCQkJCQcJBgkLIANCCFoEfiACIAEoAmQ2AgAgAiABKAJoNgIEQggFQn8LIQYMCwsgARAGDAoLIAEoAhAiAgRAIAIgASkDGCABQeQAaiICEEEiA1ANCCABKQMIIgVCf4UgA1QEQCACBEAgAkEANgIEIAJBFTYCAAsMCQsgAUEANgIQIAEgAyAFfDcDCCABIAEpAwAgA3w3AwALIAEtAHgEQCABKQMAIQUMCQtCACEDIAEpAwAiBVAEQCABQgA3AyAMCgsDQCAAIAggBSADfSIFQoDAACAFQoDAAFQbEBEiB0J/VwRAIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwJCyAHUEUEQCABKQMAIgUgAyAHfCIDWA0KDAELCyABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEpAwggASkDICIFfSIHIAMgAyAHVhsiA1ANCAJAIAEtAHhFDQAgACAFQQAQFEF/Sg0AIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwHCyAAIAIgAxARIgZCf1cEQCABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEgASkDICAGfCIDNwMgIAZCAFINCEIAIQYgAyABKQMIWg0IIAFB5ABqBEAgAUEANgJoIAFBETYCZAsMBgsgASkDICABKQMAIgV9IAEpAwggBX0gAiADIAFB5ABqEEQiA0IAUw0FIAEgASkDACADfDcDIAwHCyACIAFBKGoQYEEfdawhBgwGCyABMABgIQYMBQsgASkDcCEGDAQLIAEpAyAgASkDAH0hBgwDCyABQeQAagRAIAFBADYCaCABQRw2AmQLC0J/IQYMAQsgASAFNwMgCyAIQYBAayQAIAYLBwAgACgCAAsPACAAIAAoAjBBAWo2AjALGABB+IMBQgA3AgBBgIQBQQA2AgBB+IMBCwcAIABBDGoLBwAgACgCLAsHACAAKAIoCwcAIAAoAhgLFQAgACABrSACrUIghoQgAyAEEIoBCxMBAX4gABAzIgFCIIinEAAgAacLbwEBfiABrSACrUIghoQhBSMAQRBrIgEkAAJ/IABFBEAgBVBFBEAgBARAIARBADYCBCAEQRI2AgALQQAMAgtBAEIAIAMgBBA6DAELIAEgBTcDCCABIAA2AgAgAUIBIAMgBBA6CyEAIAFBEGokACAACxQAIAAgASACrSADrUIghoQgBBBSC9oCAgJ/AX4CfyABrSACrUIghoQiByAAKQMwVEEAIARBCkkbRQRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0F/DAELIAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtBfwwBCyADBH8gA0H//wNxQQhGIANBfUtyBUEBC0UEQCAAQQhqBEAgAEEANgIMIABBEDYCCAtBfwwBCyAAKAJAIgEgB6ciBUEEdGooAgAiAgR/IAIoAhAgA0YFIANBf0YLIQYgASAFQQR0aiIBIQUgASgCBCEBAkAgBgRAIAFFDQEgAUEAOwFQIAEgASgCAEF+cSIANgIAIAANASABECAgBUEANgIEQQAMAgsCQCABDQAgBSACECsiATYCBCABDQAgAEEIagRAIABBADYCDCAAQQ42AggLQX8MAgsgASAEOwFQIAEgAzYCECABIAEoAgBBAXI2AgALQQALCxwBAX4gACABIAIgAEEIahBMIgNCIIinEAAgA6cLHwEBfiAAIAEgAq0gA61CIIaEEBEiBEIgiKcQACAEpwteAQF+An5CfyAARQ0AGiAAKQMwIgIgAUEIcUUNABpCACACUA0AGiAAKAJAIQADQCACIAKnQQR0IABqQRBrKAIADQEaIAJCAX0iAkIAUg0AC0IACyICQiCIpxAAIAKnCxMAIAAgAa0gAq1CIIaEIAMQiwELnwEBAn4CfiACrSADrUIghoQhBUJ/IQQCQCAARQ0AIAAoAgQNACAAQQRqIQIgBUJ/VwRAIAIEQCACQQA2AgQgAkESNgIAC0J/DAILQgAhBCAALQAQDQAgBVANACAAKAIUIAEgBRARIgRCf1UNACAAKAIUIQAgAgRAIAIgACgCDDYCACACIAAoAhA2AgQLQn8hBAsgBAsiBEIgiKcQACAEpwueAQEBfwJ/IAAgACABrSACrUIghoQgAyAAKAIcEH8iAQRAIAEQMkF/TARAIABBCGoEQCAAIAEoAgw2AgggACABKAIQNgIMCyABEAtBAAwCC0EYEAkiBEUEQCAAQQhqBEAgAEEANgIMIABBDjYCCAsgARALQQAMAgsgBCAANgIAIARBADYCDCAEQgA3AgQgBCABNgIUIARBADoAEAsgBAsLsQICAX8BfgJ/QX8hBAJAIAAgAa0gAq1CIIaEIgZBAEEAECZFDQAgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAILIAAoAkAiASAGpyICQQR0aiIEKAIIIgUEQEEAIQQgBSADEHFBf0oNASAAQQhqBEAgAEEANgIMIABBDzYCCAtBfwwCCwJAIAQoAgAiBQRAIAUoAhQgA0YNAQsCQCABIAJBBHRqIgEoAgQiBA0AIAEgBRArIgQ2AgQgBA0AIABBCGoEQCAAQQA2AgwgAEEONgIIC0F/DAMLIAQgAzYCFCAEIAQoAgBBIHI2AgBBAAwCC0EAIQQgASACQQR0aiIBKAIEIgBFDQAgACAAKAIAQV9xIgI2AgAgAg0AIAAQICABQQA2AgQLIAQLCxQAIAAgAa0gAq1CIIaEIAQgBRBzCxIAIAAgAa0gAq1CIIaEIAMQFAtBAQF+An4gAUEAIAIbRQRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0J/DAELIAAgASACIAMQdAsiBEIgiKcQACAEpwvGAwIFfwF+An4CQAJAIAAiBC0AGEECcQRAIARBCGoEQCAEQQA2AgwgBEEZNgIICwwBCyABRQRAIARBCGoEQCAEQQA2AgwgBEESNgIICwwBCyABECIiByABakEBay0AAEEvRwRAIAdBAmoQCSIARQRAIARBCGoEQCAEQQA2AgwgBEEONgIICwwCCwJAAkAgACIGIAEiBXNBA3ENACAFQQNxBEADQCAGIAUtAAAiAzoAACADRQ0DIAZBAWohBiAFQQFqIgVBA3ENAAsLIAUoAgAiA0F/cyADQYGChAhrcUGAgYKEeHENAANAIAYgAzYCACAFKAIEIQMgBkEEaiEGIAVBBGohBSADQYGChAhrIANBf3NxQYCBgoR4cUUNAAsLIAYgBS0AACIDOgAAIANFDQADQCAGIAUtAAEiAzoAASAGQQFqIQYgBUEBaiEFIAMNAAsLIAcgACIDakEvOwAACyAEQQBCAEEAEFIiAEUEQCADEAYMAQsgBCADIAEgAxsgACACEHQhCCADEAYgCEJ/VwRAIAAQCyAIDAMLIAQgCEEDQYCA/I8EEHNBf0oNASAEIAgQchoLQn8hCAsgCAsiCEIgiKcQACAIpwsQACAAIAGtIAKtQiCGhBByCxYAIAAgAa0gAq1CIIaEIAMgBCAFEGYL3iMDD38IfgF8IwBB8ABrIgkkAAJAIAFBAE5BACAAG0UEQCACBEAgAkEANgIEIAJBEjYCAAsMAQsgACkDGCISAn5BsIMBKQMAIhNCf1EEQCAJQoOAgIBwNwMwIAlChoCAgPAANwMoIAlCgYCAgCA3AyBBsIMBQQAgCUEgahAkNwMAIAlCj4CAgHA3AxAgCUKJgICAoAE3AwAgCUKMgICA0AE3AwhBuIMBQQggCRAkNwMAQbCDASkDACETCyATC4MgE1IEQCACBEAgAkEANgIEIAJBHDYCAAsMAQsgASABQRByQbiDASkDACITIBKDIBNRGyIKQRhxQRhGBEAgAgRAIAJBADYCBCACQRk2AgALDAELIAlBOGoQKgJAIAAgCUE4ahAhBEACQCAAKAIMQQVGBEAgACgCEEEsRg0BCyACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAgsgCkEBcUUEQCACBEAgAkEANgIEIAJBCTYCAAsMAwsgAhBJIgVFDQEgBSAKNgIEIAUgADYCACAKQRBxRQ0CIAUgBSgCFEECcjYCFCAFIAUoAhhBAnI2AhgMAgsgCkECcQRAIAIEQCACQQA2AgQgAkEKNgIACwwCCyAAEDJBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsCfyAKQQhxBEACQCACEEkiAUUNACABIAo2AgQgASAANgIAIApBEHFFDQAgASABKAIUQQJyNgIUIAEgASgCGEECcjYCGAsgAQwBCyMAQUBqIg4kACAOQQhqECoCQCAAIA5BCGoQIUF/TARAIAIEQCACIAAoAgw2AgAgAiAAKAIQNgIECwwBCyAOLQAIQQRxRQRAIAIEQCACQYoBNgIEIAJBBDYCAAsMAQsgDikDICETIAIQSSIFRQRAQQAhBQwBCyAFIAo2AgQgBSAANgIAIApBEHEEQCAFIAUoAhRBAnI2AhQgBSAFKAIYQQJyNgIYCwJAAkACQCATUARAAn8gACEBAkADQCABKQMYQoCAEINCAFINASABKAIAIgENAAtBAQwBCyABQQBCAEESEA6nCw0EIAVBCGoEQCAFQQA2AgwgBUETNgIICwwBCyMAQdAAayIBJAACQCATQhVYBEAgBUEIagRAIAVBADYCDCAFQRM2AggLDAELAkACQCAFKAIAQgAgE0KqgAQgE0KqgARUGyISfUECEBRBf0oNACAFKAIAIgMoAgxBBEYEQCADKAIQQRZGDQELIAVBCGoEQCAFIAMoAgw2AgggBSADKAIQNgIMCwwBCyAFKAIAEDMiE0J/VwRAIAUoAgAhAyAFQQhqIggEQCAIIAMoAgw2AgAgCCADKAIQNgIECwwBCyAFKAIAIBJBACAFQQhqIg8QLSIERQ0BIBJCqoAEWgRAAkAgBCkDCEIUVARAIARBADoAAAwBCyAEQhQ3AxAgBEEBOgAACwsgAQRAIAFBADYCBCABQRM2AgALIARCABATIQwCQCAELQAABH4gBCkDCCAEKQMQfQVCAAunIgdBEmtBA0sEQEJ/IRcDQCAMQQFrIQMgByAMakEVayEGAkADQCADQQFqIgNB0AAgBiADaxB6IgNFDQEgA0EBaiIMQZ8SQQMQPQ0ACwJAIAMgBCgCBGusIhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBC0AAAR+IAQpAxAFQgALIRICQCAELQAABH4gBCkDCCAEKQMQfQVCAAtCFVgEQCABBEAgAUEANgIEIAFBEzYCAAsMAQsgBEIEEBMoAABB0JaVMEcEQCABBEAgAUEANgIEIAFBEzYCAAsMAQsCQAJAAkAgEkIUVA0AIAQoAgQgEqdqQRRrKAAAQdCWmThHDQACQCASQhR9IhQgBCIDKQMIVgRAIANBADoAAAwBCyADIBQ3AxAgA0EBOgAACyAFKAIUIRAgBSgCACEGIAMtAAAEfiAEKQMQBUIACyEWIARCBBATGiAEEAwhCyAEEAwhDSAEEB0iFEJ/VwRAIAEEQCABQRY2AgQgAUEENgIACwwECyAUQjh8IhUgEyAWfCIWVgRAIAEEQCABQQA2AgQgAUEVNgIACwwECwJAAkAgEyAUVg0AIBUgEyAEKQMIfFYNAAJAIBQgE30iFSAEKQMIVgRAIANBADoAAAwBCyADIBU3AxAgA0EBOgAAC0EAIQcMAQsgBiAUQQAQFEF/TARAIAEEQCABIAYoAgw2AgAgASAGKAIQNgIECwwFC0EBIQcgBkI4IAFBEGogARAtIgNFDQQLIANCBBATKAAAQdCWmTBHBEAgAQRAIAFBADYCBCABQRU2AgALIAdFDQQgAxAIDAQLIAMQHSEVAkAgEEEEcSIGRQ0AIBQgFXxCDHwgFlENACABBEAgAUEANgIEIAFBFTYCAAsgB0UNBCADEAgMBAsgA0IEEBMaIAMQFSIQIAsgC0H//wNGGyELIAMQFSIRIA0gDUH//wNGGyENAkAgBkUNACANIBFGQQAgCyAQRhsNACABBEAgAUEANgIEIAFBFTYCAAsgB0UNBCADEAgMBAsgCyANcgRAIAEEQCABQQA2AgQgAUEBNgIACyAHRQ0EIAMQCAwECyADEB0iGCADEB1SBEAgAQRAIAFBADYCBCABQQE2AgALIAdFDQQgAxAIDAQLIAMQHSEVIAMQHSEWIAMtAABFBEAgAQRAIAFBADYCBCABQRQ2AgALIAdFDQQgAxAIDAQLIAcEQCADEAgLAkAgFkIAWQRAIBUgFnwiGSAWWg0BCyABBEAgAUEWNgIEIAFBBDYCAAsMBAsgEyAUfCIUIBlUBEAgAQRAIAFBADYCBCABQRU2AgALDAQLAkAgBkUNACAUIBlRDQAgAQRAIAFBADYCBCABQRU2AgALDAQLIBggFUIugFgNASABBEAgAUEANgIEIAFBFTYCAAsMAwsCQCASIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAUoAhQhAyAELQAABH4gBCkDCCAEKQMQfQVCAAtCFVgEQCABBEAgAUEANgIEIAFBFTYCAAsMAwsgBC0AAAR+IAQpAxAFQgALIRQgBEIEEBMaIAQQFQRAIAEEQCABQQA2AgQgAUEBNgIACwwDCyAEEAwgBBAMIgZHBEAgAQRAIAFBADYCBCABQRM2AgALDAMLIAQQFSEHIAQQFa0iFiAHrSIVfCIYIBMgFHwiFFYEQCABBEAgAUEANgIEIAFBFTYCAAsMAwsCQCADQQRxRQ0AIBQgGFENACABBEAgAUEANgIEIAFBFTYCAAsMAwsgBq0gARBqIgNFDQIgAyAWNwMgIAMgFTcDGCADQQA6ACwMAQsgGCABEGoiA0UNASADIBY3AyAgAyAVNwMYIANBAToALAsCQCASQhR8IhQgBCkDCFYEQCAEQQA6AAAMAQsgBCAUNwMQIARBAToAAAsgBBAMIQYCQCADKQMYIAMpAyB8IBIgE3xWDQACQCAGRQRAIAUtAARBBHFFDQELAkAgEkIWfCISIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAQtAAAEfiAEKQMIIAQpAxB9BUIACyIUIAatIhJUDQEgBS0ABEEEcUEAIBIgFFIbDQEgBkUNACADIAQgEhATIAZBACABEDUiBjYCKCAGDQAgAxAWDAILAkAgEyADKQMgIhJYBEACQCASIBN9IhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBCADKQMYEBMiBkUNAiAGIAMpAxgQFyIHDQEgAQRAIAFBADYCBCABQQ42AgALIAMQFgwDCyAFKAIAIBJBABAUIQcgBSgCACEGIAdBf0wEQCABBEAgASAGKAIMNgIAIAEgBigCEDYCBAsgAxAWDAMLQQAhByAGEDMgAykDIFENACABBEAgAUEANgIEIAFBEzYCAAsgAxAWDAILQgAhFAJAAkAgAykDGCIWUEUEQANAIBQgAykDCFIiC0UEQCADLQAsDQMgFkIuVA0DAn8CQCADKQMQIhVCgIAEfCISIBVaQQAgEkKAgICAAVQbRQ0AIAMoAgAgEqdBBHQQNCIGRQ0AIAMgBjYCAAJAIAMpAwgiFSASWg0AIAYgFadBBHRqIgZCADcCACAGQgA3AAUgFUIBfCIVIBJRDQADQCADKAIAIBWnQQR0aiIGQgA3AgAgBkIANwAFIBVCAXwiFSASUg0ACwsgAyASNwMIIAMgEjcDEEEBDAELIAEEQCABQQA2AgQgAUEONgIAC0EAC0UNBAtB2AAQCSIGBH8gBkIANwMgIAZBADYCGCAGQv////8PNwMQIAZBADsBDCAGQb+GKDYCCCAGQQE6AAYgBkEAOwEEIAZBADYCACAGQgA3A0ggBkGAgNiNeDYCRCAGQgA3AyggBkIANwMwIAZCADcDOCAGQUBrQQA7AQAgBkIANwNQIAYFQQALIQYgAygCACAUp0EEdGogBjYCAAJAIAYEQCAGIAUoAgAgB0EAIAEQaCISQn9VDQELIAsNBCABKAIAQRNHDQQgAQRAIAFBADYCBCABQRU2AgALDAQLIBRCAXwhFCAWIBJ9IhZCAFINAAsLIBQgAykDCFINAAJAIAUtAARBBHFFDQAgBwRAIActAAAEfyAHKQMQIAcpAwhRBUEAC0UNAgwBCyAFKAIAEDMiEkJ/VwRAIAUoAgAhBiABBEAgASAGKAIMNgIAIAEgBigCEDYCBAsgAxAWDAULIBIgAykDGCADKQMgfFINAQsgBxAIAn4gCARAAn8gF0IAVwRAIAUgCCABEEghFwsgBSADIAEQSCISIBdVCwRAIAgQFiASDAILIAMQFgwFC0IAIAUtAARBBHFFDQAaIAUgAyABEEgLIRcgAyEIDAMLIAEEQCABQQA2AgQgAUEVNgIACyAHEAggAxAWDAILIAMQFiAHEAgMAQsgAQRAIAFBADYCBCABQRU2AgALIAMQFgsCQCAMIAQoAgRrrCISIAQpAwhWBEAgBEEAOgAADAELIAQgEjcDECAEQQE6AAALIAQtAAAEfiAEKQMIIAQpAxB9BUIAC6ciB0ESa0EDSw0BCwsgBBAIIBdCf1UNAwwBCyAEEAgLIA8iAwRAIAMgASgCADYCACADIAEoAgQ2AgQLIAgQFgtBACEICyABQdAAaiQAIAgNAQsgAgRAIAIgBSgCCDYCACACIAUoAgw2AgQLDAELIAUgCCgCADYCQCAFIAgpAwg3AzAgBSAIKQMQNwM4IAUgCCgCKDYCICAIEAYgBSgCUCEIIAVBCGoiBCEBQQAhBwJAIAUpAzAiE1ANAEGAgICAeCEGAn8gE7pEAAAAAAAA6D+jRAAA4P///+9BpCIaRAAAAAAAAPBBYyAaRAAAAAAAAAAAZnEEQCAaqwwBC0EACyIDQYCAgIB4TQRAIANBAWsiA0EBdiADciIDQQJ2IANyIgNBBHYgA3IiA0EIdiADciIDQRB2IANyQQFqIQYLIAYgCCgCACIMTQ0AIAYQPCILRQRAIAEEQCABQQA2AgQgAUEONgIACwwBCwJAIAgpAwhCACAMG1AEQCAIKAIQIQ8MAQsgCCgCECEPA0AgDyAHQQJ0aigCACIBBEADQCABKAIYIQMgASALIAEoAhwgBnBBAnRqIg0oAgA2AhggDSABNgIAIAMiAQ0ACwsgB0EBaiIHIAxHDQALCyAPEAYgCCAGNgIAIAggCzYCEAsCQCAFKQMwUA0AQgAhEwJAIApBBHFFBEADQCAFKAJAIBOnQQR0aigCACgCMEEAQQAgAhAlIgFFDQQgBSgCUCABIBNBCCAEEE1FBEAgBCgCAEEKRw0DCyATQgF8IhMgBSkDMFQNAAwDCwALA0AgBSgCQCATp0EEdGooAgAoAjBBAEEAIAIQJSIBRQ0DIAUoAlAgASATQQggBBBNRQ0BIBNCAXwiEyAFKQMwVA0ACwwBCyACBEAgAiAEKAIANgIAIAIgBCgCBDYCBAsMAQsgBSAFKAIUNgIYDAELIAAgACgCMEEBajYCMCAFEEtBACEFCyAOQUBrJAAgBQsiBQ0BIAAQGhoLQQAhBQsgCUHwAGokACAFCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwAL4CoDEX8IfgN8IwBBwMAAayIHJABBfyECAkAgAEUNAAJ/IAAtAChFBEBBACAAKAIYIAAoAhRGDQEaC0EBCyEBAkACQCAAKQMwIhRQRQRAIAAoAkAhCgNAIAogEqdBBHRqIgMtAAwhCwJAAkAgAygCCA0AIAsNACADKAIEIgNFDQEgAygCAEUNAQtBASEBCyAXIAtBAXOtQv8Bg3whFyASQgF8IhIgFFINAAsgF0IAUg0BCyAAKAIEQQhxIAFyRQ0BAn8gACgCACIDKAIkIgFBA0cEQCADKAIgBH9BfyADEBpBAEgNAhogAygCJAUgAQsEQCADEEMLQX8gA0EAQgBBDxAOQgBTDQEaIANBAzYCJAtBAAtBf0oNASAAKAIAKAIMQRZGBEAgACgCACgCEEEsRg0CCyAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLDAILIAFFDQAgFCAXVARAIABBCGoEQCAAQQA2AgwgAEEUNgIICwwCCyAXp0EDdBAJIgtFDQFCfyEWQgAhEgNAAkAgCiASp0EEdGoiBigCACIDRQ0AAkAgBigCCA0AIAYtAAwNACAGKAIEIgFFDQEgASgCAEUNAQsgFiADKQNIIhMgEyAWVhshFgsgBi0ADEUEQCAXIBlYBEAgCxAGIABBCGoEQCAAQQA2AgwgAEEUNgIICwwECyALIBmnQQN0aiASNwMAIBlCAXwhGQsgEkIBfCISIBRSDQALIBcgGVYEQCALEAYgAEEIagRAIABBADYCDCAAQRQ2AggLDAILAkACQCAAKAIAKQMYQoCACINQDQACQAJAIBZCf1INACAAKQMwIhNQDQIgE0IBgyEVIAAoAkAhAwJAIBNCAVEEQEJ/IRRCACESQgAhFgwBCyATQn6DIRlCfyEUQgAhEkIAIRYDQCADIBKnQQR0aigCACIBBEAgFiABKQNIIhMgEyAWVCIBGyEWIBQgEiABGyEUCyADIBJCAYQiGKdBBHRqKAIAIgEEQCAWIAEpA0giEyATIBZUIgEbIRYgFCAYIAEbIRQLIBJCAnwhEiAZQgJ9IhlQRQ0ACwsCQCAVUA0AIAMgEqdBBHRqKAIAIgFFDQAgFiABKQNIIhMgEyAWVCIBGyEWIBQgEiABGyEUCyAUQn9RDQBCACETIwBBEGsiBiQAAkAgACAUIABBCGoiCBBBIhVQDQAgFSAAKAJAIBSnQQR0aigCACIKKQMgIhh8IhQgGFpBACAUQn9VG0UEQCAIBEAgCEEWNgIEIAhBBDYCAAsMAQsgCi0ADEEIcUUEQCAUIRMMAQsgACgCACAUQQAQFCEBIAAoAgAhAyABQX9MBEAgCARAIAggAygCDDYCACAIIAMoAhA2AgQLDAELIAMgBkEMakIEEBFCBFIEQCAAKAIAIQEgCARAIAggASgCDDYCACAIIAEoAhA2AgQLDAELIBRCBHwgFCAGKAAMQdCWncAARhtCFEIMAn9BASEBAkAgCikDKEL+////D1YNACAKKQMgQv7///8PVg0AQQAhAQsgAQsbfCIUQn9XBEAgCARAIAhBFjYCBCAIQQQ2AgALDAELIBQhEwsgBkEQaiQAIBMiFkIAUg0BIAsQBgwFCyAWUA0BCwJ/IAAoAgAiASgCJEEBRgRAIAFBDGoEQCABQQA2AhAgAUESNgIMC0F/DAELQX8gAUEAIBZBERAOQgBTDQAaIAFBATYCJEEAC0F/Sg0BC0IAIRYCfyAAKAIAIgEoAiRBAUYEQCABQQxqBEAgAUEANgIQIAFBEjYCDAtBfwwBC0F/IAFBAEIAQQgQDkIAUw0AGiABQQE2AiRBAAtBf0oNACAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLIAsQBgwCCyAAKAJUIgIEQCACQgA3AxggAigCAEQAAAAAAAAAACACKAIMIAIoAgQRDgALIABBCGohBCAXuiEcQgAhFAJAAkACQANAIBcgFCITUgRAIBO6IByjIRsgE0IBfCIUuiAcoyEaAkAgACgCVCICRQ0AIAIgGjkDKCACIBs5AyAgAisDECAaIBuhRAAAAAAAAAAAoiAboCIaIAIrAxihY0UNACACKAIAIBogAigCDCACKAIEEQ4AIAIgGjkDGAsCfwJAIAAoAkAgCyATp0EDdGopAwAiE6dBBHRqIg0oAgAiAQRAIAEpA0ggFlQNAQsgDSgCBCEFAkACfwJAIA0oAggiAkUEQCAFRQ0BQQEgBSgCACICQQFxDQIaIAJBwABxQQZ2DAILQQEgBQ0BGgsgDSABECsiBTYCBCAFRQ0BIAJBAEcLIQZBACEJIwBBEGsiDCQAAkAgEyAAKQMwWgRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0F/IQkMAQsgACgCQCIKIBOnIgNBBHRqIg8oAgAiAkUNACACLQAEDQACQCACKQNIQhp8IhhCf1cEQCAAQQhqBEAgAEEWNgIMIABBBDYCCAsMAQtBfyEJIAAoAgAgGEEAEBRBf0wEQCAAKAIAIQIgAEEIagRAIAAgAigCDDYCCCAAIAIoAhA2AgwLDAILIAAoAgBCBCAMQQxqIABBCGoiDhAtIhBFDQEgEBAMIQEgEBAMIQggEC0AAAR/IBApAxAgECkDCFEFQQALIQIgEBAIIAJFBEAgDgRAIA5BADYCBCAOQRQ2AgALDAILAkAgCEUNACAAKAIAIAGtQQEQFEF/TARAQYSEASgCACECIA4EQCAOIAI2AgQgDkEENgIACwwDC0EAIAAoAgAgCEEAIA4QRSIBRQ0BIAEgCEGAAiAMQQhqIA4QbiECIAEQBiACRQ0BIAwoAggiAkUNACAMIAIQbSICNgIIIA8oAgAoAjQgAhBvIQIgDygCACACNgI0CyAPKAIAIgJBAToABEEAIQkgCiADQQR0aigCBCIBRQ0BIAEtAAQNASACKAI0IQIgAUEBOgAEIAEgAjYCNAwBC0F/IQkLIAxBEGokACAJQQBIDQUgACgCABAfIhhCAFMNBSAFIBg3A0ggBgRAQQAhDCANKAIIIg0hASANRQRAIAAgACATQQhBABB/IgwhASAMRQ0HCwJAAkAgASAHQQhqECFBf0wEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMAQsgBykDCCISQsAAg1AEQCAHQQA7ATggByASQsAAhCISNwMICwJAAkAgBSgCECICQX5PBEAgBy8BOCIDRQ0BIAUgAzYCECADIQIMAgsgAg0AIBJCBINQDQAgByAHKQMgNwMoIAcgEkIIhCISNwMIQQAhAgwBCyAHIBJC9////w+DIhI3AwgLIBJCgAGDUARAIAdBADsBOiAHIBJCgAGEIhI3AwgLAn8gEkIEg1AEQEJ/IRVBgAoMAQsgBSAHKQMgIhU3AyggEkIIg1AEQAJAAkACQAJAQQggAiACQX1LG0H//wNxDg0CAwMDAwMDAwEDAwMAAwtBgApBgAIgFUKUwuTzD1YbDAQLQYAKQYACIBVCg4Ow/w9WGwwDC0GACkGAAiAVQv////8PVhsMAgtBgApBgAIgFUIAUhsMAQsgBSAHKQMoNwMgQYACCyEPIAAoAgAQHyITQn9XBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyAFIAUvAQxB9/8DcTsBDCAAIAUgDxA3IgpBAEgNACAHLwE4IghBCCAFKAIQIgMgA0F9SxtB//8DcSICRyEGAkACQAJAAkACQAJAAkAgAiAIRwRAIANBAEchAwwBC0EAIQMgBS0AAEGAAXFFDQELIAUvAVIhCSAHLwE6IQIMAQsgBS8BUiIJIAcvAToiAkYNAQsgASABKAIwQQFqNgIwIAJB//8DcQ0BIAEhAgwCCyABIAEoAjBBAWo2AjBBACEJDAILQSZBACAHLwE6QQFGGyICRQRAIAQEQCAEQQA2AgQgBEEYNgIACyABEAsMAwsgACABIAcvATpBACAAKAIcIAIRBgAhAiABEAsgAkUNAgsgCUEARyEJIAhBAEcgBnFFBEAgAiEBDAELIAAgAiAHLwE4EIEBIQEgAhALIAFFDQELAkAgCEUgBnJFBEAgASECDAELIAAgAUEAEIABIQIgARALIAJFDQELAkAgA0UEQCACIQMMAQsgACACIAUoAhBBASAFLwFQEIIBIQMgAhALIANFDQELAkAgCUUEQCADIQEMAQsgBSgCVCIBRQRAIAAoAhwhAQsCfyAFLwFSGkEBCwRAIAQEQCAEQQA2AgQgBEEYNgIACyADEAsMAgsgACADIAUvAVJBASABQQARBgAhASADEAsgAUUNAQsgACgCABAfIhhCf1cEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELAkAgARAyQQBOBEACfwJAAkAgASAHQUBrQoDAABARIhJCAVMNAEIAIRkgFUIAVQRAIBW5IRoDQCAAIAdBQGsgEhAbQQBIDQMCQCASQoDAAFINACAAKAJUIgJFDQAgAiAZQoBAfSIZuSAaoxB7CyABIAdBQGtCgMAAEBEiEkIAVQ0ACwwBCwNAIAAgB0FAayASEBtBAEgNAiABIAdBQGtCgMAAEBEiEkIAVQ0ACwtBACASQn9VDQEaIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIECwtBfwshAiABEBoaDAELIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIEC0F/IQILIAEgB0EIahAhQX9MBEAgBARAIAQgASgCDDYCACAEIAEoAhA2AgQLQX8hAgsCf0EAIQkCQCABIgNFDQADQCADLQAaQQFxBEBB/wEhCSADQQBCAEEQEA4iFUIAUw0CIBVCBFkEQCADQQxqBEAgA0EANgIQIANBFDYCDAsMAwsgFachCQwCCyADKAIAIgMNAAsLIAlBGHRBGHUiA0F/TAsEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsgARALDAELIAEQCyACQQBIDQAgACgCABAfIRUgACgCACECIBVCf1cEQCAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsMAQsgAiATEHVBf0wEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELIAcpAwgiE0LkAINC5ABSBEAgBARAIARBADYCBCAEQRQ2AgALDAELAkAgBS0AAEEgcQ0AIBNCEINQRQRAIAUgBygCMDYCFAwBCyAFQRRqEAEaCyAFIAcvATg2AhAgBSAHKAI0NgIYIAcpAyAhEyAFIBUgGH03AyAgBSATNwMoIAUgBS8BDEH5/wNxIANB/wFxQQF0cjsBDCAPQQp2IQNBPyEBAkACQAJAAkAgBSgCECICQQxrDgMAAQIBCyAFQS47AQoMAgtBLSEBIAMNACAFKQMoQv7///8PVg0AIAUpAyBC/v///w9WDQBBFCEBIAJBCEYNACAFLwFSQQFGDQAgBSgCMCICBH8gAi8BBAVBAAtB//8DcSICBEAgAiAFKAIwKAIAakEBay0AAEEvRg0BC0EKIQELIAUgATsBCgsgACAFIA8QNyICQQBIDQAgAiAKRwRAIAQEQCAEQQA2AgQgBEEUNgIACwwBCyAAKAIAIBUQdUF/Sg0BIAAoAgAhAiAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsLIA0NByAMEAsMBwsgDQ0CIAwQCwwCCyAFIAUvAQxB9/8DcTsBDCAAIAVBgAIQN0EASA0FIAAgEyAEEEEiE1ANBSAAKAIAIBNBABAUQX9MBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwGCyAFKQMgIRIjAEGAQGoiAyQAAkAgElBFBEAgAEEIaiECIBK6IRoDQEF/IQEgACgCACADIBJCgMAAIBJCgMAAVBsiEyACEGVBAEgNAiAAIAMgExAbQQBIDQIgACgCVCAaIBIgE30iErqhIBqjEHsgEkIAUg0ACwtBACEBCyADQYBAayQAIAFBf0oNAUEBIREgAUEcdkEIcUEIRgwCCyAEBEAgBEEANgIEIARBDjYCAAsMBAtBAAtFDQELCyARDQBBfyECAkAgACgCABAfQgBTDQAgFyEUQQAhCkIAIRcjAEHwAGsiESQAAkAgACgCABAfIhVCAFkEQCAUUEUEQANAIAAgACgCQCALIBenQQN0aigCAEEEdGoiAygCBCIBBH8gAQUgAygCAAtBgAQQNyIBQQBIBEBCfyEXDAQLIAFBAEcgCnIhCiAXQgF8IhcgFFINAAsLQn8hFyAAKAIAEB8iGEJ/VwRAIAAoAgAhASAAQQhqBEAgACABKAIMNgIIIAAgASgCEDYCDAsMAgsgEULiABAXIgZFBEAgAEEIagRAIABBADYCDCAAQQ42AggLDAILIBggFX0hEyAVQv////8PViAUQv//A1ZyIApyQQFxBEAgBkGZEkEEECwgBkIsEBggBkEtEA0gBkEtEA0gBkEAEBIgBkEAEBIgBiAUEBggBiAUEBggBiATEBggBiAVEBggBkGUEkEEECwgBkEAEBIgBiAYEBggBkEBEBILIAZBnhJBBBAsIAZBABASIAYgFEL//wMgFEL//wNUG6dB//8DcSIBEA0gBiABEA0gBkF/IBOnIBNC/v///w9WGxASIAZBfyAVpyAVQv7///8PVhsQEiAGIABBJEEgIAAtACgbaigCACIDBH8gAy8BBAVBAAtB//8DcRANIAYtAABFBEAgAEEIagRAIABBADYCDCAAQRQ2AggLIAYQCAwCCyAAIAYoAgQgBi0AAAR+IAYpAxAFQgALEBshASAGEAggAUEASA0BIAMEQCAAIAMoAgAgAzMBBBAbQQBIDQILIBMhFwwBCyAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLQn8hFwsgEUHwAGokACAXQgBTDQAgACgCABAfQj+HpyECCyALEAYgAkEASA0BAn8gACgCACIBKAIkQQFHBEAgAUEMagRAIAFBADYCECABQRI2AgwLQX8MAQsgASgCICICQQJPBEAgAUEMagRAIAFBADYCECABQR02AgwLQX8MAQsCQCACQQFHDQAgARAaQQBODQBBfwwBCyABQQBCAEEJEA5Cf1cEQCABQQI2AiRBfwwBCyABQQA2AiRBAAtFDQIgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyALEAYLIAAoAlQQfCAAKAIAEENBfyECDAILIAAoAlQQfAsgABBLQQAhAgsgB0HAwABqJAAgAgtFAEHwgwFCADcDAEHogwFCADcDAEHggwFCADcDAEHYgwFCADcDAEHQgwFCADcDAEHIgwFCADcDAEHAgwFCADcDAEHAgwELoQMBCH8jAEGgAWsiAiQAIAAQMQJAAn8CQCAAKAIAIgFBAE4EQCABQbATKAIASA0BCyACIAE2AhAgAkEgakH2ESACQRBqEHZBASEGIAJBIGohBCACQSBqECIhA0EADAELIAFBAnQiAUGwEmooAgAhBQJ/AkACQCABQcATaigCAEEBaw4CAAEECyAAKAIEIQNB9IIBKAIAIQdBACEBAkACQANAIAMgAUHQ8QBqLQAARwRAQdcAIQQgAUEBaiIBQdcARw0BDAILCyABIgQNAEGw8gAhAwwBC0Gw8gAhAQNAIAEtAAAhCCABQQFqIgMhASAIDQAgAyEBIARBAWsiBA0ACwsgBygCFBogAwwBC0EAIAAoAgRrQQJ0QdjAAGooAgALIgRFDQEgBBAiIQMgBUUEQEEAIQVBASEGQQAMAQsgBRAiQQJqCyEBIAEgA2pBAWoQCSIBRQRAQegSKAIAIQUMAQsgAiAENgIIIAJBrBJBkRIgBhs2AgQgAkGsEiAFIAYbNgIAIAFBqwogAhB2IAAgATYCCCABIQULIAJBoAFqJAAgBQszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQBxogACAAKAIUIAFqNgIUIAILBgBBsIgBCwYAQayIAQsGAEGkiAELBwAgAEEEagsHACAAQQhqCyYBAX8gACgCFCIBBEAgARALCyAAKAIEIQEgAEEEahAxIAAQBiABC6kBAQN/AkAgAC0AACICRQ0AA0AgAS0AACIERQRAIAIhAwwCCwJAIAIgBEYNACACQSByIAIgAkHBAGtBGkkbIAEtAAAiAkEgciACIAJBwQBrQRpJG0YNACAALQAAIQMMAgsgAUEBaiEBIAAtAAEhAiAAQQFqIQAgAg0ACwsgA0H/AXEiAEEgciAAIABBwQBrQRpJGyABLQAAIgBBIHIgACAAQcEAa0EaSRtrC8sGAgJ+An8jAEHgAGsiByQAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDg8AAQoCAwQGBwgICAgICAUICyABQgA3AyAMCQsgACACIAMQESIFQn9XBEAgAUEIaiIBBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMCAsCQCAFUARAIAEpAygiAyABKQMgUg0BIAEgAzcDGCABQQE2AgQgASgCAEUNASAAIAdBKGoQIUF/TARAIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAoLAkAgBykDKCIDQiCDUA0AIAcoAlQgASgCMEYNACABQQhqBEAgAUEANgIMIAFBBzYCCAsMCgsgA0IEg1ANASAHKQNAIAEpAxhRDQEgAUEIagRAIAFBADYCDCABQRU2AggLDAkLIAEoAgQNACABKQMoIgMgASkDICIGVA0AIAUgAyAGfSIDWA0AIAEoAjAhBANAIAECfyAFIAN9IgZC/////w8gBkL/////D1QbIganIQBBACACIAOnaiIIRQ0AGiAEIAggAEHUgAEoAgARAAALIgQ2AjAgASABKQMoIAZ8NwMoIAUgAyAGfCIDVg0ACwsgASABKQMgIAV8NwMgDAgLIAEoAgRFDQcgAiABKQMYIgM3AxggASgCMCEAIAJBADYCMCACIAM3AyAgAiAANgIsIAIgAikDAELsAYQ3AwAMBwsgA0IIWgR+IAIgASgCCDYCACACIAEoAgw2AgRCCAVCfwshBQwGCyABEAYMBQtCfyEFIAApAxgiA0J/VwRAIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAULIAdBfzYCGCAHQo+AgICAAjcDECAHQoyAgIDQATcDCCAHQomAgICgATcDACADQQggBxAkQn+FgyEFDAQLIANCD1gEQCABQQhqBEAgAUEANgIMIAFBEjYCCAsMAwsgAkUNAgJAIAAgAikDACACKAIIEBRBAE4EQCAAEDMiA0J/VQ0BCyABQQhqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwDCyABIAM3AyAMAwsgASkDICEFDAILIAFBCGoEQCABQQA2AgwgAUEcNgIICwtCfyEFCyAHQeAAaiQAIAULjAcCAn4CfyMAQRBrIgckAAJAAkACQAJAAkACQAJAAkACQAJAIAQOEQABAgMFBggICAgICAgIBwgECAsgAUJ/NwMgIAFBADoADyABQQA7AQwgAUIANwMYIAEoAqxAIAEoAqhAKAIMEQEArUIBfSEFDAgLQn8hBSABKAIADQdCACEFIANQDQcgAS0ADQ0HIAFBKGohBAJAA0ACQCAHIAMgBX03AwggASgCrEAgAiAFp2ogB0EIaiABKAKoQCgCHBEAACEIQgAgBykDCCAIQQJGGyAFfCEFAkACQAJAIAhBAWsOAwADAQILIAFBAToADSABKQMgIgNCf1cEQCABBEAgAUEANgIEIAFBFDYCAAsMBQsgAS0ADkUNBCADIAVWDQQgASADNwMYIAFBAToADyACIAQgA6cQBxogASkDGCEFDAwLIAEtAAwNAyAAIARCgMAAEBEiBkJ/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwECyAGUARAIAFBAToADCABKAKsQCABKAKoQCgCGBEDACABKQMgQn9VDQEgAUIANwMgDAELAkAgASkDIEIAWQRAIAFBADoADgwBCyABIAY3AyALIAEoAqxAIAQgBiABKAKoQCgCFBEPABoLIAMgBVYNAQwCCwsgASgCAA0AIAEEQCABQQA2AgQgAUEUNgIACwsgBVBFBEAgAUEAOgAOIAEgASkDGCAFfDcDGAwIC0J/QgAgASgCABshBQwHCyABKAKsQCABKAKoQCgCEBEBAK1CAX0hBQwGCyABLQAQBEAgAS0ADQRAIAIgAS0ADwR/QQAFQQggASgCFCIAIABBfUsbCzsBMCACIAEpAxg3AyAgAiACKQMAQsgAhDcDAAwHCyACIAIpAwBCt////w+DNwMADAYLIAJBADsBMCACKQMAIQMgAS0ADQRAIAEpAxghBSACIANCxACENwMAIAIgBTcDGEIAIQUMBgsgAiADQrv///8Pg0LAAIQ3AwAMBQsgAS0ADw0EIAEoAqxAIAEoAqhAKAIIEQEArCEFDAQLIANCCFoEfiACIAEoAgA2AgAgAiABKAIENgIEQggFQn8LIQUMAwsgAUUNAiABKAKsQCABKAKoQCgCBBEDACABEDEgARAGDAILIAdBfzYCAEEQIAcQJEI/hCEFDAELIAEEQCABQQA2AgQgAUEUNgIAC0J/IQULIAdBEGokACAFC2MAQcgAEAkiAEUEQEGEhAEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQA6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAu3fAIefwZ+IAIpAwAhIiAAIAE2AhwgACAiQv////8PICJC/////w9UGz4CICAAQRBqIQECfyAALQAEBEACfyAALQAMQQJ0IQpBfiEEAkACQAJAIAEiBUUNACAFKAIgRQ0AIAUoAiRFDQAgBSgCHCIDRQ0AIAMoAgAgBUcNAAJAAkAgAygCICIGQTlrDjkBAgICAgICAgICAgIBAgICAQICAgICAgICAgICAgICAgICAQICAgICAgICAgICAQICAgICAgICAgEACyAGQZoFRg0AIAZBKkcNAQsgCkEFSw0AAkACQCAFKAIMRQ0AIAUoAgQiAQRAIAUoAgBFDQELIAZBmgVHDQEgCkEERg0BCyAFQeDAACgCADYCGEF+DAQLIAUoAhBFDQEgAygCJCEEIAMgCjYCJAJAIAMoAhAEQCADEDACQCAFKAIQIgYgAygCECIIIAYgCEkbIgFFDQAgBSgCDCADKAIIIAEQBxogBSAFKAIMIAFqNgIMIAMgAygCCCABajYCCCAFIAUoAhQgAWo2AhQgBSAFKAIQIAFrIgY2AhAgAyADKAIQIAFrIgg2AhAgCA0AIAMgAygCBDYCCEEAIQgLIAYEQCADKAIgIQYMAgsMBAsgAQ0AIApBAXRBd0EAIApBBEsbaiAEQQF0QXdBACAEQQRKG2pKDQAgCkEERg0ADAILAkACQAJAAkACQCAGQSpHBEAgBkGaBUcNASAFKAIERQ0DDAcLIAMoAhRFBEAgA0HxADYCIAwCCyADKAI0QQx0QYDwAWshBAJAIAMoAowBQQJODQAgAygCiAEiAUEBTA0AIAFBBUwEQCAEQcAAciEEDAELQYABQcABIAFBBkYbIARyIQQLIAMoAgQgCGogBEEgciAEIAMoAmgbIgFBH3AgAXJBH3NBCHQgAUGA/gNxQQh2cjsAACADIAMoAhBBAmoiATYCECADKAJoBEAgAygCBCABaiAFKAIwIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYAACADIAMoAhBBBGo2AhALIAVBATYCMCADQfEANgIgIAUQCiADKAIQDQcgAygCICEGCwJAAkACQAJAIAZBOUYEfyADQaABakHkgAEoAgARAQAaIAMgAygCECIBQQFqNgIQIAEgAygCBGpBHzoAACADIAMoAhAiAUEBajYCECABIAMoAgRqQYsBOgAAIAMgAygCECIBQQFqNgIQIAEgAygCBGpBCDoAAAJAIAMoAhwiAUUEQCADKAIEIAMoAhBqQQA2AAAgAyADKAIQIgFBBWo2AhAgASADKAIEakEAOgAEQQIhBCADKAKIASIBQQlHBEBBBCABQQJIQQJ0IAMoAowBQQFKGyEECyADIAMoAhAiAUEBajYCECABIAMoAgRqIAQ6AAAgAyADKAIQIgFBAWo2AhAgASADKAIEakEDOgAAIANB8QA2AiAgBRAKIAMoAhBFDQEMDQsgASgCJCELIAEoAhwhCSABKAIQIQggASgCLCENIAEoAgAhBiADIAMoAhAiAUEBajYCEEECIQQgASADKAIEaiANQQBHQQF0IAZBAEdyIAhBAEdBAnRyIAlBAEdBA3RyIAtBAEdBBHRyOgAAIAMoAgQgAygCEGogAygCHCgCBDYAACADIAMoAhAiDUEEaiIGNgIQIAMoAogBIgFBCUcEQEEEIAFBAkhBAnQgAygCjAFBAUobIQQLIAMgDUEFajYCECADKAIEIAZqIAQ6AAAgAygCHCgCDCEEIAMgAygCECIBQQFqNgIQIAEgAygCBGogBDoAACADKAIcIgEoAhAEfyADKAIEIAMoAhBqIAEoAhQ7AAAgAyADKAIQQQJqNgIQIAMoAhwFIAELKAIsBEAgBQJ/IAUoAjAhBiADKAIQIQRBACADKAIEIgFFDQAaIAYgASAEQdSAASgCABEAAAs2AjALIANBxQA2AiAgA0EANgIYDAILIAMoAiAFIAYLQcUAaw4jAAQEBAEEBAQEBAQEBAQEBAQEBAQEBAIEBAQEBAQEBAQEBAMECyADKAIcIgEoAhAiBgRAIAMoAgwiCCADKAIQIgQgAS8BFCADKAIYIg1rIglqSQRAA0AgAygCBCAEaiAGIA1qIAggBGsiCBAHGiADIAMoAgwiDTYCEAJAIAMoAhwoAixFDQAgBCANTw0AIAUCfyAFKAIwIQZBACADKAIEIARqIgFFDQAaIAYgASANIARrQdSAASgCABEAAAs2AjALIAMgAygCGCAIajYCGCAFKAIcIgYQMAJAIAUoAhAiBCAGKAIQIgEgASAESxsiAUUNACAFKAIMIAYoAgggARAHGiAFIAUoAgwgAWo2AgwgBiAGKAIIIAFqNgIIIAUgBSgCFCABajYCFCAFIAUoAhAgAWs2AhAgBiAGKAIQIAFrIgE2AhAgAQ0AIAYgBigCBDYCCAsgAygCEA0MIAMoAhghDSADKAIcKAIQIQZBACEEIAkgCGsiCSADKAIMIghLDQALCyADKAIEIARqIAYgDWogCRAHGiADIAMoAhAgCWoiDTYCEAJAIAMoAhwoAixFDQAgBCANTw0AIAUCfyAFKAIwIQZBACADKAIEIARqIgFFDQAaIAYgASANIARrQdSAASgCABEAAAs2AjALIANBADYCGAsgA0HJADYCIAsgAygCHCgCHARAIAMoAhAiBCEJA0ACQCAEIAMoAgxHDQACQCADKAIcKAIsRQ0AIAQgCU0NACAFAn8gBSgCMCEGQQAgAygCBCAJaiIBRQ0AGiAGIAEgBCAJa0HUgAEoAgARAAALNgIwCyAFKAIcIgYQMAJAIAUoAhAiBCAGKAIQIgEgASAESxsiAUUNACAFKAIMIAYoAgggARAHGiAFIAUoAgwgAWo2AgwgBiAGKAIIIAFqNgIIIAUgBSgCFCABajYCFCAFIAUoAhAgAWs2AhAgBiAGKAIQIAFrIgE2AhAgAQ0AIAYgBigCBDYCCAtBACEEQQAhCSADKAIQRQ0ADAsLIAMoAhwoAhwhBiADIAMoAhgiAUEBajYCGCABIAZqLQAAIQEgAyAEQQFqNgIQIAMoAgQgBGogAToAACABBEAgAygCECEEDAELCwJAIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0EANgIYCyADQdsANgIgCwJAIAMoAhwoAiRFDQAgAygCECIEIQkDQAJAIAQgAygCDEcNAAJAIAMoAhwoAixFDQAgBCAJTQ0AIAUCfyAFKAIwIQZBACADKAIEIAlqIgFFDQAaIAYgASAEIAlrQdSAASgCABEAAAs2AjALIAUoAhwiBhAwAkAgBSgCECIEIAYoAhAiASABIARLGyIBRQ0AIAUoAgwgBigCCCABEAcaIAUgBSgCDCABajYCDCAGIAYoAgggAWo2AgggBSAFKAIUIAFqNgIUIAUgBSgCECABazYCECAGIAYoAhAgAWsiATYCECABDQAgBiAGKAIENgIIC0EAIQRBACEJIAMoAhBFDQAMCgsgAygCHCgCJCEGIAMgAygCGCIBQQFqNgIYIAEgBmotAAAhASADIARBAWo2AhAgAygCBCAEaiABOgAAIAEEQCADKAIQIQQMAQsLIAMoAhwoAixFDQAgAygCECIGIAlNDQAgBQJ/IAUoAjAhBEEAIAMoAgQgCWoiAUUNABogBCABIAYgCWtB1IABKAIAEQAACzYCMAsgA0HnADYCIAsCQCADKAIcKAIsBEAgAygCDCADKAIQIgFBAmpJBH8gBRAKIAMoAhANAkEABSABCyADKAIEaiAFKAIwOwAAIAMgAygCEEECajYCECADQaABakHkgAEoAgARAQAaCyADQfEANgIgIAUQCiADKAIQRQ0BDAcLDAYLIAUoAgQNAQsgAygCPA0AIApFDQEgAygCIEGaBUYNAQsCfyADKAKIASIBRQRAIAMgChCFAQwBCwJAAkACQCADKAKMAUECaw4CAAECCwJ/AkADQAJAAkAgAygCPA0AIAMQLyADKAI8DQAgCg0BQQAMBAsgAygCSCADKAJoai0AACEEIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qQQA6AAAgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtaiAEOgAAIAMgBEECdGoiASABLwHkAUEBajsB5AEgAyADKAI8QQFrNgI8IAMgAygCaEEBaiIBNgJoIAMoAvAtIAMoAvQtRw0BQQAhBCADIAMoAlgiBkEATgR/IAMoAkggBmoFQQALIAEgBmtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEA0BDAILCyADQQA2AoQuIApBBEYEQCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQLDAILAn8CQANAAkACQAJAAkACQCADKAI8Ig1BggJLDQAgAxAvAkAgAygCPCINQYICSw0AIAoNAEEADAgLIA1FDQQgDUECSw0AIAMoAmghCAwBCyADKAJoIghFBEBBACEIDAELIAMoAkggCGoiAUEBayIELQAAIgYgAS0AAEcNACAGIAQtAAJHDQAgBEEDaiEEQQAhCQJAA0AgBiAELQAARw0BIAQtAAEgBkcEQCAJQQFyIQkMAgsgBC0AAiAGRwRAIAlBAnIhCQwCCyAELQADIAZHBEAgCUEDciEJDAILIAQtAAQgBkcEQCAJQQRyIQkMAgsgBC0ABSAGRwRAIAlBBXIhCQwCCyAELQAGIAZHBEAgCUEGciEJDAILIAQtAAcgBkcEQCAJQQdyIQkMAgsgBEEIaiEEIAlB+AFJIQEgCUEIaiEJIAENAAtBgAIhCQtBggIhBCANIAlBAmoiASABIA1LGyIBQYECSw0BIAEiBEECSw0BCyADKAJIIAhqLQAAIQQgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEAOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIAQ6AAAgAyAEQQJ0aiIBIAEvAeQBQQFqOwHkASADIAMoAjxBAWs2AjwgAyADKAJoQQFqIgQ2AmgMAQsgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEBOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIARBA2s6AAAgAyADKAKALkEBajYCgC4gBEH9zgBqLQAAQQJ0IANqQegJaiIBIAEvAQBBAWo7AQAgA0GAywAtAABBAnRqQdgTaiIBIAEvAQBBAWo7AQAgAyADKAI8IARrNgI8IAMgAygCaCAEaiIENgJoCyADKALwLSADKAL0LUcNAUEAIQggAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyAEIAFrQQAQDyADIAMoAmg2AlggAygCABAKIAMoAgAoAhANAQwCCwsgA0EANgKELiAKQQRGBEAgAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyADKAJoIAFrQQEQDyADIAMoAmg2AlggAygCABAKQQNBAiADKAIAKAIQGwwCCyADKALwLQRAQQAhCCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEEUNAQtBASEICyAICwwBCyADIAogAUEMbEG42ABqKAIAEQIACyIBQX5xQQJGBEAgA0GaBTYCIAsgAUF9cUUEQEEAIQQgBSgCEA0CDAQLIAFBAUcNAAJAAkACQCAKQQFrDgUAAQEBAgELIAMpA5guISICfwJ+IAMoAqAuIgFBA2oiCUE/TQRAQgIgAa2GICKEDAELIAFBwABGBEAgAygCBCADKAIQaiAiNwAAIAMgAygCEEEIajYCEEICISJBCgwCCyADKAIEIAMoAhBqQgIgAa2GICKENwAAIAMgAygCEEEIajYCECABQT1rIQlCAkHAACABa62ICyEiIAlBB2ogCUE5SQ0AGiADKAIEIAMoAhBqICI3AAAgAyADKAIQQQhqNgIQQgAhIiAJQTlrCyEBIAMgIjcDmC4gAyABNgKgLiADEDAMAQsgA0EAQQBBABA5IApBA0cNACADKAJQQQBBgIAIEBkgAygCPA0AIANBADYChC4gA0EANgJYIANBADYCaAsgBRAKIAUoAhANAAwDC0EAIQQgCkEERw0AAkACfwJAAkAgAygCFEEBaw4CAQADCyAFIANBoAFqQeCAASgCABEBACIBNgIwIAMoAgQgAygCEGogATYAACADIAMoAhBBBGoiATYCECADKAIEIAFqIQQgBSgCCAwBCyADKAIEIAMoAhBqIQQgBSgCMCIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnILIQEgBCABNgAAIAMgAygCEEEEajYCEAsgBRAKIAMoAhQiAUEBTgRAIANBACABazYCFAsgAygCEEUhBAsgBAwCCyAFQezAACgCADYCGEF7DAELIANBfzYCJEEACwwBCyMAQRBrIhQkAEF+IRcCQCABIgxFDQAgDCgCIEUNACAMKAIkRQ0AIAwoAhwiB0UNACAHKAIAIAxHDQAgBygCBCIIQbT+AGtBH0sNACAMKAIMIhBFDQAgDCgCACIBRQRAIAwoAgQNAQsgCEG//gBGBEAgB0HA/gA2AgRBwP4AIQgLIAdBpAFqIR8gB0G8BmohGSAHQbwBaiEcIAdBoAFqIR0gB0G4AWohGiAHQfwKaiEYIAdBQGshHiAHKAKIASEFIAwoAgQiICEGIAcoAoQBIQogDCgCECIPIRYCfwJAAkACQANAAkBBfSEEQQEhCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhBtP4Aaw4fBwYICQolJicoBSwtLQsZGgQMAjIzATUANw0OAzlISUwLIAcoApQBIQMgASEEIAYhCAw1CyAHKAKUASEDIAEhBCAGIQgMMgsgBygCtAEhCAwuCyAHKAIMIQgMQQsgBUEOTw0pIAZFDUEgBUEIaiEIIAFBAWohBCAGQQFrIQkgAS0AACAFdCAKaiEKIAVBBkkNDCAEIQEgCSEGIAghBQwpCyAFQSBPDSUgBkUNQCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhJDQ0gBCEBIAghBgwlCyAFQRBPDRUgBkUNPyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDBULIAcoAgwiC0UNByAFQRBPDSIgBkUNPiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDCILIAVBH0sNFQwUCyAFQQ9LDRYMFQsgBygCFCIEQYAIcUUEQCAFIQgMFwsgCiEIIAVBD0sNGAwXCyAKIAVBB3F2IQogBUF4cSIFQR9LDQwgBkUNOiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0GIAQhASAJIQYgCCEFDAwLIAcoArQBIgggBygCqAEiC08NIwwiCyAPRQ0qIBAgBygCjAE6AAAgB0HI/gA2AgQgD0EBayEPIBBBAWohECAHKAIEIQgMOQsgBygCDCIDRQRAQQAhCAwJCyAFQR9LDQcgBkUNNyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0BIAQhASAJIQYgCCEFDAcLIAdBwP4ANgIEDCoLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDgLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMOAsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw4CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgCUUEQCAEIQFBACEGIAghBSANIQQMNwsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBDBwLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDYLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMNgsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAUEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw2CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgBUEIaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDDULIAFBAmohBCAGQQJrIQggAS0AASAJdCAKaiEKIAVBD0sEQCAEIQEgCCEGDBgLIAVBEGohCSAIRQRAIAQhAUEAIQYgCSEFIA0hBAw1CyABQQNqIQQgBkEDayEIIAEtAAIgCXQgCmohCiAFQQdLBEAgBCEBIAghBgwYCyAFQRhqIQUgCEUEQCAEIQFBACEGIA0hBAw1CyAGQQRrIQYgAS0AAyAFdCAKaiEKIAFBBGohAQwXCyAJDQYgBCEBQQAhBiAIIQUgDSEEDDMLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDMLIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQwUCyAMIBYgD2siCSAMKAIUajYCFCAHIAcoAiAgCWo2AiACQCADQQRxRQ0AIAkEQAJAIBAgCWshBCAMKAIcIggoAhQEQCAIQUBrIAQgCUEAQdiAASgCABEIAAwBCyAIIAgoAhwgBCAJQcCAASgCABEAACIENgIcIAwgBDYCMAsLIAcoAhRFDQAgByAeQeCAASgCABEBACIENgIcIAwgBDYCMAsCQCAHKAIMIghBBHFFDQAgBygCHCAKIApBCHRBgID8B3EgCkEYdHIgCkEIdkGA/gNxIApBGHZyciAHKAIUG0YNACAHQdH+ADYCBCAMQaQMNgIYIA8hFiAHKAIEIQgMMQtBACEKQQAhBSAPIRYLIAdBz/4ANgIEDC0LIApB//8DcSIEIApBf3NBEHZHBEAgB0HR/gA2AgQgDEGOCjYCGCAHKAIEIQgMLwsgB0HC/gA2AgQgByAENgKMAUEAIQpBACEFCyAHQcP+ADYCBAsgBygCjAEiBARAIA8gBiAEIAQgBksbIgQgBCAPSxsiCEUNHiAQIAEgCBAHIQQgByAHKAKMASAIazYCjAEgBCAIaiEQIA8gCGshDyABIAhqIQEgBiAIayEGIAcoAgQhCAwtCyAHQb/+ADYCBCAHKAIEIQgMLAsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBCyAHIAo2AhQgCkH/AXFBCEcEQCAHQdH+ADYCBCAMQYIPNgIYIAcoAgQhCAwrCyAKQYDAA3EEQCAHQdH+ADYCBCAMQY0JNgIYIAcoAgQhCAwrCyAHKAIkIgQEQCAEIApBCHZBAXE2AgALAkAgCkGABHFFDQAgBy0ADEEEcUUNACAUIAo7AAwgBwJ/IAcoAhwhBUEAIBRBDGoiBEUNABogBSAEQQJB1IABKAIAEQAACzYCHAsgB0G2/gA2AgRBACEFQQAhCgsgBkUNKCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhPBEAgBCEBIAghBgwBCyAFQQhqIQkgCEUEQCAEIQFBACEGIAkhBSANIQQMKwsgAUECaiEEIAZBAmshCCABLQABIAl0IApqIQogBUEPSwRAIAQhASAIIQYMAQsgBUEQaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDCsLIAFBA2ohBCAGQQNrIQggAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCCEGDAELIAVBGGohBSAIRQRAIAQhAUEAIQYgDSEEDCsLIAZBBGshBiABLQADIAV0IApqIQogAUEEaiEBCyAHKAIkIgQEQCAEIAo2AgQLAkAgBy0AFUECcUUNACAHLQAMQQRxRQ0AIBQgCjYADCAHAn8gBygCHCEFQQAgFEEMaiIERQ0AGiAFIARBBEHUgAEoAgARAAALNgIcCyAHQbf+ADYCBEEAIQVBACEKCyAGRQ0mIAFBAWohBCAGQQFrIQggAS0AACAFdCAKaiEKIAVBCE8EQCAEIQEgCCEGDAELIAVBCGohBSAIRQRAIAQhAUEAIQYgDSEEDCkLIAZBAmshBiABLQABIAV0IApqIQogAUECaiEBCyAHKAIkIgQEQCAEIApBCHY2AgwgBCAKQf8BcTYCCAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgFCAKOwAMIAcCfyAHKAIcIQVBACAUQQxqIgRFDQAaIAUgBEECQdSAASgCABEAAAs2AhwLIAdBuP4ANgIEQQAhCEEAIQVBACEKIAcoAhQiBEGACHENAQsgBygCJCIEBEAgBEEANgIQCyAIIQUMAgsgBkUEQEEAIQYgCCEKIA0hBAwmCyABQQFqIQkgBkEBayELIAEtAAAgBXQgCGohCiAFQQhPBEAgCSEBIAshBgwBCyAFQQhqIQUgC0UEQCAJIQFBACEGIA0hBAwmCyAGQQJrIQYgAS0AASAFdCAKaiEKIAFBAmohAQsgByAKQf//A3EiCDYCjAEgBygCJCIFBEAgBSAINgIUC0EAIQUCQCAEQYAEcUUNACAHLQAMQQRxRQ0AIBQgCjsADCAHAn8gBygCHCEIQQAgFEEMaiIERQ0AGiAIIARBAkHUgAEoAgARAAALNgIcC0EAIQoLIAdBuf4ANgIECyAHKAIUIglBgAhxBEAgBiAHKAKMASIIIAYgCEkbIg4EQAJAIAcoAiQiA0UNACADKAIQIgRFDQAgAygCGCILIAMoAhQgCGsiCE0NACAEIAhqIAEgCyAIayAOIAggDmogC0sbEAcaIAcoAhQhCQsCQCAJQYAEcUUNACAHLQAMQQRxRQ0AIAcCfyAHKAIcIQRBACABRQ0AGiAEIAEgDkHUgAEoAgARAAALNgIcCyAHIAcoAowBIA5rIgg2AowBIAYgDmshBiABIA5qIQELIAgNEwsgB0G6/gA2AgQgB0EANgKMAQsCQCAHLQAVQQhxBEBBACEIIAZFDQQDQCABIAhqLQAAIQMCQCAHKAIkIgtFDQAgCygCHCIERQ0AIAcoAowBIgkgCygCIE8NACAHIAlBAWo2AowBIAQgCWogAzoAAAsgA0EAIAYgCEEBaiIISxsNAAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgBwJ/IAcoAhwhBEEAIAFFDQAaIAQgASAIQdSAASgCABEAAAs2AhwLIAEgCGohASAGIAhrIQYgA0UNAQwTCyAHKAIkIgRFDQAgBEEANgIcCyAHQbv+ADYCBCAHQQA2AowBCwJAIActABVBEHEEQEEAIQggBkUNAwNAIAEgCGotAAAhAwJAIAcoAiQiC0UNACALKAIkIgRFDQAgBygCjAEiCSALKAIoTw0AIAcgCUEBajYCjAEgBCAJaiADOgAACyADQQAgBiAIQQFqIghLGw0ACwJAIActABVBAnFFDQAgBy0ADEEEcUUNACAHAn8gBygCHCEEQQAgAUUNABogBCABIAhB1IABKAIAEQAACzYCHAsgASAIaiEBIAYgCGshBiADRQ0BDBILIAcoAiQiBEUNACAEQQA2AiQLIAdBvP4ANgIECyAHKAIUIgtBgARxBEACQCAFQQ9LDQAgBkUNHyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEITwRAIAQhASAJIQYgCCEFDAELIAlFBEAgBCEBQQAhBiAIIQUgDSEEDCILIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQsCQCAHLQAMQQRxRQ0AIAogBy8BHEYNACAHQdH+ADYCBCAMQdcMNgIYIAcoAgQhCAwgC0EAIQpBACEFCyAHKAIkIgQEQCAEQQE2AjAgBCALQQl2QQFxNgIsCwJAIActAAxBBHFFDQAgC0UNACAHIB5B5IABKAIAEQEAIgQ2AhwgDCAENgIwCyAHQb/+ADYCBCAHKAIEIQgMHgtBACEGDA4LAkAgC0ECcUUNACAKQZ+WAkcNACAHKAIoRQRAIAdBDzYCKAtBACEKIAdBADYCHCAUQZ+WAjsADCAHIBRBDGoiBAR/QQAgBEECQdSAASgCABEAAAVBAAs2AhwgB0G1/gA2AgRBACEFIAcoAgQhCAwdCyAHKAIkIgQEQCAEQX82AjALAkAgC0EBcQRAIApBCHRBgP4DcSAKQQh2akEfcEUNAQsgB0HR/gA2AgQgDEH2CzYCGCAHKAIEIQgMHQsgCkEPcUEIRwRAIAdB0f4ANgIEIAxBgg82AhggBygCBCEIDB0LIApBBHYiBEEPcSIJQQhqIQsgCUEHTUEAIAcoAigiCAR/IAgFIAcgCzYCKCALCyALTxtFBEAgBUEEayEFIAdB0f4ANgIEIAxB+gw2AhggBCEKIAcoAgQhCAwdCyAHQQE2AhxBACEFIAdBADYCFCAHQYACIAl0NgIYIAxBATYCMCAHQb3+AEG//gAgCkGAwABxGzYCBEEAIQogBygCBCEIDBwLIAcgCkEIdEGAgPwHcSAKQRh0ciAKQQh2QYD+A3EgCkEYdnJyIgQ2AhwgDCAENgIwIAdBvv4ANgIEQQAhCkEAIQULIAcoAhBFBEAgDCAPNgIQIAwgEDYCDCAMIAY2AgQgDCABNgIAIAcgBTYCiAEgByAKNgKEAUECIRcMIAsgB0EBNgIcIAxBATYCMCAHQb/+ADYCBAsCfwJAIAcoAghFBEAgBUEDSQ0BIAUMAgsgB0HO/gA2AgQgCiAFQQdxdiEKIAVBeHEhBSAHKAIEIQgMGwsgBkUNGSAGQQFrIQYgAS0AACAFdCAKaiEKIAFBAWohASAFQQhqCyEEIAcgCkEBcTYCCAJAAkACQAJAAkAgCkEBdkEDcUEBaw4DAQIDAAsgB0HB/gA2AgQMAwsgB0Gw2wA2ApgBIAdCiYCAgNAANwOgASAHQbDrADYCnAEgB0HH/gA2AgQMAgsgB0HE/gA2AgQMAQsgB0HR/gA2AgQgDEHXDTYCGAsgBEEDayEFIApBA3YhCiAHKAIEIQgMGQsgByAKQR9xIghBgQJqNgKsASAHIApBBXZBH3EiBEEBajYCsAEgByAKQQp2QQ9xQQRqIgs2AqgBIAVBDmshBSAKQQ52IQogCEEdTUEAIARBHkkbRQRAIAdB0f4ANgIEIAxB6gk2AhggBygCBCEIDBkLIAdBxf4ANgIEQQAhCCAHQQA2ArQBCyAIIQQDQCAFQQJNBEAgBkUNGCAGQQFrIQYgAS0AACAFdCAKaiEKIAVBCGohBSABQQFqIQELIAcgBEEBaiIINgK0ASAHIARBAXRBsOwAai8BAEEBdGogCkEHcTsBvAEgBUEDayEFIApBA3YhCiALIAgiBEsNAAsLIAhBEk0EQEESIAhrIQ1BAyAIa0EDcSIEBEADQCAHIAhBAXRBsOwAai8BAEEBdGpBADsBvAEgCEEBaiEIIARBAWsiBA0ACwsgDUEDTwRAA0AgB0G8AWoiDSAIQQF0IgRBsOwAai8BAEEBdGpBADsBACANIARBsuwAai8BAEEBdGpBADsBACANIARBtOwAai8BAEEBdGpBADsBACANIARBtuwAai8BAEEBdGpBADsBACAIQQRqIghBE0cNAAsLIAdBEzYCtAELIAdBBzYCoAEgByAYNgKYASAHIBg2ArgBQQAhCEEAIBxBEyAaIB0gGRBOIg0EQCAHQdH+ADYCBCAMQfQINgIYIAcoAgQhCAwXCyAHQcb+ADYCBCAHQQA2ArQBQQAhDQsgBygCrAEiFSAHKAKwAWoiESAISwRAQX8gBygCoAF0QX9zIRIgBygCmAEhGwNAIAYhCSABIQsCQCAFIgMgGyAKIBJxIhNBAnRqLQABIg5PBEAgBSEEDAELA0AgCUUNDSALLQAAIAN0IQ4gC0EBaiELIAlBAWshCSADQQhqIgQhAyAEIBsgCiAOaiIKIBJxIhNBAnRqLQABIg5JDQALIAshASAJIQYLAkAgGyATQQJ0ai8BAiIFQQ9NBEAgByAIQQFqIgk2ArQBIAcgCEEBdGogBTsBvAEgBCAOayEFIAogDnYhCiAJIQgMAQsCfwJ/AkACQAJAIAVBEGsOAgABAgsgDkECaiIFIARLBEADQCAGRQ0bIAZBAWshBiABLQAAIAR0IApqIQogAUEBaiEBIARBCGoiBCAFSQ0ACwsgBCAOayEFIAogDnYhBCAIRQRAIAdB0f4ANgIEIAxBvAk2AhggBCEKIAcoAgQhCAwdCyAFQQJrIQUgBEECdiEKIARBA3FBA2ohCSAIQQF0IAdqLwG6AQwDCyAOQQNqIgUgBEsEQANAIAZFDRogBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQNrIQUgCiAOdiIEQQN2IQogBEEHcUEDagwBCyAOQQdqIgUgBEsEQANAIAZFDRkgBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQdrIQUgCiAOdiIEQQd2IQogBEH/AHFBC2oLIQlBAAshAyAIIAlqIBFLDRMgCUEBayEEIAlBA3EiCwRAA0AgByAIQQF0aiADOwG8ASAIQQFqIQggCUEBayEJIAtBAWsiCw0ACwsgBEEDTwRAA0AgByAIQQF0aiIEIAM7Ab4BIAQgAzsBvAEgBCADOwHAASAEIAM7AcIBIAhBBGohCCAJQQRrIgkNAAsLIAcgCDYCtAELIAggEUkNAAsLIAcvAbwFRQRAIAdB0f4ANgIEIAxB0Qs2AhggBygCBCEIDBYLIAdBCjYCoAEgByAYNgKYASAHIBg2ArgBQQEgHCAVIBogHSAZEE4iDQRAIAdB0f4ANgIEIAxB2Ag2AhggBygCBCEIDBYLIAdBCTYCpAEgByAHKAK4ATYCnAFBAiAHIAcoAqwBQQF0akG8AWogBygCsAEgGiAfIBkQTiINBEAgB0HR/gA2AgQgDEGmCTYCGCAHKAIEIQgMFgsgB0HH/gA2AgRBACENCyAHQcj+ADYCBAsCQCAGQQ9JDQAgD0GEAkkNACAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBIAwgFkHogAEoAgARBwAgBygCiAEhBSAHKAKEASEKIAwoAgQhBiAMKAIAIQEgDCgCECEPIAwoAgwhECAHKAIEQb/+AEcNByAHQX82ApBHIAcoAgQhCAwUCyAHQQA2ApBHIAUhCSAGIQggASEEAkAgBygCmAEiEiAKQX8gBygCoAF0QX9zIhVxIg5BAnRqLQABIgsgBU0EQCAFIQMMAQsDQCAIRQ0PIAQtAAAgCXQhCyAEQQFqIQQgCEEBayEIIAlBCGoiAyEJIAMgEiAKIAtqIgogFXEiDkECdGotAAEiC0kNAAsLIBIgDkECdGoiAS8BAiETAkBBACABLQAAIhEgEUHwAXEbRQRAIAshBgwBCyAIIQYgBCEBAkAgAyIFIAsgEiAKQX8gCyARanRBf3MiFXEgC3YgE2oiEUECdGotAAEiDmpPBEAgAyEJDAELA0AgBkUNDyABLQAAIAV0IQ4gAUEBaiEBIAZBAWshBiAFQQhqIgkhBSALIBIgCiAOaiIKIBVxIAt2IBNqIhFBAnRqLQABIg5qIAlLDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAs2ApBHIAsgDmohBiAJIAtrIQMgCiALdiEKIA4hCwsgByAGNgKQRyAHIBNB//8DcTYCjAEgAyALayEFIAogC3YhCiARRQRAIAdBzf4ANgIEDBALIBFBIHEEQCAHQb/+ADYCBCAHQX82ApBHDBALIBFBwABxBEAgB0HR/gA2AgQgDEHQDjYCGAwQCyAHQcn+ADYCBCAHIBFBD3EiAzYClAELAkAgA0UEQCAHKAKMASELIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNDSAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKMASAKQX8gA3RBf3NxaiILNgKMASAJIANrIQUgCiADdiEKCyAHQcr+ADYCBCAHIAs2ApRHCyAFIQkgBiEIIAEhBAJAIAcoApwBIhIgCkF/IAcoAqQBdEF/cyIVcSIOQQJ0ai0AASIDIAVNBEAgBSELDAELA0AgCEUNCiAELQAAIAl0IQMgBEEBaiEEIAhBAWshCCAJQQhqIgshCSALIBIgAyAKaiIKIBVxIg5BAnRqLQABIgNJDQALCyASIA5BAnRqIgEvAQIhEwJAIAEtAAAiEUHwAXEEQCAHKAKQRyEGIAMhCQwBCyAIIQYgBCEBAkAgCyIFIAMgEiAKQX8gAyARanRBf3MiFXEgA3YgE2oiEUECdGotAAEiCWpPBEAgCyEODAELA0AgBkUNCiABLQAAIAV0IQkgAUEBaiEBIAZBAWshBiAFQQhqIg4hBSADIBIgCSAKaiIKIBVxIAN2IBNqIhFBAnRqLQABIglqIA5LDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAcoApBHIANqIgY2ApBHIA4gA2shCyAKIAN2IQoLIAcgBiAJajYCkEcgCyAJayEFIAogCXYhCiARQcAAcQRAIAdB0f4ANgIEIAxB7A42AhggBCEBIAghBiAHKAIEIQgMEgsgB0HL/gA2AgQgByARQQ9xIgM2ApQBIAcgE0H//wNxNgKQAQsCQCADRQRAIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNCCAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKQASAKQX8gA3RBf3NxajYCkAEgCSADayEFIAogA3YhCgsgB0HM/gA2AgQLIA9FDQACfyAHKAKQASIIIBYgD2siBEsEQAJAIAggBGsiCCAHKAIwTQ0AIAcoAoxHRQ0AIAdB0f4ANgIEIAxBuQw2AhggBygCBCEIDBILAn8CQAJ/IAcoAjQiBCAISQRAIAcoAjggBygCLCAIIARrIghragwBCyAHKAI4IAQgCGtqCyILIBAgDyAQaiAQa0EBaqwiISAPIAcoAowBIgQgCCAEIAhJGyIEIAQgD0sbIgitIiIgISAiVBsiIqciCWoiBEkgCyAQT3ENACALIBBNIAkgC2ogEEtxDQAgECALIAkQBxogBAwBCyAQIAsgCyAQayIEIARBH3UiBGogBHMiCRAHIAlqIQQgIiAJrSIkfSIjUEUEQCAJIAtqIQkDQAJAICMgJCAjICRUGyIiQiBUBEAgIiEhDAELICIiIUIgfSImQgWIQgF8QgODIiVQRQRAA0AgBCAJKQAANwAAIAQgCSkAGDcAGCAEIAkpABA3ABAgBCAJKQAINwAIICFCIH0hISAJQSBqIQkgBEEgaiEEICVCAX0iJUIAUg0ACwsgJkLgAFQNAANAIAQgCSkAADcAACAEIAkpABg3ABggBCAJKQAQNwAQIAQgCSkACDcACCAEIAkpADg3ADggBCAJKQAwNwAwIAQgCSkAKDcAKCAEIAkpACA3ACAgBCAJKQBYNwBYIAQgCSkAUDcAUCAEIAkpAEg3AEggBCAJKQBANwBAIAQgCSkAYDcAYCAEIAkpAGg3AGggBCAJKQBwNwBwIAQgCSkAeDcAeCAJQYABaiEJIARBgAFqIQQgIUKAAX0iIUIfVg0ACwsgIUIQWgRAIAQgCSkAADcAACAEIAkpAAg3AAggIUIQfSEhIAlBEGohCSAEQRBqIQQLICFCCFoEQCAEIAkpAAA3AAAgIUIIfSEhIAlBCGohCSAEQQhqIQQLICFCBFoEQCAEIAkoAAA2AAAgIUIEfSEhIAlBBGohCSAEQQRqIQQLICFCAloEQCAEIAkvAAA7AAAgIUICfSEhIAlBAmohCSAEQQJqIQQLICMgIn0hIyAhUEUEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAsgI0IAUg0ACwsgBAsMAQsgECAIIA8gBygCjAEiBCAEIA9LGyIIIA9ByIABKAIAEQQACyEQIAcgBygCjAEgCGsiBDYCjAEgDyAIayEPIAQNAiAHQcj+ADYCBCAHKAIEIQgMDwsgDSEJCyAJIQQMDgsgBygCBCEIDAwLIAEgBmohASAFIAZBA3RqIQUMCgsgBCAIaiEBIAUgCEEDdGohBQwJCyAEIAhqIQEgCyAIQQN0aiEFDAgLIAEgBmohASAFIAZBA3RqIQUMBwsgBCAIaiEBIAUgCEEDdGohBQwGCyAEIAhqIQEgAyAIQQN0aiEFDAULIAEgBmohASAFIAZBA3RqIQUMBAsgB0HR/gA2AgQgDEG8CTYCGCAHKAIEIQgMBAsgBCEBIAghBiAHKAIEIQgMAwtBACEGIAQhBSANIQQMAwsCQAJAIAhFBEAgCiEJDAELIAcoAhRFBEAgCiEJDAELAkAgBUEfSw0AIAZFDQMgBUEIaiEJIAFBAWohBCAGQQFrIQsgAS0AACAFdCAKaiEKIAVBGE8EQCAEIQEgCyEGIAkhBQwBCyALRQRAIAQhAUEAIQYgCSEFIA0hBAwGCyAFQRBqIQsgAUECaiEEIAZBAmshAyABLQABIAl0IApqIQogBUEPSwRAIAQhASADIQYgCyEFDAELIANFBEAgBCEBQQAhBiALIQUgDSEEDAYLIAVBGGohCSABQQNqIQQgBkEDayEDIAEtAAIgC3QgCmohCiAFQQdLBEAgBCEBIAMhBiAJIQUMAQsgA0UEQCAEIQFBACEGIAkhBSANIQQMBgsgBUEgaiEFIAZBBGshBiABLQADIAl0IApqIQogAUEEaiEBC0EAIQkgCEEEcQRAIAogBygCIEcNAgtBACEFCyAHQdD+ADYCBEEBIQQgCSEKDAMLIAdB0f4ANgIEIAxBjQw2AhggBygCBCEIDAELC0EAIQYgDSEECyAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBAkAgBygCLA0AIA8gFkYNAiAHKAIEIgFB0P4ASw0CIAFBzv4ASQ0ACwJ/IBYgD2shCiAHKAIMQQRxIQkCQAJAAkAgDCgCHCIDKAI4Ig1FBEBBASEIIAMgAygCACIBKAIgIAEoAiggAygCmEdBASADKAIodGpBARAoIg02AjggDUUNAQsgAygCLCIGRQRAIANCADcDMCADQQEgAygCKHQiBjYCLAsgBiAKTQRAAkAgCQRAAkAgBiAKTw0AIAogBmshBSAQIAprIQEgDCgCHCIGKAIUBEAgBkFAayABIAVBAEHYgAEoAgARCAAMAQsgBiAGKAIcIAEgBUHAgAEoAgARAAAiATYCHCAMIAE2AjALIAMoAiwiDUUNASAQIA1rIQUgAygCOCEBIAwoAhwiBigCFARAIAZBQGsgASAFIA1B3IABKAIAEQgADAILIAYgBigCHCABIAUgDUHEgAEoAgARBAAiATYCHCAMIAE2AjAMAQsgDSAQIAZrIAYQBxoLIANBADYCNCADIAMoAiw2AjBBAAwECyAKIAYgAygCNCIFayIBIAEgCksbIQsgECAKayEGIAUgDWohBQJAIAkEQAJAIAtFDQAgDCgCHCIBKAIUBEAgAUFAayAFIAYgC0HcgAEoAgARCAAMAQsgASABKAIcIAUgBiALQcSAASgCABEEACIBNgIcIAwgATYCMAsgCiALayIFRQ0BIBAgBWshBiADKAI4IQEgDCgCHCINKAIUBEAgDUFAayABIAYgBUHcgAEoAgARCAAMBQsgDSANKAIcIAEgBiAFQcSAASgCABEEACIBNgIcIAwgATYCMAwECyAFIAYgCxAHGiAKIAtrIgUNAgtBACEIIANBACADKAI0IAtqIgUgBSADKAIsIgFGGzYCNCABIAMoAjAiAU0NACADIAEgC2o2AjALIAgMAgsgAygCOCAQIAVrIAUQBxoLIAMgBTYCNCADIAMoAiw2AjBBAAtFBEAgDCgCECEPIAwoAgQhFyAHKAKIAQwDCyAHQdL+ADYCBAtBfCEXDAILIAYhFyAFCyEFIAwgICAXayIBIAwoAghqNgIIIAwgFiAPayIGIAwoAhRqNgIUIAcgBygCICAGajYCICAMIAcoAghBAEdBBnQgBWogBygCBCIFQb/+AEZBB3RqQYACIAVBwv4ARkEIdCAFQcf+AEYbajYCLCAEIARBeyAEGyABIAZyGyEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu5AQEEfyAAQRBqIQECfyAALQAEBEAgARCEAQwBC0F+IQMCQCABRQ0AIAEoAiBFDQAgASgCJCIERQ0AIAEoAhwiAkUNACACKAIAIAFHDQAgAigCBEG0/gBrQR9LDQAgAigCOCIDBEAgBCABKAIoIAMQHiABKAIkIQQgASgCHCECCyAEIAEoAiggAhAeQQAhAyABQQA2AhwLIAMLIgEEQCAAKAIAIgAEQCAAIAE2AgQgAEENNgIACwsgAUUL0gwBBn8gAEIANwIQIABCADcCHCAAQRBqIQICfyAALQAEBEAgACgCCCEBQesMLQAAQTFGBH8Cf0F+IQMCQCACRQ0AIAJBADYCGCACKAIgIgRFBEAgAkEANgIoIAJBJzYCIEEnIQQLIAIoAiRFBEAgAkEoNgIkC0EGIAEgAUF/RhsiBUEASA0AIAVBCUoNAEF8IQMgBCACKAIoQQFB0C4QKCIBRQ0AIAIgATYCHCABIAI2AgAgAUEPNgI0IAFCgICAgKAFNwIcIAFBADYCFCABQYCAAjYCMCABQf//ATYCOCABIAIoAiAgAigCKEGAgAJBAhAoNgJIIAEgAigCICACKAIoIAEoAjBBAhAoIgM2AkwgA0EAIAEoAjBBAXQQGSACKAIgIAIoAihBgIAEQQIQKCEDIAFBgIACNgLoLSABQQA2AkAgASADNgJQIAEgAigCICACKAIoQYCAAkEEECgiAzYCBCABIAEoAugtIgRBAnQ2AgwCQAJAIAEoAkhFDQAgASgCTEUNACABKAJQRQ0AIAMNAQsgAUGaBTYCICACQejAACgCADYCGCACEIQBGkF8DAILIAFBADYCjAEgASAFNgKIASABQgA3AyggASADIARqNgLsLSABIARBA2xBA2s2AvQtQX4hAwJAIAJFDQAgAigCIEUNACACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQACQAJAIAEoAiAiBEE5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgBEGaBUYNACAEQSpHDQELIAJBAjYCLCACQQA2AgggAkIANwIUIAFBADYCECABIAEoAgQ2AgggASgCFCIDQX9MBEAgAUEAIANrIgM2AhQLIAFBOUEqIANBAkYbNgIgIAIgA0ECRgR/IAFBoAFqQeSAASgCABEBAAVBAQs2AjAgAUF+NgIkIAFBADYCoC4gAUIANwOYLiABQYgXakGg0wA2AgAgASABQcwVajYCgBcgAUH8FmpBjNMANgIAIAEgAUHYE2o2AvQWIAFB8BZqQfjSADYCACABIAFB5AFqNgLoFiABEIgBQQAhAwsgAw0AIAIoAhwiAiACKAIwQQF0NgJEQQAhAyACKAJQQQBBgIAIEBkgAiACKAKIASIEQQxsIgFBtNgAai8BADYClAEgAiABQbDYAGovAQA2ApABIAIgAUGy2ABqLwEANgJ4IAIgAUG22ABqLwEANgJ0QfiAASgCACEFQeyAASgCACEGQYCBASgCACEBIAJCADcCbCACQgA3AmQgAkEANgI8IAJBADYChC4gAkIANwJUIAJBKSABIARBCUYiARs2AnwgAkEqIAYgARs2AoABIAJBKyAFIAEbNgKEAQsgAwsFQXoLDAELAn9BekHrDC0AAEExRw0AGkF+IAJFDQAaIAJBADYCGCACKAIgIgNFBEAgAkEANgIoIAJBJzYCIEEnIQMLIAIoAiRFBEAgAkEoNgIkC0F8IAMgAigCKEEBQaDHABAoIgRFDQAaIAIgBDYCHCAEQQA2AjggBCACNgIAIARBtP4ANgIEIARBzIABKAIAEQkANgKYR0F+IQMCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiBgRAIAEoAihBD0cNAQsgAUEPNgIoIAFBADYCDAwBCyAFIAIoAiggBhAeIAFBADYCOCACKAIgIQUgAUEPNgIoIAFBADYCDCAFRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEDIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQrT+ADcCBCABQgA3AoQBIAFBADYCJCABQoCAgoAQNwMYIAFCgICAgHA3AxAgAUKBgICAcDcCjEcgASABQfwKaiIFNgK4ASABIAU2ApwBIAEgBTYCmAELQQAgA0UNABogAigCJCACKAIoIAQQHiACQQA2AhwgAwsLIgIEQCAAKAIAIgAEQCAAIAI2AgQgAEENNgIACwsgAkULKQEBfyAALQAERQRAQQAPC0ECIQEgACgCCCIAQQNOBH8gAEEHSgVBAgsLBgAgABAGC2MAQcgAEAkiAEUEQEGEhAEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQE6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAukCgIIfwF+QfCAAUH0gAEgACgCdEGBCEkbIQYCQANAAkACfwJAIAAoAjxBhQJLDQAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNAiACQQRPDQBBAAwBCyAAIAAoAmggACgChAERAgALIQMgACAAKAJsOwFgQQIhAgJAIAA1AmggA619IgpCAVMNACAKIAAoAjBBhgJrrVUNACAAKAJwIAAoAnhPDQAgA0UNACAAIAMgBigCABECACICQQVLDQBBAiACIAAoAowBQQFGGyECCwJAIAAoAnAiA0EDSQ0AIAIgA0sNACAAIAAoAvAtIgJBAWo2AvAtIAAoAjwhBCACIAAoAuwtaiAAKAJoIgcgAC8BYEF/c2oiAjoAACAAIAAoAvAtIgVBAWo2AvAtIAUgACgC7C1qIAJBCHY6AAAgACAAKALwLSIFQQFqNgLwLSAFIAAoAuwtaiADQQNrOgAAIAAgACgCgC5BAWo2AoAuIANB/c4Aai0AAEECdCAAakHoCWoiAyADLwEAQQFqOwEAIAAgAkEBayICIAJBB3ZBgAJqIAJBgAJJG0GAywBqLQAAQQJ0akHYE2oiAiACLwEAQQFqOwEAIAAgACgCcCIFQQFrIgM2AnAgACAAKAI8IANrNgI8IAAoAvQtIQggACgC8C0hCSAEIAdqQQNrIgQgACgCaCICSwRAIAAgAkEBaiAEIAJrIgIgBUECayIEIAIgBEkbIAAoAoABEQUAIAAoAmghAgsgAEEANgJkIABBADYCcCAAIAIgA2oiBDYCaCAIIAlHDQJBACECIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgBCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQIMAwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAyAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qQQA6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtakEAOgAAIAAgACgC8C0iBEEBajYC8C0gBCAAKALsLWogAzoAACAAIANBAnRqIgMgAy8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRgRAIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgACgCaCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCgsgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwgACgCACgCEA0CQQAPBSAAQQE2AmQgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwMAgsACwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAiAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtakEAOgAAIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWogAjoAACAAIAJBAnRqIgIgAi8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRhogAEEANgJkCyAAIAAoAmgiA0ECIANBAkkbNgKELiABQQRGBEAgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyADIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACECIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgAyABa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0BC0EBIQILIAIL2BACEH8BfiAAKAKIAUEFSCEOA0ACQAJ/AkACQAJAAn8CQAJAIAAoAjxBhQJNBEAgABAvIAAoAjwiA0GFAksNASABDQFBAA8LIA4NASAIIQMgBSEHIAohDSAGQf//A3FFDQEMAwsgA0UNA0EAIANBBEkNARoLIAAgACgCaEH4gAEoAgARAgALIQZBASECQQAhDSAAKAJoIgOtIAatfSISQgFTDQIgEiAAKAIwQYYCa61VDQIgBkUNAiAAIAZB8IABKAIAEQIAIgZBASAGQfz/A3EbQQEgACgCbCINQf//A3EgA0H//wNxSRshBiADIQcLAkAgACgCPCIEIAZB//8DcSICQQRqTQ0AIAZB//8DcUEDTQRAQQEgBkEBa0H//wNxIglFDQQaIANB//8DcSIEIAdBAWpB//8DcSIDSw0BIAAgAyAJIAQgA2tBAWogAyAJaiAESxtB7IABKAIAEQUADAELAkAgACgCeEEEdCACSQ0AIARBBEkNACAGQQFrQf//A3EiDCAHQQFqQf//A3EiBGohCSAEIANB//8DcSIDTwRAQeyAASgCACELIAMgCUkEQCAAIAQgDCALEQUADAMLIAAgBCADIARrQQFqIAsRBQAMAgsgAyAJTw0BIAAgAyAJIANrQeyAASgCABEFAAwBCyAGIAdqQf//A3EiA0UNACAAIANBAWtB+IABKAIAEQIAGgsgBgwCCyAAIAAoAmgiBUECIAVBAkkbNgKELiABQQRGBEBBACEDIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgBSABa0EBEA8gACAAKAJoNgJYIAAoAgAQCkEDQQIgACgCACgCEBsPCyAAKALwLQRAQQAhAkEAIQMgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAFIAFrQQAQDyAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQMLQQEhAgwCCyADIQdBAQshBEEAIQYCQCAODQAgACgCPEGHAkkNACACIAdB//8DcSIQaiIDIAAoAkRBhgJrTw0AIAAgAzYCaEEAIQogACADQfiAASgCABECACEFAn8CQCAAKAJoIgitIAWtfSISQgFTDQAgEiAAKAIwQYYCa61VDQAgBUUNACAAIAVB8IABKAIAEQIAIQYgAC8BbCIKIAhB//8DcSIFTw0AIAZB//8DcSIDQQRJDQAgCCAEQf//A3FBAkkNARogCCACIApBAWpLDQEaIAggAiAFQQFqSw0BGiAIIAAoAkgiCSACa0EBaiICIApqLQAAIAIgBWotAABHDQEaIAggCUEBayICIApqIgwtAAAgAiAFaiIPLQAARw0BGiAIIAUgCCAAKAIwQYYCayICa0H//wNxQQAgAiAFSRsiEU0NARogCCADQf8BSw0BGiAGIQUgCCECIAQhAyAIIAoiCUECSQ0BGgNAAkAgA0EBayEDIAVBAWohCyAJQQFrIQkgAkEBayECIAxBAWsiDC0AACAPQQFrIg8tAABHDQAgA0H//wNxRQ0AIBEgAkH//wNxTw0AIAVB//8DcUH+AUsNACALIQUgCUH//wNxQQFLDQELCyAIIANB//8DcUEBSw0BGiAIIAtB//8DcUECRg0BGiAIQQFqIQggAyEEIAshBiAJIQogAgwBC0EBIQYgCAshBSAAIBA2AmgLAn8gBEH//wNxIgNBA00EQCAEQf//A3EiA0UNAyAAKAJIIAdB//8DcWotAAAhBCAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBDoAACAAIARBAnRqIgRB5AFqIAQvAeQBQQFqOwEAIAAgACgCPEEBazYCPCAAKALwLSICIAAoAvQtRiIEIANBAUYNARogACgCSCAHQQFqQf//A3FqLQAAIQkgACACQQFqNgLwLSAAKALsLSACakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAk6AAAgACAJQQJ0aiICQeQBaiACLwHkAUEBajsBACAAIAAoAjxBAWs2AjwgBCAAKALwLSICIAAoAvQtRmoiBCADQQJGDQEaIAAoAkggB0ECakH//wNxai0AACEHIAAgAkEBajYC8C0gACgC7C0gAmpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHOgAAIAAgB0ECdGoiB0HkAWogBy8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAQgACgC8C0gACgC9C1GagwBCyAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAdB//8DcSANQf//A3FrIgc6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHQQh2OgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBEEDazoAACAAIAAoAoAuQQFqNgKALiADQf3OAGotAABBAnQgAGpB6AlqIgQgBC8BAEEBajsBACAAIAdBAWsiBCAEQQd2QYACaiAEQYACSRtBgMsAai0AAEECdGpB2BNqIgQgBC8BAEEBajsBACAAIAAoAjwgA2s2AjwgACgC8C0gACgC9C1GCyEEIAAgACgCaCADaiIHNgJoIARFDQFBACECQQAhBCAAIAAoAlgiA0EATgR/IAAoAkggA2oFQQALIAcgA2tBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEA0BCwsgAgu0BwIEfwF+AkADQAJAAkACQAJAIAAoAjxBhQJNBEAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNBCACQQRJDQELIAAgACgCaEH4gAEoAgARAgAhAiAANQJoIAKtfSIGQgFTDQAgBiAAKAIwQYYCa61VDQAgAkUNACAAIAJB8IABKAIAEQIAIgJBBEkNACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qIAAoAmggACgCbGsiAzoAACAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qIANBCHY6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtaiACQQNrOgAAIAAgACgCgC5BAWo2AoAuIAJB/c4Aai0AAEECdCAAakHoCWoiBCAELwEAQQFqOwEAIAAgA0EBayIDIANBB3ZBgAJqIANBgAJJG0GAywBqLQAAQQJ0akHYE2oiAyADLwEAQQFqOwEAIAAgACgCPCACayIFNgI8IAAoAvQtIQMgACgC8C0hBCAAKAJ4IAJPQQAgBUEDSxsNASAAIAAoAmggAmoiAjYCaCAAIAJBAWtB+IABKAIAEQIAGiADIARHDQQMAgsgACgCSCAAKAJoai0AACECIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWpBADoAACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtaiACOgAAIAAgAkECdGoiAkHkAWogAi8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAAgACgCaEEBajYCaCAAKALwLSAAKAL0LUcNAwwBCyAAIAAoAmhBAWoiBTYCaCAAIAUgAkEBayICQeyAASgCABEFACAAIAAoAmggAmo2AmggAyAERw0CC0EAIQNBACECIAAgACgCWCIEQQBOBH8gACgCSCAEagVBAAsgACgCaCAEa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQEMAgsLIAAgACgCaCIEQQIgBEECSRs2AoQuIAFBBEYEQEEAIQIgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAEIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACEDQQAhAiAAIAAoAlgiAUEATgR/IAAoAkggAWoFQQALIAQgAWtBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEEUNAQtBASEDCyADC80JAgl/An4gAUEERiEGIAAoAiwhAgJAAkACQCABQQRGBEAgAkECRg0CIAIEQCAAQQAQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0ECyAAIAYQTyAAQQI2AiwMAQsgAg0BIAAoAjxFDQEgACAGEE8gAEEBNgIsCyAAIAAoAmg2AlgLQQJBASABQQRGGyEKA0ACQCAAKAIMIAAoAhBBCGpLDQAgACgCABAKIAAoAgAiAigCEA0AQQAhAyABQQRHDQIgAigCBA0CIAAoAqAuDQIgACgCLEVBAXQPCwJAAkAgACgCPEGFAk0EQCAAEC8CQCAAKAI8IgNBhQJLDQAgAQ0AQQAPCyADRQ0CIAAoAiwEfyADBSAAIAYQTyAAIAo2AiwgACAAKAJoNgJYIAAoAjwLQQRJDQELIAAgACgCaEH4gAEoAgARAgAhBCAAKAJoIgKtIAStfSILQgFTDQAgCyAAKAIwQYYCa61VDQAgAiAAKAJIIgJqIgMvAAAgAiAEaiICLwAARw0AIANBAmogAkECakHQgAEoAgARAgBBAmoiA0EESQ0AIAAoAjwiAiADIAIgA0kbIgJBggIgAkGCAkkbIgdB/c4Aai0AACICQQJ0IgRBhMkAajMBACEMIARBhskAai8BACEDIAJBCGtBE00EQCAHQQNrIARBgNEAaigCAGutIAOthiAMhCEMIARBsNYAaigCACADaiEDCyAAKAKgLiEFIAMgC6dBAWsiCCAIQQd2QYACaiAIQYACSRtBgMsAai0AACICQQJ0IglBgsoAai8BAGohBCAJQYDKAGozAQAgA62GIAyEIQsgACkDmC4hDAJAIAUgAkEESQR/IAQFIAggCUGA0gBqKAIAa60gBK2GIAuEIQsgCUGw1wBqKAIAIARqCyICaiIDQT9NBEAgCyAFrYYgDIQhCwwBCyAFQcAARgRAIAAoAgQgACgCEGogDDcAACAAIAAoAhBBCGo2AhAgAiEDDAELIAAoAgQgACgCEGogCyAFrYYgDIQ3AAAgACAAKAIQQQhqNgIQIANBQGohAyALQcAAIAVrrYghCwsgACALNwOYLiAAIAM2AqAuIAAgACgCPCAHazYCPCAAIAAoAmggB2o2AmgMAgsgACgCSCAAKAJoai0AAEECdCICQYDBAGozAQAhCyAAKQOYLiEMAkAgACgCoC4iBCACQYLBAGovAQAiAmoiA0E/TQRAIAsgBK2GIAyEIQsMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIAw3AAAgACAAKAIQQQhqNgIQIAIhAwwBCyAAKAIEIAAoAhBqIAsgBK2GIAyENwAAIAAgACgCEEEIajYCECADQUBqIQMgC0HAACAEa62IIQsLIAAgCzcDmC4gACADNgKgLiAAIAAoAmhBAWo2AmggACAAKAI8QQFrNgI8DAELCyAAIAAoAmgiAkECIAJBAkkbNgKELiAAKAIsIQIgAUEERgRAAkAgAkUNACAAQQEQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQBBAg8LQQMPCyACBEBBACEDIABBABBQIABBADYCLCAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQELQQEhAwsgAwucAQEFfyACQQFOBEAgAiAAKAJIIAFqIgNqQQJqIQQgA0ECaiECIAAoAlQhAyAAKAJQIQUDQCAAIAItAAAgA0EFdEHg/wFxcyIDNgJUIAUgA0EBdGoiBi8BACIHIAFB//8DcUcEQCAAKAJMIAEgACgCOHFB//8DcUEBdGogBzsBACAGIAE7AQALIAFBAWohASACQQFqIgIgBEkNAAsLC1sBAn8gACAAKAJIIAFqLQACIAAoAlRBBXRB4P8BcXMiAjYCVCABIAAoAlAgAkEBdGoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILEwAgAUEFdEHg/wFxIAJB/wFxcwsGACABEAYLLwAjAEEQayIAJAAgAEEMaiABIAJsEIwBIQEgACgCDCECIABBEGokAEEAIAIgARsLjAoCAX4CfyMAQfAAayIGJAACQAJAAkACQAJAAkACQAJAIAQODwABBwIEBQYGBgYGBgYGAwYLQn8hBQJAIAAgBkHkAGpCDBARIgNCf1cEQCABBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMAQsCQCADQgxSBEAgAQRAIAFBADYCBCABQRE2AgALDAELIAEoAhQhBEEAIQJCASEFA0AgBkHkAGogAmoiAiACLQAAIARB/f8DcSICQQJyIAJBA3NsQQh2cyICOgAAIAYgAjoAKCABAn8gASgCDEF/cyECQQAgBkEoaiIERQ0AGiACIARBAUHUgAEoAgARAAALQX9zIgI2AgwgASABKAIQIAJB/wFxakGFiKLAAGxBAWoiAjYCECAGIAJBGHY6ACggAQJ/IAEoAhRBf3MhAkEAIAZBKGoiBEUNABogAiAEQQFB1IABKAIAEQAAC0F/cyIENgIUIAVCDFIEQCAFpyECIAVCAXwhBQwBCwtCACEFIAAgBkEoahAhQQBIDQEgBigCUCEAIwBBEGsiAiQAIAIgADYCDCAGAn8gAkEMahCNASIARQRAIAZBITsBJEEADAELAn8gACgCFCIEQdAATgRAIARBCXQMAQsgAEHQADYCFEGAwAILIQQgBiAAKAIMIAQgACgCEEEFdGpqQaDAAWo7ASQgACgCBEEFdCAAKAIIQQt0aiAAKAIAQQF2ags7ASYgAkEQaiQAIAYtAG8iACAGLQBXRg0BIAYtACcgAEYNASABBEAgAUEANgIEIAFBGzYCAAsLQn8hBQsgBkHwAGokACAFDwtCfyEFIAAgAiADEBEiA0J/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwGCyMAQRBrIgAkAAJAIANQDQAgASgCFCEEIAJFBEBCASEFA0AgACACIAdqLQAAIARB/f8DcSIEQQJyIARBA3NsQQh2czoADyABAn8gASgCDEF/cyEEQQAgAEEPaiIHRQ0AGiAEIAdBAUHUgAEoAgARAAALQX9zIgQ2AgwgASABKAIQIARB/wFxakGFiKLAAGxBAWoiBDYCECAAIARBGHY6AA8gAQJ/IAEoAhRBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIUIAMgBVENAiAFpyEHIAVCAXwhBQwACwALQgEhBQNAIAAgAiAHai0AACAEQf3/A3EiBEECciAEQQNzbEEIdnMiBDoADyACIAdqIAQ6AAAgAQJ/IAEoAgxBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIMIAEgASgCECAEQf8BcWpBhYiiwABsQQFqIgQ2AhAgACAEQRh2OgAPIAECfyABKAIUQX9zIQRBACAAQQ9qIgdFDQAaIAQgB0EBQdSAASgCABEAAAtBf3MiBDYCFCADIAVRDQEgBachByAFQgF8IQUMAAsACyAAQRBqJAAgAyEFDAULIAJBADsBMiACIAIpAwAiA0KAAYQ3AwAgA0IIg1ANBCACIAIpAyBCDH03AyAMBAsgBkKFgICAcDcDECAGQoOAgIDAADcDCCAGQoGAgIAgNwMAQQAgBhAkIQUMAwsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwCCyABEAYMAQsgAQRAIAFBADYCBCABQRI2AgALQn8hBQsgBkHwAGokACAFC60DAgJ/An4jAEEQayIGJAACQAJAAkAgBEUNACABRQ0AIAJBAUYNAQtBACEDIABBCGoiAARAIABBADYCBCAAQRI2AgALDAELIANBAXEEQEEAIQMgAEEIaiIABEAgAEEANgIEIABBGDYCAAsMAQtBGBAJIgVFBEBBACEDIABBCGoiAARAIABBADYCBCAAQQ42AgALDAELIAVBADYCCCAFQgA3AgAgBUGQ8dmiAzYCFCAFQvis0ZGR8dmiIzcCDAJAIAQQIiICRQ0AIAKtIQhBACEDQYfTru5+IQJCASEHA0AgBiADIARqLQAAOgAPIAUgBkEPaiIDBH8gAiADQQFB1IABKAIAEQAABUEAC0F/cyICNgIMIAUgBSgCECACQf8BcWpBhYiiwABsQQFqIgI2AhAgBiACQRh2OgAPIAUCfyAFKAIUQX9zIQJBACAGQQ9qIgNFDQAaIAIgA0EBQdSAASgCABEAAAtBf3M2AhQgByAIUQ0BIAUoAgxBf3MhAiAHpyEDIAdCAXwhBwwACwALIAAgAUElIAUQQiIDDQAgBRAGQQAhAwsgBkEQaiQAIAMLnRoCBn4FfyMAQdAAayILJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDhQFBhULAwQJDgACCBAKDw0HEQERDBELAkBByAAQCSIBBEAgAUIANwMAIAFCADcDMCABQQA2AiggAUIANwMgIAFCADcDGCABQgA3AxAgAUIANwMIIAFCADcDOCABQQgQCSIDNgIEIAMNASABEAYgAARAIABBADYCBCAAQQ42AgALCyAAQQA2AhQMFAsgA0IANwMAIAAgATYCFCABQUBrQgA3AwAgAUIANwM4DBQLAkACQCACUARAQcgAEAkiA0UNFCADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAJIgE2AgQgAQ0BIAMQBiAABEAgAEEANgIEIABBDjYCAAsMFAsgAiAAKAIQIgEpAzBWBEAgAARAIABBADYCBCAAQRI2AgALDBQLIAEoAigEQCAABEAgAEEANgIEIABBHTYCAAsMFAsgASgCBCEDAkAgASkDCCIGQgF9IgdQDQADQAJAIAIgAyAHIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQcMAQsgBSAGUQRAIAYhBQwDCyADIAVCAXwiBKdBA3RqKQMAIAJWDQILIAQhBSAEIAdUDQALCwJAIAIgAyAFpyIKQQN0aikDAH0iBFBFBEAgASgCACIDIApBBHRqKQMIIQcMAQsgASgCACIDIAVCAX0iBadBBHRqKQMIIgchBAsgAiAHIAR9VARAIAAEQCAAQQA2AgQgAEEcNgIACwwUCyADIAVCAXwiBUEAIAAQiQEiA0UNEyADKAIAIAMoAggiCkEEdGpBCGsgBDcDACADKAIEIApBA3RqIAI3AwAgAyACNwMwIAMgASkDGCIGIAMpAwgiBEIBfSIHIAYgB1QbNwMYIAEgAzYCKCADIAE2AiggASAENwMgIAMgBTcDIAwBCyABQgA3AwALIAAgAzYCFCADIAQ3A0AgAyACNwM4QgAhBAwTCyAAKAIQIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAKAIUIQEgAEEANgIUIAAgATYCEAwSCyACQghaBH4gASAAKAIANgIAIAEgACgCBDYCBEIIBUJ/CyEEDBELIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAQBgwQCyAAKAIQIgBCADcDOCAAQUBrQgA3AwAMDwsgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwOCyACIAAoAhAiAykDMCADKQM4IgZ9IgUgAiAFVBsiBVANDiABIAMpA0AiB6ciAEEEdCIBIAMoAgBqIgooAgAgBiADKAIEIABBA3RqKQMAfSICp2ogBSAKKQMIIAJ9IgYgBSAGVBsiBKcQByEKIAcgBCADKAIAIgAgAWopAwggAn1RrXwhAiAFIAZWBEADQCAKIASnaiAAIAKnQQR0IgFqIgAoAgAgBSAEfSIGIAApAwgiByAGIAdUGyIGpxAHGiACIAYgAygCACIAIAFqKQMIUa18IQIgBSAEIAZ8IgRWDQALCyADIAI3A0AgAyADKQM4IAR8NwM4DA4LQn8hBEHIABAJIgNFDQ0gA0IANwMAIANCADcDMCADQQA2AiggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDOCADQQgQCSIBNgIEIAFFBEAgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwOCyABQgA3AwAgACgCECIBBEACQCABKAIoIgpFBEAgASkDGCEEDAELIApBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgQ3AxgLIAEpAwggBFYEQANAIAEoAgAgBKdBBHRqKAIAEAYgBEIBfCIEIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACADNgIQQgAhBAwNCyAAKAIUIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAQQA2AhQMDAsgACgCECIDKQM4IAMpAzAgASACIAAQRCIHQgBTDQogAyAHNwM4AkAgAykDCCIGQgF9IgJQDQAgAygCBCEAA0ACQCAHIAAgAiAEfUIBiCAEfCIFp0EDdGopAwBUBEAgBUIBfSECDAELIAUgBlEEQCAGIQUMAwsgACAFQgF8IgSnQQN0aikDACAHVg0CCyAEIQUgAiAEVg0ACwsgAyAFNwNAQgAhBAwLCyAAKAIUIgMpAzggAykDMCABIAIgABBEIgdCAFMNCSADIAc3AzgCQCADKQMIIgZCAX0iAlANACADKAIEIQADQAJAIAcgACACIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQIMAQsgBSAGUQRAIAYhBQwDCyAAIAVCAXwiBKdBA3RqKQMAIAdWDQILIAQhBSACIARWDQALCyADIAU3A0BCACEEDAoLIAJCN1gEQCAABEAgAEEANgIEIABBEjYCAAsMCQsgARAqIAEgACgCDDYCKCAAKAIQKQMwIQIgAUEANgIwIAEgAjcDICABIAI3AxggAULcATcDAEI4IQQMCQsgACABKAIANgIMDAgLIAtBQGtBfzYCACALQouAgICwAjcDOCALQoyAgIDQATcDMCALQo+AgICgATcDKCALQpGAgICQATcDICALQoeAgICAATcDGCALQoWAgIDgADcDECALQoOAgIDAADcDCCALQoGAgIAgNwMAQQAgCxAkIQQMBwsgACgCECkDOCIEQn9VDQYgAARAIABBPTYCBCAAQR42AgALDAULIAAoAhQpAzgiBEJ/VQ0FIAAEQCAAQT02AgQgAEEeNgIACwwEC0J/IQQgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwFCyACIAAoAhQiAykDOCACfCIFQv//A3wiBFYEQCAABEAgAEEANgIEIABBEjYCAAsMBAsCQCAFIAMoAgQiCiADKQMIIganQQN0aikDACIHWA0AAkAgBCAHfUIQiCAGfCIIIAMpAxAiCVgNAEIQIAkgCVAbIQUDQCAFIgRCAYYhBSAEIAhUDQALIAQgCVQNACADKAIAIASnIgpBBHQQNCIMRQ0DIAMgDDYCACADKAIEIApBA3RBCGoQNCIKRQ0DIAMgBDcDECADIAo2AgQgAykDCCEGCyAGIAhaDQAgAygCACEMA0AgDCAGp0EEdGoiDUGAgAQQCSIONgIAIA5FBEAgAARAIABBADYCBCAAQQ42AgALDAYLIA1CgIAENwMIIAMgBkIBfCIFNwMIIAogBadBA3RqIAdCgIAEfCIHNwMAIAMpAwgiBiAIVA0ACwsgAykDQCEFIAMpAzghBwJAIAJQBEBCACEEDAELIAWnIgBBBHQiDCADKAIAaiINKAIAIAcgCiAAQQN0aikDAH0iBqdqIAEgAiANKQMIIAZ9IgcgAiAHVBsiBKcQBxogBSAEIAMoAgAiACAMaikDCCAGfVGtfCEFIAIgB1YEQANAIAAgBadBBHQiCmoiACgCACABIASnaiACIAR9IgYgACkDCCIHIAYgB1QbIganEAcaIAUgBiADKAIAIgAgCmopAwhRrXwhBSAEIAZ8IgQgAlQNAAsLIAMpAzghBwsgAyAFNwNAIAMgBCAHfCICNwM4IAIgAykDMFgNBCADIAI3AzAMBAsgAARAIABBADYCBCAAQRw2AgALDAILIAAEQCAAQQA2AgQgAEEONgIACyAABEAgAEEANgIEIABBDjYCAAsMAQsgAEEANgIUC0J/IQQLIAtB0ABqJAAgBAtIAQF/IABCADcCBCAAIAE2AgACQCABQQBIDQBBsBMoAgAgAUwNACABQQJ0QcATaigCAEEBRw0AQYSEASgCACECCyAAIAI2AgQLDgAgAkGx893xeWxBEHYLvgEAIwBBEGsiACQAIABBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAQRBqJAAgAkGx893xeWxBEHYLuQEBAX8jAEEQayIBJAAgAUEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAQjgEgAUEQaiQAC78BAQF/IwBBEGsiAiQAIAJBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEQkAEhACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFohACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFshACACQRBqJAAgAAu9AQEBfyMAQRBrIgMkACADQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABIAIQjwEgA0EQaiQAC4UBAgR/AX4jAEEQayIBJAACQCAAKQMwUARADAELA0ACQCAAIAVBACABQQ9qIAFBCGoQZiIEQX9GDQAgAS0AD0EDRw0AIAIgASgCCEGAgICAf3FBgICAgHpGaiECC0F/IQMgBEF/Rg0BIAIhAyAFQgF8IgUgACkDMFQNAAsLIAFBEGokACADCwuMdSUAQYAIC7ELaW5zdWZmaWNpZW50IG1lbW9yeQBuZWVkIGRpY3Rpb25hcnkALSsgICAwWDB4AFppcCBhcmNoaXZlIGluY29uc2lzdGVudABJbnZhbGlkIGFyZ3VtZW50AGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEGBywAL7AYBAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAQYTSAAutAQEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAgCAAAMApAAABAQAAHgEAAA8AAAAAJQAAQCoAAAAAAAAeAAAADwAAAAAAAADAKgAAAAAAABMAAAAHAEHg0wALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ1AALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA1gALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEHQ1gALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHA1wALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEG42AALASwAQcTYAAthLQAAAAQABAAIAAQALgAAAAQABgAQAAYALwAAAAQADAAgABgALwAAAAgAEAAgACAALwAAAAgAEACAAIAALwAAAAgAIACAAAABMAAAACAAgAACAQAEMAAAACAAAgECAQAQMABBsNkAC6UTAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABNAMoAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEHg7AALQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGx7QALIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBB6+0ACwEMAEH37QALFQwAAAAADAAAAAAJDAAAAAAADAAADABBpe4ACwEOAEGx7gALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBB3+4ACwEQAEHr7gALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBou8ACw4SAAAAEhISAAAAAAAACQBB0+8ACwELAEHf7wALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBjfAACwEMAEGZ8AALJwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRgBB5PAACwE+AEGL8QALBf//////AEHQ8QALVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsPIAC4oOSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";io(Pi)||(Pi=x(Pi));function Ls(We){try{if(We==Pi&&ce)return new Uint8Array(ce);var tt=ii(We);if(tt)return tt;if(R)return R(We);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(It){Ti(It)}}function so(We,tt){var It,nr,$;try{$=Ls(We),nr=new WebAssembly.Module($),It=new WebAssembly.Instance(nr,tt)}catch(Le){var ye=Le.toString();throw te(\"failed to compile wasm module: \"+ye),(ye.includes(\"imported Memory\")||ye.includes(\"memory import\"))&&te(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Le}return[It,nr]}function cc(){var We={a:Ma};function tt($,ye){var Le=$.exports;r.asm=Le,Be=r.asm.g,z(Be.buffer),Z=r.asm.W,an(r.asm.h),Ns(\"wasm-instantiate\")}if(Kn(\"wasm-instantiate\"),r.instantiateWasm)try{var It=r.instantiateWasm(We,tt);return It}catch($){return te(\"Module.instantiateWasm callback failed with error: \"+$),!1}var nr=so(Pi,We);return tt(nr[0]),r.asm}function cu(We){return F.getFloat32(We,!0)}function lp(We){return F.getFloat64(We,!0)}function cp(We){return F.getInt16(We,!0)}function Os(We){return F.getInt32(We,!0)}function Dn(We,tt){F.setInt32(We,tt,!0)}function oo(We){for(;We.length>0;){var tt=We.shift();if(typeof tt==\"function\"){tt(r);continue}var It=tt.func;typeof It==\"number\"?tt.arg===void 0?Z.get(It)():Z.get(It)(tt.arg):It(tt.arg===void 0?null:tt.arg)}}function Ms(We,tt){var It=new Date(Os((We>>2)*4)*1e3);Dn((tt>>2)*4,It.getUTCSeconds()),Dn((tt+4>>2)*4,It.getUTCMinutes()),Dn((tt+8>>2)*4,It.getUTCHours()),Dn((tt+12>>2)*4,It.getUTCDate()),Dn((tt+16>>2)*4,It.getUTCMonth()),Dn((tt+20>>2)*4,It.getUTCFullYear()-1900),Dn((tt+24>>2)*4,It.getUTCDay()),Dn((tt+36>>2)*4,0),Dn((tt+32>>2)*4,0);var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((tt+28>>2)*4,$),Ms.GMTString||(Ms.GMTString=at(\"GMT\")),Dn((tt+40>>2)*4,Ms.GMTString),tt}function ml(We,tt){return Ms(We,tt)}function yl(We,tt,It){Te.copyWithin(We,tt,tt+It)}function ao(We){try{return Be.grow(We-xe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function Vn(We){var tt=Te.length;We=We>>>0;var It=2147483648;if(We>It)return!1;for(var nr=1;nr<=4;nr*=2){var $=tt*(1+.2/nr);$=Math.min($,We+100663296);var ye=Math.min(It,ke(Math.max(We,$),65536)),Le=ao(ye);if(Le)return!0}return!1}function On(We){fe(We)}function Ni(We){var tt=Date.now()/1e3|0;return We&&Dn((We>>2)*4,tt),tt}function Mn(){if(Mn.called)return;Mn.called=!0;var We=new Date().getFullYear(),tt=new Date(We,0,1),It=new Date(We,6,1),nr=tt.getTimezoneOffset(),$=It.getTimezoneOffset(),ye=Math.max(nr,$);Dn((ds()>>2)*4,ye*60),Dn((gs()>>2)*4,Number(nr!=$));function Le($r){var ji=$r.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return ji?ji[1]:\"GMT\"}var pt=Le(tt),ht=Le(It),Tt=at(pt),er=at(ht);$<nr?(Dn((wi()>>2)*4,Tt),Dn((wi()+4>>2)*4,er)):(Dn((wi()>>2)*4,er),Dn((wi()+4>>2)*4,Tt))}function _i(We){Mn();var tt=Date.UTC(Os((We+20>>2)*4)+1900,Os((We+16>>2)*4),Os((We+12>>2)*4),Os((We+8>>2)*4),Os((We+4>>2)*4),Os((We>>2)*4),0),It=new Date(tt);Dn((We+24>>2)*4,It.getUTCDay());var nr=Date.UTC(It.getUTCFullYear(),0,1,0,0,0,0),$=(It.getTime()-nr)/(1e3*60*60*24)|0;return Dn((We+28>>2)*4,$),It.getTime()/1e3|0}var tr=typeof atob==\"function\"?atob:function(We){var tt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",It=\"\",nr,$,ye,Le,pt,ht,Tt,er=0;We=We.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Le=tt.indexOf(We.charAt(er++)),pt=tt.indexOf(We.charAt(er++)),ht=tt.indexOf(We.charAt(er++)),Tt=tt.indexOf(We.charAt(er++)),nr=Le<<2|pt>>4,$=(pt&15)<<4|ht>>2,ye=(ht&3)<<6|Tt,It=It+String.fromCharCode(nr),ht!==64&&(It=It+String.fromCharCode($)),Tt!==64&&(It=It+String.fromCharCode(ye));while(er<We.length);return It};function Oe(We){if(typeof I==\"boolean\"&&I){var tt;try{tt=Buffer.from(We,\"base64\")}catch{tt=new Buffer(We,\"base64\")}return new Uint8Array(tt.buffer,tt.byteOffset,tt.byteLength)}try{for(var It=tr(We),nr=new Uint8Array(It.length),$=0;$<It.length;++$)nr[$]=It.charCodeAt($);return nr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function ii(We){if(!!io(We))return Oe(We.slice(ps.length))}var Ma={e:ml,c:yl,d:Vn,a:On,b:Ni,f:_i},hr=cc(),uc=r.___wasm_call_ctors=hr.h,uu=r._zip_ext_count_symlinks=hr.i,Ac=r._zip_file_get_external_attributes=hr.j,El=r._zipstruct_statS=hr.k,DA=r._zipstruct_stat_size=hr.l,Au=r._zipstruct_stat_mtime=hr.m,Ce=r._zipstruct_stat_crc=hr.n,Rt=r._zipstruct_errorS=hr.o,fc=r._zipstruct_error_code_zip=hr.p,Hi=r._zipstruct_stat_comp_size=hr.q,fu=r._zipstruct_stat_comp_method=hr.r,Yt=r._zip_close=hr.s,Cl=r._zip_delete=hr.t,SA=r._zip_dir_add=hr.u,up=r._zip_discard=hr.v,pc=r._zip_error_init_with_code=hr.w,PA=r._zip_get_error=hr.x,Qn=r._zip_file_get_error=hr.y,hi=r._zip_error_strerror=hr.z,hc=r._zip_fclose=hr.A,bA=r._zip_file_add=hr.B,sa=r._free=hr.C,Li=r._malloc=hr.D,_o=r._zip_source_error=hr.E,Ze=r._zip_source_seek=hr.F,lo=r._zip_file_set_external_attributes=hr.G,gc=r._zip_file_set_mtime=hr.H,pu=r._zip_fopen_index=hr.I,qi=r._zip_fread=hr.J,hu=r._zip_get_name=hr.K,xA=r._zip_get_num_entries=hr.L,Ua=r._zip_source_read=hr.M,dc=r._zip_name_locate=hr.N,hs=r._zip_open_from_source=hr.O,_t=r._zip_set_file_compression=hr.P,Fn=r._zip_source_buffer=hr.Q,Ci=r._zip_source_buffer_create=hr.R,oa=r._zip_source_close=hr.S,co=r._zip_source_free=hr.T,Us=r._zip_source_keep=hr.U,aa=r._zip_source_open=hr.V,la=r._zip_source_tell=hr.X,Ho=r._zip_stat_index=hr.Y,wi=r.__get_tzname=hr.Z,gs=r.__get_daylight=hr._,ds=r.__get_timezone=hr.$,ms=r.stackSave=hr.aa,_s=r.stackRestore=hr.ba,Un=r.stackAlloc=hr.ca;r.cwrap=ne,r.getValue=he;var Sn;Wr=function We(){Sn||ys(),Sn||(Wr=We)};function ys(We){if(We=We||A,mr>0||(dt(),mr>0))return;function tt(){Sn||(Sn=!0,r.calledRun=!0,!we&&(jt(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),$t()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),tt()},1)):tt()}if(r.run=ys,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return ys(),e}}();typeof Qb==\"object\"&&typeof tU==\"object\"?tU.exports=eU:typeof define==\"function\"&&define.amd?define([],function(){return eU}):typeof Qb==\"object\"&&(Qb.createModule=eU)});var Of,Rle,Tle,Nle=Et(()=>{Of=[\"number\",\"number\"],Rle=(ee=>(ee[ee.ZIP_ER_OK=0]=\"ZIP_ER_OK\",ee[ee.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",ee[ee.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",ee[ee.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",ee[ee.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",ee[ee.ZIP_ER_READ=5]=\"ZIP_ER_READ\",ee[ee.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",ee[ee.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",ee[ee.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",ee[ee.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",ee[ee.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",ee[ee.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",ee[ee.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",ee[ee.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",ee[ee.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",ee[ee.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",ee[ee.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",ee[ee.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",ee[ee.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",ee[ee.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",ee[ee.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",ee[ee.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",ee[ee.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",ee[ee.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",ee[ee.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",ee[ee.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",ee[ee.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",ee[ee.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",ee[ee.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",ee[ee.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",ee[ee.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",ee[ee.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",ee))(Rle||{}),Tle=t=>({get HEAPU8(){return t.HEAPU8},errors:Rle,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint32S:t._malloc(4),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap(\"zip_open_from_source\",\"number\",[\"number\",\"number\",\"number\"]),close:t.cwrap(\"zip_close\",\"number\",[\"number\"]),discard:t.cwrap(\"zip_discard\",null,[\"number\"]),getError:t.cwrap(\"zip_get_error\",\"number\",[\"number\"]),getName:t.cwrap(\"zip_get_name\",\"string\",[\"number\",\"number\",\"number\"]),getNumEntries:t.cwrap(\"zip_get_num_entries\",\"number\",[\"number\",\"number\"]),delete:t.cwrap(\"zip_delete\",\"number\",[\"number\",\"number\"]),statIndex:t.cwrap(\"zip_stat_index\",\"number\",[\"number\",...Of,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...Of,\"number\"]),fread:t.cwrap(\"zip_fread\",\"number\",[\"number\",\"number\",\"number\",\"number\"]),fclose:t.cwrap(\"zip_fclose\",\"number\",[\"number\"]),dir:{add:t.cwrap(\"zip_dir_add\",\"number\",[\"number\",\"string\"])},file:{add:t.cwrap(\"zip_file_add\",\"number\",[\"number\",\"string\",\"number\",\"number\"]),getError:t.cwrap(\"zip_file_get_error\",\"number\",[\"number\"]),getExternalAttributes:t.cwrap(\"zip_file_get_external_attributes\",\"number\",[\"number\",...Of,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...Of,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...Of,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...Of,\"number\",\"number\"])},ext:{countSymlinks:t.cwrap(\"zip_ext_count_symlinks\",\"number\",[\"number\"])},error:{initWithCode:t.cwrap(\"zip_error_init_with_code\",null,[\"number\",\"number\"]),strerror:t.cwrap(\"zip_error_strerror\",\"string\",[\"number\"])},name:{locate:t.cwrap(\"zip_name_locate\",\"number\",[\"number\",\"string\",\"number\"])},source:{fromUnattachedBuffer:t.cwrap(\"zip_source_buffer_create\",\"number\",[\"number\",...Of,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...Of,\"number\"]),free:t.cwrap(\"zip_source_free\",null,[\"number\"]),keep:t.cwrap(\"zip_source_keep\",null,[\"number\"]),open:t.cwrap(\"zip_source_open\",\"number\",[\"number\"]),close:t.cwrap(\"zip_source_close\",\"number\",[\"number\"]),seek:t.cwrap(\"zip_source_seek\",\"number\",[\"number\",...Of,\"number\"]),tell:t.cwrap(\"zip_source_tell\",\"number\",[\"number\"]),read:t.cwrap(\"zip_source_read\",\"number\",[\"number\",\"number\",\"number\"]),error:t.cwrap(\"zip_source_error\",\"number\",[\"number\"])},struct:{statS:t.cwrap(\"zipstruct_statS\",\"number\",[]),statSize:t.cwrap(\"zipstruct_stat_size\",\"number\",[\"number\"]),statCompSize:t.cwrap(\"zipstruct_stat_comp_size\",\"number\",[\"number\"]),statCompMethod:t.cwrap(\"zipstruct_stat_comp_method\",\"number\",[\"number\"]),statMtime:t.cwrap(\"zipstruct_stat_mtime\",\"number\",[\"number\"]),statCrc:t.cwrap(\"zipstruct_stat_crc\",\"number\",[\"number\"]),errorS:t.cwrap(\"zipstruct_errorS\",\"number\",[]),errorCodeZip:t.cwrap(\"zipstruct_error_code_zip\",\"number\",[\"number\"])}})});function rU(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==V.sep);){if(t[r-1]===V.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==V.sep?null:t.slice(0,o)}var Jl,Lle=Et(()=>{St();St();nA();Jl=class extends Hp{static async openPromise(e,r){let o=new Jl(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>\"u\"?A=>rU(A,\".zip\"):A=>{for(let p of r){let h=rU(A,p);if(h)return h}return null},n=(A,p)=>new zi(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new zi(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function lot(t){if(typeof t==\"string\"&&String(+t)===t)return+t;if(typeof t==\"number\"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(Ole.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function Fb(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var ta,nU,Ole,iU,Mle,Rb,zi,sU=Et(()=>{St();St();St();St();St();St();ta=ve(\"fs\"),nU=ve(\"stream\"),Ole=ve(\"util\"),iU=$e(ve(\"zlib\"));$4();Mle=\"mixed\";Rb=class extends Error{constructor(r,o){super(r);this.name=\"Libzip Error\",this.code=o}},zi=class extends Mu{constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<\"u\"?a.level:Mle,r??=Fb(),typeof r==\"string\"){let{baseFs:A=new Tn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code===\"ENOENT\"&&a.create)this.stats=Ea.makeDefaultStats();else throw A}else this.stats=Ea.makeDefaultStats();this.libzip=b1();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r==\"string\"&&(r=a.create?Fb():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,\"i32\")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(Bt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(V.isAbsolute(p))continue;let h=V.resolve(Bt.root,p);this.registerEntry(h,A),p.endsWith(\"/\")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new Rb(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw ar.EBUSY(\"archive closed, close\");Ug(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),Fb();try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.source.tell(this.lzSource);if(r===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let o=this.libzip.malloc(r);if(!o)throw new Error(\"Couldn't allocate enough memory\");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error(\"Incomplete read\");if(a>r)throw new Error(\"Overread\");let n=Buffer.from(this.libzip.HEAPU8.subarray(o,o+r));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(n=Buffer.concat([n,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),n}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Ea.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return V.resolve(Bt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,\"r\");return PD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>\"u\")throw ar.EBADF(\"read\");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=E),E}async writePromise(r,o,a,n,u){return typeof o==\"string\"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>\"u\"?ar.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw ar.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new nU.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),u=Object.assign(new nU.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on(\"data\",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw ar.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=V.resolve(Bt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=ta.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`access '${r}'`);if(this.readOnly&&o&ta.constants.W_OK)throw ar.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>\"u\")throw ar.EBADF(\"fstatSync\");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw ar.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(u))throw ar.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw ar.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<\"u\"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,E=this.libzip.struct.statSize(u)>>>0,I=512,v=Math.ceil(E/I),x=(this.libzip.struct.statMtime(u)>>>0)*1e3,C=x,R=x,L=x,U=new Date(C),J=new Date(R),te=new Date(L),ae=new Date(x),fe=this.listings.has(o)?ta.constants.S_IFDIR:this.isSymbolicLink(n)?ta.constants.S_IFLNK:ta.constants.S_IFREG,ce=fe===ta.constants.S_IFDIR?493:420,me=fe|this.getUnixMode(n,ce)&511,he=this.libzip.struct.statCrc(u),Be=Object.assign(new Ea.StatEntry,{uid:p,gid:h,size:E,blksize:I,blocks:v,atime:U,birthtime:J,ctime:te,mtime:ae,atimeMs:C,birthtimeMs:R,ctimeMs:L,mtimeMs:x,mode:me,crc:he});return a.bigint===!0?Ea.convertToBigIntStats(Be):Be}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,E=0,I=this.stats.mtimeMs,v=this.stats.mtimeMs,x=this.stats.mtimeMs,C=this.stats.mtimeMs,R=new Date(I),L=new Date(v),U=new Date(x),J=new Date(C),te=ta.constants.S_IFDIR|493,ae=0,fe=Object.assign(new Ea.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:E,atime:R,birthtime:L,ctime:U,mtime:J,atimeMs:I,birthtimeMs:v,ctimeMs:x,mtimeMs:C,mode:te,crc:ae});return a.bigint===!0?Ea.convertToBigIntStats(fe):fe}throw new Error(\"Unreachable\")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(V.dirname(r)).add(V.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r),this.listings.get(V.dirname(r))?.delete(V.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>\"u\")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw ar.EBUSY(`archive closed, ${r}`);let u=V.resolve(Bt.root,o);if(u===\"/\")return Bt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,V.resolve(V.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,V.dirname(u),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw ar.ENOENT(r)}if(!h)throw ar.ENOTDIR(r);if(u=V.resolve(p,V.basename(u)),!a||this.symlinkCount===0)break;let I=this.libzip.name.locate(this.zip,u.slice(1),0);if(I===-1)break;if(this.isSymbolicLink(I)){let v=this.getFileSource(I).toString();u=V.resolve(V.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relative(Bt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!==\"mixed\"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>16&ta.constants.S_IFMT)===ta.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let E=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(E===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let I=this.libzip.fread(E,h,A,0);if(I===-1)throw this.makeLibzipError(this.libzip.file.getError(E));if(I<A)throw new Error(\"Incomplete read\");if(I>A)throw new Error(\"Overread\");let v=this.libzip.HEAPU8.subarray(h,h+A),x=Buffer.from(v);if(p===0)return this.fileSources.set(r,x),x;if(o.asyncDecompress)return new Promise((C,R)=>{iU.default.inflateRaw(x,(L,U)=>{L?R(L):(this.fileSources.set(r,U),C(U))})});{let C=iU.default.inflateRawSync(x);return this.fileSources.set(r,C),C}}finally{this.libzip.fclose(E)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw ar.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let A=this.getUnixMode(n,ta.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error(\"Unimplemented\")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error(\"Unimplemented\")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw ar.EROFS(`copyfile '${r} -> '${o}'`);if((a&ta.constants.COPYFILE_FICLONE_FORCE)!==0)throw ar.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>\"u\")throw ar.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(ta.constants.COPYFILE_EXCL|ta.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<\"u\")throw ar.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw ar.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw ar.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw ar.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw ar.EISDIR(`open '${r}'`);let n=null,u=null;typeof o==\"string\"?n=o:typeof o==\"object\"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw ar.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw ar.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>\"u\")throw ar.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw ar.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");if(this.libzip.file.setMtime(this.zip,a,0,lot(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw ar.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw ar.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw ar.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw ar.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>\"u\")throw ar.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(Bt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw ar.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw ar.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw ar.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw ar.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(ta.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o==\"object\"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw ar.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw ar.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw ar.ENOTDIR(`scandir '${r}'`);if(o?.recursive)if(o?.withFileTypes){let u=Array.from(n,A=>Object.assign(this.statImpl(\"lstat\",V.join(r,A)),{name:A,path:Bt.dot}));for(let A of u){if(!A.isDirectory())continue;let p=V.join(A.path,A.name),h=this.listings.get(V.join(a,p));for(let E of h)u.push(Object.assign(this.statImpl(\"lstat\",V.join(r,p,E)),{name:E,path:p}))}return u}else{let u=[...n];for(let A of u){let p=this.listings.get(V.join(a,A));if(!(typeof p>\"u\"))for(let h of p)u.push(V.join(A,h))}return u}else return o?.withFileTypes?Array.from(n,u=>Object.assign(this.statImpl(\"lstat\",V.join(r,u)),{name:u,path:void 0})):[...n]}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw ar.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(o))throw ar.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw ar.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw ar.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw ar.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),o)}watch(r,o,a){let n;switch(typeof o){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=V.resolve(Bt.root,r);return ny(this,n,o,a)}unwatchFile(r,o){let a=V.resolve(Bt.root,r);return Mg(this,a,o)}}});function _le(t,e,r=Buffer.alloc(0),o){let a=new zi(r),n=I=>I===e||I.startsWith(`${e}/`)?I.slice(0,e.length):null,u=async(I,v)=>()=>a,A=(I,v)=>a,p={...t},h=new Tn(p),E=new Hp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o?.typeCheck});return Kw(Ule.default,new qp(E)),a}var Ule,Hle=Et(()=>{St();Ule=$e(ve(\"fs\"));sU()});var qle=Et(()=>{Lle();sU();Hle()});var x1={};Vt(x1,{DEFAULT_COMPRESSION_LEVEL:()=>Mle,LibzipError:()=>Rb,ZipFS:()=>zi,ZipOpenFS:()=>Jl,getArchivePart:()=>rU,getLibzipPromise:()=>uot,getLibzipSync:()=>cot,makeEmptyArchive:()=>Fb,mountMemoryDrive:()=>_le});function cot(){return b1()}async function uot(){return b1()}var jle,nA=Et(()=>{$4();jle=$e(Fle());Nle();qle();Qle(()=>{let t=(0,jle.default)();return Tle(t)})});var RE,Gle=Et(()=>{St();qt();k1();RE=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await TE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};RE.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}});var al,Yle=Et(()=>{al=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var Lb={};Vt(Lb,{fastGlobOptions:()=>Vle,isBraceExpansion:()=>oU,isGlobPattern:()=>Aot,match:()=>fot,micromatchOptions:()=>Nb});function Aot(t){if(!Tb.default.scan(t,Nb).isGlob)return!1;try{Tb.default.parse(t,Nb)}catch{return!1}return!0}function fot(t,{cwd:e,baseFs:r}){return(0,Wle.default)(t,{...Vle,cwd:ue.fromPortablePath(e),fs:FD(Kle.default,new qp(r))})}function oU(t){return Tb.default.scan(t,Nb).isBrace}var Wle,Kle,Tb,Nb,Vle,Jle=Et(()=>{St();Wle=$e(RP()),Kle=$e(ve(\"fs\")),Tb=$e(Zo()),Nb={strictBrackets:!0},Vle={onlyDirectories:!1,onlyFiles:!1}});function aU(){}function lU(){for(let t of kd)t.kill()}function $le(t,e,r,o){return a=>{let n=a[0]instanceof iA.Transform?\"pipe\":a[0],u=a[1]instanceof iA.Transform?\"pipe\":a[1],A=a[2]instanceof iA.Transform?\"pipe\":a[2],p=(0,Xle.default)(t,e,{...o,stdio:[n,u,A]});return kd.add(p),kd.size===1&&(process.on(\"SIGINT\",aU),process.on(\"SIGTERM\",lU)),a[0]instanceof iA.Transform&&a[0].pipe(p.stdin),a[1]instanceof iA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof iA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),E.code){case\"ENOENT\":a[2].write(`command not found: ${t}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${t}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{kd.delete(p),kd.size===0&&(process.off(\"SIGINT\",aU),process.off(\"SIGTERM\",lU)),h(E!==null?E:129)})})}}}function ece(t){return e=>{let r=e[0]===\"pipe\"?new iA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ob(t,e){return NE.start(t,e)}function zle(t,e=null){let r=new iA.PassThrough,o=new Zle.StringDecoder,a=\"\";return r.on(\"data\",n=>{let u=o.write(n),A;do if(A=u.indexOf(`\n`),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on(\"end\",()=>{let n=o.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function tce(t,{prefix:e}){return{stdout:zle(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:zle(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var Xle,iA,Zle,kd,zl,cU,NE,uU=Et(()=>{Xle=$e(sT()),iA=ve(\"stream\"),Zle=ve(\"string_decoder\"),kd=new Set;zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},cU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error(\"Assertion failed: No stream attached\");return this.stream}},NE=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new NE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new NE(this,e),a=new cU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)e[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var T1={};Vt(T1,{EntryCommand:()=>RE,ShellError:()=>al,execute:()=>TE,globUtils:()=>Lb});function rce(t,e,r){let o=new ll.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof ll.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new al(`Bad file descriptor: \"${t}\"`)}return o}function Ub(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function hot(t,e,r){let o=[],a=new ll.PassThrough;return a.on(\"data\",n=>o.push(n)),await _b(t,e,Ub(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\\r\\n]+$/,\"\")}async function nce(t,e,r){let o=t.map(async n=>{let u=await Qd(n.args,e,r);return{name:n.name,value:u.join(\" \")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function Mb(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function cce(t,e,r,o,a=o){switch(t.name){case\"$\":o(String(process.pid));break;case\"#\":o(String(e.args.length));break;case\"@\":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let u=Mb(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)o(n);else for(let u of Mb(n))a(u)}break;case\"PPID\":o(String(process.ppid));break;case\"RANDOM\":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.hasOwn(r.variables,t.name)?u=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<\"u\"&&t.alternativeValue?u=(await Qd(t.alternativeValue,e,r)).join(\" \"):typeof u>\"u\"&&(t.defaultValue?u=(await Qd(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(u=\"\")),typeof u>\"u\")throw A?new al(`Unbound argument #${n}`):new al(`Unbound variable \"${t.name}\"`);if(t.quoted)o(u);else{let p=Mb(u);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&o(h)}}break}}async function Q1(t,e,r){if(t.type===\"number\"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: \"${t.value}\", only integers are allowed`)}else if(t.type===\"variable\"){let o=[];await cce({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(\" \"));return Number.isNaN(a)?Q1({type:\"variable\",name:o.join(\" \")},e,r):Q1({type:\"number\",value:a},e,r)}else return got[t.type](await Q1(t.left,e,r),await Q1(t.right,e,r))}async function Qd(t,e,r){let o=new Map,a=[],n=[],u=E=>{n.push(E)},A=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{u(E),A()},h=(E,I,v)=>{let x=JSON.stringify({type:E,fd:I}),C=o.get(x);typeof C>\"u\"&&o.set(x,C=[]),C.push(v)};for(let E of t){let I=!1;switch(E.type){case\"redirection\":{let v=await Qd(E.args,e,r);for(let x of v)h(E.subtype,E.fd,x)}break;case\"argument\":for(let v of E.segments)switch(v.type){case\"text\":u(v.text);break;case\"glob\":u(v.pattern),I=!0;break;case\"shell\":{let x=await hot(v.shell,e,r);if(v.quoted)u(x);else{let C=Mb(x);for(let R=0;R<C.length-1;++R)p(C[R]);u(C[C.length-1])}}break;case\"variable\":await cce(v,e,r,u,p);break;case\"arithmetic\":u(String(await Q1(v.arithmetic,e,r)));break}break}if(A(),I){let v=a.pop();if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let x=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(x.length===0){let C=oU(v)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new al(`No matches found: \"${v}\"${C}`)}for(let C of x.sort())p(C)}}if(o.size>0){let E=[];for(let[I,v]of o.entries())E.splice(E.length,0,I,String(v.length),...v);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function F1(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:o});let[n,...u]=t;if(n===\"command\")return $le(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return ece(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:I,stdout:v,stderr:x}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await A(u,e,r)}finally{r.stdin=I,r.stdout=v,r.stderr=x}})}function dot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,Ub(r,{stdin:a}));return{stdin:a,promise:n}}}function mot(t,e,r){return o=>{let a=new ll.PassThrough,n=_b(t,e,r);return{stdin:a,promise:n}}}function ice(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,F1([...e,\"__ysh_run_procedure\",a],r,o)}}async function sce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case\"command\":{let p=await Qd(o.args,e,r),h=await nce(o.envs,e,r);A=o.envs.length?F1(p,e,Ub(u,{environment:h})):F1(p,e,u)}break;case\"subshell\":{let p=await Qd(o.args,e,r),h=dot(o.subshell,e,u);A=ice(h,p,e,u)}break;case\"group\":{let p=await Qd(o.args,e,r),h=mot(o.group,e,u);A=ice(h,p,e,u)}break;case\"envs\":{let p=await nce(o.envs,e,r);u.environment={...u.environment,...p},A=F1([\"true\"],e,u)}break}if(typeof A>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=Ob(A,{stdin:new zl(u.stdin),stdout:new zl(u.stdout),stderr:new zl(u.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(A,1);break;case\"|&\":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function yot(t,e,r,{background:o=!1}={}){function a(n){let u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[n%u.length];return oce.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:E}=tce(r,{prefix:p});return r.backgroundJobs.push(sce(t,e,Ub(r,{stdout:h,stderr:E})).catch(I=>E.write(`${I.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(uy(t))}' has ended\n`)})),0}return await sce(t,e,r)}async function Eot(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables[\"?\"]=String(A)},u=async A=>{try{return await yot(A.chain,e,r,{background:o&&typeof A.then>\"u\"})}catch(p){if(!(p instanceof al))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await u(t.then.line));break;case\"||\":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function _b(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await Eot(n,e,r,{background:u===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function uce(t){switch(t.type){case\"variable\":return t.name===\"@\"||t.name===\"#\"||t.name===\"*\"||Number.isFinite(parseInt(t.name,10))||\"defaultValue\"in t&&!!t.defaultValue&&t.defaultValue.some(e=>R1(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>R1(e));case\"arithmetic\":return AU(t.arithmetic);case\"shell\":return fU(t.shell);default:return!1}}function R1(t){switch(t.type){case\"redirection\":return t.args.some(e=>R1(e));case\"argument\":return t.segments.some(e=>uce(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function AU(t){switch(t.type){case\"variable\":return uce(t);case\"number\":return!1;default:return AU(t.left)||AU(t.right)}}function fU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case\"subshell\":o=fU(r.subshell);break;case\"command\":o=r.envs.some(a=>a.args.some(n=>R1(n)))||r.args.some(a=>R1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function TE(t,e=[],{baseFs:r=new Tn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=Lb}={}){let I={};for(let[C,R]of Object.entries(n))typeof R<\"u\"&&(I[C]=R);let v=new Map(pot);for(let[C,R]of Object.entries(o))v.set(C,R);u===null&&(u=new ll.PassThrough,u.end());let x=ND(t,E);if(!fU(x)&&x.length>0&&e.length>0){let{command:C}=x[x.length-1];for(;C.then;)C=C.then.line;let R=C.chain;for(;R.then;)R=R.then.chain;R.type===\"command\"&&(R.args=R.args.concat(e.map(L=>({type:\"argument\",segments:[{type:\"text\",text:L}]}))))}return await _b(x,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:E},{cwd:a,environment:I,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{[\"?\"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var oce,ace,ll,lce,pot,got,k1=Et(()=>{St();Nl();oce=$e(IN()),ace=ve(\"os\"),ll=ve(\"stream\"),lce=ve(\"timers/promises\");Gle();Yle();Jle();uU();uU();pot=new Map([[\"cd\",async([t=(0,ace.homedir)(),...e],r,o)=>{let a=V.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code===\"ENOENT\"?new al(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new al(`cd: not a directory: ${t}`);return o.cwd=a,0}],[\"pwd\",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(t,e,r)=>0],[\"true\",async(t,e,r)=>0],[\"false\",async(t,e,r)=>1],[\"exit\",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables[\"?\"],10)],[\"echo\",async(t,e,r)=>(r.stdout.write(`${t.join(\" \")}\n`),0)],[\"sleep\",async([t],e,r)=>{if(typeof t>\"u\")throw new al(\"sleep: missing operand\");let o=Number(t);if(Number.isNaN(o))throw new al(`sleep: invalid time interval '${t}'`);return await(0,lce.setTimeout)(1e3*o,0)}],[\"__ysh_run_procedure\",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ob(o,{stdin:new zl(r.stdin),stdout:new zl(r.stdout),stderr:new zl(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!==\"--\";){let I=t[h++],{type:v,fd:x}=JSON.parse(I),C=J=>{switch(x){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},R=J=>{switch(x){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: \"${x}\"`)}},L=Number(t[h++]),U=h+L;for(let J=h;J<U;++h,++J)switch(v){case\"<\":C(()=>e.baseFs.createReadStream(V.resolve(r.cwd,ue.toPortablePath(t[J]))));break;case\"<<<\":C(()=>{let te=new ll.PassThrough;return process.nextTick(()=>{te.write(`${t[J]}\n`),te.end()}),te});break;case\"<&\":C(()=>rce(Number(t[J]),1,r));break;case\">\":case\">>\":{let te=V.resolve(r.cwd,ue.toPortablePath(t[J]));R(te===\"/dev/null\"?new ll.Writable({autoDestroy:!0,emitClose:!0,write(ae,fe,ce){setImmediate(ce)}}):e.baseFs.createWriteStream(te,v===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":R(rce(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${v}\"`)}}if(u.length>0){let I=new ll.PassThrough;o=I;let v=x=>{if(x===u.length)I.end();else{let C=u[x]();C.pipe(I,{end:!1}),C.on(\"end\",()=>{v(x+1)})}};v(0)}if(A.length>0){let I=new ll.PassThrough;a=I;for(let v of A)I.pipe(v)}if(p.length>0){let I=new ll.PassThrough;n=I;for(let v of p)I.pipe(v)}let E=await Ob(F1(t.slice(h+1),e,r),{stdin:new zl(o),stdout:new zl(a),stderr:new zl(n)}).run();return await Promise.all(A.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),await Promise.all(p.map(I=>new Promise((v,x)=>{I.on(\"error\",C=>{x(C)}),I.on(\"close\",()=>{v()}),I.end()}))),E}]]);got={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Hb=_((r4t,Ace)=>{function Cot(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}Ace.exports=Cot});var mce=_((n4t,dce)=>{var fce=pd(),wot=Hb(),Iot=Hl(),Bot=pE(),vot=1/0,pce=fce?fce.prototype:void 0,hce=pce?pce.toString:void 0;function gce(t){if(typeof t==\"string\")return t;if(Iot(t))return wot(t,gce)+\"\";if(Bot(t))return hce?hce.call(t):\"\";var e=t+\"\";return e==\"0\"&&1/t==-vot?\"-0\":e}dce.exports=gce});var N1=_((i4t,yce)=>{var Dot=mce();function Sot(t){return t==null?\"\":Dot(t)}yce.exports=Sot});var pU=_((s4t,Ece)=>{function Pot(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}Ece.exports=Pot});var wce=_((o4t,Cce)=>{var bot=pU();function xot(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:bot(t,e,r)}Cce.exports=xot});var hU=_((a4t,Ice)=>{var kot=\"\\\\ud800-\\\\udfff\",Qot=\"\\\\u0300-\\\\u036f\",Fot=\"\\\\ufe20-\\\\ufe2f\",Rot=\"\\\\u20d0-\\\\u20ff\",Tot=Qot+Fot+Rot,Not=\"\\\\ufe0e\\\\ufe0f\",Lot=\"\\\\u200d\",Oot=RegExp(\"[\"+Lot+kot+Tot+Not+\"]\");function Mot(t){return Oot.test(t)}Ice.exports=Mot});var vce=_((l4t,Bce)=>{function Uot(t){return t.split(\"\")}Bce.exports=Uot});var Fce=_((c4t,Qce)=>{var Dce=\"\\\\ud800-\\\\udfff\",_ot=\"\\\\u0300-\\\\u036f\",Hot=\"\\\\ufe20-\\\\ufe2f\",qot=\"\\\\u20d0-\\\\u20ff\",jot=_ot+Hot+qot,Got=\"\\\\ufe0e\\\\ufe0f\",Yot=\"[\"+Dce+\"]\",gU=\"[\"+jot+\"]\",dU=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Wot=\"(?:\"+gU+\"|\"+dU+\")\",Sce=\"[^\"+Dce+\"]\",Pce=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",bce=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Kot=\"\\\\u200d\",xce=Wot+\"?\",kce=\"[\"+Got+\"]?\",Vot=\"(?:\"+Kot+\"(?:\"+[Sce,Pce,bce].join(\"|\")+\")\"+kce+xce+\")*\",Jot=kce+xce+Vot,zot=\"(?:\"+[Sce+gU+\"?\",gU,Pce,bce,Yot].join(\"|\")+\")\",Xot=RegExp(dU+\"(?=\"+dU+\")|\"+zot+Jot,\"g\");function Zot(t){return t.match(Xot)||[]}Qce.exports=Zot});var Tce=_((u4t,Rce)=>{var $ot=vce(),eat=hU(),tat=Fce();function rat(t){return eat(t)?tat(t):$ot(t)}Rce.exports=rat});var Lce=_((A4t,Nce)=>{var nat=wce(),iat=hU(),sat=Tce(),oat=N1();function aat(t){return function(e){e=oat(e);var r=iat(e)?sat(e):void 0,o=r?r[0]:e.charAt(0),a=r?nat(r,1).join(\"\"):e.slice(1);return o[t]()+a}}Nce.exports=aat});var Mce=_((f4t,Oce)=>{var lat=Lce(),cat=lat(\"toUpperCase\");Oce.exports=cat});var mU=_((p4t,Uce)=>{var uat=N1(),Aat=Mce();function fat(t){return Aat(uat(t).toLowerCase())}Uce.exports=fat});var _ce=_((h4t,qb)=>{function pat(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,E=10,I=11,v=12,x=13,C=14,R=15,L=16,U=17,J=0,te=1,ae=2,fe=3,ce=4;function me(g,Ee){return 55296<=g.charCodeAt(Ee)&&g.charCodeAt(Ee)<=56319&&56320<=g.charCodeAt(Ee+1)&&g.charCodeAt(Ee+1)<=57343}function he(g,Ee){Ee===void 0&&(Ee=0);var Se=g.charCodeAt(Ee);if(55296<=Se&&Se<=56319&&Ee<g.length-1){var le=Se,ne=g.charCodeAt(Ee+1);return 56320<=ne&&ne<=57343?(le-55296)*1024+(ne-56320)+65536:le}if(56320<=Se&&Se<=57343&&Ee>=1){var le=g.charCodeAt(Ee-1),ne=Se;return 55296<=le&&le<=56319?(le-55296)*1024+(ne-56320)+65536:ne}return Se}function Be(g,Ee,Se){var le=[g].concat(Ee).concat([Se]),ne=le[le.length-2],ee=Se,Ie=le.lastIndexOf(C);if(Ie>1&&le.slice(1,Ie).every(function(H){return H==o})&&[o,x,U].indexOf(g)==-1)return ae;var Fe=le.lastIndexOf(a);if(Fe>0&&le.slice(1,Fe).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return le.filter(function(H){return H==a}).length%2==1?fe:ce;if(ne==t&&ee==e)return J;if(ne==r||ne==t||ne==e)return ee==C&&Ee.every(function(H){return H==o})?ae:te;if(ee==r||ee==t||ee==e)return te;if(ne==u&&(ee==u||ee==A||ee==h||ee==E))return J;if((ne==h||ne==A)&&(ee==A||ee==p))return J;if((ne==E||ne==p)&&ee==p)return J;if(ee==o||ee==R)return J;if(ee==n)return J;if(ne==v)return J;var At=le.indexOf(o)!=-1?le.lastIndexOf(o)-1:le.length-2;return[x,U].indexOf(le[At])!=-1&&le.slice(At+1,-1).every(function(H){return H==o})&&ee==C||ne==R&&[L,U].indexOf(ee)!=-1?J:Ee.indexOf(a)!=-1?ae:ne==a&&ee==a?J:te}this.nextBreak=function(g,Ee){if(Ee===void 0&&(Ee=0),Ee<0)return 0;if(Ee>=g.length-1)return g.length;for(var Se=we(he(g,Ee)),le=[],ne=Ee+1;ne<g.length;ne++)if(!me(g,ne-1)){var ee=we(he(g,ne));if(Be(Se,le,ee))return ne;le.push(ee)}return g.length},this.splitGraphemes=function(g){for(var Ee=[],Se=0,le;(le=this.nextBreak(g,Se))<g.length;)Ee.push(g.slice(Se,le)),Se=le;return Se<g.length&&Ee.push(g.slice(Se)),Ee},this.iterateGraphemes=function(g){var Ee=0,Se={next:function(){var le,ne;return(ne=this.nextBreak(g,Ee))<g.length?(le=g.slice(Ee,ne),Ee=ne,{value:le,done:!1}):Ee<g.length?(le=g.slice(Ee),Ee=g.length,{value:le,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(Se[Symbol.iterator]=function(){return Se}),Se},this.countGraphemes=function(g){for(var Ee=0,Se=0,le;(le=this.nextBreak(g,Se))<g.length;)Se=le,Ee++;return Se<g.length&&Ee++,Ee};function we(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?v:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?o:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?x:127995<=g&&g<=127999?C:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?L:128102<=g&&g<=128105?U:I}return this}typeof qb<\"u\"&&qb.exports&&(qb.exports=pat)});var qce=_((g4t,Hce)=>{var hat=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,jb;function gat(){if(jb)return jb;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return jb=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=_ce(),e=new t;return jb=r=>e.splitGraphemes(r)}}Hce.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let o=r-e,a=\"\",n=0,u=0;for(;t.length>0;){let A=t.match(hat)||[t,t,void 0],p=gat()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(o-u,p.length);a+=p.slice(0,E).join(\"\"),n+=h,u+=E,typeof A[2]<\"u\"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});var rn,L1=Et(()=>{rn=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.1.1\"});function Vce(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Wu(t===null?0:t);return!r&&t===null?Mt(e,a,\"grey\"):a}function yU(t,{configuration:e,json:r}){let o=Vce(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=wr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Zy(e,o,n)}async function LE({configuration:t,stdout:e,forceError:r},o){let a=await Nt.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let u=!1,A=!1;for(let p of o)typeof p.option<\"u\"&&(p.error||r?(A=!0,n.reportError(50,p.message)):(u=!0,n.reportWarning(50,p.message)),p.callback?.());u&&!A&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var Wce,Gb,dat,jce,Gce,Ah,Kce,Yce,mat,yat,Yb,Eat,Nt,O1=Et(()=>{Wce=$e(qce()),Gb=$e(td());fS();Yl();L1();jl();dat=\"\\xB7\",jce=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],Gce=80,Ah=Gb.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:Gb.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:Gb.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}[collapsed=true]\\r\\x1B[0K${t}\n`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\\W+/g,\"_\")}\\r\\x1B[0K`}:null,Kce=Ah!==null,Yce=new Date,mat=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,yat=t=>t,Yb=yat({patrick:{date:[17,3],chars:[\"\\u{1F340}\",\"\\u{1F331}\"],size:40},simba:{date:[19,7],chars:[\"\\u{1F981}\",\"\\u{1F334}\"],size:40},jack:{date:[31,10],chars:[\"\\u{1F383}\",\"\\u{1F987}\"],size:40},hogsfather:{date:[31,12],chars:[\"\\u{1F389}\",\"\\u{1F384}\"],size:40},default:{chars:[\"=\",\"-\"],size:80}}),Eat=mat&&Object.keys(Yb).find(t=>{let e=Yb[t];return!(e.date&&(e.date[0]!==Yce.getDate()||e.date[1]!==Yce.getMonth()+1))})||\"default\";Nt=class extends Xs{constructor({configuration:r,stdout:o,json:a=!1,forceSectionAlignment:n=!1,includeNames:u=!0,includePrefix:A=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:I=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(XI(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=u,this.includePrefix=A,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=I,this.json=a,this.stdout=o,r.get(\"enableProgressBars\")&&!a&&o.isTTY&&o.columns>22){let v=r.get(\"progressBarStyle\")||Eat;if(!Object.hasOwn(Yb,v))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=Yb[v];let x=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*x/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!=\"string\"){let h=u;u=h.message,A=A??h.name}let p=typeof A<\"u\"?`${A}: ${u}`:u;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,yd(r.configuration,`Yarn ${rn}`,2));try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let o=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,o-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&o?.(p-A)}}startTimerImpl(r,o,a){return{cb:typeof o==\"function\"?o:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,Ah!==null&&!this.json&&this.includeInfos&&this.stdout.write(Ah.start(r))},reportFooter:A=>{if(this.indent-=1,Ah!==null&&!this.json&&this.includeInfos){this.stdout.write(Ah.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&A>200?this.reportInfo(null,`\\u2514 Completed in ${Mt(this.configuration,A,yt.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof o==\"function\"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",u=`${this.formatPrefix(n,\"blueBright\")}${o}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(u)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${o}`)}reportError(r,o){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,o)),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${o}`,{truncate:!1})}reportFold(r,o){if(!Ah)return;let a=`${Ah.start(r)}${o}${Ah.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let o=Mt(this.configuration,Date.now()-this.startTime,yt.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})}\n`),this.writeProgress()}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Gce&&(this.progressFrame=(this.progressFrame+1)%jce.length,this.progressTime=r);let o=jce[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let u=this.formatName(null),A=u?`${u}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"blueBright\")} ${A}${o}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Gce)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>\"u\"&&(o=this.configuration.get(\"preferTruncatedLines\")),o&&(r=(0,Wce.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?Vce(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,o){return this.includePrefix?`${Mt(this.configuration,\"\\u27A4\",o)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?yU(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${dat} `}}});var un={};Vt(un,{PackageManager:()=>Xce,detectPackageManager:()=>Zce,executePackageAccessibleBinary:()=>nue,executePackageScript:()=>Wb,executePackageShellcode:()=>EU,executeWorkspaceAccessibleBinary:()=>Sat,executeWorkspaceLifecycleScript:()=>tue,executeWorkspaceScript:()=>eue,getPackageAccessibleBinaries:()=>Kb,getWorkspaceAccessibleBinaries:()=>rue,hasPackageScript:()=>Bat,hasWorkspaceScript:()=>CU,isNodeScript:()=>wU,makeScriptEnv:()=>M1,maybeExecuteWorkspaceLifecycleScript:()=>Dat,prepareExternalProject:()=>Iat});async function fh(t,e,r,o=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${o.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await oe.writeFilePromise(V.format({dir:t,name:e,ext:\".cmd\"}),a)}await oe.writeFilePromise(V.join(t,e),`#!/bin/sh\nexec \"${r}\" ${o.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function Zce(t){let e=await Ot.tryFind(t);if(e?.packageManager){let o=UP(e.packageManager);if(o?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(\".\");switch(o.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await oe.readFilePromise(V.join(t,dr.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:oe.existsSync(V.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:oe.existsSync(V.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function M1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let u={};for(let[E,I]of Object.entries(n))typeof I<\"u\"&&(u[E.toLowerCase()!==\"path\"?E:\"PATH\"]=I);let A=ue.fromPortablePath(r);u.BERRY_BIN_FOLDER=ue.fromPortablePath(A);let p=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([fh(r,\"node\",process.execPath),...rn!==null?[fh(r,\"run\",process.execPath,[p,\"run\"]),fh(r,\"yarn\",process.execPath,[p]),fh(r,\"yarnpkg\",process.execPath,[p]),fh(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(u.INIT_CWD=ue.fromPortablePath(t.configuration.startingCwd),u.PROJECT_CWD=ue.fromPortablePath(t.cwd)),u.PATH=u.PATH?`${A}${ue.delimiter}${u.PATH}`:`${A}`,u.npm_execpath=`${A}${ue.sep}yarn`,u.npm_node_execpath=`${A}${ue.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),I=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";u.npm_package_name=fn(e),u.npm_package_version=I;let v;if(E)v=E.cwd;else{let x=t.storedPackages.get(e.locatorHash);if(!x)throw new Error(`Package for ${qr(t.configuration,e)} not found in the project`);let C=t.configuration.getLinkers(),R={project:t,report:new Nt({stdout:new ph.PassThrough,configuration:t.configuration})},L=C.find(U=>U.supportsPackage(x,R));if(!L)throw new Error(`The package ${qr(t.configuration,x)} isn't supported by any of the available linkers`);v=await L.findPackageLocation(x,R)}u.npm_package_json=ue.fromPortablePath(V.join(v,dr.manifest))}let h=rn!==null?`yarn/${rn}`:`yarn/${Df(\"@yarnpkg/core\").version}-core`;return u.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(u.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,u,async(E,I,v)=>await fh(r,E,I,v)),u}async function Iat(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await wat(async()=>{await oe.mktempPromise(async u=>{let A=V.join(u,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),I=n&&Hc(n)?r1(n):n,v=I?ba(I):\"an external project\";h.write(`Packing ${v} from sources\n`);let x=await Zce(t),C;x!==null?(h.write(`Using ${x.packageManager} for bootstrap. Reason: ${x.reason}\n\n`),C=x.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),C=\"Yarn\");let R=C===\"Yarn\"&&!x?.packageManagerField;await oe.mktempPromise(async L=>{let U=await M1({binFolder:L,ignoreCorepack:R}),te=new Map([[\"Yarn Classic\",async()=>{let fe=a!==null?[\"workspace\",a]:[],ce=V.join(t,dr.manifest),me=await oe.readFilePromise(ce),he=await Gc(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(he.code!==0)return he.code;await oe.writeFilePromise(ce,me),await oe.appendFilePromise(V.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Be=await Gc(\"yarn\",[\"install\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(`\n`);let we=await Gc(\"yarn\",[...fe,\"pack\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return we.code!==0?we.code:0}],[\"Yarn\",async()=>{let fe=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let ce=V.join(t,dr.lockfile);await oe.existsPromise(ce)||await oe.writeFilePromise(ce,\"\");let me=await Gc(\"yarn\",[...fe,\"pack\",\"--install-if-needed\",\"--filename\",ue.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],[\"npm\",async()=>{if(a!==null){let Ee=new ph.PassThrough,Se=Vy(Ee);Ee.pipe(h,{end:!1});let le=await Gc(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:Ee,stderr:E,end:0});if(Ee.end(),le.code!==0)return h.end(),E.end(),le.code;let ne=(await Se).toString().trim();if(!kf(ne,\">=7.x\")){let ee=eA(null,\"npm\"),Ie=In(ee,ne),Fe=In(ee,\">=7.x\");throw new Error(`Workspaces aren't supported by ${jn(r,Ie)}; please upgrade to ${jn(r,Fe)} (npm has been detected as the primary package manager for ${Mt(r,t,yt.PATH)})`)}}let fe=a!==null?[\"--workspace\",a]:[];delete U.npm_config_user_agent,delete U.npm_config_production,delete U.NPM_CONFIG_PRODUCTION,delete U.NODE_ENV;let ce=await Gc(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(ce.code!==0)return ce.code;let me=new ph.PassThrough,he=Vy(me);me.pipe(h);let Be=await Gc(\"npm\",[\"pack\",\"--silent\",...fe],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let we=(await he).toString().trim().replace(/^.*\\n/s,\"\"),g=V.resolve(t,ue.toPortablePath(we));return await oe.renamePromise(g,e),0}]]).get(C);if(typeof te>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ae=await te();if(!(ae===0||typeof ae>\"u\"))throw oe.detachTemp(u),new zt(58,`Packing the package failed (exit code ${ae}, logs can be found here: ${Mt(r,A,yt.PATH)})`)})})})}async function Bat(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return CU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${qr(r.configuration,t)} not found in the project`);return await Jl.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Nt({stdout:new ph.PassThrough,configuration:u})},h=A.find(x=>x.supportsPackage(a,p));if(!h)throw new Error(`The package ${qr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),I=new gn(E,{baseFs:n});return(await Ot.find(Bt.dot,{baseFs:I})).scripts.has(e)})}async function Wb(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:E,cwd:I}=await $ce(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>\"u\")return 1;let x=async()=>await TE(v,r,{cwd:I,env:E,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,x,a,t,e,{script:v,args:r,cwd:I,env:E,stdin:n,stdout:u,stderr:A}))()})}async function EU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:E}=await $ce(t,{project:a,binFolder:p,cwd:o});return await TE(e,r,{cwd:E,env:h,stdin:n,stdout:u,stderr:A})})}async function vat(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await M1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await IU(e,await rue(t)),typeof r>\"u\"&&(r=V.dirname(await oe.realpathPromise(V.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function $ce(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return vat(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${qr(e.configuration,t)} not found in the project`);return await Jl.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Nt({stdout:new ph.PassThrough,configuration:p})},I=h.find(L=>L.supportsPackage(u,E));if(!I)throw new Error(`The package ${qr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await M1({project:e,locator:t,binFolder:r,lifecycleScript:a});await IU(r,await Kb(t,{project:e}));let x=await I.findPackageLocation(u,E),C=new gn(x,{baseFs:A}),R=await Ot.find(Bt.dot,{baseFs:C});return typeof o>\"u\"&&(o=x),{manifest:R,binFolder:r,env:v,cwd:o}})}async function eue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Wb(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function CU(t,e){return t.manifest.scripts.has(e)}async function tue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=V.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the \"${e}\" lifecycle script inside a workspace (\"${ue.fromPortablePath(t.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(A,{report:o,prefix:qr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let I=await eue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),I!==0)throw oe.detachTemp(u),new zt(36,`${(0,Jce.default)(e)} script failed (exit code ${Mt(a,I,yt.NUMBER)}, logs can be found here: ${Mt(a,A,yt.PATH)}); run ${Mt(a,`yarn ${e}`,yt.CODE)} to investigate`)})}async function Dat(t,e,r){CU(t,e)&&await tue(t,e,r)}function wU(t){let e=V.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),o;try{o=oe.openSync(t,\"r\")}catch{return!0}try{oe.readSync(o,r,0,r.length,0)}finally{oe.closeSync(o)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function Kb(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${qr(r,t)} not found in the project`);let n=new ph.Writable,u=r.getLinkers(),A={project:e,report:new Nt({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let I=e.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(`Assertion failed: The resolution (${jn(r,E)}) should have been registered`);p.add(I)}let h=await Promise.all(Array.from(p,async E=>{let I=e.storedPackages.get(E);if(!I)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(I.bin.size===0)return sl.skip;let v=u.find(C=>C.supportsPackage(I,A));if(!v)return sl.skip;let x=null;try{x=await v.findPackageLocation(I,A)}catch(C){if(C.code===\"LOCATOR_NOT_INSTALLED\")return sl.skip;throw C}return{dependency:I,packageLocation:x}}));for(let E of h){if(E===sl.skip)continue;let{dependency:I,packageLocation:v}=E;for(let[x,C]of I.bin){let R=V.resolve(v,C);o.set(x,[I,ue.fromPortablePath(R),wU(R)])}}return o}async function rue(t){return await Kb(t.anchoredLocator,{project:t.project})}async function IU(t,e){await Promise.all(Array.from(e,([r,[,o,a]])=>a?fh(t,r,process.execPath,[o]):fh(t,r,o,[])))}async function nue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await Kb(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${qr(a.configuration,t)}`);return await oe.mktempPromise(async I=>{let[,v]=E,x=await M1({project:a,locator:t,binFolder:I});await IU(x.BERRY_BIN_FOLDER,h);let C=wU(ue.toPortablePath(v))?Gc(process.execPath,[...p,v,...r],{cwd:o,env:x,stdin:n,stdout:u,stderr:A}):Gc(v,r,{cwd:o,env:x,stdin:n,stdout:u,stderr:A}),R;try{R=await C}finally{await oe.removePromise(x.BERRY_BIN_FOLDER)}return R.code})}async function Sat(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await nue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var Jce,zce,ph,Xce,Cat,wat,BU=Et(()=>{St();St();nA();k1();Jce=$e(mU()),zce=$e(id()),ph=ve(\"stream\");fE();Yl();O1();L1();Db();jl();ql();Qf();bo();Xce=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(Xce||{});Cat=2,wat=(0,zce.default)(Cat)});var OE=_((L4t,sue)=>{\"use strict\";var iue=new Map([[\"C\",\"cwd\"],[\"f\",\"file\"],[\"z\",\"gzip\"],[\"P\",\"preservePaths\"],[\"U\",\"unlink\"],[\"strip-components\",\"strip\"],[\"stripComponents\",\"strip\"],[\"keep-newer\",\"newer\"],[\"keepNewer\",\"newer\"],[\"keep-newer-files\",\"newer\"],[\"keepNewerFiles\",\"newer\"],[\"k\",\"keep\"],[\"keep-existing\",\"keep\"],[\"keepExisting\",\"keep\"],[\"m\",\"noMtime\"],[\"no-mtime\",\"noMtime\"],[\"p\",\"preserveOwner\"],[\"L\",\"follow\"],[\"h\",\"follow\"]]);sue.exports=t=>t?Object.keys(t).map(e=>[iue.has(e)?iue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var UE=_((O4t,hue)=>{\"use strict\";var oue=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},Pat=ve(\"events\"),aue=ve(\"stream\"),lue=ve(\"string_decoder\").StringDecoder,Mf=Symbol(\"EOF\"),Uf=Symbol(\"maybeEmitEnd\"),hh=Symbol(\"emittedEnd\"),Vb=Symbol(\"emittingEnd\"),U1=Symbol(\"emittedError\"),Jb=Symbol(\"closed\"),cue=Symbol(\"read\"),zb=Symbol(\"flush\"),uue=Symbol(\"flushChunk\"),ka=Symbol(\"encoding\"),_f=Symbol(\"decoder\"),Xb=Symbol(\"flowing\"),_1=Symbol(\"paused\"),ME=Symbol(\"resume\"),Fs=Symbol(\"bufferLength\"),vU=Symbol(\"bufferPush\"),DU=Symbol(\"bufferShift\"),Fo=Symbol(\"objectMode\"),Ro=Symbol(\"destroyed\"),SU=Symbol(\"emitData\"),Aue=Symbol(\"emitEnd\"),PU=Symbol(\"emitEnd2\"),Hf=Symbol(\"async\"),H1=t=>Promise.resolve().then(t),fue=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",bat=fue&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),xat=fue&&Symbol.iterator||Symbol(\"iterator not implemented\"),kat=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",Qat=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Fat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Zb=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[ME](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},bU=class extends Zb{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};hue.exports=class pue extends aue{constructor(e){super(),this[Xb]=!1,this[_1]=!1,this.pipes=[],this.buffer=[],this[Fo]=e&&e.objectMode||!1,this[Fo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]===\"buffer\"&&(this[ka]=null),this[Hf]=e&&!!e.async||!1,this[_f]=this[ka]?new lue(this[ka]):null,this[Mf]=!1,this[hh]=!1,this[Vb]=!1,this[Jb]=!1,this[U1]=null,this.writable=!0,this.readable=!0,this[Fs]=0,this[Ro]=!1}get bufferLength(){return this[Fs]}get encoding(){return this[ka]}set encoding(e){if(this[Fo])throw new Error(\"cannot set encoding in objectMode\");if(this[ka]&&e!==this[ka]&&(this[_f]&&this[_f].lastNeed||this[Fs]))throw new Error(\"cannot change encoding\");this[ka]!==e&&(this[_f]=e?new lue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[_f].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Fo]}set objectMode(e){this[Fo]=this[Fo]||!!e}get async(){return this[Hf]}set async(e){this[Hf]=this[Hf]||!!e}write(e,r,o){if(this[Mf])throw new Error(\"write after end\");if(this[Ro])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(o=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[Hf]?H1:n=>n();return!this[Fo]&&!Buffer.isBuffer(e)&&(Fat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Qat(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[Fo]?(this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[ka]&&!this[_f].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[_f].write(e)),this.flowing&&this[Fs]!==0&&this[zb](!0),this.flowing?this.emit(\"data\",e):this[vU](e),this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing):(this[Fs]!==0&&this.emit(\"readable\"),o&&a(o),this.flowing)}read(e){if(this[Ro])return null;if(this[Fs]===0||e===0||e>this[Fs])return this[Uf](),null;this[Fo]&&(e=null),this.buffer.length>1&&!this[Fo]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Fs])]);let r=this[cue](e||null,this.buffer[0]);return this[Uf](),r}[cue](e,r){return e===r.length||e===null?this[DU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Fs]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[Mf]&&this.emit(\"drain\"),r}end(e,r,o){return typeof e==\"function\"&&(o=e,e=null),typeof r==\"function\"&&(o=r,r=\"utf8\"),e&&this.write(e,r),o&&this.once(\"end\",o),this[Mf]=!0,this.writable=!1,(this.flowing||!this[_1])&&this[Uf](),this}[ME](){this[Ro]||(this[_1]=!1,this[Xb]=!0,this.emit(\"resume\"),this.buffer.length?this[zb]():this[Mf]?this[Uf]():this.emit(\"drain\"))}resume(){return this[ME]()}pause(){this[Xb]=!1,this[_1]=!0}get destroyed(){return this[Ro]}get flowing(){return this[Xb]}get paused(){return this[_1]}[vU](e){this[Fo]?this[Fs]+=1:this[Fs]+=e.length,this.buffer.push(e)}[DU](){return this.buffer.length&&(this[Fo]?this[Fs]-=1:this[Fs]-=this.buffer[0].length),this.buffer.shift()}[zb](e){do;while(this[uue](this[DU]()));!e&&!this.buffer.length&&!this[Mf]&&this.emit(\"drain\")}[uue](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[Ro])return;let o=this[hh];return r=r||{},e===oue.stdout||e===oue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new bU(this,e,r):new Zb(this,e,r)),this[Hf]?H1(()=>this[ME]()):this[ME]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[ME]():e===\"readable\"&&this[Fs]!==0?super.emit(\"readable\"):kat(e)&&this[hh]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[U1]&&(this[Hf]?H1(()=>r.call(this,this[U1])):r.call(this,this[U1])),o}get emittedEnd(){return this[hh]}[Uf](){!this[Vb]&&!this[hh]&&!this[Ro]&&this.buffer.length===0&&this[Mf]&&(this[Vb]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[Jb]&&this.emit(\"close\"),this[Vb]=!1)}emit(e,r,...o){if(e!==\"error\"&&e!==\"close\"&&e!==Ro&&this[Ro])return;if(e===\"data\")return r?this[Hf]?H1(()=>this[SU](r)):this[SU](r):!1;if(e===\"end\")return this[Aue]();if(e===\"close\"){if(this[Jb]=!0,!this[hh]&&!this[Ro])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[U1]=r;let n=super.emit(\"error\",r);return this[Uf](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Uf](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Uf](),a}[SU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Uf](),r}[Aue](){this[hh]||(this[hh]=!0,this.readable=!1,this[Hf]?H1(()=>this[PU]()):this[PU]())}[PU](){if(this[_f]){let r=this[_f].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit(\"data\",r)}}for(let r of this.pipes)r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}collect(){let e=[];this[Fo]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",o=>{e.push(o),this[Fo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[Fo]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[ka]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Ro,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",o=>r(o)),this.on(\"end\",()=>e())})}[bat](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Mf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener(\"data\",u),this.removeListener(\"end\",A),a(h)},u=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",A),this.pause(),o({value:h,done:!!this[Mf]})},A=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",u),o({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,o=h,this.once(Ro,p),this.once(\"error\",n),this.once(\"end\",A),this.once(\"data\",u)})}}}[xat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Ro]?(e?this.emit(\"error\",e):this.emit(Ro),this):(this[Ro]=!0,this.buffer.length=0,this[Fs]=0,typeof this.close==\"function\"&&!this[Jb]&&this.close(),e?this.emit(\"error\",e):this.emit(Ro),this)}static isStream(e){return!!e&&(e instanceof pue||e instanceof aue||e instanceof Pat&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var due=_((M4t,gue)=>{var Rat=ve(\"zlib\").constants||{ZLIB_VERNUM:4736};gue.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},Rat))});var GU=_(cl=>{\"use strict\";var RU=ve(\"assert\"),gh=ve(\"buffer\").Buffer,Eue=ve(\"zlib\"),Fd=cl.constants=due(),Tat=UE(),mue=gh.concat,Rd=Symbol(\"_superWrite\"),HE=class extends Error{constructor(e){super(\"zlib: \"+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code=\"ZLIB_ERROR\"),this.message=\"zlib: \"+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return\"ZlibError\"}},Nat=Symbol(\"opts\"),q1=Symbol(\"flushFlag\"),yue=Symbol(\"finishFlushFlag\"),jU=Symbol(\"fullFlushFlag\"),ti=Symbol(\"handle\"),$b=Symbol(\"onError\"),_E=Symbol(\"sawError\"),xU=Symbol(\"level\"),kU=Symbol(\"strategy\"),QU=Symbol(\"ended\"),U4t=Symbol(\"_defaultFullFlush\"),ex=class extends Tat{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[_E]=!1,this[QU]=!1,this[Nat]=e,this[q1]=e.flush,this[yue]=e.finishFlush;try{this[ti]=new Eue[r](e)}catch(o){throw new HE(o)}this[$b]=o=>{this[_E]||(this[_E]=!0,this.close(),this.emit(\"error\",o))},this[ti].on(\"error\",o=>this[$b](new HE(o))),this.once(\"end\",()=>this.close)}close(){this[ti]&&(this[ti].close(),this[ti]=null,this.emit(\"close\"))}reset(){if(!this[_E])return RU(this[ti],\"zlib binding closed\"),this[ti].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[jU]),this.write(Object.assign(gh.alloc(0),{[q1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[yue]),this[QU]=!0,super.end(null,null,o)}get ended(){return this[QU]}write(e,r,o){if(typeof r==\"function\"&&(o=r,r=\"utf8\"),typeof e==\"string\"&&(e=gh.from(e,r)),this[_E])return;RU(this[ti],\"zlib binding closed\");let a=this[ti]._handle,n=a.close;a.close=()=>{};let u=this[ti].close;this[ti].close=()=>{},gh.concat=h=>h;let A;try{let h=typeof e[q1]==\"number\"?e[q1]:this[q1];A=this[ti]._processChunk(e,h),gh.concat=mue}catch(h){gh.concat=mue,this[$b](new HE(h))}finally{this[ti]&&(this[ti]._handle=a,a.close=n,this[ti].close=u,this[ti].removeAllListeners(\"error\"))}this[ti]&&this[ti].on(\"error\",h=>this[$b](new HE(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Rd](gh.from(A[0]));for(let h=1;h<A.length;h++)p=this[Rd](A[h])}else p=this[Rd](gh.from(A));return o&&o(),p}[Rd](e){return super.write(e)}},qf=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Fd.Z_FINISH,super(e,r),this[jU]=Fd.Z_FULL_FLUSH,this[xU]=e.level,this[kU]=e.strategy}params(e,r){if(!this[_E]){if(!this[ti])throw new Error(\"cannot switch params when binding is closed\");if(!this[ti].params)throw new Error(\"not supported in this implementation\");if(this[xU]!==e||this[kU]!==r){this.flush(Fd.Z_SYNC_FLUSH),RU(this[ti],\"zlib binding closed\");let o=this[ti].flush;this[ti].flush=(a,n)=>{this.flush(a),n()};try{this[ti].params(e,r)}finally{this[ti].flush=o}this[ti]&&(this[xU]=e,this[kU]=r)}}}},TU=class extends qf{constructor(e){super(e,\"Deflate\")}},NU=class extends qf{constructor(e){super(e,\"Inflate\")}},FU=Symbol(\"_portable\"),LU=class extends qf{constructor(e){super(e,\"Gzip\"),this[FU]=e&&!!e.portable}[Rd](e){return this[FU]?(this[FU]=!1,e[9]=255,super[Rd](e)):super[Rd](e)}},OU=class extends qf{constructor(e){super(e,\"Gunzip\")}},MU=class extends qf{constructor(e){super(e,\"DeflateRaw\")}},UU=class extends qf{constructor(e){super(e,\"InflateRaw\")}},_U=class extends qf{constructor(e){super(e,\"Unzip\")}},tx=class extends ex{constructor(e,r){e=e||{},e.flush=e.flush||Fd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Fd.BROTLI_OPERATION_FINISH,super(e,r),this[jU]=Fd.BROTLI_OPERATION_FLUSH}},HU=class extends tx{constructor(e){super(e,\"BrotliCompress\")}},qU=class extends tx{constructor(e){super(e,\"BrotliDecompress\")}};cl.Deflate=TU;cl.Inflate=NU;cl.Gzip=LU;cl.Gunzip=OU;cl.DeflateRaw=MU;cl.InflateRaw=UU;cl.Unzip=_U;typeof Eue.BrotliCompress==\"function\"?(cl.BrotliCompress=HU,cl.BrotliDecompress=qU):cl.BrotliCompress=cl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var qE=_((q4t,Cue)=>{var Lat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Cue.exports=Lat!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var rx=_((G4t,wue)=>{\"use strict\";var Oat=UE(),YU=qE(),WU=Symbol(\"slurp\");wue.exports=class extends Oat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case\"File\":case\"OldFile\":case\"Link\":case\"SymbolicLink\":case\"CharacterDevice\":case\"BlockDevice\":case\"Directory\":case\"FIFO\":case\"ContiguousFile\":case\"GNUDumpDir\":break;case\"NextFileHasLongLinkpath\":case\"NextFileHasLongPath\":case\"OldGnuLongPath\":case\"GlobalExtendedHeader\":case\"ExtendedHeader\":case\"OldExtendedHeader\":this.meta=!0;break;default:this.ignore=!0}this.path=YU(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=YU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[WU](r),o&&this[WU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[WU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=o===\"path\"||o===\"linkpath\"?YU(e[o]):e[o])}}});var KU=_(nx=>{\"use strict\";nx.name=new Map([[\"0\",\"File\"],[\"\",\"OldFile\"],[\"1\",\"Link\"],[\"2\",\"SymbolicLink\"],[\"3\",\"CharacterDevice\"],[\"4\",\"BlockDevice\"],[\"5\",\"Directory\"],[\"6\",\"FIFO\"],[\"7\",\"ContiguousFile\"],[\"g\",\"GlobalExtendedHeader\"],[\"x\",\"ExtendedHeader\"],[\"A\",\"SolarisACL\"],[\"D\",\"GNUDumpDir\"],[\"I\",\"Inode\"],[\"K\",\"NextFileHasLongLinkpath\"],[\"L\",\"NextFileHasLongPath\"],[\"M\",\"ContinuationFile\"],[\"N\",\"OldGnuLongPath\"],[\"S\",\"SparseFile\"],[\"V\",\"TapeVolumeHeader\"],[\"X\",\"OldExtendedHeader\"]]);nx.code=new Map(Array.from(nx.name).map(t=>[t[1],t[0]]))});var Due=_((W4t,vue)=>{\"use strict\";var Mat=(t,e)=>{if(Number.isSafeInteger(t))t<0?_at(t,e):Uat(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},Uat=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},_at=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=Iue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=Bue(a))}},Hat=t=>{let e=t[0],r=e===128?jat(t.slice(1,t.length)):e===255?qat(t):null;if(r===null)throw Error(\"invalid base256 encoding\");if(!Number.isSafeInteger(r))throw Error(\"parsed number outside of javascript safe integer range\");return r},qat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=Iue(n):n===0?u=n:(o=!0,u=Bue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},jat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},Iue=t=>(255^t)&255,Bue=t=>(255^t)+1&255;vue.exports={encode:Mat,parse:Hat}});var GE=_((K4t,Pue)=>{\"use strict\";var VU=KU(),jE=ve(\"path\").posix,Sue=Due(),JU=Symbol(\"slurp\"),ul=Symbol(\"type\"),ZU=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[ul]=\"0\",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=Td(e,r,100),this.mode=dh(e,r+100,8),this.uid=dh(e,r+108,8),this.gid=dh(e,r+116,8),this.size=dh(e,r+124,12),this.mtime=zU(e,r+136,12),this.cksum=dh(e,r+148,12),this[JU](o),this[JU](a,!0),this[ul]=Td(e,r+156,1),this[ul]===\"\"&&(this[ul]=\"0\"),this[ul]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[ul]=\"5\"),this[ul]===\"5\"&&(this.size=0),this.linkpath=Td(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=Td(e,r+265,32),this.gname=Td(e,r+297,32),this.devmaj=dh(e,r+329,8),this.devmin=dh(e,r+337,8),e[r+475]!==0){let u=Td(e,r+345,155);this.path=u+\"/\"+this.path}else{let u=Td(e,r+345,130);u&&(this.path=u+\"/\"+this.path),this.atime=zU(e,r+476,12),this.ctime=zU(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[JU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o===\"path\")&&(this[o]=e[o])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");let o=this.ctime||this.atime?130:155,a=Gat(this.path||\"\",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Nd(e,r,100,n)||this.needPax,this.needPax=mh(e,r+100,8,this.mode)||this.needPax,this.needPax=mh(e,r+108,8,this.uid)||this.needPax,this.needPax=mh(e,r+116,8,this.gid)||this.needPax,this.needPax=mh(e,r+124,12,this.size)||this.needPax,this.needPax=XU(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[ul].charCodeAt(0),this.needPax=Nd(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=Nd(e,r+265,32,this.uname)||this.needPax,this.needPax=Nd(e,r+297,32,this.gname)||this.needPax,this.needPax=mh(e,r+329,8,this.devmaj)||this.needPax,this.needPax=mh(e,r+337,8,this.devmin)||this.needPax,this.needPax=Nd(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Nd(e,r+345,155,u)||this.needPax:(this.needPax=Nd(e,r+345,130,u)||this.needPax,this.needPax=XU(e,r+476,12,this.atime)||this.needPax,this.needPax=XU(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,mh(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return VU.name.get(this[ul])||this[ul]}get typeKey(){return this[ul]}set type(e){VU.code.has(e)?this[ul]=VU.code.get(e):this[ul]=e}},Gat=(t,e)=>{let o=t,a=\"\",n,u=jE.parse(t).root||\".\";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=jE.dirname(o),o=jE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=jE.join(jE.basename(a),o),a=jE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),\"\",!0])}return n},Td=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),zU=(t,e,r)=>Yat(dh(t,e,r)),Yat=t=>t===null?null:new Date(t*1e3),dh=(t,e,r)=>t[e]&128?Sue.parse(t.slice(e,e+r)):Kat(t,e,r),Wat=t=>isNaN(t)?null:t,Kat=(t,e,r)=>Wat(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),Vat={12:8589934591,8:2097151},mh=(t,e,r,o)=>o===null?!1:o>Vat[r]||o<0?(Sue.encode(o,t.slice(e,e+r)),!0):(Jat(t,e,r,o),!1),Jat=(t,e,r,o)=>t.write(zat(o,r),e,r,\"ascii\"),zat=(t,e)=>Xat(Math.floor(t).toString(8),e),Xat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",XU=(t,e,r,o)=>o===null?!1:mh(t,e,r,o.getTime()/1e3),Zat=new Array(156).join(\"\\0\"),Nd=(t,e,r,o)=>o===null?!1:(t.write(o+Zat,e,r,\"utf8\"),o.length!==Buffer.byteLength(o)||o.length>r);Pue.exports=ZU});var ix=_((V4t,bue)=>{\"use strict\";var $at=GE(),elt=ve(\"path\"),j1=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e===\"\")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new $at({path:(\"PaxHeader/\"+elt.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(e){if(this[e]===null||this[e]===void 0)return\"\";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],o=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};j1.parse=(t,e,r)=>new j1(tlt(rlt(t),e),r);var tlt=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,rlt=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(nlt,Object.create(null)),nlt=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let o=e.split(\"=\"),a=o.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=o.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};bue.exports=j1});var YE=_((J4t,xue)=>{xue.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)===\"/\";)r=e,e--;return r===-1?t:t.slice(0,r)}});var sx=_((z4t,kue)=>{\"use strict\";kue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit(\"warn\",o.tarCode,r,o)):r instanceof Error?this.emit(\"error\",Object.assign(r,o)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),o))}}});var e3=_((Z4t,Que)=>{\"use strict\";var ox=[\"|\",\"<\",\">\",\"?\",\":\"],$U=ox.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),ilt=new Map(ox.map((t,e)=>[t,$U[e]])),slt=new Map($U.map((t,e)=>[t,ox[e]]));Que.exports={encode:t=>ox.reduce((e,r)=>e.split(r).join(ilt.get(r)),t),decode:t=>$U.reduce((e,r)=>e.split(r).join(slt.get(r)),t)}});var t3=_(($4t,Rue)=>{var{isAbsolute:olt,parse:Fue}=ve(\"path\").win32;Rue.exports=t=>{let e=\"\",r=Fue(t);for(;olt(t)||r.root;){let o=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(o.length),e+=o,r=Fue(t)}return[e,t]}});var Nue=_((eUt,Tue)=>{\"use strict\";Tue.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var A3=_((nUt,Jue)=>{\"use strict\";var que=UE(),jue=ix(),Gue=GE(),oA=ve(\"fs\"),Lue=ve(\"path\"),sA=qE(),alt=YE(),Yue=(t,e)=>e?(t=sA(t).replace(/^\\.(\\/|$)/,\"\"),alt(e)+\"/\"+t):sA(t),llt=16*1024*1024,Oue=Symbol(\"process\"),Mue=Symbol(\"file\"),Uue=Symbol(\"directory\"),n3=Symbol(\"symlink\"),_ue=Symbol(\"hardlink\"),G1=Symbol(\"header\"),ax=Symbol(\"read\"),i3=Symbol(\"lstat\"),lx=Symbol(\"onlstat\"),s3=Symbol(\"onread\"),o3=Symbol(\"onreadlink\"),a3=Symbol(\"openfile\"),l3=Symbol(\"onopenfile\"),yh=Symbol(\"close\"),cx=Symbol(\"mode\"),c3=Symbol(\"awaitDrain\"),r3=Symbol(\"ondrain\"),aA=Symbol(\"prefix\"),Hue=Symbol(\"hadError\"),Wue=sx(),clt=e3(),Kue=t3(),Vue=Nue(),ux=Wue(class extends que{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=sA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||llt,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=sA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?sA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=clt.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=sA(r.absolute||Lue.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[lx](this.statCache.get(this.absolute)):this[i3]()}emit(e,...r){return e===\"error\"&&(this[Hue]=!0),super.emit(e,...r)}[i3](){oA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[lx](r)})}[lx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Alt(e),this.emit(\"stat\",e),this[Oue]()}[Oue](){switch(this.type){case\"File\":return this[Mue]();case\"Directory\":return this[Uue]();case\"SymbolicLink\":return this[n3]();default:return this.end()}}[cx](e){return Vue(e,this.type===\"Directory\",this.portable)}[aA](e){return Yue(e,this.prefix)}[G1](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new Gue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this[cx](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:\"\",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new jue({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Uue](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[G1](),this.end()}[n3](){oA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[o3](r)})}[o3](e){this.linkpath=sA(e),this[G1](),this.end()}[_ue](e){this.type=\"Link\",this.linkpath=sA(Lue.relative(this.cwd,e)),this.stat.size=0,this[G1](),this.end()}[Mue](){if(this.stat.nlink>1){let e=this.stat.dev+\":\"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[_ue](r)}this.linkCache.set(e,this.absolute)}if(this[G1](),this.stat.size===0)return this.end();this[a3]()}[a3](){oA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[l3](r)})}[l3](e){if(this.fd=e,this[Hue])return this[yh]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[ax]()}[ax](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;oA.read(e,r,o,a,n,(u,A)=>{if(u)return this[yh](()=>this.emit(\"error\",u));this[s3](A)})}[yh](e){oA.close(this.fd,e)}[s3](e){if(e<=0&&this.remain>0){let a=new Error(\"encountered unexpected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[yh](()=>this.emit(\"error\",a))}if(e>this.remain){let a=new Error(\"did not encounter expected EOF\");return a.path=this.absolute,a.syscall=\"read\",a.code=\"EOF\",this[yh](()=>this.emit(\"error\",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[r3]():this[c3](()=>this[r3]())}[c3](e){this.once(\"drain\",e)}write(e){if(this.blockRemain<e.length){let r=new Error(\"writing more data than expected\");return r.path=this.absolute,this.emit(\"error\",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[r3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[yh](e=>e?this.emit(\"error\",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[ax]()}}),u3=class extends ux{[i3](){this[lx](oA.lstatSync(this.absolute))}[n3](){this[o3](oA.readlinkSync(this.absolute))}[a3](){this[l3](oA.openSync(this.absolute,\"r\"))}[ax](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=oA.readSync(r,o,a,n,u);this[s3](A),e=!1}finally{if(e)try{this[yh](()=>{})}catch{}}}[c3](e){e()}[yh](e){oA.closeSync(this.fd),e()}},ult=Wue(class extends que{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=sA(e.path),this.mode=this[cx](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=sA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=Kue(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new Gue({path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new jue({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[aA](this.path),linkpath:this.type===\"Link\"?this[aA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[aA](e){return Yue(e,this.prefix)}[cx](e){return Vue(e,this.type===\"Directory\",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});ux.Sync=u3;ux.Tar=ult;var Alt=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";Jue.exports=ux});var Ex=_((sUt,rAe)=>{\"use strict\";var mx=class{constructor(e,r){this.path=e||\"./\",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},flt=UE(),plt=GU(),hlt=rx(),C3=A3(),glt=C3.Sync,dlt=C3.Tar,mlt=IS(),zue=Buffer.alloc(1024),px=Symbol(\"onStat\"),Ax=Symbol(\"ended\"),lA=Symbol(\"queue\"),WE=Symbol(\"current\"),Ld=Symbol(\"process\"),fx=Symbol(\"processing\"),Xue=Symbol(\"processJob\"),cA=Symbol(\"jobs\"),f3=Symbol(\"jobDone\"),hx=Symbol(\"addFSEntry\"),Zue=Symbol(\"addTarEntry\"),d3=Symbol(\"stat\"),m3=Symbol(\"readdir\"),gx=Symbol(\"onreaddir\"),dx=Symbol(\"pipe\"),$ue=Symbol(\"entry\"),p3=Symbol(\"entryOpt\"),y3=Symbol(\"writeEntryClass\"),tAe=Symbol(\"write\"),h3=Symbol(\"ondrain\"),yx=ve(\"fs\"),eAe=ve(\"path\"),ylt=sx(),g3=qE(),w3=ylt(class extends flt{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||\"\",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=g3(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[y3]=C3,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!=\"object\"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new plt.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[h3]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[h3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter==\"function\"?e.filter:r=>!0,this[lA]=new mlt,this[cA]=0,this.jobs=+e.jobs||4,this[fx]=!1,this[Ax]=!1}[tAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Ax]=!0,this[Ld](),this}write(e){if(this[Ax])throw new Error(\"write after end\");return e instanceof hlt?this[Zue](e):this[hx](e),this.flowing}[Zue](e){let r=g3(eAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new mx(e.path,r,!1);o.entry=new dlt(e,this[p3](o)),o.entry.on(\"end\",a=>this[f3](o)),this[cA]+=1,this[lA].push(o)}this[Ld]()}[hx](e){let r=g3(eAe.resolve(this.cwd,e));this[lA].push(new mx(e,r)),this[Ld]()}[d3](e){e.pending=!0,this[cA]+=1;let r=this.follow?\"stat\":\"lstat\";yx[r](e.absolute,(o,a)=>{e.pending=!1,this[cA]-=1,o?this.emit(\"error\",o):this[px](e,a)})}[px](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Ld]()}[m3](e){e.pending=!0,this[cA]+=1,yx.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[cA]-=1,r)return this.emit(\"error\",r);this[gx](e,o)})}[gx](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Ld]()}[Ld](){if(!this[fx]){this[fx]=!0;for(let e=this[lA].head;e!==null&&this[cA]<this.jobs;e=e.next)if(this[Xue](e.value),e.value.ignore){let r=e.next;this[lA].removeNode(e),e.next=r}this[fx]=!1,this[Ax]&&!this[lA].length&&this[cA]===0&&(this.zip?this.zip.end(zue):(super.write(zue),super.end()))}}get[WE](){return this[lA]&&this[lA].head&&this[lA].head.value}[f3](e){this[lA].shift(),this[cA]-=1,this[Ld]()}[Xue](e){if(!e.pending){if(e.entry){e===this[WE]&&!e.piped&&this[dx](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[px](e,this.statCache.get(e.absolute)):this[d3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[gx](e,this.readdirCache.get(e.absolute)):this[m3](e),!e.readdir))){if(e.entry=this[$ue](e),!e.entry){e.ignore=!0;return}e===this[WE]&&!e.piped&&this[dx](e)}}}[p3](e){return{onwarn:(r,o,a)=>this.warn(r,o,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[$ue](e){this[cA]+=1;try{return new this[y3](e.path,this[p3](e)).on(\"end\",()=>this[f3](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[h3](){this[WE]&&this[WE].entry&&this[WE].entry.resume()}[dx](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)});let r=e.entry,o=this.zip;o?r.on(\"data\",a=>{o.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),E3=class extends w3{constructor(e){super(e),this[y3]=glt}pause(){}resume(){}[d3](e){let r=this.follow?\"statSync\":\"lstatSync\";this[px](e,yx[r](e.absolute))}[m3](e,r){this[gx](e,yx.readdirSync(e.absolute))}[dx](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[hx](u+a)}),o?r.on(\"data\",a=>{o.write(a)}):r.on(\"data\",a=>{super[tAe](a)})}};w3.Sync=E3;rAe.exports=w3});var eC=_(W1=>{\"use strict\";var Elt=UE(),Clt=ve(\"events\").EventEmitter,Qa=ve(\"fs\"),v3=Qa.writev;if(!v3){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;v3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var ZE=Symbol(\"_autoClose\"),Yc=Symbol(\"_close\"),Y1=Symbol(\"_ended\"),Gn=Symbol(\"_fd\"),nAe=Symbol(\"_finished\"),Ch=Symbol(\"_flags\"),I3=Symbol(\"_flush\"),D3=Symbol(\"_handleChunk\"),S3=Symbol(\"_makeBuf\"),vx=Symbol(\"_mode\"),Cx=Symbol(\"_needDrain\"),zE=Symbol(\"_onerror\"),$E=Symbol(\"_onopen\"),B3=Symbol(\"_onread\"),VE=Symbol(\"_onwrite\"),wh=Symbol(\"_open\"),jf=Symbol(\"_path\"),Od=Symbol(\"_pos\"),uA=Symbol(\"_queue\"),JE=Symbol(\"_read\"),iAe=Symbol(\"_readSize\"),Eh=Symbol(\"_reading\"),wx=Symbol(\"_remain\"),sAe=Symbol(\"_size\"),Ix=Symbol(\"_write\"),KE=Symbol(\"_writing\"),Bx=Symbol(\"_defaultFlag\"),XE=Symbol(\"_errored\"),Dx=class extends Elt{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!=\"string\")throw new TypeError(\"path must be a string\");this[XE]=!1,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[jf]=e,this[iAe]=r.readSize||16*1024*1024,this[Eh]=!1,this[sAe]=typeof r.size==\"number\"?r.size:1/0,this[wx]=this[sAe],this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[Gn]==\"number\"?this[JE]():this[wh]()}get fd(){return this[Gn]}get path(){return this[jf]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[wh](){Qa.open(this[jf],\"r\",(e,r)=>this[$E](e,r))}[$E](e,r){e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[JE]())}[S3](){return Buffer.allocUnsafe(Math.min(this[iAe],this[wx]))}[JE](){if(!this[Eh]){this[Eh]=!0;let e=this[S3]();if(e.length===0)return process.nextTick(()=>this[B3](null,0,e));Qa.read(this[Gn],e,0,e.length,null,(r,o,a)=>this[B3](r,o,a))}}[B3](e,r,o){this[Eh]=!1,e?this[zE](e):this[D3](r,o)&&this[JE]()}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[zE](e){this[Eh]=!0,this[Yc](),this.emit(\"error\",e)}[D3](e,r){let o=!1;return this[wx]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[wx]<=0)&&(o=!1,this[Yc](),super.end()),o}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[Gn]==\"number\"&&this[JE]();break;case\"error\":return this[XE]?void 0:(this[XE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},P3=class extends Dx{[wh](){let e=!0;try{this[$E](null,Qa.openSync(this[jf],\"r\")),e=!1}finally{e&&this[Yc]()}}[JE](){let e=!0;try{if(!this[Eh]){this[Eh]=!0;do{let r=this[S3](),o=r.length===0?0:Qa.readSync(this[Gn],r,0,r.length,null);if(!this[D3](o,r))break}while(!0);this[Eh]=!1}e=!1}finally{e&&this[Yc]()}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}},Sx=class extends Clt{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[XE]=!1,this[KE]=!1,this[Y1]=!1,this[Cx]=!1,this[uA]=[],this[jf]=e,this[Gn]=typeof r.fd==\"number\"?r.fd:null,this[vx]=r.mode===void 0?438:r.mode,this[Od]=typeof r.start==\"number\"?r.start:null,this[ZE]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let o=this[Od]!==null?\"r+\":\"w\";this[Bx]=r.flags===void 0,this[Ch]=this[Bx]?o:r.flags,this[Gn]===null&&this[wh]()}emit(e,r){if(e===\"error\"){if(this[XE])return;this[XE]=!0}return super.emit(e,r)}get fd(){return this[Gn]}get path(){return this[jf]}[zE](e){this[Yc](),this[KE]=!0,this.emit(\"error\",e)}[wh](){Qa.open(this[jf],this[Ch],this[vx],(e,r)=>this[$E](e,r))}[$E](e,r){this[Bx]&&this[Ch]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[Ch]=\"w\",this[wh]()):e?this[zE](e):(this[Gn]=r,this.emit(\"open\",r),this[I3]())}end(e,r){return e&&this.write(e,r),this[Y1]=!0,!this[KE]&&!this[uA].length&&typeof this[Gn]==\"number\"&&this[VE](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[Y1]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[Gn]===null||this[KE]||this[uA].length?(this[uA].push(e),this[Cx]=!0,!1):(this[KE]=!0,this[Ix](e),!0)}[Ix](e){Qa.write(this[Gn],e,0,e.length,this[Od],(r,o)=>this[VE](r,o))}[VE](e,r){e?this[zE](e):(this[Od]!==null&&(this[Od]+=r),this[uA].length?this[I3]():(this[KE]=!1,this[Y1]&&!this[nAe]?(this[nAe]=!0,this[Yc](),this.emit(\"finish\")):this[Cx]&&(this[Cx]=!1,this.emit(\"drain\"))))}[I3](){if(this[uA].length===0)this[Y1]&&this[VE](null,0);else if(this[uA].length===1)this[Ix](this[uA].pop());else{let e=this[uA];this[uA]=[],v3(this[Gn],e,this[Od],(r,o)=>this[VE](r,o))}}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},b3=class extends Sx{[wh](){let e;if(this[Bx]&&this[Ch]===\"r+\")try{e=Qa.openSync(this[jf],this[Ch],this[vx])}catch(r){if(r.code===\"ENOENT\")return this[Ch]=\"w\",this[wh]();throw r}else e=Qa.openSync(this[jf],this[Ch],this[vx]);this[$E](null,e)}[Yc](){if(this[ZE]&&typeof this[Gn]==\"number\"){let e=this[Gn];this[Gn]=null,Qa.closeSync(e),this.emit(\"close\")}}[Ix](e){let r=!0;try{this[VE](null,Qa.writeSync(this[Gn],e,0,e.length,this[Od])),r=!1}finally{if(r)try{this[Yc]()}catch{}}}};W1.ReadStream=Dx;W1.ReadStreamSync=P3;W1.WriteStream=Sx;W1.WriteStreamSync=b3});var Rx=_((lUt,fAe)=>{\"use strict\";var wlt=sx(),Ilt=GE(),Blt=ve(\"events\"),vlt=IS(),Dlt=1024*1024,Slt=rx(),oAe=ix(),Plt=GU(),x3=Buffer.from([31,139]),Xl=Symbol(\"state\"),Md=Symbol(\"writeEntry\"),Gf=Symbol(\"readEntry\"),k3=Symbol(\"nextEntry\"),aAe=Symbol(\"processEntry\"),Zl=Symbol(\"extendedHeader\"),K1=Symbol(\"globalExtendedHeader\"),Ih=Symbol(\"meta\"),lAe=Symbol(\"emitMeta\"),fi=Symbol(\"buffer\"),Yf=Symbol(\"queue\"),Ud=Symbol(\"ended\"),cAe=Symbol(\"emittedEnd\"),_d=Symbol(\"emit\"),Fa=Symbol(\"unzip\"),Px=Symbol(\"consumeChunk\"),bx=Symbol(\"consumeChunkSub\"),Q3=Symbol(\"consumeBody\"),uAe=Symbol(\"consumeMeta\"),AAe=Symbol(\"consumeHeader\"),xx=Symbol(\"consuming\"),F3=Symbol(\"bufferConcat\"),R3=Symbol(\"maybeEnd\"),V1=Symbol(\"writing\"),Bh=Symbol(\"aborted\"),kx=Symbol(\"onDone\"),Hd=Symbol(\"sawValidEntry\"),Qx=Symbol(\"sawNullBlock\"),Fx=Symbol(\"sawEOF\"),blt=t=>!0;fAe.exports=wlt(class extends Blt{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[Hd]=null,this.on(kx,r=>{(this[Xl]===\"begin\"||this[Hd]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(kx,e.ondone):this.on(kx,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Dlt,this.filter=typeof e.filter==\"function\"?e.filter:blt,this.writable=!0,this.readable=!1,this[Yf]=new vlt,this[fi]=null,this[Gf]=null,this[Md]=null,this[Xl]=\"begin\",this[Ih]=\"\",this[Zl]=null,this[K1]=null,this[Ud]=!1,this[Fa]=null,this[Bh]=!1,this[Qx]=!1,this[Fx]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[AAe](e,r){this[Hd]===null&&(this[Hd]=!1);let o;try{o=new Ilt(e,r,this[Zl],this[K1])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(o.nullBlock)this[Qx]?(this[Fx]=!0,this[Xl]===\"begin\"&&(this[Xl]=\"header\"),this[_d](\"eof\")):(this[Qx]=!0,this[_d](\"nullBlock\"));else if(this[Qx]=!1,!o.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:o});else if(!o.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:o});else{let n=this[Md]=new Slt(o,this[Zl],this[K1]);if(!this[Hd])if(n.remain){let u=()=>{n.invalid||(this[Hd]=!0)};n.on(\"end\",u)}else this[Hd]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[_d](\"ignoredEntry\",n),this[Xl]=\"ignore\",n.resume()):n.size>0&&(this[Ih]=\"\",n.on(\"data\",u=>this[Ih]+=u),this[Xl]=\"meta\"):(this[Zl]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[_d](\"ignoredEntry\",n),this[Xl]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[Xl]=\"body\":(this[Xl]=\"header\",n.end()),this[Gf]?this[Yf].push(n):(this[Yf].push(n),this[k3]())))}}}[aAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Gf]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",o=>this[k3]()),r=!1)):(this[Gf]=null,r=!1),r}[k3](){do;while(this[aAe](this[Yf].shift()));if(!this[Yf].length){let e=this[Gf];!e||e.flowing||e.size===e.remain?this[V1]||this.emit(\"drain\"):e.once(\"drain\",o=>this.emit(\"drain\"))}}[Q3](e,r){let o=this[Md],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[Xl]=\"header\",this[Md]=null,o.end()),n.length}[uAe](e,r){let o=this[Md],a=this[Q3](e,r);return this[Md]||this[lAe](o),a}[_d](e,r,o){!this[Yf].length&&!this[Gf]?this.emit(e,r,o):this[Yf].push([e,r,o])}[lAe](e){switch(this[_d](\"meta\",this[Ih]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Zl]=oAe.parse(this[Ih],this[Zl],!1);break;case\"GlobalExtendedHeader\":this[K1]=oAe.parse(this[Ih],this[K1],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].path=this[Ih].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Zl]=this[Zl]||Object.create(null),this[Zl].linkpath=this[Ih].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[Bh]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[Bh])return;if(this[Fa]===null&&e){if(this[fi]&&(e=Buffer.concat([this[fi],e]),this[fi]=null),e.length<x3.length)return this[fi]=e,!0;for(let o=0;this[Fa]===null&&o<x3.length;o++)e[o]!==x3[o]&&(this[Fa]=!1);if(this[Fa]===null){let o=this[Ud];this[Ud]=!1,this[Fa]=new Plt.Unzip,this[Fa].on(\"data\",n=>this[Px](n)),this[Fa].on(\"error\",n=>this.abort(n)),this[Fa].on(\"end\",n=>{this[Ud]=!0,this[Px]()}),this[V1]=!0;let a=this[Fa][o?\"end\":\"write\"](e);return this[V1]=!1,a}}this[V1]=!0,this[Fa]?this[Fa].write(e):this[Px](e),this[V1]=!1;let r=this[Yf].length?!1:this[Gf]?this[Gf].flowing:!0;return!r&&!this[Yf].length&&this[Gf].once(\"drain\",o=>this.emit(\"drain\")),r}[F3](e){e&&!this[Bh]&&(this[fi]=this[fi]?Buffer.concat([this[fi],e]):e)}[R3](){if(this[Ud]&&!this[cAe]&&!this[Bh]&&!this[xx]){this[cAe]=!0;let e=this[Md];if(e&&e.blockRemain){let r=this[fi]?this[fi].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[fi]&&e.write(this[fi]),e.end()}this[_d](kx)}}[Px](e){if(this[xx])this[F3](e);else if(!e&&!this[fi])this[R3]();else{if(this[xx]=!0,this[fi]){this[F3](e);let r=this[fi];this[fi]=null,this[bx](r)}else this[bx](e);for(;this[fi]&&this[fi].length>=512&&!this[Bh]&&!this[Fx];){let r=this[fi];this[fi]=null,this[bx](r)}this[xx]=!1}(!this[fi]||this[Ud])&&this[R3]()}[bx](e){let r=0,o=e.length;for(;r+512<=o&&!this[Bh]&&!this[Fx];)switch(this[Xl]){case\"begin\":case\"header\":this[AAe](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[Q3](e,r);break;case\"meta\":r+=this[uAe](e,r);break;default:throw new Error(\"invalid state: \"+this[Xl])}r<o&&(this[fi]?this[fi]=Buffer.concat([e.slice(r),this[fi]]):this[fi]=e.slice(r))}end(e){this[Bh]||(this[Fa]?this[Fa].end(e):(this[Ud]=!0,this.write(e)))}})});var Tx=_((cUt,dAe)=>{\"use strict\";var xlt=OE(),hAe=Rx(),tC=ve(\"fs\"),klt=eC(),pAe=ve(\"path\"),T3=YE();dAe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=xlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Flt(o,e),o.noResume||Qlt(o),o.file&&o.sync?Rlt(o):o.file?Tlt(o,r):gAe(o)};var Qlt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Flt=(t,e)=>{let r=new Map(e.map(n=>[T3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||pAe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(pAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(T3(n)):n=>a(T3(n))},Rlt=t=>{let e=gAe(t),r=t.file,o=!0,a;try{let n=tC.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(tC.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=tC.openSync(r,\"r\");A<n.size;){let h=tC.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{tC.closeSync(a)}catch{}}},Tlt=(t,e)=>{let r=new hAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"end\",u),tC.stat(a,(p,h)=>{if(p)A(p);else{let E=new klt.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},gAe=t=>new hAe(t)});var IAe=_((uUt,wAe)=>{\"use strict\";var Nlt=OE(),Nx=Ex(),mAe=eC(),yAe=Tx(),EAe=ve(\"path\");wAe.exports=(t,e,r)=>{if(typeof e==\"function\"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");e=Array.from(e);let o=Nlt(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return o.file&&o.sync?Llt(o,e):o.file?Olt(o,e,r):o.sync?Mlt(o,e):Ult(o,e)};var Llt=(t,e)=>{let r=new Nx.Sync(t),o=new mAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),CAe(r,e)},Olt=(t,e,r)=>{let o=new Nx(t),a=new mAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on(\"error\",A),a.on(\"close\",u),o.on(\"error\",A)});return N3(o,e),r?n.then(r,r):n},CAe=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?yAe({file:EAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},N3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return yAe({file:EAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>N3(t,e));t.add(r)}t.end()},Mlt=(t,e)=>{let r=new Nx.Sync(t);return CAe(r,e),r},Ult=(t,e)=>{let r=new Nx(t);return N3(r,e),r}});var L3=_((AUt,xAe)=>{\"use strict\";var _lt=OE(),BAe=Ex(),Al=ve(\"fs\"),vAe=eC(),DAe=Tx(),SAe=ve(\"path\"),PAe=GE();xAe.exports=(t,e,r)=>{let o=_lt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),o.sync?Hlt(o,e):jlt(o,e,r)};var Hlt=(t,e)=>{let r=new BAe.Sync(t),o=!0,a,n;try{try{a=Al.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Al.openSync(t.file,\"w+\");else throw p}let u=Al.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let E=0,I=0;E<512;E+=I){if(I=Al.readSync(a,A,E,A.length-E,n+E),n===0&&A[0]===31&&A[1]===139)throw new Error(\"cannot append to compressed archives\");if(!I)break e}let p=new PAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,qlt(t,r,n,a,e)}finally{if(o)try{Al.closeSync(a)}catch{}}},qlt=(t,e,r,o,a)=>{let n=new vAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),Glt(e,a)},jlt=(t,e,r)=>{e=Array.from(e);let o=new BAe(t),a=(u,A,p)=>{let h=(C,R)=>{C?Al.close(u,L=>p(C)):p(null,R)},E=0;if(A===0)return h(null,0);let I=0,v=Buffer.alloc(512),x=(C,R)=>{if(C)return h(C);if(I+=R,I<512&&R)return Al.read(u,v,I,v.length-I,E+I,x);if(E===0&&v[0]===31&&v[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(I<512)return h(null,E);let L=new PAe(v);if(!L.cksumValid)return h(null,E);let U=512*Math.ceil(L.size/512);if(E+U+512>A||(E+=U+512,E>=A))return h(null,E);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),I=0,Al.read(u,v,0,512,E,x)};Al.read(u,v,0,512,E,x)},n=new Promise((u,A)=>{o.on(\"error\",A);let p=\"r+\",h=(E,I)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Al.open(t.file,p,h);if(E)return A(E);Al.fstat(I,(v,x)=>{if(v)return Al.close(I,()=>A(v));a(I,x.size,(C,R)=>{if(C)return A(C);let L=new vAe.WriteStream(t.file,{fd:I,start:R});o.pipe(L),L.on(\"error\",A),L.on(\"close\",u),bAe(o,e)})})};Al.open(t.file,p,h)});return r?n.then(r,r):n},Glt=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?DAe({file:SAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},bAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return DAe({file:SAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>bAe(t,e));t.add(r)}t.end()}});var QAe=_((fUt,kAe)=>{\"use strict\";var Ylt=OE(),Wlt=L3();kAe.exports=(t,e,r)=>{let o=Ylt(t);if(!o.file)throw new TypeError(\"file is required\");if(o.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),Klt(o),Wlt(o,e,r)};var Klt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var TAe=_((pUt,RAe)=>{var{promisify:FAe}=ve(\"util\"),vh=ve(\"fs\"),Vlt=t=>{if(!t)t={mode:511,fs:vh};else if(typeof t==\"object\")t={mode:511,fs:vh,...t};else if(typeof t==\"number\")t={mode:t,fs:vh};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:vh};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||vh.mkdir,t.mkdirAsync=FAe(t.mkdir),t.stat=t.stat||t.fs.stat||vh.stat,t.statAsync=FAe(t.stat),t.statSync=t.statSync||t.fs.statSync||vh.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||vh.mkdirSync,t};RAe.exports=Vlt});var LAe=_((hUt,NAe)=>{var Jlt=process.platform,{resolve:zlt,parse:Xlt}=ve(\"path\"),Zlt=t=>{if(/\\0/.test(t))throw Object.assign(new TypeError(\"path must be a string without null bytes\"),{path:t,code:\"ERR_INVALID_ARG_VALUE\"});if(t=zlt(t),Jlt===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=Xlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};NAe.exports=Zlt});var HAe=_((gUt,_Ae)=>{var{dirname:OAe}=ve(\"path\"),MAe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code===\"ENOENT\"?MAe(t,OAe(e),e):void 0),UAe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code===\"ENOENT\"?UAe(t,OAe(e),e):void 0}};_Ae.exports={findMade:MAe,findMadeSync:UAe}});var U3=_((dUt,jAe)=>{var{dirname:qAe}=ve(\"path\"),O3=(t,e,r)=>{e.recursive=!1;let o=qAe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!==\"EISDIR\")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code===\"ENOENT\")return O3(o,e).then(n=>O3(t,e,n));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},M3=(t,e,r)=>{let o=qAe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!==\"EISDIR\")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code===\"ENOENT\")return M3(t,e,M3(o,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};jAe.exports={mkdirpManual:O3,mkdirpManualSync:M3}});var WAe=_((mUt,YAe)=>{var{dirname:GAe}=ve(\"path\"),{findMade:$lt,findMadeSync:ect}=HAe(),{mkdirpManual:tct,mkdirpManualSync:rct}=U3(),nct=(t,e)=>(e.recursive=!0,GAe(t)===t?e.mkdirAsync(t,e):$lt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code===\"ENOENT\")return tct(t,e);throw a}))),ict=(t,e)=>{if(e.recursive=!0,GAe(t)===t)return e.mkdirSync(t,e);let o=ect(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code===\"ENOENT\")return rct(t,e);throw a}};YAe.exports={mkdirpNative:nct,mkdirpNativeSync:ict}});var zAe=_((yUt,JAe)=>{var KAe=ve(\"fs\"),sct=process.version,_3=sct.replace(/^v/,\"\").split(\".\"),VAe=+_3[0]>10||+_3[0]==10&&+_3[1]>=12,oct=VAe?t=>t.mkdir===KAe.mkdir:()=>!1,act=VAe?t=>t.mkdirSync===KAe.mkdirSync:()=>!1;JAe.exports={useNative:oct,useNativeSync:act}});var rfe=_((EUt,tfe)=>{var rC=TAe(),nC=LAe(),{mkdirpNative:XAe,mkdirpNativeSync:ZAe}=WAe(),{mkdirpManual:$Ae,mkdirpManualSync:efe}=U3(),{useNative:lct,useNativeSync:cct}=zAe(),iC=(t,e)=>(t=nC(t),e=rC(e),lct(e)?XAe(t,e):$Ae(t,e)),uct=(t,e)=>(t=nC(t),e=rC(e),cct(e)?ZAe(t,e):efe(t,e));iC.sync=uct;iC.native=(t,e)=>XAe(nC(t),rC(e));iC.manual=(t,e)=>$Ae(nC(t),rC(e));iC.nativeSync=(t,e)=>ZAe(nC(t),rC(e));iC.manualSync=(t,e)=>efe(nC(t),rC(e));tfe.exports=iC});var cfe=_((CUt,lfe)=>{\"use strict\";var $l=ve(\"fs\"),qd=ve(\"path\"),Act=$l.lchown?\"lchown\":\"chown\",fct=$l.lchownSync?\"lchownSync\":\"chownSync\",ife=$l.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),nfe=(t,e,r)=>{try{return $l[fct](t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},pct=(t,e,r)=>{try{return $l.chownSync(t,e,r)}catch(o){if(o.code!==\"ENOENT\")throw o}},hct=ife?(t,e,r,o)=>a=>{!a||a.code!==\"EISDIR\"?o(a):$l.chown(t,e,r,o)}:(t,e,r,o)=>o,H3=ife?(t,e,r)=>{try{return nfe(t,e,r)}catch(o){if(o.code!==\"EISDIR\")throw o;pct(t,e,r)}}:(t,e,r)=>nfe(t,e,r),gct=process.version,sfe=(t,e,r)=>$l.readdir(t,e,r),dct=(t,e)=>$l.readdirSync(t,e);/^v4\\./.test(gct)&&(sfe=(t,e,r)=>$l.readdir(t,r));var Lx=(t,e,r,o)=>{$l[Act](t,e,r,hct(t,e,r,a=>{o(a&&a.code!==\"ENOENT\"?a:null)}))},ofe=(t,e,r,o,a)=>{if(typeof e==\"string\")return $l.lstat(qd.resolve(t,e),(n,u)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);u.name=e,ofe(t,u,r,o,a)});if(e.isDirectory())q3(qd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=qd.resolve(t,e.name);Lx(u,r,o,a)});else{let n=qd.resolve(t,e.name);Lx(n,r,o,a)}},q3=(t,e,r,o)=>{sfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return o();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return o(a)}if(a||!n.length)return Lx(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Lx(t,e,r,o)}};n.forEach(h=>ofe(t,h,e,r,p))})},mct=(t,e,r,o)=>{if(typeof e==\"string\")try{let a=$l.lstatSync(qd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&afe(qd.resolve(t,e.name),r,o),H3(qd.resolve(t,e.name),r,o)},afe=(t,e,r)=>{let o;try{o=dct(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return H3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>mct(t,a,e,r)),H3(t,e,r)};lfe.exports=q3;q3.sync=afe});var pfe=_((wUt,j3)=>{\"use strict\";var ufe=rfe(),ec=ve(\"fs\"),Ox=ve(\"path\"),Afe=cfe(),Wc=qE(),Mx=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},Ux=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},_x=(t,e)=>t.get(Wc(e)),J1=(t,e,r)=>t.set(Wc(e),r),yct=(t,e)=>{ec.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Ux(t,r&&r.code||\"ENOTDIR\")),e(r)})};j3.exports=(t,e,r)=>{t=Wc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u==\"number\"&&typeof A==\"number\"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,E=e.unlink,I=e.cache,v=Wc(e.cwd),x=(L,U)=>{L?r(L):(J1(I,t,!0),U&&p?Afe(U,u,A,J=>x(J)):n?ec.chmod(t,a,r):r())};if(I&&_x(I,t)===!0)return x();if(t===v)return yct(t,x);if(h)return ufe(t,{mode:a}).then(L=>x(null,L),x);let R=Wc(Ox.relative(v,t)).split(\"/\");Hx(v,R,a,I,E,v,null,x)};var Hx=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Wc(Ox.resolve(t+\"/\"+p));if(_x(o,h))return Hx(h,e,r,o,a,n,u,A);ec.mkdir(h,r,ffe(h,e,r,o,a,n,u,A))},ffe=(t,e,r,o,a,n,u,A)=>p=>{p?ec.lstat(t,(h,E)=>{if(h)h.path=h.path&&Wc(h.path),A(h);else if(E.isDirectory())Hx(t,e,r,o,a,n,u,A);else if(a)ec.unlink(t,I=>{if(I)return A(I);ec.mkdir(t,r,ffe(t,e,r,o,a,n,u,A))});else{if(E.isSymbolicLink())return A(new Mx(t,t+\"/\"+e.join(\"/\")));A(p)}}):(u=u||t,Hx(t,e,r,o,a,n,u,A))},Ect=t=>{let e=!1,r=\"ENOTDIR\";try{e=ec.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Ux(t,r)}};j3.exports.sync=(t,e)=>{t=Wc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n==\"number\"&&typeof u==\"number\"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,I=Wc(e.cwd),v=L=>{J1(E,t,!0),L&&A&&Afe.sync(L,n,u),a&&ec.chmodSync(t,o)};if(E&&_x(E,t)===!0)return v();if(t===I)return Ect(I),v();if(p)return v(ufe.sync(t,o));let C=Wc(Ox.relative(I,t)).split(\"/\"),R=null;for(let L=C.shift(),U=I;L&&(U+=\"/\"+L);L=C.shift())if(U=Wc(Ox.resolve(U)),!_x(E,U))try{ec.mkdirSync(U,o),R=R||U,J1(E,U,!0)}catch{let te=ec.lstatSync(U);if(te.isDirectory()){J1(E,U,!0);continue}else if(h){ec.unlinkSync(U),ec.mkdirSync(U,o),R=R||U,J1(E,U,!0);continue}else if(te.isSymbolicLink())return new Mx(U,U+\"/\"+C.join(\"/\"))}return v(R)}});var Y3=_((IUt,hfe)=>{var G3=Object.create(null),{hasOwnProperty:Cct}=Object.prototype;hfe.exports=t=>(Cct.call(G3,t)||(G3[t]=t.normalize(\"NFKD\")),G3[t])});var yfe=_((BUt,mfe)=>{var gfe=ve(\"assert\"),wct=Y3(),Ict=YE(),{join:dfe}=ve(\"path\"),Bct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,vct=Bct===\"win32\";mfe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((I,v)=>(I.length&&(v=dfe(I[I.length-1],v)),I.push(v||\"/\"),I),[]),o=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error(\"function does not have any path reservations\");return{paths:E.paths.map(I=>t.get(I)),dirs:[...E.dirs].map(I=>t.get(I))}},n=h=>{let{paths:E,dirs:I}=a(h);return E.every(v=>v[0]===h)&&I.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:E,dirs:I}=e.get(h),v=new Set;return E.forEach(x=>{let C=t.get(x);gfe.equal(C[0],h),C.length===1?t.delete(x):(C.shift(),typeof C[0]==\"function\"?v.add(C[0]):C[0].forEach(R=>v.add(R)))}),I.forEach(x=>{let C=t.get(x);gfe(C[0]instanceof Set),C[0].size===1&&C.length===1?t.delete(x):C[0].size===1?(C.shift(),v.add(C[0])):C[0].delete(h)}),o.delete(h),v.forEach(x=>u(x)),!0};return{check:n,reserve:(h,E)=>{h=vct?[\"win32 parallelization disabled\"]:h.map(v=>wct(Ict(dfe(v))).toLowerCase());let I=new Set(h.map(v=>r(v)).reduce((v,x)=>v.concat(x)));return e.set(E,{dirs:I,paths:h}),h.forEach(v=>{let x=t.get(v);x?x.push(E):t.set(v,[E])}),I.forEach(v=>{let x=t.get(v);x?x[x.length-1]instanceof Set?x[x.length-1].add(E):x.push(new Set([E])):t.set(v,[new Set([E])])}),u(E)}}}});var wfe=_((vUt,Cfe)=>{var Dct=process.platform,Sct=Dct===\"win32\",Pct=global.__FAKE_TESTING_FS__||ve(\"fs\"),{O_CREAT:bct,O_TRUNC:xct,O_WRONLY:kct,UV_FS_O_FILEMAP:Efe=0}=Pct.constants,Qct=Sct&&!!Efe,Fct=512*1024,Rct=Efe|xct|bct|kct;Cfe.exports=Qct?t=>t<Fct?Rct:\"w\":()=>\"w\"});var e_=_((DUt,Nfe)=>{\"use strict\";var Tct=ve(\"assert\"),Nct=Rx(),vn=ve(\"fs\"),Lct=eC(),Wf=ve(\"path\"),Ffe=pfe(),Ife=e3(),Oct=yfe(),Mct=t3(),fl=qE(),Uct=YE(),_ct=Y3(),Bfe=Symbol(\"onEntry\"),V3=Symbol(\"checkFs\"),vfe=Symbol(\"checkFs2\"),Gx=Symbol(\"pruneCache\"),J3=Symbol(\"isReusable\"),tc=Symbol(\"makeFs\"),z3=Symbol(\"file\"),X3=Symbol(\"directory\"),Yx=Symbol(\"link\"),Dfe=Symbol(\"symlink\"),Sfe=Symbol(\"hardlink\"),Pfe=Symbol(\"unsupported\"),bfe=Symbol(\"checkPath\"),Dh=Symbol(\"mkdir\"),To=Symbol(\"onError\"),qx=Symbol(\"pending\"),xfe=Symbol(\"pend\"),sC=Symbol(\"unpend\"),W3=Symbol(\"ended\"),K3=Symbol(\"maybeClose\"),Z3=Symbol(\"skip\"),z1=Symbol(\"doChown\"),X1=Symbol(\"uid\"),Z1=Symbol(\"gid\"),$1=Symbol(\"checkedCwd\"),Rfe=ve(\"crypto\"),Tfe=wfe(),Hct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,e2=Hct===\"win32\",qct=(t,e)=>{if(!e2)return vn.unlink(t,e);let r=t+\".DELETE.\"+Rfe.randomBytes(16).toString(\"hex\");vn.rename(t,r,o=>{if(o)return e(o);vn.unlink(r,e)})},jct=t=>{if(!e2)return vn.unlinkSync(t);let e=t+\".DELETE.\"+Rfe.randomBytes(16).toString(\"hex\");vn.renameSync(t,e),vn.unlinkSync(e)},kfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Qfe=t=>_ct(Uct(fl(t))).toLowerCase(),Gct=(t,e)=>{e=Qfe(e);for(let r of t.keys()){let o=Qfe(r);(o===e||o.indexOf(e+\"/\")===0)&&t.delete(r)}},Yct=t=>{for(let e of t.keys())t.delete(e)},t2=class extends Nct{constructor(e){if(e||(e={}),e.ondone=r=>{this[W3]=!0,this[K3]()},super(e),this[$1]=!1,this.reservations=Oct(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[qx]=0,this[W3]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid==\"number\"||typeof e.gid==\"number\"){if(typeof e.uid!=\"number\"||typeof e.gid!=\"number\")throw new TypeError(\"cannot set owner without number uid and gid\");if(e.preserveOwner)throw new TypeError(\"cannot preserve owner in archive and also set owner explicitly\");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!=\"number\"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||e2,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=fl(Wf.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask==\"number\"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on(\"entry\",r=>this[Bfe](r))}warn(e,r,o={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(o.recoverable=!1),super.warn(e,r,o)}[K3](){this[W3]&&this[qx]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[bfe](e){if(this.strip){let r=fl(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let o=fl(e.linkpath).split(\"/\");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=fl(e.path),o=r.split(\"/\");if(o.includes(\"..\")||e2&&/^[a-z]:\\.\\.$/i.test(o[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=Mct(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Wf.isAbsolute(e.path)?e.absolute=fl(Wf.resolve(e.path)):e.absolute=fl(Wf.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+\"/\")!==0&&e.absolute!==this.cwd)return this.warn(\"TAR_ENTRY_ERROR\",\"path escaped extraction target\",{entry:e,path:fl(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!==\"Directory\"&&e.type!==\"GNUDumpDir\")return!1;if(this.win32){let{root:r}=Wf.win32.parse(e.absolute);e.absolute=r+Ife.encode(e.absolute.substr(r.length));let{root:o}=Wf.win32.parse(e.path);e.path=o+Ife.encode(e.path.substr(o.length))}return!0}[Bfe](e){if(!this[bfe](e))return e.resume();switch(Tct.equal(typeof e.absolute,\"string\"),e.type){case\"Directory\":case\"GNUDumpDir\":e.mode&&(e.mode=e.mode|448);case\"File\":case\"OldFile\":case\"ContiguousFile\":case\"Link\":case\"SymbolicLink\":return this[V3](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[Pfe](e)}}[To](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[sC](),r.resume())}[Dh](e,r,o){Ffe(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[z1](e){return this.forceChown||this.preserveOwner&&(typeof e.uid==\"number\"&&e.uid!==this.processUid||typeof e.gid==\"number\"&&e.gid!==this.processGid)||typeof this.uid==\"number\"&&this.uid!==this.processUid||typeof this.gid==\"number\"&&this.gid!==this.processGid}[X1](e){return kfe(this.uid,e.uid,this.processUid)}[Z1](e){return kfe(this.gid,e.gid,this.processGid)}[z3](e,r){let o=e.mode&4095||this.fmode,a=new Lct.WriteStream(e.absolute,{flags:Tfe(e.size),mode:o,autoClose:!1});a.on(\"error\",p=>{a.fd&&vn.close(a.fd,()=>{}),a.write=()=>!0,this[To](p,e),r()});let n=1,u=p=>{if(p){a.fd&&vn.close(a.fd,()=>{}),this[To](p,e),r();return}--n===0&&vn.close(a.fd,h=>{h?this[To](h,e):this[sC](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let I=e.atime||new Date,v=e.mtime;vn.futimes(E,I,v,x=>x?vn.utimes(h,I,v,C=>u(C&&x)):u())}if(this[z1](e)){n++;let I=this[X1](e),v=this[Z1](e);vn.fchown(E,I,v,x=>x?vn.chown(h,I,v,C=>u(C&&x)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on(\"error\",p=>{this[To](p,e),r()}),e.pipe(A)),A.pipe(a)}[X3](e,r){let o=e.mode&4095||this.dmode;this[Dh](e.absolute,o,a=>{if(a){this[To](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[sC](),e.resume())};e.mtime&&!this.noMtime&&(n++,vn.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[z1](e)&&(n++,vn.chown(e.absolute,this[X1](e),this[Z1](e),u)),u()})}[Pfe](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Dfe](e,r){this[Yx](e,e.linkpath,\"symlink\",r)}[Sfe](e,r){let o=fl(Wf.resolve(this.cwd,e.linkpath));this[Yx](e,o,\"link\",r)}[xfe](){this[qx]++}[sC](){this[qx]--,this[K3]()}[Z3](e){this[sC](),e.resume()}[J3](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!e2}[V3](e){this[xfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[vfe](e,o))}[Gx](e){e.type===\"SymbolicLink\"?Yct(this.dirCache):e.type!==\"Directory\"&&Gct(this.dirCache,e.absolute)}[vfe](e,r){this[Gx](e);let o=A=>{this[Gx](e),r(A)},a=()=>{this[Dh](this.cwd,this.dmode,A=>{if(A){this[To](A,e),o();return}this[$1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=fl(Wf.dirname(e.absolute));if(A!==this.cwd)return this[Dh](A,this.dmode,p=>{if(p){this[To](p,e),o();return}u()})}u()},u=()=>{vn.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[Z3](e),o();return}if(A||this[J3](e,p))return this[tc](null,e,o);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=I=>this[tc](I,e,o);return h?vn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return vn.rmdir(e.absolute,h=>this[tc](h,e,o))}if(e.absolute===this.cwd)return this[tc](null,e,o);qct(e.absolute,h=>this[tc](h,e,o))})};this[$1]?n():a()}[tc](e,r,o){if(e){this[To](e,r),o();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[z3](r,o);case\"Link\":return this[Sfe](r,o);case\"SymbolicLink\":return this[Dfe](r,o);case\"Directory\":case\"GNUDumpDir\":return this[X3](r,o)}}[Yx](e,r,o,a){vn[o](r,e.absolute,n=>{n?this[To](n,e):(this[sC](),e.resume()),a()})}},jx=t=>{try{return[null,t()]}catch(e){return[e,null]}},$3=class extends t2{[tc](e,r){return super[tc](e,r,()=>{})}[V3](e){if(this[Gx](e),!this[$1]){let n=this[Dh](this.cwd,this.dmode);if(n)return this[To](n,e);this[$1]=!0}if(e.absolute!==this.cwd){let n=fl(Wf.dirname(e.absolute));if(n!==this.cwd){let u=this[Dh](n,this.dmode);if(u)return this[To](u,e)}}let[r,o]=jx(()=>vn.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[Z3](e);if(r||this[J3](e,o))return this[tc](null,e);if(o.isDirectory()){if(e.type===\"Directory\"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?jx(()=>{vn.chmodSync(e.absolute,e.mode)}):[];return this[tc](A,e)}let[n]=jx(()=>vn.rmdirSync(e.absolute));this[tc](n,e)}let[a]=e.absolute===this.cwd?[]:jx(()=>jct(e.absolute));this[tc](a,e)}[z3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{vn.closeSync(n)}catch(h){p=h}(A||p)&&this[To](A||p,e),r()},n;try{n=vn.openSync(e.absolute,Tfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on(\"error\",A=>this[To](A,e)),e.pipe(u)),u.on(\"data\",A=>{try{vn.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on(\"end\",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{vn.futimesSync(n,h,E)}catch(I){try{vn.utimesSync(e.absolute,h,E)}catch{p=I}}}if(this[z1](e)){let h=this[X1](e),E=this[Z1](e);try{vn.fchownSync(n,h,E)}catch(I){try{vn.chownSync(e.absolute,h,E)}catch{p=p||I}}}a(p)})}[X3](e,r){let o=e.mode&4095||this.dmode,a=this[Dh](e.absolute,o);if(a){this[To](a,e),r();return}if(e.mtime&&!this.noMtime)try{vn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[z1](e))try{vn.chownSync(e.absolute,this[X1](e),this[Z1](e))}catch{}r(),e.resume()}[Dh](e,r){try{return Ffe.sync(fl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[Yx](e,r,o,a){try{vn[o+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[To](n,e)}}};t2.Sync=$3;Nfe.exports=t2});var _fe=_((SUt,Ufe)=>{\"use strict\";var Wct=OE(),Wx=e_(),Ofe=ve(\"fs\"),Mfe=eC(),Lfe=ve(\"path\"),t_=YE();Ufe.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Wct(t);if(o.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!o.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Kct(o,e),o.file&&o.sync?Vct(o):o.file?Jct(o,r):o.sync?zct(o):Xct(o)};var Kct=(t,e)=>{let r=new Map(e.map(n=>[t_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Lfe.parse(n).root||\".\",p=n===A?!1:r.has(n)?r.get(n):a(Lfe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(t_(n)):n=>a(t_(n))},Vct=t=>{let e=new Wx.Sync(t),r=t.file,o=Ofe.statSync(r),a=t.maxReadSize||16*1024*1024;new Mfe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},Jct=(t,e)=>{let r=new Wx(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on(\"error\",A),r.on(\"close\",u),Ofe.stat(a,(p,h)=>{if(p)A(p);else{let E=new Mfe.ReadStream(a,{readSize:o,size:h.size});E.on(\"error\",A),E.pipe(r)}})});return e?n.then(e,e):n},zct=t=>new Wx.Sync(t),Xct=t=>new Wx(t)});var Hfe=_(us=>{\"use strict\";us.c=us.create=IAe();us.r=us.replace=L3();us.t=us.list=Tx();us.u=us.update=QAe();us.x=us.extract=_fe();us.Pack=Ex();us.Unpack=e_();us.Parse=Rx();us.ReadEntry=rx();us.WriteEntry=A3();us.Header=GE();us.Pax=ix();us.types=KU()});var r_,qfe,Sh,r2,n2,jfe=Et(()=>{r_=$e(id()),qfe=ve(\"worker_threads\"),Sh=Symbol(\"kTaskInfo\"),r2=class{constructor(e,r){this.fn=e;this.limit=(0,r_.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},n2=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,r_.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let o=this.workers.pop();o?o.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new qfe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[Sh])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[Sh].resolve(r),e[Sh]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[Sh]?.reject(r),e[Sh]=null}),e.on(\"exit\",r=>{r!==0&&e[Sh]?.reject(new Error(`Worker exited with code ${r}`)),e[Sh]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[Sh]={resolve:o,reject:a},r.postMessage(e)})})}}});var Yfe=_((kUt,Gfe)=>{var n_;Gfe.exports.getContent=()=>(typeof n_>\"u\"&&(n_=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"W59AdoE5B0+1lW4yACxzf59sEq1coBzbRXaO1qCovsdV6k+oTNb8UwDVeZtSmwrROTVHVVVTk8qQmYCmFArApvr9/82RFXNUQ6XSwkV9cCfzSZWqU8eqG2EOlQ1lOQZWbHiPlC1abHHQuTEQEPUx98MQsaye6sqb8BAdM/XEROH6EjdeCSMTKRF6Ky9QE0EnP+EoJ1W8IDiGNQjCud4QjVb6s2PneihHqUArxp4y9lu+8JV7Jd95dsF1wY2/Lxh+cn9ht/77pxkNDcL6UGn39+F5kHErJGWPfXPxIkEkw7DsdtzjYyCSY+c3UDWkSokW07JFzh1bP+V1fOLXainl63s4qOijNf4DzTiErNLrQmZ3Dztrfvy5/PrV17THg5A4OsM6qvQOB3pjkohjdnjnmED91NVbtTfyxA9yViyPKX+fpONfVhgl3kMTcWhDhO3fzLR7LicLycwgO5VlPRXZcPy9M51ll9nq8le9UYt6wJd7PPDLV7Wv3wCjwTyGlLRLKemIZuWhJrieUkVTaTAMu4u4qvWZlpa9vrZgEJroriLZYYHGQrYvzPNwzw1RHuhCGl2mdWrYuCQqtsHAbe1S/Vy9VWmZrzf6ZAANTWM4S3u9FwlEB6PkIeMganeOTBaL9OhcOcT4vk5sWgNpEvw4wg1sP4Ury8j5OssUC/7r+/bfRtMP8Yo6+7PoqlMzX3Li2jMYUyg2iIRUj+2525ep9frulVJ/W1rVEAljLhjpQHKSXbXMqjbP583vTe7hQQVHosY8S5RCSvbYgEGkvLeovH71S/PrF1MU6V61yHEPfppiZcvr2DrqyElUWhZGMpEMFDM6HIMfNtcfD79YWjg+CCpZUYcShJuNUGKpozuw3RwNYQJ+gMFyU2se7luBYUsWjFgE/a5h3/EKWn6Wo8yMRhKZla5AvalupPqw5Kso+mYz/3jNyqlHmwnPpHgLRcI3wH+8BaU0Pjw8n+/WcjG/Kh2sy/PS1yZC1Kt2pOwgwBuMUrXjXEBFW1W2wGWO/QSTszpLziLMgh8lzp6Oh93dcQjJZ46vqqtbJasFJdEG+eaIoaQIMDNyIoiFxebz4cMUrbXP2c0mF+DQXAhIf2jrXoiIatsj+vGNreOhg5TW4vHNZ8BBoQakopthDEQbJu5+iYevzNnxMMtGKrm+/pKs32CgASeQG5ikBS6chUxUM37UUOuPh93/g21lIx/fq66GQoDdKCiRb7I8KYgyg2WUtDTwiGr64/CbXNr4AEJ3cGfSR1cQYfopX6b9//fNrG9GB4DMRFerkiN09QhlKcNBIsH6WlhjjmEijribeO/Fi8pAAKgCkJlVmRTdSbJEktXs1uec+wL53gskKxBI9gAgfy2S1ZJf1Rfaq6ruHqWs8ayZb41Unsnu/l9b3/DGMOf/7y21mvH3/R/xIxIJggkQJSVFlYoqK1b16aOqNtuJNFSRMmUsy4zziw3z3Xv/K/z33g8x/o/IYsSPyGFGRKKVBpjKjAS6kZng/5EJKDIBshOkqiYJSX1AluoMZGoOyh6WGUckoJaBdI5ISm2o9qoxxlFT7e3OrcaZs2/jV7WcM6terGez7/VidrNczmo5i+X41d6saMvMLPQQSGPRnmfgoirzv5VrRUjnPV5DK11l9283RjpjLUEHIG8NGjj3rb3aoZ39PwwqyuzsXQhVSbncvGvZ9lUByUpgEiqtsrG22kWejJGF5/t7U/875/6yu7TphneW04x7odKp0WoiENKIBjScCWuIMIK5n+r7zhwgC5Bc1QwSRdSf9GHMsmcA3aouluioI19mZncdUVToIaEkoSWEkiIQCEIIrYYeijTpM16fQLdqggRcWZbvFkJPCCWtQGhVSEQ7CAhHtZUQFqWIuHrzR+9m3yFsJRs57wneKDE8SASaQKBF6qFmlBPT9/UGcFvPP3y640Dk990pSqbAKKkStlFjo0ZJlOQ2BOvuftTi3vkD3uQecz348cGHwkGzPKjgBHfT/57fO7t+Wv8rnCLIKQIGGR5BRgkyxcCbIsUUIw4YdIqAKVKcYosFr/59df7/f6/3SA/P57/BBgUFBdGoIKAgIMAaBVijAI8UYGCNDAwWMAjR5HZlEITNHzC/af895OuZdD//CSa4wQ06uIGCDsTSLAILI4wCYQSuQHgrUCAbBbVQwbGpoILeD/TWxVdbH/Dg4MPCwsDCQCAwEAg8CAQGDq98oJfJtDM5nqr5+QQ8MBn+3fT5l7awDuvzycUKQSxBvOABWiSYBUJbpNR0u/d3240cmaQ7k4+8ZxpU26yxZxGpJZQ87vjAeCF4R7BpHK3etPDERnL1zf6GpUgeGDcsOlO6zvnLRtNb42rSXsVd8rawbWg5SkjPu/5/Lr840yPn1xokzxxuX41SPS3xDQ/0t9utuH+bm3W3My2dctB6d9/2vbqpIOQeUT8G0PW0OTtWtD2VQzI9Tnnb/N7H511q172oEJmeCTPFFJ705ZcBIx4TvkYs7OJ66NOIc/8ULaOnVEGST0WDojvLhH1A/VSB3eZk/w4cCPOa5ItkeKlF5geRufms6n9mH14/vL4ChiSs7CYJ9hEiAzL9Bb3Uzjv805Z1PrshWL+oykNdT4deLPO/RxPjDkAzMfHg/2PCXJnkuSviwa8SZA5iyaBqkmowpfLWgff0miloY4OWiAYsn1D9b+HbM8TGx/XFTIZTLHTPkNW+iM1ET4qh2+1ORrwttM/Q6u+76ExmQfwPYO6cP64jZJglyI9OrAFZq4H/ZqU1KEuu/9oix2Cp5fTfDjP54ErBPJfa5m/FloQ1z8jeXTCeqWquTk/shEq8gvbvdzs5+BEF0if5tSLdrNGLCJngV/qosEy7vMPmGJTJ/dIL0M93SGsbfW8RhN0XUL6Gw/BHwHLCwk48h+1d1tPndMQiWJv8NBZMWc/uw/5wAqkQPS4rk5zlj0AayQDFcygmmvPajPNgsT4GeeNPYyRWUGHY9PbrUkbqKdn0Uza9toRAI/cZCPOKYN5SPIfAkmojg5x95Iw/DW3ZAHYfSoJSfCgckLV6ipyPNdaOvJFRvQwV5naSz6hyJG+3zn86NnvXA2V4wXRG4lgsK/Fr1BOr/31G5rF7b/de8KLKKReWvJolMrrDdMDRRZMufPHnr4R4OHkZSqG06nY66Qke5j1+P2F/qW5pGCfjr2rPCmTsbCCuVyh4aXI+/Cggi/a9U99k2CTycaazVxI1fnPvfmZSebdbRyWdd7+b7MzsLs96h0TjDhJK3ArNGE8xQtoWmE9dH7UY7bE+3sj9MJFuxY0mhq5nYZBxcBsTN1Uo05/HKmV9WHqPyXbuEKHO+zPi+OhtsP5JrHI8GGeUu31Oylwin4GUHjWmubPNI2NJj+pY5/QWFFTEfi/Za0GCCQUqa9GCFQJbGG4ZfYHLs9jCbAuzLc42nX3wCzaYooB7e03eZHJ5vr0DE8podOo34igDQP4AlgVloNmRztVWS8aTITg7Ti0pbySCs5P+SCtqdn1WpcdxXIaMrKdAhTI2vriGLN6fBTW1nnXqcdkn+2TnMxKb0rnPjwni4JmpGo1a23awqn+ZK9c0zPuyckYk+fyorrB6QEcRr2z4kmTlENAWSlSJWpBGm4Wm66xDyDRUTCDcu7TicG8t1mNFt9Jn5XOQIvbMYzU4IIANMabcqLl3uv7hNeP9k6GeUW49rMdbRl+ZqE0W1STw0fLaRB/fRMbZgc+xk4ALN13YmvM4V6eVAhDVIYusMprX1BogqXKQDd6JNtqR1dzIhuIz0kF/RK4fo1wQEAEf41kTEAGRfBLEwDH2Fyst9es98v6xR0Mw2MZ+tPJSeIVk0D7BYhSIASguNcMuNntlpn68UxiM5Ryj0p+hp03NWw5ySGEzb0fm2pJ7joHIarn1UcsJNzUovRcosbV4HEX1bilh/UwoCDYOG4eN8UYclWIBi3Oo+UQ7XXZK/R4n2D/c8GHilt7+MWDSpDrctulhzqmaMWrcyjUXpMakryFz9lVHqtIfXTlZPYzitUBFlbam0qOKiIrnL5EOufrezyoFKTXBFtrsmZdL1yVciwq7U4rlOBSwVKCgNuER9A8Y8yvPtDHr06N9Ss72ee1KZ4H6jSfrPk2Q5ewNCgsJ0Fb2E7RsxUl+tX1m3gonQTJEgITC8bTosmJPJv2X9tIALe+Wgcic/5bsAys5e701PCtY+s+IWOwWGWgTvezEkiVlIo5ST+vQVOihgK/V9SPxlqSnEA0N3Ga617+qm/Wo44sG+3Y9Kj/C+f+zCLynbb/uZ/++3irT8Y3Th1l04NtKLrnWM8mxaxdp+yXxZRZyMyNHuxmhXxi/xRdUUFG3AUefxSX3UZbi9sWETQiecYeSJq2sXQ93PGHSmEZ1JkVf4/24GAN+sVFTTv15H315+6EkLfGoTmDbQxAA+aMXj8qu2SBTe/JlkvMZTVlb8H96uVfAdpcgsG5VPs8BhTYCyLn20e6jz0nq0avsKryYNUWiz1BRANSffEbB0P309RgZV0HcF7mhcWKS82pRGxVGDMzZIcFw/LW3ZTVJj69CfACVElUiq/j1qwNHqFeOdDGG4f1KDEbECB5oZNO4qLvOxb043t+Witj9HYYkp2rVjiKyP45oyI4B1t17zds7TERQvQDRpOKB01zcfuHvtTxa3vX1adTzQTxStL6ifit7yvlATXKnetXYl5m7j1AaaT3WpaLdqR/2scgvfDYaqdcO3+Mm+eInwIZTUbbNuUN7eKEsOuG82++2Cfqj/pxl3FhAYAL80MehOVJlBV3xb9fQHzAW8jYXs5jwMAU/X23IVKT4Stzzx14BHnVGSb9+0wheHmlrhtRQz2K383DrN/HVedy+QEcj/6TICw6PSjvCNfPFc3Z9h4oSzx9LpZYeI9R5LsHwKW6TehAo0zn+vMr3O+Ihg9FTpdQLMcNvy0njMdxYloudysusBa5iKJBMvWV+ONuNF0Eja4Y+iY4NIaWaRt1w1uLFq4/YfzdLWrWEnjrKPMjksEmyt3uBLK6bRrogu2gECh6qguKeSWseJqUapS4YHoTiXkrGX9MvnXYuPY505BRJvTWpsb5bDDbMXMyUz/rM2a1pI4yeOODfLzjJyBIzOmLY5fM3vdTmy1fb9tJlzXerqK3tCccA7u34JzA3Vr8iph8RdztaZV5KVX3KT1PE9fS6R3QcMqXihHJvjzimL404D1BYc63qzYEtM6EIxel0sV8WILdqMAWAEdzNNrLHVY4M5+TbXRNeFBluT6iSWgnH+gGF3a2CSwSUIWPRt1FbFYaCzxlHreegBugCSxasmEUfRVhiIrgmCaOR2wtfHaF1omgB07clHkSSwhO2zdcFR/Dn9Zi2uIFGyrHN44UJumI8Pq/9Qaeef7mUgI5ugdKQ98ThL1ZbMdMue0bEpzk9/1ybhKAf8uzxO1xYCNNyFEUoj4FOymz1TwynidHRHwxRPMN1n8bEw0BheZZDe3o1jaA5QF9n76Np8yf7do7Ait1SznNeZOlgNGbo72d8xjWWXzL123FyjHnyZGktd/6rrC1/0fkKnLVfpPMX26vjAblX+vOzPtf97olppbUzcrkrfWv+lE4ccWDSUs5yEi2rXnvwrpJQSXxYyrs/6MHHeNYEcHb5nZucas7eiyOHoRzNG1Kmd/tRoeAzMw5R6v8TzCZGThUtv9me7/bgyZfP+uzPr15NDku/JYeWRT/k5EsseffP7tIxqNaxkL16zLx9T8XeSvyop0ilGb5SrjjyAGWb2IXsnYenlSBnGfcrEQJUbpSuFhexoBKFj9KeefYlkTB13MvDRcDaU7bOrfqt71sezJ3Xs8m/anLWaFnHLKze1Y7sCEgeb/Pio/CLPl1qC9y0p3H66/SdMT2Nm1vEXvHz7cy+EnMRBhYu1b4rbfi1p5QjkspsBeuq7JTPHpMgX94TmR50Z23utq2q40nF4vU4qGyizRLdjQ4WxZj8vHKc0o0rNtp4vSOBpxYUuCMUQlo3Km1YL92xNYiKlyl+l4ZRrsgbocbt0K7OH5+rHHhLLXin0E9pxn+Aju3VPHrsxvdLIpPVpbE26jygoTD9cCNml5Ha5LG2RniubjdNoqPEsES+aPQiDOqeXckWVv3iNCjf/282x8JDtOZMhAQqD2iwjdg6HVhTrvxfE1zqFVMM8c6uS9A/L0SQVqvmODsJ0/jKUCNqhMQ8psFo9cAsawjMfrDIgGqVAg1tpwnXd/PU2NPHcwRfm5r+qAPrQVFKvf4G9PNOInPCcSTpYOD4jS4uH9RiIIutIuWVJmRFjkmRPm65VUBcLJ0H7xvoa/KeiDAqZdORZRaHF6TdqEzAaeqXqCy+H3mwUehYRSZY4d/UtIq7azVwqfhPu61HPqUPZu5+DnC2X8UkZ4UOEnSd93h5tX8K90PpnIl0Va/dnKiIQRwBuXNzCib5p8TF70CWG2lrLNO5HpnWVtHce5YVY3ut68/CfEZUr+nSwUw8RmvsvkZxQYrNx5Jss2YNK4lZZQCVlulrKbOGPuMQk0O0ImgruewVGlD81R3BZd18XSIy6Borcl61rbGFMWckhxwjFzMX/OXjPOtr8FXpKK3pIqJM9IBYcPA5dWJv7i31QPhVtwyS8swx+pdCwT6hxNpOwyEvL9Q79J5tCckuFZEdWUgV3IBGLb309jloX/tvtc/VNeVd1XngkG1Zg6So1AlluyMpLr7pgDOvgAqS3rh2mSsZIvo+Dwxo0k/hWWPZxODeFuZF/EvrudLabM2OBg8C6I5jJNstTHgXHhZPrH3zEZFfE7k5AugJQy4jexs4J6BKGFkVOqfnbV6hYQ7JzWVusvTI0xBj+cXmO3DdFYkcv3yHpagsMwuR9rBvd9DLpt79Ov57srZoUGWhc6Ps0WhvITY7NtyLgy52JzPaTjvYsycNTc36r5qHbDW+ed9+XExiYnkqUEnZ7oUplPqC4l6ny0xL3YtKp5T01smw7STzqJzUMbyQ9C0ar0R2FKkypKbozbrMpv/ZSDo6ADF5aKWq9jLypedWYh4w06AGW9agsnpdky6pYjiasEEZk1RAVM6lJ3Ea047SI3jnQYhqyyE5VWKdJmKnS5Xd0/Zyp1RNdmJ7ht9HSV9jKuQzQRCB6nAvYt3AjIWfgfRkkeopw2LJH06C2QXFhVOzpGofvcJUshq7+SiR4w5s38AzpcYhtjpvNWpG74CcdYhRAs9lixCvQUrcA3IJj5ytWlvWs61lGpFavTRxX1GKQsuy4xVnzmEczfd109GDbGu7zy/4MuOrAFXvghaMuah0VIkzp8t2nklR6+qOX9ezylploNWrSKjU8BKzpFc0cDYVeLQgmy0TvAkT6uLdP25+JpbzDBUBjOWjtL6rqAHhfvTjlEKGNPXooErU+3X+u/YEpMMCL1C0Nb1eNKrSUYZXjO3HzhwuxZCX29ST45T7PhyAYl11OlS3YYEKQ/dyVXXlgUu88T82s5T3xjpKc7v6yAfCllpIl4rnoFhaduZHyrOhOPHeXbouHOtlq4JXxCPPlCLO04WYx1djoRtFLSAlDqnifZibFw0JY76OjekuWzN4jQOqOefTiLk0Vykq4g8UTly7/1C5sacch2VXuduh0rmAWufl3a7dZlB1txBKP4Zcmd4ddlWkcaxR+FyNbkX9V4FbkSUBk6hg8Iqq3wYQj7N4G4euCc+1WBCDUkyd8O2tFUR1D6htlR4D4+aBVGcIAAYTw/mDvlAuR8N1Ari+7Y4i66ur8A/ihyplw0luN8RAprl7HyADZFu1735kbM8ttd+3Rl+fhI4N45i27cKHtcgDmGg+BeK+DFQRsvzC5uney0WDVX2z2Cm8fHldqSuyC9iXzVfec2qUTbbIfb3l8w5C56LkTAhtTh7GkDtyK9I0BR5rzTl+0iQAiAc2tUnb1I6kDeRdtqsbpxYswRT7Nc+tYQR99phvDQ0IXHdrQ0S1NAp0hDYbbHobwm0ewhrrwxY3Re/WfjxxFdeNpfR6VymXYMSpFdNHtLMWq+5K16eqVV8zp7jGdu8s23UIhuPWRn/pL6PL4f8NBJN9PJsPXJbmoklC/P0InMyhYlpYd2/ppW70Aq4X2B1m3la9spAH1g1OznFpTi74BG50PhtFwq74sgStnQtem/bIGE6PSDkc3tdFJuVaT9GEo+QdKSVlxHNCR+sTkV2hO+lbW6C8eVv8q0rfPf/fzDR3tp+erT0mWZc3MH3F9OIArSnhG3/rg+J1IgDkwQt2MFkLfXGMvgu21JML90wxL7/muF9F4imvP1lGlhHCvGh6KMskDNE7ZDwILBrC0lYe7ciYeun8asqcUQVjZFXFRTJXa/SfEMOLQSLp80yUxcZjnndfZLmPVdKY4WyXPaKAFQPySduUAP/J2w/EtPtj98vsCT/tmJa2FpTv6aE5v9QtWVPOjxSbJV/cY3kX8gfwkXLlY6EFtaLRrdUz1+ZPMOg94QTG7AGe5Rc+nLOo50OX6zcaq2I8H3PA5j2A8ASTBgW/fmYddbGmTpeqruv+r/XglJe5SZ0QzVyaWLD61zvg0CDBBL4HjKxL9PREbv0bSZyPE1YUgq3cCJ+idIBHLphspwbuf95Lv4PB8+oXEuPaqt1bcDZfk5YSYXzlijMG02xryCZkGhSMM994k/uViDVZqKw1HQjqETjUbAMKekO23Fg8wF1r7wuSfFnHQF+Lwz+/1QknV3J15GGA3iwPeleSmUnLzCzD7936Vo/v729anvXt+eqrP26OZ4oWWNJaRpIkRWOjfIAKR++lSk9nzkVfzu7n/xRHnjrkiQnGxDhvNFHc88Vy90Zrm/fDXGwk1LDd5QJzOQxpaVQW83YN+KElXWLWiI5cReWsKYXHln3FB/WFV8stF1x3cvL5Qb+9tzsS9Dr8IF0bhvHQWITbZvzs8TusFOCwSddIVnW4OluXjCzTC5rqZ9VkzZM8kv2LQrpkoYbExJe/vnrf2Hl4/qRuM3x5VifV025PILmYkBVSTavg7iKxpC11X4lLUDBf2NnrDhgFrGuRRUm9gtuwDEnQaOC4s1kMx7cYx+Bu5qaXhpSaa1uDfBW6diCQwVNuQPePcHP3Wsy7N6dlXPS1+VEP+73eXn08S+Maf2KUq9etK1r/pvRfrHjUmSxYnl2Wt5Fz0HtQER4hv9ff1I+Hqxq8XdPLYJZN0n1/mJoDiYBmDzzjmjHK2/Y143W3Fu9TRU3HHzN1ZdImhWXcuWNEtqtMRVpJblCDhmbxRHBkA8qfnA8pm0LPSd/yg7bYM5i8gribm5fYpU+sg/3p6c4yyq4DtRzWtBmfcV96A0N+cKOpIkSamIofMJZLUlgGWttaKMq097X5gUgkwMla07ydJuBkRNQ+rbAVmxqOCsJ5YQv0+W0SPuKSP1b5wdcENfVZc+44Q/Rf6W6sSL+LCkQ2WP2pbJCoVucjzkEXYodCuI8JYwResh9NzuPgqiR5aLgivX6ZH3zNRDRHraQxvAWcE2oedkU3yedJNWxDCGVf/tMZev76pvvcSX6oowV9MdZeKnqcHxSxC/gZ1IvwTTwFOK4ShIwd5Jag2PDrD5+Lllof8hQPVsOsVvfBqoeXn1RAKVxKZ9picDQ6ZpaUt0rhcBNvXSI0NC1TDGotyRMxjfpUiboMqxBv1HVl7E/R+c7yGsL0tuMUii/zuhq83X8igEQhuuaJhuLq6yVvF4JuYKw8x0edrZNZTw97D5R3sLhqv3iCR8EJHJvp0vGGYohFOW0p3TxW9JuIx1fSIeW4RcZoDcrupaj/oOe2HaL2oNEI+TVypYntuWY0Cuy9NqwNEsfgbYq5/DDM8vZ+N0oZaoqapI16XJXbIkVeX75GOWOgV6iDAzf7Gp10aHVYCzJuu6z6NyTFrHyUU9+bPVZ189JWNiRo1Sdas6B1CeKz3Dl9B6kRhFld4vX3eRrDJqZGKZoxrAVLjqi7kNbd38P6Mh4jPdci7HWRaITWGTY1OUrRnHFjuApNNL7XyIf8k/yJ1HixJ3159gOk2d/JGqHuJWAX4PF62i5S3+ZlXd0rE/E6awcrymhVIscuTVCILwlQt014djgxoo95Alvm8zG4NyZcmXylWDIk3XZlfknjMG56+aF/L1YIPjnmvaGW5wrESakUJpl720hoF6SbCySfeUnZsyMdTsq9e03K3r0C5ooDH8dP2zCRniRMjMBGHp02Sps+1mqjglZ4ojUK4smoWRvaaiAlZKuMH8AXBr4IOmucUbWkAmvqDzW73y7gCwMPJilNzLA921HFqJ9irjyKL0LLW1nZiAvkE/T979STeZMAt6i4uMhOtODdirJh9cF5+m4sby4frGG2Ia5B1mewqHGyt2sJLPtK4xMJ23QfVT4526MbrhrKMxMezx9xteRf3ziPHI2Y7kjXY7KffQU83kQ7CVufuUuOVvl5mQd0tyS/NctQyJfMQXZLllt4gHa00EZCn70c+uvsLSlWlrytV1bjpjNPSHAunYEV/YD5/7WYTlWeueMXg56U0Gpg/KzgjLfzMrFs9wFJrAoy7g1D54l7t3rTUTIQkY7RR9YPjQ2FIGoDl21AnPpDQ5BMWAmCH6u83rsCOWD5+nqgRv83+TWxpnPy+7EVkUNm8anL7eokP/MM/YERGr3GSfbG0H9pCYYje+DUmGd+XDijgiffZ1Ouwgp7Ml9HSeM74bLMErOqygZ0VhLq2TJ7dX9DGo7vspySmWne/I9Krtpo4g3Z8QjdgAu9aqrC6VCZBWuq3pfsEaupF1V6LLhAw2r+jtEeBuoPL650ZfQ79xKO7l+W+t682dxxFvCuhDbcW6bgRtkHXi7D4PYITpvbz/Z5Nsr+xdlORSe7cQpltBg1JFFnkvBILeLlRtT3OdemPpm7J9bkj3awCHEST+X/myhfoeAM0QwkEftzDutamCMbUMb6EBmgnjCpY8y3xBG+UptsWAFQA8naA3XfH+N9YoRp+K3CPkY8LhFgjyehyWO1wrz13Hik1W6rJc1Jbcd+t+lXEy3GcgmVg9Se+cXyQiZi08v0qynYp05928QV49LjVDXD/5AevzHoZg5jiCjDmFD68Zm/Zjsb601DV9ofV6G1mx0ErIP7Cv+SrJkkSb+NKt832CknQaxH5KojT7xd+BPk2eIoLFsnUyRob5U24gZ4G3DPZKEqRLhYv7BTGeQwdP2GzwjZPKzZj4AcHrBkAzRer3QVLPNtyDXnsAQ8nPJ72YTTkdrXu8F+pVra01lPJd5ayZ2mKLXVO811pZ6EoF7vxtyk04mNyBrr7cV4QO/MljrXFAlsfYsNAjpgoutHGwusMVBOPY3jSSqrcq8z3/I/kzaUs7xzuuLgSxVydJ09JX3DViXfssrjpta+xbU9X0IY2e3njGAz7LmihM78wK0QjWs/3hoe04qu/RKERCvAdOqBImbbQ1tLNrnYuj4kExgwoeTDQEfIpNdfQ8Revh/egeW20EdrFG9opsArgiaULlEwmI9OmN0jP2BkeYZV3Tw0G7YvFe1E2TB3vZgHY9qmVo/UxTbPaQy/157SmXmk1ihnXQBrdmLw3pn1mbBzkGYfeCpuX2AXemvTODlgrv+1btlObz2dYJfTRbKEosPFlRpaL3E3uP+vkjNzKVPbieuFMOAaFQF112v4mUE7Gk+G/V/WB6QgG6o6W4Bxy/B2/KpYZmCbSOhycnsJNw/HmFqmLHI+c5/U1NpbywepSdXeQondm1LIq6voHoXQhL7Jzcn2YL3dxg4yG0aOmpKwh8DKflJw7sieJJ1vF6E2TLGUpEpiAsXybgpCkhp7jbqHELoR3pK4n7iDKovtv1eCdktP8JTTxMRV0TmmM53HsBF36TmvWZsMsF0BuF5BiwRt6IlWFbRYEE+kzsSsKhcT68QoCJgS8zC05JbeH4wQkrimbA9IrXFgOQk1OQE4uxsgJsG+0jyD1nUxfT+6QxALeMXot2PMcttzcRl7Wi3YSCrDrL8enN8KPpk+u3PqRm36kKTSXvivtI/7qVSh0rc18O6HclF+/mqrCy5PFxr5z0qB8ZbrcNEYcpmCZXlOBG2dp0P6s8p314mjvQ37D2FDx7CbhROS+H20/W4EcIC7EttsbKMbFALRGGLpVJvcYMpEzztaoErN21RZQsS3W88KOhPYrt3ycB/bX7Eh3gb1EdSzdVtJiTjr5Wd3REN/kN9Or6q+n46i8P9KfoUl8M1jbHUk8M1ca8HOp/Nuz6gkdkllTkrBemWnE8t8rmC6H7oVAxlw9mb1GNfv6H71o9hFxfHZsBdFV9sit8qVLMb0l78WBHTNo3vzSEdpVO8xOjlmJ9+cBT1Z/cxS8eBsdswEArGwYNOWwiNkawf+N0OmKHl6NfH9rbmoDGck5vIpxKfIgPxdoNGJ+cRp1ctp6A9n/C7pTTVtuBHkFWxz3bZ8BP01zusZDT37KzNGdiFz/CstKvY9Bh/5FkfA9PTZ4LKaft6JvgilvE5uuz2vjifGtJFlBKjiNYl0NcwuxQT0nsUB3XgrnYP3zJRdA6nFv3egCu+HPJm+bY5jw31JKOokp+eQrD9KMr9O2tP9kp0l1IZPGLCUBErsDizvBhaSYE8XTKZZdb+gYUmdoYwUBhr8DAuazPN3tNL6BS0jaINPtA5BiwXZ0xmT7SS1xo8qspyEmpwAnN0NLKbDC1UvNnmf2kXKMbx/fry8SbtADOB/JGTOfoSmNrQLMUapSXimQ8a3tYS8HWLN3YQm4X5kZLJFTM1Bu0BWsvp0yI72MXTYDoIo2OgjIft3HdbZkYWkZIeMDBYa/Kw+HVLaZ6tGFTba10YdLgdm/iSX+SMg+8E2bfdJvXFaz4bgSgn9oOymJefynDKXbBuo7hZYLKn2PM7IAGjwAwQNwMPcMs9Ww1AyC9bHgk+ySMtjoSqTBetnZevYOWYDDDuygzBui7isaz9kV8T+dkoIXFeCZ/xOKHqpD1Ls6JwKgQE8w1dB37wTZJ9xCONQzCbF7JJaZN9IS4GpDpQm+myyNMw6RQtF5d8YeWx1G4+6LptY3uV7z5tQqbW1qXzV92dLqkVvOjSqgDnwEC/xJFOVrJFZGBw5H5+nPzi+JY96HzKO0e096Npd5B1jRwl8be+/i6EYNVlk7VlgDgLyPstpgulB2t/PP84uDhbLmXoLpP6ELCh5BpBOhk/qFc3kVjawyKaHJS8GjpIk9QG6WULTTD+3OL0tOCIYkEgrAMu3TNolJrRqVEGtK7+LES7h4ZqPwMPCzl4i5361NOo2Z6GygSZytzkK5dq75gOEBhYHg0uVCbSteLaroZ+OsJcz17wzyNIV9J5IcufnUIUpk4lfGE6t/+IG23PMIzdyTVJVQ7Xdcd0/1tKrMXo8Xr4J1IpJTOC7k7benVh9NPSjjqOa3Ptqnm5Aex9XjOX7cPbS3GtimmKbsvX8I7aGkEXDgb8HoTi7vTXy1+dH+6FM/ksAK5fXhLWcr18WefN5HzQfgBwbYByplvv5qGdM1I70AjE/ygbl3KMzyGYZ0WYMlnZlpppcL2ffTDH8sjHkCbG4gZqMSPGk/bphoGVSNB8kmydQ3DX63CE4A0sXoHcbAgcb5XxU248Gs7cc9HHWoD01XrITCMHSYCgzFSLxfkN6cr612uCgcyiKCMR73BvqcbKB2h8FXDigPcC9YaD+rYC/+WBDyMzgMRccs4ZDZwVefBAtpzn+z/5LIVeriE5lVbQ/l9v5GtB3F1K6ed7gRv+4SIWMEW2uSy4qOtDfFlS/cF6/WDeA7kuxnrKm6MM/7Y1VeqzYTr4bIjtaSSDe9WDo5ml5SXfybMOkQWAmXQX63ezu48MipDIg7mvjv2bF3KuRV6OjDj6fPHRjV1qVXLpXxJ7LrX8dXHV9dVAs5/6PpFSvrA8NR70Xxkfmz7fBmNcCXugQvRp3GLSLHxPcdaoGZvxuOQ8HVQcPAtxxFi3Q5LhogZ/qDeYrOniwtaGtT2C/9CEqdh9GEnEqbhr2c3h6iEx+E0cfwTUVq7CryNx5Fc5aYfdz9qPj1N7CSya7dXoD6I7ioUbYTCZUpenp1cQEll049j7odeqJ1K1T9OmC3q9yhI7QwDZu/ulZrHj1tdMzFNVx40+kI3n12KfOta/rsvv9SUplRee/wK1YmgeAQc3OM1PYHbCOc+jsO2e4+I4D4z/hhfa5d26EG1jUgxOA99bstP6Vlb0CpChJurSOZ/RTv8SQOluVhErRHgQuthqKLaz3j7ELQBz2kepCH5Jk1YdNwdW/YYyudyV/MbDrw6U1LWzTFLVHv3ygfRzafIevOJQtmSHcfoa8hOigJfJEy1zfvGHFef9tNq9n0/77/HGp22zBew27poo8HbQGFQRJEwERdJRufYlv5LO5hfJ7SduokcjHLBf3Ht9PKMLIHq4YsteiUrUJJ+UGGtUe5JIAqGu7FkazFHFf6fTSxqmVKb8U07F6jgqrMDZnJHUNf2nfvD15O17SReuaZD+uR7Yd+CGsdxGdF1b5FcSl2uMJpE7upyJSfJ9ZML3APLht5xJ//PIIcrKpj4wpF8EZtHHW3ujLpTpCvQV7TdOgfub9ROpgmiXzFxjrYNMRssnEkRYoQY451tVhdjfmncuJgjJOfELONffLUzQrKUdOJIMzc8DvSChlMZs/1A851gGBxXw8FZ9K5Y0na0Is6CPhmH+wq7+lr6gjzXTbyFJipqJyIXOXj+dPWEZupl88DEF5xsxU8GYsGUUJP16LCmAqAB89b09bCe6r2TUbr80JQ0KQz5tPkoriHZkSe+rwOTx721Iy8Gp9RPwskDI4rQcy6kyUdMPR4z2Oj3tiw/YKM9wz7pGxBn/Z0DHQIFK009v3e0Fm6OneA232204HvBOu7Y55aBhSQ1L1PBNuQiAoLGWi9hcd/+X0cqMWhoyYYatueersaUzKypn+y1yNMl4AGlbCVlfdcSz9f7hnRVnz4izrrzlmz3cpK4SYTMP50pGXj52iyxS6gSuhxyeS8Waf0A7e4wpy9Wc0kwVdaR47lesMs5pu/YLawDYZkrY+69uJKon+2aWZHxpeqjXSOCB8bsjiofT5seL21o0j6usSn0p9riZ6nPGHOsoLzJCE528oloL/EaHBJa3Xhl/v/3fbN6fQF5ROZaN6VIggxdXbNfrqHp2YFseEn2dU/7cL/NOk/B/gFm8gb1OUQMnZpUGgUd8XUWmwpUY94JQ8qJQH+rIMN4tBL6lzoAYaA3Mp5KWbA21f/mlDxdE0yOZoQ9h76y3rqckrx31vnvTum9WEebNDajnYfs9Ey3J18wNSIdWF111f+oGkRyKnUCs1XWHeasRT6bVxarmiDTWzQHP9KuSL4I/UTb6nawpK337S1iRvRj5EX7jIiVu3ny1hyaKsxfC+na7SQm3OTfAYt93kArfSHkIqiwYLXWokmROOHkxYodzd5XGfPBb6YbTXGoYhP3lb8BzZQF8Vonb9emo7tXsKFSufOzkiV2yheJVbnnzDNylzPBy2+e1JHxpdR1hQPa5A0mvKXWla2zpEl2g806CpC2sJsm3xQuK0kqdJf7ODkDpEALU8v52q++Um+4GrlkeLoqLzwdfZGlWMZMjyyFoDsNRdcT5n9zFXkciyDGrIY54T4nx/9hp7T1uzrHqd8b/Z32qBItp4cKs8FKR8l+lGzucE7ZbUSQX9P5EZ/kALPuvRNLyEokUFvRqvU3hQ73DoaLc5n70GpXQmWmlzGfrw1tGiaQRwsYcb2+8IHyRStQXJduPmGw+hAZ2SGEULJ1gtf+i046u6qvhxN5EDxuNYsjF7QC1mk4INqOlnE2Qn8tN+L+1b+eQJ73zeZDaZUoo7GaOZjmZP4llv+arRCYPoMrq8zmhjTX9fsWmMwkqu0Ey1c7HKycU6HPiAUquuneaJe+2XSk2igANJG/p+utwOly+aTXBYIIxCvztX1498wYyAlUcINGdUPBaGejn/NvN3IzFsyvzK1ykPzcn/lubqN5UrDU0jQL3MBDCsBV6O4dS70aQ5aaQpyzkAVJGXXkGjmJO8NZ1zxwdpXa5U7j2nc4seEUZ1eH1ZgONhtKYVv4bMI9Bw1fs3y9UovMm3Rb4/eMsPhdGw0kIsTPLu91ub781VisKr+mvDkZZT6VIF3mcHtJqC1jtfvGIBaenMLsC4H8FLXsRRvxfVjvmoCI8ihK5P1BVp7u56ig0qTDcwxb/OC6V6Dm/KnN0hHxYOPGcD2I05/ZLviJQOAkiC0z8GgwraAcKpXIS4a2+In3xE/hD2gGDzdJbQopSfCjbfHs+K+l25YqAZoLllKtAhJONFBj6OCDTLfecYcdEkmw4hS5v4b6i/5p0kUy0gSbOtg1s//YqwfTblOfbAtpOF27jWXgFX9exa9AM8pxJtKHuGB4n4CBn/PoEWdQufTVlqXONVUrt3qGOq8iSo6eJxrOcTChWbxpNCfrWModajt79qGV1Bb7qwTlEL1hnkI3InH7Dbef98MNidiHBssPRJG2hQ+61eVrOT54CNAeARZDbPSBrddWVNiial7+QpaNwraY3sQSgOTGwIp5pY6x4aGQBM+fj0R2sniqbMybLWzDkxZow4a3yyWYk3w8kxO6q76ghtwq8lSec6jEbv/iaGHcu8cCLd3J3mbYzOwXdP77Yq/JEIz/lhkega4t7P6FZYujxG3MyalLaZf9EfT/Oo3N5fG0WYQO/HKdZ4jVev60a632JZ3PdyFTk0RTmf3XmsxIn66lOm1DsmHRd4tT28GDj1i9esJM50nEcXLdbJA8hv8ym3t5bmFPYXSfS8ZnDwklYZlqHOOYiM6jSiFWCzOYo3pIAWaCBNoVDjs7VWFHYZUdH/3KDf1plQ1RWLoNL+RxrAayRVWmjTB9NZeqSQPw2e6nhpNTKkaiLNmDy0k0eyb0O/3KM1nO2K3C/my20qhbg6iFFRPEVtr6mOEtRcHrDkRw3yM1Tx7OuaIeV3oohTbM0Q1DoPrFf+GLTfnACDqsXd9O4+KhI9KP9+WX+dzRVsx2CrdgUhcuP1Fc08AJhG+Yil+EH8RJiCkrDCkNMoVOa/Bue9V53wpHZrnMyUtDW9yC/2XMNuWBlKdq2/WS9+b2mb+eegFLSSS37H0tjACyYtrQoJ5zybG2/SWaeNVXq+zXVtRX8aXZcaqOyMsJR0+eSmy/qGextMST6SLrokyuq3SaiTH9te+OkepcPqD0avM2HTJGY6AXNQSislLzLPvZb+ONBgQjMtPZgrP9yhcmAEWQlcJvXidjCkhcj9gy3dCQPtxgvnbJrJ+k35kigVZJ2Mh0KzBXj9+TcnV9efvzdX35UrhQBuPHEd83DtibkY+N4QNJvvlOvZuKqZf65kf7x4TuksHZ1sV/GEqbgNGjbwRtMOvhc89/igkSttEGk18OkrlGPMIkC5QqMyKWn/SWI4sqwOkEIhSgeup4y5cVXaoJH6jU2jl55zdi/4Ocfphow78cHWJYTOulHdrtl5gV6MZB1U1Um4PZbs31YxbPu8YdY4zWO4lxZ1dKooyqHgiSXUbAXekqixSDW9RdHjvofjfXZKGUa1aYkdDmIgW9imeIMq+reABIwq4sXYyxtr4Z9qLe44oxq/e9zThRsj/ojZWAbHW+j1cu199UgQwcb8+/EuKCYE1BU5+fSneZc/fGKdi1Ru9J0T3cgN001enFCpRBTpmsXmmqrWhutCw8KaRvTNmld5Xa+/rx03frzNu54dIA1k07mMQ9zzxdQdblLQEIqPaWvHtY9395fGNfrShbr7f50vq5Qkelf2owO2caZlOcO3Er+dKD46KeOzv5GS9vW03Unl0yKKYqftEuqbSoKl7ESPxyNCTg1Io8iW9rDeB8eIMHDTEXsbTc+apM88T2iFus320f2l4dYM+tmeMhaofWPpTg6ucTP7wt5Nm4/2TXcbNpRhLByjasYhKaXk3Ce9YVdK9EfcD/YfHNIjXiEHu7cct9MieeLhQPjvXGzsOrvsqe3fhU9F60p4uSt7lA85KAbLzNQknvpU6d19zvdfLfjF0IZ5gJxp7qPylgRO231JbQHmjXH4uXF8gtiK6X2urzTrfIksjG9JXeppJtsr0DDeo9vtvRTbP177qM9qS/O966c714ZvQQnlwTaF9328TcdNX07x9z/awUYC8XBK2Lqm9O3kRiHHGjBIW9jgVBrqLDd0nMpj37OCR8WcfqIK7q2wuQU7F8g9f/Ee4gv/tU+9XsIqlSdwn5FU44utaGKwRs1r3ZTlTYXafnwcXbSIuwomrhZSEd9u10rWKJrKTbnoVKhUpYTvaj016zEJXn0ngdA4IjmN4lJB0JbxgmKPkO1egKe0ZtFBKM4QkDiaynmM69gd3AivSGD7lFQX1I4B4O13gVT0OOhuOcw82EXF0i4KBlQvz3OEtTGwGZKej4gW3RDJwQU+KGJ9jIXw6GXNG0p6gIn9eCH4WUVfA5A+2puDFkcMv3gGETH6kMhjHUVDWOUZNIbHBvDvwlWkwK2RJOMtHpuVyWbic5Pqm05kHbZN82jL1dHjq5ljcPKfFLcNZfGNjuGznPrvD4atSOpG/s7SVGh3R0HUFL7N7/NNGr4rbFyF1CtoSB17j9LTA8eyhxWYIENSlfRO5y4cGthwQWB5FdXRYH7YSwMvj9VWElwrgz9uiSxaJ+8TLAGZKo5ybCrjImmRFaDOFR5opwaAE0GdrYcMKw0ZVTk7QMaD2lWBqySgEgqpy+PBiUXc539No+kKbsHvQ2cD3q91S9gNsPk3b/2TBpV/bOyF4k3u3GK2taQSiJUhJ+lHhuFiDxmPtHQqVoyxahk3RRurUJPWgZW8qaouAWJj0FxxT4YJJIx1xKy0Y2X+iZmq1a/UG1/lTcKiHosU5g0NR2kecmlrExMdtkVcTDvSTbl+cc8dESdVrii0mjuvh/s2Ox7qySG42zZw+s3fD0yxBsAiWaC1wNYrtH4A56jTTYWVZqtXWfqScQSS1pQ6rjXj47NfEsJGAwQwAXZfBlBaHUVDQEqPT4H85RPR5oOOUNgXgZ8XykqB3X0uYqJk4CaJFQeIggGA93JUw6uiIkliZnV/78AvcktkMOKQITu5ta2s1LhuPbvs/f7HT74/BNUTpYlTTyhU/jLtCfZ9pkyYE6OfLyKLJDMWSHFyQGUTBWERBmAkHdAFfHNfP7EFySvRzCRQnFUuq+8djJ1CVoatembJ/isxvKZG8fohkPwaF50ymJYHKnyd4BoOQT8giWLOFnC1n8uoI6UJzunJexaVzpbumkmGIpiKtGyCeSkAOB7c6a1nIyLxmx4Ao9CAh/aAQ7b6MyQsMtfGOExeZZvLHUnf0UkWFmzOG1jljSYJn8qoZsSdptTSoPvV1N/cs7NidAQCDQal0gQQ/TAEb2B1utGcKAG7f5ktjfzwXlsZ8MVNoCFGko+d5P3GTxxBZgpv9UKWKbvEWtfYc/eSwnX5ioHZNXRZUg4L3ZT30wco6oFqsH1fPb+nWGoZCWfAf54xhsh6n8b5fVMBYqVCmwui3KxJNFI8odUxSWCkXL0mW3K1PEIM7mdxadQ3u+vmuu8wnj/A53XRv9lH80VmQc7p+TH1f39RF47KWUB4qnWU/qWrD9r4Kw0ioFItrxqPWOIsvbD66Vu2ChKb4DJVwL9jqhG3USa9uO304mlt4FN0HXkKruR8ZZk0/xESW2+W+f1w5XlTmn853Zu40TCUaF67mD/UGqtrr6HTC5uuZWJtj/35FRHjwQ48xioJ0r8DrTsc19KV1rPw0DKBixX/A4+45234wcOvpB4n93Wd0coAYLBJKfR9jH//lK5bmb4PLn1Af9FwPcOTZOpGYs3tJP94y9vMUgITcuT9fdq+cPJquFV+RSgVUl+R/ibZVKnu8TuNLzNG2bL1aOoS0J8ywYKqstEb6YBumceU4yvLEWR74YywraaG3f2ZhMw1c6bPG/hWrp3Ke1I4jG1k3UNRET7CRfxUuUtuYhXpCpiLsWYjEccIELALAP6Xp3B78Dt91qWINtbTH/9Lpefg5aAt0XaIJfw93x2HbA2MMGYmehKKmWB7n85I3A3CuthE8unbS8h8mSlcZ7/RQM5dnU0ITZhRFEO+RbiGzIyIahla6/QaxIZhocnT377A7d21nHhVrcoCpNtLioWNnNpryHwW2K5Jl+GP15GYp6VzxMl53flT3jFrMm9YtNFOAPAITKEKPlS8Rj/6NFuUlUa2yKKXvqEEFG9RhUm7nGQ3LzABKekbaucg1cQAXzUHZNssTQigeZEWDWqSwNuVQ/IEjbO5odJEpTvitbMrZ038CNJfUxb0UMuG7VgcVprjVLR1W06Ot9KL132k/z8i++v62rgbXj1e5CVkmNg01uTx4UOLz/6bNgJMWOPoi5fByOepqc34nVv29NEEOf92nu30heMH927aQsv/8cJjnpKqNzTeUGbB3WaUvlGI1/koPyWHpbT+z+PPDkAuPbCRmKf8y/GtHf3PmStmHuSNzUGOMaMnLIn1NHYapJRKKkM7+3S6meDufAFBX8BPLS3LwPjrju3popY/d2GGFEWToMlc4tUjRH7+QKndACF40SjZqwTPkGpZh89CDxQk1BUcGUeAEe2mCv2uvyI6NGNOyERe4W0yodNyHMrhhwg/EQMuiD0l+b9tUUtq/LSE8z+d780cdKwwb5JLbJ8P4awW78HBdQeAwBBZxaFLjjSmzWM//SPfnMSUGw3YxuEtlFoV0bHpiqgPH2tdsH4j4g1GlpftIPAwbFqtFW3u46HtsUF5YmiQ1yHx0N9Ppypj4XyA+FM7pICIqxzr4yWGQa4NYQd+IcNVt6J3q5a88RMJV7ZJu23SnPpX1BXpS1lG22yQBJPLrA49Qc6ktX78FgL0zfnyhUBrA61A3DOYuc44RSfajyN4YER4ZtbUbOfVz3/AFoVxV6/9Xa0QcZRt9WqlXykMu5kirOjaV2KZAUPmDQ2jzqBNZeMVsxpC8gG/jFIxO+frNi1oqLURx7TkslQqVkfpB/C4u/HiMWALHR+WzfmwcaUltOx4zYNqPOivINMvtEvwVBr1iXDiuWtSvu0WXfWCXUrMbLNCro2ebhKiFtfisjDZJ7kZRHBG25xKfQk+I4xUsXniHwpaZVkQbR90dJxO+ewahW31Pe8L15sOnkd62BwKIaWfj3W4h109daZRqycBvWd0KHrv8HhSOnNlYNw1J2VzEj96P6wrzgHorEawP1DjLNSCC661L/xXPOzH+L7q+zMoGByTKdV+MWXai59vOSCYMOjTskTKpCkrkpSSoKeHjWUQtd2fkJ3kEBNKOoQDkKHmBXxfn5NMndONF8BRsqW0G2THK6zrx67U/yvGVh9hEN18D4/wo9RUG40eTwPMxsisv5JXom/2docN0h/sST0uAe+aBrC1OQoEJ4KFH0oY6nULOPlxBaDFBbNJyro9i2Zo7mlCUdR6djebTpHRKG/9VjutrUiGMFiSZ5NSU+uLDHcGGWURaMyQFSxVp5Dp3Fs8P3PLjVK/w3jY/g66R8tHzT1LIrF0uR5ALFYeNFlnnoMOxwOFV+crRqqyiI0BOsyphteiVI2RqsK0LEx+Pot1PGqYADpOWRbg5wB0bWE1Eox24YxZyfDIuJ+7FUA+YQIUxZKGsMpAKHIopktOj9zjhilzBqZPFn3LfEK6w8bIwmbDSmiIhJslAb8m0uptn561Ncuxu1fkHqDHLnXIeSMSHmVJ6UwchWID8QqRZDVFIUCmcqAF7ZVjPuN2gguU0Y9TEfWwch2rG2vjqy8ZNIltq/4qVqGWzdil36nOfMDl+R3esg3yy9XAgN19q9oXOcEf9eN8B/rRj7WCWtpduWaIUpufaYu+TbGGsnx6EoZTTz8HWPZqfJD+p7KyGfFRSzKw+dFN+MNS/PgMm+bMtleiLZtFSQXVNlOKQLhQyCY9NJRDBD+huJ8aIN1xRfBrEGjYvvB0+RAkqVLCkzCnZ+W7Ookrt/c3xWu9GIPLcWhLE53E8RgnLPmHyvw7Gf81nEL5WpwoxfFL1DPgND0dsWN9B8OQIcJQ/uHh0s7u85h2NKgkRRdOe1mHe+KZC8UAyZW2uhH5K9RjY9M1u2H5aantJWVwKZzf+f6LQZO3ONVY4Rp+IyGZ0Om2tECVcO1BfLEYU1FgR4J5GLdgsQ6AECi3GsF1+RdzhdflkfECgA+lLgKLzWO6otNDrb+o/aqFXGqPRPd7t7IzeGt6l6gm9+ezqkhUnTkGXTriocY9NDGymE87ISY4DfBJk06+KOR+S7qJXupmMKAuB1kyzESh8SAejkwgfq7G4e2LGl2VaPbTD9368qFEGPOWv7XeZNuvQZCK7g0LK1nABVd6cSS4750n33mPhL59xGJznhdk51RhJGswlCrEH7bVoBVtflQduPTEQlbN5QHoABCzPuXO8uGNzA0Ap0Ej6WQLf3cHk3pe55lBN/GulLB5QcUgjsiNbmA3deT4fJsoXZL7tgVpUw0MSoJvhJ6nvHnt7eZDzs0Mg2YKlcWOFU5E4T61oZVmxkrCbF6iublgQpMXqohOll7S2We38ZmHis9OxuaFQzF6xqBcK76/zQz1gUjq9xuvMCoe4x4VB7pGdaMaoGlM6b/KO+FJo7jRbtOZvpok5Pr3DnVBKpUYUM8yJmx7/AQ/OmKG1pwxOZj4SvNA06++6BT0W420K2nVlck12r7C2n9aFw9QX123AmZDY85FBDmhrGaYO+Z/I3tfLqOThokLjiElzx7iKEjuwXsdRbKxo8vANkVnpup9iLFYW6UKwwhs6qoahZGCLas/yNbVuFYx6ZIY5C1XS0MwNt0AY9Wp1qjKMTfo0gcGrgdxI5CsZ2+gAzfKQpncI41RPFDgPim0ZSFDS/OrbAiTU6rIuIaf6qwvvN8GZLx9928mo8yycEVdd2McMTk2/JjB61GDpupcAMMAkztS1S3uQXzhDXz67sModD+e7V2ZKITXj8S+anlRzkF6Y3376SJH5byYvhWLkPz0OdwVuLO9wysex8ae3WLbHGVAXABxNRgp77IS96LDIEUpsBRd40saAtnnneZTAcq8UloygyNgDrZPChcLzD1SZuLyKd/QLX/98skZyLikPVrlitVOmOuYKTRes/y1rWSkFH34XbmSawYYQKFs3aD+OvD1C2k7mGkF5tDaA1RpWy/s6ed6ng/dnCFT+cZWPaFVeoegt6PR+MZ+xGKt9XmyqUqYg8eVRZ2oImB2OWbE46AgSrN3y/M0fSJvq8aXaRB6e2A+dcV36Mm4phVXWLrySgcilRuyfpbx9MeLBUX/6CenomFDJai8V8wajvigJOgbpVWSvHndJODdI37jUY/rdieHq5yYOOnwKg34dpgSwmcrfUF8V0miZDbcxUKAOCDjVD6E7w6VO7xCJ1Li8kxd/qRxCbitgPc356IA2qxlXC5KNarkslrzVV39ftBW+iGovdBF3dLgSTSGShJbY3CXw3gfoM3FpZp0JzX46ltE7gTJHPHshS4ySp2E9rbwmooGj4IwF3VPQ2IguKPrUFh/pDNmFR0jwfek9LoLF87TGdEypDNA2bJ9w84JIKZA8HA7HdmmRHnWymtO/rnebFPhZMe5lKFMp1Lp2ZQcw0RznzSw51PjbtUeuPI/abpQVGW56KSiv2NCz5JeYQiDm5HdUepQJJIMhKWTN1xfi1KVV6p2vVWt1O/A2JGI0hE+SPmpmqAMZNOEZ8QoprXZgExjLhlb1NcCd1TRWAj3m64dmyxplyvfuJeRG4xr/GwNjA7N5O0bbP2jcKisHiPgtUKL9dbdb79XVvthv7B8T+mbW9mPNddFLxkfzS/U7PEOX8DLzdZOYipY3d9kyj1ToHBrBe+BEMbn+ohRyMo8pyhovOsHW/8opMAmeiP/Ns3Vr9M889mt9DfMFU6ywCa85jTK0xqJGDqdguFafXOrOdZIo+sAOxqPWhN17jShydxYGnXpSd4Y55hzVzp8T1Dn0sHlNrZjLkDrWtyGKbuiOKRGj0oYz9d8IB5jqHT0qmqMI5zLFe3reQjh5U85Ji31ROO2GWM2+aeRpTD6E+1uBoVDQYM1uY1Nl4qbR93wSp9ttzuwqwLigzQxBrzEyp6ozcYL4dJi+zXdE2282WGIkFnsZfRCwyWDraMbzw+vG4vP8tAwVTQEqZqSeJHNcuNB43FFZXzWBagDIbffgE2jOqz9etjx9YuQXi+xlSF9Rfo1NWlp3C9jo61AxkPbgOso/eea6y8KQkjDFlgovQDnOQ6t0GbQpVsDpYetYMyJCZ8jODG4jQaDYFKU/Je1nMtzExm79vG6X/c1+4bdfCSx8ucT2ei/soj7h3ysg4ZquD+T7DQNXt93lxc4JLP1R6ZAW9UMQdlBD1/zG+XjE3hNa+OBzEN89c5dMnxBpeJeIa6mnvnQnltCi8olB9ND4Yzlx9gEw76MX/88Ql8DtT1fnykRP1oAwVyPkY0wuFwvfdTdSlju9d0rLduk+8r467ByKcCZLgMG1HXg53WjBEOijdAijdOlf0FiS49GfCos3GmTQ+hjdWIvHeXwo760bCKyciO2cLyGdXvtyICPU67T5O4cTA1g1S+dFrt8uMo2amvtyKhGYzg6W1RlGLhDPoBRWVtUwMgIze/uMe+t/bBOBO8zE2hdYofjXGci+7zoRDJocBH0HnZ4xoHfJBOgPJtLuyg14uVyXhIu0VxinwzQw3pTeV8UF5tJmz8GciCeBa3+SlHaf3TwCkm+tCH3Hn3SnWrjMsoB96u4T+UnV3wwC0+4QrWN08Wkt22pqzg8ybJKqznTx6FwUlvq7yNVAmK6Xo9qorJ/O6fa7/6jZTDZNbg3xqbwaUUbb4f5oI8NGOP3NwHtHnCf5+OqUH3imPkWWAPTUqF9C1mGurcnnBWKD8+g5BNkgphJd80Kr0My2sVlp9SQkjpUt7hGb900fU6wjDjaNpUCKL/4wsLMclKCKN5dBUS/vguEhmYYdK5WQja4jFtkUltMnybs4TC0zk2jC5Z5aqZo7P4epeWJejsVq5xDBpNlFORgSOOysoWvCwn3PWAKNH21meqQiOAfHuuT9jFu+nD24TZUAxab3NTePXNP4J59xmteabUq6lZhMO3EFi7r5YFtLlHgoPH12SdLXUf+J70OV7Z+D4Ey5XRQR+SeQbFrmPLDde8whL4+kpTCg8RxRGaOgZqYFJbpClE4lZvY3I2dqypZ85K3vBqIbuuNwvhoRvcB33NLud7TmVRfQtmJRMliQbKlsOVwPdyP59DR9dyleUhY5obrBDM9y9QaLDEt7/itJpW1nB0Tmr0F1nFfJsxhHWvf1C6M4sU5VxN7MasBD+ElmpRunNMNGpZunAHwLQP6jpsJzm5/UrzHlOjU2LiCKUVJVtGxO7gEM1KqVesWcWgKw8RuN4OZmij163zZ2rK1ZX1ZW2YLXgVaWxwkV9fqyv4WrpBO5cAz8zOdNOW87HsEzF7U39JJSlSKo7y2apMq76Gxs7ZuCjtfx+JVnX0K+OBN1+rmiaRgWwLzBm7QKrH/CWN/SlXPr1abHoiBQh/TWwVRPyB4rPXVsbl9S1ukaU7xqcJVJSi9TQfWt2yJJciQGe2q/KgUqFOpgJ14NpiEVpVb99hsMlLNkKZ9GWF6Fpp9hWY10SlMKrxLo0IM4O9SoUZq35Ur4XQ+9ZNMtHBnMpC56RieAttECj2YKsFPgpCdaaDCSP5r2MOmtu9LmQaDNGx+28eEBzg2SuBbRvG7lNrrcN8VfvhOxw5kaTYsY/Ggr8buQzl3UGbdhZpQ3enACYCU5XRVWbaiSt/9g5KboFhM+V0mwEo7aG2+tIPcZI28oCBNaloUUI4ebA0zDz625fSST/kBQGCnFu55buwkHsWPtMQV+DnRo6+8lzkGcnGkPRLkR1PvXShvo3hzBPe0fifitZwgPBQ7vo/Orv9ma7xSPjL77NHKtkNyx8cQ4oAC5UvklTmPjcsMRCWFxuKo3SqEnISP9fda/Cc3prBq4Oj5WTk20U0X/CrZ1PQZho+b6HNuJTs0lbsLxEbI0W6HpnQYBw8y84Y0KJR/nlHudtBQ8FMfqaGVCuoSDlJyUNhP4DH8iNNQl9+BARPNuFaQN5RWq7iBuMCeU40MyFjgeOaEjHjlxLr30XpbTZbDv8iJNVAanlZ36DV2dNyvcuGWfh5pyXcVl8tyyGp5Yr+JMXEG/r0FjCtJw8TCgwy/aFSmc5GJ51kPJvJ2OpiMKwhHZEkXQl0cWCCrhXU4t7FuOkUMbwrYWnoKUQC49aGbnP/EitadSUuHmCj7Q41SafioeaWxXIHkkCpsVQg8AfS/+OerIjA+fzRtzKUXavzlOtTFDgOT26zdBL0c+CUccebnI7jLa5Naze2UoRNzKaKdG6a7oEVVc3lCU62QHUOGtuGJe2mwbbgYX99EuoNfWfyuoB3YdJvvcrDdi9qPL/bjgaRo/35P/UrrbXiLBykWc4cM6K/M7uwHxi+4qahHcOAxHgcMOK14+BerHVADaCvH0Pe3DRAPXC1pMEv++Z1WYZwonsirngbBK10MSYe4tJcZS+a8tnBtMysFLWamqLQVBbPJ0+8x1IYpsrKn6KNmz5GBjofyCV0ZmQ1l7DGK5XckWrYMvE+PW+NXUCmEepnEVY8aci+jf+Zp8cyXus14i+8zFnjxSRikXZBsSC+BtZljo1glSGHxsRBI5yVhkbsfEnOEufFSoenYnawUgXBXQD8upEKhA9mZTXSISc6JY8eINQ/yB62oJaDBOU9EPzXkEobhAhmQeCNEKcpGW4HmgbsGzs4YuUylZMChBaVuALm16ppHFCkfj40yeb6kWQ+z/umzPir9+lLb3d+k+dCDDGfo0red6kZXZH0XKY8lMt/tb5sX/Akx3poK8KxbYLSsJnDV8gbx7vHCORCzv1xPuBFVGBd0WAdDahEwY5aEkqNjz6w7dqf4L2QWJXwgH+VCq9Tz1w3KuLBsP/pl3Ev1h6Sfav5/oFNaR7y9vpRrKZdS7htT4I99oZNEcqctcec7f96zWPiRAD2KKh/DLzF9IrAGUWMrNHUpmySm+QDp/MR4LAQPcyn5i4jvG16PpHdN8dyri3Yz+EbU5Bg3YSzl7MHSaC8eLh+M1reUmCQe4sNqlpLPqCkbUZDb8TTZZjTyJhbqM0qZPavRb+thQ/+0o76qoziZIPLlsQ4xZmEs8m2yujDTKlLuxzPdW1rLs+pezCTYdYySXdr87zdIrX7jGxd26FpxI0D8mOSglOuiR/uXJ2f71b8/1bhU+0HM/ncQXI6vLO2886I+8AobDDRBgh3Kw7/91tUHMjJIP8+kvB5cc/iF0AYp23GwhBZrX2UoCcT1Ag5wghhX3TNqUhB2g62PqMq4kn/2rk2APH6prHHWXGhzjJFkyHye2koTqLFZrBUhPVGG1NLWhbkU8qX0r4LgeunHxAIOB2oWHmFdzX/tCtyKB/kJ+h/lmSgBaJsOg804PrkqnohLph4cdB1U0QMKnt0ryzTIivLfapS1kC+K8UgDHO5fEKeWy9UEoPT0R3tVfm9bNFlIZDdkfIqr9d9w67h8FpIlJMpVtUNQXJbTFT8mWZSAVS7oL/AAPfuaBmujvymnrlHl5MztFcayphk5cQisKHYHLuCM3xkAfpIBVViL/3kCSIJIXHL5nVdSiV8swFNcWrzs42Lv+VGHk1bPLHTwJfczjAr/cUuVe2TcZ61VA08e2VPRig7sqvSwy0PjM0dQqHnjyD53N9FqwX31qlIrHHpbFXl6c5A8/8XqU+dAj0CfT9jt+bpBRyea16+ub+h8mW4eWP24fnn+4A9DuRx9mwutnN90/SSoLU6AzJx+8v0S+Dp1XsD1/QDT5TQJu4Ma3d0+1EbMYkG2bTRk6J5sfo5w2lgIuKXSjzKn0h55vh00mlf4nXY1+iEbCo30HkGuXmmnaZPZEO0xdSp5Ttark10imWtMr0CHAzJMi/WfBjHoPAyCy7UiWo1nF4Jortwr2lzDPjThEq9C+ZfBy+tKMvtiLOogSr4ud6qiY3Wfa3VT43Q0lL2BejlRXrTGR1el3YCXmU29YNEbaqRY6munV9svG3n8INp6gpbj/s/bc//lx3o29LHSPXq4Mh6NYgmns8ea5qb0cOh1da016TdcNdbbx2pDjSoaspK7fIpXOsD4CteZud9t1eanQ0ZalGt+Gf4L5rHi/BMctnPvIANDp2Axf8xZd/mMwS0DHbKD612GyBLvSCvR/n7RDwI1bz9Y+znGLb7QUnGWx2n4EkyMMCFs0O+5QT4ATzIsEpZSGpFg5vgoyA9Tz2bVebEsYs8BGV+7LDk+uWKU5iepEfPJ/yMR2uqT1UU9ULg1FEhvnJ6dHOlFhZKUDT9+s9+m844HolBEfCWmznikKxsKK9FeU0MG3xWAZmLCaZ7PYq5hO6wPz87JGv4lqgGgtypSvzQpHO4eMOnC7qwqeilz9losFNhXkBv4JA715QAGqYpsc8pXVvdnSPF4Ra+Er2iCnMi9SlN31bG6nH0gd54b4oy3s6iCLR5T9DpsmY+ne3Sq5pNYiMTph3hBQmzCXKS+Ng9Y12/ijofV2XI1CQbfwdiFBPEOICGHzwyf+ASuTAMCPcTxXeBYUByWHuD0utm4qFYxhGfYROabtUjSregCDnU66lMr5O0aHypiCH/T6/8gOBj3QIw+7MLRLt0rBSPMLl1JGZ9JXYkxn3hd4cuLaKLsxlOK6akgPXefERrJsr4NNSkk7fiP6FMMHc3vdh2eBVHg1txvlOKEQquB2L5YWqYIC64+JEYD7/NTsWli7qP828RrX5/HmgB9nqZSId9oteHX4llQ9WZi/I+kLVl+OA3kAUsWiz8jZLYGRwfYIgYzVnQpTp1qqGA3Yra3TDVnWmtMGfJISXqT3hrX4iVWTlsxOVQcWYCCLgCI803QAsvtknGabmux9pPRSE7fRCgOo+h4dlrKVoiyIDuaLex4XtpAWxX6PQg8dxjR6UIo/w2Zi0shixReDCq7/S7Ibq/1pt7QTrH3iI82sLNYAYOQ2S3qWMml29QvgV0q5zCVnbmGF0Ul1lYkCQUfdfeCJ07t/vniIdnFw70cNA3SY14qmbFgwZQ+VMKyAMFG1fkFadsr7GQNXxKH9bnF6IqiHTQmq9HkfLsw82/KSSiy7NP7wY4UWCzF4VL2m55y5lFxIHLSTRcM5+KnMIVfeTBHJGrmmusspmoXLToHcyysrCDcbUTep+ItWpY/nyrrzSRudw3gS3KWZIqoCNr/xs6TS4VwnSZiRso+wRXh5oHcZGqaYmf6RWzvbZZ0lLUepv7ZZRgLEjhlvRvcOg9vkk2N6LrtUZP2tRKAa4+Om5HiuUexXxKKw74ndWNfJKDHB7UhCCyIbyNQB/wZkVNV/iAo5QTni+5R2lyzqLFH49qGe7F4SZbAST0JgL0N+oumQo3FspDVfwnNmH0KFVBPiu9ws6S2i1KAN4tw2a3CoR9ba7Fu0X7heaqvb8bipfo2cbGTguwHek9Fw7W/y73EnZPUlut7VBH59lBDRORfKq2Yk1gSm+CBzUYY2bNfz7Q3yo/85ndQMxl+dr1/pWR3+dzwh3m76Mjbh3dYxc57B37b8LBo31zukj2sLH/CBfqDi33wcPuvmTpjPC4AA78QipXn4SuGTqLt0Q0fdkbnrkoeXrk8K/TwEJEf3qac/8juqWGNFIxLhXI6b8tuD7Nw85a7hVCsFD0qrKWALZDgXCMKbZ+amKYSZC+p/AxH6ydX+U3D56J5+0TzhpYRP+NtAV5UgObQYNHfiWLBtfb9FUSixLAF1m1kizPU/DJGFCAuzK52kwPnAZTJsVQb7Ss3vn2zh9t/9sNkptcr1PF82bjMx7uU+tc/+qfsblzr/aEvQ89+kmwd3ddlu7H4No/6W8EfmdZrPlN+/QDrCE9Abq6bVRZeVkysgqTvQ6lnDVaSWiFpc9cmF0vcvDhwgOl5GHTcaVXwpbzVV/jBNx70GOZloRutUG47+2wiHKPy7MvE4j4FQvuiYJVR6f2xUpKryg6ugFBqYcLfURmoD8/QPCBM7P4DMRaI4k+yeGGoUw08v88rosAomFOQFnx3Qc0zHksArHnmKlKn1P6T2Wsm4zDL1bzCHzhTHizZMayU2MIkMvi6f8NnWQlMkSvychvJpV2DHk4lYDeg7QT17EuWe8wTmzql8TaUIxhSOR898B9gO6uKjqijz3zQrGbq8fScdjorgOf0S5UVZNugETBtUFvVWt7eyh3feoFoFOjwvPVw2LnKrCkIGPwdUAriYxMW0gQ5Tr4MDhIjflSyu/Aisy8kR9tjMz5qejn1ZOX85+ayWQlipXGLHsnYB5FIWbzNmKF8YxiiVOzqGJYW8pmaLw+BjsyXBBVshM0wOjeDi+yT5cS5OW89/25+AtfQBcKNz955HLaQvQm7hlcojbAZ6Zpnm8aGICwztErGhbszKBWPdKpbxGKdnTBWi7kldME6ooVSeRiDlxZKqdll21KCbGmqJS+kAlFLjKW4q4VFomYivvKILj+YFxiFSty8aEIWw/UmOZExtyjrZ2BafUHJACP3jwZD0lXBawkr29omw42kFIQSa7/4em91l5oOZMwus1faxe48v7SFaQ3bdK8kwotDKU+Z4eVAr/rc4in2gbk7FT98wsXY4WLK1xO1D7tUD7Xfu0Jk/sT/Ptsl+RJ9SHaJuT3xwOe6vsWBcAjabYjQggvggmODoymUuk3HTP0ofsDA86c1b5gMdbKf1OTXR/4ZtyoS8QyrDpi2AVlURcxkcOaw6IKnF5L5Ftzm+8SAdC8YOf6eAcNmXvvzBn1jr/XdhjWg/AyglX4WuAHfLGx9t2H1azMYYjltTGrgyXlwlNtuZr1vdwflLSV0WuIn5LGl1wXtHhS/oCz2SXpG6duROHeJ35F4cQl0Qzorf15+j545fXBlOChl5HgQDXn4uSl7NzD3UHZsANvTZ58GQNvxQdYn5BYCWSW/KdY4FgtI/O9LniZ6Fbh8f+tfkjeP1yAcRTpJZjmRoF7z7q6OVhA8t937KTu+7g7Nt4QIxRh/vDm9rb+G2jx/jEMNsn16dQzfvaWh5MmUNy0+qrfFJkldY8vFrjPYdrLWDShuqeRYiDhzsUnbYs+lJelEN14h+t2kuL5yvxp26vEeO+xqG/VY4vxvJch460/tcjlzm7rZcl7afcdZDqgdBwo4o42ALNXe6/bSz8/U/TI4gxTSsGvLOS7IztqB99Sovw45K5DBHglGW9gdj+mnDbAYCkSuFprOu46XevHn+5yNZJMvpCpS0MzCq6xDl34ADPHBSsQmhLjuI6VD8dj/6EXma3sl/4JUG3gzTe302XbiroFT3AycY+zON4fDkXKN65srUJeY4qLl2/TYC+hYZvJtGl6Agrs/SAd0uC7veBrqB1VYIZEcwX4w6AVSGCiI2Gbq66XPzG/2zXxPzlv3Hv1+huMjf1lvi6Jw/caoZpxVps9M8ny/vg3qQW6oRrG/pmH4Uttmkf7YNUb9zCzHMWrHEuhugxDVmHO47c1PLMMdtXZPX76fWjRXcubDmbgYVvcqEDjIqbJZlAIdwvRe1jJeEVqurwY8jPSeeDvibZRPChu9TlfE82DEaWkEV4XyCEV9016P3o1KUg8afN+t0eB8+BXQAXvxyI2Xsr4FBzc9U5xIe8i8/8PT12Moflw7OcEDlBYDxkdYzypuhjeWk7Jz6PTL+pBiU//aoCItOSeJkgbaDiufl7Hh9+7buGx1T3qVQjkag7Ne0IzD6sIjow6g65QTMtdBZ9j3FjYsTsLJhTFhdxXfzQQaB1D/geI4DRVi3iCDEgMEUh+6lJ/1G9V4fjtUtJoGD+xc6cOBX5XDm4qibto1swaS4AOZTWLWMJBE9X7L5/ZDKb9ItYES9uFYVFnpbgNI28YQrmrmaH7k2lRtRvBAeW0/hOp+FjmjoNWvLikqpRjF8akeEnNF9vczEBEaXbkNhSw/8ZLvfXTJzJJZXxL6jfwUJZKAtk48s2O6ZZZ8mxHFGwwTAJbqvxjHjhCI9/3+N3ttLkGwqZDQynhBh9sXBC6H92PTOTzlqcjR+n285mqI12hWLbwdc9qs9JhCWmlvZMVlF4uYZjx3U5m/yZ+iWjZm1EpZ3CSnU93pc62TF2lW3PgO0aPqI1aHl5jkbpFPNTgroKNOvMSvPFmeuUZWh6RMqpIxmQajmACOsaViGlRMJComgWNCKc2qV2X07gJ9Dvw/6Brv8btmbY9AmGIvtx9+9CgqlNrQMMFuu4Q+gJgPlfIhj584OE+hzu/KFLID1ApAvKMS+WUYtmWevrlvArOrEEivMNIdt/wLMtvrePzV7qWnU/qupd1OCuKGLSy2QbEToQYN/mAIEkhPcejEAdYSAhtKj+UmRszPPdyk6yAUwx22Bfek6BgiGGu7e+n5cg6MFSJynB55C7nE8c25E7lvDlh0YfP6gpFCEmWNMFM6EomNCtp65121SRAVmZ6Z3Wyns2Y8FmKUftDvxRWUYcFXsu6EohvWxbhdnq3ZxOTn6k2+veE8bhg8A5hFE3t/2XxFuDShqKlfI9VShWa8KPo7lfUJFopUTYcpzyuYDn2f8ksPJp51yEWxPPE1Al8R7suvOX3NlfZg0+keWRgk/JYQood23EWSVXu/mkMRSwjPH6BZqhBVCjueSx+uFU/yPlDfB/Pm6kT3eqEhKp3joCi5gWxPO+5vlN0JWOJbxoGzXeCg5ffWsS4cBkb0CxfdSWzPPTE/vklDI6nU7BgwXFupTSFhYAsKxgXKqshlxyU2yagXiZyN2lThrNM8NRDbdiH9JmdyXZMITLMTGDPS1mSgSQ/JiKSfLVjagH515Dp1bVz+6poOqDroSu/GMLYB/XTgOi5fmwr/GgcYugSbSl1Z6wb0AqaCWqjwUNewTfQlwdW7McyAkmR9+sll9NegvqIHekfo08nBG+MwAXrn8qE3AW3rLCiSky/A+ULarVCdMfHXih2uPegLYjHoC1hzCYQB6him7aoT0CI/LNhDWX1MoZpdntUFKhfsg+wJ+3vNPsmeqJdIZ7/LNi+ioTt9cdp4PsjmGT+wRc+CVjuyuPAE2u3CFo9AHC0WzUGsC96BTqhjs5IEW0nCV+xGD5A6AR9v5nDqdeoT1m2CmSp7lAyukjBujbwC6g20qMJxnZO3o2KM5ncDYhd6J5cs7UQnZhjF4ZhnOCUtwdYSsoz1K7t4naQBbUqhjFbVhHalG39KGtCm5MmcGn8zw3WJGIpExPEcv4U3yhbms9KwAFm9wKJZCsCPQt4vJKCL5AqyzEvYGe2F8yFKy6CmgsJLmayrXdpW1rokINvJgvddOITbe95n4739iAODX/lD9kKwJ/Y+kNt6TksXkYv64cJeqC+lGqVuy5uSb1+Zou2N2eResz+8lFEk8wWhNfS/e9ZrNcLfE4LWWqitHqL4InRuDlAw6ImsJh0x0WCSL0JqP3rUMq3ayLNlcvTwRfw4KFp5Z1EGXjPbfavKNsC7+mEd5v0hq7l/NPiwvVA3Liqr6gCTiyc8an3Aswc6AiP7cqP3ZiXG1edj6NvFbqv7wldny/dqev4Yi7tRtb4sab1z3ide1bQ5U4+PLIFGKWYWPhB0f6e6iOf0EjTXXM87bT2gbLp+SjGY31HDEyfIA6NqkKM21Gy0ZvP2beVqoDM4LcCKFcCO9DrbKppwrZ9e3AXUmih0eA5c0g9DscnIK6645phhGd04u4f/3Oc4h4cy4XABsPwT5sKrMTiyX9zToPyHAjHEEfXArqBI42iOWDM8DZwPYvW2g1cCrhGI27DHDMhYN+TItROq/6wF/EqiLa5NluCDHWj9F4ET9Vv6h424XSBeYu1FdHCPaQKRFgp0i+AKFGt41mnT2FjFG85g3oE7ahTUUpGNMnO2IJgKcCOigtNxPO/kySVmd9EDOG04bnEJbDsLPb0sWi/xwBeU78/SjVlJMHGCPjcXN0+zi11Yy8bf0Q+XQHEj+e4YkbO9cAXKi1DHBbWw8Wsz5PO9oq1hrcAavLO5PC/6AuastzkoD/pg9QHkvRKBJjeVAdEL6Ylq8BnQgM3Am3VTshaX94ED6COr7O2Chn+DQRcsGqlxy12ADBWHqrXI7IfdFJ2/EpDZgc+9mxTLQzemTvTtxNbUtmBerCDKlQ4NAq3V9FGGAu8pqeJXyllKCeUq/8gJckr+i4fqBPMR1h7tKrVEzkXX3YOrZHNyyRCKZgCTOjGGU7Eke2uswdPdk6HK9WZuEQ4HzcS6FpkhbCa4zjGG5+k+iOFmxejpHtlkZS93dStoBtnp7OCpuw6JFoNB0gz2x0q2RXq+05XDBmdbl4V+Fp5sX2jk7Hl3UtfE6IdFPLzs95uEL1lDPcG3LxQGMLyz31XsQ2zU9V7CHMtd0hG9L4/lIWQeTQZAebfeeZbVnixcWXvwqBKebJXV9iyFXJrvAZ6WVb5Mku1wkDu45zIfG9W9/TzYFXgeumPn2cCb0AwkUjv/8NmXf1gJnnRmGdfW5VzpQYRM5FvVUkAYFDGMfdyC6gYKFRJ1TKBxkNrmcvXGod+DCvnuzXlbjFooPg2/GZZbyv8ati1rXNKtYoW3s6SV0rXCKX1Ti3XUszzBbYNeLe2OxEDS7jBaHv52UtQMgn3CBTI0ySLi8whRG4VsCNTwcUfynNl8lmhz9YvRfXa3Psddr4hbYebL1dk1AB0YSj4Zccg26eVBNCiE9RdKsh7GYkvMPiSbviEwBDU9I3LrXVeCpg/hFkRaDhn6fJKkcseYnxJeRZom82vX+6scTNyjRCZJWzpzkIvxKaZF7zHkYizu868bcRxxmHtM3YT4PWZcFJO11YLO/qIhKAfbO1Z1XxsYSX3ttMRc1y4Sat8/YsMCg+v9K4VT1HehLq81WEWTmUoNHsXqkzlNMRZAk70UPbdpz0mLs120/cIR66sI0II+uMvS4PDwCzomVBoVXHzIET6GfpZQbbKaUJ38uDUVLuDcoRRYFrYgFenV8W03jIzlSSq00pu0CisycxpCsB6b6TzX9IGJKrQ/L2/OY3i5+CBVRqVqqR5xILDTRJ6NUCGVhBxiBMAcxztuP8bAcbYrHheIbOlLFKLkjN9HykVn9l6b8aF9l/a4Mvydxq2DbJt5DcqSkVEX8gEyU3Ck2DDHsjQr9S2qPISG7KMNZSRK9HFImVBy4kv6O47yKVIJ8+k5SerQCdP8GwomCuLDuNI7j7WRYX8IuFrwqFDS37t9wcddrVo2/wy7Ya26tvg5Lz3DrtmNcW2RuMuPRnBDhRvRUFHpwRTmOIK3K4Z0rc1+xxLduRvjwsBsm3r2muVBTip3nTi3cmP7oQ2VVCJbeHUgYHDUSqsKP/tI6M5b/j2Mg2XJBAGZpFHRf8yCiwGv/WZsJVtlKeU/Dk2IoKvR2JcSu5OHa/xp2QYj5jeoHre0xOfJxBCM8Rp3LeiJmklCcCxcaFiy2pZCDFZWwUhgtqOri+G6aG9oB0i/t/wM9SbXWXHnMn/ffLLgcOky7DDsB8bP4dF8/BdveOA8FVH7yjcLX5wxM2R7NkdKAPxJEffmLRTM6uTPyS1EhN1g5W0aVHLqOROxT5k70APa2Au5Lx7qOAq9PuzhQFMiyxSEYzqJmKapNwwnukpoj4F9HHq9INlYjALGWWmhnZ71kel3MrsRujcKTnIgOB7M3xEozsogKTGJAkBruCYrSRtsnzCKgmwCzfbDSpqtjkGX+QyKE6mDmAORZcxk8KZav45CaY71APGYL5otIw2FNZY8EAYt2F4JC+Foycf361eKb1MqgMnQuF0jl0aUUV5R0SLi1B8CHHuB8Rj+BIL1ibkITtScp/n+HnOdkNkPJjEVLhQnt2xenLTVqqPDWUbARkPV8LjyWX0EOR4+cG5wc/7nGzb5ya6j7dPGBRH7n/VAi1Izfp/mF5zWH40J8pMcppFhjSMJ+Xu5W/VIoVmv/uuXzUkmC0WXGnMlekCaXhDKSCxW8uoToxGksGSXbUW6fHQ6xGadZUP/aPkJbFhMXin9Y2a89TyPSEBcSUZBN/T6Vofw/GQW/jQHHTDPVDbtkQR/4CD51/HT3EgC6+I19nviUNm8gUYrREmyZ9r/KP/KjvrVKckTzc27JtOVz5cHyMdvK/KSv6xpo03+/y39Mg+ieumYv/xfNq2s7uu30a/UQj+oMi+JlO63WKUbdx3XnjkeJBVCobqY6eWUEGY/jhMaH100e1sA7QdxWshrgMbZT0JH2/ufsXP5MqQ5xqEWGDNMiTJtML9W+1V2Av4v7ZKTfFwYIrmn/MIetkuZ4Td8e3slKO+PosQb97y6S+2XNMvZN+RnK8lARxTUc9axGew6btxgWUHx4VWGUyNaSYOBvqwN/lL2koBQBYt2IuL5GTe7OV4vBp/f59yitvnOL2818Q109rWNhTT/1kPkuVPMCDCeLzb/MD8XoWnlZAbon6ZpRCbaI7NWzRp65QYyVfUiFlo4tUuYO2GDTuwJkXvqgEQ12jXPXHgBXu/PCnZwcG60qaDM8uEE/vEEAVrm4MQ2b8z4xPU5/6ivVrpraqqvtGW0dkLt5GV+gtV+FxOmPxbfTy+AQiXTvmLhyhN9XLi39od+nW4RiGzxu27y06qttVEb70Lbqg+FZd51aeSGBi+d83B6ZJbs60fu8M4v6nZQosCXqt/PS7dkPH/U8dsM3/3VTJbD9iiUdyOXk3cUSLB0qRqPbs2Nz0QnUXPpwK6mIPny6+LSdxVdAduqhI/WMb98IztSYg0Z7yU1VrVqf8JZ+tyeunSOwDCsTIr9u7emT4iH74SClQzz6FaRqXNV55fOhtF+X51M3m3nBnx5xHWNonYwrv2G33n7/ZErMT3G2nmzVJd2Fnp4X3jv3SLW7CFZmpljxszjPeE9Fig5qlT2eK/9ZhlDVWiZJPsBy5ojYo+js2Fn0g+mW5Ufi2mKTG1++/5Bw7wZL4wa7SXFPxLvnRJ8viaKadtYCwK5En9llkXtmJ+z5LgI+NkZ5xNz1reksArmH72t86ohUXqIEr39SNsgRkmJxZ8ZmRfeX9eZ/PSuefdvE7o77AuOPmnZ/3luC8fDiOi8+gAhzQezDJN0xcfKwXIJx7d6i3tceC1n3FU+tBvp5R2FvZYUmcnJ3dtXLyIXLuz5t4faCWy8Ck7F5S9XPy+31uGvV/W4XuDQ1h9pxzmZpPBNYfVfwFPrKHe2LG+6Xryo6QUefvzcf+DunVZOVCG82+W0mSGeDCE/EsGsQLKIz2lU5yFkPzk+xhrsjuurF8UHGVCbTIb6xAMYz0Zj0Dh+tXf4AVjjFxUsKJp10/g8QtruA0Ek+s7lF/1B2CbQYUullfCz6ZwsfjmbClDd+V3DkxwIX5e1rb7lC2v9ptIxV8aRkFovyeMsJvuXKO5i/fX7Ooqj0Ze06l7vr3KCX3H9eLWUHbPNx3pEnx2+vdm15FT7t0rwqcg6D39fnQAGkwm7JxzoJ6Zz+D70qJ5KsrfGb/1vV3U5bcpU+5p1D679dIce+ca+59Pnb/3Pw3zWzGSf7OcMmgniWn+TyQDfNNzfdJ9f7NBPBub/0x3G/1488NAV/Cg4g+ib01r4g7z/9UibUgTHfv4GGI9elskXb10oO9LR9pJQxrwWzPuOtkXDwBUPTBFuV5QeX5PljI+bhx9GOvvc92oBb94t60z01OoXmNkP2+hATbWGKjCRTGx+iib5ZDPoI/rRxweU7z5KO+F7MBaWLtfTWn/apt4938pfR8644aW2FsT5nL0/2f72IdsWzYXhzIuZLKuU54PobxCmv7voA4DbSX/IsezcDUQp+3BLdp296rzl+bV+2gH8cuAklF2SQ3dSzi+RcefONQBITzPz51u3PAHyI4im/GHdUcPs/HGdBvT16hgCqk0tZsBN15glrNzHMX8w+oJDB6T/oIEpYkZgbtMGZB7T6dFvSAoMBbbBymMoYi7L5rc60BLPP1XRqgyoDwPGP6cHgFOtqda4A/ILekfg04EdEvhyVPwdDfe5+v/SGTNgU4tNuwgenB07cbVR0URYGBjFsBlhcuXrSWEZkU4RW2vRgQkZcG/IK7DBJpZs4vce5EnWrmPiivxxx9cVCF4RlOF4RhSGm49LQA0zUCKzDl40vBURVjE4i2AoABIpM2kVnF+2cLWkUsFYGWCnyjCQg5DTUbCdCGMiU0+2B0GFYAmbMoAOkOCUaxhqpwNhzM5mgPwEY8IGhhuTCshjQZYrAAFuTMpCGnusw0+kDTGAzcBkJz7nSGavhC/VhfEXto0AccQpHar9QYx/sJyIhwlTEnoHnxDjCxZGPKzwnpXes7wgxh6LjPDIOCPUuDwixr/oQXhU/AqlY+J7WHwHWfk7h0KMV8hGPA44Z6WPCAyLCXkgiuIXQurhUQyscYx9TSgDLlmp8DKDxYKmIpQFfyFUmnwhxjs0QigbPpPQXp1HjB+xD4lyg98QqsD/iHGBfUAcBP9BqNqwZ6NgHzfYK+FQI1t8gIFewGfE+A37UXAYObvSqw8Oxgt6JbzGEcuQeK1HLFfEazdiGdC9GiFC7vd/E3+u6NPLiMPp9WeOu+9c/sbm44nN7XGu7u3569sTfo1yTL7GseGLlxsclYZcJhyZHtJm5M8Dv3v1gj+VVmnT4g+09Oo3fmfOvHrErqK7tKnxdOQ3rzZ4ShTkKuFJKUD1hHHF39RlGBc21+ucdXHbheV92mQRpGpzDQXFkcIhoqdhVkBEyTSjKOS4Om4DTmkOCxRZqEkGikj4GuNI2dFgt1Coxw/Tjq4WaQtFrwEFcGzHBkbQZjL0JpBRowNpu+ZeCyjyiPpEgVTzO/Oe8LWnpRkd+n7vUEdzsU6osB72vhWUFIyQM0pqJ+TpQa/g6LEtjgLlZr1AHIc9O2zCM+wWOojVTh2CII9onsijRoewhaq6Kda1ixxIoFdwb2GTRIegRfFjaicURbCDoiVOY1JCwCJBicBMEaTBDo5incB6spRTOm+hUE8rMEgL+rEojmQiLBIUjeCJCLUDVmcdVrAUimxoLp0TVk2D9PHW42FMYRPIwOYgCrmCQxED6vtkKGlFZgx/SqwatVBjCRFGKLrLGfCRcmnhiyMh5WY7QsURLe1Bss0MLiSTNxlIEtf2xGpTol/cRVMERej/nGYJzSCh8AXs/abogdYMiuLI8abZ7xw5BAERHuUKnhSMcEjQmiH4xdHg9r4AFGgxt0AtI7xtIIYzVxmBF+yJiX4tkiDfwUneImkjEq5i4JSOAvnzRaj5mRV1XYddGY5wfGakknMDbhrBgWbZUUwsziPkZk0lj1xYh0IW+TyXJ3XOQQ7z1QK7He9ylPSFZgnHycU0D9Lxpng4lb6H6Yg8O7BxR5qOLohr7HXl7I7XqvcPbQSyfyRnMvGOExYoUy3khdgR47qanbA2W0Lv2XJw9GaC+Jfx4RsHuqC+/Y/xffw4xu5NKSkT8DvoZjn2KFrZmr5gl5Q4y5lA+nrPeCcRWpZnfwzA/khLAdHCxytiOEQkj1DVPwvqhb5vkeIZ7HjQnoeOaRIK28Wv9nwp2MgzsIcqz8oCOL727By4ez3Z0QAl5/NLuGm0CEcUrBquMEEh1WKxCGcj3E3kNrVIH6mObp7u3inVG7kNzzgPFzhus8oheB0VhnyOQyji7Te4dAVFy70hgZsJGf9eJrLQUQBFpPjldJ80vh5P+nRIYw6SDeQXXZWP2g2jx3eLzIoaWEj/WKCprt+DjxKqZshiLNK8k1HRB7B+ngZFU+NvcCKIHAU14fHtbKhpE+zf30RYIGcUI2IOhczCJsRaaHdWSP6lvtYdElg1DszEySDV4npI77SgH7xIV93QTUlBpF+kPZbcHERPvIijIw11PDqRg+CDHzEKguAVgoN6E482PlRV/57FwzQhcSHwo1MD+9+FIKG9gbWG3PseCjgSmKEnB+7cDCjqH4uZUwco4m+K+bWPBbBAIRIIy0dkoqoVqEolYPUJ2gCfcdDO9V4AfAecpX1II9oLD2NSYdJawCvbNFI0zoM+gy21lcwiFSBLBwYLOtJkTMlrB7RQqCOZqJx5mXTcs0BbqIYhK6wXFUccmiCKl4UvJCJ7WbinYu6lxRKH5hCr9yl6Lyse0qGfSVx71+Ienp4faUVni+yoEadhLDjkZPRM4bSnSDloYwEk68kQJWsL0msA9jz2t6pFSgwHM0sfQKQfOTkNk96zQ+Sfa6egRwedFQA/ZzBnRb5wRnHvRxdHgXIG2AEFAEGUwe+RtNT/nqQwxw5YmwA0iUGBDgpcABFzwB4qgmEngJEtzSkPGW3CnxCxw7A+BVhRA8sLNacDm4fsrytQJIspb2r3/7MVh0hTFtOkerasaH2l+WnluGgCpWYLPqRb1Twwj3RvRgervizT7mwRrA7iDLNVM6Lprug1HhxsV7AXNHc+uToZVVV8NdNIgsROQoS9sU7vI51cxHvaRWvhh/8eJQYrCwvqwJwEBk4H5kjgYyUzIlDQ+TgIHYZBQRRt3ogrnnndF7LE40nDuA1Q1LNBHN1FsCOj4wRFdIdqHvUf0dUYUNSx6pumBFTefsbKPL6mHs0D2DlojDQTYMW5RAZu+ztzvBHt8rgN0aeEgLgW4EjQ6ANc1KDS8kTvTjIUmOujhNHVUY1ney+I048aBvxQ9sRwqabu0lRCen4k6gXTDehBRwlkIyf4XCREU+FG44xYMbaDEAhCfO2LUWeryKvhKhTCgC/hnY6t46BciUxD4FclqcJ5vFxTjM+mUIjk40ljs5V5xfNd0u563fbKSKSFghkLmphLH2/y9zvx1tO9DV2QuvuMi712V8P0YTEzJGbswOrAW6iJ0xHDUUKcE3QauEy6WFQzzRRtcXsEodXlWWa9PeJmUIEznJp51+k2HsQPDXm02+cwDgbBQON4msXqLqyQIeUkUJUNcYp1UegPZI2DRdzbxemgxUh7Az8gs78wBKxNfA1HYcDeHz+VvoCWGnPiHydE7X3ywo9XFxrAFC5+GjFpTi/SXx1JwHLqQCd2M4K1nzoLf2ys4uR2XzcD4vXrZgAegHExDi5cAR2HroplkuxzRFTUOEAcvE0VE3rR9M6kRLzu3WHAabEuk2Vysp8NCxQFu7uyE7RPkY4XEBj1REdP4lgLEiQdlPrReZlHpM1rQ8QRFvnEg4rjK3nLgaOEaqWms0O+54w7SsD/vXT4y83wcjWlizQzlaaHFvnrAlaHjKPLhuh6Bdo2pxFVK7NhXEa013YWyURlROW5QVQmS4Vng5ck0mmAsf9dXIIpDtTNxNnIA65PgY2MPjJBzlTwyckAY9XVxRhgA2rrxs4m26maFIAx8iNq1DYeDvsO8xMbQHAgHrsAZItZdkLs50qe0anCwjs5gwJ71Fj1Gq4aaPeCCSZ9moegIBUgSEcIxVYpu8hfgVmvj8FgpnYPuwxMwpkh/T81NPgU1RxSS9gyHL2P/KOenW9yqMIRqSeBhrN0h5HhpoJNHYWrijKAQt7GFj2MqrK7JWulXCu4R56LMuuB0oK2OrHhyNH0yPf6IRiO9qjqf9WvYyo+n1fAB21y4lPl6G5z3r377gt35KAhEjxf2Ur3PGu4NKNDulOFYztNcqVtNtxrsNGPUalzgxAT3ds4Hn/DtorjnCSEvQaNQJyyduwvvLWRSwVMi2uIFStqWgRyglh3giHETAEB58ZQsk//bmh3kWa7RLtwsuLFgvBuGqkt9jn1sNgzDaZophtxKxjUpOE5dRw/fOhab89HB8FYhC1PLQUHWvxX/cwb/TnqSUy7NjM+0uAWFG0e2erfEEjvi8rNcMzDBIMKXzCCNwHFeVycVzpLrm4Wi8WCgqWjMk9qCNH2M9ZroQqZgFWiA+x1XUYKF5HtkLi9BrC3UiiuJ8Hi3F7O3E5erqaxBQ8XRlkntq3iovBRJ2D7l5IANc4OF4IRDy94KzVHngGycFxhWdlD0JXEVnGgJUlOA7i2EBdUfsyR+ZEFVPZJoM3afgkio6UveKbatmRSxSuBgl8NfVPNjEh7LOE9E9TK7lynCzgMRPmqOChihvSQdiglTvxYdFkskG+8qkDsT3X1mscOIl2Q25a561WRjs/uXvsYTp2tQ0SqQXSDIgpXRpDzy96akb6Gzl1cz1wx0L4yYS62MOTZxjh+YmhnhVY6RzX9kOSJiZx/g3g/FeBAW4eznGetvposI6QlqXVtd07xeC2bDWelNSnIJYgaLmEho+9cRBuJK+3g6Lt/qTi7Dy7AB3nDrarRoeYdCZXIRgdywx2+QHSGudzEleHpAwk9/HpG9dS1a/rPKT6LA2r4akfeoggnVOGnOD2W75lQHbqe7hY7irRSM0UA1mr5DFuIO2JKOJCGy878+FErM2YdMYw5qpR5FrKIUAsrmJcRv5IDBBaNNpfYRb5Cpav6ClzXpLrQADRM2PNOoAFWywM0rlVyJN81B2J8rdmcmqAW/OO/pg8FHyatmkGgqMklJ9JSfxzSncBdtmPKcRlRcIKnOWLCoYRLhjq2oEc1SeAQHa5EDbJB50LlWroHsIB7wnmcAxZQ6mudhLZRGeijpzViI6ea565HylADcjzybEwR6LE9Eh9PuoMMoikSUxhIZHQwyYE5H/qYRbMgbRUSYvd5kanBhITZwNgukZULWw1gm4eKQNkKKOXGs8XKUejCN5Nf7Kn9R2PFtqIuoxJRTBhgQY7Vivb9nGA1NFWiuJiKXICghcCcZ+W77w0o4AIcoHpCGOuoIjPE54SRhIFBH4586m2xXdjNHSRHCIrnF7Bqd38DSfjrc31OA0WHWmcuw9fkoxyPQw6R/s8kTdL1vUEcV+bo0rMpCY9qKMCK55+3k1LzfU6bZGzA6iygNXsyHB1CI8KAIDLWDGJM6zCxlHTev9yVIQEBDvjYGctDNY8CaJx0oMaGHvLW9HGxXfcr5Htu783YB3NToCFVj1MZip+jxIwz1l1JkBFFscgN4HaKisHWJmijQrwfsjdBRu6S9f5CBXpt+5OSPWtPgRnpm+3RAKd0lM4QFWMS312OpOv/EYw2BFtzejWtKfmF11lbNzcDJ0wK217mKhyzDg3CDVaPiOvTCQSyziEhzaI726kD08aiiYgGaodM62TcpYRBteHyDCzQ/mF6+OnDlJGTgpAqdzMetdDCKhN2pgOEB9bAgCF1AngECp8ex/HuyoE+W4TTGFpvEe2hLpaUeaozrysha3uZ4uBnzE54VCMMTSOBIfAITGzoAikBbBbh7RQhoB7l8HlwlGN2Q5vvALnu1aPjAMx1R0enCJ7lfuZD4qwHKrTwRZH6IF40xkuZIZQFNuPhGRjdg1elPAZDTLezSjo4Apdw3fcZR7/k95jKIgJQErcX1/IR5wMHJUOCrFQUWTRkuAPIILQCC5Rs5PH5HgzprCePEGhGGus2fJn9G7OuHcmRBS2IYv9AsXclSTixFItpoDQnd20aBNoY4AbIr8scmZWxS2OJ34HRO6N2zNBCSIrECJz9owvJOGImNmhTJKaJIPAxVhuF9mcizDfeITd4xRs8XgIz+f9l34bhXMgeAuBd1FhVltUGME4HF1Xb+qA83Afldhwma3PsGGiJCuPNpQKSq8OUnJbqJKVm0wyhWPGCBULlSIdNIMxRYC7wjHnRd++w6d6bh+TRMG2JuMesB+eN23Lk2kHKq8loSqXU8jZGSsUVnv1NZKsOCbKWVJ/UiKehmBplgtsoSO6VhAnv284m27EokSJUyfVURjwKnJO8AY4yOISagbUd3wIFvDFZ08RktQdBP3yGaqzDr3MYhzbowHgPjRlqEPGkQJYy7cReK6ZFk8bUha0C/2G7S3qKiFQ7zrIdoS2m6x/8O9nESd+qxq40NAKWQxOEdc6mSC102k4mpJcbr82XK9FrKOqg20fjzAGFWARljs/tySBCyXodJBolwr2QrtB4NwcuLCnGiTaXiCLnSRTLanLrxUZxLpM7ULHmZueiAdlZO5bBKTBbE96GqhgM58CwLRC+Qt1Fyhluy+xejM9U8uMQT/NFLnhFtK/CtLKomwOsbgTrYSq5NQTDzt3OircV21xfqmwGjRI6/I7zfK7XO0teanR4yxMF7DWTB+zoZsAU3wEiKJwoFDUJE1D9rwg4920UZMP+8dxMAPvLCK0vwIQEql2wNL4eD0FYWL/vviWj1bjVAalnGvdWuWESRpaWVLkgUsQSuVK64xgk3n9H5SBapPqAUfESHh3gMAssXUiSOE2TsAILwhneIZz35bsNbL86G4mS0ZcBAvml9jEr0e/1YiXx9QUSQGQSXyh2gnG7QwQsKreQuYkzLMVrbu+CQtCurq9+Yq/40RUErATb1FGMTNN6fEjmPEdomRYpVMj6O+R5SqBeohhGKj+RdCQtW2rmlwxbzZ01wkG9eFYpgqsejYwdD6asvtKLsnsYO9ku4UCZONJxh0JkSanoN1b9/c6p3D7n7mJVY5hB0vim5zc9cwpGjSUo90Ki1NcUe/YrrwYOeQ9p8Qk0vjoRgyDAb/xZaTXLlIQFc/uzFxafWz5BX7GHX3FCKDkV1pKpYG5/9ML/2yvc/pRK5kK+/beXLAv6G+wUPpl75Y7LOtESE7UztVw9npQQD0kKg9oG2qQ/zVRVIjd0ZtHx7/l//Klkromoer0V615VebMvZKC/gCZC7rYcGJ/hhQscNd72voiCGEdaZbLFUdUd0kWtabFdiJ4rNy9T4nnt/wuUapyPc809oCBa8+1HHfNddB3JF/GHOqCvKpVrhH/f4HnhjatCksZ/56YM2Ju+HNIGAdEnf/1YPBLMSfBByLUaS6X1KAH2bvGWxBLOF3ji803n2MHJrAq4NLvTenCpldSWjkgsspp03X9Hi0U4NNtwJ/hyVodbVwkmWgvOxClYDr2tK1C/uvvQqz6+YUitLhc+Pxv+XlYEjvlTT2KVsyEoXkqrfHLARYSP5Ru/uPkx3SvLKSFChy8LV0E3VuWJCSbETvhHSvFUe79MUvA7r3PBS3qaFKaYqPWl6GJiInzqQutRQElO1KJdBh8IfRo0aCcoP6TpSuCjxMkD47bzK70PItXBZvP/iGA37k379+rrAe2fuewHjPhIZJrm77ROeD+sU6lKh/Ql1TQCL/UMM9oJ03uic2lYnVF84tNhaLdHiCdaYedL2lW8c34YdyW3U08g9gJ7joLRhVEXVjDpgWJquuwp7/bpvq7/H7MP4wkqpVJNwHhUGZ09SnOa7MtiatgeYUQayI3atWuJ6xYwzTqp5QIG6gRVbTHbu0sYfvL6RjTDJX4ZQ4KqDU3A5qGuIinK1OJd714Szvz3C14fyTOwevy4z1MCO6ShS88zGHfvzaQIilMd4JCUxH9J4zoI7Al2wo77TZHuNtj40o7BgdVh3qJb1K5ouXE57mg0D20uF304BbumxvxtU29bcvaB1Py7iJ1yNvy6YmGfZqva94VKXaTz3caNCyy18tLd0v19D+laLFi9nLdQFPnipv6PhhNrsdjQBfWI69d/zU/PUeEYpg49RPFUWdWdoCW8ni82iIOHcJTrMTKwx96a4qSa/5i+8T4oQn+DdBkn8iTSz5HG19LtrI8Wm84ibYDOehfEFo+WNEa0DeDwryW5ZERNoGr6Fm6tBTrvdxaDLQE41j/SPyiifEYiPb1MIxuSNoAinj/2OqouDkaf+6fdro+UjX/xT6AP3gqsjrYgt4GtkRd+PrbSO+aP+7v/9kGdUhD9t1qoOSGnRPKgxKMsoZ5+SHLrMSfeKSIqX50gpmM7W0jDN6eFPjf692Ho86WUPODY/lsmld7NgJJ8bcCDuj7qtXidKR7nxe1z3FxFMV9bl13yq2SU6EudNtcXL1R4gx6XxnDv9CIF95cGvYz4tIYvDwtoxtXvKJsz++3+utiQOiq5mI5XcAKqbkvHfzDUVABDTsf3pl1mFPnfYV1GJtRnkV5woMdl6dAjnrdSFAeil/EyWONayNPEupsVtyTqm9Sv3++hfL8TfC1GNRalK8ipF57b/8Sd+/1S6FH4r2RE3V8+kHRt48QKz/grTkvS7mczMLTueOs/y3G0IadYwO17L1QmQlvWLmPxBjTylxwq+hVmM+MN/qS2UIkrqGtsxYKWLDZ64i2SkL5FL0jjApC9YLX8S0tgLt7SpshN3FskNS6IMdMkHGIgnFdGP9TIfK+adQuy009q/cRRxHL/poUczaGNhOQmtEhkrQRAkuoccsT2sSDpFaxpdE0PH/0rkLdMAYjO2hu1HqlO/fgMrLvSAk/27Wt71vTmbP354fJJdS2Dr7fqrT5vIKlpjvMeHNpQvPOC9bJlT010Nm1Moe99fj3RJqT8Y2Kvj8PusyB8EK9VcGZhsNgXYtw2+D6+F2OA7YZZqlkkvsXwI4/AgFRBPhOrQwStqboJrM2oTstLDVByF4QUmpqJ+vCx8iETlt4MdzsN6IhtbPssTIiDC6zGNVr0gs0CB4itBAFPcLt03UbxJSg5MIeayCq0W2GH+AP0Im/fDgkL2nVStqh3se/H70P+w9Kj41v6XjsabEUTOJayNL07CLqwp1W8zNcBIlxKgbFbyy2HwMPN7ggAjDgbVLzmj719U4b9nDwEjq2DCbQQfK+0eCMlMULYAYN3Y9ufxeH4c2YYNiJxdHFVTn602QEU1+MPAy4DPEagMCGui7fmptiQ2/xxicjDCTXT7VhHv+JjY/dH53Q/X/7Oyu2thRV0Nm0rJC4k1GmsY/60HGhgd1qhnRNz6h9vGJHNgnzFBkrrtCNRhzuRcKCEgv8H6xVWh1E7ZIXCds/euPUY47w/byZtMmFsCMOU+j6GNtj/dmA8rtjeAOJqCYXSgZnOlQjDCf6e8lSe6n1PPMRhSssfRhRIma02zsAKw8jOIdW5BcE2Up1fEJaSKonyYvpWLOGwsejuFJXc8jmhllNCqMUtQ42WzvAueCbV0A50z7oJO1NIuvZC4xpLCYHfH/39iEj8aK2vjtTOTdimcWfTwIevL5+b7ySDdfbgy35Ofg9Ua7NuU5lAfV9+LrcVXwOl0ms2L85wEJ8u53TIJr9Xwhd/54rxfRXsPMd3GdR5vYv9o7Qt3wGui7bUAGOgbwYETPMwQNDgwPXP/LG2imN8cT6dL7U9kFs1bQs8027XX+ZFTLZfMCd+/76gTn/ZW+ICWmc4B+5r1eSqpcPGVHZbxc2uSyYHLZLq9SOHDXO/dM6ECeDQlMJ4DaLyfQpqZSkIsmZMUlroMiR6r2nobqZxPhLB7cV/w4LM/qZIzLRcUQucFShf8eFbLJL3qDjpqjeM0HeMI5KmL6j6vJ1OaR6z2ja4RlG2NjRDOERiimvFxHvKGHHBHX/tNXctY8dUcDIYI7IPgi/GkiFellZQC92JwaHrrjAs8ENE2mXk7tdEr+KLVc9rbytgGGaTIdXVtb58Li5xdt48WB/gn82LPG9HeeL8YEvGdSPec3u3DKU2uKixbn/aVxE/OgJBxgCeXIjfpyliGPogwhIrpjkqEpk+5Sr+1Oe8NHOIJreH2g6bWM9YMuqhDdX3p+F758wBlHs7nFW3YrgJdGJ7voll0GDTOIGsqPRz2oxyvjJqD+Lpa4J2E7AnryG16R54xudPJFZ2Q7cxwmNNaz87fwqn4QIGxBqwX27gmWxwM0u48GSQOA+upysIZmx5drkW4coeoG3CY+gzK/foFvoaRmJVMxCWLnCQd2yS2kliHpVh7DWTkQLJ5TzMfYS6lzm+EP914Mh6DdmnMthl93BseLkmvq4dzLRX93fHNvmYmUcG7Wi1ykOZSDiSSxRbFoGrXtf/Glp1XudyTTtHNr+5XkCjT6Baeb+4CE7rGnZqmYCew9Z9ysA2BzyQ6/upucpGbhM6xBkE+aRAV9sKIiQzSYecVK5VZi8tobbyFVqoYcwDaSnnvM8v6Yn4Ed0d9WMGppCvuHjbqRKW8GHV4w/oWk4F8LaWNtP7ATVDB7hEYkDdNEpLscHa/riGdlTeC9C5CjZqTucdtbo2TiWEjOuJyDFHKMsV+X39/EeaWlU0Yl8XssWHoVl3mHE7BWlTVfRojx0WjfMra9QCinIBavJw17QDFb4QwdKBb8cEiUPlpu1irqErg3Q29hHeLLVDjCod4cJDLbfoTRH2PvCGnIPeOomUiKL1YKM1Saft/MU4VH6I0Rk4ufVV0AP/7XcdtIPCYnnrGMeczpiIu4ISNXRXfR9MSIj6ut64JWflXZcHoiXnIopd/94+dijQhCggJ4pjMZW0anS1cC3mYgrnTD7mIAmVu8x3De7qM66gw6S8j4BEbndE3KpPqpsrDHl4dlDlYuBalyw/yNrBnsarqBOPncpd2cqtVIIDdUaaR+5auyJ4eeW1ggALDotMtmOjHaF0VDML1aIJXs6Cdhon6vdTmrWWEFleDe9UuDS5e7+zEoFsentIJN/1zI0MJl2LlesehnmsAi7t6FhGMZE6B3XRMSseCwpYaOf16jUZKU3wjf8dhMricraoO4HtGMskZmjRI6qyMwuV12WUqlB7JjAn7OBMqA5pFm9r5+urqdUl6m6xapXOS5gHbNd+G+RG1cuxBI9ZKx5E9HY3Ijks64zYXC2u7E1e4Vr4QO4tp+8XelpGgmZeobMHwlUYDCujs+gF7xXVZqStdxgfukJs9ctUdCWBIyzb1cDXlOW+w+jtSKCoGo+p3K7Ucvbu4eyjO1qnCQ+TqMQS5urH41VLsGKhhUyMqacAfZtesFtOscWVlUTHbmRlwwwZNJKrOHRFiqLMITSwQTCnZqZQM6hZUVoUeWwnmQpGV9iuhud1eeR3u3+UEdcuDr38JsZuhTYvpzFUjBm6pIUAcQvqMJmTdUFcH5pzPArLQi2BmcqNXJZCyRW/Jj4J6ozzkiHY7kqykpsDlmLtpTIjm0o5Xs7r3IFfAmNa/5A0axc9cQHlxj1qzv4NYNaNwYi8+aUswA/HLXFkIY+u0GutDhDuWHBlLop+NstfzQMDyWqFNbRIxMurxxkVZyY3gSbEl2j7g2+N8PbIzoQ60ioPjzr0eHvcBgbABmoshyKz2oawggJEpWHYhVFYpNbKS4lho3XJKLJ1arDXsMk9FFIvVgjJk+Niw0HCJqaKW/zorT6MoU/H1Q27UXII7YBfX5vuLaoahNovISWBlf0oRctFXCUc0PRIfLoZdiXRfJzuvN20X6T/q/3oh+0TCfcj1ENLfNYMGUl355uY2frzu95jOQ21J6xa7d3ToT/ejjhND0JcxBk9x49OqL/63h1360pt/1bxfrc2T4pvydqfk7tUkodpbdSCQDdVo+t8+eJKeJtZUQeILvOJS4lHXQs710tQcQ5IfOroxKxSjCgLa9cWy/fRlqIjBJLOoYIRhTXiThOvqx2pgUCevsqjRXvzrG+VoEe3EIbilAjY/oOCSgj73/fQ1YoR866SICdI+PeTBag7nLCIECd9XQLtlLYCSZ3t6OQ75ByOudwPEEex2M5082DR3w3FC2wunQQAyrkOSerD3ky2sHZ+oZSUkIZ49zEunCfGluTvogenAm2qznqkwHFldlonHAr16fpAkh4r6JY4T7NxNt14oG8MdNqHGGBIr4GMyrU7V+E4K5bTMjbsWevC6TnBeHi17RzgTspButr/6Ug5+ZuwndJR5/XHfMC9rFLKD4cTlHyxHmf798PIaAm9NCcdzyBaq8s1uazHHnU7w8ReOQU7C+dO6086iRmxPEaX+ERmTjXVGV7929Z34c4/mxvle104m9tGNB9B/ufSe0YxYNMxBC5A7UegNulr5X6aHGp3oE4VcCJNZmOz4aahelzjDmlOIJfBYZWW9swY5cIw6tNxLHRYVwIDuxliB+iQOIHo01r1VDV28JqZsO5mKCQHuKHook4scprM1qki9GdT9xa+bIjeLR/GSfHGG5aIbgaHzd1bLGjz9OuJBD4owCLO4EvbaURsb/VrT5bG59aZDHB0zNH2LPJOQdc3zT2AK7ykHiY7SjvR01WQDg6HtrPnpq+JPuvZ5Xg27V2kxGi7E6rpWx3H5CdkA0WudhJ7ouLSF71PnyhrmvSBJ1GBdOcLIOpWl03UCzrwLt5vAAYcvHrdntQRYbbacLBG6RCQNduYKD7fDUjM64haG+wKByMzcYqkEqhmRHzwCFoR77JMA8SPFA6x3GPB0t0XAtPVqi5ayEF1EDa3cs5RGbLNnIQQlX/GidhDT0dJC/rqZrCjoeuqlTpw9fQs2mPHWhir2NhBMPI4ZVJhnX2wY7CT4GxTXm2k9DgTkiTJ4F6MHBShdWc2STCfCYUZpJQ033OCQuTxod71tG5pOsVD3p8bQFuHKC16zZvWZ04sbvYQOfSH3QELs66hlqlbNYpwLPIFnriCHrOvuIRZqYXPbmpGAuHWvh93r2X1cNS9V6ipPjiJ/+FedZzP+4KtqveiVRnXfhcD26vPp/qSyis2b+duWl+kKTmIVIzrxt3PDrt8CqBYzQE1nquB4mTkt664G82RFpLZaA49xltPqpfaz+rVcDJNMiGmjuAdDWuEsmhaZYWtKtM8KEGqSCDfmFBWWHgGRmghrzId/MKgLJAFJcX1eI3MBeoES1yvoDRSdibUuNIqHOcU06AkKEaOE43F3zAOtijFOkeLZOFpnTY3MCAEQiwoa2f3GghYiw5ZhdSclIsg6qPB4XoqAKfQbxuQi4EA4O3wBCHX3m+wgZAeKzim0QqTJ9qTBZYbtYd3vxCPvPRaE96QvMMJCWRbHbMZV4Zk+Oh4KOgtVVFvlQYI4nClKUpruOROSQnMEsncl9Y5UKO0rJd1hDddNUdKAkxdUobglOr9a1H0b6bieD3iCa8WRhivBnPbZMIY3kWGW2+nNd3hTFC547BKrtqhhq6OFgK4ezCcTv2EVg0LO1ykURqBNDGgai3uFYkqsdgDwpBLjjrT2xoZ2l0jG26hP1RAZviGHltW4V3VmSj8940stFADMhXRWwEZU/FmfplrnCdVwAeE3Oo2h+8SBvNDPNyWY3D3AOw6glGXBgXN44jYA29XLBNwDoM/3NCrb0caBaY+HZu1A+F/8qgN9Z5rxA1B0GcuBsNIL+wkrA2JIXYSitWpCOtutmxgubEyh9D18roMVBOezaNK85CY8FVhk8KtB7pWy2UhfkVCGp41jzXXuf86LeW2qu4GeT0cCDaNrJqX7T8oKWLOWNwVtLZmCAZN1mNC1Os9DGKMkmfC2vXn2lB16FC2ej2RHJLvfXNmzomqsQNDnIeQVpDXL5oTFMmwnTEv/LS7GcJ/BoKlCxi2zQGIGRZOHaYVbBOw1SJLhf15TSAIfsrAcUjA51aEcUpF3m0UkfoQqFgau5y5VhIOc13BHJ5znb0Gd1OrK5iPfOMaZpENNuyWsCbq6z7HS1q6dW7hv6biH+9PSMQp3UO5hBTfggTCT9MdYXkhUdHXxkB/El9NEtglQrm4QkzT72Q5TpYbOjm0XZunnddewIXm50LLLsgy5+fRfnrjSv8HuxLMUdAOpbP+C6rGWYz5xjdTMiBoLMQcIw0n8GPiAD5ZuvDncV9S6lHnbkcGjEJNRiW2odbQl08rHClkhcpFtHkhQ41SRT3yjjYKXGbWpnlFGkKQBkwLI/erWUPQ62W01VyssLAIL5/R7alOa+bDFH5EeRrAPLH5M1K+ppbg70im0zU7nZ2y5MqsbRyc1Z6UmuGyUt4kFHNv95lhmXxLOhXXNqzA8auDN5VX5dCU+LdnNm1FA+vUGE6qsDttLXQWhOGiiTFMHFuhwdiUt+AHd4+uV/EbdXk28R41vRI1J6y/LuckN7lKFFvyF6VBv8xYYLqGgXpIPxLDYHNxQhoF5Hhi5+opAlPnWsRYSu9tzifFAYDuRtgJZzg1LE89rsagxazu3kagHk0AU9nomAZmdtVWHR1d8eA+Ec2bWX43MivdbO9mMWH1qnfX+jSf/fQEKBOn4x4hmdC+5xeAHtwWR3WCom7QOplRtXspb8OAxiXo+Z1KnKR0/r3lGMcNwTeY8lNreTITsX+zDVUSqAh7Z9k+QbDoc6EXDrgauOmGYjfwQKadG5VBFMhvxPEyKlq0qET4tv6zetXnovqEKkoEl8hnRY9WMPxICvpJDdz0SE/JWA9JZhUrMffFYDGS9vh9UaRSLP5FMf0qeNWYaPwotDUyLIJol5OYXgGqlczSHMvTB7Cejn/PTRLUktAVCMSVb+e0L4CDj5K+w/zFwe6NIM/9iMT5Y+vUsc8mm8Dk4+6KNNqIYR0NwuVIOa/hB++O7olhkVtAwt7+xeKCS0ptzoGdvrPfnv1g+1NeksyD3xN6KLPvV9ZOQVxEfz/rf0SNVdGl/9OTFCM/7dXVO30v3943T3TTq7PX5smizy6NV6FKQA1eTcXA7edQxD23qFlIshzZpP7dVyQ3nyeWiJwmn8Cn3wAXAPI8YbeaKVUKvuLRohrOCIqOWsNnSDfbVjmszlpXcbGfF1aL66LWSJwud8ZYwc3ZIj/zzgTOjUBc+NGpEOPBPcw3VIjVleDeCll9P1W2wYXPN124GV4rOteAi146WLoQcgEwQR0tAweV7GB1E0GWqDljE6lKegn6Q6UCXLDWqxZmImV07a5/jvB6Txe3F4saWkWMT6X47Mmx/9+oagH/1n7dqQC5hapytwwupgYfwyhK710oApUiTLy/WXiAJG7vyoySS7tMgqp8fuctPcYGF2OBglDRbn43zo1bNAVo7IfyXUR9EgUotGB/sEbrvfWX4cST0+pFVQ58yUit2FgHDYyrxdVtouYgfq7GD4IZfIsxQt8qXycOC/qYlhuhHM8Poqb2of1zyJBs2tp7tUcFzqU4Iz1iA7A/Y20+EB0eQ7aE4yC/two7uAtePx08KqDivnZfZUZWQnGzt7y8wjUxAWea7oBBkzW8zxm7vfLtb8BkhWa1+HCjA8QL8hna6LupXuHDmwA7YXLHpmZDC4WNKBT7R8+BnfPerNRKoJ/aOODgmYXmke+iWPWCjxZkriYQSBnWVtzllQ5uC71u49xWKD5wUXZrXsBHY8BGhRss9/bZUHGE726bkkQRNDJx1YVCC6uyiNCSe5rBOvTTvLVSiwiYSSA1rpPfY/AO4NkQvEIh7P1vC529abQx4TVosG8W2nj53uQx2bOH0ETWi4NKbopGlmWxXzMphpd3mXJOocMyvCDXSdsOBDCxLjeCGgr2SXZCirCEQyi7CZkuMBIIZAVo66f/ge0jcE5tCgxwtxIwf+VCAQopH/ImhrKNfBIONtJLAZZcPKksTRBIRoObthRpDjnBxhlL9qcImiCMNTBSrIAYT/Hqi8Gr1wqeq+l7+vxgIZCEADHPJ4qBW14DTESKxBWJKVshcc1xlBJmEV5fNtLfxY7yXV305IPTArRTOLCGDjIoGxEyCaDcZsEvfjBPPh5/GJtNefR49PDjyXRURyGllDDAZIxBksjZso0c8NW8goYrjgmBqBUMMSiLCJMlblnglUh38ur02KOb1/4GYeYKVFiXADaPwsFnpJ1Xro7pbOyGGgCIX4ECRx4qdJRBSBLmoRmGjCswmJjKFFXduWf7JJTvZaSyCC89pwdB1QpUFAAWPjN86+Irl5QW6Nu/IakH/w2Bu8n5dDMSENEmJTNIrwHSEC+FOKrpdPH0Ks1I8oot0NkkVe7ktJhXMIhpEJGOerXZZKcOQ1SIfKQYIohK3nw9muodp7A3MLnGkfp9lmkZwIBEzTn/7FMU/FoIpdZ3mBnnHpoj9deuLOAi+zstpsFpbdV7f4auQvnpmtB7yVJi44A2Hs6m0UUqRhYTWgcciQLrkoFWW7Sajz2bAUhL3WdNxy2yyGldRUAZrmZ8YRgBJgoIJGs8TXpm20xT00ZClArN7MFgbBDTIbM0hki2uGghGAnHk0T9VtbF7AM2oFWVBkv+CdtgnVgQHsTFfV216ChmABJTFVzC55pgF4AC6KamHCJQoAhxVTXA6TlSCEqJ4dtqZYF1jVMpSveQ/Kw7zT3iCr3rDujBSUMP2ZvjG1ckAf0Dro7WIPtfWzcpSK2e2AiRW4qHoUQDSD6bgYMeCiQTCpYGcCyab3znFQ97xJpDCaTvRvPqlZOy2PpxB+L1vcuC9xcmhDGFOU8/xvhiRyTeRDVGJC8ssx9a73YxK+ZU6Ltha75lY9qwpbbA02rQqQij536gUMmWg6cQWDFragVUAExQdRvfCEJRy06Gk6O7ilxkykLgmuDZmBH/M6vxQ6nZK2zwzy1yyaDEVBRKolrDgXXu7xwY8dfN20i06Q2mjH10TCOXo55RHCwXgxmNDOMYqcIjNwgvctOrza02pXR+KCZD9g/Hwp58J4hTB+7XoxLw5YcE8pTKHKgejD+Pqup8YFCDNqSpuclOnWL8ye6sLswjKANZfRgN6yUIqOo2SjnEovNhjDf1QqIeZhsJnpSiKB9L7LsPc3QznJuN1qi84SzJtPKZxD48rO9rplibR+flamP2jB3GY5hIlTBsa7D2v4wiz8iuJihMe294xwTFg88qjPSAUyaMoQwi/jYrVhmED6EDcUXeeqQ+5vPO3EzrSGyKWHYT3yMFxo66TIyZBlZOD6TI7RWO92KqLKaoNWKtJPrXGdZVK0Kx96zBwhxtzZKgQGAI30JhLWXZkLPUzLpE34NC91zbdoClUGvNt2GHKKQ3AFyNBekrc3xphPZHaYnvAJoQs1lAACib6DvDNIMjBSvENNJ1t6iRmq1EVUyYOgaNhHSWwTlyHO2GddqocBtiw6nms0fl8qgRZdKe1pHbuxOhJMMavxGxOdN89EkqW54RPrhOdrdH4nFNjj4KXUOQnQnDuOk+/4OZw5Sg8bCCRHJDQm9R44dziKjhVSlXgxwK8gk/9vTnt0SR57y7kCStEPawBFS1U2z8KJjq2YTIG7F4kliOn1t0fSSt5dP4Z7snVm0pTGAyTusZry2EMSbXkuWqSgm62e+WP13zBuMjp2VUrGqTSkzULEHJirwHtKb24oGzXPOktN0lQY+Lg59tbs2+F26Jw/2WFplLSVoK2sreSaJNiAaeIBwItnHhMLmw9tvHflRn6b7zpF5Z3cUd5mi3nzzWbJ/mPzF/OQTDrCGA/L4d59CrIYx7HGu9psqRAOzwViIkUDvYfFFFgfTuxroa6ssIecdNlbzi3I8UfmWQQ/Iif7LSWDISAU58apzCNuP4dHZCfgyyyR1Rnx2AIMMl3vs6HBY5XZZPaCjYZBwr47aiI03DWftNs4853GsFiF4Pe0ha/h9YVGBeky9GM6/1UIr/SNWN305T7Vtb2fclF9iBVQ75z/I72Y7iIlGU/LaoV8KckQd+5o+mp4aZ4V3w6CctlMcHGDHg4rzdhsp94D90PJSj5GMhdKAJbFukVIa5X6hcuCcF0Dg6Fhk5XJu5BlmGtbgtjMU53WQsQAhMJgxjEdCOS7vr6Bbr5BD7AVthE5FyMdadb5vSoTp73RAzPrTTUQ136fVUsc+eFy+NsXfRci3tdAU7AqdhLgW0ZKXufewe+d3ctBX3nRkSV5w4Xn9rShKUqIPZxsNxAAYe5hwOniyAcEi4cqIWb09pdymun4Q6Ez+OiBnzKqOR123tnkzECOdirToXPEsfXRKrjWZDX3pHy4+p18oFiJRWY4DcEERTVlQb7pHcONaL+laz9QIfkZC1fE6mTfs8zq7IMoHww4ZVI5A2Kl9pGzsh9o/igSLbYdL93hehAtTAaNlfIEC6p7PFNdFzJ4iEq1kWwoQ3SBOYXOuOntOnEz3YYym4HkMCgpprLi0WJQAGpBwRd/ZOdPiGrx/cAMfI66Q8hUcmxmId8xsGkOut4Hl83TmE/JbXyOVWzt12sLZsxO29htCXgYZePDejIV6PB1j28cbiC22CBX+o4xgkSf+ozpiBhGzSgvB+wRdFErkRsSRWGNBg5hlKoNOYEbqpFltz7XcuhkmxEUZQnSQpnsBd7HGN0E7BWuKnWAObaAgkvJ19uJD77hc0NA9CnGSH4LkSdKz1HQ54nou4dSzQLqYMixj7ugY4EZeSHkOJ0+c2VbPd7GLwnOUKl9kytny01RFQySQY5bqMfeOVueMwTT2llN+uxnQYo0S7AV8Rekp5KonRzGR4bJjcMhHP1YKCQyBjGhG0nTbNQDDXLDAk30uUjPvwlY2+LqArCbEZHPIQa36dKZSk0JDUkca/8jXzm6vyiHjBBurFEo0opLo3hjWK06Tftr6oagpyFvsKZAUwsbAg6qOQdH9aDr18/gL60XLRCzUgAw8ZKLPOk648xpHWFgSa/TxtRkVpRXLjZCqCHFT3vMIOmRAimNeBuxhwX4xM6qp9aK+Mn5pAhgk3mleohATy2Y2zlz+uptmFafn9lH9YfCMwt3qoQS10ZVbvk782d4m1KEYc9/VJn9dXgziy3Nkv3bH+hfTJbKRHx35djSTpefozRG+7J1s9vdp/38rN4cOSK4R4MrH+s6SNlpdVUWdLLrDaXxtk+kiHVkzOyBBiUJowwrL5pDSUUhjgVkEdMAlETaTuOLIYOt/V7ds0NaBYhVEfP9E2d8/6X3gKwDZcjXyB3Yc3BA6fkKS4pI++L5oxJmSxMP5pdI0nVcb/uky8MfOryExuRhRrHFn8uJUsKO8wmGdHgIGp9N9HO3pcHGmXkaZn4KRkbUYrXlAxe/wmNkYUlVmlKM66DAs3UCPNjFUEUd1Xijuio6e0+0SmgOZBtNx4JAWN3IUWAesklPc83sD2WLw5TS7kx0DiqvAyfIOMLK6d6jCM/yshLtlflwq4/9SHLD8Ss0KpWNuUrrDjdBEBWrTOKUa6Uk7u+7YePgfaDTYddMswNeQL2qXRvd3A5lC0q8ITpVgjjW+9rDPCtGP3/fnxvXiXRHT+psWmbrdqI50aEYmXEfcPk0w9sEvDoDK+qdH9++S96mk5lGGvL++rCTZGYK4E59ZwWw8PuohB3j4ynZZXdCiBt0tAI+nKu9jivLh4dGhb7wep8yR4MflaERZqfyULOW15hpLZOlW4DPRgrsqG+eF0HQ2KbWSB5KiI5WbDNEr0xjPmFvWKiE2YlIhbxrqTmJtuSXChN6XnJFqJK2wOmG60ENbnr57LYB3RGSp5mgr9pq1IF0IxjzH9eYt+HRL13IFRVWxuL02mGySy8I3gTNOpdJLR4/x0IvCAXXQzYCVcGkgwaDqDAr3uhOjZbG34Ee+XNC3noIo5EhtoTfDM7+ZHwOr6yqDSCgrgnME1dMwrl1pLL8gPRWV3iYTTxvvUEhvoV7mpJLMzxl8z39IGfzR8B8XqkpAEkUD8BGaKYLuGV3isAiUqoGGPTc3yOpr+OEAWpRViWANa8P+izJapMGrB4kH81fT9bOouDUFx2fjZSODOEa8GeGhYMa8cIptBXBhJawfaZJrOgO3hUuhVYekMKEYPhF8/QGOcENBl96sA73cevoyTPJH2qFmCDXYJjctK+WBoLvScKTVykD+n4u0mJ2H+B7Cg8py736cpAtws6IjvUUK8Y6tIn2OxQ3IM9WQ6yzUt6xPeFMOblnrgBNqgFpAZMA9jWgmXeohtCj3E4V7gI9F5FSs/Y4em+chCFlV13fAXc8y50uoaNfgKH7OTnv8yYGY1PpEpVm3QeoeTiVFtM5moyf7wYtFFPDlrHLbiIh7X2I1PN2XBweHRj1w4/CxJ1EdA3I1gof5nRRZIhxuj7ZEyCM+w3+iNt1xbqfaMn6cBb9FXLNYLjEOKVkbEwA1C7CF6Yvk7EpX+pJs2Zpohmzo/jE2qT1v0KKrXH3s4XaT1TtCpjDuFAcejtaxiNXXkSDQ5Zp4y2qmGY9a7uGYTUzggUTeaUpomuaM1LvMikBrQSEAwGLFreK8yUUUz1T8o26VDFN0ItN+zZUFJ9wVFVhdt9AgGG4QO+mVHxLfUH72izVpOf+02wdSQGB7MzVGdh+UC+zw0Ux/axx2BlgyKzjvfeCO1ny8kdEDr+m/mFG9NvPagouWLr2Y3A9TiozJvaXcdV8QOxm73kWayLdOCDIhXpxR3Xy/zaDZW5TmPcTpV9cL5NeTFficiaNdcwhwtbd+ANFhV5Lku0kwJx+WKexiF3IITMFunNZiD38aC7HNNZiSmn8qsTdCUAtacdSncsy305/uHFOvVyYvbnPs9WfjEtiJZMFwAodMcqZwuhEcbrLDpx2T98l7Xn/KOuu0pGVO9YpJOOD7sAju4bZiw5kWJX8chwVJlgeujcXT12vfjNlIW15/YmdzeaUto7XYdVfI98mFak1jCJHGYzr4aRKyHat8KQCb1NNv+ewwJNdjMDtAaWRp5ho02huUY/DEq/rD4Pdz06BhFhBIqKOsQRGP56xTCjfm7vJyd1aA8X5KzeVyY65RJdQQ4GKjYUA92xPs+rB42iAAg6bPLBV2s44QtpTYXsNg0OU6BUDSXEe0yk5T7hPTC4ZbCQYeRfW68v4OjRATAg0CZ8NgGCeKwZUO3aWfe6qxmmULGy3XEaTrz4aefi+11+GRi6PwEn770lK6WO0JhCD1CIFtRayvC208MyXk3dTf6ChnKUw7/ywjOaaTA3E4WyLeiHp/6+quKNvfi28gGJZiLY3OaJA6JBINSZRSHbysO8OMOOdLTgosVR0xWNbdUDUdp6HZeL+RfXcGsOVkxNFFXowQXO75JW/MJO5gGd8/7JihR5LgRjH+wtg4ijdh0jdORm45kelxJotqRQRv61019R/IaO7amSqcefFKt7DpcTEEnBtDUtrwBqqeKVAoF8nfcAcqi6nphDTg3j4FX8n5zVdpIdyF6DWjEHcT1NSsJze1LXUp4cJ8bqLsjEjn/JDmiQMoSpUIweuX9PPjiaHF97F2WDkXknRXaG+OuSH+TgEX02HH1Gn290XtyjpBNwOjYUWN1Hzun8F2IIIGo+D0Yc/aF356dkwP8m8RLcY1JzL49We+/wEzm+u2o+7L99jyyDN+gG/Nvw0963FGfrGWgK3E7jrjb/rXQpQndiWBWb/czMxEzneDmC0yNDfdC9GO6/wGrjQ1eKP3KWz7Pj/ki7/PP+VXu7bYO+WNe8l95zV9z9W344lfIdfkuxE3eB+/v8w3+SQJYRrnZfyLFehwJSvQCy5644uCCbwzZqkRgOwre2dU0uCOwUlxEqNEkb5ey/FafiH0pWh95S9Tup075XH1rM8RhRg+VNn+FjN0qhj/YcvwiCbebgmfMhSYvx2UMWYox+614EJRZi+1UMaljsxrBjAFe/EowWtVTYzUnS2FSqfx9wlRK+rts2JROvKr1wkVvW1Vc5l34vgWYphtiZMTa61Txha5aoaCVPdqjhPsFURv8cg0KrBMTWj0s4x9ArljnQoJam2o37ilZt3iYLWOcfPQo5paoi4Rhkyu3vXfCDlMiAc2u5E4AL7HCGqbUb8c+wBxtHENlmWRcdjJV4OeL1jh5KNwfJ+v1NfR4lToW9n6mKL5mifNhqX5GcpPQPW7KQoPHrxn0OArwHYALduBAWTt/KcxqkEl7D4IafjYU364hopEFI2+qVCU2iGPk1dIYuNtUCJ2A12TlcWoHNinFOIvELV5Kq7IUL6XnyeamdE1ThC+gXDcUnvY0obR9eFV2SbgT7Dycl6kodeE1jSjlqOFuJQ33h6G9YBkFtb54NJ2W9GOYnjK+hIx0URWWfJHz94f0AKU2km0kRZBi4VwkWKPA/HrhY0cXvDVPyQSh2tRUSny5hrgxUmBasAgaHtbdgOYGyTOm08WZY1IcL8Qb5W2ygwvhNx0NdJwG+K3FVYxHUHSOyMOR8p9HuL/xAYEmo4W7okmW89yvHWJga2LOsBDZg0xBeaO4mrMlf+33C8n32gBqO95F5bj2YnJObeIsU76VA8i9HUZ1yVpWsXwIXY3ErR/x9ydsxq13l1pHKcJPmbOF94vZdziCnWYuIpblx8SvQsH9COA6ddAU3qTwzopJsjFTvpUj6UjRJ8OHe8ihhPPma52L6ULjx1tTaI9djzfNwZM3g/IW4vBGUG4j1C3pOiYlvdnptXoDYIYIicdI0dxNbGlux0T8tt5woPknskp/gg2r/YhlCU5vZfWacYXveE8RE1THGhpFbz1sK1v+rjB4uIFV0Awx2jEb8xrYo3eTAEWb/duzX7/vJ9oXjuM73+XlnCLTLfSD79oZJJ4FGU6U8ibJe7jbs8VwQ7VqXsam6bFO+E+8jcYrM06I+diR1i+xDW+wsmPFW+FAD6r/1vpefsbZHEFeqavi3MClk5TM9gI4mnMR3q/S46ZvcStHmlVjXjOupGCSGw9Ma4gi+xpwhrd86F77VaNHAKBKBF/1NROyo0lTl8lxry7f+MHf55VnZBJFrTVEJfwxcBMKRtF4AYqXc9rH+yFtJRg6xp5lgYx3mPnQDgp6QDsIUexARDoUYpoPskbftrS3YC9KzbBgJOrBFdeBu8IpjsAmr2PaqszmBahkYlLArKqNoFezELokqQQqijZ+WhpqTYkwVjWDwG0zMQ6FaKnH3AyaK9D74oby5hmac7amk0RK5FRvA1sSOd1PZFCz2FltbzpOTD7JMctMqi8dVmazqd/G6BANDK/e6mO6i72MQHH7B4qtIhsm/iZ65v0glwklSLh/SD1LVZmQkVYJlz2U667AOsJAE1XnLSEzsxjDgNT6QpmUwtbJ9EXBMruc7Le9CzVlYKiDAqotuBV03Ugko1g2w0N6nI4opK6fsRL4oDnGSD09IrKYSB4hBcyalktjt21bYfLUDVm71AO146LLYpWEVUOQDXib7ftI1/JDyg2D3LVSGksvYb41qvEmL1pH3vxqnKR+R580QGFHYWzQHMxedzg8zEHNXLoKYhO3wxXDUIaxtSKUpa2iKTRhwj01RH2CBslxp3GsUTeVhH07v+ose4G61OU1xfjnSQFFcR4WYkYUArgSKbfNFOkKn6nsz7oWduhT7Bk4tplLlEhvKUYOlfK48uax5XrIi4VUeHgQuWC23LmvpGo3oolb58zE4ta/LJvflNLHgjG16xWJ8x2hnEt9ycmxGnVoi/C+8YGHA6UBkr/NI3LT21UWwxfZKBhAYK6acD0LtUZ8GF7MuyA0BAP25r/vu6Glrf3F32ctXDE8IYvn9F15TwCSHeaRKI1OQ0SvXhEl3k6llj/IZ81hf/aD7lhxWW107bylYqRD117/ILaAE03JRBnmNUjtbDLbXSXyca6uR+07yA9cn7jQamnX6EBWuByUEx3IVm2f2vHyFgVOHWJXBCBspm41Gu5O367Iu/6iPtqh4f5OygwJaZS3+Y2/lG6P6246VlLV1fdC1aScU3yJcEgc2FbY1BqgqvP8kDIxvaO4tKFKiBysyJL4YVrVexnhWimYpmnKGG1ufQQpDuyT4rFXzQ1lKD03HFoe+BqJzrVsgLV8I2W96wueR9oVvGxMzqCV14Dnq7uJ4Qodb7KRrYIUztppBj8b6dDgaL1eP/YgxzzIqiWDycgou+vHjIOpCQlqTpiMebwx5Ui5QKQEhU2v+QksAbK2/H66D7n7UlLap29KudSVcqkrtaVRqS2NSqWUS6WUS11pXOpK41JfmpT60sTtfg78xuAd20f/QXdPMGMPRIxW5NmwYbd+drJZID0Jzi23S4bwr9rDJZ3KBZadczKJvgs8jf+hU+D+YiEYcmf7Bc9CN9preC+qBS7YmV//xiSXdLqIZqLPp030c2biIx033Jmm55Pt+ovf1Ofr0HyfEzPocLDXoO8DHmQMxTkYe6InTxrxzs4Ysr2F92WVkUeMX/j3LWHqkWKvVwwhvQvC9wATlcQg72OeoyhdPV1mRb7o0tnwqKelvSPLDPtwSyB8GOaqwQZyoUfYoLa0jYI2oZzFVd1RhAJ5UywUchXelk68/cHzEqD4wAdUwUlpSQ2d2HcEaS0j6ppN49zh9GPr973AWk6b2TKilt9YchTIBLRPBCMp8la5oIELdv9Md+8X4lX6IAG6CLelrsd296eXcVLu6YqoRpQvbghqS862e7soErYfjAZGJvlbidyq839jltnfWDX0GtD5I59cBuRFEJBPwn8OgwZwPba7P72Upuwxhyyasc25fIe9sFfBy4htcKihSAtBWV+L0qDFQqAHtN5lfjM2h3lcz3GHnHToBYFIUn3Bxl+INmmVTtYGpz+dD9/mPQCi8JOnVeMnxtL3ycIp1fUT51MaKDj6jmDTM4MQCnmI1L/LU8bUqQbKoMJQFdRmzIBdqj+7dJDB97k7dUDP+JqgnBO12R/iCu1QVJyGtd/ez4c0UXj8vH94qDjTE0XbLsjQ1hWznNdQjLmljaRrDNir5cQ43VwjG9I+nICbrqp0z0ngCgs3EAHY+LU9qd+EVRurg7BrIbsTWXxXEtPpAuAO8tDAPQ3yPNDWvsEFZgW1mPyqveFBOxwfrr+Ml+dCAQUjnZBSL/FHvaOlXlNH8Hlic92eOp51K0Rkuf6wIas+NcEDqddGf5cxYq41GiwAaTezpgfL3zJDVzlWdETYI5GMGJ+3jXc4V3CD9srx7V3vAWOZYBOgQ5e2YfsunDHcnhjc3aGoHsYmmEZh5dy0AZd9DXC3fLr/xyi9ulDdPIpFLlELO8xqEPrsb2k+ykg1mUeJFZ4Hdl4l0Hmv03b/4PoaJbrI1hB9GWkMTYlupatXwY8OEi0CNHEEVDZOCPt6KnN5pjQlwYX09qVJ+ChWg+NNhfFk2F8mlSenhDfQyaX6Zpsik47YUXphB6HAubiVaPWkOp3/MequolgxJklbh9rrq2maqENJsCQVO2ZOT8BIF8KWDQBDAvhCeapjyY8zO8LXl3OKxxawXJl/EWUq1ZrRw53Bybk1pxPqlFtYk4xgB6dUwLajQNCnoUvlrUYj57XV7ApqH7oXjGeZ6t594EVlaVliyQtAUkBEvp0Jqy2bMT9WUWTwZ0sRTMXYfmPN1Ghsmm4lL3PBPSQINT1t8Pt9dJU6ED8+DpLFnQseCUqzeL83wX1aup0Glf7qiJXkKa0y5WJh2Jn5vpkjeM1cwBcwVui235+SP6pbNA/3Qeiytun3d4tVl+lGzpT/hnBnKx9lbgsdP9i4/NASZvZED+DqjKeLP9z+Mf3kdijZEznRtzurPNL2QX/Hz4ypitodSfchEYEV1wnWkdHHKdDfuoQA3dzxfEgk/vMHC7XYmAXXzuPlDNLjNV40j8t0ahhTqsViC6uC0XEzrGz16eLGsf23s3EOvhfTpmHvdBn8bPufN/MaL9o1JSIvzoG8FsRLjfPkhbZ69bIYZ9gFs1dMC6TF+o4paxF/TS3SzMKPSUJj4L2Ytq/FtHUAdWmRY9xzpveq8GR0j3X9x1QkE8PLpvtGfrVomjbV9Mc2eNJvwSzeJnuyMj2mIqGdwYY+ZXGUDh818A4k0HcQvoIuha4JSicJVTCGqpbQYZLFa9+5Fjx2jaG4Wr0mjcHpvPITgQKEeSYsjJeCPRa2EMTmTWLhLYqM2xhFqg9xJ7KXi+KHxAU8iJ23E76QhPcm8Sf8A/o00jhZVoSDOFvWDWh80aba827KJmL1mzUhAJC5RruVyeRd0bybU3I9/SQcjxbvBBx4wXO3a1dC4py/8qRAheJ2vIjf+f95fAiv+fR1vZdXxVjNnd5LuRcXfyeDaokwuismr4SU9aGYF2wjwLs4lZtODBdFbT6xz7eBDsd52hT8eRt+GI1Rfkvv81PVX5ZFTu8ADneici4wT0PVckoY40joK7GC2OkMZHl+2wYqNpub5Uzw1VvuHeli4+dHm67JKpKNKgp/jtFo5RXjnw/dA7Nhhw5K05hobTzaOJyPPLlo7C1QqyHYzZ7bUvvniQo+1DjwUAdoIf24TrXIT+vGnQtY++7npPFn91EQJXQ1k1uBKpkXrCjiJ2LwdkLKcincc3HtXYve6wUXWLinYuttiw63RRRJDjGI6EXhC0mM3kk8eU9xZ+iXzdDWYBrmCJ1E0viCd+lu9zI1MoxNm1C886RQOPZB3Ix91fEgcifgwOND2pVoSS+QswJ5RYkU6uLOH7zdDuHNS/N8kyejy6N13kttkd1oL2p/wPm4fCXFn0WD3Z9yPBv2m2m/MRCCI37K1MrcUla1d6jDDtxuoRjuLHRCg37qKRa8jKkTgkDijqNHU0Wb6IIWg3YY8s7TuqIoIc8TUBRDYj4q3g9MsDcc6GGCevcLpSQ1dK1Oq+WdkDvYeXZUkMulezsX/wyJjOdrFAi0kIA94bG/HAG7dfL89nkQFxdjoIUE7AljjAEXhAl4YMCeMMZYnoDy9aRl04jzCvgNKsBvUAH+ShHgeyEtR7GPRpLJrZHx+PvxZTKe9OWO8FTJO+H5SJvlMIhvEHjIegZUkh1Xff0/z9swDthR/RrOeHjsYKxf8KKB5CJh2ww/nDFwTOzMjzwLU90JHq+C67bffmvJt0svSvo5NbF/BxId37AyRu02PCdl4l3/PNL0DxywqzqfijvvTthCEGfvJEI5dK8wz4R6USQvCSmIME/FvrAXUIdYbbsm4TnUEhRVrydofNGpjo/fprwze7Q/5bijFNWLw5ywYv2rK0uHdPRCiSsRYfna6z0poRIWYX7yao8P4vVjVIwfP7YyGp3SoJ9FoER3fnd7NDdIaYGJ1Ce2XvF9vhnzAlV7Xxcz7lzQUE9DZrmzAzXftpmY+/XjlLbnbgQWrROVnh0P9wiRq/tLhCEHd/lfiHSM2k4It2RhBnCYMl6712VENbnicdUolozdYYJcVGmC2D3sWS3XPjmX+IKCoUNCFMtMEqduPkFGLHW4K97GKqAjZ1aMBhLc0pwHK0+gZ7xm7I0LxTFbFDU0iM2xtn06MTtDcW5C5HxKrUVry1WiKPa0SMvcy9tDewbIBDwU1BiZ0RqiMlsTO8yIYxHMEC+dONybK+fTyyeUt4CSA+S8YuJ4b16c0nueON2bv07vvU1c3Zs7Z/aOQsu2M8upoAjI1FKAdpkw9UJ3IcaqTmHhuaRYhvT5ODJGyju8ZVwcV/YEZzGhLE7146+abRBiBLYExo98fzz4CBUrtGEcuGpnDpGllA0NSKEAFZRPhXhSpP0hKsXgDaLaoUvS6ThlEvmzxJK1qtPMw3oFI3AIV5pXSFPHrDgeMN+Kgz2JcsOJK5S3LDe6A3Dah+lpTmmZ6gry0feC+px2mUMHRKRA+5b9OyO5g3B8JkwxwzkYMHqV64Xgy3iqL7u6v8Ghkrtp1gdJNkDc5H0nEGxILiKQWe7OIspxIWQ56PmEi5q+gfGtzLYMSovG8bbjpsYZYBvaBoKbvkmKS29UzBiADfOQicO9uXI+vWJCeQsoOUDOe5443psXp/TeJk735q/Te8eJq3tz58yiczKhIIaOcfhVbIpZMpJWnoz0dQK8KWwT+fjmY7Fzj6abp7SUEyjqyD5jYFrPpbia6MiwhI4MQbD1BS02kAiesdSAISop2ohxRYSGeiqCZw2Vgw9RvCJSwevf5AX8aLlgOpxBGWZJZcmskSANBLgb+H2T1mN7w4zQ1mK+55RgVqtuLxvU4OPTB2aF2QjTVmdB0fPd62j1qSz0h/T5Aa8g61hQfpjuFtzhcfbscC+YsrUuLaJv550mtv2jcOYtkXTwElskOkdG5VP12jpmNfep7E7Haa2YeYCcAV2OUeM7Fl1SgOgb61ANUBvXnPY8K0zBWMYYV2bGfktrVQBlCbbaSMXlVUw+RXQyEQ2RmG8F1RJE2KqptspmfEkG04kuzNOhVgDBtb91m2DZfN/ZHFl5ShOn0eUuTurB34xgEX5ZicFBvwzWamhEs2tohLNhuaGm867E6P6jkwSXPZDdvrlVBDnFlP+mqeULyLZbhJ7lAsSEUvV77kY1YxBPrq4P8U6zR11V5B5fWKYYF8lBliw0ZTma4QtCirThLqd10iIVvscGCAQhA/ghx7gdxq7oNJPJpZZesAYKdyCohXy2qG0i4cPkPLk/bXLRO4wT3eEQDeO8uXOh8paKIWar3HuDTSqdtarIM8k64EJF0VdSBiUDHDuPBtzM2q6kcJ7fz/Caj0ruq0lQn7AQqGI5dN0IFogg+WEITLcqHdtoMd8LuUxfPpzGTaATm8pUm6TPSU6qw1J91dRBCTj3vQzNvlqK71eJxRVrN4eE9r6wyUC0vVbvUGBDyz1V3Qf0NdSjADBTYS4Mw0ZGnynAY5BbwU7wFNA+5TzISruIwaflZXXo0IVGtvf+OwTE68qP7po6b9LpgF/SiXGSjOI6PAhEQPqmkdfpPOoxuRSqWmiDHafQgdBE4Y6GUfxlikqD0S4w4Z5i4y7xvzekfN/4EJh2i0TNiPAdVFVUZ2vj00FlMY3siPFnBvViCWeknvZ6OrWlft/M+Gt5KRcW69UWOMPbptKcjcSkp4ATL5BJETSRha+dtWO7K/S940ZBkVg6vp+mYD8Qm7WKdm7ONHAcUtsTprioYOiWpTe35R2+5hU7xeDbkVQTxmXY4dGdpmMBL3NzZSSh+NofTSpVzhjO895oQWAcUybu2rnIVi6GPDrkAGYfBCLj/RV9cGdg2+9erO1oaKlKuhnbii06aptpxFO4a4eIxxbDVHrx/vSaS95xHJ8bvcA7qkbLDqlrt85UcmERctY+3GhtbbLw0zPaGrSliurPJQEt0eK7iFnwrikQ3YVBLSKnBQIT2pdFXSTTYgt7H1b+kH1CyrKdNCLn1Rt3NzBmztPlEnLxRpAwsuYsxyOJr5HjG4Fga2tkeH8kDsT8xiF1uCmTnTpyoxfkjooT5ajMmZWGMXZeoM39G7RiqWXtiVGSOFjzb2XDycVng5a4+Q4aaQTsNkB4de/m7VcHNyemYGvaIjwYdUZLaJKmqx7Qgv/Tv3rJ5IjdFgbJ2dzHYr6fTDVIhLkZsFLaYdgbQEuvJnV1r3N2dazqo0BSSL3qbmyWelH8U3nyXk5ydBopCjyggMUdo+WHnVIzn0ZfA9gQ4JNRXrW9GH04nqpbLiMFIY9bPNF+v9ACN9f0G1NsXWHk1rW5eho63W5bG0pzI+U5LNQeH7pfQkb7mWdBam7mtfjsPe6penc9T1/jSJQ/6VQaMhWLVL7O4tfxoe1Y0PzXOvya7ij+nL8+HlXvv7zslVnSbdLpw9qT83J1ZZX/Hm/qUitqEt2EMmE3sUxKXAUITIg3CZmQJgUCfNKa/04RISdQ4XAJMji38eIsKWlOIhMVy/wUA6WX2/04sh4RfZri5JPI1HrNr8n0uUaQ4PjTV0DZ5b9t0Tjg8UaLv1/NiM1Dax9P/8/34/vOfn9OcfzdNfzKSvzX0dXj/9aWHMVzruxnDCJzTJSyIlV5XXPXwpp+F/oaEZcci1uRbfPGfgLrr78lafgyBc/2GspIjvazdGUX9rW3yCwnSXRS4U4LW0o87gziLgcn7jUgVMhnQB9HOH3n3QhfwZdXhxpglZwWLhhvQH4spOA94NgEFuivMyX2s64YAOUkCS2pbI/ow3vDSl00S6PnYLaOeQw2OCygHpW9wFC18wPSqQHhoiw0ll/SVlM3dBwX2sWNkxxmhT8DUPDSnigMFVZDbhamPuokUO67yTAiA/S3PuDK76hsa7ZqcYxUxGbDeb6Lxmhz5LPA+hmggP7xaKG7qybcA+fg1FfAeXRQ+jxVZNOUYy9ctKbHa1PCJJy72iqMGAWXahsUUkIZPDMVQ/MaC6Tf9MmLrb+PbGpWSPNvVZK03ygNASystrGzsoD8KMzIFT5WC2pH0i5CND4s+KgJfm+YWPA1UuggG4mFxLa7k0BlKIpHieAhlnp3PLUB3r9syCya2MNmvEF85m2Hc6hYOTkVax6KPUu0YIomqXEGyYxdL7D+D6Jq4pcHLAjpnmtJcEsckw8IYmWwS61IEHmpoP2zPukzwS6RZ8PL+hcVwqm0DhWjNN0sMHSgP3aDiJQZiXtDVoWT8MWMIU4j0jTydjVcMrT3gl6knjWyoFkVlZle74QHoAGQL8yQXvd1kytux4je8uqmtTWB8GrK2wdbCTcNtJPL/wCIiRltp6TD0QI7rb1sJ8y1j9a4pdHbU0JaI6nCig0yYQxlW9wuLd6pR1olsY1jCs3EzFV9mIciXW5n17Fs/2JiJwrsEFcBfHBxwEGAnaKtVlU7hseSHLUvBOkQ3VpJ7iEGsI9xGathaVWQMIF9QKLJa9eQKoD7zIrvOPhssCvWgodvVjZLRiLsfskGttUYpQuUhDLqeF38/jtMFgZrnSYczxD5p6aV4/OnPnpS6/1/ypolSdopQJuVs/TADmmrmbZp44DV5ebuUCIL0pV2cnoMutbo19INDcJl29oj9UIiaOWXkFWEshEQjS81/TA4zssMiE9v+UIjgWOYQSecQXcoLehYKaBUPPGoAE/GIU88KmCMeIQ1/Rd9LhRUIjK2BiAEaHAsu3Th9SSwW1Uscpx+whqgEL70sfPFj7psdMny/LEJeILq7iO55d78FMqihWllv/6wARgzSkLqKv+n4GbwEr2+qUc6ndYSiPaY1ftGfEYNedYT+2SstDe3ebhYbC+JDxMkpJcRmV4uaeENA3rT9cDthCUmwm0uhUVW5dKVjdtkNcZUErEhOMKmp+Rf+oAXdZXTx+CAwzl9PmDnzqTq3USNOx1H6gC90oRjRimAR9Aw+WT8nXhkMYe9NsCYBggNmo9bNGboJcL9xDzl0R2tgzS3lR9LYgCqpSE6sKheWOA9wlkR6/+O+slKwTMW593pGv0NJXuKEhfbp73vfy8ponp8W6iTKpCshlb0EEmqY9TZiS0QLgmJAcZbuT64VjInymZQfCFGtkdEQGWbh20ti/UOkd0hLegmacInHY/R/w+N9VIy8hai2A3xp8v/QdJONzF933Z9gIl6/GfdxueWOC7sazCuH+Og5M6bE8KUIcwhdUt+tm41mK8CfvaIyU4jm+8v6s8dMLsFhxbMl7qJKdb2aDEHjfj2m1/q/bbj3vXyIzwtA2gCfQoDyK4DlQHAMFbL2aa22NYZ2TrdDl1Ja2wYAnIrMDML8jXmzON/2lFlXielZiLXUWGyGAevJXGJUmhhT6EVJs1wQVpmaO1HjBJqW8U/w97PKgm3B+zQsyaA84HMTpPQ7DmppZBM6OJkaDAoB6aENj9Ndt4kr68tQRkTRUilyUrqWBP2vq+NflCC3pUOc0W44/GgRrRaEGhV/wcOvhU9+8WWUmn+hC9URb6TqVHF8h4GCD7gj1KwmGpI8q6HRaq0Y0YOs45Yt+KhK/XVmOgSJhYz9Ua9O9W31ejm9VCEC7ztgeIunu9XVi0DrN2vj+in368Q1BiGZtO2rSZRDjDiweVsypc9w7m+MVP2HyDy+xNtnnsYE5xtBSfMkr6nwj6ApFbRPacPSnszgnKrvQJtEiPrwCrjcuAjhLSXTDV3rZ5SgmD4VmU2wO3OCrhEUiAoXFNYHn4VY5iglO757tatlC9QmDm9yAQxvZ7TE2AKS0tJhQYdpK8rsp8ETAnH8KQ7d4WNfmcdN4UIrt1Eme3eKWPthK0RyDDdu3KA2ZXbyUATHXw0mAICRivMHhR5bIphyCKSNod3hQ8TPaEnGyIjbPppOCNYM/Uw/ndEO4BTdA9zZQ0c8ehSZP3L5jrsSI0J+O9ix2TNR5GryOEuHzfK3XHEwU7j7xSLwPhA4WdIV40qM4Bvn1h7KsWAoSGNDQC3UVeWPlo0FUDNj9JOzanDmiBwZJwAt3hzJFRi8D8Gmj+ujK8jM5+C7k7aCSHCI3ZAt4txI81vYvGOG35dharIZhXOgMBNo5qJudkYaDYdxdb5QIEBFqKfnkI6QvvrducDR2cvMbUpSZ6Cwi3mh25DftZAZLF7LVgZE1aVCV4Gm2+Bx4JTgBEkWhbrsUebJzA/bptb9K3mgwxVwCwsoxLseT9cbjSBvgCZlyrL5XsmLA8xaV7CGAZW4FLYo2wiV8EKmJyIih4Lou/gLzWzjt0ydTTei38BPoWZDznJnWAQwiIMQNPs3+XrZdZNhto5ynSVCISl3HM8G/DsS5MnJqgMrziQNyABUT1PvQBoUawGt65jMneZ0NLcH+fDSCW0/0Uo1hw9iLEtkD4GxCIn6dzjXny0n7447lU9/zdLsrndWweMJV7UYgw8irOMc2AIlkgIO6A4WZ2SJFRjNyywDhOvMs07PfjSyIOpQaBWJdh7ZGSXuOPevuWElvIcweRaW4nMrKgjCTFcpnbgNEpodg7kpjlxv8kNDblSqdmCspHtEI715e5PN3Oq+S7SuaLRaN6ssAHt+cnt3luZn1icywD6mCL9vGU/EOduxCC1YP5b2FmHXbMKc5uiUqmhaaZHSaN2LKCc4yrEvbsTXA5KumOlHO7dSa3gq+F+KeCWFHSD7Bzwd6+BWCruCICqj5ASUGsCCsmJ7ht+hyNkg1xEZKBiPu6/juJWemwb45B7GLUSgq5uejsdvmXL8UdYTlNFivKygMiDbRlaOG3G4PZD5K+MSmFnIjC5fSraE3/gzj7/Mz/d1LoZzCCb0583s8CQNKiq19JGD4XI8zK2KT8JHCCxcEN07i+EDWMfGjs+GCvaGrm+mxfRWmib8FawsKJ4LY9IyHTXhr3JROAOrA6jcBIJzK9xqZCI8AUTrX5TEaORcwRE/VA5lTeyZKAo9sboyY2CdYsSp4mpY5nYBu9dxZuCJjOJTMm5ibo3KfYPk2hpMyZ7Hzdo7XBlX1b9rJ1qhvKaHRxCSnzqvZcmmAHzq2rguqZjEX+eFbqeLgmGfTCvshvFtqL72OR1a/ELtwpgFtciKh2d4VJxKQRPES2wUNrKaMBYqyHx/3Ebas/YmBGC546XZcGVIbEVnZz67p8CjU/UX6S+eUGGkj2bblDJaxhNI09aC4yTFTbKats7qfWbqwy/rfhjXBRMZ/ILeO0lgczV+un5SDXqJp/rSFC8iGIEobwI7aCS1Z67xeU1T7rHpFQWQWlBplMzcZ9TVl0VlAvZEQk6YSB5m4Vlo6Kmb7RYciPB5v5J6lNB8YdEvI61mbi4S2ftZeQXgUM/3fgrUnLYaZPrKdnKmvPVHJhQn8bYPIJzxKLtglxtMai5URZ3WgIxpyOMw3rrqhTpVDLf0RrbPl13mNkkxbyf9oowXAlnWc6/vlfTUkNXuC967z+8KwSLO8E+EtIYtl70UYZYbrXRPSgk1FSBVTW++ZVi+9GbwbS2ghCrWJPKOCqcd4WnydIQROf3zZMf1lVioTZ5pgXImkjMzf54WbLM1WzR7I9+P6JwVhLhuKEyI2UuCn1G+65QYw0wwgfB8EaZq0HvRsTqIaB/5iWP41KtDkbUsWXQUGS+VoZ7LLyPptS6SnAsdo0E7tb6LjNN8OAumnhxFQmmCogYSOnEneZAQHNsf2YNfmnDDADmdIiSGP4mxE4Dmox1MQgUQ6ko/gXDI9w2NYKBqsZlqaqADWfVrjwrP6tC+G4skeOr5m3xXslYI4BUbRGFdJQ7hTKmmyBhqkrXqSlRmgav6ZinEf3E3WSjeLxJ59sFDpt448Y7RIiStaIjghAs6Ju39KHo870ufxFjclJWIWY+EZ8jTpybhplOGMyUAICPUjsWyYxv8rT667tEu6Q+bT0X2FuEoiR/HK2MXAY7sBBOamBlfp1e4QZEAwTkXCejNjT2q7DRAu2TbSJT/SvpmGahPprELxTTJIcJyjcCd7Kc2rGqfU4ArEaAOLsrLN4ns2YGtDTiflIk2hKOGreHvyCw1omFBMapmOVrJADxx0TlnTNQl52VqdKjWgMBAm5gxdnhTSNoi16XI/v0mqTiSRD3Fl9nisNUgofxdUSRHirt1Gqa4ZIjUJcQZzP7mLBX7hN8mZiAYQ3lvfzZ2csb5z6xMPnCjJqNC/GzPXndAJRhjOCXRmRDitq8ljF8ejd8tVVSP1mf7AlYsZ+AUB0+kJIBYwCFdbFlBM+dQPHbGYq/F6wUMhtMQ7K0kcarTYWY44G45hMgypILMsaBwlOesgLMwcxaHDzYtTeM7QVXAzwZyf3NOBpaH1UNnfV9KL0vPFn8KmSpD+tqAwhjS47saKzjZYBa8qBsKjNGGMW4xbOhtb4FTZigkjti/JJ5r8PRf46B302hs3ubvYUA8PmJLyZ34GwXIdbA3CKEHZADBTXQN18vAB3UvLs2pR7jielWkaz6eU07t8Bin2MgpcxfAOPlr80gI/wSw3oahH2gwUNKxQjv/PjaH3nNWsEAxo+hwgJ0nhGCsx7R+pA+ZM6tvfSF/fFUTQOIHezb8rXc/EajjaO+iUn+2I6qPFFQdnh7m5z/8z/1psWd2s1eNuM/pNpi3ahsWnZFxQeegi6JVHYlfogvzR8AilTJ3m085ap9D80+DMbWaije1+JrcGSBFcW2AvcwzwGxOnEdxg8uMt/8ZytGA2Gx6TYSzeYbv373KOkFwDddsLCFKj9s75Ws/oNHRfNRhVrMocZVYvrywN63amrThr/5ezCowBVHmqaTBwb/3Fbc4a/6ugTC4k4e7y60vnT8Nv6MzikwW1PWt8ZK8kEfLaudvxgsDmEJFO96UYD/0FBIL3BakbpZA70tnae2N+fTUJZetha2dlX5DUPwWJut8aaLfTDQOh+GdWo2UxZaKI7v+73vAqBxKxP4C/pjSOQdkR8zW390LkeARNesjC1EMd+i2Hz9L89NEkgsgxWc2V/S/zXtIV9MEJ/btELUsSy7K7lZDNpeJ4+rUaIp3+vJ/iHGuvo3Nsnpak4ppmPIdHzTp9XjY3Zuwk2GSlSx0ycmp8DIMD63btFB7Jitq4mbzBQIOH4JBqAC/HRPu+TR2vhj/rPhT9zeV6vvP3r/UH/ik3stzdNIWV9Qs+yDSVvfZt2LIwGERmwB25deFqeXFDCtBiMlt+AKh9QwFzZXBmZUayEJbsg44FXiSEaSCx8Uwlm0Q46mdWalSihQO26gC5zStgjWDBi7YtNQELFt9Xu9UJ5V5bukLj5wUNKK/nPwsA5Sviv4YUgQ+aTyIG41yfB4tnrI0DGneNkz94sJg9ztQ59s2DpbMKTA2L3/Ht5WF/btC/DRvjhgtzRSnN9wXcwYDr+eOLNcH5osAKx+hzuE3DeOEqPB8UYRAcdc+2qxAcjovF8+WX5ja1u7jlRx/Cp9XN7YMRdePIMdtBvvOHYRbk8+8dJTtjHwg6dBokxIL3qKGKabZ0G31Llkoea09Usy45IdpnbxcJihR6PguvrhUNh9a+vUTo6DW2Ixz/ut7q3iMEpChdjDH7O3DqRqccrhwCnAB3WnfJcjBPmJv3kGOqECpnfhATlpUDqe4wr7oZ23kkH57nk1wzYjHkGXF5C5t5rYFNs3ZAWJakYIwQHCiTTQoPUuU9JeDuOgBfpLWzsivXqgrdUhNElFASdmcSbOvkCplgZawYrpqL3JuiWGc8SSNRmJYBKLOe3C+aAoyEgZ3t/B6Lica8Q4NLQ7J3Y+vqf5YYXVUOOLtCTRcnU45DKJmxMGHfta0iQTGoix+uI146q6KJEbuLTiRjSzt80gmxr85Ga1k05UIXZv5sqvVCAUB4L4HRfn96zFgt5bGl10QJdn59xwhgv68EAwXgeIherSIw3sv3ve/qTSD7KfHGey82s1F00Ga5yD/dtB6fLiKVp/1MpiTe3wSYS8On+XHQ/cfrv1/SgnnyURxhH7nCQ4tDCCQv/4vaCkMZI4zss9/h05SDt2iPshQbRzgXtxSCba9+dlqPHndjbffD1he5yq1bGcYPc/CTPmJJ4c/ZiQIL8vdh6lbjP8e8XKVIcV+buW3Hxj6S0nPzoGh0h8JBm0UXs/Jf6B8VlMiDiAL8ieNd0DylVW4sLfPeb0uk8y2YD9Uk9GazT2pYOg0OmsJ7gCvnAPn0oxw/JyoWSNDbItD9G2by3kSUQoFVZHBSmwqWISB/lgEGLd7n3BG/5zXHa19HUl3FKT23QQst22THHdzgntySnSbhn5MOIKX37Q/ddHOJwIN/57enFtk+Oi7TDKUpK3cV6HJC1tzSHQjtdCsy6IQZkCq88OtU2fg42NveEFBV003oepiNIc8acvw5Ffw3qEnaczU605Vzkw0yqNOSY3d8SwLYEvbh4hGyRIMaaR9HCLSs1FRdctGv5r6Z8PiayGUESV2krbYuMSwnJJNHtyLQuI1Vmk662TGVmxwFcmPXprsHximKkniz+y+idDt/B8bvfmT3QRkcHKiDsW/CCvTGlZE1t6E0GZ4rhN8HRjwzay+gDraSP1TYiwPfxgxny8mg7xsVf2E9JlmwW5i25TjLuTuKLIl9HOcIcn7AGwCmtDcB7xfnap8RbXMjs8wXiWEIYGeyd2ziZqbPwU9jOmFTOpKvP0GY2pdvjDidIn+cDmYFSwKmYIA5qzrENgzXQ1tZyw7UGnQvgAzqk7s8vP1ZECPSIpU9OCTndU5bTAZeso6XsOlZV/q4F9H0nlxyY1MCkFQLU9q+KmpAp7YoZz/cds7WGxzPsxLthCiIdpfbsSxx6z7GdR9UFqNI2kH52QTTDQlY/KuH9pacMdrUmSoVTstmCz62unCadsLZ1K9bcgMD8HOwzAvdgTqGB3fWplDsf0jMviDFx5XZweJ18X8x1evJHVdBKajwEEmgHKvJNQBUAMuUIgzCHHP2ypGSmtfaimwdb0eg7XnAULfnihjGfBIMjcMLlnIsdffJJmMS+mv8r4J2ytv4IqwaJSUlhAFPqqvAOTAdXEVBCWb1JJBpoU4xDyg+onAFd8oZKxWrHvNykpGXdlxWHBQTG7qTh3O22uTjWoWda6OaO6S5WzPFh3YctEhUYtsspD2YwljHB/HkmbJpuqckjSHCVZvErs17J6t22nxiypGwyRY+mggQFGWptb0zaurtI4epp8ydQi3I1SllZvS1osIS6q9sYrT99cJ8ousCuGEDhtQBu38eJeJfvSKdcl7FVTAoOT+fFm2iz8qPy9Dq0lVqu3FeiD8ByENOyaFmRHYVhW+BG+SEG5RQ9NszqED67NtC8e0fS9ICQ5usxswcRe9thcg+TYvH4YzZc0JfMSJQSSXn+hVnfxhVOZZOzO0Diyn3bvEkYtYdMv/cac2d5ZStdXnbR8DMWy+83BDjdKF0xAj1eFBnmzwm7N3/SA01uFH2snIkXcGa1ZVvprx/XO0uhS94JK2S7iKLVTokr7xH50Zz7faSfFqZzN2NQdlZ5Vd0iRTNRGF6ZjUvJmhPU/DWjqUjCH42jCndsNhWmdzeiTuy7g/ciXQH3clxu4AKNS7rh2iv/jribHiW/+cQqsw6TCt3S0g1bEPU04clGsotPOLnzUAkf4t1sLA7XtbCu4lc+5413blqzSLubOat3l8V2Fb+24w+j/OYgv7ixscYixqybfDdmXMe7tThzfg8aXKRY5lm15SstXgn7bTBzuVXHbb4mGO9DX5ftV8FaclhB0f3WtQXK42Z3jhu30d91pbcnq/M3BtZONK5nwrRwQ3NvhkJ2AUYyVvvDlmvM13tZZuFdvh+a6uHJw+Hk5SgUW7927fpN09wYXt3rD24Tfpl3gZ8ANcT3CKfR2QILGbcKCg/yIQwCBSoygOcna4CeMFgvT+fOZuvf3Vzqn38ptJAacpyYNk5OyIGhIElNaHHx40mqmRv27ZzaH0fGpxF7rzuTerQxWqaAagb6JG6COsQU7SbHyq/iEadI+6W0CUeHndtxPjJ1afS7hT4akwtjzlooURH1JrWI7T6VqdD5KVzFMViST3t8IZbGW2CWJ2YPy6xr8ajyVUOUykiYtgPcYCiJ0BY1Wx5Pl6J90gqYEltNr2kU7pHEBMEsWPkrQU/pi55UPaV5wfkXENcJY6hT+3NFBiZSNSwiqko+PrYVMItcJMJs0Ib/jWkjeosCeZ5rJN6JnYriorl4T9yOMOGGmwrd4vE7EKc0OXojG1woMrNaC5qsaVUmeKKp5qc1SJMNIK4e9RHwFJ3ITtRchO7di+Vhyk0y8HGHwhKzCt3bofC/Qto/D5KNkc9crmxBG+IrpKQ7wNxixoyg2oDrodYVRGf9+56qAhFRvb317jfPB92VfzA4pdqsdfzqTUEE9RAN//Ug1GPmhQqf4/rWN043F12rz7mve0PO3qIL4Mhbj/Bk73v+jjrMa29z/6OPcjtWv1eTha80cvhbHZCzG/r9/Wt3/PY0zjZ3uf4hxTmPt/m9+nL/jVGMxzudYuX+tY+2BVahXX6v1r19rzXysv//HOs7DOMNYCktf4NJubpuyDGLuUYyAOCJ2Kv8tOZb9u8BmfvV/XBuHhZy/FVB2N24X9lus2hzvngrPW1r/8ALcNakCWBw3c/7U4JvLXWgAYGbnozIkbGxfi9sOkSUQoSIZhzydA+ErjpyxjQBhvhFsUBBYJyDfRdfjIrhueryZABPvJ2wDtW4Z7lmf4RvUOBjScXqtwmIr0NGENhG9TP4pDUzQ2xtv2yANq1akAYefOoouHmQbUYulpx4reA1ju3PLJjzro+Dff1LMg2aOWpzDl+gl0pYSPkUwKPX2eMt+/0KUsKuWkWEXozkR7tQP9y7qtcu6Mn0Gvof1MiCHfCLEFX0GPfWMMUV6tPN5T4FN5qjBu42MfCJbjsk+2WAHYcFOaD6TfwU0yB5a6PRnHUIITQg/x8iIH7jHS2l8TI+btvQ/M14yA+wCDO/SlKtnHAjQMmiuU3uSrZFxWRKn94mLUlGz4+UIr3h8FPDxMmm9pfoPbOpnmBfxyMyBtKZF6QsmVl8uDdFEYnVnkXSP/Q+D5Ta3vLSGry5ibuJal2zykYfy8s+XaOUojsTxqOzyqwjxdOHunXHzuTmR3LkJtI8XWvsMeeoFfQAMK4NMH85TRGkJzK+TZe4+CK2SJcPDwavBJJDoHpiUTJZe2mLKNPxunXgPKAoWZIzhW8RBhqkmrpTMeV1NH1uZaUthYrtGMH39I4mDMZYuCStTxTvFMfs6GuyoOgdfD6FFsHbKpJFlm1P9BcLzcX4mgKj3SAzbPUA3pbTpMGwrsHKNiSKyv/c3foRLAt7dnf3EUAeQxAEHCCmgU5MrgX/akcB8EeRKU3pb1yt/F9KVN0l9UhtXpSbJXIlIIZYLW4ppLHopIxjOsFICALElBM0XIPJNpb8q4MasOB0DfJwmQ9HTVwA5jBTg1gBf+ZsFnMh/I7y7YCyxxg0YFsYMMdCSzQqglmkvjbcA7L36evgRv7+q3B1P1cXCH6+HdBejvFfNlHvD2zBP29Xr4ztDER1P+NT3PRFY3eFhGgyziTMWFWpLRNPVVHm+AUi6rh8frn99PNMuX2jxP6yaEU0ZpuLQl3QBVmhMBzA6VnA4j9LmXyjhUfYqOHJYi+O/SlgkFGEvYUM3mPD75zKFsI2ImPofIyoylLdRo+77x1s0TJHZRot4229ucccUxjY6pPTrYqQzqncyq0bfI86Kbphgv5moJqS6/5xbCNrNfr1RXVsZWvvHxgfNewdXji6dvNN7a2Dgyl9D5kEBr7K+yPqiaL2PVu//WAT8p+BGqUprktfXI8wJntx0umbH/OAIf35ZDSgycK9f+8AUxBiOIRwWjiYcdURUEaERkUWEBMPBoPDpajKqmqyW5r7yv/j1FmovcjiK5qVnmc/1ZnZF/tQaR/vH29CJ+szRjJpwVR1CIp96FILsPgXmzw6OwYgE/uLAr78akax58J+zDBryKWf2Cc0Df1yy9L9las3UhJ97KcFZn4bWhx3CzaP7U6OaHjBVYt2BEknWCiLaziS3SOTPbTqCj8bIDSGUmCr5/fm7h/XQJU2sTVvQQorT7NlDXaaq9X75wPi6aph6TVjgn6vXxX9DWB0kdMrYcgREGEvNOtSsTU12agJa5+LRnidYIGeOaaTj0pP8ui03j/F73awmi85rGP6L86BYvRmV8S9zIP2oiPswi8x8Q+uO3yhEfcftanB8S7JBsxd1AqdNVrQM+WobvHTcAXnvXOUHbHh7LuhM45UAY9Y4IykbzttFNjhhc8RW7wzkiRuNfUO7DVHHAjB+zo76rsSzGHF9I9I9hksZCaWsxV+ZgId9rud4V0mJxIu+9V0rIbxgt8EmcUomwg0WgNS2jde0BCWlZeuzgSV+uUxDkMOS525JNkGNBMqd7LdHFRazdfn5ii4qZn3yBr/3cs5ROWYFqSUxZjjuH6V1rFCrDa0Acw9WWKzUVqRZn7xevW9YW7IlUCVY2/1Mo8GHoH38kJaKmUOFMQogCLJEAXcBv+RI22SsO5bnt8M6UnPJMygDmcU6I73Y+ySSIljyww11VEHhIkNmrpc3YiTMRRVRO6FDVbH9ykMjAOC5v96jvkzgAzAeMVwdNosC9NZy/ih8UGEDy6Yw55OvgDOjN07/Gws6b8HnIfg4V0WDiJ6Fry3hceUg/DGNLDp/V8Cxf2ges1I7fdw7Mg3cadRW6+8AN2ZUW8Lcecw6JtE4DiIXWBJvv6a58xbhpv1IVLr1rPDa9cj2W/RmkYbVN9LX8t3Mi+xFO2P68yRTUrItbWV7ylL5d76uDGipHf7emIVcMATdl4NazHZUeTOXpE0SzOXSGdAw+/hCpdhrOSOpaZKY6JMtNZrUXoBrWbkyFGPoduIp+ZSBkLHMe5hdYh7LqhTBpVG6I9b8ukXhDouOhM8kyGVabSs5zTQeC9Np3DWXs88mDvqBrqhw43bcvy/pvXDc3InoyYR4FlGfLp4SGPIuUZm9wcNnQdjAj4rBrlJjHaW5Qppc4aSFGug7fys5a6CfLnQ2UKhGdA3CuY2qA3GiZnxh/QoUEzm35V3cT473mGiz+tmvuvzOSnhbSTsV+/jIXDuhSe25fRkZY39M7qYtbpqjeiE7Khpoh49fqF1ioQdWMRx0KwPD24zBO92wJ1AXOUSeRPqE6N9pTVz8jpkExZu2EBtWTHehgUWcDXtRVc2sF4AxbnoZJO+F2axpWGSrMh0kFtuU2RfTqNYSEbVukK6CcjkZkTvnms8UbA715cwG6JstodA7AuFp8zzKvXZrI8USKc9CQJVWEolFCREvrt/ocqsoEKqyKGDTSqkRf5vYJUE9pxp1QtHEDgWB/2gSotfNbym5FTk0WY2S4OWEs6NvgH+nIJDddP59NAxxrA5OpJk9MJEmy6ryrh+yFfuJm3GgXzlb/ToxLmwFu5omHqt2g1erEbjzsfyv86fEZg7DfZnApbMUwes88chSkossTsf0K5hllqYWBVpdACK/e5V2hNcZ/WIRlr8NRatD2/1emeUhJ0CDbHQ7iihTVn/0zHzNQHw1GKwerHOHhZ8ZQcUAXpRwTGzJQoFFp2nJGQFywLuHXUwB2H1P+NC5ZwkaEPte6YZHhyQtEz8nA73BleGMAs7mkGR0rJDgv4WtmNqEK9PeKsMci+aQxHGWjC5ypZ2ctEykpU+BuRmhHg0REVme+pesVKq8ymtE4elpnNtViJASBW0uCXLmtmF/cSjzQyTNct4XHRd1v2qc6t1yurLRcm3PHm9tI4Wgs+npBDXwT4p8IxhIggaHlUhVDrz10uPtMyfrCb0ydV9VIcvrax1v4EbeJGzPi4y6vOCUDOk+kBGmGWDUKuFtfmio5GDosBJV8HHt3admjLPPIJk4mbtrjPwXAmaGgI69ix0BP/1872as3ao1/Wa33WcTESRvieb0OH3/QULuhbaRUF4ksy206K5p6Eqpf2FYK3jhXRrrYi7B+8T18ZECRywzqs/LvEURWXvB4TlaMYJHUuV0m990m9uLLRrpVYC9LZj9WVjc8cDekEURG8EGTlG8a6aOMONcX5v88paktu6CF66/xCSklo/Sy+zCDCPg0hUsy+QoxZyvKB+/9h2NqJy72eKlIMxEa/0tzQSrfWvUYkW7XFcnMG5t6fu3aSi+rY1MkFWo+7IjeWwRXLhrFOopIJNIqx4li0Eq1scMpYfAfC9QK0uJYsgcQ3fnWM6w2He+D5Nxrh3uHtwZ43fvK3RyQGU6JPt5jVpHhTicGCD3trsvlFN+TAeRnvH9H5kKVRw6oxD3ZLnvH2X9BkQRutrtdjt6HgPe4a6oRUa7JWVwckOYQdVsfhzxJxjuw56V2kGYqRA+uzH2VrFBy2sROqbFG4IiHbkpyPkR2+Ej1/umKM2sty/uqcURDW7J5PiABn0eVHiMnKKUEvhjc512stWpaLufGSAVbUVOHwKzlsNQ7o4A25C4S+s7UjeRKMaJXjSUoIGFTZNwvwgui/rO5RJ5wb++m75RXi/EbtHI9UI+NCE6fQx2rG7GA0ubw1BfGBM6/KN0FADOgj288EZAFLIUZ/9e38KtaqZPGoAsadVVoeRDY8bikH2hFVG435Wmd7vCHk+eHKsHgHdHOrnv/V/EPZsx0DD/oYsDouz7kQrqw4eex09KaFbRysvXurzIpPr+dk5Dcd4AsKNs/34dK1F5o9fOKGtByRJMA7H829qcj1qhgzBcoHbRDu37FDDbzBekPuuWu6DZpEfeSgDBn6GQuhRMM2Uopcihoh4UU8w/kLN9jmubBtWGbSvh4dm0K+XDJ+vTKDYI0/RZ4nXkOe7kqb8xkppeFdOcIPePrYj+w0ZCZTOv5Ab2OeWYoTSZqERa1TirXXOihcCAS1HJJxkmlsqLFI2b1CpfNZ+iNcYn/rci66bkw/1zIjIqfn6HkFp8uIrdeI8vukKZlPpK3ubpJYfAcJmfNmXUh/GxuhQTrG7Uv+STWZdv0H3ezkMeXG2kk1bIWdKPPmmIRbdE+ACkYdVk7pKexZ1GFSpkFirlCjaQd0632wTffGX+KT/oYTbPYTKajBq/cZG2MlbDgxYlXBtf87RJeHihJpWC9+D3b5Eg5R19llDe4a+hBLI2nbYsfPt7q/gdKGQes/6KqB36PBSNYVOwdaz5psfKqHZeZaaHQxDspaExne8mzF7fUsvOqVFKCXaxWo6mz6F1flKchCz+Uik345GzoHHJ1c/zPkzTXOjO23BoJQxCmcXOT3NPnFNy5DTKr+D3q3Tc4mYZAysDmcwXb5jtJNHJFtdiIuymYfZQkqU6g6laQrVZvNlopXTbWbD0G1/cbrnrxi9NQlb+iWBqq84b8NZIXK+u3/qEl5mNcgGEhhxbcCdJbZ/PEm2zTnmaKEzvsj4rTouNdR4I9QCku/ogwBqNTn6EXAkdLjRHrO1l2sShEjWbrf2n7C5sjcbV7c5es7HeEffkiFB+XumA02ozZX2UxoxPrufsyc2G0+nfSu4KG3Wv5UBqbHQ62HRu+HS49DUS0mvEWex6IztG62nwHDLbfFXIzamCP4KCmUgXeBz3Th7QohHpa5djmWeCTyrsFGuImcVq/z5gF/C2Ls9alWnHZpBCzNPzoUZByEKvgYNK9n3D/QP63lXNXY8p+6xqDSt+ae+kfzGEi42C9ZbpiwBLJzbaQfGoezhxEEoLyDSlG75IBOm86vAUiYYq4LS/Uq6cJGDeEEwurZFF+5aVaAEbrYMLZ7Iu1JvTlUtadQLpK4umIhePTLSPvP9ntiXHGdUIGm5xQglQ95qdQdzbvCvXf8IrnE82JD2Eo5N4x8MnxS7GQ+wbI6wNUmzZlaQzqA7MpnxF6UYoxA4aeoPkpUawdov7Oqx4r+GxaC+hpVlxjI96EErXNr2ARNNFI3rLNo3vLyIcTZlz3ZhxavqNqHHq9whLnZZKIyR1YJtbG1WhcJZh1sqg7UZjuLKPC4NYfIzA2SAQE+WC0HHHZ2d7cj0pgrbAM0YO7N7gBBtGW9eErnE05XNbIuIVMzqGx1fhun/FBttKLhwDu8PmrcPPmI+PJpcT4YLR/jDBT1Eo20uCKh0nHRZXnCrwJuBGc5BxRF0a9DJBUplpZQPJEVizaM/Hn4WKTAWGMqxZOW4xfAEUYuCqIQ1LPUHFQiMvPhULkLYKhuBuZtZBv5jCTLAlNlWEr5X2DS0kNd7sPypJkqfoj3eLsuWfBYDr579b4zXW5SThJE7+AYnqGXvRMk288enXvl3aEfls0432+gwPWzBKx0lOCvbDp3eGdjbtiDa14coyBR0uiDkzsuk7hU1M3q38sA/65KRRXyoZVegyXKyQRTkUobsjDA0dZbHR11j0hBSzEDr9oHsQSYPu4kGruopxm/He1izsFPR79SgO22xO0+PGjJBLsUCBVcSLiFbLcDdIKF90EBE5ACmTfmpkX/giuBlrtXhrU6tMQ+hjzYEtsMcSO9h1DtybkdPigjEE8v1WQRBM2Unsl3Cvak6inOXovMOusAZnvbct81ohHgQ9AmNmN1C8nMbwm0kWtSJziCyVEzG8c4NxknGaxG1Obb7crQ2I/PPFRHcFdIPCX/hUyQyvzhybV7BPmeXLlYxFHuO/20W+ZXfQkTJUyb9JW9G6gNWLUwrhOUH3vhbXqVFysxLH4xl9ZuyjRK1aITiyZ/rwIeUDG9xgeXNh7GA3gAhWOBO+Yxyyj5KkH/UguBCPj4LtTmxIuSemsd+wJ3YX9yPtaCXOHKUiMu7PTjONhJ1T97qze8esC8uk/oimOYqZ6/LwtM6Slwwpq/Lw6lJugU+Odr0YpKhVXOYcjEK8//biLc38Qfo5QxsIKIawoZvBzaiApO6hvv5hi4zHZ0yWTmEmv/hwKjTsbcUliN/L1tt6WrXqmSkkNZYpSSlz6LDkFQwcJbNcykUvdSePxSQ+mlrOtP9zt4xRF2eZEGaz+Uehr/3j+yJn+PhC55ZCf/exboroi3DqZZxGkUsxFTvbBWq83FDVe9IwBtFvXrep0WAIVg7c0kjNX+UCbsZaFF1ebyKuxshuuil8G1ONpqgemLWuKByYe+onYjpjrd//C9J90XdzTzVoV9sAhCThVq0taY6lthNKsPfzalo4TeZrz5I6DNpvFi4reOkHD79C8g7jkzWshd4qdX20obbIGARP6YyjqcPbl9LCL7Xjv9KgClF78LRBdeYLlP/5iWmyGWNAVLbd2+GzNjAs29s1SkQy7WJ4koCuKC1j2Q9LPQ7wFaU7EXzB7qZLR8uifR8zzbgUT8Ns6upkXE1mkbTf9CeBkETTWup23B1tDQNayNTuOFt/1v2hmwjFjmLxAqdCxqRxZJYKR4ERq1ZBDpgf7/sIdN1FHGvG26Oy/n1I6WHhUcbsYQTul/jZ5OdEqK3p9YcJrbopnMz0PaUYTe3UxT3S3yJl/VwbdlGwJoLMdrYVdi5XlN8o1lI55sQU2RyYIHrbL+yoUSH/bEpvxJ0ARHHfYoG1cuSCyvjeBQTIWL9ahivbrtJxJwrORQFBMiWvb2CyETqvZJa5a37T3o8jNzOnApI1D2U9uXXVTVb1wTLTUJUc4RL6BVx4/Jf21B4ZY4A/7qnxyHJfeQ+lx+9G808bJldj1Eoov5KneeieCgWbbHb7jfJw0oT8PhGaPuMTirILwjg5/Wsk/Nmck8dZw8mhmg+XizS6xWMKxyOj9AtUeQMnK+VWsRsSKBfWrdxObY8vqT9MWCuKyGEyH7r0kvxyVZX5jZa991yIcvK4Jt+8YbXfcmcMmBi0AloqOsIhstCFjI2pXFg30sHCVhej381vuhJlG3pfLxfsvbZp2t3rrn1FcnenEM4XsDZPse59bRNWIbvg8h5C0iNU7WKzG+BxUksRuDRQZR1HxpSCqpXZciWTQ+6O38CjZcRfzW4/qYQsP2DEkV+1kIJIleVZ5hyBZEN1AqZDjPDbGIZbV31GOCCSbQLNTEeegFBFRIwOGA114JbEALVQJy3WInAiQhYV16mgeaARx+P1mZ6svJp3RNeiUQ+f2a1gGKeYJbZ3/woQMD/fl8zcf4tizSUzNSPWO7HX7sfYlnhOCravgPw4Ky+A5eiro3dZKXt5crgkci7UXBPwsXo2tQ4/rKSkwbMwDcTML3YiZKzK6JqgExjtSvCUYkRCq6Eic7kzO4JoIS1fIU8HFY0nCdUiwsSFOlc/BUMwGZLWOel1AnyUmsq5FOJd8K0xSWB9fA3r68gpr/fPxLBsNCEpU1bBGSMvnB0JeuSbkDLm6LucHKOr/Ctp5X3Qleza/nWlTHaFzUnnLIOPKnQwbBR3/BbyKfKEVdXE70BzS89kOI05ivBlbRyu8Ol4mt7bsNz/BOvrbSP4Xxe0EGyt/XuhxRavvVDx9usreMz7avv97it8278H2E5r7LUGCz07Wz1tn3j9LSl9uwQPxS5vvP68V7e08LC6oqSpyMEYSSWw62a9r82JuJltTQNKbaiQQ2WdXx9ABmPCbKZTv/LnW7Nk7UOQ+KUzrsxHFJlSwvVpI9khithPMXG9vV5wiO+fi1m9Ym+uEDrxTSyjlJFUKAyk6STgcSLBSEsbmSTZWcYmCZCfIjM3s2yPSV27Kt9h7FEGJlNHosoyuLCvdweC32DPBKU96Bp6P9oi4sMdSAPie1Y3FCk8DWwYm9qReCVkUErsi2rGzqal71NG56sARp6UdFtViFiUoiTktp2qufqViXkpC0R94gRDqVD77ijSWhPBZJKnezXKhsiqJJZdLGm3Z7UJ1t5udLhKNYCrLwz64U/JoOR8eq513YS8R1JCh1SRXF9limpM1bGqJyPimupIQImIxCk0B3yKjnZz25bI+39qTgUgdDLVjEOWQxTaDR6z4qAFlF7urQOvPuqJMZlcR9wETmIYUosiXBqsHBB+xF86Cp634fjvLU4/XiikoaDnvIi2gBDPVuuYR1lvYne6iTgNJCTFRc8fT1wIxtQwcKr/GPGI4VRU0phGgP+5fKJeE2LE9XerYRxUKosxqSByYY+aolqhRnkhqdB4ItMnINuNhGjheZSEsGIDa19PcyZ8bNEGxUMp1UjwzJ0txRHXsxv3D6NPUWEHAFpb+0K/KSjZVEvmd3uPtSuxWjxtLZqbwQUYQEF3DVX7PiE9+6EYyyWlCAN01lw99/b5LDjNOr8T+GSmGRBadw8qd1yuci24eSNxhfhxyh2jyMgk51hfTbz6Qbctswo5nWxyiyMQe6kJ3bl6Ro9GgeZ+Tqq87IIHfNp7hBO2eCfi6l6VY1vQXhQHvqHQWPbU071ZTk9ccifQxj56/QjaAibRgvLL6/XYm+1lybT6Jm49OA5nmht2N3o5ion4gK0VQ9Rg0gC+5wDoyd1bX2cRtW3gxcKNbBtkF/tabf1hX+NG7mO48SBedZPy2crz/SksCg/GsfNXiypznKi4xmMrBTuzCdh1NKNXb5G8CchSk5ji5gSgfPhFeWA5CxHHVFtEZLKpURlL51M8N8F5ow+nRAJbM8hPSIKZ3fBw2/aCT1lhLLR9aGHERVi+RMxMfkf4P/JLQ061Bub03JrEvMJzY2v5DBs4aVm77W8f59Ho56d2kysb4UY1jLRRm0/e6CwUIem2d3p0m98ZRDvK2BIqKW6JJ9uI0J4ZIuX1qkF8J6RBjIqgrpQbfWDO0p2Y7BhtmLbwV9CHbiP0wVs7IRAmXKQBaSp2PVaeyKOuiGI6xICo8EGNuy9kdHm1UQoPrN474rbBxoIuCYXTZr2ojsyeKdWuEAqwEREsaG568DPi5TFB+0+LrasfglEbQZvewH8dXrzMhvdbr6BLteYvXjxK/TZU+1QyZ9W/it3PAyAkI4U8xvJrsZFQL6c/ubuRqqRFNH/G91gTEdazDUK/zJAfoKr67GcmzwnbEwWKExe+GjVesohpyttrNrkiwRbaGzan+3NfFrslycziuymL+28LX83lMPewtVnW9ZRa9G2Zsy8FDOoEkQw3aCnLGq0w1Jkm9qcmhjuyJXGQH2rJMoKvtky17GmEsi623XnjdVTAK6bFdUqzj1VSVWEYCDBPCabGSk9J28kpJuTMLtxl5ftSoRAgfICsmj59GhO0JDqPkkikzmk0KFF2tQ/1wLetfqTCM1NnGi/UJo+fjD1OgJjR0kuKrVS3Ki3iZ0Dfe/HpINoNcfJBW9vgSTm6RIGHyV4xpmZw/C210rpUS2UcrNTlWHtyT46YS4YtLqULy9RJA0fH6e+AXM+TvmOdSrYKyRNPMD1Z7NVMe6kPetJp9ZyMcGKylcZJZZkAjmT7rG5OXn3mAp0FXoOGWpXd/DUhUlyQcq4qZ6fHmj4qdFKn0jAJ3hFo1TweYbIGVHFKpgcPHb4hiacVJPm1YzTzbyvm8EyV8nERtN0jsgib3NGHjLNXthkaY3xHwIKFQJjVnxCvN5fiwPMGYR7ojEpk08oUarI1YDbpYsf48tGsXGIp6h+xfbCI0nfg5IQbnTmnoQ/OcdkdNctPtdT3vZiO/OS5NXImGpdNyXhG17ADntZb/yJamaGdapl2SaSLoni6ilIzaq9GUTADyC9NGzLSZEr2e9hhGGwqIWmYEDHDF4rIKUgm2twTBKHbnANrVQTNn5SLgBU95B5O0CSlQGeun4IrxyIEntHUNtRJqFhUPd93o1oR0oV+OL2W4JOeqarHCRbU5BOd03CqfbD3hW2Afc8IJu+BCyBTCubuL/rIMrAxI6GAEmI8mtEN8IyDnVlsPL0dLh9yu5RuOKW7OFaUdm4ym9jW/w9yT2zJk/+3Jl5ZlGfBi+IXq7JyL5F5sSQ09KVaKbL7NN+hUrXCZNFsPklMijZQUUjizGv4gTSJm378lxf7MiVc9SeQzLZ+DCURzoNLN4dni0F7tVNsZ5x5uWL6nDfX7VpSMzusDc+MWvBAmyM6q2MvgtimPeRGtiImWGgZlvaOFrYiGpP2MUE5Gr7dSm0MmJmCDSPnOV3Qrs1fHIDdh7VrevjuttKwa8iqBzmDEUPGrJldpxFPOlmbIiU4hkORo4CwiY5/BuYcOhrgN2FbtRtHOenU4u1MhwOuzLtOkxWHluAzBTwu5COWHiDNhJ0usaGnCqA9i3uRXcblZVnPDgcXUGJG8cwKxpCRwuVc1zn7xCbtfBUlKs2KWf+7fr1OpeNfaMbAglAmYoxaxb3L4tsBNoAOS6c1Z9T0+p+pqaqEfWCti25d5ewy88yUgylKhghiToWKrsWVaBkn2xR6riIiESxlgNeoeBITlBJKr+acLEYIlCqC3MOP9eKK0nziSUQbSswHx61Ks34rFfYoBoK3juzf6DriXaUa0VNmqLLT43YGgS3DjFHrkTPvV/zosWk+GhvjvyFQu5UYwSUavMvsBj2K4zmtJV2dAgQNKnlRrREb5atDFx+CB2zltR+MITndz7ytlZDeFzrAEqsZppsI6qZO3tTaIxLvNpOud2GDhSVN6CO/TrF2pLnpBiMXFUkxuhk2SIuCw0skejAhFQ71DaGim2PPSsauF5uRtREOh3LHL8uyNj63Agk1vrn5YtOBtMceuZ7uYxbq52eVe1HxjOyPVN6h+VXHrcjAMuu9ZkweXOcONC5Dapv6WQjUE0+K3fIzV8JFrOTDaeHOSkokQWt4bEKKRA2BmtoFqk1uBXkUYX8reAwaqHenMGLklbbqeb3g+0tVRCrWx3VOoCBqh89X+VpoKCbOBz4BTP+LLRi9XAm3Vus7JvJliiM/SvGwa1gKYpdJKgYHM06+p3VXMAsBtMqiYs90OEzWtXr+45Ch0wDayKqA78wXWkFXjbRdf+ndfRVvROVIlUHInv4pWypTkwOL8crazteHiAnGNGf9q7u+6d4hg12kZg9l6dm6a6H5cJlO7OW9nJaoan8+jHuF08DSKglpaI5fLwjsp0YsM5Bfe9K69JALvh9+HfxA+Oc5v1zkm2A0+ZLvtyGcucqMcOoNb0P6XYkwYHhl2bnnnBDjN8iDAl1475lM2igUVxQmenhkPxSmaLmHmXLBzfdldttfjulPifeOJ12qOjgMRS/kWFOn468m25PlL/3Xd12kbEUCscrpRwEW9O2E401ZZdEdaZ0aO/Y4f/yw5xSGYbBWLYcIbRPffxgVFoUhkPfbyzHF0D6VyAf7mBSdx07Y43ka7LBYFk7Jgy7ZjlKCpgnsF+zkRUG9uj4n2CEQ1y04EpEVqTUuK7lpN9uMAXwMtOlY6O+tiNfXQyKmcZBej0YrZxfb5O59YxVJboPXKaVTbZaniu/pfVkoeiALcJQYYorskK9uqiuDacEktHaX9FqkOvKGIpQ6u+4eSh/xtkZB/jfAeA/xoiFtpBaIKxvLR1pzAU0n+wz7R0M3W9QIWp9DEgfHlJbXytG5jdBm+TAe0ve6HbmNGnLCXyaai++PTt8glGR3DWGxHkWQvGTJU4SE6iRof9En9fDnqXr6Hl7MKbxiyL3323z8ub9gSP2F4gVZJbJIWyIA7RRz/Vcz0qaOT+PkPGFtONJjGfj5hhSa6VWl/cRwKspm7jSdduLE7neOtJmpvJsbaTdtzs8pbIgjVSP0Zu8X0srNo+8pYhDFvsIjkRdqN5DyYL2YykRGMCqVtfbL924AWbQ0nipPEm8TDxxbv+cZDfYQYQL40qMKhcgwdzlgfwfiVg9Eig3ib0F8q+qqSe+PLh23oWy6+kdjzWrqck+yUiVPGb04EuTptlpA7e6Ucy/OV/dSpA3nQ3pTt+GP6XYU2YxNcX8DPraY3gsOBo/kqlEjiygiYRmJt7DgkDTL+b5aCxayxPgq2/CYqrr6fbCOpSxHxiCF2NEPK5Y4803JXpJ+ZPbguimdDeXY22yhK8VXUCLKeObqkM6cg5USCCWP20UcHGEVh0ru7pUnbuWXDTKxsj+gdtoMOK2rn4AxQYRgf7+Tvjw9M883d4ton91cnpQLSa4MTfwCQ+Xu42si6bE9qn1A2B1EBNevnKWEKumxgUHRVqqOczPlRRFm28c6IVsgDfrAW0qXQ/eT1PtvBd05Lc551juoFJCYeKPdPxHALa8WRgJ9bYL0VzfnYm5wB3C5ktu+mgXvRiVaeoADHehwt/RJdaerBxCPD8byRSVtYdcib+KQcsLPtG69hygWF6Pvc1l8hA2p1CR4IWzHkDtU5d6qMn/65+GrzaIELDFITxBVyzs7dOBMqlwPYCOFsVcJi7o/XJVxi5J3HXwN8TyPLNovItRVJ94EPhJ/3WFiTv8XNTebpJVDX/LvmmLKPrCmxwPWJsvdY272gpvEhRHpZJE0a5AW9JtaHsNYh0QVsTDZPLHzZeGTH5ckwUtnte2aIgjGwhFc9o4xeGy42y94WbkzhEw1HCHDguXcQa+PebMkakPgOvhKWuLNi/0Nrvc67gvIZF5MAejsHTEtUoz4NhlCCQkjoEYCFoNoe44xHkqRtxDZVCwuUtk3hnx42RF4tfyJD58KZyjSQhlZtFcVgIaBmhiuQHZWxyvmjlN7qo50djGPXi4YasB0km1+Q8egeK1x9U/v0lC75L+zjeGXeLd1ZBW/viuIFT0lWMEdb0jt6VM0QTsgj22bU+0TaqNkVVFgPDaMBMcirCj56B4jSA2/SpDxAgOtKBVlsuryBzIZxcFcYuLZUoYiPD8e4xSXylApdSnJurtR34ypphYEAeKXTWOCzG1StNS6laBF5MlkONNMjcNQbpvWf/wlV/xlsqr/kFvHLvk+1/gmFUw+mYRP/bdeDolQPbs+wDrh0wfYlL31HUJecDMUn8PbuN29CTlkCk+x6Ked/vbTzfHEyIScINiDvnypVBcddw9U+tMuBOEunKDr7IvQPeOkVMZE27WqwF+E7yI7de2NkA9iiy/O8T26EN1F8rnPPERKGzzW+nc+jUKUm95W2JBDd8p3HR1iR8AaLpP5SSHIUPYI4qALfnlDFJikXCTkZQfBOGP3GeGUywbzO5rXS3FM+X8JVzlptRZ/uubsqzmBN74BQOMs75QIeYvieGksLgGjOUWcUkjlV5SGlHvKqMo36glrBGUzHLI/2RDoEhY7INfYNgpqEbtDkdzBjF/n6RcroGGJOSFpUiTZCCg3z5kKHFvch8r702tpGieVjrlj1gDIvFhOfYGxS/68uUAekviCd8lobZG4r9wvkdY5ADsyi/zy0RXFRA+PUat8tCv+9GiRzEi2AihbQwL5jT81RvCkCZuCGocryWr6Zy64zOHMaF6lHud6x19m9OfqjnC1tOHUUx5gKWucUq3/dSYtWyJysPkn6nuzrmauBVPiM8N//jv/7V9PuS2/DkN3WCGOlDUN/OkGTTVikENLMKwXNuXnQizFH2bxmndqPKcIi1hHfHRwSa6lmys1lTSNAi5jF9iTc7zGedLFyfHVqjmhxY4nPsudLGh9PKWdz70PUnIDodOBnaLDeb8s+V396h70QzAg0WwPM0tSTBNYMuVB1iPpvXJcHwcpPPZNWZaYiomTrRWh0YsD2kzwliQoQyMJGzdcKjsqOaj5NrPL85YfTeC2fMgVyGPaOmXpU3KWcoaXZMI3/6wcldzvS9o8a2lGfedXJf62HXPZ8Gcwlq8cxu0itfkimM8DtEZqZTPXIs0G8qc5ZznA3sgCttv5Znj3H040FOjldDOo0EBS/qhtdnJd4lq9e20e+CTLXAkBPDPKr0MPZFV0lnG6LELZATfLf0z3gfhhIH2Z2o5rdpthwwwi5fJwp2ZSVO/reiekRVe4R9ynIDMbchnnF/PmDaGyRW7D/fEfW4qxSiGbqysqBZFNYua+OJSHSzPG+skWzUS8yTwy5hX+CNHt1AYpL+B55i+OaZXEG/nQbEic6y4P0Csns20WDTZt3kRlIbyJnSvom6q9f73A9sIuWD4fzzIxtIytU3mj+IrIV8TH5I3iD1b4uXryz9dQC944FIfwEzFlyL9zKxMqfc/cpz1l3JMTHF7hQZTDbd7Y3cZoZqyKwb+NEaLig23tOHOqJDbGBJm7k64uGFPaLKnduo9g/+3Psj//mikm/n2+xmld/eC0D6zj17o8zJL8pYnTi7fU46d9YV2h9cUT/vyyVG1NSvBGc/Q8i2LwS7jDVEUFwYrdYsfa3taR9b+QbO53RfN1KOrKLLf3vnh3ONapxElaELD3MUjqWIG9lzHiUcAUFrc6EA2nzjqIGrt4XAOa9w3LAj1FZSVmpAmZK0xOD2xY+D1/54OaHOcmBadFV1sNnMwUdofmX6LIFeGT/LoWbfUXiiOSshgDRYfAMi6K412jvQbdKuuQUPtTOxEjqhq/wyjt8y8dLAX6v+OHnOhDHdtO/XDTiK6b43UWqxPhObEawo8gMjLOqDQIZRHd6bF9p+STZby7iiDRNVGLdROpj/4GfhTD+KVF4cRH5B71F36HzGrWnayY1t0XGpyNYPb/pSDfAXhiguXnXfdCZLSxAmlo7+4fsA8okJKKmm9ym6/6fJ6AYtRPjYaOk4fcqF9mVCVvu1UhqFUeEkuIrPGciZdaqmmBBeeWrxGXjrL1A48I1nC+BCmLiZqNH+5x/WVkQium2SPW6Kp+3pXIc9PXnpm/Jlg0FpooUdaGCbwiCzYIdiOxrep55MciGooaf09pVgbaJsu8+sYv+HDuhQWOTRGvwyxA3qRs1d+diHzyf2XUf75Kc3vcS+pv8PsyR++OU1olc1Edi/KjizRnO/SFGRMBXxpRwXfWGwpJ3M2Rap6FsLkAOuahcOQGz+11d/8TiuShLlhvzUrxX/kJp6yssQHfk3mkdXEeS1asQgbktLy6oJyoQVuv7IVqC7N5SmRbZg+oYIQSyDh+ghkBdIwFe1UkkCWqyfMMuuRdFHNQ7IS2/XzLjhMhtxRwSSPzOvP+Pq4oYhHw8OHNqbPJRIy8OHpKwx/i3uwDLjN5aktJVZGfX4294J2ccfEzuztW4ZVeW+Te9RRkyyJ/qdJjdbHLXcx6qD13v+JmjKX5TY8AtXtcuvQ8bOZDX59EEL7vxgI5e54fOuKKJWXcMUA4/Mif6W6pL/2S8xw9ZS7e9MUOTwLDTqfNc9wa1g5LZoF7nF4WRGHYNFKtBXfTWVGlsemZ2ttCqCpB9AXZQ9A/gQTxU+oqFmEnxE9jeGhcGB92xsRb0WQ9fYl08P1T5p7HEe0qQbFg7RRLxeb67qqz+Ryt5U7FEB96AQN+sq/64U0ENUa1Cx7WSHHQHsx/dthVKrVEwVBqJuRAi1mcTyAlOdinuU9yiqhAYlvxMsL+jPvPJWLTpSnvhgpmixRh1CHq47Slzp2eW8ulo96weYcUt57TDyWjQ8KFF+DSXel7UInQOEPL3zsruql/P3mWPcalYYhIJqC6QL61VLkgjDl4ksmcdUC8AVlVIFbC+ZpqLalk+HL9t4DgUM3c0KBzoolWBIFkfQcYT0w8b5uniuR+lNmpv907b7nA34NlYnvnjm8SmryDoX/9JjhsXgk2r2gw9iBk+9V3LKUEBydlmXX5o433j4z944ZeMMpzsBnvjlF8lGPbhyfD1/7TbjTlVj347xarkU6OKrciFZEETA3TOMwzW28du6hjVUatZsSYbvJ7+NuvmjeMXeZ9Tg9IGm+FyjWFWl3o39fjRrphGgt7XWObmO9y4+EEPZk5UDhOeBdrSGnHXSZSJ7wJLHTJjFnknrkkULq/qHBMFpYOySxfzYogkDL4MURq+k2tBsCb5jBpQVORXVZL3wAOSCvibh/3cJxDzPI62WMBqqNAX7eWRLaATjFA26f3QDzUuhLPgTXGt1Ut/jYHCzUiu2MpSsM76ezby4c7jGKbVaXWXWcz5BWEtR6gKSfMqCZccL1acqOsVKTIT2+NIDf3soMwjmjt0Uy1GbMNzISm2B/R0F+XDvXNdpqQEEsMxy6odWV7WHabpqeyY+4t81+bxc9eQlOtWP5DDTTZ4qROsVbRM3HFtdXWi0/B1pnK7pkwlSyng801RUaRpjdzXlM1R5f5iGkHas2ik6djpByaqX6AsfG+QKwnxRsRZKvmSJ/FxIUnAoiQSAvLNSweJW1zEUlz25CIQkXpWsk3+v9ZXJyhyeoYDbuoe7w3zOlbv/c9vhuQgfJV6YTLmK2sPsvqnmzDRD50PGYp7qkuhoqzHdYw5R3jSjIa1S+3tnOd2meemdJzeU6rhO55n1XMQJ92sge2K9gS6S50diE62V4DiRVNnLXXt5sXLEfebc49rZ+0wbClTmN7N9jo8oHbW9Gkxl5os76sHqiG8jnmNp3Uzm/pHHgN/bj02D0eTjwxjOxVlw5dn4/S6T7D5Vup7uS32KkRIzgWymUcnnz+B9XXzPk7rIGG0nehTd2L1MY21EWVoNEs1Z7rDYH2MJHH+kpy2q0r55b76wUTzKbqfa4evTCPKfdJBAsST9e0OAOI0dWd9F8qm/1Y3Uv28IAzAw2DUzbQtfwiusHxNvASdaCu/THRxaIrjlOy8t+SN8Q4vew/dSsa1nzwD/041VZDOaRTFDmCICab6664kwVDRgrarUen5I0eIQw58+6DIixd0wYoB6SOM7eqgrNslpILx6RN4JNMVS1TPZaCGUr1+kar9Y+tqEAVJPZ+2NSSknInqpUVv4l7/qpKmkyfmziO1EefxzjdQWhLAKLlKe7R0Yf9fX5e786AJymfGd4BrX9SzECV8NG6/g0pexu+M+SXzapw+DXa78ZqXI+PG9rbSbnfJ7ygeGe7MVJX6pXNZz3WYMPrG22WOouuwE6Zybtb7aTrK1sL9EPMRWd0IBLBmup7lt4RkafKJB1t4AX9K/h13fgJhimJsyqa38XJf4noOdaoUxbTnBgZTtqpMaJcfciHJYV0WtuYu3W3N0qmp8k5mhHwEnofWPj6yf+Yc/ometpS4JP4V9xnoiyFGktPHfVbwhn3Thr8C0B1oela540IlxjCvWOQcthgWtbADpNhgKU2+2d7B8wDNdY8UznJ3xd7+TiJi9ECzIwU93v6SX3VuEB+BZmxNAu73Da7lE8nu8d/zvH0BwBdKZ/YOwVeDvSoXrCSr6tNwXznTbnXVEEw2IbhtfgBmWe3OYEnJSzqvVMw/OqccIEfnbK40NElzdkBd08CiI8i3mrZsBBKrzZ6BSPgPYtsZxILTvJELm1UOpdaaAOzVZ9FhyQVn3BM2MKT4u+nU2lyKdyd0q+wP7VwJR9pSIlUXoNh5adVcwpkStSnRLCpuMghS3yUcXvXOcJrMFeCgkVzmxE5yc9bHwB1QlX2+BN3uyIjKwhfye0Qi9elBSK2U/pUEYFa/aN8r2RoSwz/x6adqVw9dSjCLd/pCF/ZTijVCPD//VUtb2zS4a6Y/8iSWSVocvzUinFoF3x2RnBiXtIJ14dsaN0kvgU5CmbJT4/FFgQWqwafSUTXJzp+ZQ7jHZ0j2S1Dr92DQa7zRWAd0RCW7Gsp3kVFZpIvy0Nz5Pvt0mwI6DCw3fIWfbFq0T7BXF/a6aBOhyiZgMgFLp38WBGF4JdQgocq0MnQaHqaJULxAjGtJyV/TWyzHHfX/PZ+/+Axx9JczqSpW9z6HebPVnod9opx+Okao0o4slxPJfwbMIPD3j1h6zy0wln1DUeYxzu8Yyq6NzcG/A77hHhZeDYa0rr3FY//Ov7KetjZ4IasTduIuZ9VrHjgYC3KBg+mZCwn0bl0XiQ1YU5f5MElIZif/Pf8Gg6QQ17U0zaPtTohzI0fslCYqFbtGT3v1yfoeNEXs9mgqKL3cp6skerqdeyIIf3vfWdXcTFAZ/GmC2aYOCRuxf3Wft+zFRatfo1xdzb93KQ4Sw7u/OdXp2CWCc/aamfEx1EojPuQiHkRsmDpK9kqydFA7xzxgefiNCxaMOVzOZsk/tZIEuoY1l0SuCXjSSV04YOVhOJ31aBznGz586GZE6y+XBqGw/f+C4t/a/r5gV2u9qazOS3HaJTjezdJZP8YYj06g9yDaudUgxv3hTwe70h9wXOCy72ru22xo9pnw8u2LL2Swc8ci30BVLnD38WTeu7ibIM1ohGfj3BRk0uvojaPr0cRGfobq8SiGFM+Y5mvrGQODcseMUJk4XDkvyqB2iQxiVY/M5ZV8fwzOaA2qeGdlUafCbZUtdw/OIYhNkuzoku/INBmBvnE3EwUQRIp8NZWKAPdJfgcI5tbepgMSyupnYvJK1TSaU0APG4iTC6wDv+UQZ+mtYG9Y6Kg+5BeY5nb20wt6DOwsS3u9j44v1rfWcdpkqqVXTz7ZeqdTKXGy+ZrJDpamCzZptkG93rkYEnd/orETVGk43qkrOLlrswoIO70amHUU+bj89CwyNY/7DpTJNbecRlbUw0pGleyJeaSw83TO+kkVhPNEnMORejSLYi5W+T6sgOtOGxI2Be1+Guuv3WNM2P0iYj1YCcGZlxKIdnQgGoV5sUCKc+rmHtA6cEmHarcLql5MD1KjfTb4G5qNoM3pU47wzvRWlUrSC1YVIhq/3aq2s885/6Mq3hShzjAT2wIV3R7PussBX/jPFVQTXQ1QfQItb+jpk6d3r5y+eDlPff+yV/uX53Ixd/qMF+vH1LxcNHTC513lg6KbYzHD5JlZ1V/PMBM/OUszZZC8NAQD0k8TEqHX3nyhLuZABLNKPKzm4uiMMNoPp9pseJqCfMHmiZ/P07qv1TOClVE3zULjRDlm+bF2RwqfooCvcRYxCUa0UitL1Hwiu482BTFF9m5Kl5G1EzMxTLzcxC3hnzOnPeid3JmNeOnMUjidPHsMmnFxhmW2bN97Z0/HEBGvcFMQHTxU0+kk+MpS6gnB6dMivLzgvPcW9f6gohAY6t5Iws75yrOuYpzzjmHYNQqzjnnQg3z0E2pWV7gudPyEyNqnZZh4pcpSRDQHo59QxBUlXu1S2ibU4kUi168bHPKPXgN6fnM7JVUfK41jCCFpSVZklCR2GUGCiqKrw7QWueBm3UOfgd/77tOC4q/OU8NbQXP4ir/HOdQKzNwOzSEFepJWI55fGQniMAGK5t8NL7V9ICp9jGY6IZ5pCWO+YoQxTYMeYaCokUnJleBUPMUm4skLCeZ3pYC3zzyY8qxmGQB9Btp44V0tlnHNbFdpviyLV4AzFyIacdSyJ0XaNlXHD4mP16KZttytmrcZLEx8eQlanHpLBOzkNzSKTZZ6LxlaCKkPazs2M52heUwBpGA9F1JFuykrsp5rVqETRY5En4Bt9iZ4MUGuq9RERlpHsT5G8ZdflnCHTwGfuhRRxLvFeN9enncw1WQxgVLmX+KeB7t/kiWf9SRvT8R636FMr4QjxQ8r9D7QgSRfv+sQDTV+pI0/LkAp9AZi8PEEQeWryEFxH63vYWetj5KkG7dsB5fu0f9TWGQPnPkFR3OroXtdxjUPUgbRhAMGYfZvH+fXWy0bx7vgDS2+4ftGPmhV+snW5oj7jbB+0fIsUXCLtd8IvMQSJN4PPMQGzCWI5jR902twonvgR02IvtCGXR25hS8Cl9Yl3D8jpn2RYslxMF1QEeTyZvlQl8MWMLBwyo21u6Q7Vf6R6DIOlyGYwWDEymxivyD5IiksUqwKcnr4Wtu5SRKrx2hngj2MRKvS6Xsiun6FkXyqgQhJTqMHDjwM4qpmuPVSCAoTy0sn4vTYqE17TDWZGUcD9M2dgjOIUSlS2XqtQdDlghvhFkQhFzryOQdpsT3dM7oEuYDH+FQ8zlVtGIQ2IlLOGBzelbT6BMv2ZbsCOOCkEaHpOPZXBwy7eaiyAccqigZfpvZuKZ5uQ9XS9IYh8KiwHxooFyzGhc+izwWS2YDp2HZtm2Mx/wxBPeRQbjcGQv3rj8w9mEmgdnASCOmK4w8w5LQq/udlFyzQ04i3+s5Ei37n/n6EzyQ/7NCN2h4EkRtfvwHdXiHwQ5kZUcfA5JyvMlxLps+uBkZFhnHyXWVcodesZUrP/UBm2BgA6k+/wQ9Ch+jFpnVLHzEwDVXEAmRg3JfNaIcF+T3tD5cR86fEEAS2TYuihoowWW419gYt0hQwVs2MPIF9Yb1nPB/enqC/TsCBm8qy8T/PjcYpoq0N8uslJFOWJ7VRmtD9TY9ZgUpbRrdOITSyyn4ZPSxC6JX+R6j0lqhyY2TBcFi9YGavhP7shjksGEVkMXy6uq8E1erF2VB6MOw3ZaEqs0m8KcplOWxneym209jrPCzbH8vkH7s2qUCto8T2oTSpiNYybxFgp20V3sHpnJOJn1AmXmTVxzXM+VMnBpVzCxDz/DtdMskihJAdCDnhg2JIaOiKx/kXGNMgazS1hioqt7YITlxZHBo2XhS+IE3iLm3Jz8K8jsGgQDkHUVCxCPFpMzmF5zgLZsTThZV+GZDHFYY4kni2hpXzRjF2+KjalKmQ8Hyg6pDkKptfe7tYwbOrTldpox9j1XPmFsdL2JsVNyEZuSp6VrzX1w8J8rlbuqhKtN1LG5rzcVKzKrUlSpl8+b9GgzWjy/734/iwKxGyRBvA/TgcTKNREMhwT1YTCTvOKDlc5eOcHUlrpZ7/E5/bZBokjoWYs+zqhVnIaofuutfKBQR+XZYV59FsqxP+Pu31hfwh2KWkPKfOkPumZJENqkJLVrmx0449RLLepkU8kKJnctBw2WyHzAsSTSlNJPHIu7S9aLYCNWjpS4kCDZu0Atv+SEyJOjX2X4T6kB0BJrPQS/32fZ930stMuTdAX2lCkoubsUnR67C+Pedh66HmkGmszVfzbyCLTgIP+jfff65hRifMJgo6Rg5zWWO1WnMtRtTfs0C6z8hqNbSXjvynp9OpUT7i5heF9NIl06XEDrwfpnrIX0PO3iFaV7hXSeyIqf5HmRpAK29fi29WzKpnVAdz0X9GL9flLR2ZMlm/JA81l5Te4lbJRmgzEXdrGlb7nu4augZKm+5hKI/fGmcoVMkHC1mQFi1nmmJ8XXk8OveHvnRq4/goQE+Hiqg8MIic5NmnWw3mawYQ5ub7PWE9FA6UGqFD0rrQ3a7Dq7E1c2OLt/yLP8SdGXArLtz0QUD2pNuudhYaTrGTZlH0FiXYGppzdgGAmhu9vJJqaH8gmvtS0H/PXxM70li9TF0z7Dh9jm/cdnzJAdCvofUXFxQpfs9ksNOOk5e9htg/ux1YXon6fkrNH5Y61zpgpPKT94dnol2120KcAdwqHcMT3LQp8qjwCBwVTvXbUG5mo4iCPnav6aH/LxRyk51W2BuYpk47nRMy0Q2gUKd2yoTUSgnjOjI0zJdyG9jcjnW/xMiUpW2I/jSkEFBSEL2rzS+u4taiOMFmLhTBY4b2r/V0+ZhJNZuh9a4d+lw5ZjkW3lyGThf5cTXfGDaUfFUrL3YaBuVeabU3FIssy46a3qaoqYoD03RX857bu4ezd+1uQljHwm42uuPj11uP2v/1ngdn2MacyhEfpUYAGCeiz4ywyFkyiJRD7ca4lWbdaiFNRiHWUiYCrV6xpXhQJbNsYsdcayHrGfM5G5Od1CZoNLdXHGwzMnWzz51YCGTKo0Qc2BPTsph0mlsovLd8Ar1p0mzghdQdKcuEJ/U1Y+xfjPzceqJDxJjJS1fyDCPtGCYp4kYKiWRig69X7Ef+wctsMmTxCZCCN/ukRYyrTAKk4BUjWbxogN+LZdXuIwqq/WWYSbIEQ8nYs4uxWLh2aauTnkx16sgtsrOq6YLQj2sdYHGf/KAb9B1c1W8VFZTAjPfAdtyEN657IWApy+7+xoMePCQcTz91F/oqhClxMUR7UC2tYKU9gW7bIooR6kURMnSADm+j8iryQBvbdgOjO1mUOOY3CMKv1r/VIrmZ/d97bVHUpzjuaTle7TVVmX6xHH14WsHyNfKLEl8fVHFHZUA8PfYawqSIeW7Dc5mTCntJp1Lw6TDfTD3RfMO+Rrs3pTpcS58unVljWE6Nyezs6wN1xMBgrRxkZajAUowlkvADEWJJLPVGkvZ47sPOrISSSGftTZ3BHMVsp3cE4nbrFt4nrAz/XY0J1ZOjlaZMsayPE3SxhwmuE6MggLQl/quFhwpkQsK2LCDyJ9eh4gXH6uqkNVuxRq5A1EXOcuqgHF/vJCnv4bT8mMberW4jlRcbz9zS7vaHY7vdikDx5APl0OiNeKHHqOJf5v6I1EKPJo2blnBwfF24KRXijVNt5fFITE/8o+WAvwqF+WgiSmvUDns5Zr+ilb14GilASeeiIfTYYIIkgzEsNn0bCnheyMM5KMH5R/3nKwQINHW/TGRJwH3s+nS5elKPTSVPMWHPy/+lJqOhYvT9ICS8ekuk7zIRycwmutsdqmZBQRn8GrD2pOCwz4V8/1N0+35q0kcyQd8+SlSik6kSvZeeJFdN9niKBRV3QOSxz9wre51GGaaHF1jUKsqzUqPutwGsaHGducxZ22Rc5MDX2ZhtPwgmwI0GPugpT3TSN8ZzdugxWxy2qxSB9nH1ZId0q1PdCRDmnTYpI93TV0wwoBmIgzZyz/XTkylDxMBILLD4xwiq4nv1HcJe8EUz8Q4qk5hMBDuCkOao0FYWkKmht1cxacGWBD6qIp/ts5nw2CXV9RkDsgqWUIyY0+DSwtAmwBeXtPZCdN8wYPF6+n3JdsFM5RM3SyffrXjFA/5NXaJ5V1cfgYXR9N+/Yctb20xjjJI2deYCRop7QzNPciZn6VmTJ9CsaP1xBIajLuTqq7vCtFcvA8vs2MHSjp36AzdDQw/dRMtZcRBbgsPzwh8vkso3fDyepQL8xfsV6CpCI3mxoB61qjXJpf1CVDCFV5BIDVKKzY7wtOosy3A1VFFxuzeNUwcGxettFHKk+fSWlIO0eY73fOxlsFkuFnCj+/Zl8rgUwxFIVHxxm2gDGWhRso0s4178WB4ZOJTpF9CCXywKPdck3uFYQlr35z09NJLYBn4hUCdF+StzeOcJsEI3eJ6jjqNcjFZfA4VIHUDxZIPe/z60yb7VySdsvsbNdWAS4Jkby0sKz0HA/Zjdn7KbbngO9eEVSvvQuu26/E5xpab0vNRWNopDrwmJ38jCp76FvR62vXw9MTVlUnhT7zRMSiPt+m8zdNmLmJsYfAxg/VEXtcqiwu1/RzR1yzfOGMe1Lc0d2XHrH+StANVppQi5Lqki6OliWWZ/F1Q4BDGxSHMXjM6ZoACF1DCZJK87PdEbxKA0jL/LdHwubOeYXKQXgxTLg2oSqtNg71hvTQRD6GOU1e9Jr5zHGOZIdd8LD/h0ec4rvlZ1+dhYL8bCfOXydXfujDENWBL28m2m3McziyAwXdwrKWQGVLP6pWhflLdQ+vr2FEjGCXuajjvXNMqPwJw9yYyJ3ST0j08Nh656vjTZWC/MmFbD1Pb7y1A2ZQbsMC8gG0bzyTz5ZqskyoXjpYdAts5Wb3/w482ouXWjvlAHk92EqbyOAl/At7lSz0xnB4NUCsLq9ATkYgHu85zpvxf3MIE9gZVvpIVpo+HY+ZzbrusLF2EBevCojbkrj2sTG+1/z5e1hHuQtI8RFf6Oy4CfexlWGGuYD5XLmEVL1HX/Vx0hBZNTS3YtMq1cMQyGWgSevRJs9VEResERaTes8AOg52yqZNjYUeMK3qgd8pkmx8rzI+ia2EnJqL4CrxuyQfCoz5pYNTggrhRqP2FQjHAzUA3Ceh4xd49lcVKuijZ30VlEu+C4pzgu3XITYeUOdLExum95k1IU5ZNQ17H7f/RM4TcwTvvG2Q2ApXWBuJFVmEa49JNMaHdBZNlUz9P0KsDb21PYAvc1ne7tsKmEDJ0teXkJZ2djCUXyjgIKpvI3GHrZFUI0r/FoK/adwHJ1O3ekR52mzVdxG1RLDckA1qq4wcVc/EXdZljEVRC1w8m3pYsC51PZdfYCqibri699jW2eGhekbBzG8TbuZDXaX93BN3+Yxubb94lDQ7CsEyTc5OwbxolE35OR27pHogNPwmax3GpnrXVAFLtPszZFjoRRB9JKohosz2kMoPd3j/QF2HgrR3BPdzFHs0i3+DmqMuvfGB9B+SZwCYoETJdien0713JLcuqnVpaK3cN1OB7rYfzLMDjxw2NE+DL8XWjmj25GczSTiECkc5EsDtXfuUwL0Z+GH8/IHK0/ap17wLlIZhmGkNIfE8URq3PlJ9DmV2IR+3MuRY+Coz+rzw1GDfw7JBbOZXz4VK1OkMg1O6qdxY6kLFYmEy8Nv0vRuIOytLk2wWwkrql2UREv35P9FrQ6jlk872nRXg29G7hsf7tZAdm+CEtKgEpBSbxMfJSgkGMYbfzsAcSYLcnuFY5OWnY6HSl7B5YFHYneTfAMDUHnBSPwAPdAjfBbxF3UAx+H/ImpHVC9vfXwLZf6rc9X0DfvLY/iSV0+IFzg2MMwz6AoHbdQpnz7Gt4beKkZ6UOPUfsrpuR3n1nvoDaomX5cTr7O652k7cwpmU9zE2wCMkQ3FgfcHVWBe/Wk2jR5XEKbugvUXuEemi57XfopesvlkC67iLVM9/rNSWDq8iWxHRxG25ikTmjKj0toD2AMk4cBKixyeI4ObgI0Nj32RNAe4Ey8E0zDaOnf10AsTvDNYuwDYeUyoMN+hlZwY7hZRxJ7ifOWfDMblYILB2BezNoqL2q4/VAgTeLOWFDaMR0AJs8Qvs/Hi45Qf/mEDUnaHIpDh/p6fIPxYJQE7yR0J1HfDit2Sm9Flbw9YfMjUMGdPZw8ktFJntTBUa1EY7Cd6X8o4aJZwyqAUofT+GCoBICklbMAgAsU4mZ7+90Li+OSNKd/BdQ8bjCkoxD5C50IGWecqm46xQLkG5p3HRQxomiOzFC/XaTURHyAVjPR2kHqGH5EA1OX3ckgSzZfSBvhqsR0/z31cFZTSyUovykN1Nxv1r0Sp0CSUuE3/o1m29vHPclV9CUYmyV3oZYwfLMPegEA3VJPIkF9fbJ9dn0Tcb5rdAoBRdUTN7EG+yweCrHm2BTJlGm7fAUGKLcr/+/QsFsgEERX7LK79CSO+k0cgQJ42eOVTdufbYYhJHsJB62wHFZbKpwM8gF54gaaTPYyViMmzzZAgjZlU2rudw9FAFeD1vuwWx/PYHy4ReXJxTvC1t/CLM8WnhkVwlb80RQTrCkxy/09JDFc7h0X12Fh1WhEwnlsCpp+Pb3ZINyZtT/0654SYq0419HGSFzpjKDNRf2F4vd1Q1at18/fh/9pxvdarrg452K2S7O2hIElrpswZa/RZVUIMdKk3sRfLj2ABbYKSXOSXMp330D1EFQhk5DKKJCVeEGCh5yEsFTY7iTj/S76YuhmPZuI4WbgUsm4Eyvh7z77k9K36tIP+6xZHm+fz7DDiHqkqNuWGJL88jAjrCPfFGxcRcRN1hIM2CulB7yjVO96NEhZC96dAi5EGNVRwlUTJsdEb1Dg5VvanNopz5GdSkOb20uHD8xaFV7HUh3N89xhW7VibOe/C2pD64Jp11duH0vfJZ3vpTUR8/FNduz5hRL8AFlpZ4HFdIt5fJfmcUH/IYvbr2Jyza8y9nc3dv0Zh/smyGJwF6OYkneL3a9JdcYL04dDZ2gWycrg6ILzb8B0RZ6QFQ6w4++zUEnIVUOKaQSRbC2C9uTLI4bavLe1lO/RCrNDhp73QyWlf5ladFpW1y7qgomcf9laQBMkLRiYCgR+J2vQgB7dfZaP46EKXcRnri/sao7PtXnIT5uJDqwvk6+hjV5LhbVJ62OfBqcTI+TTSnD7bsprKsAw0UiSJHwPsL9ERGlCaqjw2/pvVRkygRbEahORxNkNBvXuwMeV0vNgZ/c+Lgtsbs8e50MW274qopVllU7FNpKM4xo2kR/iN94Fja/UpawLnaCFIHpYVmAVmLm4GKOynUW+Nl6YJffbjDGeilSD/v/oA+1WJ9W459YeuAswlo4/mDx4hTmqu/L2LY8g9XGg3MmPN+GkeZQg1UfbnJyVgn0KJHjhVg4XRCLwQIlw7hQa1uNzkJutlAyBQYpNuAkuuzwkszGPK2zH5Pyp1HeaQcb/oPAdV26nXhaU4x0Qsm4qckY4v9VOf25yshyKmTIHhhEY6NIgv3RbVrbfC+eQs5Tfiw+159cmb/8LCjQGtmgjXqofnWD+Su7hpBEAtW6zXfTb1C/zmVqsPbzNjC0qJmwT6a9Nt83IF5YWDSJZlkl/nNhWvTgOrJ5u8XrXX/+Po0oOMExVfw/HM19H5Jk2ZG4QZR6gkyuiQCNQWs0eZ8m9qedcsi7bkAbith87XLaW//LxaY95Ria91sEBAg3BCfVQBd2Y4xrUu2VSkCoCWcw6Fa1z1el4ndPhVc97xmvzYccMWz0nZ3hM/Zu002nnurqPx2JngaIK++cRPTd0lACgXGCiIp1SCw9dCxLcNFJATESSRMLW/Z2Y2Mj57u/Gpc/ir4g8rPhQpnsqYTWIYtWOKmwfXqkCykbSQ4zFAK1glqUGTzFw/ke8jwE6q94lhCRySRnMoRVhYzQT/iihgX+oLM8OHf5lmQ6jOoZYx7KM3sHDqYK4KodsippZDNwbBne/a0gYvU3oC+40SAYp/+4Y6+G+guV7OEF6HVFWzB+EzB4UjIJjHkCzjSAKA061EWc34Pa5bcEeZB/DrE+ZcC/MDG7nSUQSV6LwqT0dEYuTO4igbaRmwYg1iN6baaBTQZ1telFPosXxuSCZ3ouRqPjH9TYw+BuWwMb0/1L+a8jWByIjlNJSqFjfCKwx49j1mBZHuUC2aZDzn2akfW44D1DuGMRNFZqmNz2tM8VrQilo6UwjUkEQlaOLXdoH+T/MQqAeszaeSXRTXAXcDcQNNk4yVNzbTVPS8A534FRTUtZBw8VmZPqBU8E60XVDsF6y0OjNh4vAkU31kHUBIvLBj/mjw1RvGcMNeW708MCo1BrEMB6LdN3Sw2RnVAMth9JywAhc97ecnCxNoubJOa01K5NhwMgctFDmKDzy0tOcEQLiVuA+22LjEMM7S9iRuBuIIC8iS9wNvvqtQxPhh5Sc2VQfq1ARRgXooktad1wYa5W4koKmX/4NiWdal8S65zSV8n9gKNLASMpfn+rZlJYkYk46uPoUQchn8riOqnOyICAufbs/OWHSBeG33ovQDOMsUuP/8U8MK0A645+KmBIasBIiRRiZKBQ0AE56pGAUlTSSYqXrlGJpBsY0z7MqATDtdH2XYqtI0cy5g/z22Qg5/wQdEvPFN3iEC/C/KHB9cSG8p+d1CEuBkpEes08Yg7JxH9yWHUiZLOZt84ymuCVAAb5a+EL/PZD7oHPpWVUfKkaO/8hVb37b95L3DzojzPhxyfw6b9qHEu0/0D+c80+Xa2Tf8N/1latVBpJ/eeyDRDD3r2ZYXCTGxPITpkzahtJ+HOjQO0zq1WuKND5DT2yKtN+ysZDhmwSG9Or75YHpwqCMy7WX73Lf5EnDAA0wX/1PAowyXYtneeHSCIH/fZYRTmjkIw7jos5ek4ntFFlBzdpfpcre9P/9Afnf1/93mZYDeU/2uhlXSV3cuuChYcmqAQGMo1tzw5otRjSeyo9iVi9Xex+bsNqZkv9Zo+s9KupYFYaPiEtGLDvE3qI4JygjrTF+0W0BEwr8ohU7ewsxzL8RZKWW3A95Ze/aA23LOj2i64Je64U0Ev8fzNFQNFkQh1I5Ueru2HqLFXyl/qQ9mP3gc4XmDLDHY8xrSaRMlVQeL2//PBEGZa4z4I5fILTcNLuhM5R9hg90WTX1+mabzWDNvVxfJWldxoMbPl2cZs1aAwG+hCWGsAUpK88sDwyVJLs21bxi939ZUXoenJ3/OuTbdmv7mJ/rd39xVRZv3YOrouGitKHWHITvr+3FGiYd5Y1A709BWXXRH1tx4fnfdpDLe+fYguA3obR8EhT2i7lPtHcropu9h0ng+fi1PtVfjtwOX5AkaPX3Hdz+f6US3/vzyR8upHe3XGubEFvwZMeWYQp+heVYBPtBvYyMKpTjq+/fNPUfdN8S8TfIupaUdrNWWTu9cTO+mSzvb7hEVqgEp/WqOmqe2ZzQM2xOE8NQW9P4Gk9eaunyp9NtlwGrs65peLehilrI+Wz7x8LwjYhPmX9/H5/31zf4+2f/h3GL5qs4v4tSYJ9LGhaeuGbtqPVzuILB+r/mxJ59MSukrajcY+oxE9uOi8PennkplGn3mQV+AnhHA78mFIElGwscfW977U1bJNwsCtZZyUPh1izYiQX1g2huYjaM1Cr8UnDyw6ygCmG7+d8rFmwIKjDKEB6/snpYZJRcxTMBV8z2yxCY5teRTwZUPcT6TWDo25IbR+Z6JVrJfS467OvhyrPKNlvCRHopcmMp5jnVVRHEAlJj8kTustz0DN1HkVWqHunSx3ktivbDwOYvcqNtBbrzKwxakssu0Z8YsPq/nSfWXbD5wBctaaamOjDeoGHDxb0dgBk7t/Bv2KkedPBc+f9PMQmDHWVHk19nYTt41edpg75h8ZToDGhlpIQKCzCiHs8pef2nJSwo2l1b+hERQlthVq99L/GI5F76vwbl1z/ydKXqSZPrn4ic7yxuqw8ylV/8zT+E82Bfr09mKymXC8sSMvYagWzFa39xcWVxeGhP5Z51wFPpdXzAzbZruclszIi7a/5YrJI03p8ZsfTSIYtDVRyvzGV/GXt9ZvWPhcE9+/nSjaGBdhB/vDnpU124+u2tNI+5m6TfMQaf11RdPBHCVZ76jhQlh0ecketE+W0BK9tx7Qf8FBW/mqB157hR+kc7di2LfHUYW6NaD2lL/jijo0J/xZctolhNTD8VpLntmc7Dwy3Hd60ibNhQ/mnBN/sCdrUPsVjLaDBCEnPWsqrMp53AdBf+620c3/d2a7bLrIW4/xxY6tey1JeXu++wqpTfsq/hVG1Nn1vs1CH9iXWR6jTRffrTry5X+YzZzpI2PxVPkNj+86zKCjCqi2gIBL3Lzz7qh2/wGFgEYNcHcRObY6iOQ3fxNEZP8TSWVoN1bb53xDOw9+GyQVvDAcXq3eGhcvmD5UWpTNuXSkb452rLGk8uG7lzLi6ifLO+M5O+WAa7NayM+28b+XW1HyIcmU6ulVuTEu3WfrXSwHPI+Hj/++v+GYzuVe+2xzcZ3m1WXho5aeZfZQn8+hReWHee8xyYp59auWtOX2O8htJu81nssKqBdZkCwsYhTzDuoBIeYElTJp8wCB8SCqscnyM7VrnEE1OrFuAKTMsGYtzAy3F9csxjsJMQv7CvoAKGeHngsu5o9DcwTkWjMW8O/QHhjiLVRFadGVQmW/z+pApndr8qyOl9/Yh1nulH1a4NFUJ2YWX7hXBrj19rLX4mtWHVGWt/VUfjNKwO9ZnlRn7y9NW6dZuPR0rHdrturmpyFjrZYHKyTackcphH3FdQg0lw2pAjfJJ0sd4L0+wriBDzutmhslO/sSqCnafKWLVBh36wFsP+Kb+BlME9z2kuu4MO8CFMwMGALwsxP9ks0R1SbDIfXW5dEhfCZJ70N0KPhoTYOrHyKuMpc/5zcNQeaiIMm46c/bG7zTOZqJrXQTYD8FwXChvnB0EvSipjnuyoX2v2q6cnBDq0s+k6x7QCHbP0odeLPYbOEty1mY26Ryqe+zA6lfTZLVjRgiQ6JESxKB5cId5pzM/jr0sGHOy4B+ciA+LWZyXUx6Y/5VhxtXBJDCh6YK5LSY2PYBztfucM1cv+mSA/Dsw5E+MOSxQKLb5Mi8iH3U34nkQLyEYE3cbUY4/Nm0hHYBp3WkVyvvDdQqvg7LXHMHmveE0plPYEPgQ55dUa9CPpKTyj3J9qU22F24fHzrTPXOc8kXYWc6Z/GmgtdkEM767JHoLF4DPJhtxHagN2sMITVdZtIEAh7H7rVHHtkv4SyL5aAV1Hz45tTxSVWBjyZ5oUdwzRG1z9k8MKRL9hu2oCwnZ6SVXR8if2lGasRZ4MJaQnB0Da0KFa8Pu5aQ6fabQFy2TYTiRNv5r0zLS4A8AuG2PAbWCPCBKhqMWQHku2mXXktZgPE7sCBWgzCdpM/eza1wd8E/z3pU6qTohvW2Q2ThZwR9lx/hj6NG2Y6T4EqIKJ3S2QeDUl3E4kpAU5lfVPFxC0hLzj1FhKcNnwG3/hsTRkUi+cliVtXcO3Vtgqojt3EwbB4H0/izuvDpzfWcUxcLIPPtvfDGwPeGnU3tLfpThartLWitFL89ZxYhQ2fA4xO5b/hxGHt9yB1miaSU4irJwFQW51Jj3htGOFJPrwPN5kPeWp5MzW2Hlm+TYaSxDREc/pBwbWUBydp7Z6bzK9g7Ai9khbMyqc3F+YS9TBKyvesZJkrAckkBFOrIOiV8WOo/q1XaXwucQvvWok7apqCKhqIxvLS/ZPQC9P/s8c9n5sjWkZ7vpYeHNiSVYQeZJhK/Dkp43C7DyXsTvaZR63Wy/d+PT/WugiRrNS12CNUR54+Hd5yIvN+GUjprYMAIschc15qKPVc1O7hCy3SxWEDRPL9uQHunzORxyRlYRyXOpekzUZB+zZm6ls/m5o61sMxX2n1gEFs4sqvjhw4jNsIGj6xKXpV0aKZIWeyG8elnQqpj3GY8nAA41J9fIcwfQaUnOpQdU3f1o1F4NvdS/mwFNeExXnbclyd4lVKGSlWac0j5ZA4KxP6R0fHTGlcF5iuwswzvAtMEMEcUfeaLKUrTFIj2+LIPmca1nN3grEqaUqFFx4h0/KFevPNG8x7XslC5U3CMkSnQU4h+LbtCAIKitiKqLxsGfVGWiBmCD/b87R7Rn3zVDtf6AyPqTc0Tz5IjhyePfG2N09MCUHnp9XqeDbLWkcDgJacuRO2+trwCO9Nq++XmJpsRoQW+mgxiGYRi3P+c0eZH/2DU/m+6ouk+/BZ2uu8PZs4SBSAUs1yMERyEy/zF7Y8IQ7fKi13fbz/3dSd1zKnWAHdpCpSk1uyVMspwliVbUaTYSSG8ffRmNwIgK+nWKz8dUT8ymkeLahWkoSAmJPXSILEtD971/zR8D684RTjmMJ3HWPNOZOR2QXc0MP8H2Sz7IEMowD73rFQNRYRGjJE0UJxJ678krSeYWBKhjKTBljWZBXZZmsed3TFO4IUfOHgLzLU2CJBfw70RmsOVMaCbN88O5mmH58vHJC/thymTajsAdwoCEPycW1Zm4JJwgHvcepo1n9OLbPGsDwrsvTM9zGXZHRJK48ZgZcvkMcxnc5yBqwe400LoYH2ohK9Xzo/mRBNJtekPZWQs2wMLvNQwZqZeFLTKYoha+X9OWmC/xMIdJs7PnG7p9hrAhTs+Noo8MjtKIrhtmWrluXhB4ZZEcSs0eL1BToqNn1FPTQeb2XZyHswZONwjHZBUf0X0o8NLPquSSDSXFOHdEnb23StJ3xfGdIYzL3mviKE3f+EruVXs/psy/URNK6quc97ECM24lhXvZosjv69Rhp+EUbyTIJ1Sjnr4l3tyP4s2abZDuPCLVpnsiSY+OCXMH9QNZ5K1H3HTbEVrvjt6vp4D55CSMt8yj8zSE5JCshuWAjrXA75HkneXxvQwVnVuFJ9bCJ+BSJWZkuPD2PqOBs6RjzyV0ASDZI21ek40+u9NPDQ+zHCo0Lz4qSvolO9bd+NJ7DrVooCdvC5X4K92nWYdcohIIZH5dsSFg+Ox1E/LO+KJsHXsa4D/bD5pkc5pdzt+Ejg6VxcfN5w5uxGS14MmOiObHlWUielR9GbOIhD1rvT09LJIMkQGdSRLjKexRyoxaoIvOPcRLufA98wMCkbdzp0fi0rpDaf7nIHJZlig2SiYCw4WdOI93NPLDRaHRfqg/IDGieiTp8Tzg8lqOTvY6i4lgI1dO6OeQIIe306hEBkqiSanqOHwBJgkMtPtOlzmtmb/jbD20IAJjxqo2z8sis+jF/WfP+Dd57kHggqdB47v29mwLUvPGGgQ6bIvPo4kVmIILVLJCfhf1AXME0oQQkZ0KinxQk06Gbvsex2czL992RAh20kkIska5GWaCovA788Na/rODgXN2nZ4g0t/t5B25xhnSEYOWczzPVXNuWozhq9nuT+fppYcOXLTDlfYuErK/bzq2ziV6G02fWDAHnBM+uE7cpbFBkgspwtLLH1uwGN/zLrk8N/PBq+Lc/C+8DzN2eSbrm0D6rSHo2OBJ2xOMyCpcF92v+Ypobv1KQLZtmaYlYdTNcpPg54Ze6ELbj4lCPsZJc1BtQvRy4U6YTecjITgj/oRhGIYROwY765fdXWhL0mgBFDOzJqJPFkB47mIOLt0eNlHOBBVNYR6dnVyMoWMCqy19eRXjAUf7q0ickeBfs9p5FtJpTe8ieAH4USQlLFrU+cXsduLQc0V3h2decPaQ37T/8l46q4kpYEARy0vdOPiKoL0DDXhDhmHmILClvBMNmaBcnMm304mqwscQNZoyNZGe7+MnSJJvG7kOOzIGESJXxV31QJWgaiyREDf6+7PA3j8dUEkDsltI1AbI9Qxjz1EeUMkMclO19NtDVfakLme8X2Y/v+ERHp0PkmwTYwmQgTyQCuqhOZFA1giCmg/upboKIRv25JJ0NCUirxYyz7Ts+oMT4Ce3tgypNspKxC2+SA2LuGGYJK747xk22T79E3mvpdW1w9fDzYJ+oYeVaxCHQOrJoLjmTOK+VxipUmJ8sA6G1qoaq6UrbRfsNj1wf/oxl+7E2+yRmBdVcz4LX0jUao2Aa9BrJiY83lp5cOOuXfHFLEAOyjbLfdak9sMpg9JWNyNDnCzff3Pmm3p0/+wziRhXNEl80lDHRYeeC/foJLz94A5zavsMOnZyE4eJbzbCVrF7DG2Fv623ZZBqHl/js/af20vxvvslSoJXqXky72DXMrfnXsHtok24Qlq7me8g37uoDqrPUu46D1HqFxwapZfFG9WoQnvRq5+0GzTwTwdhpYwT+9/P5GqtSDweCvw4Q7wA1nAiXB6iIFmCjRsyY/FQLdMNVUE1DAFHXx7vGfQzWyKHGmIvcitniMpfyDS6TL9z1P4IiR2vappCAlHb+8tC+CY/J9SrOltkxSUv7Bq8NaZFMSf8SMy9XaTSnN6urSyLwr/SSYP2sHKUY+MbvGvMn0Kfy/3MmvazoOV5gWkB4RDsjLoZq9HzBFvNbuTJDehMhx+elOdMeDbjw07sLCAWX9LeCR3a+0VTFoy7aWssq1tsA7jSAT+h71nABGNXO9C9nSROxXJujo91yRUvLqXcMp9T3ddaSA6aFEthgrV1cbtwYmoyO37rL4aB+qPinRT+OAh4ONXYkB7KVbtUF7zwSe5K7TX7QdHrLVDFUVrL+2rNxoxznpvX1mAHcFr+fMeEqsG4+EuZXP7cNGmUFTuinK0nB7955vswL5WPKofpjfNTdBeYBKGFB7yVIot+deLPAE9iF0kUCDxevSNvg3roXHNG+R9nhynQv/RVysNZ0dc0VFBdYUFLYvE1Tq8fQFgyc1ukaNALxEOlpv4Cxtq2uxelsVsSJ6UX+DQbDz0YHTegNeS91wCTog5mtC+d5xrrSdz2o7hGrugHAe4kLnQ+d0GLcVHGCl9/6IdlfZ/K5H4BXmGzavettIZ1rcJEQ8SM80qb8ZMTKrJZNLM4DMMwfHuO+t0gd8BGetleiwQTjY4jMoErEVUz+MB1ZMtruCsCUMKAnf0mgZfPdgw6Kw64//4T99+5yilF3VCDSRJrxgVU+/ukB1p+J9F4sSAvh67WFB0VW4mZVFOLmfm//kf1M+xqfDTiw2TLyV2ahqeGy0fhhoKmotX35QOYf2LorRSXgiXq2g/hahJMMXP+6U2OeYzkH346DhHA3pfpDyW2pYZmrLjmNP1AdPXhUmMdEuiUJ0pmBL5NpxCxD759/YDHthrsVbFh1FsOC57gw2VAMPZjQT0ScDLFsEEel6cKG5QaMYUv16xEbOuuxdd3WilLIK9BBLPUuZINLDMtYVMoCNEUeR1WRh7lFLc7p5NuxXgkhVvC5PjbEsTKWx8hf4VqiJkpOEeSgbIxGB8N5cbF3tSR1ORVY7dohgLbqlFxzzWqU1bLN+mCmyvd0lLPJNmuQO2X7gOmrDe1z8TIIdTMAD/6zpnb9bphSRSD41qMcdypdt9G9Ws3likorZuMvPIB1VuvgwIRRo31Sug7cCQj9nESw8vQIXQCA/RcgRRLWUbpqPOxYM0HJGzvRyGN22vcF8kiTICU+wT27XGyojJKvbp5CqEeN3gbz+ZVWO8PNvNsIDx0qKmxvqyruKQJDmGVxNhLx/vC8ol8+Xz/LkemcrjAN28dkuSWTGOwBdhU6b5PrGMFAtfnwI799+kqxfsQ4dTiosaKS7xY8eEGgOnxG57b+BI2WE/u/z3mr9/hgHdMy/qIkEILGUoEShCpE/EpLMar6y2dQtHW5+xPW51HnF6fx5eyj3QqJH1YaTu6XjqiXvehTVRDiEdTQ12nNm+k71dG5i9o/TjVQnWi2Rt36B9YLSjzCgzUud8QR3pikwiICQi/BYSNMg2HDi/s6FNbbuF2mG6v14KV1Ak0BKnS/h2tksTwrcFYewqMirg5moUGHYTyypaFe/LRlGISYKieqZWgDq7r5AdRkLLw37iboOaym6l6ucxRoFyEQ7OgJ/oEuql6WCNotvBk+asBUoS3DqPoPpnc0Cckpp7Y5OwEWM3eRUFJzja1mzgbPUz6Hco8n4VX7xUghtQDwUtU9y0/jRYF6Jwpvs4nwzdVOv4NASHJTwzHWzv4QC5StgO+6Gm4xH7TOFX2AzQX7I6A4SByUAANOVc2IKOpFT4c9X+QzyQ08fXFfJJxlpv3uwF5ROP5XEJtqefGrnGAxrTQNc4JCuLD2xmqeuGSwdBvfdnYYmXzWX+E5K6GFxjHFYTAZRr6e8uRa2IrsHMle31T48cgxfKKkuK1c5xs190mqL1m56G3Nt5Av1Uj01lxiPSWr1dw7saotHRiKbw+cjAdhg7MR3dnXeBIzFVvclSrAsMwDONQ19RSlWObnhDhq/9/hVJg/7HfjnL+3uyhn6eouC1YednqaRuV1GG0S9DtoZuxXShsFiCsOaYKcmhgulSnoyv+uEfjHMFFKA8Uuu7qGhBF/lvWYF96+Hjw+fj8dQ8P8ruw6Fx2rlR74dyXV6fbotpMFEE+8Z7EYbRpuw/Vy7d8BA440WpnWg3M+GrFECxmZ1memIncmjhi0+v3gpXKyP9xFSIGQE8mVIFxyToRZ3aR9zK4EJUbm5x/FKtUnbyBCv5KbHAPDPlfEE9J7eYpP+E1pxwbiC0bWfWbZSO584CddKZDboLOfsXhCFgpf/QA2zE6raG9og/PrTfJPEhLoRTn1YWZy0/Hm1rwZMH3J+d3ONZV3Qqa6gfsVArL8KaNGalV8mNrCJFN4FUU/7I6cPVZuQQIdDdHSqGEuTBhMyVCu2aSsulPzz43yNy7o4S8FM66HH4voq4AKNco4SaShryLLrZ4t6P8JzYAXQnSXcDTQB4TYyI/zs/Bvz0mjxUC4e+nL08bs4xklcbLVPPE/MkoGulhhYSZcuB6JxrgTEKnsQ/Bhhdiveq4Lp9TaW2D6CTbbp6k3f34ep5KFVxQBJTyjChcFhQv3UPjwWWS/3qzNai0m1OhE/P83acO/tlkHrcPC8d6izuJ6Yr0pKts2UFF4snN+WiuzLjeELJcvd7r285wC63D15NPnyNew0wqvppyRedfLHWxSH++RFYuXhHzoW2d1ytqnEKdlMSTUz9yIJHx2lL31gL8KMbPXxicyAmvI6mNOofFg8sFNRDNcYi2E1DAU4lXg4Z2uN07R/kHpwJPt/Er6DtjtBS+vWAdAdaCYn8/1gZUL5OE9C7cwz2Kwte5dpi5JjNuGvzSaKUCVSUmYiMNWG7Ak3jnnnH29PejSEoHx8QQiUJmQevgAso4bDYkmcA4d/hS2xlMdFMvxrHRjbDZLBcCB4mbXOOi+YNhv1Midex1ziBbX0959JXm+vBZCnLD2lvGPmT2mJK2Kf1QnAukbfbsqw8KQbEf+xwj4ZGYB0D3VkKHHARhMzeqLJeyRiDVOBPSavJieos0MqvNn+TG8gQ7GeGIqvme6sc3MEQna0RuuToHTZv4VU5xOmXH1bQSxYBHD7sQmDNg9on8gZAl3B1+q86VPFgpR3Trxjn4/XJSKqm8omiIAJ/GVqBWOvqTwHsyTmpeWZEV0xhStKU4byhHukzhy3ohEpHNvGxX2B5HxInZ91qZJq7/R4ISHehAMQkqfV/rNVSEP2TTdV5Irtnx1k08QM76fYUYRBWFX8gySx1vmhlyyrO79Tp2m380Lw7J0wY2oabxrdQkBPicS0AqgntMt5Z7rN5lmfQzKC2rtGXuSyK+WU+jLnq8do2l7Rj7hngoDRrDMBGrEpw5aPt14edJFynESHdD2qbgle47aZPCcKSbSTWFMtH9QxpSiBXdZ9JlCoKuN2lMYejoskung1Du6U6aVAYhPtLtunQ+CP6je23SPAjDE100Kb8I5YzuvybFQYgfdPdNuvgiuKd7adJ0EIYruosunR2Eckr3SyO5E2JLd9Wk7V7wQve1SZu9MHyjm5pU90L5TPdXk4a9EC/pHpt0uRdc0D03aTwRhnd0Z006XQrlF93bJpWlELd0t006Xwp+ofvZpHkpDL/RaVKOQil0a0hRhfiX7i6ki1FwRXcIaarC8IFuG9JZFcoj3buQHIR4Q3cd0nYWfKX7FtJmFobvdJuQ6iyUS7q/QxpmIf6m+xTS5SyY6JaQxp0wbOhqSKc7oXylexNS2QnxD937kM53gr/ofoQ074ThBd0QUv4plLd0/4cUCyH+o3sI6eJPwSPdMaRpIQw3dJchnS2E8pruj5DKKMKNNjukqo6li/KJg91aq/NRxPqTNtumahhLF90zB69Zq3kUUZ612btUXY6lC2ccRNYqX0V059rsOlXja4lYn3PwX9YqjiJ812bfUnV6LBHlJwf3WauLVxHrn9psk6pyLBHdNQcvWavpKKJca7O/U3V+LBHecnCx1ursKKJ7pc0+pWo+loj1Kw5+SavsRZi12ZKq3JeI0nNwlbXaTiLWvTarqYqpRHQPHHzNWm0mEeVBm71J1cW+RLjlYMpa1UlEd6HN3qdqmkrE+oKDv7JWwyTCP9rsR6rOphJRTjh4zFpdTiLWJ9psSJV3pYvuPQfPWavxnYjyXpv9n6rtqnThJwdnWavTlYjuf232kKrNqnSx/p+Dt1mrshLhszY7pqquShfljoPbrNX5SsT6TptdpmpYlS66vzj4mbWaVyLKX2L2R1JdrkoXsNeYBSVLZ29kNlHSyt6ema5kSfZOmW2aku7Y+8BsaEqWE/YKs7Ep6cDeR2YllCw79s6ZzaGkga6nNG6FYU2Xq3Q6CuUL3UlKKKGxE0xKU8LIzsTEqoQ9O7pJGZRwys6mmbhTwgd2hmZSlkoo7IzNxEEJH9kpYVJ2SjhnZw4TWyXcsBNpUo5KmNmZ0uQSkkRzxvIPBoK3QiiRbO/JjhX544tj0ndXQze/HpsvvvWlYf93RWux/V2x6yL9P5itnmb+2lo/R37mxQOEjidb80fKkfQ5LqpD3O23M5/7EF+PaPm+8G28+GL4pujmu78r7svzonOz/+kEf229VUMwk/3+XzUCsn7JPojcLe3R9IeqmObuOv+uweQZ3d4kD2VAeSwLyoP9wfdkFgjOHS44ePvPjADYWwFXGMpbA/liREeDAZxKM2fhPB1M3ilOmiavzdk74QCuHdMx4pgzOqo5CQm4vZ7V+xL4tSAyhwul5fFPKaqhlglHdQAX548YcjmS8Y5rpcDMPXCDL10rYG4U0P/oQJLUNfeGMpnMvWdJZUXGcn+1p6pGiQy4xXJQy6JfzfuqGojeNCXpWaXSW6B5K1IVsbnBrIGdUivuVJXUrR0tnzvCAfY7rSUXO/p8+df44ljKZoJLVJXnzZ2AMdZk88w+9dgKiUzvF/7Kcdf9nwe+5JmR1T0+CnqP2HzdAZexiQRQoJFqY0mvY4zsGndu0tZMtTQ40o33DQ8IElK1W9oVHRWaHzmiV2j7lnJ8exCnuxtryBOXFpLpCHH+rXs1hEulGle3ytGcnsXRNr01bu3W8mwe9eyebUcnKTS92Bn7LOorg0EDepodhJHVjTPylhKQk4khZGT1qLy1PWieTiZjSBz8afC/Sz6Kahul2FQ9hsJYWoxFr4MWpbSaWpbReOdaGU18ABPJNGUSm/L3/Pa9qblVJhvulNkm3CsHm/SgpJlHZaEpbALHzc+HEsM+XZfHFZZEbhETo/0Z8g7RwUvrEgwsXV3et5L7pLI/yY1IdXk/rtMr4NNqn/8PtGModa6N2Db0A/WI0PE0IK8Rd4z2FfkeUcIUX74oY3+WRB/oC9QnrkousMzIirhq6BW5IGrD8VDMHWKT6BPqN3blxYhlhbxE3DRjny6QD4gu8bJEDohhxTKi/kYrOWL5iBy7993ZaFynL8h9I9YDjlWpc5fEdkC/p35HSDx1yNaI2zDa98gPjSgHvOyU6COJ/oB+ivqC6/I4YvmBPG3EdaCfIZ8aUb/guFDMJYjNHv2zUeKmPI9YXiLPGzGlsU3vkR8b0e3xckSWRgx3WLaor2glZyy35NyIyzR5/IL83Ij1EsdJGeZtEtsl+i/q/wgneHqHvGnEXbqzh9w1olRT3K+VYe6T6Cv6I2o2reSB5V9kNuJqQC/IHkQdcbwv5tKIzYx+iTo3N+X5iOVv5EUjbgZjmz4g74PoZrw8ISOI4YDlDeqqaSUDyz/IKbROlrpOP5GPQax3OJ4pdV4Hsd2hf0X90Qg7PG2QV0HcHkb7AXkbRFng5apEv1uJfoH+GvVlc10eJyz/Ic+CuD7Q3yKfg6h/4niqmK3EZkT/pOxyTTflacTyjNwmMe2NbTpH3iXRjXj5hrQSwxbLGvXvppWcsFwjN0lc7k0e18hPSayPOH5WhrmuxPaI/hP1v0Z4xdM58jqJu73RfoN8n0SZNJ0y9mMS/YR+gvrcXJVcYXlA1iSulug9ckmi7nH8VcxdEJsV+h3qQ7MrL0csf5GXSdwsjX26Rj4k0a3w8hs5JDG8w/Ie9a8mvaywBHJkF/1o7NMdco9Yw7Eo5q4RW+gN9RAEeIJsiNtqtN8iPyBKw8sHZezfrUTf0Jeoi3BVHiuWA3mKuK7oA/IJUTuOj4q5IDaBvlN2eZJuytMRywJ5jphmY5veIj8iusDLd2RBDA1LRT0NrWTDMiFnxOVs8vgJ+RmxThwvlWHeJLFN9CPqryCseBqRN4i72Wi/Ru46UQZT3H9Rxn5YiX5Af0J9DFclj1juyezE1Q69Q/ZG1MTxq2IuSWwO6FfUr2FXFiOWU+RFJ252xj59Qt43ojvg5QUyGjF8wXKG+jq0kjssn5FTKwLjOj0jHxux3uP4VqnzOontHv0b6s8g3OFpi7xqxO3CaP8GeduIssTLjRL9Pol+if4b9SRcl8cjll/kWSOuF+jvkM+NqCdY6NkJAfCraFkaGD9QCiF8Gwhft00LKIUYbUpovcK01lAKobMU34TABpDaa1kLsTqFSNOdroeWdaD0gOg6gei6bNOkcA5hwjQntIEJDXAaYR5pw8NJm95h9i7YeKQB+1EbB3ASMHvfMHvnbVrCScCIVCJ8wwjv4D8YoXQgKARqIozvqWAkPxATR1IcSVmiPhMoiCgw0gwJhTAlJ4aRkV11mIPGGWbfqGYYCkCIcDxQzcTb8As0RXTWkzbwWhF1g6sVT4yxKYqALMKyivaMCoUykhgpThI5x/adIIgADMQQBwAHecyBAWxwwAoCMpARFAxcA4Y7SGVfgEYLBhsG7hj7fAXvFuzDgV8DMdy5Tge2bEseBCwNe4C13gFogKEAAOm4g6Trl4RGbFKzQ8Uxrx02eXHMnYdVQ5950sN/Auy1h1RLA5OxesIVUC+C8QCi01+HCrt3Re44EExL0NqKVTZY/qeK/ep8ubG1yJ6HA27sxs3KH0HS89fD8c/pyWpLrByL26jbOCtR8J/QcFmet1+yKYxrDW3QYvrzB+bSW4h5p/5LQI74s/1K37rP4+qpRKdBHxdGun82VC5gw8guTA1qP12TLf1/Qd7+X/Lz9bQdoknu52vlouDfFud71pdlsW+ekz48Rd+h2l/fN1/7522Zjkh42STWQNWDzIfpMayaPOLhbVPcvk1ndK/hZ+3zKBs28/7HLpKrx/OpOFeHbz1d361en/JLIpqeA3g13yS9Ql/bqMfRWLB3EwmmAIkCaoCSQyDnnifqsMoI3H/Up/U6B/1USB3H97wJRvBd0kuSlbWlG3+wf10U6ghW9TycsGNVAvrxdFSXbKLOcHHR4XuVwK9kGlKJetDpzC8Rw3vJoLcLFJg/pQ/zAd5nG3UYCxnOuku3ll5RBtjO5iuezNGUzGEJ/f/JwDh/uhZAILpx/T05QzIkIMDQYCXeTzs0dshwhWW+dnfbo5LgEGoeDx8SSMdoE4EALST5RhvvvUMKn3HC712dv//VDPfzMnlp2Paab6jpiZZurC8n5UGm2r3Q9ZlWo35TCAoQyfCUhb3k4PHFImhsdWhpbqRfzv4Bn5RBAoEKpIIfXM1OaBUzzaKu4lXfS0ip3xPdYgrw6/vYT6aeQqoJBU37oSvHa4FKwLlSHdLOemJHvTvONuUCqjBYUYr5p0jaz//RGWmOX/om6jvzdzy5O1l8aEE3dT7LWLQoZBRA9CM9mIpKjuU8GbKJes1+ozyBP3Vd/jXV/ZSvUI/xGRc8J8fD9VIeY2d9FHWS725qYDJQA4qVVpo2fUU2ZfatF2zDFL5MCQyqpdFLEzDJe2YeQYNsFVaJFKScen/1z2PhwPnUfN+L86PVbOM71W0r9svJcC2B++XkLq/XE4kYwtAxjll1c18vXRd3swVGzNJ5ScAxi+ITfHGFCol09WzvwItKWckO78rzB84jksZ25OZh2A8YNW7FsdmNyQ2BIBVB92SB4mEefBPXMumsY5/sU63uqUI0FfTqVQIJJESIB4OX1OthXsl1KB5OLiQR6Mcm7dEzBiFA8VAxOtOkIAo1YENJq2vv5axuUb5+ADKSLOwTWkxJhvfG1loC3w4ebmZlXiLNSqQ9xB2+00caTXOPIps4g1oaHkovKiNW5Z3dpAqVoM5AyXGpJrWoo+4SOR95QH4bHKAfk0glbQEyzFkPqL8SgUVVlF0teyc1K6TostDAcxvDD5eMWPNjebLPkq2faATqKomrqsSdiESFqpdsiMqiRdJkfhRchSCD2YdGBk/oZkIPjnoywz1GU3YFxcwIyk6Rjtk7hbUWM57VEp2DFJrfDK/s/EtTsrPt1pKbveMxzDRNg5482XXr8YlNvk7z5HlI0Jl0lqPlkvHJtC76LHID6cd+0u+uzv5GI9HJBf5e8yFQb7qFmyunH2SyvphROzRe0RiL++6vyAEtuEycv/1IuaJRahOznQj+K1LOSifrW0ChOBOnyT4XEyw1Rh2adOOYC5VWXt3wCi3McJwMzpJ/InLv9Rps+zKUSjFsjLRHQQuZamiaNv9xTZayXrfVbqeRffalLcdKIVWlYXNDuRnHds/6ZCRxFvfzPb2aDdSpmqUlRO2aMB5vQDEH7QL5EYA8bX+8ZYeq1gmbA2XtvAbkBI6z6CHJOZ3TSQf8ZpkBcVqoTAfanWaF8V2CxENfDIV8QNJQT2VpCGfvDA+syAn0r4gDJ9V9cPgPVAOnjD3Qw9v4BNp5EvSgzrUrM+JgSV8Wyl/LUtYzpumTQZZYltKbVL3x/m+c+wqgd6t0hh+W4O3MEJo3oJe3pQhAaXzgQleby1/Kam9gQ5Kdm4phm6w/LeZssy1aUgAnUnPuSn9OCM74q9Oog+rHNxG6yHK+yvOobIbXUr91z0a3ZKYSnSs+chilna7YoN0tex+vkP3s+s/q5WNFMvajNSXVBKWo0T9cMRF0ewhqj+i6OQiYPak3jnunkPSJJY0Y1L+VTLb+WR+AkYTsMmYhTPnTP0PmKZg1BqHEhaKu86GVuwopNuoty9+Q1S0VsvKYlEljsVls+Xhz6cM6y4VC+sOrtK7Epz66GhR5bROSjYdl7JGa05nEwLRlGrRNluoyq8O1tdn+unbZmgidclSwkO8Jc9XI4NolhWI/Gd/vWJmol7eAIKYlcte67DWRwaIJ6v0DMgKTyP+ZimoeLZ0Hz0p8B76F70GZeckL6PADLZRt+N5U/FmKlL6BRdhUI0ZSVF1dNHi911JsPSlpQ7gw+Bk4IsQntoPiE9usgpzKA6794It9oQ8GOz7MWzotwDh+xlI+8nBYIUpt/n5W+1uPPRjJcWmxN0L0UybO2CoNvSfzeCn8i6xL5nFsRtvrST/enyKNq0ca1XFl2HCzPBVzp1jO4OI5pwODZ87TjsdoQJhqXkAr6REGbJ/4qqiu6RfsHpSUtIbjBWwydo9zvH8MYl7Y5vR+o9jbBbwewduQcBC6mVqajpdlCyi8zMIgH6wGKLsX+780DdYDUDe/4+N2+iEzD+kLvKID2w0sPUniJ0QmT/OzdrHWeDgtSLv75BAWZNJdM8BZFaCXaA9V3s5XLYmdI42NhX5MZCQsv03Dyg68a5eCNjsbf6HhrfuVLKnL7P99Wf4Vc5G6qTYv5kR44gcn0N2Vb0MT05qKtB4+5pH/a6sKfjzNn2FiRbzxJ6ipfgzHQ8GlbJV/MCg0GSToV/k3POrm77X6unqbz6QGfeazjZwN6cFpPCa8DL5kKK4fQZWJp3xI+1OQpu6ZgInmmoMzZhNosChmNtoWrgGWE+cSIQjDg5xqLXajN/HAjzxnrf+Obig/u/3m3qHk48yI8nqvCYvRHjckcOaYBxLtZhjf/xvurLC80p72jGbfMlxU37GlmCxRCv0fZlnPL+aW0aIDd4oke47jFvd4hByPXVzuiz+IY2U+noS0Qof+fmPzrpyaf+jHLDc2xv1xXGcV0zmwbQajlnJ8PBQWyTn4kpmXFHyVMfec6+vAJvoEYurng8rncNlCPb8t4SbQZvLZuZSleZe9cNPcrFCsTtnx/W3QvDuOzb08Aypwq7mU13nUfkVXQbUz0rHB+3FF6+3Xwn+Ys/IZ67c/fh6zpNftw+ZhufAvjD397bdl3zuoML/XrjDzvzlNnXstaD/XN+X2PZYpWZB+hNgM1iuCD6n/Io+ZiGRXtmff5qWEc6bHcw5lgfpJUC74IIIz1sXX37mWTe+wmKowVV4aG0pwRB+kGTX3oZJf50bzN/EzGc8F+WJcGVzAV0fcWdMo2GcvM2f+BH/lg6p/BOytTTgIE4d0Fe+bwje5GUICLwLZKm/TIGlR2SzPf6ebBrBoZOxUCRD2vFnt4yFcw4OQWxSi8D0eOX7s39u9j1wCzquuwdggcF4ZxeOzOxYMhDVY4svOAXc+Mm7+HwHgq4OKZadE8yaYBqGXPOVPJBItE6R6ouHhaJGNo5gF0r8LZav5EHPC/anMhYqvshftR+ii/u8SlMBM8bzJHztv4O5C18dvaK5UF+o8W4Dk0msk8OrSOD9yWOdZuYYclVGWPnmzKmF8ptSO86JQh3dYUGx5NaL86MmP9vZlnyiSzkq9M3SgV+uWhzaZPjaAyXSvrv3hibARRoUM61mrRxxxits3grk4Z5odNx0qBihvHV7IBTUIKN/UUNiuG0L4t+1kVaTgefuuabMNQURnp8hOezFmn/L76IsOHbL0zjvAWMh+BXmU1vlDGXFKQhp0Y6b4TkeBEaubUhc+Nqcfbaz0focTB6q07XRqxXm205nqziliGeccEzEF413cWVEkf4XlXqW4vmaGes/zO0zRan3M5JmbD7dZI8ECG2Om+J7w/uSYerRSe/j5+yv9ANYrMBrOAbzfFIxgVlNXOLwnNbynsEn52x2zziVAQ6mMbhE0jN9d4Dc62ofBen3ZlDh2GiwQRDvmMxZDW5bLiXUKMInehSKUnUFqcXAvMMiQmzoPuA+02feHVpHtCsXJNNbPMxulQsn3065Jpjx1nqbV7hm08M+NwwStnRtK/odom+yM6L2jrdmbfxEHoqLPohKVqGTXq8QYqlvert6WKFniUxQnNzpa75jSrXoSfeRPWDmvdQlpYuFpEapI8LSqoo9Him38XuFuuKK4tOqs8yAbf3Tc4u5WiU9RiJyD5/z9+hQScPUCn28ZpPj5xZ8IiAfNA+R19ezKvUdo5OpHsgDKXuEulMgW7iW7+D6AhKrvSFwg997oDvyIkxZVDs8ix5tP57JXWiofB981Gj/u/sI47u+SbJzNj1SOPcy7hw2zP//4t3kMcUL0leLBV1PYYanY5R8POezkxjYcQDGxidmlkI5A79/siu/9yda+Dz6HpOC0UmmOJCQySylO/aEkKwVOugpe7GkH9nENO3Fe4SHaYUK+vXo/VaAv1YAahUZVC2Silr9YLSpRy67llcFUxB3CCO4Uh+eMH9/x8IGZb2Yt8CGFOwrpI7ZgJzmthJlf+Mn6TaWu8VEkMlaQKauEbGN9a/+Apdydvvf2BfCLwGDxBUkYORo/k9hyGwAzb39XCdAbR9yHodMJUoBMg6qg71WEuY2TYHswCf17gCm4Ejtew8DT+OGQRR3E5L7GUJQw8prhxOG7kEIlhZm3zziCMQ3NLvS9PUG58v2AjIaxt0lo07jNZBf63tbxqP39KmEaH3zuWni5rCn0vU5mnbfVqjljr1XULd+mq+5NA/V+q8gTcxCQ8d4qyJJPf5O71QITr2Nxo94W1yoMo4wfLnsBaux6ImGO40LgO5hFtj8XmxhbhTP2GpHzjG1Ypdv1hMCf+bOJrqo3DdLi7tdR0+7DNGcVROCTqUm5rLoz9sSXS+todqbrGWZezZDwmJysltgqqqCI8HrFoTD9PzONumsNhl5HuPg4DZo/0A8rlqJWOv9IYrcLq8h0c+upLxOoNXL4L6HLdacCYI9wJ81Pi+nMOO9HEJtqyWM0ho0vTKiY2QR8Cz40P1KW1WKIz18YpwKWkSTgiRBi0KNkmAbk2U+2WCw5lxoAa+q5OLI8YoN0AgZLXSpOTOXltm4X89QMwuTaWHlFwDtZ/d96qtFSSviF3A3ae+RUPWLG988CByq7DSgvrzbfP96vV4wwAnmlHaC18dUx8Xw3zLu3xn4oWYXyKj+QjGyA8PrYSS/FyMmolJ81xqbiyhYBR/JeGQdgT8EEJPlcWg8v1MxS/5MGSqLKd+hkf+e3CBhnvmMj7jZjdciKacEFgUAESbnDZJWCuYr/Mu4nvswP3hPohdChkbloM2ZwgmLyyahYoiXIiD6MZUAzxkCSJemDgJVE/qAJKvR/t0l2mmpa/z4OB3zPYCSh/PD02DjwBm6UjxFoxUyBL8S5oaRwVQo8gH8R+wWXBGuf4R5j3hdEsrFh4uDTtqYA4+XoxfMDLipZ32SGJ6AipjO5pnF18bjnvHCj7bw3dz9hrD+XTxzPjOQos9XJqEGRZ1QC39j4BCqR38mVqCf4rPiFrernhwrwz7KewAD3TxnuS44CWcykttaNyyxozlxpE1IwjRNOV55Wfk7shCuCL2snEYa/ES//cXlayyob8/VOMhB4b5GsyevyvLeT9otlUebIqc75Hq32XGBZvniogW9cfoo+o7vzJ+6M0VPLz/ii7symgnJzsz6ptSvVPkzELrd74Wg6Gn6mc7aTBBS5bRkq6mSW/a6wOyVnUn0Qee7myZcBCm42f/K+z1rvzTd0yTzXltHMat4D7eYIYsV5gnZzkUZXnHfauAmlWff8DpmfWDdA88F572i3SRjQcYTEzC0IdCjlsTpp8secnKrZFqTurCj4c1BOpR0y4cCT24sXp7KBimdmSY1psGpmrwScwpq+w5mnptq44Y0X05pH5Sktj8F5U+4aeZbNciG8Ormh+nDJP3wS5RfqmhT3WUsAFepEIp2n5rQqpyYG2qtU1Nuu7koW1cupJJCGLBh2IgT6C3EWsLlH4lz48vVAUOiD+ezfGIdq9DL3lH3gLYpkAZbJXfnYxHdZsjaGYJ7UwtCRwz/KIiY4gNQCQGxBkvWtHBINeKSgWLALnfM0CsryFkHKAOcuzuwXZMGgLtf8rhSMQhLNCSChtFjeZUX6vk0v13WRTRLL7duIsHcADInxM3bbF2twOzG/q+BYQBJT0/VxuwACUcVpQ+kCZPbYB2O/q6JGUMdvZS96qYUIBhBAdvdv0dyUYk5q8ol2AlYZFzNhngCTDBjZOCIo1bHQflkmP1ERjMxl7pvDTcgrBUjjPh0kLlaXZ33lQVClQHOagVhsQjZ6INXPZjPWe6Dnc41NUX2yQFHjIO7Guw7WmfS272Iz5ISWm7Me4BkOY46UlhRDuGVgX7o+FXydcP89/ApD3Y/F8il3nSOBqsgGGTGyE+ZTsfQSEAUWCuKq8s35zP4C41ifGTEPEFQMJCqKiMARYhvomNab8bErXIPQ/PzRQsjBWtZvUjOklFAYnPSNuJdBMOoYK4GsVHrJ7kh/OJ0qwX8YCl/5wpxDidXGIZ1wbeIHwrvy0gGSDlYIyGOR1cDQz+DXAWS+mqvqxLK1fB7BuIypNJQ2L+vKev9EEeyQ3Eh3uzD/hupApQ5LNwPdOTiqhvbEG1kk6uB7BO1E4h626ogzJR3G4COLQuSYeU+nurqXK8PdDCtILxUghKUwJXSOzvdThqSB9wGaBzi6FzJnRiJSwmmBGgVCSXdRDmbPfhA5jKpO1X+zpXA5anfeSL+UAAG58LN1EJtXCTC1X10ELcdyFfWPOG8i2mLZicaNlwgkg7RtTIOngi2MLdimikoa2nZLQyJ9OWDWQWfXc/J6rT+Yei8a2vDOz6jVdOQXZWDUH1nJHUP7kS6p6Nye8eIIHDr2EIBvnOxkg+V4rNvIJaBiyQdKpDB6fP98AQAJb8oktTCevHpOGxoapXpNx/ssuoY+Ge/Gf1zEL0Ccdhm5jIkpaK3O51yUQmIGb/mIUB8vJfMhn9ZgPNf/ln/X8kzFS3wEczmQj2A/XJGgENUSo8uMjWjhMAODH/E3DtrApJhQSxsa75I04NPDylzzPGF3QgzHJugMAUYrGCIHgqtNBUrdto4bamASIfq6IjAa87TymMIDfExAH4SXjosqGxOPIAqy5QCRitOsSkOFyeioAXJ4SGeoRiPHhJNSAtLYe8s9rgiyC76PesQpkp6+Bo3yJWpFyaBpGrBlwWjkBPkFWUhQ4CTJkMujh4Ik3/sNkehDpgBidRDdGIoU5tBaJFHqzjTPBCPLnq2jWhrHnCRTzR7XMQqxpM1EhzuciJg9MPgiNSpSNw+WeD4BwT1bZzudtfwAxAZdXoageaOAMNH/mx+pIad1PzDEPPaqmgLHCtBARAc0goWOgpSSso+GK44NV98oqRdJpM8HIqvfQh2SYCDwifl9YvtWPeEolthTHoybormYyAK8+RFR09YVixseTlCq/3dM7BpVnM0H2XCS05s3Nvau/KOK/lHUubR1Er8n+NFxX8Jt1mCYZqTzp3F3kdBAa0CQZDIZzY8jTkFPM28Xk7J5BtoMObbr6asr1GMhVccLCtsnGqeYIXqTrgpYvsQIyZVknFEj8PSm6Lq0aceIosPfee58J+FYEcLZDA5iMG4SNArqFuAVgmSPBDZPGQtuPehLZua6Q8WokgGiNM9DOUjzPu6s2A7CwUTwzdBnE/CuPBg2RBDYUFrlVcGO+GVHA85HcY5CrMVbJDUs6oO077PhPwOi7AGToc/6DtdavKCaUzR48Da6dZXQXGbU1L1+uCE9ORUsc0yE1EKZWqbmMc1g3AzPsiVZgquyL8DHokbq0gQn8H0WJ87iuiikoZv6oCLR+DyMHelnROCzjTqhn8oMWNHgUz0PSiAwNQgK4i5yVDgFifBx4Y20ANFw7DUKro+Ifxd9uuOpKWVvZSyAS/Iab4pk+fb3U5i/0NDiQrFVLxw8yLiksK6rp+9doBZEhD4NYry4Y30KfHfQBVUwj+UMs+McSAgmDFca4tBscMeALAyzN5+mMQtefJjwCtcENxg8I3igA3F6JxsmOJI1MU2AE6TuEBk7pmyqKyO8KeCIwAUIas0a4n9HcaLlYCHptjuy9c865uWdr0pXnQhncO786WoEgyOj0e1nzPKTxHgAi8+vMpB9RxLi/QWL/rrr1D9ErMPBVKPCpsZUDTBXU0MkwVmq41+HqZkLJMSAHU36DEBoQv3rsYVkfhjnhWY9POaaIHISbTOuzsL3Qj7ffPcsBSdQeST1ntk/+Tz+OusrVMgrh0+dRXmLfPc7d42e0X/J5ikYIoOaie81cq4fAY9jmzN3x1++9xegRINnks1N0Qku/x551WvfsXPJuOiKd9p64OiOBz/UfJW6H8GwkTeHwR+DFLfaSY1FZIJYNOiaWZDZZ9NsgZvS+4iMeRLi5kIGKFo6Nmg+H7LprXHty/v8PPOHFJqtd4c45bLn3Fn3XvTT3HUPGuRAsFexWX+7bFgO5Rxq1LwhiM2skL3ALsWOGegFJo2wmuJntLH9/YsBoPj2QVCFFDPTkqcLRSDfi8sIO9YYedkEyBdGgjwaqvFIuZq4a4MJiWYXnAyoL0gcGi942iPASM7uLHPG2Qtk7Ikx0RKab7YPKLjXdILZLx6obxh6DySOcTnkw8Yce5FE+Xs4cNHcaXpw4SA9z1KQpQwWPkE2FFF2G6OtCLxhG6a8eyNkPPpYJw7ZC598/9oq3gwsB1fjNDoptmCbGrxkDVL+9ySO2JptNboncXAAxHDCNef0ouiI4m+Qp6LvQvF39IZ1f6NcKJ74QjHvQgEbkE02cCRs4oHYDy6VTh9nWDn/TvGaM4wN+GbhsRRP+KsG/j+m9Eg6A8/SGXH9xgi6uBZj+rdtv9HxeNyj6GrzmNI+Z7TySO3jV2DC3ckuBG/U5j9Wo6QbPiTzUywD6y1krpiYkwEsJQc4l+xhftIju/iL6S0eQ6ESnUz9QCbm4sPl96UVNQU2Y1SuMII4h8Cf21uWUL/wgrf8uCM/jM+Jk2ugJNa4/zAFr5j7fKiMreY/GZcRhkI0nV9U+t2zQhn9XXEACO5Cw8358AkK4kxSoiqgcGh6JToftdUJe609YOKQ2TvqTl2N78hAz1r56XMW3sEkZw4d+Pq32E+5up8GiAxBpSYuD2pK9+8QlxM8m5uoRiHjbkYB0BSqlCKqiM6ORvNcKWa3rLecWiPzDVprNhjUDctg667l9M/AiacSRsX4M0gPzNjn7RqucV037LpvHK/P15f19ea2Xjata6dP2WHw+rx9mUozPE8RguUtwhVfBhrZOpFAdy9/pYppINfgXOq2Nm+qqsfVjKL9yC95ycaAbnjALK9nSliw9fEPxYvVVyRAl9XwHQL7bEmIn+DGvN/4brD5DSUy/rOAWkPSCieHeFEhqTEPohtwkD42ZCfK9d2yykUK/PGFw68gVP9axAIenzI+bCFaVuRTLI7I3aQ7z8QGASOJqsxGCLtxL2IAb4rw9jHR9ask4XDAXOvGHIt4sv/c8FDZbVgkmeTkhykaKnRfNVatXg9IVYamP0vQ6wS5Hip8iLIhcNY1WBha1nZyxHY1327hIwNjhbHkUukRpk9htg+j2QI663LsMu3xJIeHCXebYnesZbLNJzgqx6XNBVK6tgDSNgAiAMSgKW34pvt+BGhYC1Is26Wn1tlzamSyxxJDZ6YJ82NkcATYcTTEl0oaFvgy8mQdWIG8Iuc5YPKjkdcEdEtlJy/kupeW6ccmqlkLDNVkVClRRLN5PqhCht5Nrthvrm/GVLQXABdqWp8h86xUH0WgUCPyM9gDPuwsq0LsubXHtUQkf7fS3JoKXMO0S/+lmT8G3c5AGWVH2X7K3mtuUdkbr3tFMDfFVOEpTudzsc0u2asOFVF4Rtump8xKSc/Mxowmm2aH7S1RPce1BNrptFwk4Z5E9tpm/oKRACjvNdL6WD+o+KlGyHkoC+NsHo2VoUsYpqo2Xki7QMFpKTlPsOnRB6OlTyIm5vM2yFSvmSHWkSWu3OPLZqhr4QsYGoZ+LKvVnKYp7/6gm+NGEAivHm/lomal571DRCgpkeiU9MENepFrwXL3XdOASKq49C184EbBz7YxSInkNo0/VGnaWztNRSJgPzCpwOzKfN4BEj+zzqF+4g4vlq88UzQDalkxoQDIkJnT7Lm4PTx02RHCll0ClqblnBRbcot2YWu5l7QVmbgZh5Y44Ui/zg8a/sQLBBCtO4jWh/4CGmxAtXKEJmsqHaba8tOIbitBP+IYJ/QN3Zs/y3KfXzyB2r86rxl3DZdmblJP61VdWvkfPNqibiAxOWsafQCAK77XLGFGG3D+5DIczqeWyeGYWB0knxoMBNC9hIKp5yB+gk0yiRMuwwt+eJ2p+2qgSQshwYuFhT58yurj6wxvT8AcDAtOMKRPsLR0UBMlilh0rzm/Jo1CS1Wqk0Z9wW1GcYV2PgeeQDyNOWdxULsV3f5yef8CcIEEqWENQtg1WBh2llEgB83dr7z/YPP87msMg7P+Y+IcO+b78AOyO7//KWr9+zGz8yhkvhBlODAZE7iDYUIKhu2bhzlhzdQ4guE9uQRXD0d4854fKy9sCNlRTGIB+SG3gpUn7zc14OuNXYoGZWXV55WxlhwXRn+4+Oul1p8zXfbyMdoaNjE8KeXW0EwI5xekk7c5mmRZy2lt9fsxHAWgKLYrSWZ8smKthYSDEDtjvJ6gA1btcoMJvhSMflyPph0o/BDGUgAVC8cYBdaNccm0zVKl82YP00iFtd4hbhmjLJcVlfJJqO/VpWuoJ7xLm/WsXXlEi4p1ZnnQzn1OW0LrHWIDBDUMsoTrpbot8ddoBaQo+q311EH14zvSlTucG/+KNHgjpO1POjjnMtPvixJUjpudwp1vbFcRVaZtFC44n1CBjALrDJ6V8RJdB1ok96qhH7fP3t/PsC8pVrj7mnwk4FTnKk+t7HxS+e4PWfxtdeT0T2/pFi0N7/6plUg+OGUGfxBP9bscvHGjc3WLlq/1uBeXs1f1aq1BWqFrEC1sBZ3H9NGuv99o4N190kB9SUMPomlb9Y8Cfqalu5ndNzNjlQE/pamVEUtTiJb1/h1NQ787gi0ELz/S9r3rqAjZvtRAdNnfXBRfbPLLF7Hm84SzKElEh8oTA/oQ6gKD4VpGOwvms8Y2KxhpLEyIMhIGIRZMjtU0vzuhDWnvQFdAy8fKM9SrGHAYtCoNcfoXkwVgkoVTTWRCrRqGUpA8qMS9CBoQbVTq2ryZSMBqR8UCUaz1qdjIhQLTcc9BY0L1hFFJngpscr+Nv9dvRZs5AyZFVwXKzp3h36zjH4vT2j6MvndCva7X75pgmGzbeGcBXbXRjDOFEV3VekwOyjkQ7wWIAUQ5L7l0Njod/QShLCHVZQcNnMjGQS/g3ZDlgQ7JIbfuv80UZdqntVKrBo7MUBzmL5kLIx3Qklbm7VeVglSP89JpCRNDgW4N3kK9Ni5+lV4Igayc7m0DEMWglblsjQTvWZKSXTe/App1XNunsH9Iyu2pyegCaLP7XHBNnLHaaRG9JpoN9iLUBWgWkqbUwaDhGAlgGTu+dWCMOC0MuLBDo932QNMPMTW5McPhZ16v8+9Cw/6ZO3S7XhkR+4jGfqGGxj+OgNtXvaDCvG2BbqwVxoLiRnFmV8L50YAUEG6ovLCHuRcUvMqgHzvIFr7zClksy7BHi+0DhxsB7KhQvCUR8iIpXHZ0QgHDvve8bcexTrcRTP61E5r9vItMJLX48atdb6D7ORo5SENxmRzfOLjToBzIzl7Tj12G96L8yq5vAZpZBKjIIceMQx/Nx3joS4SjaTrb9gZpF0Ec/VFW6isXEu2lM78TBlY+DcBRtU/ZLv+S5K6XYNFdUdRGOjR20m8yuGMI7DSu73Ih02IFgcym1sUPChbwbkxdgGz6xvWLxni3H99vIQn1wLoquqOIIYSfTLaSoj6hdrGVFpfXhUm4/QEycHZs+KQW/POm85zCW4r5NJLvRMYMzhLJQztb2m1Y8nI003gPFBtKJepldArVDlDS1twHr7YfwiPHyInb7kG3P2t/0IRTDO/LTn/+TXwkbq8sXk2xQF46EUgD5x67tMDxTQUyZjavcs12ynXEkWZplo+KP7Wb7/wkLqDqkgJzGjc4Fczk90ioA2eW4uhlU91LMnuNAquPzUEMo2yEDS89bKBRkEWjzi0P0t7KA8bhCbJ4oulJNaI5Z9Y0yFVdLhrRZLR1NiMtVXVQ+MxzBlGMz79/mbgkQQ81Yb2pc8nCgqvPXsRbB1yZk4qEMqv6ch8+iNPQcEMjtH0lBLQ2sOrkLV30DEFf0UDvSjzIFdtRlEcVfoEAEVV5LVILusSLdyyv96/QX/NNaV1TzWcaXQsfHyV2ph8aIbJ65fxPzP6XzUpX4S6Jw1vaQysPMrNNRswMC80QIysrGhuSU4z36Parzw69j15Myx9AzJntwUkxjO0prLs5E8uhQXaMVwmr4ULzefd7xT96pc+xsvbB0oc/6wUW7fesujOfVcGvtAQk4Jhoz41EHlgISfgYMgSP58VBUYP0eOT6vwcAdk9V53xMW6zFQNuxwyDlSejqiyTJm8Pg00fmjBpkxHeaBzi97SvKCt8wc0a4ohjpD3QvneeK+uTA2mb4+bhp2z/lnvLRqxbukm6wkrtG5Uk3aKuwiWz9a1IKCMertJ+8+J5alkTB26+TwTKB/uhlIafKN/0cJxKGn68vXx9OdV1TlBxcHpTeV4gKJlZzNcuqoAoT0GFASA7f8XBiqORewLCRgI/tiyhhin2amr6OXKYdzL7QSfNe8T7xMOVo+QOr/a9OMwlVlKFMsw5D+aFELYqiwV44/SklsVSneebpUscZ63+4QPtnbFZSQBsd8j+pZeZMKvHpckWMXAwDR1f2acoLR82VDDPKkYKhx34Kfq1D6CacIKTiHu7nFBHAijL2gTOYkmPvTjiwqAiv68XaF7SWFRzu3St2vlLGPmXsMxRiMjySiayJxojNJXh4sYPUZ/N2pRP4sr0kEn/Dw7DfZaLyiAfJhPDI/7xFKg8wWVR07lA5NxTw7DrTRaywy28T5Ff4nQqK/ezbKRde/Qitey1K+3LULLszgjcblYXIXzEgdmkPhkUraE7k2otDsLUetsM6KhSFrYuhWGccgrPDo3NyZ67MumJUORIkQykUkTmLK/eGdXGo5nSwTxCyYkI4w4y4dCdRsXtuyoE9Ko1ZDPX6MXkWbVZWwOg4qWEv3doAb+TG1l3fNvVACFfNORTxPkaBrbxHlmhBeVjx8BteuNxmQSf5aqJIdwVcCMUfdrJgH3Vr4SUeUcPZkeghHeIwticPvLGx2mWeXIMwzXPasi3Vi72hIixv6L6FUGpIlE2jUPdsEdJ9Tdlk1uIIx0iUtFpBEQdP2BmldSlJuZjoS/MJVRElqGWRwUGYXo1aKVvbvVXZhkbkmj0kLbt+YvktJa36MFVaqRWQ26jekzSsHYELWeAOqerRMdthb4+NkWbGREy7lj61W/bbE/Td+SxCPC4Ed9smy2xrHJkNy4FaOlNj4rtgiTwmZ9zbXkT3mCKn30nbLUjSurYiEgwLpbrrxtxB6As7SdkekSMlzvgnUqx78bmc4UjoNbPJc4IPSzCLzlOEBXuepMJ2uTc8uD2BagFCxcNzujjCUylmgnx9ptfRkwHTPYzCwPcLJWUM5kDt8IihgOPG/gWxFPZ0E0QxidBsh9WCMr99v0f7qCUCuE42XV0u+gISrSEnbVyTQ/2hqEwgfBJZP1DLhDbrlCqOQfuXeCdH6tbOoFZlcoqdMKzpUeeM8mIru1+F4VloI3RY8eJc44KpFsR19HDWB5xvYWyQk19lk3ESgwoQSuwUTYLFCrSde5RUz5TIfJUY+IUcZFPZB2ArqjVNmTP5kr9EP+4X0PrZ6Kp9rYRe2K2CbfPdoBRTcdLFup5SiTflSzDvLO4CxK721wFQDdEJqyc3jx0mqj1py7ls69yWW8VeBMKrsrv7NgH8AI3UtJY+rgpckbOCG7Ok6p2jx7i/1aWxSzqFaZjiWygI3z87ZItZ39NA7OJvpaTpVzt7BRQcyzUGsTjjZgOU23n84XCpjNbCVbtgPE4DW/Y9YmzJJww8wOqNnPDMM658I97Vwyurp1La+27AS9gL1jRby3mSrJ7LmtMqHb/f6Q09LEuBJSBphkw4YHgTiwwn5ObeA2FOO50cv49qQ2R/6xLSTuIoQo/uXJiL097GW/hy22X6IyK2cxE9caoTDEoOTQ38rGquIV/DPljMs9f3I1RqtHlconVUs5cbIRFaEjKo7KUB4BWMTTV3g3Q5qlwhkUWrH5F1RlVhj3PQ3/eTgRZlMmZKskRHNy6LQxzNKXr05kRe7Mr+hD0XJKDwDA7ZmGXCUtIgBS23o+jTgO1qlnoN/BANBx1QQoB9riP7R1eXKb1fd+3Heii1My6DIVNEQfVBbPIDzlljsbrJHQqOS6Xqcz29JlFpncT9+I2/45OEBG84feepVvUfSIlSe6JVtWPfnfBGou/h27Cww+Ax+dsFqcX51nhUl5pDxbqEPSAqpVU0l7x9xL7wk3nJFCHKWV0/Hk2+vDsrnO6f7YzJVMK1TH7Loq7ECFxKhPfAU5CIl2GQ46QOG8Z4uehpytma4Ji7Sgr9fcC18WfnJXaQB9sBy9tsyxAGKLNeBKnKV6gzxKPE+ZmXxpw5WZTBhyx3L53RfHpOz1xbJPMvekhzTpiiTJ29CRwlz/eETN+D4tGoP1X2oOKhSh2ziOjD+Uq02OE2gLOsC4kcwU7seUAxfpGw5PgEkrHZohT565Nczzmn/J3FXlz8u0R9iFMLrk4M4zrHzf2cMRsiaQ/nMA7aKM2BuKnoGkU/gghbLx41On3wcQML7DtOjR+W6uMhG/B3JmxSQIwANzValGtJKKjejkyIs/iVq5eICpdhrlGp3luNTatyOkuwrcZUeFOizRkDlStOKThyJJEWLSXJpI6kdP+mIKWn27B5HaGauix1/c38SYGsP0Bkq4Yty0Obz9DE5Zsgh7YSCno8os5QBNnsqsZnERDETXwyZEuBgau43iiUwZnCt6AoF9nHyqK+LPmmitKwY9ypJ4YOyuZkItARzxSTawS7iFlDP4jcjOjpuWNLC2DQBsZtG6CsY6xtyoC3oA5ajpXmKRhl3dxMpwWbxmbQgUC+VA/d2WqP2CSN/rKS4YhIwJ0ys0qHgMVMRZmuJ08a9Zeb0Qft7tezwhr333kSgjD37FEwa6PFRSk6ujOujG0bcjJb/fRk8V/iMpxd8SWca9YxCFLFQGHSByYQv6AwllF8T0zaz4CpQs/5hkyeP27f9DGQKevR1Fa0D+CiKXxMy8PEvHIo1VBUPmHpRRdqMuVYUS3x527NNKR4B5Zzv+THQhobpFbJdjXhOeV37m+8EmirGlfKoZufxfk+GdRjyEyGE//ngTTF4jN4wrRvacCGpMOO9zQGeyqMEtLySaR2LPMezKCPJclw/ZrKMHPy1Rj8RdJMFpGva+1JHmXkNFnu1srrWUmBHAzLgItNLBBNp0F6QIPYcgX72trnfSX12QmBnxze8Ai4RnyAr9MBP2PQwRwFnEjkdVQGOmiTor7qaXCOLveWwOQwCVOw62WJgRz+mtJAZAF7bHtaT7mTaRT6kUAEiMTJdibiLjKj9VHDcpb7xR3WuV1YSguYl0Ernu4SA7DMQtPd4rDxjx/WtjOkrmYdr9Jqcje5UXRAz0FGL/1Gcmn7FymzQrYsVrt9wFSQYHEot8wsszr9upIFuQ/y7bes/7rYsKGAZI2sE2zlWWwIPZJZeBOJ+Lv9EBRG7UiPTyM1SJKuIvRiZ3WOQyWHsyelwYVD6uM+aArKvpuvEZquZAcDq82sgvJF2dg3BsujSr+eBkYoWB4vjTDCLQkyyjgSu9mrbVA06U+Dht2vOcycK4o/C5qMclMLpYjZ3vZMeedjKXcL4jxXWBvnTz5NtR/5Xrlj/TvlY5iOFhXPUO9JL/axtb7PR9so7H21GozJARI8imZleVMzCR/dFRjj++EGsRdRkfRWSoHnoY7B6V6NLuL1xa2YMiwIilMqJn4JkCnALfR9+sJsNLuyX19FZh9kmlyAOffIf9JplkNYogzHGq2w/VRLz/1+pYEMuA8io6HSyH+lbCQwHCI06ZZQoCOs7TZ+uHtSwzMnXH/maqzZh3FbCngTH7Z5XXnxOd/87vcyRW4pQwe1XEfl4hKQfjKcdkst10A32tkJg2ac90Y2OFMkLTi4XdYRaQkzaWJ6pP1cYkNek0QIj/xXwYaDfL/CskJUvsT4Sn4gv+OA0hTS5PfYuhDsOHy/zBu0lfzu2piqqCOoyn9pbLReOk3Y0N8hG6RBqGVo9n7Za1NKY6RLU/LDNodiM0UpVujMDrXfTGcfC6x6x9HNZk8c5aeRFt9miZwxebMeFfstovX7vyYOp20upCjDhZelUL2R95Bg4Ju6nJlpC3uAH1uX/GHdoKtgbP7+zEKj+SnLzxlWam29dmMRPt9hdusGXXGy9UYtOsbuf8Y327Wtj9R8hTODZ79WPkU72D89QgGE/x7Gtw4DTuBDumW6RnAoti79HdCh+L15pGZlv/VK4AU+xFvbxmniIkRkVIHmI3X1eSrvcXLQA99O/2Yw+IT3rJKcbBkEmeGlAyg47W6VrvwMYavl66Kdr+pT4pX9VlsqGMswNEWfjvA3Q7E7BQ/DK6zVVwMhGD1zXHUvyCHX5PKJdYOsKZY/KjMDeiGDfw16/utSY/TQioztkH8fz9bFjj59rAWMFMW/cjwXUyNqOjezKzteG994DcvjrSlkU56iOduLM6lSACWRX106vepLm9+WqcT/i/5r8XVb1YDaOBKOqHoo0ohHikpPSySf58C/UqKmv0AKLDBs+2uDaYHkD6It+KjAWxexIQKJrf2XtCp2y6yRRqRHcnLIV3QQwHHiMAzJjnC/+yeksLL232o9HpV6CBoB40I4ECMy372eMYZaTUh9xZguCtEXNT+RAjo2IF1CfUXsJH06YFhXtFth2MSXFHrrKahSyQwOIJpcuFpgJoRgwFvhKqC7I0DrB+A0Ki2pQSaYVRQpLsaQ8xl4vWAKd7gvTS+ZIwdhxxrjLZVGaXEJKCqkk/xyyvO5ocyRotyRAw1XNcMOnpyNj54gPnlrBD5KVnlZJowhfzTwv7eF7xxppktOP2CX5rMlHD4j0kIuTBBVf0hmNuOFSMDeglSaKPE6b4qGOfCvpJ5QoKvE5VyeFDjdwPltlxyXxVLGDIg1mGWKQfVtb640DuddUtML1E87Q69oxBE+K63QEk1ubRXvS2wblMx+lfU9whmVBMgxktnCAtlutAABz/EK5lmXhDV7USykhN0Q2qBIP3Ux+OBB0epHxlIBtj+KPwjneXy5nnSOQZnbToA9F1uDQg/dqVwdah/fcQ51bR9X7N1u0BvsZ2m2JOllnXwVIadhHIlsp2/qnZldPJE0BHgAxQwnuX68i2C2n2vMzD4/lF/ck1YLr3FlA36s9dr7NHk8JvlKLhs0FhgR4R/VgjA9oyWbxsxFW0rq3pZrZUxUGPsvsmpWyRufzRpMV1AC5BeGgRIe7Pw/H8JiLJ5Pjo4fVaH9zHTMELo0aWRSF7i9NzcRM9ziLu0AfYvoXaUZYmmIpPxmm9BuuQOPWRzLgIU6Xf4oZuix0EH6q+px95FDynYbMEP5abaVR2Djkn2Vl7NCA7Sg9T72ttq6ytCmfYDmK7kNkKhSvHUJx9IuqyOzi8ToEEwGuhn7n3KkTt0kJJB5sWkXp2tTN8p/d0GmV9TeFg4ak6zX56s0MWCEuAzQjRlSZd+9Mg/e8QcNxit3wORk7J8sP1U2ffhwOHXEkEAiEoNkGGKgXP7wNmQzB0G205AFtHCRX9Jvxg4ij0s6drgX/GNwPOt1TOkYDX07V2GB7Pra/HDSoyHHpI3y6muxhNl7eIgOQGf2g5h4g35ORs/D3v8PjG3tjmXD2mhhY9ZmNk/jhNlug/MnwdGmxxziqMWiWaoFLsP0+9reYaQJj9CCO6JMMsKHsZh/9/YUwhJUxQr8rzGWklri/62FYcAWPrtAYAc7lijP6fL/5bZUYJzYE2XYvh69icx7YGRCCjOoF/pPxUG1IR3ON58vuUcRiUvqFrOtnAKxq+KmB0OWBW4elCRw+lJg+rJe+vs69EskbxNNNskxcABX38/UbnLNZ8AhNnEqxdEO+AtXEgKiZxidTlXIo7PoZyhRYw7GymIhUM4ahUK03zIwDfIbyvXzg3Z5JJ/cnE9twzGkJR18C1i9dF2VNiSX1tGXCpBq4DfYqJ5QGhvIuBA4zKnvD12TwBLlIgBDfAxYiozkpi9ebX55TQlFysSdry0HzYyCPLjzQEFIK3MgXhhcztoF/j/x7g5cdqW9gi8xjMimXsuKrhOkd626+M3LwoBu5aY63NzNGEdIqqgHHFVviOtFqoZgUjFRoTtH/vz9qT7ZgL/8k9lD2g1NM4nPPhMENKbywlwP/TnrPjwMdGtzqw1iEJOsqx70ZNb9JOcEjynVMtqBV+EB0jlzdy+b5aSzb82JMr1LMHSY3lji/6HPE32QfPEkJb0oDxiIdizwf2K0RjeobG9RWuGD2lLjdeIy5EuSfHmQCh/E+DpsgOtxLeL22HFCceiN4LCNONbUk7vsaz5D01J/00KadvUOXL0QrHoJa1ODLeA0HCewupWnCBIizlvEqvQDdRyDV4oUCsaOxqZ7xq6ro55ruSdb1cLGMBHz59+jL/pEsxtGuKyRsQYAGSU9ohh9G9NqtruHXqQNE0a0popPrB0Nift5SS9lNrKFKiZtzXOis6v4v0ObRkZkUL2boqNd4roz7vprg5JM0hcRngLFSg/KQhMMKqCRMqiGNLODz6BT8soX0EwNvgpNMYNvEc0Zg1l+0GCOlWMusuJ/i7tasra0yWorcVB3fRzBSvhcOOuiqEGz0VCHJ1CLaV1atyu/W53GtqAHEUZBq7ByV96FbeTmHbZXHgl1VAUydu3RVM9UwoQeX8QCE4rT3qlW8lpv2LaCEndco9uvEaOOWgnR40vukBGA3ARelJeQNNWI8rpUZc87UAoCM98G/DAN3GzeaWmHmeIiremLyDfvFToJ8VI5MlWYJmRNTU8K6OEAET/ikWV0zgp+XU22dBT9AT4pyttrMNM48Oe/CCEc9PoKvNOmzH4gJo5gt3IzQxYm/c59qShsKbQVDaT/uIkQt2q0NXByRJQIIjBpeEpv8MWPh0jmR7nm155Qo7u61g6pmnMFEsCoMXUxC/cfZQQ/v/K939zWU61R6jFfUnyWEhlRTXc6sW88dl3RohS9OsOl71K+o0qzyrKZOMJfpYJRDqOg4gRr2tuWR1/5ruxEgPbhjmbjf1NePHQ0Qj4NL8jPaX6t7bTj/dbmSO2WZ/OgjXgq2ctQ3X3YeL/4hbCu58/D/bQzy2F8kvMeR21VN6QSxE4BrdrvNHbbbElxoOCodA2T99NPQebAau+wKkcrppV/+k7y6thiL+dShkaKkdIYheuHEVgE361av6jJbKDgWIpfHQQno4RQWbBJAWYUHPhF0rydGxjEU6iSocSPMXsVPerXq5liAXMTqsTc+bAhunycdXOvUYyenTUaSqtaJ/TadBcaqCWChijS5E5u1cn6nprzUzpko41M/jzJzq/Zf8jK7y2rXogAdnI3Hxl1b0b569UcXUEZuxgAg4sLgG1BLvXkzjaEanYCNpl6zuCwWCZOmf4doRfn0GekCJMz2DIukybDFMLxG8tvmslBXrSyl1K/nEikIhGxYizsH/e/Y/V6vQV9JzJyMVQf0fYTQOQrkdHb+ojmw5oll0MaH7YqA8Bt1t0ayd+q48oFEi++lP6P1QEPEYSU2IJnpGGst6SQ65kjUxWqiN6L7vOGwuqXTb+0kDIaTjBqfFCVfJrAblxMQrpepgilLmY7tcLh+0z2a8HTwpMp7c5rcby/X2TvXCL7cCtaG6I8OFa2HEYVCcm+Q4s056+fDhpWfAtgXwT451PzPbtvspwWEoXBsWHC57Ea+/AhTZq1eV80uv1Q0X4DKxk7RdXIW9NR36KdwYBglVQRGT8Ydk9lSuEcUCkjR3TceiJsVkdWQcSUz557zSdDaT1LlxXVuTWNgT4wSpnSSKeFhS7Bkg/L3v2N0ZmfwxXa1V+Pbz/luimehS4K8ltpaLpidxQASUTLRQTJTTkgcaYW4GxhMSeeON91s/uqA60WYLiMs3lk0DHY4cKe6kFnmU2dGnUtNWhq486hGYgHRGiCwaJDYVYb56bp1l1f4ij9s53tCQH5I5Wkb6iUulEPhGcC5M4p2eGS3wQB9tf0BGJJ1xtGzu6oZ73JFE1qdEeyU8FuIztqA/nDAu5KsublOgWwZ117LZWdvhwkUq5QF7dsOuoaOhB3i3RJ6/Kt8b7Pn+AI/C70TX5pA+c7iNz+ZuCynOlH30wCDx6u/t7A1RtaoBYCRtJYr3KF07uNJLDJig3ktfLlgRiojpJKqgfnF55w8d46uP4ThVOoUqeQ5CDa9ndAIiFeBIKocfba1tcxIlIcjSI59suIJtCZ4PVfzbgIQO5AT0sg7lzJxOBV2iN728X/GDK8Sx5ajY4NWE623Tf3/EZts3IvqkRwd5OnTqLKmjFf8QW633PD85Mc99Jw8mHGt4VpDaiTwymXwGfDPXG5YDmOq1gm3LvZ9Vs0InjJZKTwW2HJimAnCRSYAA+EXpfB2gAMQPkrYprep67Rs6e9jsm9RRMaHVgZOi99u76u88mMwaNaf1gk4XVfgfzjE/4LuN4T4IXx/f7BHy/HR9Gnxqg0PtoTRcLoNV184D/AKVWzPySdYGrNFCAWQWc+QNWOCWZCTy6FiokCmKix+w0DGMn/O9FDdfbR12/SUUqIqWz4pn4mZd/SZvWOQ+oE+2j1aQwqPMhjCUqXrNAh3bLgAQsi6KXMmUT4zmjj0YXEh5y645e/PHDZMb78JGUmK5P04V/0gS4d//e/T8X8UIf4dDbNyqfPy5VsJpcYVE5Q+DsKihz6lUtb+/2lEio1DEoks4U7hWliZU9BWpAG6YfUTXvBl4yYMJCtv3DnBHpnTNk/8kMyCnHN5U9Ksd0ovrG9tKq1Jch+iZsIfgBxIhuNgChBz7mmORxtMNVoqmqHZ5SeOmizSenW9e+ZzQMqVOlPibnbXMb4J1vjkyNRxJZedUJ4QqluGnFWD2bhohnM3dR5jM+wE57ec+bqyXvwZweh8acevZnGamMDqHEW+D+3+xGeNREgAF2cFT7AHKfZS9z0PU3ForcwlEOENLV6nSl/Eyp7/Y55rFDEwYzOy0/HdT8P6IdLSV/XgPpHK/j848CpU61I5W+X9kfuvZxTN5ubHn89GBXRtFhmcl6pQZIOSJ4zAJOobaRndTy6PCuMbT7UTtwgeRtDRZFKsXZ5z/LqbLP3NHpRPFzcqlm2CCYluLDFJ837obXB10n6+rtq+PihsmotMdsIrb3FhnjQq8GmxiGtk6dXaxyx0XC5Ir3VMSQC0uUPunIwTTTY08AYrWwTjpDOWZtzBPPqrQ3eemxn5e96MWuuCfkdZTF5raryxFvPcmHF+ZXXpiLPH5zuX3KpBObVp9lF4tquY7MYy5wWUnBuYGjELRKXAhwVwEhzvTMap7J+lmwVYbj/Nnfj67C8sKcidYw7TlO9tncnoVZypC2CdnBUVdSiDq7mReNS89kkbMfOn18vvifJTvFLjsJac4u4jDoHM7QEqhq+GKWPXH5fVdY4h1sp6dEFEHPD5rv0SYgz2c706QKw2gyGfzFJGkb03h6xhSdmCd1xkxfaYYNo3QmQNg0N3Yau4moAB8DwoJSBj+qKoOkv/8StNmTxiAjDSeJE1YxsPdk0X7pm7Ckt9cUwU89+t1cfCAuR6U9bhufH5Fq0HgF0hFEO5Uxrx6jV4lI04Z0YlOv5x94Q6h1nDIVazgIiLQAyJmvS/rdc9zPsWD+lfDO/8GbdQcvpKicIBrps6L38K5MESAP9RJdep9YBxNXZvaIUlHisHKOI7sWy2guRvgApjQX2kX3EqeTdF5RyZ70/Kb5G5xHy/UuOzuwHscl/l3Sqy0++mblPbTXleVkFFay7m+B/Evs2MXgjKxrD88cxjBOnYHItSOhDDf2hL8sO3C2EZAZ1W4zi1aw7clrVWTazAe9+W+ZuCEGR159AFdqUPUf79kT6fg88NpsTNmfHVVL2PDcfwdUQQ5KblmNrrw2VUrXlJ1Ymi1jnSQAW8WBNmcVqh9vJfa54P0wkxX2uEMHGDBmk86aN0Zg3WRIClZ5dhVspFyW+6H+yrvgAJT1uJ2cEQI/eE8f/yBJmQzskhj+gBJffYYxC5FVD0hHQulEKJXqI32g6cUccc3DY5Ml/FLKMhZUCBT0LwTF1hGZj6/2LtPjF6qennY7mDbAcLz4JExVeJdXmcVikdkN9PSZgxwQrL9FB3B0HkyhR9ZxkPmE/PV9dV4o4Jj/7BffzkfBhDCiXOqDYJzms9DFIX3j+IyR46HnFhOeY/VBasC1FZHyg+c/t68BN3lWrBUJMPgkqngUtf8IVsm2o0uCFuuGzskQqhxt+N3Cy/un3879lVxlC15y8/QxKGzyDhaCM8bZczYbiLSgXGzWYZCvLRiuRyn5yYtrRC6Mv71mLLoTQGunBXCdV++iDOBqJZ+YuC8ILQdXGXShWC//4MZdSiLy/RMGud1ZUrZ8IL8JkzakZHQ74AxOwlgA86IeCl+xSf8UD7Ht9wYShfK8DalIQnKim3TOE902UXNKHNobKf77YwIGHk78HaGK1kPUdfBKVaEXFsYqslaC/35Kywtg4Kqha8owdQ0CrD6H0e3TIP0mxGh6i+MvgGXkkRRYF39e5XLuZPAXGJIuhSVg1KlTym6+FfalInN24TyZUuEcmNfR8IqCFraWpbKHenAN2cx6UBaWaPUYNL3GZkcKaSa0BnoaWzc/lnQVkvTzgGucNAGaNZHrlURrDnfcOTgqx0q1Ucnt71RPLybDxJfS4IHY+3C0JRUHoBjImN5etaa9+oN+1AZqsCpk7CTs0WOxiz/BdROa/x/xrmA2xp7J2jrAbEf6xwnKUzhDDIpc5BYklXaA5qOv3EC35DNg5oYUjOsSfRKUP7hWt/OW4RreinLoY8WNXx0pM3f3L6m4DE86YX/GMaowl0f6hMdZAJNY5Bpwaq3+xuN1tG8X8TSIneZZ5PDUl9auSecJMC4UQh0wxLfBAWYncMdcGZ+dsYk0G9YT15hMyYKD0l09POxQyB4wzT1GbAqyuwuEs1IB+fSBohB+jifCMhkPTLtpZXC83Vco7AqwfQug+kophAprdPBko0lYj/l0qKJKfpa1dvsrEB01Z7dEaUb/WigZeeHtHn/f9T2yClPIsC+1YG9Oj2ibn5nzC9DydtkDLVPPwOyNzeu5OVelO/KTEbU/9fRVKKFCv080gRqxw7sf2tRh9G3mB9iD4M5KRd6fhQ+guA3lUCq2ExuQqYCR1U18UZN67AAImPXuwOisJsHC5PhPqRyXciuPeShiyUNY5A2yzarAVyZ16pXab3fXllUTeJoY6sB9tWfIH2vcRjfYNHVl6mGtxHgC4q3u107xAYHio4JEU31ZRTkur7+iY4eMZQn06LMiwijKoSRByDEEtDIfmm3Xu4jM7D32dZAdhM3WU5etyhjm/52hPycVZDiMzX63ph1IlK4Awd41EyOlE2JUXf59Js0LElNaYjMDrRro419qBwZ3oW044fcKc9gzRlDTSQUdbDyhoVhwz2w2psL03KXtyJrp9zqaZcH7xDLTp25q7GijNA75d0B4hUJ1RC/uiRSE1JGftzLniPIn2g15RUYI0cNE+4SVhg4ZK0pycSelsxwy5PDz7GYhmvTuEUmYdZ7DL9syZksHgKoUNowy2lrEbzslI8wiNNvHCohhwIWyL4SQ93jRibZpS0+SizUsjt8d5gCkhDqwxDsi/zKiicbjN5Bc+SdsnJe90pIzhkTznlFOfYKah46PMiIo5xNUVlCeGaRVfcUiHMKNf5GF9KbBjX8KMn6EbT9HCDKwrGJdalA8RvVUPepa4rpA9cvIvyJ5+bpE113UST0MK6IGxaEwfMdXXOK3vduA9CGPs0ZXrvUaAfT6EgLvt0zDDT3uiU81I/EzbwOENFrrwtxp5O/EENsXg3HV3LvssMb1q5alUN+8HMfUTsBSEmozlPqBcVPpRX9WwePv3Anz0Zt1JoMcq4HaidAHTkbKgWcaFmgERxXxhIrNxjbz4enyebSB/1e0IpYjnflIOHwialFTwE/SvumrTZmG0r452E7dFzlmDW7gXyzf5fJBMjKK++H3zzf7R/sgXvx3hjpzk/g1gYrmaLWJENK9MUEaL2P7N58VUaj+0Bjk8VuBBFGep9KohYMSjDHgxZanIOxt6CaUuxcDhrPRs2nACtGxyJbnWJmNlLvx169ydPKNBPaJdLkabaUYQTy81PESkUeCQdE5DDIgbQeLNFWpc/Y5GyWcPBLvVM0D+wnd6WApf9I5SMEsJyBboHF/43hpefugj6C3BcjoDY6StPYjusmbTDbeqRPBoHiJdMFR2DWKciktYFflZYJMHpaCtkoYGsT87qgp8ajTEYOdhVPqkbPYxyz41N8btof2gYa59tSP4v/w1bw8CcH0dZ7j1ybEIZhvM/AX5EM2ehP2/eNjmB4N5b3xLH3fQaPvh2bf/bbRAsjJot6NbpKE9ugZTQ8Umvtt9URrfVf8G7Zh3K+9uAtTxXdaopSohtjq8pY+URXO9yl8BuYWSLzD0RQZ/Z3D7XNE4+xmswdryFWGcKB0jzOe3QzcL+SzAQjd57SU6IVu0cmsovvXIlra9YxSrslgX2lIt1oX6+BZTn75yii0Jr/Bi1M+nFOrLv9gO6Y+EsbVGFok5pM+stnr5yCUDTx/DMk03vT0OqdXduRFreZMdbsH2tu7Etaol0H4WJlSh1WyL+xoyiXL5Pg3Fmj+ebhqxLdbOFuxci7asobQAcS2mPdrGBknfTrYLsHsdKXfsEcjtgrhJy2OxWw10f5ToO+2rJx9Nx2PWqVorsNZjdzGKKu48dP2ys8yAO3EjkXu46gBX9Iad9T4qjUHIzvWuKYM7x4717qjZxCA2T/2Bb/DEHDyIqSh/Kh5+y5NPKKo+g0t7WLU+3KGpVi0vSbpphcQNUNbYSvmZ+TyrBtYMfVIcnFQbxnUAZWFLliuXn5Qf0TjkpjY2pggGqaQlYE3QVqQIS3yCoQCdg+X+lFejITNR4fO9ZZiONvjodHVafz8pnkja9Tb+gJmbk+YAq8rqqssZf/jYcAEeWD3FcC0dgLKgK6thqOLQ8yH/bMu8+3x0J0+GtrGZeDSvyNNvPoX7fLiWFcyXMKVs5R+kL0FKG6dBJ3quHqhnd8/AznxoVQ5Qg+deYhVoJpJhWlCHCJILnbtbKSMNh8B1TrJJ6YrWx+fJYQGBjzDCmi7GgpFsUhKzLXLVHugxY7QyAI0wfMawdXosWv9qY8QW8N1TcNgh5fNhmIw3arZtAntkdl7tODeuHiRLaf1JhlqXEMpoJz05DxhJlBkMdRMa1BNvKWgI3lo2COplJtL2CPIEdi8Ou3qm2Bo0iapO3MhI+9K011YwKFtz2RJuIG4+byZ3H3PDHpN26LNcj+v3iCKNrOWvNLQ+sBqq1qUFYifInwKxeWVmNWA0RUelDErzrvQywoRIy+b4gnObSFzbJwPYJlz3QACdYoMokGZBNZ2d3r5aSezBHduSnlIJYScruoTyPNYgl2FrxLo0nkAJHluYzwiiXuuvwp8tBGwtXgJG7nMNBO2HUlygkyMc5MvlLpYjbDy1KlqOkWxl6bbpVhVX/elhsXg91NlK2R2n0c44vbhtlzyWejVDQjWMzU6NU5ZtZKFKIU0RW4mN1VILXPxB3lNs0tcbA47skI4U9LmBblJH0kXEEPvaOXRZgPeHkFC4pKMiqd2Cl7Emj9YkNuaTSkBawWtIxUSQy1ivVvwsaivlXLH2YwbT//TCdfuTMXJTX0Zb7Yg78dCRFvDQYR8S2IDIu4qBai3gnz0UIPTe2JxbaYxkVAeVF60E5x2/TEtwmsPmrN/Ig815YMv+gApX1Ht7jN5gyM7luDrn+rMcKgjPI1NLxcF1WCQ6FzGKTc0i5apLKr6yQUB5r7G0Yb/4OuEZhAbknVRBaShVTSr1fsYVunQ8nJPbBIVemyb9+vTnWYyQIC719/gdoe7F4IRNNRdMBvsG4xcCg/3R6MJ9oeajVO85NRO4SdOTBcxW4hEsw0Mj7q6EDxJxklCC9JXL2m9Yv8kYGcbz9S4VMbPstFHaaIlo/YHjGl4+IjPyYPRJgEOUTr3WNJUySHLZmEek+7TOWaRESJ9IdYP3t0MmrIAUN2pYMPxXltg6/Do3FLgfQuTnnLgXQsCqlLMZu8IS3XG14zu6YL1Bi8H2iKygRtONpuD6/OaEjb1sTNnsJ3zhVisgU9mIxpONcIfAKJXZ4qvGefVe5R2reWTomNXrJdj/muLLL8r+WqiyJQWsrZCJr2WIbn/TTaESHa7uIrUQUdMaiaLIEfGxltqFquFGLZnFjkIVxatPPpXEKzDoDDK5LlejPvJY6BF8yPOv8s0RLVrCKsQAnuqOEHNYQWYdt/xoDXRZ5h/+o0ueAJ95BILghqSzvAJQk7GT2WhkvGFv0vE2wyX4R4tn/ZwaGaWmHQjzwbkEIhgx5OC+7DoSY4u7UQYHAePQfHFXggXue8Whc93oYEh4Z9a4XgjZ1B/agaRzRka+9Dg5N/DSNzWg0B2mF632QmorA/FAOhYaEQ5ma9qSfQDNUNFlq23NMDMyLdiZXvW1QjdTZSMoksErPAT0+A7ZHNmA5NM0AX/lJKdTk2KaphM03oSGEUlIaddOUa2z/Y/zA8T38HrekXrZfplhC4CokH0G7DkyLIX6E7ROMe6C5UBNzjBSuSvujxVRP3OUDl0HTxmtMSXUL7axup38/9OypguZxFcdR7H97Z677zi+7jNhaw/Q43Nh8YjRnWm9pOUxpS14ZC1qtd3j6Cm33zGW2opxkzd77n5XlxvYmBmAnJBa60Q4/JitqZ0Bua7SF8/Z3n6WG9jtGidyYral5nVJocUpkL7Dy3TwNfQkWVZf8CJAdI1FtPwiT2KFqrkpO17fbGQ6SrA8lhaUJkk6dTOAEgLcMsAplrHXmGZpdQTFcZzWcvdRDFF8hB4gCQSBOWl2tA8NgBGvPOSvIFOskJ1Xq0kSM93R4Gg0FtUaswpS9rUFyuqK5jO/UTkUVMTR4TOjyGJFe/ME8XGn8qwTevMkgvo95J3gjN++O0ZKlhBo8rjdJnznRIvX9X1I60b9D5ZmUs4Q2KYSsTgEdr/M3MVcetGosWmc5OjKS0ix0v/E9JiICUnwbWUtUGVAke0R/9Fmt5KN0LHYhUy/OI6gaHWwMZKUs8fQEHrzbL8qjLIyBY+TIMi0Y24b87GlH6OdFP1KuWbtd+OerEkBW4fs32jwkj9Xf1bzk7KqukB2byBkFB5JPdBkHD9SlUyCikMEJ9mq8NHWimcYounTWJAc2E61HZ0YyGh6Djk+dzM5rHcwBwMDeYM398CtC/TLdrbY9yEmrvO9UQ3j3jm0ScUEzwRoULtLMdDNNTRYp0qEhoTnc0YuysaJnNoiqtx0Sp1ZubigUy5ZNezCXPSUK5c9TPUCN1uZDtiHFA7gYqGzDOX1a+HD97ij+ELhAQLQYHh0EAruPdsY7pXrk9NLGw/ifd2dFesN486+ahwVk2XweDvdc6a3jN7aDV8AyQFc1zl0QFAYl+X6YlJl0bXwRMavzScPYU5ZYypK8Haal5Cqa9yjEtBkjzByGuwa+/B4OJM30oGtik15aGtLTqX1jqj8uOEALiF1YQRyiMz6MCA4ESIRCy1DDH+7PPygjs4MDMHCQBnpJajTezpVZGBBziMEbK6dyb01+LZAjACe0Hz8wc/nibOcZu5ppAP7eg5wQXWjDDY0g3BTfioCLqNoXUgThQWAclt5Zqj+oIUZeM6J4kfEKvzb9YYXSfZlbeGol8mJc91aK0NbR/oL7H4sVZ2+mA2PGtcPu11PYhwd2gtcVdf7getJ6gm+OmdThu720mrHApIeJiGnW+QX7gGwGWyKEdJ8QzyPBz/Llj3IQ3Gmmksns+FcPhRdajk5VCwT+pOVS0gJdrjATJIgZhCyZ/UYk+9OhzvGz79DCjxPas0sViovmgM+a/ZROJ+ZNVuCXsiYUg24Tw2lmm3Cy1y3uAOrOf0WEQCPShAGMR/2py/Q8Ok5GpbIbpuQLQDyrAEWJ6Gg+0fNwbCSXJmXkyrE1PYnDLnJyklKZVGjEgqFRSaTik0Q43rTxkIMhai6BJn9tU8bUUT4FOZ8m4Xz6N1Du48knJOdAZMUnaD8z4Q3PBxXHjEJtEMOsHHk3Nzd9TD4+UxsmGvX6UeL1KDTJK9qLsPkY3HSmxWfEP9cmjihTPCrVd3CV0fiKinUsmIZezJ7oavM+8dXVWcvBk6Aq9M+gVd4gwuYcZo5eY/MS7z773SgOukRl0xZVvw9m2tQsImtsxVutJpmNJNwAxEEfg5hy10Arag508LlfNHE3QrBDafZZsQ2rnK6YGEkp1U+GdxqB8XqbKgai3u+ifLRQ4k0vhvAq+/SdYo166uShTK/X+KRdoxGmtOCogTwqHQD0FBH8YYvaX/M+mjDNpQ+8rlLEp11cfRxbuixDo6GDkiS6A8itA1qyxEBBn9D6iRJekCboIsL8w/D9noGmgQCXURJGcQHAx7sIalBTOGLA0dETxuRxsQHAIbQb/5VKSxt/hwZXnl4ZKr7IFZSNu4Tm1COGzznReKa7PrJ63trm8vnC6dt8pmYZHUk4m0BjDaEkRWwFAIsiOolEvGQYNQ/tIlIQnqYuxRxRDb2iJOO7JF5Wo89TUlT7ceFnH8DXJoOMrgPk/9S5P2Mgb2sp88Znn0/Y0FKPHKYrdclYtFLW7YIyV9OZ32wFaOKLlHLOuT5Q176P+eCOWMorGERaZi2HAHnl496sEHiR8Oh7X2pnwTKY5wxhYJ0u5aJn+0nbJDv/6Fgyprzli2bdX7hp9eJr/8XjEFkixgGWq3MsVs+kCH4DzifaMrsaO9A6RwOT54gjcF5+oQhFW80HpofF679uLm0i9MTHgtNaWG2wyi4wax+pLSjgtPG7zhFwk4BBTfEJrZHlQFEnvL7sNdrZ+qvZnpeirXAM1g/Qy6nTfOgEQTZx6pJbmHZk59P0MiojriBmOVYLKqX2Wck5gjUyhi28vkANZBIjfyh747KzXouYDPC1YRo5oV9Npm6y84wYYOwPrPh61wO22UdwIAkkfuUz7vICIKPOCqcH1EtTW52NbBT5ATskv7WEgaahlKz6LebIBasV4aXGyyV53WWMU+OqzGLcML9k2HOcdTANPNvZwjCOuk1j1yest/1BRXF3afvXDzhUyr8yi8c5z8+gZ/jnApOY3UuKfmgkzpOhRSZfVj8SGnIAjOxeaouUjDxiD37H9j/iKPmGxkZMsKlpno6mmMegXb0SG+fYURJy9bLBBCTahkGZvpLFS5J/5BDWDHHADBa3mvtAesF+9NMDcgGUM3I1vlmlgO0S3ab3U8pVmodsLrmOH+H46w3gNOEk4mXIQ8b0JUVlAGtXnygzUpt8QpqGCg6tRuCd/LOks7jJcz9+czWJKbkq/w63gswQlrc5+uc4AZXIauCMR0R+t+vPsnVcveuguwCZUDcLcAwdB6J7SefxEGmDVYUklExLBouwTAY03bv79RGFcaS17rvoRwvcRWBUCS9e7VM/KFLYXogPSWdaRU6Txr+2cCyW4gAr1U6m2yNoqsoh4/hG5GN4oS069DlURj1T5ytym1Ladl5ghJJLxuwCnAtuEcaYUAp34zMafiCkcZMArkZBhrejESOLHdxYiwqwTGmIBO9YrR5ti5XC9ovhDa1sW0Hu1hwWm8tSNBifZT2sRL1Ce0BB3D0zu+z+caqxl5TcS1suOsb5Ofk7XuCl2fly7N1OkHKdwBy+pqfNwyP6/Jv8ERuF9snyf35nLjTQDOaOz8T+2iuEwMFoNgu1IUk8K5dF6a04fD0sC+NNaIks1CczQztRfZ1pISrKPrJjrA/ILseeDWaDAcrZwxNGvQBBQeKhp73BqdqQZZfo7VuO7iiQUTe4LvBDTFroyyIc6KFYM1iFxa+aNCtuGFemgP5uza4ma9PnT6bVpS4hrorp5rFf1xHkEx3cMbyUx8keeR1owzsG54cUOaWqGejhDHjvToREUdnuu2jukABuTeGpZg2trTYXufVdr8ydALlQOwHYGZY5opZZqVrATyOkXMqaeGDEXXNANdnL2EZf3CdZDI9RLvXkM80/SFzO5kn6bmpiJ6F1M4GiU3o5KBpz8RNeEEuNLIxbdGZY0GjWs8oOWi3K9qRUwI/ORkN37ethtYptffq7QEHy4Ivi1eZw4yffS91tOyX+xHqI4hP49O6dYYxF4x5cawlCDhEnpeU55RqYegtF8HcsQW8yaRNhL2LRBaEKQCNVRnzhltmrcG9An0NbM2G9mmykynqZN5XraGY14L13YIwc9dAGsaQ5ZKXb9NwA79O3LsDxOHU4gC4vBCB3TX5QsLfmZhjB1FvMQiwC6ZWxzv1MgUBM/kdqByquoKvSfuOVnvaT/GpLHHrEJZItpgLmqQsI7XNp2Gp5lqzUo2E7hCDnglDwX6GuH+JcBTnu9Kcfvh0uPdD/ADNhSBfavUYRqFTBsbEeJDUJPLFipg4P3IZiDKHGkMpN00OZx7N4Z7msBS2P089f9ruT/2jT1AnGA1TRKec6XWUx/BsObtN9uZzHT+hSOhd2bot12DKdqKWfjCfNZbyEhf7otYtx78voaH5s/uIRbymp3ue14LsnQPr1XLI7ROe9/ryVuX7m5+FE4KlX+5A/E5QkG30/JPgye26eW2Z+05O/FZSTOCvEQpZqFTjtnyMAPgE6aAl1UpHGB4Erel9pL4kAu110TYNPu9wN4AXJUQKHXOGhVNOETqgwtQWFHFteJKmwkVWe2ql0B4+jr8N/yHSpvP4MTN1Jyx7o0tgwh2LsetpiyRwubQpg6B4l9R9qV9kmZhNhUafSrLP7fXieeoELQVjkaGRSM7Ys2wWrwuHOUBryBhSSufZh8kd/xDCRw9+O7EsZNALhUVG6YyJHh/KJGHUU3vpsK8NHTchgokTIlgeBXpJaEtOuUk8lHFLb9N5cNvkVjixBQG7jNROeBk7g2Jorj2Cu25M7IxtCt8l2i66g45dfUEiafE/lsYBDUCieIEtNW5fbnu+VYf6TgM8iDl8sJQtZpGIg1EeCOZ8ekvIleO6UcTtweLhbYjz6S9c04iKFFMDugcQTRVtxrDu9Q0186vNM/K2Q06GzbJHmrwlIhZK6PLr+vXOY/FMfsFi9vMenWMm7jA6DQ8bynBhSBA87dUKaDcegN38ULHcpDvhSrkg5cyWnYsRIWB4SXOSfZ8elB/M0MECbSU51lBTzuzFTCuBoZHjNeE75Q6/bgvvRlIVjhf+7YX+ERUbElNGsk9+sqqJJdA6c9aMyNEVKpXA5ny+lDQ3duzuF1mjV0dOjShn6juuS+Q+vCYcpozs8FKA5SGMq+xypsIXYVt4Jcs07XBO7tiCNXbDNdWWaZoUHJuZyOnLNqXAez0uR6e7KpKIT9WCOvL5x4SI/I8g7+Hc/Wm6ZAY8WB970suiy+TDSuVqPLqqhBB0AdC21OQOerFpCSWhK5VMFEt/ZeSPC4pL08DtwzfwptR1NBc7fifmXvC7gL9BaLObwRcbY0b363FkBgpDXrnFnegeCH5Ddpg1lSNRw4zKoiRpalfOlrOJnzFkvwUT8GaDUqfoEvZ7YMumAxcV4FJACdNe7CDsGlHwNYBzpOy7ErVAJuJq1hj2PCgvaoMWZ057RzWDjhTqfiArFURXVL6MgKISPFYsslrQApKqUvOLBCTMcZ/+SZh4McV8wtoATWlENLjHcPiuONeogX8qNltWD7rYhOjCyyOT91QSU/ylrL2JXvjmsfWGN5bW6mAYLdYAi+CeUSrvwZK3cVjli4XgG9j7MROtCBjoHisX7/SIeanPEYdy5Z9t8qTTiszt2/Pg6zaH8OxR1ecGrbi3khTunWXMzczY8KGV0tJTfQSLGKewqcWek3n5pINQroHtgenj8hLHF+YF7Nqt6ORX+kdpzGHUtQu3WKxVESPmc2UdQ4xm5fX07ciuk6et6/KX0rLHy2pmDlPg5VoWVjTBypDyUWF7Bh67ar5IrY3Fh1GqB41Qn+8ra7r7m3lXaxWzBT7rOlYHhzHNAenuhLUBv1I85MrAI8yfd2kD+wSWEFdoYKSsbdgdnrIXLf2ZE/9QWDCwCDc6YMmm57C/G8oUs2sAwVnOajla26QU1rbSxIlc3vxKKvvg5OlWWFNGMn11i32W1nW+1kcakCOZxUi0Wm78Rhd4vKC+Qp1GeRK3Olkpn7G7Ih/XnlzmjXl047qR2b45t26c1NSRx+9y7MFLLXgpsseu9G54X59nycXXpmujsHIuJCsTxrsD7J+gEhFPleovW20DLGmQCSnVISXk72N3D1+vK+2aBrVb7jGRAzY7CFc9kcpNm6jZe8lVdy+GnlDbTeykAAf8TWF/zALcUreI5j74qus8ANZDsMdNcFCJxjFGJ0zFrcnF317hD8630spJaE9fReGsDtfhB4JmJ4YJPJjM3ACLmx7T/jiglBXF7QsNb/XG9Bj7e8cHMhnFI25zWgdceymf05P38xFxoMn0+u+4hP365e6trz9s9DcT5BoGPdUEc/ETMMk0Go+aOZz1MSY1tydfbv0ghbKdOVDkOLo3MY8tY7AGIEY8X8I8yae6SL/xE/vIWxi6ze7xG76d9BHmPN6ynSI5qEf4wsPv6vmKtItgJOcCWRAFI1LBssnyT2KVXIqIBKovtEWUkkgI0bgU63BDrIQggaYGceX8Yk1CLpHdo9E/2CIdhJR236z7Yffpdb8+1UPtCrbtzMlUekGpVMjkk6vfocJlQho0hSHceQY7OvMyXYkJ7VPFLyME6JmF9SUr4ujC7jg0ZfKx55RnbluE+GGmJXECIWSGO3zbh9tfqLWv+9O/dw37JZ9GeWCoBfCIfkolBvjwRcMAauD0twDAfIQeeLvzjJ/AnUc1mWt8k0YRyDcIRu8PWkbqyyx04pTCsDMXILFqQF3mguY08zDQ+HDs7cj4i8Snywt3JBoXbihJZaStB6yppZ0fIjxMcH+fMD2WOym559w6GlQ4dfijDPjXPtwENPx8DGow70Xcvqk3K8dKMjIU9X7VUoH0d9KjbD+Nxd8zgLyEFfnoUziWAtgePEvXDKw6kGx2fBOIadBqR5gojDRLgkjZsSK4N3uGDYFfLYUF9pCDhDxfANlsQjh3bRZ34B+q4C1uFWkAQ7sKGEBzbXVLYeXseh3gjg3FsEn4GhDQIBk7frIl9tTBVFIhx6i3jw6OVRcluRhg7wdRVSI6XCZusYAPOV1h02jRgJ62t6wgatTKgc0uhe/4NKdSRcyc5ClWmmrFbLsZkn4TAUlWsp93K2VBJ9ejklAM/hwVmChLzpALcb/7HL7QF0Q4Lbz0DEGFgPdlMgeGv8KJGmZ9zM0wPe8Nsjvg0TuJRNZrnrXHUkD0K3tvUSXONUsNgmrazk9A8nl/UfoK/jwNkjnaBF2i8B2ePnOGCjfV1hUGDEkTAhVArkfFYhwOXo8vJajN4km8DqAHLpgB1yOedIlj81l8Ty1gi55PrIWc3UdU9y/a2ght2T8kJvQzOpgkTpv0HQe5xKLy+ysnI4w36Ysel2UyMmyigS8Jk5+U4m+R2VWZtUqpQYRP3jCpJgsgq5ZwAolFegGZlnJX5BKUo2hRdHsM7DtVfxk3k+s+CWwUhRjuJIQaMZyIEYLxw7qIZkgBOUwW229wpxxGW++A0BuYHGqd7j2BGk4ihA51gE5mlXi3OmcgHzsFyb7yTriPpwXHx6LYVWrV/R1YTxmgJdPlcEvUA7YcMwDydk4I63YSZQj1wA0NwfY7d7dQg2bQeGJ7PcGt66NPx9edc+So3HXyDXhN9bD4Cb8mFaPPH+NEyXQRlweioFBwArjAcdiM/tpwONPCe29cwZT+eZNM/vrMC26Ier2n5pXWZ+Xsdvx4vLCrAMPiZ7ZMIJdbVyB0Ulh2GaI8My5/UpwYO30nei5LYEpw9TuR1tZ0jVJ1+1kbEo6Ik5Z2B4x841A2OKxoP24nhWbulvk7PM3x7noDY70plquZTF4asthe5lMziQVbRVHPPTBpayfYwn5XpWSR3kBiOZ0ek/iKT4e/vv2YES6s8zRiaqbbjWMND/aJ59xfNr1pWvPRrDelZtLOKxaup9HExte5GsWOvEf7xKkfMf+GwBeJDKn7fRIE4DmXdqO+DQvONb92HuWL8m4RpCFeb5VrByH3chfd5wUAg60s2YanzN7D8lSNpiV5tQgMPzbwidzsDd83oPp4NNHd7S9Ihp5G9kVyb+MSZ6llVequAJul980meX1DkMAg51yyn/n2VjC3zt/nqV8yaTwj5ei4e5UN84OuC9+XPeeqoxe8+/50VCvR4bGQ3kU0CBfr3BCUPjSfPn0vd0OJeyN3JpWSBdmUelcZKe9rSIkHcEeZcbpyZ865vKQDODmjCURCUDp41tTtCp5shgIyDf13U/i0BA37XQggD0HsGwFRw2ksWpMN83qjb/nYVxsSjyo9DbZL40iM3t1C76+6fRXUzgSbJFfFbhQot1M2nlixmq1TnKoBktkd+dbQbSz0HXGf0ItExzt4UKb1r+zMf9SWNxl5pAPGPH+8cufOA55WcPLDmyok7Lmv1XQpPPYKyyAeCCb7kaX8l/9hoxvdCzd18LrTcxdya7mQCq/1xH3dyulBmAld4TYghrmssa5NnYpqXpHi3nhWtAhQ1MvA7xUoLGE+aBOubyecogxhskugxEFzBHLJIcTQbjqVmoVhCaA2r5r9NErHnelr/kXbq8wexHSKx1jC+ts68+R72zJo/CR+KoW9yJ8jdVHree0xkfRGo4UBxmsVp/h9lZhOdz0RPFzBTNgDSVdG8H19PSTzhr/Rk9sW9xvSLHp8VU/2hizn/AQ5Pjq0CNijY7LJHu7rlk+D0qpf5rvBMJFrNPhMwhmM/nmNDDntwi2z4tdPNiriqVnLuGMIw7O8H7vuUUMsVy09M3EFbyOrti528YguvXlXrHHROd2l3PeG6qkLZ4Ku1gGXqN7ZBt/iBOMsoyy0dbx2J4u23s5R0MHn8KLytiqeqpuHWnUAwnlMnkMxwdRWVnu8iMPtHwlO6tG+2RtlxgFrGOKDwDqvYr37smr2ToofsReJzbHkp4/NMnJsVL/K+vJPi6H4RG5+lilR9BH3TdU69cFmgJldg+uSYklcbY63tkjtboHdiE0B1E7ACVkiN2wlqS24yTpJBKXafLjRAwVyvXC3RtYvP5FtD2GB4ZNgNYaO0g91DBijL/IXkCtP3LZEba2qYAyhe42YIURbLoZb42h8TEPpetykNftIbOt1v95uUW7lK21z33y8qW6Y1sdbzZNFY5AYWl2fBqw7tI39X9JAJ+YmeYBVwEvk4qZp47Rh2WwRW+4sjL7WZk6QFblBXElBfeoVKW26CM9l95wK7R70BZK8TC0xvi8h2Z/pOLUoxzltCGu4tB1t/DwgZUiTt7RVvNS7pH1+j8gIXiXSpsPGN+pbEslBw509hiuhMmIR5z2Xh31SQIqtO53u9Rj4OMmN12Mn4Pgz5Ae+J2OC8kfkDvgEyZyeG+j4Q4jpB1KACoeeZlzeSkJw24kAawnkL6c4ef/8wxRNmvVqS6wzejrZZwLYMRxDL9spy79pYyfSw3OGbjGMpviq8EhntXDiKtqPbW6cxphjIMplYVJnHMvOH6I90c0w5jfDHY3vStLOAy4OrVL/PtN9dqbXxFf/4qziwe2YQOZ/DQWOlvnmxUWvnmGEW3K2tC94iUDjifJf9o68C6nCLuds9FFFZRkYjGModnToIR6hTBNnIzXPNB1HlbmV6XvFSk+BXy/m8dKovlFmi0zCPlSfA0AvYHlHDRki33EGjiRmHXdGc+F8zQeNQ1amL0SvR/ZUvgOqBLzOlM5/1Q5L8UgjYXbutbZGGE/v+5UuUJhmJ/sJnzkj/9HlRPGPBowBRr8JuDLNtTeieXA5KbLFraTGI4efLhRve71t7Q8Lrp6pwSqW+sEN0u38Up+irLZUyBXcHSUWyWPFJpLbzH/Tc3vWfvhrXZU+KgTpo3qirB2JHbLwpUPQpCQYTO4IuLtdj6bzEdQ3FnbbSE5bamIu83kf8/s0cpzaUJx277SKe6v01R1QbbDmXPDLMVTHUp4Nba+mRS4k9xkj6Y2ac/KeOjI6vwbCWZLLQSh7jNkNWPUS+WecCfmEbn5hkN98WovUdfTxaMLhYIpourAuOxXxRGHpKvOUfjejJxTk27vmkluCiTn9fK9CYnkqNSbZJDMQfH7oaB6VcHyYv2/olLh71u+yYPJ/sqRox7f/EVSxn2BIX8pV8yzNr0g5hfJbctKGl+lJKyMLWLcw+7BXXdFYqyxvihppH929Mrp7rb57KXFPHZ4OwMatB7gPe9wdqvUtaDsq7r8ezr7MnwWQiehulZNnis2xdUhzM2qSXBLOqUIOi+w+yOYpR84DCeedjWzqLQAmMxjQEnOaLDi/n3Wpef4uaA6yKTMCXdhwQe/+rKSdFK6YQqznkLlJ4GiV+xy+xKY0j+MOPQ/ZT7BBWBK8s+KRHKZt9VhEmawZjdV5gIQAWAiyq5sCWeBgygefC1L7VilTqBADwA/EFEdDwUNQTKDqKck+Snc0zpOo6h9+WoiVNAdV9kIGUURwn0hkXYgQkO0MQHG1kaR1t+kXvgvAA59y2bJAHoQjpCd5tS5KrrdZWLCwvV5fJYmcPwlKHs/p031MqzNN8qtOYHLcLSKOxdRtF2YHSYB6P2YgB1TScFs2Ya4fCHO2X7FG+44fifUcimX/39A0fWrcpfLX+eLjMO6LNOYnDBHGoF6mhcqrrWv0iDqKK3kktnN2pFlQ1stop5lJEHGc48cqMePKQlfuEP7hcCwRnLqq6E3Efv6Uys8aj2MNps7y4hMuZrDLVbc6hPBARM/hWy0KHsTicsqBgFuar0Yfvm+FeTI6UKU3bywsoyyRa8oN8Hs4K4pLrVcvczvVDTjB9wXSpZMwN2Cdh3Utmwn6kEoZl2O9iWCtidjOogeLZhrAFAJ03gNZCjbHmnXNTm1lWUXG8Xt0lF+Hwuho6yusaznzVhRaMAptPggY3GrJScqQkhR34OkRSnJqAwp5OWLe1M2p+Ryzo2bul48CsznEnmPv8uznBRgOiQvI+Zf21dzqpF1tP9Dc8QQ/1J1x3PzOuLxZ5PE1h3UGg7bY5NbsGQ9GB2Mt5iQ00R3lmZ8iaDn2umOS0snGkKz0OWEWpFDhughMW+056I2e7eIuenn/6v369vA92nxP2vpN9pvs+SOPxEVuiY7cNq53hYTxGwKon57sqbqEi3wThftTM80pf52F9KbZycySwp4FcpnZL7sQa9cxF+Sz27PnGhzkayIdHrFIbfpMLLw97uUdnaqitPYLQlKZ3FOJi+JIf+lX1itEkWdClT/L7q18j/63Gfqud+Nu1Z6MAFu/eMqrsKnAVZKPZiFldbyQrFDTY1bBJllC+jhMhcJL0MUHq5eIob4rFyRreQhLHV8fnB2P7slnDBkrzSKmM6Qu6WYXvt+ACP9pgW1j3r+mYTGK90tktZr28DEkFZYQZt0ASeiOcfdpcVRn5gymZxE/rU0rZT483osgQWrrJYjSP5Mwm/3vhzIfOGDr517ir9m9JszZVTrRGq/3w00S3VkjfWwfvvgfxi5g5WGhXHGPwV0TwSdu44YrPzDZ3yRhfkqMVEFuPeAOIWNXIYt7cgsJt1anT6UJEoLuN6s4i+nQmkcsCkoIKzM0PDOKuLBy2oaNpH5C8aPMR03G1zCupR8CrSik4oykfioKBet3v+8fjl+5rxAyBtTFUPZc2EqsTc0drBUqPpuaMkuTu8wxHVDCW9TTYptwfZHTKy+w/P2LAkioYOkFw5Zr2+nIVkL3HKpbLcDypJqZ5Gp4eJyD4yAbwMM6ZDcsWwo2aSeELG3RR9GE+EhjBKNtMRD0uUMa13heYfnKD7rX5E1wHjA5/wTIkDQm5V47gbblfJy1004TOuF9CnFS1i1OMIxKYDI1IRts43vqnCdGSPYMldTluvsKchD6VApSOwy2PGGBaz7Ki1SPaTLlKjFwR5WHHFQ3e1h5aIRipAIju3cmwZ5EWa6kOdxVDRyfZYXc1CmJD6maypR95a8tOG4vchF2KWhqiKufAvWmbTv9dhD4u2vUmBJDm9PgYR6fpViQFdpndwwm1ynv5C/oz3/+LIWEtEqMKeptY8icP8vNLb5co81o7YFaLYPtfOQpotNjHk010i5PeRMMnBsCr9M8Uh1heiyE9IRaY+zALD+0gl+mSiYsHlk3DhUZYcknkq2FJGIc6qrASSIUIM/uCU+4X+sVmlvG2qiz0RPCm8WxrPXcWKQCkodg9wcrxB/nSC+6cd8nb5aOAOCpfexWQrhOGm9hf4ULZOF7NIYu8rB9a+N50/RASBRzalY6wUYdL+u+3eDrruR8rqfXNGBxZxL+MsJwIQzv+cDdr4HrrEVTsG4BlVKmui7D1mORqDQUlfdgw9SCgJCjWQpy/HD8jrT2ytT6W1JrlHLwSOGdtl1rndgD/2w5ZTVxywWguUnIKwM5JTZMaZKK17VmnPoG+WowlyUbcYpMLfyMWIu7JsadFzOpR4GpWLbwsQ/7EIdW5JODA/ikshwQlr8XB6zLAgS2sFQ1RolHyVpjuvdYQrbCFvXoW7vfjMRFEvad7ciUSHKmljSW3pdFkuz/KDnMiI/D0susdO5CIDmh8dkdTd3Jug6tvOq5m2lHaXHuH+FgzaQShIDp4/JvT4yrYWh6SgZCUb/dm18lBLpihclt6ZJFs27co11whwCWXd4K7treNEXBdd5scGVadVUmrQLoMLxWZV8PpnuPPRFgh/DfWBO7u4S6PAVHwwGd9JGZttQC+gyShoGXoOcF0Mjr0aHvzyP13Tn5RlhKf5sTs/BhUgYzZ2txrqBqk6C0Dde4Ba5zJfSepn+aYh5nyCDDmCNyE6+LCjEQ+XD40OKC0+nju6aj6YsnBiB9wwN8d2JJlKl7ZFwe2Mp+C8AW8bKc4t5kgGwHjGY82FhRqPUuV7U9CKXBw8XFWi45U9G5ln6k24WUaJgK+XVvs2Tgusq2RUjXYwNQ+2TnRswQXuah3cxOCYoTd9W83HMeoprlUl/yxONJhrFjVH5USpkrggfN6/KYC7tZEwRoCNdMBSdWS42fT4bvMxXHNVVULNA687PJwEDzurc37bAZmdGL4khm/3HunVzS4qNbJqbEUfGUkVERPcfcI2Wgv2eB6clVmtSuzMNll+9pCpa113U/oydfDz2Pnc9EDmhZdcrA8Q2yRmtvRrCcTeoyBcEsqfhNcKbgfNL9G9EQPnCVWAKQm6OmmojC1XHrik4ZbWqQfbzXPrG6IbR/pqVpAb/lYOBTq+ZQfJPC4wKvKHqEtAZsh9jDd8oXtJlT1vtFRLaexgDgfU4QSWHVIPKS99A3r8IJA+dnEgziRAkHXc2qNQ1nFndspYWHQjSxMHsBkBZZIdXWpIbP9k1Mn7AwuwvzsB2iHS5huvYAIBLMXLO87jf7gJlcbhqUK97rezhEaHCrhgg8vScubLh1UqzCRqMrdGywtGEbwcztA+ohnKhkmEpeGRgkOHWh7gysoOAyYPlOg5k7DMQ1nMzgJehqLDrSHp9lZunJNuzFnXmJ4JMNCtBO1OybxlQucmevodsZ6Pkgz0TS7LV1Z3P3Vry7TmqJBzc7UuZd/VqBaD0nEEc/MCekxvuX4gD0+NUoRolcJGLbiUbVBBrmrVUc3ae8XANdl+VFXEOf2VAxAKqfdQ7uZPuTGYFwkPFJbKPYEJAewF99pL8GAhLgd7zSmDFiAKosYgAwlozIDbeDonX2BHc6PEngMQAfFCALCIDIy0g5HCRHcrZ2ux0WssaMX9twa6b9MHbdPDFn1867ZtclVZEeejATSxB84NYIZJxPJSd58kEGEDIp2nIJpdqSFoRVyOiH8H2SPLjh8udfJg7zs0Yc6tJE/FB8w/j9vwr8iIYMs/eVnJL1SY7mxc16HCG48WPayQRY2vRgdDQr339d7mdru0K0H/8Kr+fRvXXLjRExiWoFq0pGbL5qnV83+POSRz9i3hUwwqP8kE/31hAMuA8IPk6iI/U/BAn+rETmhcaRqOn3TMRb62AMW5aG2gHIHNBTJSshsWlVGnPQxXQtyzoRopsuZctuiSj/8uwct7SXD4tAmw/5+xxccTgLo6KK3v3tO1UwHyn0aiW9hmUemAerC4t4vD5iIbrT2Cpwwyf1pqqCfzTem88TQXPhbWThlDR+S96p4cGsw9yuLCrhsOo28dktV1v2d798HWbMfJ6lm498KJOjqRfHB4anFb2Gx0IHx21X646G2nXL+2feY+NWRS/w5IUAGPQIXPcfS1r6J+EFTsydXFPYfA7b3i3KHw1GxHT4Vsa7X8ulQdXXNE5veDz98kHgdyJi/OHbu24Wj8cd1QVZyqomhlWcswLrk2c6MOXyA+JJvNRhBUkQimeERj/1Lj6IW0g/KB73b9K75T2BRVF/MgHTvJhnaowRvNuN/EfZ1jCtB1tAvjTltOmXflH1tcqb1tI/qNJa0zVo5J9YbW2eyin9ouaw8SFfC2oEgMeYh0jXc8/hwWrxs3hA4nc85OtKUhlfBW9po2fzsf6wHx86+qmT/kkZDY4A08XGrer4a26fLv3g5l1/Udgs4iufcrj654tbNy2JgfMtvPQuincA\",\"base64\")).toString()),n_)});var Xi={};Vt(Xi,{convertToZip:()=>tut,convertToZipWorker:()=>o_,extractArchiveTo:()=>zfe,getDefaultTaskPool:()=>Vfe,getTaskPoolForConfiguration:()=>Jfe,makeArchiveFromDirectory:()=>eut});function Zct(t,e){switch(t){case\"async\":return new r2(o_,{poolSize:e});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function Vfe(){return typeof i_>\"u\"&&(i_=Zct(\"workers\",Ji.availableParallelism())),i_}function Jfe(t){return typeof t>\"u\"?Vfe():ol($ct,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new r2(o_,{poolSize:r});case\"workers\":return new n2((0,s_.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function o_(t){let{tmpFile:e,tgz:r,compressionLevel:o,extractBufferOpts:a}=t,n=new zi(e,{create:!0,level:o,stats:Ea.makeDefaultStats()}),u=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await zfe(u,n,a),n.saveAndClose(),e}async function eut(t,{baseFs:e=new Tn,prefixPath:r=Bt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new zi(null,{level:o});else{let A=await oe.mktempPromise(),p=V.join(A,\"archive.zip\");n=new zi(p,{create:!0,level:o})}let u=V.resolve(Bt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function tut(t,e={}){let r=await oe.mktempPromise(),o=V.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??Jfe(e.configuration)).run({tmpFile:o,tgz:t,compressionLevel:a,extractBufferOpts:n}),new zi(o,{level:e.compressionLevel})}async function*rut(t){let e=new Kfe.default.Parse,r=new Wfe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",o=>{r.write(o)}),e.on(\"error\",o=>{r.destroy(o)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function zfe(t,e,{stripComponents:r=0,prefixPath:o=Bt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let u=n.path.split(/\\//g);return!!(u.some(A=>A===\"..\")||u.length<=r)}for await(let n of rut(t)){if(a(n))continue;let u=V.normalize(ue.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(u.length<=r)continue;let A=u.slice(r).join(\"/\"),p=V.join(o,A),h=420;switch((n.type===\"Directory\"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.writeFileSync(p,await Vy(n),{mode:h}),e.utimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,vi.SAFE_TIME,vi.SAFE_TIME);break}}return e}var Wfe,Kfe,s_,i_,$ct,Xfe=Et(()=>{Ye();St();nA();Wfe=ve(\"stream\"),Kfe=$e(Hfe());jfe();ql();s_=$e(Yfe());$ct=new WeakMap});var $fe=_((a_,Zfe)=>{(function(t,e){typeof a_==\"object\"?Zfe.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(a_,function(){function t(a,n){var u=n?\"\\u2514\":\"\\u251C\";return a?u+=\"\\u2500 \":u+=\"\\u2500\\u2500\\u2510\",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]==\"function\"||u.push(A);return u}function r(a,n,u,A,p,h,E){var I=\"\",v=0,x,C,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(U,J){J>0&&(I+=(U[1]?\" \":\"\\u2502\")+\"  \"),!C&&U[0]===n&&(C=!0)}),I+=t(a,u)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(I+=\": \"+n),C&&(I+=\" (circular ref.)\"),E(I)),!C&&typeof n==\"object\"){var L=e(n,h);L.forEach(function(U){x=++v===L.length,r(U,n[U],x,R,p,h,E)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!=\"function\"?u:!1;r(\".\",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A=\"\";return r(\".\",a,!1,[],n,u,function(p){A+=p+`\n`}),A},o})});var $s={};Vt($s,{emitList:()=>nut,emitTree:()=>npe,treeNodeToJson:()=>rpe,treeNodeToTreeify:()=>tpe});function tpe(t,{configuration:e}){let r={},o=0,a=(n,u)=>{let A=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of A){if(!h)continue;let{label:E,value:I,children:v}=h,x=[];typeof E<\"u\"&&x.push(yd(e,E,2)),typeof I<\"u\"&&x.push(Mt(e,I[0],I[1])),x.length===0&&x.push(yd(e,`${p}`,2));let C=x.join(\": \").trim(),R=`\\0${o++}\\0`,L=u[`${R}${C}`]={};typeof v<\"u\"&&a(v,L)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function rpe(t){let e=r=>{if(typeof r.children>\"u\"){if(typeof r.value>\"u\")throw new Error(\"Assertion failed: Expected a value to be set if the children are missing\");return Ed(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)u&&(a[iut(n)]=e(u));return typeof r.value>\"u\"?a:{value:Ed(r.value[0],r.value[1]),children:a}};return e(t)}function nut(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));npe({children:a},{configuration:e,stdout:r,json:o})}function npe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)A&&r.write(`${JSON.stringify(rpe(A))}\n`);return}let n=(0,epe.asTree)(tpe(t,{configuration:e}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let u=0;u<2;++u)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function iut(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var epe,ipe=Et(()=>{epe=$e($fe());jl()});function i2(t){let e=t.match(sut);if(!e?.groups)throw new Error(\"Assertion failed: Expected the checksum to match the requested pattern\");let r=e.groups.cacheVersion?parseInt(e.groups.cacheVersion):null;return{cacheKey:e.groups.cacheKey??null,cacheVersion:r,cacheSpec:e.groups.cacheSpec??null,hash:e.groups.hash}}var spe,l_,c_,Kx,Lr,sut,u_=Et(()=>{Ye();St();St();nA();spe=ve(\"crypto\"),l_=$e(ve(\"fs\"));Yl();nh();ql();bo();c_=Jy(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),Kx=Jy(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Lr=class{constructor(e,{configuration:r,immutable:o=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,spe.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let{cacheSpec:n,cacheKey:u}=Lr.getCacheKey(r);this.cacheSpec=n,this.cacheKey=u}static async find(e,{immutable:r,check:o}={}){let a=new Lr(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:o});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),o=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[Kx,o].join(\"\"),cacheSpec:o}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let e=`${this.configuration.get(\"globalFolder\")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${lE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=i2(r).hash.slice(0,10);return`${lE(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:o}=i2(e);if(r===null||r<c_)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<Kx&&a===\"always\"||o!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?V.resolve(this.cwd,this.getVersionFilename(e)):r===null?V.resolve(this.cwd,this.getVersionFilename(e)):V.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?V.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await oe.existsPromise(this.cwd))throw new zt(56,\"Cache path does not exist.\")}else{await oe.mkdirPromise(this.cwd,{recursive:!0});let e=V.resolve(this.cwd,\".gitignore\");await oe.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await oe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){let A=this.getLocatorMirrorPath(e),p=new Tn,h=()=>{let he=new zi,Be=V.join(Bt.root,nM(e));return he.mkdirSync(Be,{recursive:!0}),he.writeJsonSync(V.join(Be,dr.manifest),{name:fn(e),mocked:!0}),he},E=async(he,{isColdHit:Be,controlPath:we=null})=>{if(we===null&&u.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?i2(r).cacheKey:this.cacheKey,Ee=!u.skipIntegrityCheck||!r?`${g}/${await NP(he)}`:r;if(we!==null){let le=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await NP(we)}`:r;if(Ee!==le)throw new zt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let Se=null;switch(r!==null&&Ee!==r&&(this.check?Se=\"throw\":i2(r).cacheKey!==i2(Ee).cacheKey?Se=\"update\":Se=this.configuration.get(\"checksumBehavior\")),Se){case null:case\"update\":return{isValid:!0,hash:Ee};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new zt(18,\"The remote archive doesn't match the expected checksum\")}},I=async he=>{if(!n)throw new Error(`Cache check required but no loader configured for ${qr(this.configuration,e)}`);let Be=await n(),we=Be.getRealPath();Be.saveAndClose(),await oe.chmodPromise(we,420);let g=await E(he,{controlPath:we,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let he=await n(),Be=he.getRealPath();return he.saveAndClose(),{source:\"loader\",path:Be}}return{source:\"mirror\",path:A}},x=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${qr(this.configuration,e)}`);if(this.immutable)throw new zt(56,`Cache entry required but missing for ${qr(this.configuration,e)}`);let{path:he,source:Be}=await v(),{hash:we}=await E(he,{isColdHit:!0}),g=this.getLocatorPath(e,we),Ee=[];Be!==\"mirror\"&&A!==null&&Ee.push(async()=>{let le=`${A}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let le=`${g}${this.cacheId}`;await oe.copyFilePromise(he,le,l_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(le,420),await oe.renamePromise(le,g)});let Se=u.mirrorWriteOnly?A??g:g;return await Promise.all(Ee.map(le=>le())),[!1,Se,we]},C=async()=>{let Be=(async()=>{let we=u.unstablePackages?.has(e.locatorHash),g=we||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,Ee=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Se=!!u.mockedPackages?.has(e.locatorHash)&&(!this.check||!Ee),le=Se||Ee,ne=le?o:a;if(ne&&ne(),le){let ee=null,Ie=g;if(!Se)if(this.check)ee=await I(Ie);else{let Fe=await E(Ie,{isColdHit:!1});if(Fe.isValid)ee=Fe.hash;else return x()}return[Se,Ie,ee]}else{if(this.immutable&&we)throw new zt(56,`Cache entry required but missing for ${qr(this.configuration,e)}; consider defining ${de.pretty(this.configuration,\"supportedArchitectures\",de.Type.CODE)} to cache packages for multiple systems`);return x()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let he;he=this.mutexes.get(e.locatorHash);)await he;let[R,L,U]=await C();R||this.markedFiles.add(L);let J,te=R?()=>h():()=>new zi(L,{baseFs:p,readOnly:!0}),ae=new iy(()=>EL(()=>J=te(),he=>`Failed to open the cache entry for ${qr(this.configuration,e)}: ${he}`),V),fe=new Uu(L,{baseFs:ae,pathUtils:V}),ce=()=>{J?.discardAndClose()},me=u.unstablePackages?.has(e.locatorHash)?null:U;return[fe,ce,me]}},sut=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var Vx,ope=Et(()=>{Vx=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(Vx||{})});var out,oC,A_=Et(()=>{St();Nl();Qf();bo();out=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(t,e)=>_P({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=V.join(e.cwd,dr.lockfile);if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,\"utf8\"),n=Ki(a);if(Object.hasOwn(n,\"__metadata\"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=s1(A);if(!p){r.reportWarning(14,`Failed to parse the string \"${A}\" into a proper descriptor`);continue}let h=xa(p.range)?In(p,`npm:${p.range}`):p,{version:E,resolved:I}=n[A];if(!I)continue;let v;for(let[C,R]of out){let L=I.match(C);if(L){v=R(E,...L);break}}if(!v){r.reportWarning(14,`${jn(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${I}\")`);continue}let x=h;try{let C=Bd(h.range),R=s1(C.selector,!0);R&&(x=R)}catch{}u.set(h.descriptorHash,Qs(x,v))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=$O(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var AA,ape=Et(()=>{Yl();O1();jl();AA=class extends Xs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;XI(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o==\"function\"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o==\"function\"?o:a)()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${o}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,o){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Mt(this.configuration,\"\\u27A4\",\"redBright\")} This might be caused by packages being missing from the lockfile, in which case running \"yarn install\" might help.\n`))}formatNameWithHyperlink(r){return yU(r,{configuration:this.configuration,json:!1})}}});var aC,f_=Et(()=>{bo();aC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(OP(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(OP(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return o}}});function Kf(){}function aut(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var I=e[n-1];e[n-1]=e[n],e[n]=I}}else{if(!h.added&&a){var E=r.slice(A,A+h.count);E=E.map(function(x,C){var R=o[p+C];return R.length>x.length?R:x}),h.value=t.join(E)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value==\"string\"&&(v.added||v.removed)&&t.equals(\"\",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function lut(t){return{newPos:t.newPos,components:t.components.slice(0)}}function cut(t,e){if(typeof t==\"function\")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function upe(t,e,r){return r=cut(r,{ignoreWhitespace:!0}),m_.diff(t,e,r)}function uut(t,e,r){return y_.diff(t,e,r)}function Jx(t){return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?Jx=function(e){return typeof e}:Jx=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Jx(t)}function p_(t){return put(t)||hut(t)||gut(t)||dut()}function put(t){if(Array.isArray(t))return h_(t)}function hut(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function gut(t,e){if(!!t){if(typeof t==\"string\")return h_(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r===\"Object\"&&t.constructor&&(r=t.constructor.name),r===\"Map\"||r===\"Set\")return Array.from(t);if(r===\"Arguments\"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h_(t,e)}}function h_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function dut(){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 g_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(mut.call(t)===\"[object Array]\"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=g_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Jx(t)===\"object\"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=g_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function Ape(t,e,r,o,a,n,u){u||(u={}),typeof u.context>\"u\"&&(u.context=4);var A=uut(r,o,u);if(!A)return;A.push({value:\"\",lines:[]});function p(U){return U.map(function(J){return\" \"+J})}for(var h=[],E=0,I=0,v=[],x=1,C=1,R=function(J){var te=A[J],ae=te.lines||te.value.replace(/\\n$/,\"\").split(`\n`);if(te.lines=ae,te.added||te.removed){var fe;if(!E){var ce=A[J-1];E=x,I=C,ce&&(v=u.context>0?p(ce.lines.slice(-u.context)):[],E-=v.length,I-=v.length)}(fe=v).push.apply(fe,p_(ae.map(function(le){return(te.added?\"+\":\"-\")+le}))),te.added?C+=ae.length:x+=ae.length}else{if(E)if(ae.length<=u.context*2&&J<A.length-2){var me;(me=v).push.apply(me,p_(p(ae)))}else{var he,Be=Math.min(ae.length,u.context);(he=v).push.apply(he,p_(p(ae.slice(0,Be))));var we={oldStart:E,oldLines:x-E+Be,newStart:I,newLines:C-I+Be,lines:v};if(J>=A.length-2&&ae.length<=u.context){var g=/\\n$/.test(r),Ee=/\\n$/.test(o),Se=ae.length==0&&v.length>we.oldLines;!g&&Se&&r.length>0&&v.splice(we.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!Se||!Ee)&&v.push(\"\\\\ No newline at end of file\")}h.push(we),E=0,I=0,v=[]}x+=ae.length,C+=ae.length}},L=0;L<A.length;L++)R(L);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var n3t,lpe,cpe,m_,y_,Aut,fut,mut,s2,d_,E_=Et(()=>{Kf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o==\"function\"&&(a=o,o={}),this.options=o;var n=this;function u(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,E=A+p;o.maxEditLength&&(E=Math.min(E,o.maxEditLength));var I=[{newPos:-1,components:[]}],v=this.extractCommon(I[0],r,e,0);if(I[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function x(){for(var R=-1*h;R<=h;R+=2){var L=void 0,U=I[R-1],J=I[R+1],te=(J?J.newPos:0)-R;U&&(I[R-1]=void 0);var ae=U&&U.newPos+1<A,fe=J&&0<=te&&te<p;if(!ae&&!fe){I[R]=void 0;continue}if(!ae||fe&&U.newPos<J.newPos?(L=lut(J),n.pushComponent(L.components,void 0,!0)):(L=U,L.newPos++,n.pushComponent(L.components,!0,void 0)),te=n.extractCommon(L,r,e,R),L.newPos+1>=A&&te+1>=p)return u(aut(n,L.components,r,e,n.useLongestToken));I[R]=L}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();x()||R()},0)})();else for(;h<=E;){var C=x();if(C)return C}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};n3t=new Kf;lpe=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,cpe=/\\S/,m_=new Kf;m_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!cpe.test(t)&&!cpe.test(e)};m_.tokenize=function(t){for(var e=t.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&lpe.test(e[r])&&lpe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};y_=new Kf;y_.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};Aut=new Kf;Aut.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};fut=new Kf;fut.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};mut=Object.prototype.toString,s2=new Kf;s2.useLongestToken=!0;s2.tokenize=y_.tokenize;s2.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>\"u\"?r:u}:o;return typeof t==\"string\"?t:JSON.stringify(g_(t,null,null,a),a,\"  \")};s2.equals=function(t,e){return Kf.prototype.equals.call(s2,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};d_=new Kf;d_.tokenize=function(t){return t.slice()};d_.join=d_.removeEmpty=function(t){return t}});var ppe=_((s3t,fpe)=>{var yut=Hl(),Eut=pE(),Cut=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,wut=/^\\w*$/;function Iut(t,e){if(yut(t))return!1;var r=typeof t;return r==\"number\"||r==\"symbol\"||r==\"boolean\"||t==null||Eut(t)?!0:wut.test(t)||!Cut.test(t)||e!=null&&t in Object(e)}fpe.exports=Iut});var dpe=_((o3t,gpe)=>{var hpe=_S(),But=\"Expected a function\";function C_(t,e){if(typeof t!=\"function\"||e!=null&&typeof e!=\"function\")throw new TypeError(But);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(C_.Cache||hpe),r}C_.Cache=hpe;gpe.exports=C_});var ype=_((a3t,mpe)=>{var vut=dpe(),Dut=500;function Sut(t){var e=vut(t,function(o){return r.size===Dut&&r.clear(),o}),r=e.cache;return e}mpe.exports=Sut});var w_=_((l3t,Epe)=>{var Put=ype(),but=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,xut=/\\\\(\\\\)?/g,kut=Put(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(\"\"),t.replace(but,function(r,o,a,n){e.push(a?n.replace(xut,\"$1\"):o||r)}),e});Epe.exports=kut});var jd=_((c3t,Cpe)=>{var Qut=Hl(),Fut=ppe(),Rut=w_(),Tut=N1();function Nut(t,e){return Qut(t)?t:Fut(t,e)?[t]:Rut(Tut(t))}Cpe.exports=Nut});var lC=_((u3t,wpe)=>{var Lut=pE(),Out=1/0;function Mut(t){if(typeof t==\"string\"||Lut(t))return t;var e=t+\"\";return e==\"0\"&&1/t==-Out?\"-0\":e}wpe.exports=Mut});var zx=_((A3t,Ipe)=>{var Uut=jd(),_ut=lC();function Hut(t,e){e=Uut(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[_ut(e[r++])];return r&&r==o?t:void 0}Ipe.exports=Hut});var I_=_((f3t,vpe)=>{var qut=rP(),jut=jd(),Gut=_I(),Bpe=il(),Yut=lC();function Wut(t,e,r,o){if(!Bpe(t))return t;e=jut(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=Yut(e[a]),h=r;if(p===\"__proto__\"||p===\"constructor\"||p===\"prototype\")return t;if(a!=u){var E=A[p];h=o?o(E,p,A):void 0,h===void 0&&(h=Bpe(E)?E:Gut(e[a+1])?[]:{})}qut(A,p,h),A=A[p]}return t}vpe.exports=Wut});var Spe=_((p3t,Dpe)=>{var Kut=zx(),Vut=I_(),Jut=jd();function zut(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=Kut(t,u);r(A,u)&&Vut(n,Jut(u,t),A)}return n}Dpe.exports=zut});var bpe=_((h3t,Ppe)=>{function Xut(t,e){return t!=null&&e in Object(t)}Ppe.exports=Xut});var B_=_((g3t,xpe)=>{var Zut=jd(),$ut=OI(),eAt=Hl(),tAt=_I(),rAt=YS(),nAt=lC();function iAt(t,e,r){e=Zut(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=nAt(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&rAt(a)&&tAt(u,a)&&(eAt(t)||$ut(t)))}xpe.exports=iAt});var Qpe=_((d3t,kpe)=>{var sAt=bpe(),oAt=B_();function aAt(t,e){return t!=null&&oAt(t,e,sAt)}kpe.exports=aAt});var Rpe=_((m3t,Fpe)=>{var lAt=Spe(),cAt=Qpe();function uAt(t,e){return lAt(t,e,function(r,o){return cAt(t,o)})}Fpe.exports=uAt});var Ope=_((y3t,Lpe)=>{var Tpe=pd(),AAt=OI(),fAt=Hl(),Npe=Tpe?Tpe.isConcatSpreadable:void 0;function pAt(t){return fAt(t)||AAt(t)||!!(Npe&&t&&t[Npe])}Lpe.exports=pAt});var _pe=_((E3t,Upe)=>{var hAt=jS(),gAt=Ope();function Mpe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=gAt),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?Mpe(A,e-1,r,o,a):hAt(a,A):o||(a[a.length]=A)}return a}Upe.exports=Mpe});var qpe=_((C3t,Hpe)=>{var dAt=_pe();function mAt(t){var e=t==null?0:t.length;return e?dAt(t,1):[]}Hpe.exports=mAt});var v_=_((w3t,jpe)=>{var yAt=qpe(),EAt=AL(),CAt=fL();function wAt(t){return CAt(EAt(t,void 0,yAt),t+\"\")}jpe.exports=wAt});var D_=_((I3t,Gpe)=>{var IAt=Rpe(),BAt=v_(),vAt=BAt(function(t,e){return t==null?{}:IAt(t,e)});Gpe.exports=vAt});var Xx,Ype=Et(()=>{Yl();Xx=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async resolve(e,r){throw new zt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var Qi,S_=Et(()=>{Yl();Qi=class extends Xs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r==\"function\"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r==\"function\"?r:o)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var Wpe,cC,P_=Et(()=>{St();Wpe=$e(RP());fE();vd();jl();nh();Qf();bo();cC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ot.tryFind(this.cwd)??new Ot,this.relativeCwd=V.relative(this.project.cwd,this.cwd)||Bt.dot;let e=this.manifest.name?this.manifest.name:eA(null,`${this.computeCandidateName()}-${zs(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=In(e,`${Xn.protocol}${this.relativeCwd}`),this.anchoredLocator=Qs(e,`${Xn.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let o=await(0,Wpe.default)(r,{cwd:ue.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});o.sort(),await o.reduce(async(a,n)=>{let u=V.resolve(this.cwd,ue.toPortablePath(n)),A=await oe.existsPromise(V.join(u,\"package.json\"));await a,A&&this.workspacesCwds.add(u)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${a1(this.project.configuration,this)} (${Mt(this.project.configuration,V.join(this.cwd,dr.manifest),yt.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Xn.protocol&&V.normalize(a)===this.relativeCwd||o===Xn.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=xa(a);return n?o===Xn.protocol?n.test(this.manifest.version??\"0.0.0\"):this.project.configuration.get(\"enableTransparentWorkspaces\")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?\"root-workspace\":`${V.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ot.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&i1(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let o of r.workspacesCwds){let a=this.project.workspacesByCwd.get(o);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=V.join(this.cwd,Ot.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function kAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,peerWarnings:A=[],volatileDescriptors:p=new Set}){let h=new Map,E=[],I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map(t.workspaces.map(ce=>{let me=ce.anchoredLocator.locatorHash,he=o.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[me,e1(he)]})),U=()=>{let ce=oe.mktempSync(),me=V.join(ce,\"stacktrace.log\"),he=String(E.length+1).length,Be=E.map((we,g)=>`${`${g+1}.`.padStart(he,\" \")} ${ba(we)}\n`).join(\"\");throw oe.writeFileSync(me,Be),oe.detachTemp(ce),new zt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(me)}`)},J=ce=>{let me=r.get(ce.descriptorHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let he=o.get(me);if(!he)throw new Error(\"Assertion failed: The package could not be found\");return he},te=(ce,me,he,{top:Be,optional:we})=>{E.length>1e3&&U(),E.push(me);let g=ae(ce,me,he,{top:Be,optional:we});return E.pop(),g},ae=(ce,me,he,{top:Be,optional:we})=>{if(we||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=o.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${qr(t.configuration,me)}) should have been registered`);let Ee=[],Se=[],le=[],ne=[],ee=[];for(let Fe of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Fe.identHash)&&g.locatorHash!==Be)continue;if(bf(Fe))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");p.delete(Fe.descriptorHash);let At=we;if(!At){let Te=g.dependenciesMeta.get(fn(Fe));if(typeof Te<\"u\"){let Je=Te.get(null);typeof Je<\"u\"&&Je.optional&&(At=!0)}}let H=r.get(Fe.descriptorHash);if(!H)throw new Error(`Assertion failed: The resolution (${jn(t.configuration,Fe)}) should have been registered`);let at=L.get(H)||o.get(H);if(!at)throw new Error(`Assertion failed: The package (${H}, resolved from ${jn(t.configuration,Fe)}) should have been registered`);if(at.peerDependencies.size===0){te(Fe,at,new Map,{top:Be,optional:At});continue}let Re,ke,xe=new Set,He;Se.push(()=>{Re=tM(Fe,me.locatorHash),ke=rM(at,me.locatorHash),g.dependencies.delete(Fe.identHash),g.dependencies.set(Re.identHash,Re),r.set(Re.descriptorHash,ke.locatorHash),e.set(Re.descriptorHash,Re),o.set(ke.locatorHash,ke),Ee.push([at,Re,ke])}),le.push(()=>{He=new Map;for(let Te of ke.peerDependencies.values()){let Je=g.dependencies.get(Te.identHash);if(!Je&&n1(me,Te)&&(ce.identHash===me.identHash?Je=ce:(Je=In(me,ce.range),e.set(Je.descriptorHash,Je),r.set(Je.descriptorHash,me.locatorHash),p.delete(Je.descriptorHash))),(!Je||Je.range===\"missing:\")&&ke.dependencies.has(Te.identHash)){ke.peerDependencies.delete(Te.identHash);continue}Je||(Je=In(Te,\"missing:\")),ke.dependencies.set(Je.identHash,Je),bf(Je)&&md(x,Je.descriptorHash).add(ke.locatorHash),I.set(Je.identHash,Je),Je.range===\"missing:\"&&xe.add(Je.identHash),He.set(Te.identHash,he.get(Te.identHash)??ke.locatorHash)}ke.dependencies=new Map(ks(ke.dependencies,([Te,Je])=>fn(Je)))}),ne.push(()=>{if(!o.has(ke.locatorHash))return;let Te=h.get(at.locatorHash);typeof Te==\"number\"&&Te>=2&&U();let Je=h.get(at.locatorHash),qe=typeof Je<\"u\"?Je+1:1;h.set(at.locatorHash,qe),te(Re,ke,He,{top:Be,optional:At}),h.set(at.locatorHash,qe-1)}),ee.push(()=>{let Te=g.dependencies.get(Fe.identHash);if(typeof Te>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency to have been turned into a dependency\");let Je=r.get(Te.descriptorHash);if(typeof Je>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");if(md(R,Je).add(me.locatorHash),!!o.has(ke.locatorHash)){for(let qe of ke.peerDependencies.values()){let b=He.get(qe.identHash);if(typeof b>\"u\")throw new Error(\"Assertion failed: Expected the peer dependency ident to be registered\");Yy(Wy(C,b),fn(qe)).push(ke.locatorHash)}for(let qe of xe)ke.dependencies.delete(qe)}})}for(let Fe of[...Se,...le])Fe();let Ie;do{Ie=!0;for(let[Fe,At,H]of Ee){let at=Wy(v,Fe.locatorHash),Re=zs(...[...H.dependencies.values()].map(Te=>{let Je=Te.range!==\"missing:\"?r.get(Te.descriptorHash):\"missing:\";if(typeof Je>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${jn(t.configuration,Te)} to have been registered`);return Je===Be?`${Je} (top)`:Je}),At.identHash),ke=at.get(Re);if(typeof ke>\"u\"){at.set(Re,At);continue}if(ke===At)continue;o.delete(H.locatorHash),e.delete(At.descriptorHash),r.delete(At.descriptorHash),a.delete(H.locatorHash);let xe=x.get(At.descriptorHash)||[],He=[g.locatorHash,...xe];x.delete(At.descriptorHash);for(let Te of He){let Je=o.get(Te);typeof Je>\"u\"||(Je.dependencies.get(At.identHash).descriptorHash!==ke.descriptorHash&&(Ie=!1),Je.dependencies.set(At.identHash,ke))}}}while(!Ie);for(let Fe of[...ne,...ee])Fe()};for(let ce of t.workspaces){let me=ce.anchoredLocator;p.delete(ce.anchoredDescriptor.descriptorHash),te(ce.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}let fe=new Map;for(let[ce,me]of R){let he=o.get(ce);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the root to be registered\");let Be=C.get(ce);if(!(typeof Be>\"u\"))for(let we of me){let g=o.get(we);if(!(typeof g>\"u\")&&!!t.tryWorkspaceByLocator(g))for(let[Ee,Se]of Be){let le=Js(Ee);if(g.peerDependencies.has(le.identHash))continue;let ne=`p${zs(we,Ee,ce).slice(0,5)}`;u.set(ne,{subject:we,requested:le,rootRequester:ce,allRequesters:Se});let ee=he.dependencies.get(le.identHash);if(typeof ee<\"u\"){let Ie=J(ee),Fe=Ie.version??\"0.0.0\",At=new Set;for(let at of Se){let Re=o.get(at);if(typeof Re>\"u\")throw new Error(\"Assertion failed: Expected the link to be registered\");let ke=Re.peerDependencies.get(le.identHash);if(typeof ke>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");At.add(ke.range)}if(![...At].every(at=>{if(at.startsWith(Xn.protocol)){if(!t.tryWorkspaceByLocator(Ie))return!1;at=at.slice(Xn.protocol.length),(at===\"^\"||at===\"~\")&&(at=\"*\")}return kf(Fe,at)})){let at=ol(fe,Ie.locatorHash,()=>({type:2,requested:le,subject:Ie,dependents:new Map,requesters:new Map,links:new Map,version:Fe,hash:`p${Ie.locatorHash.slice(0,5)}`}));at.dependents.set(g.locatorHash,g),at.requesters.set(he.locatorHash,he);for(let Re of Se)at.links.set(Re,o.get(Re));A.push({type:1,subject:g,requested:le,requester:he,version:Fe,hash:ne,requirementCount:Se.length})}}else he.peerDependenciesMeta.get(Ee)?.optional||A.push({type:0,subject:g,requested:le,requester:he,hash:ne})}}}A.push(...fe.values())}function QAt(t,e){let r=wL(t.peerWarnings,\"type\"),o=r[2]?.map(n=>{let u=Array.from(n.links.values(),E=>{let I=t.storedPackages.get(E.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let v=I.peerDependencies.get(n.requested.identHash);if(typeof v>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return v.range}),A=n.links.size>1?\"and other dependencies request\":\"requests\",p=sM(u),h=p?cE(t.configuration,p):Mt(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");return`${cs(t.configuration,n.requested)} is listed by your project with version ${o1(t.configuration,n.version)}, which doesn't satisfy what ${cs(t.configuration,n.requesters.values().next().value)} (${Mt(t.configuration,n.hash,yt.CODE)}) ${A} (${h}).`})??[],a=r[0]?.map(n=>`${qr(t.configuration,n.subject)} doesn't provide ${cs(t.configuration,n.requested)} (${Mt(t.configuration,n.hash,yt.CODE)}), requested by ${cs(t.configuration,n.requester)}.`)??[];e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met; run ${Mt(t.configuration,\"yarn explain peer-requirements <hash>\",yt.CODE)} for details, where ${Mt(t.configuration,\"<hash>\",yt.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of ks(o,u=>Xy.default(u)))e.reportWarning(60,n);for(let n of ks(a,u=>Xy.default(u)))e.reportWarning(2,n)})}var Zx,$x,ek,Jpe,k_,x_,Q_,tk,DAt,SAt,Kpe,PAt,bAt,xAt,pl,b_,rk,Vpe,Pt,zpe=Et(()=>{St();St();Nl();qt();Zx=ve(\"crypto\");E_();$x=$e(D_()),ek=$e(id()),Jpe=$e(zn()),k_=ve(\"util\"),x_=$e(ve(\"v8\")),Q_=$e(ve(\"zlib\"));u_();S1();A_();f_();fE();uM();Yl();Ype();O1();S_();vd();P_();WP();jl();nh();ql();vb();BU();Qf();bo();tk=Jy(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),DAt=3,SAt=/ *, */g,Kpe=/\\/$/,PAt=32,bAt=(0,k_.promisify)(Q_.default.gzip),xAt=(0,k_.promisify)(Q_.default.gunzip),pl=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))(pl||{}),b_={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},rk=(o=>(o[o.NotProvided=0]=\"NotProvided\",o[o.NotCompatible=1]=\"NotCompatible\",o[o.NotCompatibleAggregate=2]=\"NotCompatibleAggregate\",o))(rk||{}),Vpe=t=>zs(`${DAt}`,t),Pt=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new it(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(V.join(n,dr.manifest))){o=n;break}a=V.dirname(n)}let u=new Pt(e.projectCwd,{configuration:e});Ke.telemetry?.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),Ke.telemetry?.reportWorkspaceCount(u.workspaces.length),Ke.telemetry?.reportDependencyCount(u.workspaces.reduce((C,R)=>C+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Mt(e,u.cwd,yt.PATH),E=Mt(e,V.relative(u.cwd,o),yt.PATH),I=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,x=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new it(`The nearest package directory (${Mt(e,o,yt.PATH)}) doesn't seem to be part of the project declared in ${Mt(e,u.cwd,yt.PATH)}.\n\n${[I,v,x].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=V.join(this.cwd,dr.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,\"utf8\");this.lockFileChecksum=Vpe(o);let a=Ki(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<tk;for(let A of Object.keys(a)){if(A===\"__metadata\")continue;let p=a[A];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=xf(p.resolution,!0),E=new Ot;E.load(p,{yamlCompatibilityMode:!0});let I=E.version,v=E.languageName||r,x=p.linkType.toUpperCase(),C=p.conditions??null,R=E.dependencies,L=E.peerDependencies,U=E.dependenciesMeta,J=E.peerDependenciesMeta,te=E.bin;if(p.checksum!=null){let fe=typeof u<\"u\"&&!p.checksum.includes(\"/\")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,fe)}let ae={...h,version:I,languageName:v,linkType:x,conditions:C,dependencies:R,peerDependencies:L,dependenciesMeta:U,peerDependenciesMeta:J,bin:te};this.originalPackages.set(ae.locatorHash,ae);for(let fe of A.split(SAt)){let ce=ih(fe);n<=6&&(ce=this.configuration.normalizeDependency(ce),ce=In(ce,ce.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(ce.descriptorHash,ce),this.storedResolutions.set(ce.descriptorHash,h.locatorHash)}}}else o.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,ek.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new cC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${cs(this.configuration,e.anchoredLocator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.anchoredLocator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){V.isAbsolute(e)||(e=V.resolve(this.cwd,e)),e=V.normalize(e).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)V.relative(o.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Xn.protocol)){let o=e.range.slice(Xn.protocol.length);if(o!==\"^\"&&o!==\"~\"&&o!==\"*\"&&!xa(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(bf(e)&&(e=t1(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${jn(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Hc(e)&&(e=r1(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${qr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if(\"descriptorHash\"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let o=new Set(this.storedResolutions.values());typeof r<\"u\"&&!o.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)bf(o)&&e.dependencies.set(r,t1(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(fn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!Jpe.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new Qi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(Kpe,\"\")!==e.replace(Kpe,\"\"))continue;return A}}return null}async loadUserConfig(){let e=V.join(this.cwd,\".pnp.cjs\");await oe.existsPromise(e)&&Df(e).setup();let r=V.join(this.cwd,\"yarn.config.cjs\");return await oe.existsPromise(r)?Df(r):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[u,A]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,A,this,n,A,{resolver:r,resolveOptions:o});if(!n1(A,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,o);n.dependencies.set(u,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),o=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new oC(a);await n.setup(this,{report:e.report});let u=e.lockfileOnly?[new Xx(a)]:[n,a],A=new Dd([new aC(a),...u]),p=new Dd([...u]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:A}:{project:this,report:e.report,resolver:A,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},I=new Map,v=new Map,x=new Map,C=new Map,R=new Map,L=new Map,U=this.topLevelWorkspace.anchoredLocator,J=new Set,te=[],ae=M4(),fe=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Xs.progressViaTitle(),async le=>{let ne=async H=>{let at=await Ky(async()=>await A.resolve(H,E),He=>`${qr(this.configuration,H)}: ${He}`);if(!i1(H,at))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${qr(this.configuration,H)} to ${qr(this.configuration,at)})`);C.set(at.locatorHash,at),!r.delete(at.locatorHash)&&!this.tryWorkspaceByLocator(at)&&o.push(at);let ke=await this.preparePackage(at,{resolver:A,resolveOptions:E}),xe=Uc([...ke.dependencies.values()].map(He=>At(He)));return te.push(xe),xe.catch(()=>{}),v.set(ke.locatorHash,ke),ke},ee=async H=>{let at=R.get(H.locatorHash);if(typeof at<\"u\")return at;let Re=Promise.resolve().then(()=>ne(H));return R.set(H.locatorHash,Re),Re},Ie=async(H,at)=>{let Re=await At(at);return I.set(H.descriptorHash,H),x.set(H.descriptorHash,Re.locatorHash),Re},Fe=async H=>{le.setTitle(jn(this.configuration,H));let at=this.resolutionAliases.get(H.descriptorHash);if(typeof at<\"u\")return Ie(H,this.storedDescriptors.get(at));let Re=A.getResolutionDependencies(H,E),ke=Object.fromEntries(await Uc(Object.entries(Re).map(async([Te,Je])=>{let qe=A.bindDescriptor(Je,U,E),b=await At(qe);return J.add(b.locatorHash),[Te,b]}))),He=(await Ky(async()=>await A.getCandidates(H,ke,E),Te=>`${jn(this.configuration,H)}: ${Te}`))[0];if(typeof He>\"u\")throw new zt(82,`${jn(this.configuration,H)}: No candidates found`);if(e.checkResolutions){let{locators:Te}=await p.getSatisfying(H,ke,[He],{...E,resolver:p});if(!Te.find(Je=>Je.locatorHash===He.locatorHash))throw new zt(78,`Invalid resolution ${ZI(this.configuration,H,He)}`)}return I.set(H.descriptorHash,H),x.set(H.descriptorHash,He.locatorHash),ee(He)},At=H=>{let at=L.get(H.descriptorHash);if(typeof at<\"u\")return at;I.set(H.descriptorHash,H);let Re=Promise.resolve().then(()=>Fe(H));return L.set(H.descriptorHash,Re),Re};for(let H of this.workspaces){let at=H.anchoredDescriptor;te.push(At(at))}for(;te.length>0;){let H=[...te];te.length=0,await Uc(H)}});let ce=sl(r.values(),le=>this.tryWorkspaceByLocator(le)?sl.skip:le);if(o.length>0||ce.length>0){let le=new Set(this.workspaces.flatMap(H=>{let at=v.get(H.anchoredLocator.locatorHash);if(!at)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(at.dependencies.values(),Re=>{let ke=x.get(Re.descriptorHash);if(!ke)throw new Error(\"Assertion failed: The resolution should have been registered\");return ke})})),ne=H=>le.has(H.locatorHash)?\"0\":\"1\",ee=H=>ba(H),Ie=ks(o,[ne,ee]),Fe=ks(ce,[ne,ee]),At=e.report.getRecommendedLength();Ie.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,\"+\",yt.ADDED)} ${cP(this.configuration,Ie,At)}`),Fe.length>0&&e.report.reportInfo(85,`${Mt(this.configuration,\"-\",yt.REMOVED)} ${cP(this.configuration,Fe,At)}`)}let me=new Set(this.resolutionAliases.values()),he=new Set(v.keys()),Be=new Set,we=new Map,g=[];kAt({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:he,peerRequirements:we,peerWarnings:g,allDescriptors:I,allResolutions:x,allPackages:v});for(let le of J)he.delete(le);for(let le of me)I.delete(le),x.delete(le);let Ee=new Set,Se=new Set;for(let le of v.values())le.conditions!=null&&(!he.has(le.locatorHash)||(qP(le,fe)||(qP(le,ae)&&e.report.reportWarningOnce(77,`${qr(this.configuration,le)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Mt(this.configuration,\"supportedArchitectures\",yt.SETTING)} setting`),Se.add(le.locatorHash)),Ee.add(le.locatorHash)));this.storedResolutions=x,this.storedDescriptors=I,this.storedPackages=v,this.accessibleLocators=Be,this.conditionalLocators=Ee,this.disabledLocators=Se,this.originalPackages=C,this.optionalBuilds=he,this.peerRequirements=we,this.peerWarnings=g}async fetchEverything({cache:e,report:r,fetcher:o,mode:a,persistProject:n=!0}){let u={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},A=o||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:r,cacheOptions:u},h=Array.from(new Set(ks(this.storedResolutions.values(),[C=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");return ba(R)}])));a===\"update-lockfile\"&&(h=h.filter(C=>!this.storedChecksums.has(C)));let E=!1,I=Xs.progressViaCounter(h.length);await r.reportProgress(I);let v=(0,ek.default)(PAt);if(await Uc(h.map(C=>v(async()=>{let R=this.storedPackages.get(C);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");if(Hc(R))return;let L;try{L=await A.fetch(R,p)}catch(U){U.message=`${qr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}L.checksum!=null?this.storedChecksums.set(R.locatorHash,L.checksum):this.storedChecksums.delete(R.locatorHash),L.releaseFs&&L.releaseFs()}).finally(()=>{I.tick()}))),E)throw E;let x=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||x){let R=(await Promise.all([...r.cacheMisses].map(async ce=>{let me=this.storedPackages.get(ce),he=this.storedChecksums.get(ce)??null,Be=e.getLocatorPath(me,he);return(await oe.statPromise(Be)).size}))).reduce((ce,me)=>ce+me,0)-(x?.size??0),L=r.cacheMisses.size,U=x?.count??0,J=`${nP(L,{zero:\"No new packages\",one:\"A package was\",more:`${Mt(this.configuration,L,yt.NUMBER)} packages were`})} added to the project`,te=`${nP(U,{zero:\"none were\",one:\"one was\",more:`${Mt(this.configuration,U,yt.NUMBER)} were`})} removed`,ae=R!==0?` (${Mt(this.configuration,R,yt.SIZE_DIFF)})`:\"\",fe=U>0?L>0?`${J}, and ${te}${ae}.`:`${J}, but ${te}${ae}.`:`${J}${ae}.`;r.reportInfo(13,fe)}}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(le=>{let ne=le.makeInstaller(h),ee=le.getCustomDataKey(),Ie=this.linkersCustomData.get(ee);return typeof Ie<\"u\"&&ne.attachCustomData(Ie),[le,ne]})),I=new Map,v=new Map,x=new Map,C=new Map(await Uc([...this.accessibleLocators].map(async le=>{let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");return[le,await u.fetch(ne,A)]}))),R=[],L=new Set,U=[];for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(typeof ne>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let ee=C.get(ne.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let Ie=[],Fe=H=>{Ie.push(H)},At=this.tryWorkspaceByLocator(ne);if(At!==null){let H=[],{scripts:at}=At.manifest;for(let ke of[\"preinstall\",\"install\",\"postinstall\"])at.has(ke)&&H.push({type:0,script:ke});try{for(let[ke,xe]of E)if(ke.supportsPackage(ne,h)&&(await xe.installPackage(ne,ee,{holdFetchResult:Fe})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).catch(()=>{}).then(()=>{ee.releaseFs?.()}))}let Re=V.join(ee.packageFs.getRealPath(),ee.prefixPath);v.set(ne.locatorHash,Re),!Hc(ne)&&H.length>0&&x.set(ne.locatorHash,{buildDirectives:H,buildLocations:[Re]})}else{let H=p.find(ke=>ke.supportsPackage(ne,h));if(!H)throw new zt(12,`${qr(this.configuration,ne)} isn't supported by any available linker`);let at=E.get(H);if(!at)throw new Error(\"Assertion failed: The installer should have been registered\");let Re;try{Re=await at.installPackage(ne,ee,{holdFetchResult:Fe})}finally{Ie.length===0?ee.releaseFs?.():R.push(Uc(Ie).then(()=>{}).then(()=>{ee.releaseFs?.()}))}I.set(ne.locatorHash,H),v.set(ne.locatorHash,Re.packageLocation),Re.buildRequest&&Re.packageLocation&&(Re.buildRequest.skipped?(L.add(ne.locatorHash),this.skippedBuilds.has(ne.locatorHash)||U.push([ne,Re.buildRequest.explain])):x.set(ne.locatorHash,{buildDirectives:Re.buildRequest.directives,buildLocations:[Re.packageLocation]}))}}let J=new Map;for(let le of this.accessibleLocators){let ne=this.storedPackages.get(le);if(!ne)throw new Error(\"Assertion failed: The locator should have been registered\");let ee=this.tryWorkspaceByLocator(ne)!==null,Ie=async(Fe,At)=>{let H=v.get(ne.locatorHash);if(typeof H>\"u\")throw new Error(`Assertion failed: The package (${qr(this.configuration,ne)}) should have been registered`);let at=[];for(let Re of ne.dependencies.values()){let ke=this.storedResolutions.get(Re.descriptorHash);if(typeof ke>\"u\")throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Re)}, from ${qr(this.configuration,ne)})should have been registered`);let xe=this.storedPackages.get(ke);if(typeof xe>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${jn(this.configuration,Re)}) should have been registered`);let He=this.tryWorkspaceByLocator(xe)===null?I.get(ke):null;if(typeof He>\"u\")throw new Error(`Assertion failed: The package (${ke}, resolved from ${jn(this.configuration,Re)}) should have been registered`);He===Fe||He===null?v.get(xe.locatorHash)!==null&&at.push([Re,xe]):!ee&&H!==null&&Yy(J,ke).push(H)}H!==null&&await At.attachInternalDependencies(ne,at)};if(ee)for(let[Fe,At]of E)Fe.supportsPackage(ne,h)&&await Ie(Fe,At);else{let Fe=I.get(ne.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The linker should have been found\");let At=E.get(Fe);if(!At)throw new Error(\"Assertion failed: The installer should have been registered\");await Ie(Fe,At)}}for(let[le,ne]of J){let ee=this.storedPackages.get(le);if(!ee)throw new Error(\"Assertion failed: The package should have been registered\");let Ie=I.get(ee.locatorHash);if(!Ie)throw new Error(\"Assertion failed: The linker should have been found\");let Fe=E.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The installer should have been registered\");await Fe.attachExternalDependents(ee,ne)}let te=new Map;for(let[le,ne]of E){let ee=await ne.finalizeInstall();for(let Ie of ee?.records??[])Ie.buildRequest.skipped?(L.add(Ie.locator.locatorHash),this.skippedBuilds.has(Ie.locator.locatorHash)||U.push([Ie.locator,Ie.buildRequest.explain])):x.set(Ie.locator.locatorHash,{buildDirectives:Ie.buildRequest.directives,buildLocations:Ie.buildLocations});typeof ee?.customData<\"u\"&&te.set(le.getCustomDataKey(),ee.customData)}if(this.linkersCustomData=te,await Uc(R),a===\"skip-build\")return;for(let[,le]of ks(U,([ne])=>ba(ne)))le(r);let ae=new Set(this.storedPackages.keys()),fe=new Set(x.keys());for(let le of fe)ae.delete(le);let ce=(0,Zx.createHash)(\"sha512\");ce.update(process.versions.node),await this.configuration.triggerHook(le=>le.globalHashGeneration,this,le=>{ce.update(\"\\0\"),ce.update(le)});let me=ce.digest(\"hex\"),he=new Map,Be=le=>{let ne=he.get(le.locatorHash);if(typeof ne<\"u\")return ne;let ee=this.storedPackages.get(le.locatorHash);if(typeof ee>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let Ie=(0,Zx.createHash)(\"sha512\");Ie.update(le.locatorHash),he.set(le.locatorHash,\"<recursive>\");for(let Fe of ee.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(typeof At>\"u\")throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Fe)}) should have been registered`);let H=this.storedPackages.get(At);if(typeof H>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");Ie.update(Be(H))}return ne=Ie.digest(\"hex\"),he.set(le.locatorHash,ne),ne},we=(le,ne)=>{let ee=(0,Zx.createHash)(\"sha512\");ee.update(me),ee.update(Be(le));for(let Ie of ne)ee.update(Ie);return ee.digest(\"hex\")},g=new Map,Ee=!1,Se=le=>{let ne=new Set([le.locatorHash]);for(let ee of ne){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");for(let Fe of Ie.dependencies.values()){let At=this.storedResolutions.get(Fe.descriptorHash);if(!At)throw new Error(`Assertion failed: The resolution (${jn(this.configuration,Fe)}) should have been registered`);if(At!==le.locatorHash&&fe.has(At))return!1;let H=this.storedPackages.get(At);if(!H)throw new Error(\"Assertion failed: The package should have been registered\");let at=this.tryWorkspaceByLocator(H);if(at){if(at.anchoredLocator.locatorHash!==le.locatorHash&&fe.has(at.anchoredLocator.locatorHash))return!1;ne.add(at.anchoredLocator.locatorHash)}ne.add(At)}}return!0};for(;fe.size>0;){let le=fe.size,ne=[];for(let ee of fe){let Ie=this.storedPackages.get(ee);if(!Ie)throw new Error(\"Assertion failed: The package should have been registered\");if(!Se(Ie))continue;let Fe=x.get(Ie.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The build directive should have been registered\");let At=we(Ie,Fe.buildLocations);if(this.storedBuildState.get(Ie.locatorHash)===At){g.set(Ie.locatorHash,At),fe.delete(ee);continue}Ee||(await this.persistInstallStateFile(),Ee=!0),this.storedBuildState.has(Ie.locatorHash)?r.reportInfo(8,`${qr(this.configuration,Ie)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${qr(this.configuration,Ie)} must be built because it never has been before or the last one failed`);let H=Fe.buildLocations.map(async at=>{if(!V.isAbsolute(at))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${at})`);for(let Re of Fe.buildDirectives){let ke=`# This file contains the result of Yarn building a package (${ba(Ie)})\n`;switch(Re.type){case 0:ke+=`# Script name: ${Re.script}\n`;break;case 1:ke+=`# Script code: ${Re.script}\n`;break}let xe=null;if(!await oe.mktempPromise(async Te=>{let Je=V.join(Te,\"build.log\"),{stdout:qe,stderr:b}=this.configuration.getSubprocessStreams(Je,{header:ke,prefix:qr(this.configuration,Ie),report:r}),w;try{switch(Re.type){case 0:w=await Wb(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:qe,stderr:b});break;case 1:w=await EU(Ie,Re.script,[],{cwd:at,project:this,stdin:xe,stdout:qe,stderr:b});break}}catch(F){b.write(F.stack),w=1}if(qe.end(),b.end(),w===0)return!0;oe.detachTemp(Te);let P=`${qr(this.configuration,Ie)} couldn't be built successfully (exit code ${Mt(this.configuration,w,yt.NUMBER)}, logs can be found here: ${Mt(this.configuration,Je,yt.PATH)})`,y=this.optionalBuilds.has(Ie.locatorHash);return y?r.reportInfo(9,P):r.reportError(9,P),Kce&&r.reportFold(ue.fromPortablePath(Je),oe.readFileSync(Je,\"utf8\")),y}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(at=>{fe.delete(ee),at.every(Re=>Re.status===\"fulfilled\"&&Re.value===!0)&&g.set(Ie.locatorHash,At)}))}if(await Uc(ne),le===fe.size){let ee=Array.from(fe).map(Ie=>{let Fe=this.storedPackages.get(Ie);if(!Fe)throw new Error(\"Assertion failed: The package should have been registered\");return qr(this.configuration,Fe)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${ee})`);break}}this.storedBuildState=g,this.skippedBuilds=L}async installWithNewReport(e,r){return(await Nt.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get(\"nodeLinker\");Ke.telemetry?.reportInstall(r);let o=!1;if(await e.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&e.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),o=!0}})}),o)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,I]of E)for(let v of I)v.status=\"inactive\";let n=V.join(this.cwd,dr.lockfile),u=null;if(e.immutable)try{u=await oe.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new zt(28,\"The lockfile would have been created by this install, which is explicitly forbidden.\"):E}await e.report.startTimerPromise(\"Resolution step\",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise(\"Post-resolution validation\",{skipIfEmpty:!0},async()=>{QAt(this,e.report);for(let[,E]of a)for(let[,I]of E)for(let v of I)if(v.userProvided){let x=Mt(this.configuration,v,yt.PACKAGE_EXTENSION);switch(v.status){case\"inactive\":e.report.reportWarning(68,`${x}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${x}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(u!==null){let E=_g(u,this.generateLockfile());if(E!==u){let I=Ape(n,n,u,E,void 0,void 0,{maxEditLength:100});if(I){e.report.reportSeparator();for(let v of I.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let x of v.lines)x.startsWith(\"+\")?e.report.reportError(28,Mt(this.configuration,x,yt.ADDED)):x.startsWith(\"-\")?e.report.reportError(28,Mt(this.configuration,x,yt.REMOVED)):e.report.reportInfo(null,Mt(this.configuration,x,\"grey\"))}e.report.reportSeparator()}throw new zt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,I]of E)for(let v of I)v.userProvided&&v.status===\"active\"&&Ke.telemetry?.reportPackageExtension(Ed(v,yt.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let A=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(A.map(async E=>LP(E,{cwd:this.cwd})));(typeof e.persistProject>\"u\"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise(\"Link step\",async()=>{if(e.mode===\"update-lockfile\"){e.report.reportWarning(73,`Skipped due to ${Mt(this.configuration,\"mode=update-lockfile\",yt.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(A.map(async I=>LP(I,{cwd:this.cwd})));for(let I=0;I<A.length;++I)p[I]!==E[I]&&e.report.reportError(64,`The checksum for ${A[I]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await e.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,I)=>{e.report.reportWarning(E,I)},reportError:(E,I)=>{e.report.reportError(E,I),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,u]of this.storedResolutions.entries()){let A=e.get(u);A||e.set(u,A=new Set),A.add(n)}let r={},{cacheKey:o}=Lr.getCacheKey(this.configuration);r.__metadata={version:tk,cacheKey:o};for(let[n,u]of e.entries()){let A=this.originalPackages.get(n);if(!A)continue;let p=[];for(let I of u){let v=this.storedDescriptors.get(I);if(!v)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(v)}let h=p.map(I=>Pa(I)).sort().join(\", \"),E=new Ot;E.version=A.linkType===\"HARD\"?A.version:\"0.0.0-use.local\",E.languageName=A.languageName,E.dependencies=new Map(A.dependencies),E.peerDependencies=new Map(A.peerDependencies),E.dependenciesMeta=new Map(A.dependenciesMeta),E.peerDependenciesMeta=new Map(A.peerDependenciesMeta),E.bin=new Map(A.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:A.linkType.toLowerCase(),resolution:ba(A),checksum:this.storedChecksums.get(A.locatorHash),conditions:A.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+Ba(r)}async persistLockfile(){let e=V.join(this.cwd,dr.lockfile),r=\"\";try{r=await oe.readFilePromise(e,\"utf8\")}catch{}let o=this.generateLockfile(),a=_g(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=Vpe(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(b_))e.push(...u);let r=(0,$x.default)(this,e),o=x_.default.serialize(r),a=zs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await oe.mkdirPromise(V.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await bAt(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let u=await xAt(await oe.readFilePromise(a));n=x_.default.deserialize(u),this.installStateChecksum=zs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,$x.default)(n,b_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,$x.default)(n,b_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new Qi}),await this.persistInstallStateFile()}async persist(){let e=(0,ek.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let o=new Set([\".gitignore\"]);if(!CM(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return null;let a=[];for(let u of await oe.readdirPromise(e.cwd)){if(o.has(u))continue;let A=V.resolve(e.cwd,u);e.markedFiles.has(A)||(e.immutable?r.reportError(56,`${Mt(this.configuration,V.basename(A),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(oe.lstatPromise(A).then(async p=>(await oe.removePromise(A),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((u,A)=>u+A,0)}}}});function FAt(t){let o=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),u=n+a,A=t.state.lastTips??o*864e5,p=A+864e5+8*36e5-t.timeZone,h=u<=t.timeNow,E=p<=t.timeNow,I=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(I={},I.lastUpdate=h?t.timeNow:n,I.lastTips=A,I.blocks=h?{}:t.state.blocks,I.displayedTips=t.state.displayedTips),{nextState:I,triggerUpdate:h,triggerTips:E,nextTips:E?o*864e5:A}}var uC,Xpe=Et(()=>{St();L1();nh();Ib();ql();Qf();uC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),o=A=>A&&rn?kf(rn,A):!1,a=e.map((A,p)=>p).filter(A=>e[A]&&o(e[A]?.selector));if(a.length===0)return null;let n=a.filter(A=>!r.has(A));if(n.length===0){let A=Math.floor(a.length*.2);this.displayedTips=A>0?this.displayedTips.slice(-A):[],n=a.filter(p=>!r.has(p))}let u=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(u),this.commitTips(),e[u]}reportVersion(e){this.reportValue(\"version\",e.replace(/-git\\..*/,\"-git\"))}reportCommandName(e){this.reportValue(\"commandName\",e||\"<none>\")}reportPluginName(e){this.reportValue(\"pluginName\",e)}reportProject(e){this.reportEnumerator(\"projectCount\",e)}reportInstall(e){this.reportHit(\"installCount\",e)}reportPackageExtension(e){this.reportValue(\"packageExtension\",e)}reportWorkspaceCount(e){this.reportValue(\"workspaceCount\",String(e))}reportDependencyCount(e){this.reportValue(\"dependencyCount\",String(e))}reportValue(e,r){md(this.values,e).add(r)}reportEnumerator(e,r){md(this.enumerators,e).add(zs(r))}reportHit(e,r=\"*\"){let o=Wy(this.hits,e),a=ol(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return V.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let{nextState:a,triggerUpdate:n,triggerTips:u,nextTips:A}=FAt({state:o,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=A,this.displayedTips=o.displayedTips??[],a!==null)try{oe.mkdirSync(V.dirname(r),{recursive:!0}),oe.writeJsonSync(r,a)}catch{return!1}if(u&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=o.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=I=>O4(h,I,{configuration:this.configuration}).catch(()=>{});for(let[I,v]of Object.entries(o.blocks??{})){if(Object.keys(v).length===0)continue;let x=v;x.userId=I,x.reportType=\"primary\";for(let L of Object.keys(x.enumerators??{}))x.enumerators[L]=x.enumerators[L].length;E(x);let C=new Map,R=20;for(let[L,U]of Object.entries(x.values))U.length>0&&C.set(L,U.slice(0,R));for(;C.size>0;){let L={};L.userId=I,L.reportType=\"secondary\",L.metrics={};for(let[U,J]of C)L.metrics[U]=J.shift(),J.length===0&&C.delete(U);E(L)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,E]of this.hits.get(u))p[h]=(p[h]??0)+E}for(let u of[\"values\",\"enumerators\"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),oe.mkdirSync(V.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var o2={};Vt(o2,{BuildDirectiveType:()=>Vx,CACHE_CHECKPOINT:()=>c_,CACHE_VERSION:()=>Kx,Cache:()=>Lr,Configuration:()=>Ke,DEFAULT_RC_FILENAME:()=>G4,FormatType:()=>xle,InstallMode:()=>pl,LEGACY_PLUGINS:()=>v1,LOCKFILE_VERSION:()=>tk,LegacyMigrationResolver:()=>oC,LightReport:()=>AA,LinkType:()=>zy,LockfileResolver:()=>aC,Manifest:()=>Ot,MessageName:()=>wr,MultiFetcher:()=>hE,PackageExtensionStatus:()=>BL,PackageExtensionType:()=>IL,PeerWarningType:()=>rk,Project:()=>Pt,Report:()=>Xs,ReportError:()=>zt,SettingsType:()=>D1,StreamReport:()=>Nt,TAG_REGEXP:()=>FE,TelemetryManager:()=>uC,ThrowReport:()=>Qi,VirtualFetcher:()=>gE,WindowsLinkType:()=>xb,Workspace:()=>cC,WorkspaceFetcher:()=>mE,WorkspaceResolver:()=>Xn,YarnVersion:()=>rn,execUtils:()=>Ur,folderUtils:()=>YP,formatUtils:()=>de,hashUtils:()=>wn,httpUtils:()=>nn,miscUtils:()=>_e,nodeUtils:()=>Ji,parseMessageName:()=>AS,reportOptionDeprecations:()=>LE,scriptUtils:()=>un,semverUtils:()=>kr,stringifyMessageName:()=>Wu,structUtils:()=>W,tgzUtils:()=>Xi,treeUtils:()=>$s});var Ye=Et(()=>{Db();WP();jl();nh();Ib();ql();vb();BU();Qf();bo();Xfe();ipe();u_();S1();S1();ope();A_();ape();f_();fE();fS();cM();zpe();Yl();O1();Xpe();S_();AM();fM();vd();P_();L1();Cne()});var nhe=_((K_t,l2)=>{\"use strict\";var TAt=process.env.TERM_PROGRAM===\"Hyper\",NAt=process.platform===\"win32\",ehe=process.platform===\"linux\",F_={ballotDisabled:\"\\u2612\",ballotOff:\"\\u2610\",ballotOn:\"\\u2611\",bullet:\"\\u2022\",bulletWhite:\"\\u25E6\",fullBlock:\"\\u2588\",heart:\"\\u2764\",identicalTo:\"\\u2261\",line:\"\\u2500\",mark:\"\\u203B\",middot:\"\\xB7\",minus:\"\\uFF0D\",multiplication:\"\\xD7\",obelus:\"\\xF7\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",pencilUpRight:\"\\u2710\",percent:\"%\",pilcrow2:\"\\u2761\",pilcrow:\"\\xB6\",plusMinus:\"\\xB1\",section:\"\\xA7\",starsOff:\"\\u2606\",starsOn:\"\\u2605\",upDownArrow:\"\\u2195\"},the=Object.assign({},F_,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),rhe=Object.assign({},F_,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:ehe?\"\\u25B8\":\"\\u276F\",pointerSmall:ehe?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});l2.exports=NAt&&!TAt?the:rhe;Reflect.defineProperty(l2.exports,\"common\",{enumerable:!1,value:F_});Reflect.defineProperty(l2.exports,\"windows\",{enumerable:!1,value:the});Reflect.defineProperty(l2.exports,\"other\",{enumerable:!1,value:rhe})});var Kc=_((V_t,R_)=>{\"use strict\";var LAt=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),OAt=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,ihe=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let u=n.open=`\\x1B[${n.codes[0]}m`,A=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(A)&&(h=h.replace(p,A+u));let I=u+h+A;return E?I.replace(/\\r*\\n/g,`${A}$&${u}`):I},n},r=(n,u,A)=>typeof n==\"function\"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let A=\"\"+n,p=A.includes(`\n`),h=u.length;for(h>0&&u.includes(\"unstyle\")&&(u=[...new Set([\"unstyle\",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>o(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),t.ansiRegex=OAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u==\"string\"?t[u]:u;if(typeof A!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");A.stack||(Reflect.defineProperty(A,\"name\",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!LAt(n))throw new TypeError(\"Expected theme to be an object\");for(let u of Object.keys(n))t.alias(u,n[u]);return t},t.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,\"\")):\"\"),t.alias(\"noop\",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=nhe(),t.define=a,t};R_.exports=ihe();R_.exports.create=ihe});var No=_(sn=>{\"use strict\";var MAt=Object.prototype.toString,rc=Kc(),she=!1,T_=[],ohe={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};sn.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);sn.hasColor=t=>!!t&&rc.hasColor(t);var ik=sn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);sn.nativeType=t=>MAt.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");sn.isAsyncFn=t=>sn.nativeType(t)===\"asyncfunction\";sn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";sn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;sn.scrollDown=(t=[])=>[...t.slice(1),t[0]];sn.scrollUp=(t=[])=>[t.pop(),...t];sn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};sn.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};sn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};sn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};sn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:o=`\n`+r,width:a=80}=e,n=(o+r).match(/[^\\S\\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,\"g\"),h=A.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),e.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),e.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(o)};sn.unmute=t=>{let e=t.stack.find(o=>rc.keys.color.includes(o));return e?rc[e]:t.stack.find(o=>o.slice(2)===\"bg\")?rc[e.slice(2)]:o=>o};sn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";sn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o));if(e){let o=rc[\"bg\"+sn.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)===\"bg\");return r?rc[r.slice(2).toLowerCase()]||t:rc.none};sn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>rc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)===\"bg\");if(e&&!r)return rc[ohe[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=ohe[o];return a&&rc[\"bg\"+sn.pascal(a)]||t}return rc.none};sn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+o};sn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!sn.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);sn.get=(t={},e=\"\",r)=>{let o=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return o??r};sn.mixin=(t,e)=>{if(!ik(t))return e;if(!ik(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&ik(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);ik(a.value)?t[r]=sn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};sn.merge=(...t)=>{let e={};for(let r of t)sn.mixin(e,r);return e};sn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a==\"function\"?sn.define(t,o,a.bind(e)):sn.define(t,o,a)}};sn.onExit=t=>{let e=(r,o)=>{she||(she=!0,T_.forEach(a=>a()),r===!0&&process.exit(128+o))};T_.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),T_.push(t)};sn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};sn.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var ahe=_(hC=>{\"use strict\";hC.ctrl={a:\"first\",b:\"backward\",c:\"cancel\",d:\"deleteForward\",e:\"last\",f:\"forward\",g:\"reset\",i:\"tab\",k:\"cutForward\",l:\"reset\",n:\"newItem\",m:\"cancel\",j:\"submit\",p:\"search\",r:\"remove\",s:\"save\",u:\"undo\",w:\"cutLeft\",x:\"toggleCursor\",v:\"paste\"};hC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};hC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};hC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};hC.keys={pageup:\"pageUp\",pagedown:\"pageDown\",home:\"home\",end:\"end\",cancel:\"cancel\",delete:\"deleteForward\",backspace:\"delete\",down:\"down\",enter:\"submit\",escape:\"cancel\",left:\"left\",space:\"space\",number:\"number\",return:\"submit\",right:\"right\",tab:\"next\",up:\"up\"}});var uhe=_((X_t,che)=>{\"use strict\";var lhe=ve(\"readline\"),UAt=ahe(),_At=/^(?:\\x1b)([a-zA-Z0-9])$/,HAt=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,qAt={OP:\"f1\",OQ:\"f2\",OR:\"f3\",OS:\"f4\",\"[11~\":\"f1\",\"[12~\":\"f2\",\"[13~\":\"f3\",\"[14~\":\"f4\",\"[[A\":\"f1\",\"[[B\":\"f2\",\"[[C\":\"f3\",\"[[D\":\"f4\",\"[[E\":\"f5\",\"[15~\":\"f5\",\"[17~\":\"f6\",\"[18~\":\"f7\",\"[19~\":\"f8\",\"[20~\":\"f9\",\"[21~\":\"f10\",\"[23~\":\"f11\",\"[24~\":\"f12\",\"[A\":\"up\",\"[B\":\"down\",\"[C\":\"right\",\"[D\":\"left\",\"[E\":\"clear\",\"[F\":\"end\",\"[H\":\"home\",OA:\"up\",OB:\"down\",OC:\"right\",OD:\"left\",OE:\"clear\",OF:\"end\",OH:\"home\",\"[1~\":\"home\",\"[2~\":\"insert\",\"[3~\":\"delete\",\"[4~\":\"end\",\"[5~\":\"pageup\",\"[6~\":\"pagedown\",\"[[5~\":\"pageup\",\"[[6~\":\"pagedown\",\"[7~\":\"home\",\"[8~\":\"end\",\"[a\":\"up\",\"[b\":\"down\",\"[c\":\"right\",\"[d\":\"left\",\"[e\":\"clear\",\"[2$\":\"insert\",\"[3$\":\"delete\",\"[5$\":\"pageup\",\"[6$\":\"pagedown\",\"[7$\":\"home\",\"[8$\":\"end\",Oa:\"up\",Ob:\"down\",Oc:\"right\",Od:\"left\",Oe:\"clear\",\"[2^\":\"insert\",\"[3^\":\"delete\",\"[5^\":\"pageup\",\"[6^\":\"pagedown\",\"[7^\":\"home\",\"[8^\":\"end\",\"[Z\":\"tab\"};function jAt(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function GAt(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var sk=(t=\"\",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=\"\\x1B\"+String(t)):t=String(t):t!==void 0&&typeof t!=\"string\"?t=String(t):t||(t=o.sequence||\"\"),o.sequence=o.sequence||t||o.name,t===\"\\r\")o.raw=void 0,o.name=\"return\";else if(t===`\n`)o.name=\"enter\";else if(t===\"\t\")o.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")o.name=\"backspace\",o.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")o.name=\"escape\",o.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")o.name=\"space\",o.meta=t.length===2;else if(t<=\"\u001a\")o.name=String.fromCharCode(t.charCodeAt(0)+\"a\".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")o.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")o.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")o.name=t.toLowerCase(),o.shift=!0;else if(r=_At.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=HAt.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=qAt[n],o.shift=jAt(n)||o.shift,o.ctrl=GAt(n)||o.ctrl}return o};sk.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let o=lhe.createInterface({terminal:!0,input:r});lhe.emitKeypressEvents(r,o);let a=(A,p)=>e(A,sk(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),o.pause(),o.close()}};sk.action=(t,e,r)=>{let o={...UAt,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};che.exports=sk});var fhe=_((Z_t,Ahe)=>{\"use strict\";Ahe.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o==\"number\"&&(o={interval:o}),YAt(t,r,o)}};function YAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,\"interval\",{value:n}),t.once(\"close\",()=>o.stop()),o.stop}});var hhe=_(($_t,phe)=>{\"use strict\";var{define:WAt,width:KAt}=No(),N_=class{constructor(e){let r=e.options;WAt(this,\"_prompt\",e),this.type=e.type,this.name=e.name,this.message=\"\",this.header=\"\",this.footer=\"\",this.error=\"\",this.hint=\"\",this.input=\"\",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt=\"\",this.buffer=\"\",this.width=KAt(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r==\"function\"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading==\"boolean\"?this._loading:this.loadingChoices?\"choices\":!1}get status(){return this.cancelled?\"cancelled\":this.submitted?\"submitted\":\"pending\"}};phe.exports=N_});var dhe=_((e8t,ghe)=>{\"use strict\";var L_=No(),eo=Kc(),O_={default:eo.noop,noop:eo.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||L_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||L_.complement(this.primary)},primary:eo.cyan,success:eo.green,danger:eo.magenta,strong:eo.bold,warning:eo.yellow,muted:eo.dim,disabled:eo.gray,dark:eo.dim.gray,underline:eo.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};O_.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(eo.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(eo.visible=t.styles.visible);let e=L_.merge({},O_,t.styles);delete e.merge;for(let r of Object.keys(eo))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});for(let r of Object.keys(eo.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>eo[r]});return e};ghe.exports=O_});var yhe=_((t8t,mhe)=>{\"use strict\";var M_=process.platform===\"win32\",Vf=Kc(),VAt=No(),U_={...Vf.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:Vf.symbols.check,leftAngle:\"\\u2039\",mark:\"\\u203B\",minus:\"\\u2212\",multiplication:\"\\xD7\",obelus:\"\\xF7\",percent:\"%\",pilcrow:\"\\xB6\",pilcrow2:\"\\u2761\",pencilUpRight:\"\\u2710\",pencilDownRight:\"\\u270E\",pencilRight:\"\\u270F\",plus:\"+\",plusMinus:\"\\xB1\",pointRight:\"\\u261E\",rightAngle:\"\\u203A\",section:\"\\xA7\",hexagon:{off:\"\\u2B21\",on:\"\\u2B22\",disabled:\"\\u2B22\"},ballot:{on:\"\\u2611\",off:\"\\u2610\",disabled:\"\\u2612\"},stars:{on:\"\\u2605\",off:\"\\u2606\",disabled:\"\\u2606\"},folder:{on:\"\\u25BC\",off:\"\\u25B6\",disabled:\"\\u25B6\"},prefix:{pending:Vf.symbols.question,submitted:Vf.symbols.check,cancelled:Vf.symbols.cross},separator:{pending:Vf.symbols.pointerSmall,submitted:Vf.symbols.middot,cancelled:Vf.symbols.middot},radio:{off:M_?\"( )\":\"\\u25EF\",on:M_?\"(*)\":\"\\u25C9\",disabled:M_?\"(|)\":\"\\u24BE\"},numbers:[\"\\u24EA\",\"\\u2460\",\"\\u2461\",\"\\u2462\",\"\\u2463\",\"\\u2464\",\"\\u2465\",\"\\u2466\",\"\\u2467\",\"\\u2468\",\"\\u2469\",\"\\u246A\",\"\\u246B\",\"\\u246C\",\"\\u246D\",\"\\u246E\",\"\\u246F\",\"\\u2470\",\"\\u2471\",\"\\u2472\",\"\\u2473\",\"\\u3251\",\"\\u3252\",\"\\u3253\",\"\\u3254\",\"\\u3255\",\"\\u3256\",\"\\u3257\",\"\\u3258\",\"\\u3259\",\"\\u325A\",\"\\u325B\",\"\\u325C\",\"\\u325D\",\"\\u325E\",\"\\u325F\",\"\\u32B1\",\"\\u32B2\",\"\\u32B3\",\"\\u32B4\",\"\\u32B5\",\"\\u32B6\",\"\\u32B7\",\"\\u32B8\",\"\\u32B9\",\"\\u32BA\",\"\\u32BB\",\"\\u32BC\",\"\\u32BD\",\"\\u32BE\",\"\\u32BF\"]};U_.merge=t=>{let e=VAt.merge({},Vf.symbols,U_,t.symbols);return delete e.merge,e};mhe.exports=U_});var Che=_((r8t,Ehe)=>{\"use strict\";var JAt=dhe(),zAt=yhe(),XAt=No();Ehe.exports=t=>{t.options=XAt.merge({},t.options.theme,t.options),t.symbols=zAt.merge(t.options),t.styles=JAt.merge(t.options)}});var Dhe=_((Bhe,vhe)=>{\"use strict\";var whe=process.env.TERM_PROGRAM===\"Apple_Terminal\",ZAt=Kc(),__=No(),Vc=vhe.exports=Bhe,Di=\"\\x1B[\",Ihe=\"\\x07\",H_=!1,Ph=Vc.code={bell:Ihe,beep:Ihe,beginning:`${Di}G`,down:`${Di}J`,esc:Di,getPosition:`${Di}6n`,hide:`${Di}?25l`,line:`${Di}2K`,lineEnd:`${Di}K`,lineStart:`${Di}1K`,restorePosition:Di+(whe?\"8\":\"u\"),savePosition:Di+(whe?\"7\":\"s\"),screen:`${Di}2J`,show:`${Di}?25h`,up:`${Di}1J`},Gd=Vc.cursor={get hidden(){return H_},hide(){return H_=!0,Ph.hide},show(){return H_=!1,Ph.show},forward:(t=1)=>`${Di}${t}C`,backward:(t=1)=>`${Di}${t}D`,nextLine:(t=1)=>`${Di}E`.repeat(t),prevLine:(t=1)=>`${Di}F`.repeat(t),up:(t=1)=>t?`${Di}${t}A`:\"\",down:(t=1)=>t?`${Di}${t}B`:\"\",right:(t=1)=>t?`${Di}${t}C`:\"\",left:(t=1)=>t?`${Di}${t}D`:\"\",to(t,e){return e?`${Di}${e+1};${t+1}H`:`${Di}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?Gd.left(-t):t>0?Gd.right(t):\"\",r+=e<0?Gd.up(-e):e>0?Gd.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=__.isPrimitive(o)?String(o):\"\",a=__.isPrimitive(a)?String(a):\"\",A=__.isPrimitive(A)?String(A):\"\",u){let p=Vc.cursor.up(u)+Vc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Vc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&o&&!n.includes(o)&&(p+=o.length),Vc.cursor.move(p)}}},q_=Vc.erase={screen:Ph.screen,up:Ph.up,down:Ph.down,line:Ph.line,lineEnd:Ph.lineEnd,lineStart:Ph.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=Vc.erase.line+(r<t-1?Vc.cursor.up(1):\"\");return t&&(e+=Vc.code.beginning),e}};Vc.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return q_.line+Gd.to(0);let r=n=>[...ZAt.unstyle(n)].length,o=t.split(/\\r?\\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(q_.line+Gd.prevLine()).repeat(a-1)+q_.line+Gd.to(0)}});var gC=_((n8t,Phe)=>{\"use strict\";var $At=ve(\"events\"),She=Kc(),j_=uhe(),eft=fhe(),tft=hhe(),rft=Che(),Ra=No(),Yd=Dhe(),c2=class extends $At{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,rft(this),eft(this),this.state=new tft(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=ift(this.options.margin),this.setMaxListeners(0),nft(this)}async keypress(e,r={}){this.keypressed=!0;let o=j_.action(e,j_(e,r),this.options.actions);this.state.keypress=o,this.emit(\"keypress\",e,o),this.emit(\"state\",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Yd.code.beep)}cursorHide(){this.stdout.write(Yd.cursor.hide()),Ra.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Yd.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer=\"\",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Yd.cursor.down(e)+Yd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n=\"\",input:u=\"\",value:A=\"\"}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},E=Yd.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=She.unstyle(o);let a=She.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],v=(o+(r?\" \"+r:\"\")).length,x=v<h.length?h.slice(v+1):\"\";return{header:u,prompt:h,after:x,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof e==\"string\"?r+=e.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Yd.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=j_.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(e,r)=>{if(this.once(\"submit\",e),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(e,r,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let I=await this.resolve(E,n,r,o);return!I&&r&&r[e]?this.resolve(h,n,r,o):I}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ra.isObject(e)&&(e=e[o.status]||e.pending),Ra.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return Ra.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ra.isObject(n)&&(n=n[o.status]||n.pending),Ra.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element(\"pointer\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?\"on\":\"off\"]||o,this.state),p=Ra.hasColor(A)?A:u(A);return n?p:\" \".repeat(A.length)}}async indicator(e,r){let o=await this.element(\"indicator\",e,r);if(typeof o==\"string\"&&Ra.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?\"on\":\"off\"]||o;return Ra.hasColor(A)?A:u(A)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let e=await this.element(\"hint\");return Ra.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?\"\":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==\"\"}resolve(e,...r){return Ra.resolve(this,e,...r)}get base(){return c2.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ra.height(this.stdout,25)}get width(){return this.options.columns||Ra.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function nft(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],o=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n==\"function\"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function ift(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push(\"\")}return o}Phe.exports=c2});var khe=_((i8t,xhe)=>{\"use strict\";var sft=No(),bhe={default(t,e){return e},checkbox(t,e){throw new Error(\"checkbox role is not implemented yet\")},editable(t,e){throw new Error(\"editable role is not implemented yet\")},expandable(t,e){throw new Error(\"expandable role is not implemented yet\")},heading(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||\"\",e},input(t,e){throw new Error(\"input role is not implemented yet\")},option(t,e){return bhe.default(t,e)},radio(t,e){throw new Error(\"radio role is not implemented yet\")},separator(t,e){return e.disabled=\"\",e.indicator=[e.indicator,\" \"].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};xhe.exports=(t,e={})=>{let r=sft.merge({},bhe,e.roles);return r[t]||r.default}});var u2=_((s8t,Rhe)=>{\"use strict\";var oft=Kc(),aft=gC(),lft=khe(),ok=No(),{reorder:G_,scrollUp:cft,scrollDown:uft,isObject:Qhe,swap:Aft}=ok,Y_=class extends aft{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");Qhe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(u,A)=>{typeof u==\"function\"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){if(typeof e==\"function\"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e==\"string\"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=lft(e.role,this.options)(this,e),typeof e.disabled==\"string\"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint=\"(disabled)\"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||\"\",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input=\"\",e.index=r,e.cursor=0,ok.define(e,\"parent\",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+\"  \":e.indent||\"\"),e.path=o?o.path+\".\"+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,oft.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,e.value=p},a==null&&typeof e.initial==\"function\"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit(\"choice\",e,r,this),typeof e.onChoice==\"function\"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?\"  \".repeat(e.level-1):\"\":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!=\"boolean\"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return Fhe(this,this.choices),this.emit(\"toggle\",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=G_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),E=A.filter(I=>!h.includes(I));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num=\"\",o(p)};if(n===\"0\"||n.length===1&&Number(n+\"0\")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=G_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=G_(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=cft(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=uft(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){Aft(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(o=>e[o]===!0)?!0:e&&e.role===\"heading\"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r=\"value\"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e==\"function\"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(Qhe(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(u,A)=>[u.name,A].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=ok.reorder(n)),this.value=a?n.map(u=>u.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return Fhe(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function Fhe(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if(ok.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}Rhe.exports=Y_});var bh=_((o8t,The)=>{\"use strict\";var fft=u2(),W_=No(),K_=class extends fft{constructor(e){super(e),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):\"\"}indicator(e,r){return this.multiple?super.indicator(e,r):\"\"}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!W_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),u=await this.resolve(e.hint,this.state,e,r);u&&!W_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(W_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let e=this.visible.map(async(n,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let o=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o=\"\",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,\"\"].join(\" \"),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,E,I].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};The.exports=K_});var Lhe=_((a8t,Nhe)=>{\"use strict\";var pft=bh(),hft=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},V_=class extends pft{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(\", \");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=hft(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Nhe.exports=V_});var z_=_((l8t,Ohe)=>{\"use strict\";var J_=No();Ohe.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:o=\"\",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=J_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,I=\" \",v=h(I);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=\"\"),n&&a===0&&o===\"\"&&r===\"\")return h(I);if(n&&a===0&&(r===o||r===\"\"))return h(o[0])+A(o.slice(1));o=J_.isPrimitive(o)?`${o}`:\"\",r=J_.isPrimitive(r)?`${r}`:\"\";let x=o&&o.startsWith(r)&&o!==r,C=x?h(o[r.length]):v;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),C=\"\"),n===!1&&(C=\"\"),x){let R=t.styles.unstyle(E+C);return E+C+A(o.slice(R.length))}return E+C}});var ak=_((c8t,Mhe)=>{\"use strict\";var gft=Kc(),dft=bh(),mft=z_(),X_=class extends dft{constructor(e){super({...e,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input=\"\",e.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(e){return this.state.submitted?\"\":super.format(e)}pointer(){return\"\"}indicator(e){return e.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||\":\";return o?\" \"+this.styles.disabled(o):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u=\"\",name:A,hint:p,input:h=\"\"}=e,{muted:E,submitted:I,primary:v,danger:x}=a,C=p,R=this.index===r,L=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),J=e.message;this.align===\"right\"&&(J=J.padStart(this.longest+1,\" \")),this.align===\"left\"&&(J=J.padEnd(this.longest+1,\" \"));let te=this.values[A]=h||u,ae=h?\"success\":\"dark\";await L.call(e,te,this.state)!==!0&&(ae=\"danger\");let fe=a[ae],ce=fe(await this.indicator(e,r))+(e.pad||\"\"),me=this.indent(e),he=()=>[me,ce,J+U,h,C].filter(Boolean).join(\" \");if(o.submitted)return J=gft.unstyle(J),h=I(h),C=\"\",he();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=mft(this,{input:h,initial:u,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,te,e,r)),R&&(J=v(J)),e.error?h+=(h?\" \":\"\")+x(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),he()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Mhe.exports=X_});var Z_=_((u8t,_he)=>{\"use strict\";var yft=ak(),Eft=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},Uhe=(t=Eft)=>{class e extends yft{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return Uhe(o)}}return e};_he.exports=Uhe()});var jhe=_((A8t,qhe)=>{\"use strict\";var Cft=Z_();function wft(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hhe=(t=wft)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends Cft.create(t){constructor(a){super({...a,choices:e})}static create(a){return Hhe(a)}}return r};qhe.exports=Hhe()});var lk=_((f8t,Ghe)=>{\"use strict\";var Ift=gC(),{isPrimitive:Bft,hasColor:vft}=No(),$_=class extends Ift{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return Bft(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return vft(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(\" \");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),I=await this.error()||await this.hint(),v=await this.footer();I&&!A.includes(I)&&(E+=\" \"+I),A+=\" \"+E,this.clear(r),this.write([p,A,v].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Ghe.exports=$_});var Whe=_((p8t,Yhe)=>{\"use strict\";var Dft=lk(),e8=class extends Dft{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};Yhe.exports=e8});var Vhe=_((h8t,Khe)=>{\"use strict\";var Sft=bh(),Pft=ak(),dC=Pft.prototype,t8=class extends Sft{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():dC.dispatch.call(this,e,r)}append(e,r){return dC.append.call(this,e,r)}delete(e,r){return dC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?dC.next.call(this):super.next()}prev(){return this.focused.editable?dC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||\"\",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||\"\"}indent(e){return e.role===\"heading\"?\"\":e.editable?\" \":\"  \"}async renderChoice(e,r){return e.indent=\"\",e.editable?dC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e==\"string\"?e:\"Invalid Input\"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role===\"heading\"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||\"\":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Khe.exports=t8});var Wd=_((g8t,Jhe)=>{\"use strict\";var bft=gC(),xft=z_(),{isPrimitive:kft}=No(),r8=class extends bft{constructor(e){super(e),this.initial=kft(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!o||o.name!==\"return\")?this.append(`\n`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):\"\";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):xft(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(\" \");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=\" \"+p),n+=\" \"+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(`\n`)),this.restore()}};Jhe.exports=r8});var Xhe=_((d8t,zhe)=>{\"use strict\";var Qft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),ck=t=>Qft(t).filter(Boolean);zhe.exports=(t,e={},r=\"\")=>{let{past:o=[],present:a=\"\"}=e,n,u;switch(t){case\"prev\":case\"undo\":return n=o.slice(0,o.length-1),u=o[o.length-1]||\"\",{past:ck([r,...n]),present:u};case\"next\":case\"redo\":return n=o.slice(1),u=o[0]||\"\",{past:ck([...n,r]),present:u};case\"save\":return{past:ck([...o,r]),present:\"\"};case\"remove\":return u=ck(o.filter(A=>A!==r)),a=\"\",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var i8=_((m8t,$he)=>{\"use strict\";var Fft=Wd(),Zhe=Xhe(),n8=class extends Fft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Zhe(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion(\"prev\")}altDown(){return this.completion(\"next\")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=Zhe(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};$he.exports=n8});var t0e=_((y8t,e0e)=>{\"use strict\";var Rft=Wd(),s8=class extends Rft{format(){return\"\"}};e0e.exports=s8});var n0e=_((E8t,r0e)=>{\"use strict\";var Tft=Wd(),o8=class extends Tft{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||\"\"}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(\", \")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};r0e.exports=o8});var s0e=_((C8t,i0e)=>{\"use strict\";var Nft=bh(),a8=class extends Nft{constructor(e){super({...e,multiple:!0})}};i0e.exports=a8});var c8=_((w8t,o0e)=>{\"use strict\";var Lft=Wd(),l8=class extends Lft{constructor(e={}){super({style:\"number\",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=\"\"){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};o0e.exports=l8});var l0e=_((I8t,a0e)=>{a0e.exports=c8()});var u0e=_((B8t,c0e)=>{\"use strict\";var Oft=Wd(),u8=class extends Oft{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):\"\"}};c0e.exports=u8});var p0e=_((v8t,f0e)=>{\"use strict\";var Mft=Kc(),Uft=u2(),A0e=No(),A8=class extends Uft{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||\"left\"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`\n   `;let r=e.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o<this.scale.length;o++)r.scale.push({index:o})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,o){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(o=>`   ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(`\n`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join(\"\").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),A=\" \".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!A0e.hasColor(n)&&(n=this.styles.muted(n));let u=C=>this.margin[3]+C.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),I=this.margin[1]+this.margin[3];this.scaleLength=Mft.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-I.length);let x=A0e.wordWrap(h,{width:this.widths[0],newline:A}).split(`\n`).map(C=>u(C)+this.margin[1]);return o&&(E=this.styles.info(E),x=x.map(C=>this.styles.info(C))),x[0]+=E,this.linebreak&&x.push(\"\"),[p+a,x.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=\"\";this.options.promptLine!==!1&&(u=[o,n,a,\"\"].join(\" \"),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),I=await this.renderChoices(),v=await this.footer(),x=this.emptyError;p&&(u+=p),E&&!u.includes(E)&&(u+=\" \"+E),e&&!p&&!I.trim()&&this.multiple&&x!=null&&(u+=this.styles.danger(x)),this.clear(r),this.write([A,u,h,I,v].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};f0e.exports=A8});var d0e=_((D8t,g0e)=>{\"use strict\";var h0e=Kc(),_ft=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",p8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=_ft(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},Hft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,I=()=>n[++E],v=()=>n[E+1],x=C=>{C.line=h,u.push(C)};for(x({type:\"bos\",value:\"\"});E<n.length-1;){let C=I();if(/^[^\\S\\n ]$/.test(C)){x({type:\"text\",value:C});continue}if(C===`\n`){x({type:\"newline\",value:C}),h++;continue}if(C===\"\\\\\"){C+=I(),x({type:\"text\",value:C});continue}if((C===\"$\"||C===\"#\"||C===\"{\")&&v()===\"{\"){let L=I();C+=L;let U={type:\"template\",open:C,inner:\"\",close:\"\",value:C},J;for(;J=I();){if(J===\"}\"){v()===\"}\"&&(J+=I()),U.value+=J,U.close=J;break}J===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=J),U.value+=J,U.inner+=J}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),x(U),p.push(U.key),o.add(U.key);let te=A.find(ae=>ae.name===U.key);U.field=a.find(ae=>ae.name===U.key),te||(te=new p8(U),A.push(te)),te.lines.push(U.line-1);continue}let R=u[u.length-1];R.type===\"text\"&&R.line===h?R.value+=C:x({type:\"text\",value:C})}return x({type:\"eos\",value:\"\"}),{input:n,tabstops:u,unique:o,keys:p,items:A}};g0e.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await Hft(e,o),A=f8(\"result\",t,e),p=f8(\"format\",t,e),h=f8(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(I={},v=!1)=>{let x=0;I.required=r,I.items=n,I.keys=u,I.output=\"\";let C=async(J,te,ae,fe)=>{let ce=await h(J,te,ae,fe);return ce===!1?\"Invalid field \"+ae.name:ce};for(let J of a){let te=J.value,ae=J.key;if(J.type!==\"template\"){te&&(I.output+=te);continue}if(J.type===\"template\"){let fe=n.find(we=>we.name===ae);e.required===!0&&I.required.add(fe.name);let ce=[fe.input,I.values[fe.value],fe.value,te].find(E),he=(fe.field||{}).message||J.inner;if(v){let we=await C(I.values[ae],I,fe,x);if(we&&typeof we==\"string\"||we===!1){I.invalid.set(ae,we);continue}I.invalid.delete(ae);let g=await A(I.values[ae],I,fe,x);I.output+=h0e.unstyle(g);continue}fe.placeholder=!1;let Be=te;te=await p(te,I,fe,x),ce!==te?(I.values[ae]=ce,te=t.styles.typing(ce),I.missing.delete(he)):(I.values[ae]=void 0,ce=`<${he}>`,te=t.styles.primary(ce),fe.placeholder=!0,I.required.has(ae)&&I.missing.add(he)),I.missing.has(he)&&I.validating&&(te=t.styles.warning(ce)),I.invalid.has(ae)&&I.validating&&(te=t.styles.danger(ce)),x===I.index&&(Be!==te?te=t.styles.underline(te):te=t.styles.heading(h0e.unstyle(te))),x++}te&&(I.output+=te)}let R=I.output.split(`\n`).map(J=>\" \"+J),L=n.length,U=0;for(let J of n)I.invalid.has(J.name)&&J.lines.forEach(te=>{R[te][0]===\" \"&&(R[te]=I.styles.danger(I.symbols.bullet)+R[te].slice(1))}),t.isValue(I.values[J.name])&&U++;return I.completed=(U/L*100).toFixed(0),I.output=R.join(`\n`),I.output}};function f8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]==\"function\"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var y0e=_((S8t,m0e)=>{\"use strict\";var qft=Kc(),jft=d0e(),Gft=gC(),h8=class extends Gft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await jft(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,`\n`].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),I=await this.error()||\"\",v=await this.hint()||\"\",x=o?\"\":await this.interpolate(this.state),C=this.state.key=r[e]||\"\",R=await this.format(C),L=await this.footer();R&&(h+=\" \"+R),v&&!R&&this.state.completed===0&&(h+=\" \"+v),this.clear(a);let U=[E,h,x,L,I.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let A=\"\";for(let[p,h]of e)A+=`Invalid ${p}: ${h}\n`;return this.state.error=A,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let u=qft.unstyle(o).split(`\n`).map(A=>A.slice(1)).join(`\n`);return this.value={values:a,result:u},super.submit()}};m0e.exports=h8});var C0e=_((P8t,E0e)=>{\"use strict\";var Yft=\"(Use <shift>+<up/down> to sort)\",Wft=bh(),g8=class extends Wft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,Yft].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};E0e.exports=g8});var I0e=_((b8t,w0e)=>{\"use strict\";var Kft=u2(),d8=class extends Kft{constructor(e={}){if(super(e),this.emptyError=e.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(`\n   `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=Vft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term===\"Hyper\",n=a?9:8,u=a?\"\":\" \",A=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=te=>(te?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+u,E=r+1+\".\",I=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),x=this.indent(e),C=x+e.scale.map((te,ae)=>h(ae===e.scaleIdx)).join(A),R=te=>te===e.scaleIdx?I(te):te,L=x+e.scale.map((te,ae)=>R(ae)).join(p),U=()=>[E,v].filter(Boolean).join(\" \"),J=()=>[U(),C,L,\" \"].filter(Boolean).join(`\n`);return o&&(C=this.styles.cyan(C),L=this.styles.cyan(L)),J()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(\" \");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),I=await this.footer();(p||!h)&&(u+=\" \"+p),h&&!u.includes(h)&&(u+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,E,I].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function Vft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}w0e.exports=d8});var v0e=_((x8t,B0e)=>{B0e.exports=i8()});var S0e=_((k8t,D0e)=>{\"use strict\";var Jft=lk(),m8=class extends Jft{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e=\"\",r){switch(e.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(\" \");this.state.prompt=h,A&&!h.includes(A)&&(h+=\" \"+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};D0e.exports=m8});var b0e=_((Q8t,P0e)=>{\"use strict\";var zft=bh(),y8=class extends zft{constructor(e){if(super(e),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>o.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};P0e.exports=y8});var k0e=_(E8=>{\"use strict\";var x0e=No(),As=(t,e)=>{x0e.defineExport(E8,t,e),x0e.defineExport(E8,t.toLowerCase(),e)};As(\"AutoComplete\",()=>Lhe());As(\"BasicAuth\",()=>jhe());As(\"Confirm\",()=>Whe());As(\"Editable\",()=>Vhe());As(\"Form\",()=>ak());As(\"Input\",()=>i8());As(\"Invisible\",()=>t0e());As(\"List\",()=>n0e());As(\"MultiSelect\",()=>s0e());As(\"Numeral\",()=>l0e());As(\"Password\",()=>u0e());As(\"Scale\",()=>p0e());As(\"Select\",()=>bh());As(\"Snippet\",()=>y0e());As(\"Sort\",()=>C0e());As(\"Survey\",()=>I0e());As(\"Text\",()=>v0e());As(\"Toggle\",()=>S0e());As(\"Quiz\",()=>b0e())});var F0e=_((R8t,Q0e)=>{Q0e.exports={ArrayPrompt:u2(),AuthPrompt:Z_(),BooleanPrompt:lk(),NumberPrompt:c8(),StringPrompt:Wd()}});var f2=_((T8t,T0e)=>{\"use strict\";var R0e=ve(\"assert\"),w8=ve(\"events\"),xh=No(),Jc=class extends w8{constructor(e,r){super(),this.options=xh.merge({},e),this.answers={...r}}register(e,r){if(xh.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}R0e.equal(typeof r,\"function\",\"expected a function\");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(xh.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=xh.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=xh;if(typeof o==\"function\"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];R0e(this.prompts[o],`Prompt \"${o}\" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on(\"submit\",E=>{this.emit(\"answer\",a,E,A),n(this.answers,a,E)});let h=A.emit.bind(A);return A.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill===\"show\"&&await A.submit()):p=A.value=await A.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||gC()}static get prompts(){return k0e()}static get types(){return F0e()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return xh.mixinEmitter(e,new w8),e}};xh.mixinEmitter(Jc,new w8);var C8=Jc.prompts;for(let t of Object.keys(C8)){let e=t.toLowerCase(),r=o=>new C8[t](o).run();Jc.prompt[e]=r,Jc[e]=r,Jc[t]||Reflect.defineProperty(Jc,t,{get:()=>C8[t]})}var A2=t=>{xh.defineExport(Jc,t,()=>Jc.types[t])};A2(\"ArrayPrompt\");A2(\"AuthPrompt\");A2(\"BooleanPrompt\");A2(\"NumberPrompt\");A2(\"StringPrompt\");T0e.exports=Jc});var d2=_((dHt,H0e)=>{var rpt=zx();function npt(t,e,r){var o=t==null?void 0:rpt(t,e);return o===void 0?r:o}H0e.exports=npt});var G0e=_((IHt,j0e)=>{function ipt(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}j0e.exports=ipt});var W0e=_((BHt,Y0e)=>{var spt=dd(),opt=zS();function apt(t,e){return t&&spt(e,opt(e),t)}Y0e.exports=apt});var V0e=_((vHt,K0e)=>{var lpt=dd(),cpt=Gy();function upt(t,e){return t&&lpt(e,cpt(e),t)}K0e.exports=upt});var z0e=_((DHt,J0e)=>{var Apt=dd(),fpt=GS();function ppt(t,e){return Apt(t,fpt(t),e)}J0e.exports=ppt});var P8=_((SHt,X0e)=>{var hpt=jS(),gpt=tP(),dpt=GS(),mpt=WN(),ypt=Object.getOwnPropertySymbols,Ept=ypt?function(t){for(var e=[];t;)hpt(e,dpt(t)),t=gpt(t);return e}:mpt;X0e.exports=Ept});var $0e=_((PHt,Z0e)=>{var Cpt=dd(),wpt=P8();function Ipt(t,e){return Cpt(t,wpt(t),e)}Z0e.exports=Ipt});var b8=_((bHt,ege)=>{var Bpt=YN(),vpt=P8(),Dpt=Gy();function Spt(t){return Bpt(t,Dpt,vpt)}ege.exports=Spt});var rge=_((xHt,tge)=>{var Ppt=Object.prototype,bpt=Ppt.hasOwnProperty;function xpt(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]==\"string\"&&bpt.call(t,\"index\")&&(r.index=t.index,r.input=t.input),r}tge.exports=xpt});var ige=_((kHt,nge)=>{var kpt=$S();function Qpt(t,e){var r=e?kpt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}nge.exports=Qpt});var oge=_((QHt,sge)=>{var Fpt=/\\w*$/;function Rpt(t){var e=new t.constructor(t.source,Fpt.exec(t));return e.lastIndex=t.lastIndex,e}sge.exports=Rpt});var Age=_((FHt,uge)=>{var age=pd(),lge=age?age.prototype:void 0,cge=lge?lge.valueOf:void 0;function Tpt(t){return cge?Object(cge.call(t)):{}}uge.exports=Tpt});var pge=_((RHt,fge)=>{var Npt=$S(),Lpt=ige(),Opt=oge(),Mpt=Age(),Upt=oL(),_pt=\"[object Boolean]\",Hpt=\"[object Date]\",qpt=\"[object Map]\",jpt=\"[object Number]\",Gpt=\"[object RegExp]\",Ypt=\"[object Set]\",Wpt=\"[object String]\",Kpt=\"[object Symbol]\",Vpt=\"[object ArrayBuffer]\",Jpt=\"[object DataView]\",zpt=\"[object Float32Array]\",Xpt=\"[object Float64Array]\",Zpt=\"[object Int8Array]\",$pt=\"[object Int16Array]\",eht=\"[object Int32Array]\",tht=\"[object Uint8Array]\",rht=\"[object Uint8ClampedArray]\",nht=\"[object Uint16Array]\",iht=\"[object Uint32Array]\";function sht(t,e,r){var o=t.constructor;switch(e){case Vpt:return Npt(t);case _pt:case Hpt:return new o(+t);case Jpt:return Lpt(t,r);case zpt:case Xpt:case Zpt:case $pt:case eht:case tht:case rht:case nht:case iht:return Upt(t,r);case qpt:return new o;case jpt:case Wpt:return new o(t);case Gpt:return Opt(t);case Ypt:return new o;case Kpt:return Mpt(t)}}fge.exports=sht});var gge=_((THt,hge)=>{var oht=GI(),aht=Ju(),lht=\"[object Map]\";function cht(t){return aht(t)&&oht(t)==lht}hge.exports=cht});var Ege=_((NHt,yge)=>{var uht=gge(),Aht=WS(),dge=KS(),mge=dge&&dge.isMap,fht=mge?Aht(mge):uht;yge.exports=fht});var wge=_((LHt,Cge)=>{var pht=GI(),hht=Ju(),ght=\"[object Set]\";function dht(t){return hht(t)&&pht(t)==ght}Cge.exports=dht});var Dge=_((OHt,vge)=>{var mht=wge(),yht=WS(),Ige=KS(),Bge=Ige&&Ige.isSet,Eht=Bge?yht(Bge):mht;vge.exports=Eht});var x8=_((MHt,xge)=>{var Cht=HS(),wht=G0e(),Iht=rP(),Bht=W0e(),vht=V0e(),Dht=sL(),Sht=eP(),Pht=z0e(),bht=$0e(),xht=zN(),kht=b8(),Qht=GI(),Fht=rge(),Rht=pge(),Tht=aL(),Nht=Hl(),Lht=UI(),Oht=Ege(),Mht=il(),Uht=Dge(),_ht=zS(),Hht=Gy(),qht=1,jht=2,Ght=4,Sge=\"[object Arguments]\",Yht=\"[object Array]\",Wht=\"[object Boolean]\",Kht=\"[object Date]\",Vht=\"[object Error]\",Pge=\"[object Function]\",Jht=\"[object GeneratorFunction]\",zht=\"[object Map]\",Xht=\"[object Number]\",bge=\"[object Object]\",Zht=\"[object RegExp]\",$ht=\"[object Set]\",e0t=\"[object String]\",t0t=\"[object Symbol]\",r0t=\"[object WeakMap]\",n0t=\"[object ArrayBuffer]\",i0t=\"[object DataView]\",s0t=\"[object Float32Array]\",o0t=\"[object Float64Array]\",a0t=\"[object Int8Array]\",l0t=\"[object Int16Array]\",c0t=\"[object Int32Array]\",u0t=\"[object Uint8Array]\",A0t=\"[object Uint8ClampedArray]\",f0t=\"[object Uint16Array]\",p0t=\"[object Uint32Array]\",ri={};ri[Sge]=ri[Yht]=ri[n0t]=ri[i0t]=ri[Wht]=ri[Kht]=ri[s0t]=ri[o0t]=ri[a0t]=ri[l0t]=ri[c0t]=ri[zht]=ri[Xht]=ri[bge]=ri[Zht]=ri[$ht]=ri[e0t]=ri[t0t]=ri[u0t]=ri[A0t]=ri[f0t]=ri[p0t]=!0;ri[Vht]=ri[Pge]=ri[r0t]=!1;function Ak(t,e,r,o,a,n){var u,A=e&qht,p=e&jht,h=e&Ght;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!Mht(t))return t;var E=Nht(t);if(E){if(u=Fht(t),!A)return Sht(t,u)}else{var I=Qht(t),v=I==Pge||I==Jht;if(Lht(t))return Dht(t,A);if(I==bge||I==Sge||v&&!a){if(u=p||v?{}:Tht(t),!A)return p?bht(t,vht(u,t)):Pht(t,Bht(u,t))}else{if(!ri[I])return a?t:{};u=Rht(t,I,A)}}n||(n=new Cht);var x=n.get(t);if(x)return x;n.set(t,u),Uht(t)?t.forEach(function(L){u.add(Ak(L,e,r,L,t,n))}):Oht(t)&&t.forEach(function(L,U){u.set(U,Ak(L,e,r,U,t,n))});var C=h?p?kht:xht:p?Hht:_ht,R=E?void 0:C(t);return wht(R||t,function(L,U){R&&(U=L,L=t[U]),Iht(u,U,Ak(L,e,r,U,t,n))}),u}xge.exports=Ak});var k8=_((UHt,kge)=>{var h0t=x8(),g0t=1,d0t=4;function m0t(t){return h0t(t,g0t|d0t)}kge.exports=m0t});var Q8=_((_Ht,Qge)=>{var y0t=I_();function E0t(t,e,r){return t==null?t:y0t(t,e,r)}Qge.exports=E0t});var Lge=_((WHt,Nge)=>{var C0t=Object.prototype,w0t=C0t.hasOwnProperty;function I0t(t,e){return t!=null&&w0t.call(t,e)}Nge.exports=I0t});var Mge=_((KHt,Oge)=>{var B0t=Lge(),v0t=B_();function D0t(t,e){return t!=null&&v0t(t,e,B0t)}Oge.exports=D0t});var _ge=_((VHt,Uge)=>{function S0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Uge.exports=S0t});var qge=_((JHt,Hge)=>{var P0t=zx(),b0t=pU();function x0t(t,e){return e.length<2?t:P0t(t,b0t(e,0,-1))}Hge.exports=x0t});var R8=_((zHt,jge)=>{var k0t=jd(),Q0t=_ge(),F0t=qge(),R0t=lC();function T0t(t,e){return e=k0t(e,t),t=F0t(t,e),t==null||delete t[R0t(Q0t(e))]}jge.exports=T0t});var T8=_((XHt,Gge)=>{var N0t=R8();function L0t(t,e){return t==null?!0:N0t(t,e)}Gge.exports=L0t});var Jge=_((S6t,U0t)=>{U0t.exports={name:\"@yarnpkg/cli\",version:\"4.1.1\",license:\"BSD-2-Clause\",main:\"./sources/index.ts\",exports:{\".\":\"./sources/index.ts\",\"./polyfills\":\"./sources/polyfills.ts\",\"./package.json\":\"./package.json\"},dependencies:{\"@yarnpkg/core\":\"workspace:^\",\"@yarnpkg/fslib\":\"workspace:^\",\"@yarnpkg/libzip\":\"workspace:^\",\"@yarnpkg/parsers\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^3.2.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"ssh://git@github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var j8=_((n5t,ade)=>{\"use strict\";ade.exports=function(e,r){r===!0&&(r=0);var o=\"\";if(typeof e==\"string\")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var cde=_((i5t,lde)=>{\"use strict\";var igt=j8();function sgt(t){var e={protocols:[],protocol:null,port:null,resource:\"\",host:\"\",user:\"\",password:\"\",pathname:\"\",hash:\"\",search:\"\",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=igt(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||\"\",e.password=r.password||\"\",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=[\"file\"],e.protocol=e.protocols[0],e.port=\"\",e.resource=\"\",e.user=\"\",e.pathname=\"\",e.hash=\"\",e.search=\"\",e.href=t,e.query={},e.parse_failed=!0}return e}lde.exports=sgt});var fde=_((s5t,Ade)=>{\"use strict\";var ogt=cde();function agt(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var lgt=agt(ogt),cgt=\"text/plain\",ugt=\"us-ascii\",ude=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Agt=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(\";\");n=e?\"\":n;let A=!1;u[u.length-1]===\"base64\"&&(u.pop(),A=!0);let p=(u.shift()||\"\").toLowerCase(),E=[...u.map(I=>{let[v,x=\"\"]=I.split(\"=\").map(C=>C.trim());return v===\"charset\"&&(x=x.toLowerCase(),x===ugt)?\"\":`${v}${x?`=${x}`:\"\"}`}).filter(Boolean)];return A&&E.push(\"base64\"),(E.length>0||p&&p!==cgt)&&E.unshift(p),`data:${E.join(\";\")},${A?a.trim():a}${n?`#${n}`:\"\"}`};function fgt(t,e){if(e={defaultProtocol:\"http:\",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return Agt(t,e);if(/^view-source:/i.test(t))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash?a.hash=\"\":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let u=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,A=0,p=\"\";for(;;){let E=u.exec(a.pathname);if(!E)break;let I=E[0],v=E.index,x=a.pathname.slice(A,v);p+=x.replace(/\\/{2,}/g,\"/\"),p+=I,A=v+I.length}let h=a.pathname.slice(A,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let u=a.pathname.split(\"/\"),A=u[u.length-1];ude(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let u of[...a.searchParams.keys()])ude(u,e.removeQueryParameters)&&a.searchParams.delete(u);if(e.removeQueryParameters===!0&&(a.search=\"\"),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&e.removeSingleSlash&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t}var G8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!=\"string\"||!t.trim())&&o(\"Invalid url.\"),t.length>G8.MAX_INPUT_LENGTH&&o(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=fgt(t,e));let a=lgt.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):o(\"URL parsing failed.\")}return a};G8.MAX_INPUT_LENGTH=2048;Ade.exports=G8});var gde=_((o5t,hde)=>{\"use strict\";var pgt=j8();function pde(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=pgt(t);if(t=t.substring(t.indexOf(\"://\")+3),pde(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}hde.exports=pde});var yde=_((a5t,mde)=>{\"use strict\";var hgt=fde(),dde=gde();function ggt(t){var e=hgt(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),dde(e.protocols)||e.protocols.length===0&&dde(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}mde.exports=ggt});var Cde=_((l5t,Ede)=>{\"use strict\";var dgt=yde();function Y8(t){if(typeof t!=\"string\")throw new Error(\"The url must be a string.\");var e=/^([a-z\\d-]{1,39})\\/([-\\.\\w]{1,100})$/i;e.test(t)&&(t=\"https://github.com/\"+t);var r=dgt(t),o=r.resource.split(\".\"),a=null;switch(r.toString=function(L){return Y8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=o[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var u=a.indexOf(\"-\",2),A=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),I=a.indexOf(\"raw\",2),v=a.indexOf(\"edit\",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:E>0?E-1:I>0?I-1:v>0?v-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var x=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>x+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[x+1])>=0&&(r.filepathtype=a[x+1],r.ref=a[x+2],a.length>x+3&&(r.filepath=a.slice(x+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var C=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,R=C.exec(r.pathname);return R!=null&&(r.source=\"bitbucket-server\",R[1]===\"users\"?r.owner=\"~\"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}Y8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",o=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a:o+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+o+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?mgt(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+ygt(t)+a;default:return t.href}};function mgt(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function ygt(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}Ede.exports=Y8});var Lde=_((H9t,Nde)=>{var xgt=Hb(),kgt=eP(),Qgt=Hl(),Fgt=pE(),Rgt=w_(),Tgt=lC(),Ngt=N1();function Lgt(t){return Qgt(t)?xgt(t,Tgt):Fgt(t)?[t]:kgt(Rgt(Ngt(t)))}Nde.exports=Lgt});function _gt(t,e){return e===1&&Ugt.has(t[0])}function B2(t){let e=Array.isArray(t)?t:(0,Ude.default)(t);return e.map((o,a)=>Ogt.test(o)?`[${o}]`:Mgt.test(o)&&!_gt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join(\"\").replace(/^\\./,\"\")}function Hgt(t,e){let r=[];if(e.methodName!==null&&r.push(de.pretty(t,e.methodName,de.Type.CODE)),e.file!==null){let o=[];o.push(de.pretty(t,e.file,de.Type.PATH)),e.line!==null&&(o.push(de.pretty(t,e.line,de.Type.NUMBER)),e.column!==null&&o.push(de.pretty(t,e.column,de.Type.NUMBER))),r.push(`(${o.join(de.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function gk(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){let a=new Map,n=new Map,u=[...r.keys()].map(A=>[A,new Map]);for(let[A,p]of[...u,...e]){let h=r.get(A)?.map(x=>({text:x,fixable:!1}))??[],E=!1,I=t.getWorkspaceByCwd(A),v=I.manifest.exportTo({});for(let[x,C]of p){if(C.size>1){let R=[...C].map(([L,U])=>{let J=de.pretty(t.configuration,L,de.Type.INSPECT),te=U.size>0?Hgt(t.configuration,U.values().next().value):null;return te!==null?`\n${J} at ${te}`:`\n${J}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${de.pretty(t.configuration,x,de.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=C,L=(0,Ode.default)(v,x);if(JSON.stringify(L)===JSON.stringify(R))continue;if(!o){let U=typeof L>\"u\"?`Missing field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}`:typeof R>\"u\"?`Extraneous field ${de.pretty(t.configuration,x,de.Type.CODE)} currently set to ${de.pretty(t.configuration,L,de.Type.INSPECT)}`:`Invalid field ${de.pretty(t.configuration,x,de.Type.CODE)}; expected ${de.pretty(t.configuration,R,de.Type.INSPECT)}, found ${de.pretty(t.configuration,L,de.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>\"u\"?(0,_de.default)(v,x):(0,Mde.default)(v,x,R),E=!0}E&&a.set(I,v)}h.length>0&&n.set(I,h)}return{changedWorkspaces:a,remainingErrors:n}}function Hde(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\\n/);A.fixable&&(p[0]=`${de.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:de.tuple(de.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:de.tuple(de.Type.NO_HINT,h)}))})}let u={value:de.tuple(de.Type.LOCATOR,o.anchoredLocator),children:_e.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=_e.sortMap(r.children,o=>o.value[1]),r}var Ode,Mde,Ude,_de,wC,Ogt,Mgt,Ugt,v2=Et(()=>{Ye();Ode=$e(d2()),Mde=$e(Q8()),Ude=$e(Lde()),_de=$e(T8()),wC=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let o=Object.hasOwn(e,r)?e[r]:void 0;if(typeof o>\"u\")continue;_e.getArrayWithDefault(this.indexes[r],o).push(e)}return e}find(e){if(typeof e>\"u\")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let o=[],a;for(let[u,A]of r){let p=u,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){o.push([p,A]);continue}let E=new Set(h.get(A)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let I of a)E.has(I)||a.delete(I);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<\"u\"?Object.hasOwn(u,A)&&u[A]===p:Object.hasOwn(u,A)===!1))return!1;return!0})),n}},Ogt=/^[0-9]+$/,Mgt=/^[a-zA-Z0-9_]+$/,Ugt=new Set([\"scripts\",...Ot.allDependencies])});var qde=_(($9t,sH)=>{var qgt;(function(t){var e=function(){return{\"append/2\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"L\")]),new t.type.Term(\"foldl\",[new t.type.Term(\"append\",[]),new t.type.Var(\"X\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"L\")]))],\"append/3\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"X\"),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"append\",[new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"S\")]))],\"member/2\":[new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"_\")])]),null),new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]))],\"permutation/2\":[new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"permutation\",[new t.type.Var(\"T\"),new t.type.Var(\"P\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"P\")]),new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"Y\")]),new t.type.Var(\"S\")])])]))],\"maplist/2\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"X\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"Xs\")])]))],\"maplist/3\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\")])]))],\"maplist/4\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\")])]))],\"maplist/5\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\")])]))],\"maplist/6\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\")])]))],\"maplist/7\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\")])]))],\"maplist/8\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")]),new t.type.Term(\".\",[new t.type.Var(\"G\"),new t.type.Var(\"Gs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\"),new t.type.Var(\"G\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\"),new t.type.Var(\"Gs\")])]))],\"include/3\":[new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"A\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"A\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"F\"),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"F\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Var(\"S\")])]),new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"S\")])])])])]))],\"exclude/3\":[new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"E\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"Q\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"R\"),new t.type.Var(\"Q\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"!\",[]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"E\")])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"I\"),new t.type.Var(\"I\")]),null),new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"I\"),new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"I\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])])])]),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P2\"),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P2\")]),new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"R\")])])])])]))],\"select/3\":[new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Ys\")]))],\"sum_list/2\":[new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"sum_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"+\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"max_list/2\":[new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"max_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"min_list/2\":[new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"min_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"=<\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"prod_list/2\":[new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"prod_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"*\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"last/2\":[new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\")]),new t.type.Term(\"last\",[new t.type.Var(\"Xs\"),new t.type.Var(\"X\")]))],\"prefix/2\":[new t.type.Rule(new t.type.Term(\"prefix\",[new t.type.Var(\"Part\"),new t.type.Var(\"Whole\")]),new t.type.Term(\"append\",[new t.type.Var(\"Part\"),new t.type.Var(\"_\"),new t.type.Var(\"Whole\")]))],\"nth0/3\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/3\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth0/4\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/4\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth/5\":[new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"N\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"O\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Y\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\",\",[new t.type.Term(\"is\",[new t.type.Var(\"M\"),new t.type.Term(\"+\",[new t.type.Var(\"N\"),new t.type.Num(1,!1)])]),new t.type.Term(\"nth\",[new t.type.Var(\"M\"),new t.type.Var(\"O\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Y\"),new t.type.Var(\"Ys\")])]))],\"length/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else{var p=new t.type.Term(\"length\",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),o.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"N\"),new t.type.Var(\"N\")]),null),new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"X\")]),new t.type.Var(\"A\"),new t.type.Var(\"N\")]),new t.type.Term(\",\",[new t.type.Term(\"succ\",[new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"length\",[new t.type.Var(\"X\"),new t.type.Var(\"B\"),new t.type.Var(\"N\")])]))],\"replicate/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type(\"integer\",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain(\"not_less_than_zero\",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<A.value;E++)h=new t.type.Term(\".\",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=E.length-1;I>0;I--)E[I].equals(E[I-1])&&E.splice(I,1);for(var v=new t.type.Term(\"[]\"),I=E.length-1;I>=0;I--)v=new t.type.Term(\".\",[E[I],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"msort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h=u;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=p.sort(t.compare),I=new t.type.Term(\"[]\"),v=E.length-1;v>=0;v--)I=new t.type.Term(\".\",[E[v],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,A])),a.substitution,a)])}}},\"keysort/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else{for(var p=[],h,E=u;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){o.throw_error(t.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var I=p.sort(t.compare),v=new t.type.Term(\"[]\"),x=I.length-1;x>=0;x--)v=new t.type.Term(\".\",[new t.type.Term(\"-\",[I[x],I[x].pair]),v]),delete I[x].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,A])),a.substitution,a)])}}},\"take/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;if(h===0){for(var v=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)v=new t.type.Term(\".\",[E[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[v,p])),a.substitution,a)])}}},\"drop/3\":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type(\"integer\",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=u.value,E=[],I=A;h>0&&I.indicator===\"./2\";)E.push(I.args[0]),I=I.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p])),a.substitution,a)])}},\"reverse/2\":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type(\"list\",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type(\"list\",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?u:A,I=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)I=new t.type.Term(\".\",[E.args[0],I]),E=E.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[I,p?A:u])),a.substitution,a)])}},\"list_to_set/2\":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")o.throw_error(t.error.type(\"list\",u,n.indicator));else{for(var E=[],I=new t.type.Term(\"[]\",[]),v,x=0;x<h.length;x++){v=!1;for(var C=0;C<E.length&&!v;C++)v=t.compare(h[x],E[C])===0;v||E.push(h[x])}for(x=E.length-1;x>=0;x--)I=new t.type.Term(\".\",[E[x],I]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[A,I])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof sH<\"u\"?sH.exports=function(o){t=o,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(qgt)});var nme=_(Yr=>{\"use strict\";var $d=process.platform===\"win32\",oH=\"aes-256-cbc\",jgt=\"sha256\",Yde=\"The current environment doesn't support interactive reading from TTY.\",Yn=ve(\"fs\"),jde=process.binding(\"tty_wrap\").TTY,lH=ve(\"child_process\"),c0=ve(\"path\"),cH={prompt:\"> \",hideEchoBack:!1,mask:\"*\",limit:[],limitMessage:\"Input another, please.$<( [)limit(])>\",defaultInput:\"\",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:\"utf8\",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},zf=\"none\",Xc,BC,Gde=!1,l0,mk,aH,Ggt=0,hH=\"\",Zd=[],yk,Wde=!1,uH=!1,D2=!1;function Kde(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(o){return\"#\"+o.charCodeAt(0)+\";\"})}return mk.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&o.push(\"--\"+a):r[a]===\"string\"&&t[a]&&o.push(\"--\"+a,e(t[a]))}),o}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function Ygt(t,e){function r(U){var J,te=\"\",ae;for(aH=aH||ve(\"os\").tmpdir();;){J=c0.join(aH,U+te);try{ae=Yn.openSync(J,\"wx\")}catch(fe){if(fe.code===\"EEXIST\"){te++;continue}else throw fe}Yn.closeSync(ae);break}return J}var o,a,n,u={},A,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),I=r(\"readline-sync.exit\"),v=r(\"readline-sync.done\"),x=ve(\"crypto\"),C,R,L;C=x.createHash(jgt),C.update(\"\"+process.pid+Ggt+++Math.random()),L=C.digest(\"hex\"),R=x.createDecipher(oH,L),o=Kde(t),$d?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+l0+\"%Q%\"+o.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+I+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+oH+\"%Q% %Q%\"+L+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+v+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+l0+'\"'+o.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+I+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+oH+'\" \"'+L+'\" >\"'+h+'\"; echo 1 >\"'+v+'\"']),D2&&D2(\"_execFileSync\",o);try{lH.spawn(a,n,e)}catch(U){u.error=new Error(U.message),u.error.method=\"_execFileSync - spawn\",u.error.program=a,u.error.args=n}for(;Yn.readFileSync(v,{encoding:t.encoding}).trim()!==\"1\";);return(A=Yn.readFileSync(I,{encoding:t.encoding}).trim())===\"0\"?u.input=R.update(Yn.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+R.final(t.encoding):(p=Yn.readFileSync(E,{encoding:t.encoding}).trim(),u.error=new Error(Yde+(p?`\n`+p:\"\")),u.error.method=\"_execFileSync\",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Yn.unlinkSync(h),Yn.unlinkSync(E),Yn.unlinkSync(I),Yn.unlinkSync(v),u}function Wgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(l0||($d?process.env.PSModulePath?(l0=\"powershell.exe\",mk=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(l0=\"cscript.exe\",mk=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(l0=\"/bin/sh\",mk=[__dirname+\"/read.sh\"])),$d&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),lH.execFileSync){e=Kde(t),D2&&D2(\"execFileSync\",e);try{r.input=lH.execFileSync(l0,e,a)}catch(n){o=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(Yde+(o?`\n`+o:\"\")),r.error.method=\"execFileSync\",r.error.program=l0,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Ygt(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function AH(t){var e=\"\",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Wgt(t);if(n.error)throw n.error;return n.input}return uH&&uH(t),function(){var n,u,A;function p(){return n||(n=process.binding(\"fs\"),u=process.binding(\"constants\")),n}if(typeof zf==\"string\")if(zf=null,$d){if(A=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),I=0;return(E[0]=+E[0])&&(I+=E[0]*1e4),(E[1]=+E[1])&&(I+=E[1]*100),(E[2]=+E[2])&&(I+=E[2]),I}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),zf=process.stdin.fd,BC=process.stdin._handle;else try{zf=p().open(\"CONIN$\",u.O_RDWR,parseInt(\"0666\",8)),BC=new jde(zf,!0)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else{try{Xc=Yn.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof Xc!=\"number\")try{Xc=p().open(\"CONOUT$\",u.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=process.stdin._handle}catch{}}else try{zf=Yn.openSync(\"/dev/tty\",\"r\"),BC=new jde(zf,!1)}catch{}if(process.stdout.isTTY)Xc=process.stdout.fd;else try{Xc=Yn.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,E,I,v;yk=\"\";function x(C){return C===Gde?!0:BC.setRawMode(C)!==0?!1:(Gde=C,!0)}if(Wde||!BC||typeof Xc!=\"number\"&&(t.display||!A)){e=a();return}if(t.display&&(Yn.writeSync(Xc,t.display),t.display=\"\"),!t.displayOnly){if(!x(!A)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(u=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=Yn.readSync(zf,p,0,h)}catch(C){if(C.code!==\"EOF\"){x(!1),e+=a();return}}if(E>0?(I=p.toString(t.encoding,0,E),yk+=I):(I=`\n`,yk+=String.fromCharCode(0)),I&&typeof(v=(I.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(I=v,n=!0),I&&(I=I.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),I&&u&&(I=I.replace(u,\"\")),I&&(A||(t.hideEchoBack?t.mask&&Yn.writeSync(Xc,new Array(I.length+1).join(t.mask)):Yn.writeSync(Xc,I)),e+=I),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Yn.writeSync(Xc,`\n`),x(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":hH=t.keepWhitespace||t.keyIn?e:e.trim()}function Kgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function gH(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Rs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(cH),t.unshift(cH))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":u=u!=null?u+\"\":\"\",u&&n!==\"limitMessage\"&&(u=u.replace(/[\\r\\n]/g,\"\")),o[n]=u;break;case\"bufferSize\":!isNaN(u=parseInt(u,10))&&typeof u==\"number\"&&(o[n]=u);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":o[n]=!!u;break;case\"limit\":case\"trueValue\":case\"falseValue\":o[n]=Kgt(u,function(A){var p=typeof A;return p===\"string\"||p===\"number\"||p===\"function\"||A instanceof RegExp}).map(function(A){return typeof A==\"string\"?A.replace(/[\\r\\n]/g,\"\"):A});break;case\"print\":case\"phContent\":case\"preCheck\":o[n]=typeof u==\"function\"?u:void 0;break;case\"prompt\":case\"display\":o[n]=u??\"\";break}})),o},{})}function fH(t,e,r){return e.some(function(o){var a=typeof o;return a===\"string\"?r?t===o:t.toLowerCase()===o.toLowerCase():a===\"number\"?parseFloat(t)===o:a===\"function\"?o(t):o instanceof RegExp?o.test(t):!1})}function dH(t,e){var r=c0.normalize($d?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=c0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+gH(r)+\"(?=\\\\/|\\\\\\\\|$)\",$d?\"i\":\"\"),\"~\")}function vC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",o=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(u,A,p,h,E,I){var v;return A||typeof(v=e(E))!=\"string\"?p:v?(h||\"\")+v+(I||\"\"):\"\"}return t.replace(o,n).replace(a,n)}function Vde(t,e,r){var o,a=[],n=-1,u=0,A=\"\",p;function h(E,I){return I.length>3?(E.push(I[0]+\"...\"+I[I.length-1]),p=!0):I.length&&(E=E.concat(I)),E}return o=t.reduce(function(E,I){return E.concat((I+\"\").split(\"\"))},[]).reduce(function(E,I){var v,x;return e||(I=I.toLowerCase()),v=/^\\d$/.test(I)?1:/^[A-Z]$/.test(I)?2:/^[a-z]$/.test(I)?3:0,r&&v===0?A+=I:(x=I.charCodeAt(0),v&&v===n&&x===u+1?a.push(I):(E=h(E,a),a=[I],n=v),u=x),E},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Jde(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function zde(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!=\"string\")switch(t){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=e.hasOwnProperty(t)?typeof e[t]==\"boolean\"?e[t]?\"on\":\"off\":e[t]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":o=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=Vde(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A===\"string\"||A===\"number\"}),r=Jde(o,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=hH;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=c0.basename(r):t===\"cwdHome\"&&(r=dH(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(u){return u.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=Zd[Zd.length-n]||\"\")}return r}function Xde(t){var e=/^(.)-(.)$/.exec(t),r=\"\",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function pH(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,o=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(o),o=\"\"),o+=n;return o&&a.push(o),a}function Zde(t,e){return e.trueValue.length&&fH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&fH(t,e.falseValue,e.caseSensitive)?!1:t}function $de(t){var e,r,o,a,n,u,A;function p(E){return zde(E,t)}function h(E){t.display+=(/[^\\r\\n]$/.test(t.display)?`\n`:\"\")+E}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit=\"\",t.display=vC(t.display+\"\",p);;){if(e=AH(t),r=!1,o=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=Zd[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,AH(t),t.displayOnly=!1)):e&&e!==Zd[Zd.length-1]&&(Zd=[e])),!r&&t.cd&&e)switch(u=pH(e),u[0].toLowerCase()){case\"cd\":if(u[1])try{process.chdir(dH(u[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||fH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=vC(t.limitMessage,p))}h((o?o+`\n`:\"\")+vC(t.displaySrc+\"\",p))}return Zde(e,t)}Yr._DBG_set_useExt=function(t){Wde=t};Yr._DBG_set_checkOptions=function(t){uH=t};Yr._DBG_set_checkMethod=function(t){D2=t};Yr._DBG_clearHistory=function(){hH=\"\",Zd=[]};Yr.setDefaultOptions=function(t){return cH=Rs(!0,t),Rs(!0)};Yr.question=function(t,e){return $de(Rs(Rs(!0,e),{display:t}))};Yr.prompt=function(t){var e=Rs(!0,t);return e.display=e.prompt,$de(e)};Yr.keyIn=function(t,e){var r=Rs(Rs(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a===\"string\"||a===\"number\"}).map(function(o){return vC(o+\"\",Xde)}),r.limit=gH(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u===\"string\"||u===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=vC(r.display+\"\",function(o){return zde(o,r)}),Zde(AH(r),r)};Yr.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),Yr.question(t,Rs({hideEchoBack:!1,limit:/^[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])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};Yr.questionNewPassword=function(t,e){var r,o,a,n=Rs({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(x){return x===\"charlist\"?r.text:x===\"length\"?o+\"...\"+a:null}}),u,A,p,h,E,I,v;for(e=e||{},u=vC(e.charlist?e.charlist+\"\":\"$<!-~>\",Xde),(isNaN(o=parseInt(e.min,10))||typeof o!=\"number\")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+gH(u)+\"]{\"+o+\",\"+a+\"}$\"),r=Vde([u],n.caseSensitive,!0),r.text=Jde(r.values,r.suppressed),A=e.confirmMessage!=null?e.confirmMessage:\"Reinput a same one to confirm it: \",p=e.unmatchMessage!=null?e.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",t==null&&(t=\"Input new password: \"),E=n.limitMessage;!v;)n.limit=h,n.limitMessage=E,I=Yr.question(t,n),n.limit=[I,\"\"],n.limitMessage=p,v=Yr.question(A,n);return I};function eme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o==\"number\"}return Yr.question(t,Rs({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),o}Yr.questionInt=function(t,e){return eme(t,e,function(r){return parseInt(r,10)})};Yr.questionFloat=function(t,e){return eme(t,e,parseFloat)};Yr.questionPath=function(t,e){var r,o=\"\",a=Rs({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=dH(n,!0),o=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(I,v){var x=c0.resolve(I+=v+c0.sep);if(!Yn.existsSync(x))Yn.mkdirSync(x);else if(!Yn.statSync(x).isDirectory())throw new Error(\"Non directory already exists: \"+x);return I},\"\")}try{if(u=Yn.existsSync(n),r=u?Yn.realpathSync(n):c0.resolve(n),!e.hasOwnProperty(\"exists\")&&!u||typeof e.exists==\"boolean\"&&e.exists!==u)return o=(u?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(c0.dirname(r)),Yn.closeSync(Yn.openSync(r,\"w\"))),r=Yn.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Yn.statSync(r),e.isFile&&!A.isFile())return o=\"Not file: \"+r,!1;if(e.isDirectory&&!A.isDirectory())return o=\"Not directory: \"+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o=\"Size \"+A.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(o=p),!1}catch(E){return o=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?o:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),Yr.question(t,a),r};function tme(t,e){var r={},o={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=pH(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty(\"_\")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=pH(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}Yr.promptCL=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=tme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,Yr.prompt(r),o.args};Yr.promptLoop=function(t,e){for(var r=Rs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(Yr.prompt(r)););};Yr.promptCLLoop=function(t,e){var r=Rs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),o=tme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;Yr.prompt(r),!o.hRes;);};Yr.promptSimShell=function(t){return Yr.prompt(Rs({hideEchoBack:!1,history:!0},t,{prompt:function(){return $d?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function rme(t,e,r){var o;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),o=Yr.keyIn(t,Rs(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof o==\"boolean\"?o:\"\"}Yr.keyInYN=function(t,e){return rme(t,e)};Yr.keyInYNStrict=function(t,e){return rme(t,e,\"yn\")};Yr.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),Yr.keyIn(t,Rs({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};Yr.keyInSelect=function(t,e,r){var o=Rs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?t.length+\"\":p===\"firstItem\"?(t[0]+\"\").trim():p===\"lastItem\"?(t[t.length-1]+\"\").trim():null}}),a=\"\",n={},u=49,A=`\n`;if(!Array.isArray(t)||!t.length||t.length>35)throw\"`items` must be Array (max length: 35).\";return t.forEach(function(p,h){var E=String.fromCharCode(u);a+=E,n[E]=h,A+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,A+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),o.limit=a,A+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),A+=e),n[Yr.keyIn(A,o).toLowerCase()]};Yr.getRawInput=function(){return yk};function S2(t,e){var r;return e.length&&(r={},r[t]=e[0]),Yr.setDefaultOptions(r)[t]}Yr.setPrint=function(){return S2(\"print\",arguments)};Yr.setPrompt=function(){return S2(\"prompt\",arguments)};Yr.setEncoding=function(){return S2(\"encoding\",arguments)};Yr.setMask=function(){return S2(\"mask\",arguments)};Yr.setBufferSize=function(){return S2(\"bufferSize\",arguments)}});var mH=_((t7t,hl)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,P,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:P,get:function(z,X){return X===this.text.length||X>this.text.length?\"end_of_file\":this.text.substring(X,X+z)},put:function(z,X){return X===\"end_of_file\"?(this.text+=z,!0):X===\"past_end_of_file\"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z===\"end_of_stream\")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var Z=n(this.text[Math.floor(z/2)],0);return z%2===0?Z&255:Z/256>>>0},put_byte:function(z,X){var Z=X===\"end_of_stream\"?this.text.length:Math.floor(X/2);if(this.text.length<Z)return null;var ie=this.text.length===Z?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===Z?this.text+=u(ie):this.text=this.text.substring(0,Z)+u(ie)+this.text.substring(Z+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,P){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,P){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,P,y){var F=ve(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(X,Z){var ie=new Buffer(X);return F.readSync(z,ie,0,X,Z),ie.toString()},put:function(X,Z){var ie=Buffer.from(X);if(Z===\"end_of_file\")F.writeSync(z,ie);else{if(Z===\"past_end_of_file\")return null;F.writeSync(z,ie,0,ie.length,Z)}return!0},get_byte:function(X){return null},put_byte:function(X,Z){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,P){for(var y,F=nme();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,P){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,P){return w.indexOf(P)}:e=function(w,P){for(var y=w.length,F=0;F<y;F++)if(P===w[F])return F;return-1};var r=function(w,P){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=P(y,w[z]);return y}},o;Array.prototype.map?o=function(w,P){return w.map(P)}:o=function(w,P){for(var y=[],F=w.length,z=0;z<F;z++)y.push(P(w[z]));return y};var a;Array.prototype.filter?a=function(w,P){return w.filter(P)}:a=function(w,P){for(var y=[],F=w.length,z=0;z<F;z++)P(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,P){return w.codePointAt(P)}:n=function(w,P){return w.charCodeAt(P)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function I(w){var P=[],y=!1;return w.replace(h,function(F,z,X,Z,ie,Pe,Ne,ot,dt,jt,$t,bt,an,Qr,mr,br,Wr){switch(!0){case dt!==void 0:return P.push(parseInt(dt,16)),\"\";case jt!==void 0:return P.push(parseInt(jt,8)),\"\";case $t!==void 0:case bt!==void 0:case an!==void 0:case Qr!==void 0:case mr!==void 0:return P.push(n(F.substr(1),0)),\"\";case Wr!==void 0:return P.push(n(Wr,0)),\"\";case br!==void 0:y=!0;default:return P.push(E[F]),\"\"}}),y?null:P}function v(w,P){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function(Z,ie){return u(parseInt(ie,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function(Z,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),X=w.charAt(F+1);if(z===P&&X===P)F++,y+=P;else if(z===\"\\\\\")if([\"a\",\"b\",\"f\",\"n\",\"r\",\"t\",\"v\",\"'\",'\"',\"\\\\\",\"a\",\"\\b\",\"\\f\",`\n`,\"\\r\",\"\t\",\"\\v\"].indexOf(X)!==-1)switch(F+=1,X){case\"a\":y+=\"a\";break;case\"b\":y+=\"\\b\";break;case\"f\":y+=\"\\f\";break;case\"n\":y+=`\n`;break;case\"r\":y+=\"\\r\";break;case\"t\":y+=\"\t\";break;case\"v\":y+=\"\\v\";break;case\"'\":y+=\"'\";break;case'\"':y+='\"';break;case\"\\\\\":y+=\"\\\\\";break}else return null;else y+=z}return y}function x(w){for(var P=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":P+=\"\\\\'\";break;case\"\\\\\":P+=\"\\\\\\\\\";break;case\"\\b\":P+=\"\\\\b\";break;case\"\\f\":P+=\"\\\\f\";break;case`\n`:P+=\"\\\\n\";break;case\"\\r\":P+=\"\\\\r\";break;case\"\t\":P+=\"\\\\t\";break;case\"\\v\":P+=\"\\\\v\";break;default:P+=w.charAt(y);break}return P}function C(w){var P=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(P,16);case\"0b\":return parseInt(P,2);case\"0o\":return parseInt(P,8);case\"0'\":return I(P)[0];default:return parseFloat(w)}}var R={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function L(w,P){return w.get_flag(\"char_conversion\").id===\"on\"?P.replace(/./g,function(y){return w.get_char_conversion(y)}):P}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var P,y=0,F=0,z=0,X=[],Z=!1;if(w){var ie=this.tokens[w-1];y=ie.len,P=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else P=this.text;if(/^\\s*$/.test(P))return null;for(;P!==\"\";){var Pe=[],Ne=!1;if(/^\\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\\n/,\"\"),Z=!0;continue}for(var ot in R)if(R.hasOwnProperty(ot)){var dt=R[ot].exec(P);dt&&Pe.push({value:dt[0],name:ot,matches:dt})}if(!Pe.length)return this.set_last_tokens([{value:P,matches:[],name:\"lexical\",line:F,start:z}]);var ie=r(Pe,function(Qr,mr){return Qr.value.length>=mr.value.length?Qr:mr});switch(ie.start=z,ie.line=F,P=P.replace(ie.value,\"\"),z+=ie.value.length,y+=ie.value.length,ie.name){case\"atom\":ie.raw=ie.value,ie.value.charAt(0)===\"'\"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),\"'\"),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\"));break;case\"number\":ie.float=ie.value.substring(0,2)!==\"0x\"&&ie.value.match(/[.eE]/)!==null&&ie.value!==\"0'.\",ie.value=C(ie.value),ie.blank=Ne;break;case\"string\":var jt=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),jt),ie.value===null&&(ie.name=\"lexical\",ie.value=\"unknown escape sequence\");break;case\"whitespace\":var $t=X[X.length-1];$t&&($t.space=!0),Ne=!0;continue;case\"r_bracket\":X.length>0&&X[X.length-1].name===\"l_bracket\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"{}\",ie.raw=\"{}\",ie.space=!1);break;case\"r_brace\":X.length>0&&X[X.length-1].name===\"l_brace\"&&(ie=X.pop(),ie.name=\"atom\",ie.value=\"[]\",ie.raw=\"[]\",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var bt=this.set_last_tokens(X);return bt.length===0?null:bt};function J(w,P,y,F,z){if(!P[y])return{type:A,value:b.error.syntax(P[y-1],\"expression expected\",!0)};var X;if(F===\"0\"){var Z=P[y];switch(Z.name){case\"number\":return{type:p,len:y+1,value:new b.type.Num(Z.value,Z.float)};case\"variable\":return{type:p,len:y+1,value:new b.type.Var(Z.value)};case\"string\":var ie;switch(w.get_flag(\"double_quotes\").id){case\"atom\":ie=new H(Z.value,[]);break;case\"codes\":ie=new H(\"[]\",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(\".\",[new b.type.Num(n(Z.value,Pe),!1),ie]);break;case\"chars\":ie=new H(\"[]\",[]);for(var Pe=Z.value.length-1;Pe>=0;Pe--)ie=new H(\".\",[new b.type.Term(Z.value.charAt(Pe),[]),ie]);break}return{type:p,len:y+1,value:ie};case\"l_paren\":var bt=J(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name===\"r_paren\"?(bt.len++,bt):{type:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],\") or operator expected\",!P[bt.len])};case\"l_bracket\":var bt=J(w,P,y+1,w.__get_max_priority(),!0);return bt.type!==p?bt:P[bt.len]&&P[bt.len].name===\"r_bracket\"?(bt.len++,bt.value=new H(\"{}\",[bt.value]),bt):{type:A,derived:!0,value:b.error.syntax(P[bt.len]?P[bt.len]:P[bt.len-1],\"} or operator expected\",!P[bt.len])}}var Ne=te(w,P,y,z);return Ne.type===p||Ne.derived||(Ne=ae(w,P,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:b.error.syntax(P[y],\"unexpected token\")}}var ot=w.__get_max_priority(),dt=w.__get_next_priority(F),jt=y;if(P[y].name===\"atom\"&&P[y+1]&&(P[y].space||P[y+1].name!==\"l_paren\")){var Z=P[y++],$t=w.__lookup_operator_classes(F,Z.value);if($t&&$t.indexOf(\"fy\")>-1){var bt=J(w,P,y,F,z);if(bt.type!==A)return Z.value===\"-\"&&!Z.space&&b.type.is_number(bt.value)?{value:new b.type.Num(-bt.value.value,bt.value.is_float),len:bt.len,type:p}:{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}else if($t&&$t.indexOf(\"fx\")>-1){var bt=J(w,P,y,dt,z);if(bt.type!==A)return{value:new b.type.Term(Z.value,[bt.value]),len:bt.len,type:p};X=bt}}y=jt;var bt=J(w,P,y,dt,z);if(bt.type===p){y=bt.len;var Z=P[y];if(P[y]&&(P[y].name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)||P[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var an=dt,Qr=F,$t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"xf\")>-1)return{value:new b.type.Term(Z.value,[bt.value]),len:++bt.len,type:p};if($t.indexOf(\"xfx\")>-1){var mr=J(w,P,y+1,an,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if($t.indexOf(\"xfy\")>-1){var mr=J(w,P,y+1,Qr,z);return mr.type===p?{value:new b.type.Term(Z.value,[bt.value,mr.value]),len:mr.len,type:p}:(mr.derived=!0,mr)}else if(bt.type!==A)for(;;){y=bt.len;var Z=P[y];if(Z&&Z.name===\"atom\"&&w.__lookup_operator_classes(F,Z.value)){var $t=w.__lookup_operator_classes(F,Z.value);if($t.indexOf(\"yf\")>-1)bt={value:new b.type.Term(Z.value,[bt.value]),len:++y,type:p};else if($t.indexOf(\"yfx\")>-1){var mr=J(w,P,++y,an,z);if(mr.type===A)return mr.derived=!0,mr;y=mr.len,bt={value:new b.type.Term(Z.value,[bt.value,mr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:b.error.syntax(P[bt.len-1],\"operator expected\")};return bt}return bt}function te(w,P,y,F){if(!P[y]||P[y].name===\"atom\"&&P[y].raw===\".\"&&!F&&(P[y].space||!P[y+1]||P[y+1].name!==\"l_paren\"))return{type:A,derived:!1,value:b.error.syntax(P[y-1],\"unfounded token\")};var z=P[y],X=[];if(P[y].name===\"atom\"&&P[y].raw!==\",\"){if(y++,P[y-1].space)return{type:p,len:y,value:new b.type.Term(z.value,X)};if(P[y]&&P[y].name===\"l_paren\"){if(P[y+1]&&P[y+1].name===\"r_paren\")return{type:A,derived:!0,value:b.error.syntax(P[y+1],\"argument expected\")};var Z=J(w,P,++y,\"999\",!0);if(Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],\"argument expected\",!P[y])};for(X.push(Z.value),y=Z.len;P[y]&&P[y].name===\"atom\"&&P[y].value===\",\";){if(Z=J(w,P,y+1,\"999\",!0),Z.type===A)return Z.derived?Z:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};X.push(Z.value),y=Z.len}if(P[y]&&P[y].name===\"r_paren\")y++;else return{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],\", or ) expected\",!P[y])}}return{type:p,len:y,value:new b.type.Term(z.value,X)}}return{type:A,derived:!1,value:b.error.syntax(P[y],\"term expected\")}}function ae(w,P,y){if(!P[y])return{type:A,derived:!1,value:b.error.syntax(P[y-1],\"[ expected\")};if(P[y]&&P[y].name===\"l_brace\"){var F=J(w,P,++y,\"999\",!0),z=[F.value],X=void 0;if(F.type===A)return P[y]&&P[y].name===\"r_brace\"?{type:p,len:y+1,value:new b.type.Term(\"[]\",[])}:{type:A,derived:!0,value:b.error.syntax(P[y],\"] expected\")};for(y=F.len;P[y]&&P[y].name===\"atom\"&&P[y].value===\",\";){if(F=J(w,P,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};z.push(F.value),y=F.len}var Z=!1;if(P[y]&&P[y].name===\"bar\"){if(Z=!0,F=J(w,P,y+1,\"999\",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:b.error.syntax(P[y+1]?P[y+1]:P[y],\"argument expected\",!P[y+1])};X=F.value,y=F.len}return P[y]&&P[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:b.error.syntax(P[y]?P[y]:P[y-1],Z?\"] expected\":\", or | or ] expected\",!P[y])}}return{type:A,derived:!1,value:b.error.syntax(P[y],\"list expected\")}}function fe(w,P,y){var F=P[y].line,z=J(w,P,y,w.__get_max_priority(),!1),X=null,Z;if(z.type!==A)if(y=z.len,P[y]&&P[y].name===\"atom\"&&P[y].raw===\".\")if(y++,b.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(X=new b.type.Rule(z.value.args[0],we(z.value.args[1])),Z={value:X,len:y,type:p}):z.value.indicator===\"-->/2\"?(X=he(new b.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=we(X.body),Z={value:X,len:y,type:b.type.is_rule(X)?p:A}):(X=new b.type.Rule(z.value,null),Z={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&w.throw_warning(b.warning.singleton(ie,X.head.indicator,F))}return Z}else return{type:A,value:b.error.syntax(P[y],\"callable expected\")};else return{type:A,value:b.error.syntax(P[y]?P[y]:P[y-1],\". or operator expected\")};return z}function ce(w,P,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(P);var Z=0,ie=F.get_tokens(Z);do{if(ie===null||!ie[Z])break;var Pe=fe(w,ie,Z);if(Pe.type===A)return new H(\"throw\",[Pe.value]);if(Pe.value.body===null&&Pe.value.head.indicator===\"?-/1\"){var Ne=new Je(w.session);Ne.add_goal(Pe.value.head.args[0]),Ne.answer(function(dt){b.type.is_error(dt)?w.throw_warning(dt.args[0]):(dt===!1||dt===null)&&w.throw_warning(b.warning.failed_goal(Pe.value.head.args[0],Pe.len))}),Z=Pe.len;var ot=!0}else if(Pe.value.body===null&&Pe.value.head.indicator===\":-/1\"){var ot=w.run_directive(Pe.value.head.args[0]);Z=Pe.len,Pe.value.head.args[0].indicator===\"char_conversion/2\"&&(ie=F.get_tokens(Z),Z=0)}else{X=Pe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(jt){return jt.dynamic}),z[X]=!0);var ot=w.add_rule(Pe.value,y);Z=Pe.len}if(!ot)return ot}while(!0);return!0}function me(w,P){var y=new U(w);y.new_text(P);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=J(w,z,0,w.__get_max_priority(),!1);if(X.type!==A){var Z=X.len,ie=Z;if(z[Z]&&z[Z].name===\"atom\"&&z[Z].raw===\".\")w.add_goal(we(X.value));else{var Pe=z[Z];return new H(\"throw\",[b.error.syntax(Pe||z[Z-1],\". or operator expected\",!Pe)])}F=X.len+1}else return new H(\"throw\",[X.value])}while(!0);return!0}function he(w,P){w=w.rename(P);var y=P.next_free_variable(),F=Be(w.body,y,P);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new H(w.head.id,w.head.args),w)}function Be(w,P,y){var F;if(b.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:P,error:!1};if(b.type.is_term(w)&&w.indicator===\",/2\"){var z=Be(w.args[0],P,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new H(\",\",[z.value,X.value]),variable:X.variable,error:!1}}else{if(b.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:P,error:!1};if(b.type.is_empty_list(w))return{value:new H(\"true\",[]),variable:P,error:!1};if(b.type.is_list(w)){F=y.next_free_variable();for(var Z=w,ie;Z.indicator===\"./2\";)ie=Z,Z=Z.args[1];return b.type.is_variable(Z)?{value:b.error.instantiation(\"DCG\"),variable:P,error:!0}:b.type.is_empty_list(Z)?(ie.args[1]=F,{value:new H(\"=\",[P,w]),variable:F,error:!1}):{value:b.error.type(\"list\",w,\"DCG\"),variable:P,error:!0}}else return b.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([P,F]),w=new H(w.id,w.args),{value:w,variable:F,error:!1}):{value:b.error.type(\"callable\",w,\"DCG\"),variable:P,error:!0}}}function we(w){return b.type.is_variable(w)?new H(\"call\",[w]):b.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new H(w.id,[we(w.args[0]),we(w.args[1])]):w}function g(w,P){for(var y=P||new b.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new b.type.Term(\".\",[w[F],y]);return y}function Ee(w,P){for(var y=w.length-1;y>=0;y--)w[y]===P&&w.splice(y,1)}function Se(w){for(var P={},y=[],F=0;F<w.length;F++)w[F]in P||(y.push(w[F]),P[w[F]]=!0);return y}function le(w,P,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(P);break}}}function ne(w){return function(P,y,F){var z=F.args[0],X=F.args.slice(1,w);if(b.type.is_variable(z))P.throw_error(b.error.instantiation(P.level));else if(!b.type.is_callable(z))P.throw_error(b.error.type(\"callable\",z,P.level));else{var Z=new H(z.id,z.args.concat(X));P.prepend([new xe(y.goal.replace(Z),y.substitution,y)])}}}function ee(w){for(var P=w.length-1;P>=0;P--)if(w.charAt(P)===\"/\")return new H(\"/\",[new H(w.substring(0,P)),new Fe(parseInt(w.substring(P+1)),!1)])}function Ie(w){this.id=w}function Fe(w,P){this.is_float=P!==void 0?P:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var At=0;function H(w,P,y){this.ref=y||++At,this.id=w,this.args=P||[],this.indicator=w+\"/\"+this.args.length}var at=0;function Re(w,P,y,F,z,X){this.id=at++,this.stream=w,this.mode=P,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:\"eof_code\",this.position=this.mode===\"append\"?\"end_of_stream\":0,this.output=this.mode===\"write\"||this.mode===\"append\",this.input=this.mode===\"read\"}function ke(w){w=w||{},this.links=w}function xe(w,P,y){P=P||new ke,y=y||null,this.goal=w,this.substitution=P,this.parent=y}function He(w,P,y){this.head=w,this.body=P,this.dynamic=y||!1}function Te(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new Je(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Re(typeof hl<\"u\"&&hl.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof hl<\"u\"&&hl.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(P){return P.substitution},this.format_error=function(P){return P.goal},this.flag={bounded:b.flag.bounded.value,max_integer:b.flag.max_integer.value,min_integer:b.flag.min_integer.value,integer_rounding_function:b.flag.integer_rounding_function.value,char_conversion:b.flag.char_conversion.value,debug:b.flag.debug.value,max_arity:b.flag.max_arity.value,unknown:b.flag.unknown.value,double_quotes:b.flag.double_quotes.value,occurs_check:b.flag.occurs_check.value,dialect:b.flag.dialect.value,version_data:b.flag.version_data.value,nodejs:b.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function Je(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function qe(w,P,y){this.id=w,this.rules=P,this.exports=y,b.module[w]=this}qe.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},Ie.prototype.unify=function(w,P){if(P&&e(w.variables(),this.id)!==-1&&!b.type.is_variable(w))return null;var y={};return y[this.id]=w,new ke(y)},Fe.prototype.unify=function(w,P){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new ke:null},H.prototype.unify=function(w,P){if(b.type.is_term(w)&&this.indicator===w.indicator){for(var y=new ke,F=0;F<this.args.length;F++){var z=b.unify(this.args[F].apply(y),w.args[F].apply(y),P);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Re.prototype.unify=function(w,P){return b.type.is_stream(w)&&this.id===w.id?new ke:null},Ie.prototype.toString=function(w){return this.id},Fe.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},H.prototype.toString=function(w,P,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,P=P===void 0?1200:P,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&b.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[X]+(z!==0?z:\"\")}switch(this.indicator){case\"[]/0\":case\"{}/0\":case\"!/0\":return this.id;case\"{}/1\":return\"{\"+this.args[0].toString(w)+\"}\";case\"./2\":for(var Z=\"[\"+this.args[0].toString(w),ie=this.args[1];ie.indicator===\"./2\";)Z+=\", \"+ie.args[0].toString(w),ie=ie.args[1];return ie.indicator!==\"[]/0\"&&(Z+=\"|\"+ie.toString(w)),Z+=\"]\",Z;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var Pe=this.id,Ne=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Ne===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(Pe)&&Pe!==\"{}\"&&Pe!==\"[]\"&&(Pe=\"'\"+x(Pe)+\"'\"),Pe+(this.args.length?\"(\"+o(this.args,function($t){return $t.toString(w)}).join(\", \")+\")\":\"\");var ot=Ne.priority>P.priority||Ne.priority===P.priority&&(Ne.class===\"xfy\"&&this.indicator!==P.indicator||Ne.class===\"yfx\"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Ne.class===\"yfx\"&&y===\"right\"||this.indicator===P.indicator&&Ne.class===\"xfy\"&&y===\"left\");Ne.indicator=this.indicator;var dt=ot?\"(\":\"\",jt=ot?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Ne.class)!==-1?dt+Pe+\" \"+this.args[0].toString(w,Ne)+jt:[\"yf\",\"xf\"].indexOf(Ne.class)!==-1?dt+this.args[0].toString(w,Ne)+\" \"+Pe+jt:dt+this.args[0].toString(w,Ne,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Ne,\"right\")+jt}},Re.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},ke.prototype.toString=function(w){var P=\"{\";for(var y in this.links)!this.links.hasOwnProperty(y)||(P!==\"{\"&&(P+=\", \"),P+=y+\"/\"+this.links[y].toString(w));return P+=\"}\",P},xe.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},He.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},Te.prototype.toString=function(w){for(var P=\"\",y=0;y<this.modules.length;y++)P+=\":- use_module(library(\"+this.modules[y]+`)).\n`;P+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)P+=this.rules[key][y].toString(w),P+=`\n`;return P},Ie.prototype.clone=function(){return new Ie(this.id)},Fe.prototype.clone=function(){return new Fe(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(w){return w.clone()}))},Re.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},ke.prototype.clone=function(){var w={};for(var P in this.links)!this.links.hasOwnProperty(P)||(w[P]=this.links[P].clone());return new ke(w)},xe.prototype.clone=function(){return new xe(this.goal.clone(),this.substitution.clone(),this.parent)},He.prototype.clone=function(){return new He(this.head.clone(),this.body!==null?this.body.clone():null)},Ie.prototype.equals=function(w){return b.type.is_variable(w)&&this.id===w.id},Fe.prototype.equals=function(w){return b.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},H.prototype.equals=function(w){if(!b.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var P=0;P<this.args.length;P++)if(!this.args[P].equals(w.args[P]))return!1;return!0},Re.prototype.equals=function(w){return b.type.is_stream(w)&&this.id===w.id},ke.prototype.equals=function(w){var P;if(!b.type.is_substitution(w))return!1;for(P in this.links)if(!!this.links.hasOwnProperty(P)&&(!w.links[P]||!this.links[P].equals(w.links[P])))return!1;for(P in w.links)if(!!w.links.hasOwnProperty(P)&&!this.links[P])return!1;return!0},xe.prototype.equals=function(w){return b.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},He.prototype.equals=function(w){return b.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},Ie.prototype.rename=function(w){return w.get_free_variable(this)},Fe.prototype.rename=function(w){return this},H.prototype.rename=function(w){return new H(this.id,o(this.args,function(P){return P.rename(w)}))},Re.prototype.rename=function(w){return this},He.prototype.rename=function(w){return new He(this.head.rename(w),this.body!==null?this.body.rename(w):null)},Ie.prototype.variables=function(){return[this.id]},Fe.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(w){return w.variables()}))},Re.prototype.variables=function(){return[]},He.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},Ie.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Fe.prototype.apply=function(w){return this},H.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var P=[],y=this;y.indicator===\"./2\";)P.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=P.length-1;z>=0;z--)F=new H(\".\",[P[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(w)}),this.ref)},Re.prototype.apply=function(w){return this},He.prototype.apply=function(w){return new He(this.head.apply(w),this.body!==null?this.body.apply(w):null)},ke.prototype.apply=function(w){var P,y={};for(P in this.links)!this.links.hasOwnProperty(P)||(y[P]=this.links[P].apply(w));return new ke(y)},H.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},H.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new H(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new H(\",\",[w,this.args[1]]):w},H.prototype.search=function(w){if(b.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var P=0;P<this.args.length;P++)if(b.type.is_term(this.args[P])&&this.args[P].search(w))return!0;return!1},Te.prototype.get_current_input=function(){return this.current_input},Je.prototype.get_current_input=function(){return this.session.get_current_input()},Te.prototype.get_current_output=function(){return this.current_output},Je.prototype.get_current_output=function(){return this.session.get_current_output()},Te.prototype.set_current_input=function(w){this.current_input=w},Je.prototype.set_current_input=function(w){return this.session.set_current_input(w)},Te.prototype.set_current_output=function(w){this.current_input=w},Je.prototype.set_current_output=function(w){return this.session.set_current_output(w)},Te.prototype.get_stream_by_alias=function(w){return this.streams[w]},Je.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},Te.prototype.file_system_open=function(w,P,y){return this.file_system.open(w,P,y)},Je.prototype.file_system_open=function(w,P,y){return this.session.file_system_open(w,P,y)},Te.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},Je.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},Te.prototype.parse=function(w){return this.thread.parse(w)},Je.prototype.parse=function(w){var P=new U(this);P.new_text(w);var y=P.get_tokens();if(y===null)return!1;var F=J(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},Te.prototype.get_flag=function(w){return this.flag[w]},Je.prototype.get_flag=function(w){return this.session.get_flag(w)},Te.prototype.add_rule=function(w,P){return P=P||{},P.from=P.from?P.from:\"$tau-js\",this.src_predicates[w.head.indicator]=P.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},Je.prototype.add_rule=function(w,P){return this.session.add_rule(w,P)},Te.prototype.run_directive=function(w){this.thread.run_directive(w)},Je.prototype.run_directive=function(w){return b.type.is_directive(w)?(b.directive[w.indicator](this,w),!0):!1},Te.prototype.__get_max_priority=function(){return\"1200\"},Je.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},Te.prototype.__get_next_priority=function(w){var P=0;w=parseInt(w);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>P&&F<w&&(P=F)}return P.toString()},Je.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},Te.prototype.__lookup_operator_classes=function(w,P){return this.__operators.hasOwnProperty(w)&&this.__operators[w][P]instanceof Array&&this.__operators[w][P]||!1},Je.prototype.__lookup_operator_classes=function(w,P){return this.session.__lookup_operator_classes(w,P)},Te.prototype.lookup_operator=function(w,P){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(P===0||this.__operators[y][w][F].length===P+1)return{priority:y,class:this.__operators[y][w][F]}}return null},Je.prototype.lookup_operator=function(w,P){return this.session.lookup_operator(w,P)},Te.prototype.throw_warning=function(w){this.thread.throw_warning(w)},Je.prototype.throw_warning=function(w){this.warnings.push(w)},Te.prototype.get_warnings=function(){return this.thread.get_warnings()},Je.prototype.get_warnings=function(){return this.warnings},Te.prototype.add_goal=function(w,P){this.thread.add_goal(w,P)},Je.prototype.add_goal=function(w,P,y){y=y||null,P===!0&&(this.points=[]);for(var F=w.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new Ie(F[X]);this.points.push(new xe(w,new ke(z),y))},Te.prototype.consult=function(w,P){return this.thread.consult(w,P)},Je.prototype.consult=function(w,P){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),X=z.getAttribute(\"type\");X!==null&&X.replace(/ /g,\"\").toLowerCase()===\"text/prolog\"&&(y=z.text)}}else if(w.nodeName)switch(w.nodeName.toLowerCase()){case\"input\":case\"textarea\":y=w.value;break;default:y=w.innerHTML;break}else return!1;return this.warnings=[],ce(this,y,P)},Te.prototype.query=function(w){return this.thread.query(w)},Je.prototype.query=function(w){return this.points=[],this.debugger_points=[],me(this,w)},Te.prototype.head_point=function(){return this.thread.head_point()},Je.prototype.head_point=function(){return this.points[this.points.length-1]},Te.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},Je.prototype.get_free_variable=function(w){var P=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(P=this.head_point().substitution.domain());e(P,b.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new Ie(b.format_variable(this.session.rename));this.session.renamed_variables[w.id]=b.format_variable(this.session.rename)}return new Ie(this.session.renamed_variables[w.id])},Te.prototype.next_free_variable=function(){return this.thread.next_free_variable()},Je.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,b.format_variable(this.session.rename))!==-1;)this.session.rename++;return new Ie(b.format_variable(this.session.rename))},Te.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},Je.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},Te.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},Je.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},Te.prototype.prepend=function(w){return this.thread.prepend(w)},Je.prototype.prepend=function(w){for(var P=w.length-1;P>=0;P--)this.points.push(w[P])},Te.prototype.success=function(w,P){return this.thread.success(w,P)},Je.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new xe(w.goal.replace(null),w.substitution,y)])},Te.prototype.throw_error=function(w){return this.thread.throw_error(w)},Je.prototype.throw_error=function(w){this.prepend([new xe(new H(\"throw\",[w]),new ke,null,null)])},Te.prototype.step_rule=function(w,P){return this.thread.step_rule(w,P)},Je.prototype.step_rule=function(w,P){var y=P.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var X=b.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return b.module[F[z]].rules[y]}return null},Te.prototype.step=function(){return this.thread.step()},Je.prototype.step=function(){if(this.points.length!==0){var w=!1,P=this.points.pop();if(this.debugger&&this.debugger_states.push(P),b.type.is_term(P.goal)){var y=P.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=P;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?\"top_level/0\":X.parent.goal.select().indicator,b.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&b.type.is_builtin(y))this.__call_indicator=y.indicator,w=b.predicate[y.indicator](this,P,y);else{var Z=this.step_rule(F,y);if(Z===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(b.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if(Z instanceof Function)w=Z(this,P,y);else{for(var ie in Z)if(!!Z.hasOwnProperty(ie)){var Pe=Z[ie];this.session.renamed_variables={},Pe=Pe.rename(this);var Ne=this.get_flag(\"occurs_check\").indicator===\"true/0\",ot=new xe,dt=b.unify(y,Pe.head,Ne);dt!==null&&(ot.goal=P.goal.replace(Pe.body),ot.goal!==null&&(ot.goal=ot.goal.apply(dt)),ot.substitution=P.substitution.apply(dt),ot.parent=P,z.push(ot))}this.prepend(z)}}}}else b.type.is_variable(P.goal)?this.throw_error(b.error.instantiation(this.level)):this.throw_error(b.error.type(\"callable\",P.goal,this.level));return w}},Te.prototype.answer=function(w){return this.thread.answer(w)},Je.prototype.answer=function(w){w=w||function(P){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},Te.prototype.answers=function(w,P,y){return this.thread.answers(w,P,y)},Je.prototype.answers=function(w,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,P-1,y)},1):y&&y()})},Te.prototype.again=function(w){return this.thread.again(w)},Je.prototype.again=function(w){for(var P,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!b.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):b.type.is_error(this.head_point().goal)?(P=this.session.format_error(this.points.pop()),this.points=[],z(P)):(this.debugger&&this.debugger_states.push(this.head_point()),P=this.session.format_success(this.points.pop()),z(P))}},Te.prototype.unfold=function(w){if(w.body===null)return!1;var P=w.head,y=w.body,F=y.select(),z=new Je(this),X=[];z.add_goal(F),z.step();for(var Z=z.points.length-1;Z>=0;Z--){var ie=z.points[Z],Pe=P.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new He(Pe,Ne))}var ot=this.rules[P.indicator],dt=e(ot,w);return X.length>0&&dt!==-1?(ot.splice.apply(ot,[dt,1].concat(X)),!0):!1},Je.prototype.unfold=function(w){return this.session.unfold(w)},Ie.prototype.interpret=function(w){return b.error.instantiation(w.level)},Fe.prototype.interpret=function(w){return this},H.prototype.interpret=function(w){return b.type.is_unitary_list(this)?this.args[0].interpret(w):b.operate(w,this)},Ie.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Fe.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},H.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var P=0;P<this.args.length;P++){var y=b.compare(this.args[P],w.args[P]);if(y!==0)return y}return 0},ke.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},ke.prototype.filter=function(w){var P={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(P[y]=F)}return new ke(P)},ke.prototype.exclude=function(w){var P={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(w,y)===-1&&(P[y]=this.links[y]);return new ke(P)},ke.prototype.add=function(w,P){this.links[w]=P},ke.prototype.domain=function(w){var P=w===!0?function(z){return z}:function(z){return new Ie(z)},y=[];for(var F in this.links)y.push(P(F));return y},Ie.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Fe.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},H.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+o(this.args,function(w){return w.compile()})+\"])\"},He.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},Te.prototype.compile=function(){var w,P=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());w+=y.join(),w+=\"]\",P.push(w)}return\"{\"+P.join()+\"};\"},Ie.prototype.toJavaScript=function(){},Fe.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(b.type.is_list(this)){for(var w=[],P=this,y;P.indicator===\"./2\";){if(y=P.args[0].toJavaScript(),y===void 0)return;w.push(y),P=P.args[1]}if(P.indicator===\"[]/0\")return w}},He.prototype.singleton_variables=function(){var w=this.head.variables(),P={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)P[w[F]]===void 0&&(P[w[F]]=0),P[w[F]]++;for(var z in P)z!==\"_\"&&P[z]===1&&y.push(z);return y};var b={__env:typeof hl<\"u\"&&hl.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:J},utils:{str_indicator:ee,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return At}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new H(w?\"true\":\"false\",[])},number:function(w){return new Fe(w,w%1!==0)},string:function(w){return new H(w,[])},list:function(w){for(var P=[],y,F=0;F<w.length;F++){if(y=b.fromJavaScript.apply(w[F]),y===void 0)return;P.push(y)}return g(P)},variable:function(w){return new Ie(\"_\")},any:function(w){}},apply:function(w){for(var P in b.fromJavaScript.test)if(P!==\"any\"&&b.fromJavaScript.test[P](w))return b.fromJavaScript.conversion[P](w);return b.fromJavaScript.conversion.any(w)}},type:{Var:Ie,Num:Fe,Term:H,Rule:He,State:xe,Stream:Re,Module:qe,Thread:Je,Session:Te,Substitution:ke,order:[Ie,Fe,H,Re],compare:function(w,P){var y=e(b.type.order,w.constructor),F=e(b.type.order,P.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Fe){if(w.is_float&&P.is_float)return 0;if(w.is_float)return-1;if(P.is_float)return 1}return 0},is_substitution:function(w){return w instanceof ke},is_state:function(w){return w instanceof xe},is_rule:function(w){return w instanceof He},is_variable:function(w){return w instanceof Ie},is_stream:function(w){return w instanceof Re},is_anonymous_var:function(w){return w instanceof Ie&&w.id===\"_\"},is_callable:function(w){return w instanceof H},is_number:function(w){return w instanceof Fe},is_integer:function(w){return w instanceof Fe&&!w.is_float},is_float:function(w){return w instanceof Fe&&w.is_float},is_term:function(w){return w instanceof H},is_atom:function(w){return w instanceof H&&w.args.length===0},is_ground:function(w){if(w instanceof Ie)return!1;if(w instanceof H){for(var P=0;P<w.args.length;P++)if(!b.type.is_ground(w.args[P]))return!1}return!0},is_atomic:function(w){return w instanceof H&&w.args.length===0||w instanceof Fe},is_compound:function(w){return w instanceof H&&w.args.length>0},is_list:function(w){return w instanceof H&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof H&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof H&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof Ie||w instanceof H&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof H&&w.indicator===\"./2\";)w=w.args[1];return w instanceof H&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof H&&w.indicator===\"./2\"&&w.args[1]instanceof H&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof H&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Fe&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof H&&b.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof H&&b.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof H&&b.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof H&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof H&&w.indicator===\"//2\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&w.args[1]instanceof Fe&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof H&&w.args.length===0&&b.flag[w.id]!==void 0},is_value_flag:function(w,P){if(!b.type.is_flag(w))return!1;for(var y in b.flag[w.id].allowed)if(!!b.flag[w.id].allowed.hasOwnProperty(y)&&b.flag[w.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(w){return b.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return b.type.is_term(w)&&(w.indicator===\"alias/1\"&&b.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return b.type.is_integer(w)&&w.value>=0||b.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return b.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(b.type.is_variable(w.args[0])||b.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(b.type.is_variable(w.args[0])||b.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return b.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return b.type.is_term(w)&&(w.indicator===\"quoted/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return b.type.is_term(w)&&w.indicator===\"force/1\"&&b.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return b.type.is_flag(w)&&b.flag[w.id].changeable},is_module:function(w){return w instanceof H&&w.indicator===\"library/1\"&&w.args[0]instanceof H&&w.args[0].args.length===0&&b.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,P){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,P){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,P){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,P){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,P){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,P){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,P){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,P){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,P){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.atan2(w,P)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,P){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,P){return w>0?Math.log(w):b.error.evaluation(\"undefined\",P.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w+P}},\"-/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w-P}},\"*/2\":{type_args:null,type_result:null,fn:function(w,P,y){return w*P}},\"//2\":{type_args:null,type_result:!0,fn:function(w,P,y){return P?w/P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?parseInt(w/P):b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,P,y){return Math.pow(w,P)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.pow(w,P)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w<<P}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w>>P}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w&P}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w|P}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return w^P}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w%P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,P,y){return P?w-parseInt(w/P)*P:b.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.max(w,P)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,P,y){return Math.min(w,P)}}}},directive:{\"dynamic/1\":function(w,P){var y=P.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y,P.indicator));else if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],P.indicator));else if(!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],P.indicator));else{var F=P.args[0].args[0].id+\"/\"+P.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,P){var y=P.args[0];b.type.is_variable(y)?w.throw_error(b.error.instantiation(P.indicator)):!b.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(b.error.type(\"predicate_indicator\",y,P.indicator)):b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1])?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y.args[0])?b.type.is_integer(y.args[1])?w.session.multifile_predicates[P.args[0].args[0].id+\"/\"+P.args[0].args[1].value]=!0:w.throw_error(b.error.type(\"integer\",y.args[1],P.indicator)):w.throw_error(b.error.type(\"atom\",y.args[0],P.indicator))},\"set_prolog_flag/2\":function(w,P){var y=P.args[0],F=P.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_atom(y)?b.type.is_flag(y)?b.type.is_value_flag(y,F)?b.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(b.error.permission(\"modify\",\"flag\",y)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[y,F]),P.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",y,P.indicator)):w.throw_error(b.error.type(\"atom\",y,P.indicator))},\"use_module/1\":function(w,P){var y=P.args[0];if(b.type.is_variable(y))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_term(y))w.throw_error(b.error.type(\"term\",y,P.indicator));else if(b.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,P){var y=P.args[0],F=P.args[1];b.type.is_variable(y)||b.type.is_variable(F)?w.throw_error(b.error.instantiation(P.indicator)):b.type.is_character(y)?b.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(b.error.type(\"character\",F,P.indicator)):w.throw_error(b.error.type(\"character\",y,P.indicator))},\"op/3\":function(w,P){var y=P.args[0],F=P.args[1],z=P.args[2];if(b.type.is_variable(y)||b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(P.indicator));else if(!b.type.is_integer(y))w.throw_error(b.error.type(\"integer\",y,P.indicator));else if(!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,P.indicator));else if(!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,P.indicator));else if(y.value<0||y.value>1200)w.throw_error(b.error.domain(\"operator_priority\",y,P.indicator));else if(z.id===\",\")w.throw_error(b.error.permission(\"modify\",\"operator\",z,P.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(b.error.permission(\"modify\",\"operator\",z,P.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(b.error.domain(\"operator_specifier\",F,P.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var Z in w.session.__operators)if(!!w.session.__operators.hasOwnProperty(Z)){var ie=w.session.__operators[Z][z.id];ie&&(e(ie,\"fx\")!==-1&&(X.prefix={priority:Z,type:\"fx\"}),e(ie,\"fy\")!==-1&&(X.prefix={priority:Z,type:\"fy\"}),e(ie,\"xf\")!==-1&&(X.postfix={priority:Z,type:\"xf\"}),e(ie,\"yf\")!==-1&&(X.postfix={priority:Z,type:\"yf\"}),e(ie,\"xfx\")!==-1&&(X.infix={priority:Z,type:\"xfx\"}),e(ie,\"xfy\")!==-1&&(X.infix={priority:Z,type:\"xfy\"}),e(ie,\"yfx\")!==-1&&(X.infix={priority:Z,type:\"yfx\"}))}var Pe;switch(F.id){case\"fy\":case\"fx\":Pe=\"prefix\";break;case\"yf\":case\"xf\":Pe=\"postfix\";break;default:Pe=\"infix\";break}if(((X.prefix&&Pe===\"prefix\"||X.postfix&&Pe===\"postfix\"||X.infix&&Pe===\"infix\")&&X[Pe].type!==F.id||X.infix&&Pe===\"postfix\"||X.postfix&&Pe===\"infix\")&&y.value!==0)w.throw_error(b.error.permission(\"create\",\"operator\",z,P.indicator));else return X[Pe]&&(Ee(w.session.__operators[X[Pe].priority][z.id],F.id),w.session.__operators[X[Pe].priority][z.id].length===0&&delete w.session.__operators[X[Pe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,P,y){b.directive[\"op/3\"](w,y)&&w.success(P)},\"current_op/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=[];for(var ie in w.session.__operators)for(var Pe in w.session.__operators[ie])for(var Ne=0;Ne<w.session.__operators[ie][Pe].length;Ne++)Z.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[new Fe(ie,!1),F]),new H(\",\",[new H(\"=\",[new H(w.session.__operators[ie][Pe][Ne],[]),z]),new H(\"=\",[new H(Pe,[]),X])])])),P.substitution,P));w.prepend(Z)},\";/2\":function(w,P,y){if(b.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Ne){return Ne.substitution},w.session.format_error=function(Ne){return Ne.goal},w.points=[new xe(y.args[0].args[0],P.substitution,P)];var Z=function(Ne){w.points=F,w.session.format_success=z,w.session.format_error=X,Ne===!1?w.prepend([new xe(P.goal.replace(y.args[1]),P.substitution,P)]):b.type.is_error(Ne)?w.throw_error(Ne.args[0]):Ne===null?(w.prepend([P]),w.__calls.shift()(null)):w.prepend([new xe(P.goal.replace(y.args[0].args[1]).apply(Ne),P.substitution.apply(Ne),P)])};w.__calls.unshift(Z)}else{var ie=new xe(P.goal.replace(y.args[0]),P.substitution,P),Pe=new xe(P.goal.replace(y.args[1]),P.substitution,P);w.prepend([ie,Pe])}},\"!/0\":function(w,P,y){var F,z,X=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var Z=F.goal.select();if(Z&&Z.id===\"call\"&&Z.search(y)){F=z;break}}for(var ie=w.points.length-1;ie>=0;ie--){for(var Pe=w.points[ie],Ne=Pe.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(Pe)}w.points=X.reverse(),w.success(P)},\"\\\\+/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(w.level)):b.type.is_callable(F)?w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])]),new H(\"fail\",[])])),P.substitution,P),new xe(P.goal.replace(null),P.substitution,P)]):w.throw_error(b.error.type(\"callable\",F,w.level))},\"->/2\":function(w,P,y){var F=P.goal.replace(new H(\",\",[y.args[0],new H(\",\",[new H(\"!\"),y.args[1]])]));w.prepend([new xe(F,P.substitution,P)])},\"fail/0\":function(w,P,y){},\"false/0\":function(w,P,y){},\"true/0\":function(w,P,y){w.success(P)},\"call/1\":ne(1),\"call/2\":ne(2),\"call/3\":ne(3),\"call/4\":ne(4),\"call/5\":ne(5),\"call/6\":ne(6),\"call/7\":ne(7),\"call/8\":ne(8),\"once/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"call\",[F]),new H(\"!\",[])])),P.substitution,P)])},\"forall/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"\\\\+\",[new H(\",\",[new H(\"call\",[F]),new H(\"\\\\+\",[new H(\"call\",[z])])])])),P.substitution,P)])},\"repeat/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(null),P.substitution,P),P])},\"throw/1\":function(w,P,y){b.type.is_variable(y.args[0])?w.throw_error(b.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,P,y){var F=w.points;w.points=[],w.prepend([new xe(y.args[0],P.substitution,P)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(ie){return ie.substitution},w.session.format_error=function(ie){return ie.goal};var Z=function(ie){var Pe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,b.type.is_error(ie)){for(var Ne=[],ot=w.points.length-1;ot>=0;ot--){for(var $t=w.points[ot],dt=$t.parent;dt!==null&&dt!==P.parent;)dt=dt.parent;dt===null&&dt!==P.parent&&Ne.push($t)}w.points=Ne;var jt=w.get_flag(\"occurs_check\").indicator===\"true/0\",$t=new xe,bt=b.unify(ie.args[0],y.args[1],jt);bt!==null?($t.substitution=P.substitution.apply(bt),$t.goal=P.goal.replace(y.args[2]).apply(bt),$t.parent=P,w.prepend([$t])):w.throw_error(ie.args[0])}else if(ie!==!1){for(var an=ie===null?[]:[new xe(P.goal.apply(ie).replace(null),P.substitution.apply(ie),P)],Qr=[],ot=Pe.length-1;ot>=0;ot--){Qr.push(Pe[ot]);var mr=Pe[ot].goal!==null?Pe[ot].goal.select():null;if(b.type.is_term(mr)&&mr.indicator===\"!/0\")break}var br=o(Qr,function(Wr){return Wr.goal===null&&(Wr.goal=new H(\"true\",[])),Wr=new xe(P.goal.replace(new H(\"catch\",[Wr.goal,y.args[1],y.args[2]])),P.substitution.apply(Wr.substitution),Wr.parent),Wr.exclude=y.args[0].variables(),Wr}).reverse();w.prepend(br),w.prepend(an),ie===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift(Z)},\"=/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new xe,X=b.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=P.goal.apply(X).replace(null),z.substitution=P.substitution.apply(X),z.parent=P,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,P,y){var F=new xe,z=b.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=P.goal.apply(z).replace(null),F.substitution=P.substitution.apply(z),F.parent=P,w.prepend([F]))},\"\\\\=/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[0],y.args[1],F);z===null&&w.success(P)},\"subsumes_term/2\":function(w,P,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=b.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(P)},\"findall/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(z))w.throw_error(b.error.type(\"callable\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=w.next_free_variable(),ie=new H(\",\",[z,new H(\"=\",[Z,F])]),Pe=w.points,Ne=w.session.limit,ot=w.session.format_success;w.session.format_success=function($t){return $t.substitution},w.add_goal(ie,!0,P);var dt=[],jt=function($t){if($t!==!1&&$t!==null&&!b.type.is_error($t))w.__calls.unshift(jt),dt.push($t.links[Z.id]),w.session.limit=w.current_limit;else if(w.points=Pe,w.session.limit=Ne,w.session.format_success=ot,b.type.is_error($t))w.throw_error($t.args[0]);else if(w.current_limit>0){for(var bt=new H(\"[]\"),an=dt.length-1;an>=0;an--)bt=new H(\".\",[dt[an],bt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,bt])),P.substitution,P)])}};w.__calls.unshift(jt)}},\"bagof/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator===\"^/2\"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(jt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi<Qr.length;Pi++){br=Qr[Pi].answers;for(var Ls=new H(\"[]\"),so=br.length-1;so>=0;so--)Ls=new H(\".\",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Pi].variables]),new H(\"=\",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},\"setof/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(X))w.throw_error(b.error.type(\"callable\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else{var ie=w.next_free_variable(),Pe;X.indicator===\"^/2\"?(Pe=X.args[0].variables(),X=X.args[1]):Pe=[],Pe=Pe.concat(z.variables());for(var Ne=X.variables().filter(function(br){return e(Pe,br)===-1}),ot=new H(\"[]\"),dt=Ne.length-1;dt>=0;dt--)ot=new H(\".\",[new Ie(Ne[dt]),ot]);var jt=new H(\",\",[X,new H(\"=\",[ie,new H(\",\",[ot,z])])]),$t=w.points,bt=w.session.limit,an=w.session.format_success;w.session.format_success=function(br){return br.substitution},w.add_goal(jt,!0,P);var Qr=[],mr=function(br){if(br!==!1&&br!==null&&!b.type.is_error(br)){w.__calls.unshift(mr);var Wr=!1,Kn=br.links[ie.id].args[0],Ns=br.links[ie.id].args[1];for(var Ti in Qr)if(!!Qr.hasOwnProperty(Ti)){var ps=Qr[Ti];if(ps.variables.equals(Kn)){ps.answers.push(Ns),Wr=!0;break}}Wr||Qr.push({variables:Kn,answers:[Ns]}),w.session.limit=w.current_limit}else if(w.points=$t,w.session.limit=bt,w.session.format_success=an,b.type.is_error(br))w.throw_error(br.args[0]);else if(w.current_limit>0){for(var io=[],Pi=0;Pi<Qr.length;Pi++){br=Qr[Pi].answers.sort(b.compare);for(var Ls=new H(\"[]\"),so=br.length-1;so>=0;so--)Ls=new H(\".\",[br[so],Ls]);io.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[ot,Qr[Pi].variables]),new H(\"=\",[Z,Ls])])),P.substitution,P))}w.prepend(io)}};w.__calls.unshift(mr)}},\"functor/3\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2];if(b.type.is_variable(z)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(\"functor/3\"));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!b.type.is_variable(X)&&!b.type.is_atomic(X))w.throw_error(b.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(b.type.is_integer(X)&&b.type.is_integer(Z)&&Z.value!==0)w.throw_error(b.error.type(\"atom\",y.args[1],\"functor/3\"));else if(b.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],Pe=0;Pe<Z.value;Pe++)ie.push(w.next_free_variable());var Ne=b.type.is_integer(X)?X:new H(X.id,ie);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,Ne])),P.substitution,P)])}}else{var ot=b.type.is_integer(z)?z:new H(z.id,[]),dt=b.type.is_integer(z)?new Fe(0,!1):new Fe(z.args.length,!1),jt=new H(\",\",[new H(\"=\",[ot,X]),new H(\"=\",[dt,Z])]);w.prepend([new xe(P.goal.replace(jt),P.substitution,P)])}},\"arg/3\":function(w,P,y){if(b.type.is_variable(y.args[0])||b.type.is_variable(y.args[1]))w.throw_error(b.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!b.type.is_compound(y.args[1]))w.throw_error(b.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new H(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new xe(P.goal.replace(z),P.substitution,P)])}}},\"=../2\":function(w,P,y){var F;if(b.type.is_variable(y.args[0])&&(b.type.is_variable(y.args[1])||b.type.is_non_empty_list(y.args[1])&&b.type.is_variable(y.args[1].args[0])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_fully_list(y.args[1]))w.throw_error(b.error.type(\"list\",y.args[1],y.indicator));else if(b.type.is_variable(y.args[0])){if(!b.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)X.push(F.args[0]),F=F.args[1];b.type.is_variable(y.args[0])&&b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):X.length===0&&b.type.is_compound(y.args[1].args[0])?w.throw_error(b.error.type(\"atomic\",y.args[1].args[0],y.indicator)):X.length>0&&(b.type.is_compound(y.args[1].args[0])||b.type.is_number(y.args[1].args[0]))?w.throw_error(b.error.type(\"atom\",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new xe(P.goal.replace(new H(\"=\",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(y.args[1].args[0].id,X),y.args[0]])),P.substitution,P)])}}else{if(b.type.is_atomic(y.args[0]))F=new H(\".\",[y.args[0],new H(\"[]\")]);else{F=new H(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(\".\",[y.args[0].args[z],F]);F=new H(\".\",[new H(y.args[0].id),F])}w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P)])}},\"copy_term/2\":function(w,P,y){var F=y.args[0].rename(w);w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P.parent)])},\"term_variables/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(!b.type.is_fully_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else{var X=g(o(Se(F.variables()),function(Z){return new Ie(Z)}));w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"clause/2\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_callable(y.args[1]))w.throw_error(b.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(!!w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new H(\"true\"));var Z=new H(\",\",[new H(\"=\",[X.head,y.args[0]]),new H(\"=\",[X.body,y.args[1]])]);F.push(new xe(P.goal.replace(Z),P.substitution,P))}w.prepend(F)}else w.throw_error(b.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,P,y){var F=y.args[0];if(!b.type.is_variable(F)&&(!b.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(b.error.type(\"predicate_indicator\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[0])&&!b.type.is_atom(F.args[0]))w.throw_error(b.error.type(\"atom\",F.args[0],y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_variable(F.args[1])&&!b.type.is_integer(F.args[1]))w.throw_error(b.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(!!w.session.rules.hasOwnProperty(X)){var Z=X.lastIndexOf(\"/\"),ie=X.substr(0,Z),Pe=parseInt(X.substr(Z+1,X.length-(Z+1))),Ne=new H(\"/\",[new H(ie),new Fe(Pe,!1)]),ot=new H(\"=\",[Ne,F]);z.push(new xe(P.goal.replace(ot),P.substitution,P))}w.prepend(z)}},\"asserta/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new He(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=we(y.args[0].args[1])):(F=y.args[0],z=null),b.type.is_callable(F)?z!==null&&!b.type.is_callable(z)?w.throw_error(b.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new He(F,z,!0)),w.success(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(b.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_callable(y.args[0]))w.throw_error(b.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new H(\"true\")),typeof P.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],Z=0;Z<w.session.rules[F.indicator].length;Z++){w.session.renamed_variables={};var ie=w.session.rules[F.indicator][Z],Pe=ie.rename(w);Pe.body===null&&(Pe.body=new H(\"true\",[]));var Ne=w.get_flag(\"occurs_check\").indicator===\"true/0\",ot=b.unify(new H(\",\",[F,z]),new H(\",\",[Pe.head,Pe.body]),Ne);if(ot!==null){var dt=new xe(P.goal.replace(new H(\",\",[new H(\"retract\",[new H(\":-\",[F,z])]),new H(\",\",[new H(\"=\",[F,Pe.head]),new H(\"=\",[z,Pe.body])])])),P.substitution,P);dt.retract=ie,X.push(dt)}}w.prepend(X)}}else w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else le(w,P,F.indicator,P.retract)}},\"retractall/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_callable(F)?w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"retract\",[new b.type.Term(\":-\",[F,new Ie(\"_\")])]),new H(\"fail\",[])])),P.substitution,P),new xe(P.goal.replace(null),P.substitution,P)]):w.throw_error(b.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,P,y){if(b.type.is_variable(y.args[0])||b.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(b.type.is_variable(y.args[0].args[0])||b.type.is_variable(y.args[0].args[1])))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(b.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!b.type.is_atom(y.args[0].args[0]))w.throw_error(b.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!b.type.is_integer(y.args[0].args[1]))w.throw_error(b.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(b.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(b.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(P)):w.throw_error(b.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,P,y){if(b.type.is_variable(y.args[0]))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_atom(y.args[0]))w.throw_error(b.error.type(\"atom\",y.args[0],y.indicator));else if(!b.type.is_variable(y.args[1])&&!b.type.is_integer(y.args[1]))w.throw_error(b.error.type(\"integer\",y.args[1],y.indicator));else if(b.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Fe(y.args[0].id.length,!1);w.prepend([new xe(P.goal.replace(new H(\"=\",[F,y.args[1]])),P.substitution,P)])}},\"atom_concat/3\":function(w,P,y){var F,z,X=y.args[0],Z=y.args[1],ie=y.args[2];if(b.type.is_variable(ie)&&(b.type.is_variable(X)||b.type.is_variable(Z)))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_atom(Z))w.throw_error(b.error.type(\"atom\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_atom(ie))w.throw_error(b.error.type(\"atom\",ie,y.indicator));else{var Pe=b.type.is_variable(X),Ne=b.type.is_variable(Z);if(!Pe&&!Ne)z=new H(\"=\",[ie,new H(X.id+Z.id)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]);else if(Pe&&!Ne)F=ie.id.substr(0,ie.id.length-Z.id.length),F+Z.id===ie.id&&(z=new H(\"=\",[X,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else if(Ne&&!Pe)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H(\"=\",[Z,new H(F)]),w.prepend([new xe(P.goal.replace(z),P.substitution,P)]));else{for(var ot=[],dt=0;dt<=ie.id.length;dt++){var jt=new H(ie.id.substr(0,dt)),$t=new H(ie.id.substr(dt));z=new H(\",\",[new H(\"=\",[jt,X]),new H(\"=\",[$t,Z])]),ot.push(new xe(P.goal.replace(z),P.substitution,P))}w.prepend(ot)}}},\"sub_atom/5\":function(w,P,y){var F,z=y.args[0],X=y.args[1],Z=y.args[2],ie=y.args[3],Pe=y.args[4];if(b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(!b.type.is_variable(Z)&&!b.type.is_integer(Z))w.throw_error(b.error.type(\"integer\",Z,y.indicator));else if(!b.type.is_variable(ie)&&!b.type.is_integer(ie))w.throw_error(b.error.type(\"integer\",ie,y.indicator));else if(b.type.is_integer(X)&&X.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",X,y.indicator));else if(b.type.is_integer(Z)&&Z.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",Z,y.indicator));else if(b.type.is_integer(ie)&&ie.value<0)w.throw_error(b.error.domain(\"not_less_than_zero\",ie,y.indicator));else{var Ne=[],ot=[],dt=[];if(b.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(b.type.is_variable(Z))for(F=0;F<=z.id.length;F++)ot.push(F);else ot.push(Z.value);if(b.type.is_variable(ie))for(F=0;F<=z.id.length;F++)dt.push(F);else dt.push(ie.value);var jt=[];for(var $t in Ne)if(!!Ne.hasOwnProperty($t)){F=Ne[$t];for(var bt in ot)if(!!ot.hasOwnProperty(bt)){var an=ot[bt],Qr=z.id.length-F-an;if(e(dt,Qr)!==-1&&F+an+Qr===z.id.length){var mr=z.id.substr(F,an);if(z.id===z.id.substr(0,F)+mr+z.id.substr(F+an,Qr)){var br=new H(\"=\",[new H(mr),Pe]),Wr=new H(\"=\",[X,new Fe(F)]),Kn=new H(\"=\",[Z,new Fe(an)]),Ns=new H(\"=\",[ie,new Fe(Qr)]),Ti=new H(\",\",[new H(\",\",[new H(\",\",[Wr,Kn]),Ns]),br]);jt.push(new xe(P.goal.replace(Ti),P.substitution,P))}}}}w.prepend(jt)}},\"atom_chars/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new H(F.id.charAt(Z)),X]);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"atom_codes/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_variable(F)){for(var ie=z,Pe=b.type.is_variable(F),Ne=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0])&&Pe){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.representation(\"character_code\",y.indicator));return}ie=ie.args[1]}b.type.is_variable(ie)&&Pe?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)?w.throw_error(b.error.type(\"list\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H(\"[]\"),Z=F.id.length-1;Z>=0;Z--)X=new H(\".\",[new Fe(n(F.id,Z),!1),X]);w.prepend([new xe(P.goal.replace(new H(\"=\",[z,X])),P.substitution,P)])}},\"char_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(b.type.is_variable(F)&&b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_character(F))w.throw_error(b.error.type(\"character\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character_code(z))w.throw_error(b.error.representation(\"character_code\",y.indicator));else if(b.type.is_variable(z)){var X=new Fe(n(F.id,0),!1);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,z])),P.substitution,P)])}else{var Z=new H(u(z.value));w.prepend([new xe(P.goal.replace(new H(\"=\",[Z,F])),P.substitution,P)])}},\"number_chars/2\":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new H(F.charAt(jt)),dt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,dt])),P.substitution,P)])}}},\"number_codes/2\":function(w,P,y){var F,z=y.args[0],X=y.args[1];if(b.type.is_variable(z)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_number(z))w.throw_error(b.error.type(\"number\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else{var Z=b.type.is_variable(z);if(!b.type.is_variable(X)){var ie=X,Pe=!0;for(F=\"\";ie.indicator===\"./2\";){if(b.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(b.type.is_variable(ie.args[0]))Pe=!1;else if(!b.type.is_variable(ie.args[0])){w.throw_error(b.error.type(\"character_code\",ie.args[0],y.indicator));return}ie=ie.args[1]}if(Pe=Pe&&b.type.is_empty_list(ie),!b.type.is_empty_list(ie)&&!b.type.is_variable(ie)){w.throw_error(b.error.type(\"list\",X,y.indicator));return}if(!Pe&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else if(Pe)if(b.type.is_variable(ie)&&Z){w.throw_error(b.error.instantiation(y.indicator));return}else{var Ne=w.parse(F),ot=Ne.value;!b.type.is_number(ot)||Ne.tokens[Ne.tokens.length-1].space?w.throw_error(b.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,ot])),P.substitution,P)]);return}}if(!Z){F=z.toString();for(var dt=new H(\"[]\"),jt=F.length-1;jt>=0;jt--)dt=new H(\".\",[new Fe(n(F,jt),!1),dt]);w.prepend([new xe(P.goal.replace(new H(\"=\",[X,dt])),P.substitution,P)])}}},\"upcase_atom/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new H(F.id.toUpperCase(),[])])),P.substitution,P)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?!b.type.is_variable(z)&&!b.type.is_atom(z)?w.throw_error(b.error.type(\"atom\",z,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new H(F.id.toLowerCase(),[])])),P.substitution,P)]):w.throw_error(b.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"atomic_list_concat\",[F,new H(\"\",[]),z])),P.substitution,P)])},\"atomic_list_concat/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(z)||b.type.is_variable(F)&&b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_list(F))w.throw_error(b.error.type(\"list\",F,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_atom(X))w.throw_error(b.error.type(\"atom\",X,y.indicator));else if(b.type.is_variable(X)){for(var ie=\"\",Pe=F;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(!b.type.is_atom(Pe.args[0])&&!b.type.is_number(Pe.args[0])){w.throw_error(b.error.type(\"atomic\",Pe.args[0],y.indicator));return}ie!==\"\"&&(ie+=z.id),b.type.is_atom(Pe.args[0])?ie+=Pe.args[0].id:ie+=\"\"+Pe.args[0].value,Pe=Pe.args[1]}ie=new H(ie,[]),b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_term(Pe)||Pe.indicator!==\"[]/0\"?w.throw_error(b.error.type(\"list\",F,y.indicator)):w.prepend([new xe(P.goal.replace(new H(\"=\",[ie,X])),P.substitution,P)])}else{var Z=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));w.prepend([new xe(P.goal.replace(new H(\"=\",[Z,F])),P.substitution,P)])}},\"@=</2\":function(w,P,y){b.compare(y.args[0],y.args[1])<=0&&w.success(P)},\"==/2\":function(w,P,y){b.compare(y.args[0],y.args[1])===0&&w.success(P)},\"\\\\==/2\":function(w,P,y){b.compare(y.args[0],y.args[1])!==0&&w.success(P)},\"@</2\":function(w,P,y){b.compare(y.args[0],y.args[1])<0&&w.success(P)},\"@>/2\":function(w,P,y){b.compare(y.args[0],y.args[1])>0&&w.success(P)},\"@>=/2\":function(w,P,y){b.compare(y.args[0],y.args[1])>=0&&w.success(P)},\"compare/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(b.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(b.type.domain(\"order\",F,y.indicator));else{var Z=b.compare(z,X);Z=Z===0?\"=\":Z===-1?\"<\":\">\",w.prepend([new xe(P.goal.replace(new H(\"=\",[F,new H(Z,[])])),P.substitution,P)])}},\"is/2\":function(w,P,y){var F=y.args[1].interpret(w);b.type.is_number(F)?w.prepend([new xe(P.goal.replace(new H(\"=\",[y.args[0],F],w.level)),P.substitution,P)]):w.throw_error(F)},\"between/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_integer(F))w.throw_error(b.error.type(\"integer\",F,y.indicator));else if(!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",z,y.indicator));else if(!b.type.is_variable(X)&&!b.type.is_integer(X))w.throw_error(b.error.type(\"integer\",X,y.indicator));else if(b.type.is_variable(X)){var Z=[new xe(P.goal.replace(new H(\"=\",[X,F])),P.substitution,P)];F.value<z.value&&Z.push(new xe(P.goal.replace(new H(\"between\",[new Fe(F.value+1,!1),z,X])),P.substitution,P)),w.prepend(Z)}else F.value<=X.value&&z.value>=X.value&&w.success(P)},\"succ/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)&&b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_integer(F)?w.throw_error(b.error.type(\"integer\",F,y.indicator)):!b.type.is_variable(z)&&!b.type.is_integer(z)?w.throw_error(b.error.type(\"integer\",z,y.indicator)):!b.type.is_variable(F)&&F.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",F,y.indicator)):!b.type.is_variable(z)&&z.value<0?w.throw_error(b.error.domain(\"not_less_than_zero\",z,y.indicator)):(b.type.is_variable(z)||z.value>0)&&(b.type.is_variable(F)?w.prepend([new xe(P.goal.replace(new H(\"=\",[F,new Fe(z.value-1,!1)])),P.substitution,P)]):w.prepend([new xe(P.goal.replace(new H(\"=\",[z,new Fe(F.value+1,!1)])),P.substitution,P)]))},\"=:=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F===0&&w.success(P)},\"=\\\\=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F!==0&&w.success(P)},\"</2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<0&&w.success(P)},\"=</2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F<=0&&w.success(P)},\">/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>0&&w.success(P)},\">=/2\":function(w,P,y){var F=b.arithmetic_compare(w,y.args[0],y.args[1]);b.type.is_term(F)?w.throw_error(F):F>=0&&w.success(P)},\"var/1\":function(w,P,y){b.type.is_variable(y.args[0])&&w.success(P)},\"atom/1\":function(w,P,y){b.type.is_atom(y.args[0])&&w.success(P)},\"atomic/1\":function(w,P,y){b.type.is_atomic(y.args[0])&&w.success(P)},\"compound/1\":function(w,P,y){b.type.is_compound(y.args[0])&&w.success(P)},\"integer/1\":function(w,P,y){b.type.is_integer(y.args[0])&&w.success(P)},\"float/1\":function(w,P,y){b.type.is_float(y.args[0])&&w.success(P)},\"number/1\":function(w,P,y){b.type.is_number(y.args[0])&&w.success(P)},\"nonvar/1\":function(w,P,y){b.type.is_variable(y.args[0])||w.success(P)},\"ground/1\":function(w,P,y){y.variables().length===0&&w.success(P)},\"acyclic_term/1\":function(w,P,y){for(var F=P.substitution.apply(P.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(P.substitution.links[z[X]]!==void 0&&!P.substitution.links[z[X]].equals(F.links[z[X]]))return;w.success(P)},\"callable/1\":function(w,P,y){b.type.is_callable(y.args[0])&&w.success(P)},\"is_list/1\":function(w,P,y){for(var F=y.args[0];b.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];b.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(P)},\"current_input/1\":function(w,P,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(P.goal.replace(new H(\"=\",[F,w.get_current_input()])),P.substitution,P)]))},\"current_output/1\":function(w,P,y){var F=y.args[0];!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):(b.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new xe(P.goal.replace(new H(\"=\",[F,w.get_current_output()])),P.substitution,P)]))},\"set_input/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.output===!0?w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(P)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):b.type.is_stream(z)?z.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(P)):w.throw_error(b.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];w.prepend([new xe(P.goal.replace(new H(\"open\",[F,z,X,new H(\"[]\",[])])),P.substitution,P)])},\"open/4\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=y.args[3];if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_atom(z))w.throw_error(b.error.type(\"atom\",z,y.indicator));else if(!b.type.is_list(Z))w.throw_error(b.error.type(\"list\",Z,y.indicator));else if(!b.type.is_variable(X))w.throw_error(b.error.type(\"variable\",X,y.indicator));else if(!b.type.is_atom(F)&&!b.type.is_streamable(F))w.throw_error(b.error.domain(\"source_sink\",F,y.indicator));else if(!b.type.is_io_mode(z))w.throw_error(b.error.domain(\"io_mode\",z,y.indicator));else{for(var ie={},Pe=Z,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_stream_option(Ne)){w.throw_error(b.error.domain(\"stream_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id,Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",Z,y.indicator));return}else{var ot=ie.alias;if(ot&&w.get_stream_by_alias(ot)){w.throw_error(b.error.permission(\"open\",\"source_sink\",new H(\"alias\",[new H(ot,[])]),y.indicator));return}ie.type||(ie.type=\"text\");var dt;if(b.type.is_atom(F)?dt=w.file_system_open(F.id,ie.type,z.id):dt=F.stream(ie.type,z.id),dt===!1){w.throw_error(b.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(dt===null){w.throw_error(b.error.existence(\"source_sink\",F,y.indicator));return}var jt=new Re(dt,z.id,ie.alias,ie.type,ie.reposition===\"true\",ie.eof_action);ot?w.session.streams[ot]=jt:w.session.streams[jt.id]=jt,w.prepend([new xe(P.goal.replace(new H(\"=\",[X,jt])),P.substitution,P)])}}},\"close/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\"close\",[F,new H(\"[]\",[])])),P.substitution,P)])},\"close/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(z))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(z))w.throw_error(b.error.type(\"list\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else{for(var Z={},ie=z,Pe;b.type.is_term(ie)&&ie.indicator===\"./2\";){if(Pe=ie.args[0],b.type.is_variable(Pe)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_close_option(Pe)){w.throw_error(b.error.domain(\"close_option\",Pe,y.indicator));return}Z[Pe.id]=Pe.args[0].id===\"true\",ie=ie.args[1]}if(ie.indicator!==\"[]/0\"){b.type.is_variable(ie)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",z,y.indicator));return}else{if(X===w.session.standard_input||X===w.session.standard_output){w.success(P);return}else X===w.session.current_input?w.session.current_input=w.session.standard_input:X===w.session.current_output&&(w.session.current_output=w.session.current_output);X.alias!==null?delete w.session.streams[X.alias]:delete w.session.streams[X.id],X.output&&X.stream.flush();var Ne=X.stream.close();X.stream=null,(Z.force===!0||Ne===!0)&&w.success(P)}}},\"flush_output/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"flush_output\",[new Ie(\"S\")])])),P.substitution,P)])},\"flush_output/1\":function(w,P,y){var F=y.args[0],z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(z)||z.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(b.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(P))},\"stream_property/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_variable(F)&&(!b.type.is_stream(X)||X.stream===null))w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_stream_property(z))w.throw_error(b.error.domain(\"stream_property\",z,y.indicator));else{var Z=[],ie=[];if(!b.type.is_variable(F))Z.push(X);else for(var Pe in w.session.streams)Z.push(w.session.streams[Pe]);for(var Ne=0;Ne<Z.length;Ne++){var ot=[];Z[Ne].filename&&ot.push(new H(\"file_name\",[new H(Z[Ne].file_name,[])])),ot.push(new H(\"mode\",[new H(Z[Ne].mode,[])])),ot.push(new H(Z[Ne].input?\"input\":\"output\",[])),Z[Ne].alias&&ot.push(new H(\"alias\",[new H(Z[Ne].alias,[])])),ot.push(new H(\"position\",[typeof Z[Ne].position==\"number\"?new Fe(Z[Ne].position,!1):new H(Z[Ne].position,[])])),ot.push(new H(\"end_of_stream\",[new H(Z[Ne].position===\"end_of_stream\"?\"at\":Z[Ne].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),ot.push(new H(\"eof_action\",[new H(Z[Ne].eof_action,[])])),ot.push(new H(\"reposition\",[new H(Z[Ne].reposition?\"true\":\"false\",[])])),ot.push(new H(\"type\",[new H(Z[Ne].type,[])]));for(var dt=0;dt<ot.length;dt++)ie.push(new xe(P.goal.replace(new H(\",\",[new H(\"=\",[b.type.is_variable(F)?F:X,Z[Ne]]),new H(\"=\",[z,ot[dt]])])),P.substitution,P))}w.prepend(ie)}},\"at_end_of_stream/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\",\",[new H(\"stream_property\",[new Ie(\"S\"),new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])])),P.substitution,P)])},\"at_end_of_stream/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"stream_property\",[F,new H(\"end_of_stream\",[new Ie(\"E\")])]),new H(\",\",[new H(\"!\",[]),new H(\";\",[new H(\"=\",[new Ie(\"E\"),new H(\"at\",[])]),new H(\"=\",[new Ie(\"E\"),new H(\"past\",[])])])])])),P.substitution,P)])},\"set_stream_position/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):b.type.is_stream_position(z)?X.reposition===!1?w.throw_error(b.error.permission(\"reposition\",\"stream\",F,y.indicator)):(b.type.is_integer(z)?X.position=z.value:X.position=z.id,w.success(P)):w.throw_error(b.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Z,[]),z])),P.substitution,P)])}},\"get_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0),X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"peek_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_character(z))w.throw_error(b.error.type(\"in_character\",z,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}w.prepend([new xe(P.goal.replace(new H(\"=\",[new H(Z,[]),z])),P.substitution,P)])}},\"peek_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_integer(z))w.throw_error(b.error.type(\"integer\",char,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=-1,X.position=\"past_end_of_stream\";else{if(Z=X.stream.get(1,X.position),Z===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}Z=n(Z,0)}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"put_char/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_char/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_character(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_code\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_code/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(z)?b.type.is_character_code(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.representation(\"character_code\",y.indicator)):w.throw_error(b.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,P,y){w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_char\",[new Ie(\"S\"),new H(`\n`,[])])])),P.substitution,P)])},\"nl/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\"put_char\",[F,new H(`\n`,[])])),P.substitution,P)])},\"get_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"get_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"get_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else{if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}X.position++}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"peek_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"peek_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"peek_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_variable(z)&&!b.type.is_byte(z))w.throw_error(b.error.type(\"in_byte\",char,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(X)||X.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(b.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var Z;if(X.position===\"end_of_stream\")Z=\"end_of_file\",X.position=\"past_end_of_stream\";else if(Z=X.stream.get_byte(X.position),Z===null){w.throw_error(b.error.representation(\"byte\",y.indicator));return}w.prepend([new xe(P.goal.replace(new H(\"=\",[new Fe(Z,!1),z])),P.substitution,P)])}},\"put_byte/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"put_byte\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"put_byte/2\":function(w,P,y){var F=y.args[0],z=y.args[1],X=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_byte(z)?!b.type.is_variable(F)&&!b.type.is_stream(F)&&!b.type.is_atom(F)?w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator)):!b.type.is_stream(X)||X.stream===null?w.throw_error(b.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"text\"?w.throw_error(b.error.permission(\"output\",\"text_stream\",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(P)):w.throw_error(b.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,new H(\"[]\",[])])])),P.substitution,P)])},\"read/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"read_term\",[F,z,new H(\"[]\",[])])),P.substitution,P)])},\"read_term/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_input\",[new Ie(\"S\")]),new H(\"read_term\",[new Ie(\"S\"),F,z])])),P.substitution,P)])},\"read_term/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.output)w.throw_error(b.error.permission(\"input\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Pe=X,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_read_option(Ne)){w.throw_error(b.error.domain(\"read_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0],Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{for(var ot,dt,jt,$t=\"\",bt=[],an=null;an===null||an.name!==\"atom\"||an.value!==\".\"||jt.type===A&&b.flatten_error(new H(\"throw\",[jt.value])).found===\"token_not_found\";){if(ot=Z.stream.get(1,Z.position),ot===null){w.throw_error(b.error.representation(\"character\",y.indicator));return}if(ot===\"end_of_file\"||ot===\"past_end_of_file\"){jt?w.throw_error(b.error.syntax(bt[jt.len-1],\". or expression expected\",!1)):w.throw_error(b.error.syntax(null,\"token not found\",!0));return}Z.position++,$t+=ot,dt=new U(w),dt.new_text($t),bt=dt.get_tokens(),an=bt!==null&&bt.length>0?bt[bt.length-1]:null,bt!==null&&(jt=J(w,bt,0,w.__get_max_priority(),!1))}if(jt.type===p&&jt.len===bt.length-1&&an.value===\".\"){jt=jt.value.rename(w);var Qr=new H(\"=\",[z,jt]);if(ie.variables){var mr=g(o(Se(jt.variables()),function(br){return new Ie(br)}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variables,mr])])}if(ie.variable_names){var mr=g(o(Se(jt.variables()),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.variable_names,mr])])}if(ie.singletons){var mr=g(o(new He(jt,null).singleton_variables(),function(Wr){var Kn;for(Kn in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(Kn)&&w.session.renamed_variables[Kn]===Wr)break;return new H(\"=\",[new H(Kn,[]),new Ie(Wr)])}));Qr=new H(\",\",[Qr,new H(\"=\",[ie.singletons,mr])])}w.prepend([new xe(P.goal.replace(Qr),P.substitution,P)])}else jt.type===p?w.throw_error(b.error.syntax(bt[jt.len],\"unexpected token\",!1)):w.throw_error(jt.value)}}},\"write/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"write/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"false\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"writeq/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"writeq\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"writeq/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"false\")]),new H(\".\",[new H(\"numbervars\",[new H(\"true\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"write_canonical/1\":function(w,P,y){var F=y.args[0];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_canonical\",[new Ie(\"S\"),F])])),P.substitution,P)])},\"write_canonical/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\"write_term\",[F,z,new H(\".\",[new H(\"quoted\",[new H(\"true\",[])]),new H(\".\",[new H(\"ignore_ops\",[new H(\"true\")]),new H(\".\",[new H(\"numbervars\",[new H(\"false\")]),new H(\"[]\",[])])])])])),P.substitution,P)])},\"write_term/2\":function(w,P,y){var F=y.args[0],z=y.args[1];w.prepend([new xe(P.goal.replace(new H(\",\",[new H(\"current_output\",[new Ie(\"S\")]),new H(\"write_term\",[new Ie(\"S\"),F,z])])),P.substitution,P)])},\"write_term/3\":function(w,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],Z=b.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(b.type.is_variable(F)||b.type.is_variable(X))w.throw_error(b.error.instantiation(y.indicator));else if(!b.type.is_list(X))w.throw_error(b.error.type(\"list\",X,y.indicator));else if(!b.type.is_stream(F)&&!b.type.is_atom(F))w.throw_error(b.error.domain(\"stream_or_alias\",F,y.indicator));else if(!b.type.is_stream(Z)||Z.stream===null)w.throw_error(b.error.existence(\"stream\",F,y.indicator));else if(Z.input)w.throw_error(b.error.permission(\"output\",\"stream\",F,y.indicator));else if(Z.type===\"binary\")w.throw_error(b.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if(Z.position===\"past_end_of_stream\"&&Z.eof_action===\"error\")w.throw_error(b.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var ie={},Pe=X,Ne;b.type.is_term(Pe)&&Pe.indicator===\"./2\";){if(Ne=Pe.args[0],b.type.is_variable(Ne)){w.throw_error(b.error.instantiation(y.indicator));return}else if(!b.type.is_write_option(Ne)){w.throw_error(b.error.domain(\"write_option\",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id===\"true\",Pe=Pe.args[1]}if(Pe.indicator!==\"[]/0\"){b.type.is_variable(Pe)?w.throw_error(b.error.instantiation(y.indicator)):w.throw_error(b.error.type(\"list\",X,y.indicator));return}else{ie.session=w.session;var ot=z.toString(ie);Z.stream.put(ot,Z.position),typeof Z.position==\"number\"&&(Z.position+=ot.length),w.success(P)}}},\"halt/0\":function(w,P,y){w.points=[]},\"halt/1\":function(w,P,y){var F=y.args[0];b.type.is_variable(F)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_integer(F)?w.points=[]:w.throw_error(b.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,P,y){var F=y.args[0],z=y.args[1];if(!b.type.is_variable(F)&&!b.type.is_atom(F))w.throw_error(b.error.type(\"atom\",F,y.indicator));else if(!b.type.is_variable(F)&&!b.type.is_flag(F))w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator));else{var X=[];for(var Z in b.flag)if(!!b.flag.hasOwnProperty(Z)){var ie=new H(\",\",[new H(\"=\",[new H(Z),F]),new H(\"=\",[w.get_flag(Z),z])]);X.push(new xe(P.goal.replace(ie),P.substitution,P))}w.prepend(X)}},\"set_prolog_flag/2\":function(w,P,y){var F=y.args[0],z=y.args[1];b.type.is_variable(F)||b.type.is_variable(z)?w.throw_error(b.error.instantiation(y.indicator)):b.type.is_atom(F)?b.type.is_flag(F)?b.type.is_value_flag(F,z)?b.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(P)):w.throw_error(b.error.permission(\"modify\",\"flag\",F)):w.throw_error(b.error.domain(\"flag_value\",new H(\"+\",[F,z]),y.indicator)):w.throw_error(b.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(b.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new H(\"true\"),new H(\"false\")],value:new H(\"true\"),changeable:!1},max_integer:{allowed:[new Fe(Number.MAX_SAFE_INTEGER)],value:new Fe(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Fe(Number.MIN_SAFE_INTEGER)],value:new Fe(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H(\"down\"),new H(\"toward_zero\")],value:new H(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"on\"),changeable:!0},debug:{allowed:[new H(\"on\"),new H(\"off\")],value:new H(\"off\"),changeable:!0},max_arity:{allowed:[new H(\"unbounded\")],value:new H(\"unbounded\"),changeable:!1},unknown:{allowed:[new H(\"error\"),new H(\"fail\"),new H(\"warning\")],value:new H(\"error\"),changeable:!0},double_quotes:{allowed:[new H(\"chars\"),new H(\"codes\"),new H(\"atom\")],value:new H(\"codes\"),changeable:!0},occurs_check:{allowed:[new H(\"false\"),new H(\"true\")],value:new H(\"false\"),changeable:!0},dialect:{allowed:[new H(\"tau\")],value:new H(\"tau\"),changeable:!1},version_data:{allowed:[new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)])],value:new H(\"tau\",[new Fe(t.major,!1),new Fe(t.minor,!1),new Fe(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H(\"yes\"),new H(\"no\")],value:new H(typeof hl<\"u\"&&hl.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,P,y){y=y===void 0?!1:y;for(var F=[{left:w,right:P}],z={};F.length!==0;){var X=F.pop();if(w=X.left,P=X.right,b.type.is_term(w)&&b.type.is_term(P)){if(w.indicator!==P.indicator)return null;for(var Z=0;Z<w.args.length;Z++)F.push({left:w.args[Z],right:P.args[Z]})}else if(b.type.is_number(w)&&b.type.is_number(P)){if(w.value!==P.value||w.is_float!==P.is_float)return null}else if(b.type.is_variable(w)){if(b.type.is_variable(P)&&w.id===P.id)continue;if(y===!0&&P.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var ie=new ke;ie.add(w.id,P);for(var Z=0;Z<F.length;Z++)F[Z].left=F[Z].left.apply(ie),F[Z].right=F[Z].right.apply(ie);for(var Z in z)z[Z]=z[Z].apply(ie);z[w.id]=P}}else if(b.type.is_variable(P))F.push({left:P,right:w});else if(w.unify!==void 0){if(!w.unify(P))return null}else return null}return new ke(z)},compare:function(w,P){var y=b.type.compare(w,P);return y!==0?y:w.compare(P)},arithmetic_compare:function(w,P,y){var F=P.interpret(w);if(b.type.is_number(F)){var z=y.interpret(w);return b.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,P){if(b.type.is_operator(P)){for(var y=b.type.is_operator(P),F=[],z,X=!1,Z=0;Z<P.args.length;Z++){if(z=P.args[Z].interpret(w),b.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return b.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(w),z=b.arithmetic.evaluation[P.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,b.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?b.error.evaluation(\"overflow\",w.__call_indicator):X===!1&&w.get_flag(\"bounded\").id===\"true\"&&(z>w.get_flag(\"max_integer\").value||z<w.get_flag(\"min_integer\").value)?b.error.evaluation(\"int_overflow\",w.__call_indicator):new Fe(z,X)}else return b.error.type(\"evaluable\",P.indicator,w.__call_indicator)},error:{existence:function(w,P,y){return typeof P==\"string\"&&(P=ee(P)),new H(\"error\",[new H(\"existence_error\",[new H(w),P]),ee(y)])},type:function(w,P,y){return new H(\"error\",[new H(\"type_error\",[new H(w),P]),ee(y)])},instantiation:function(w){return new H(\"error\",[new H(\"instantiation_error\"),ee(w)])},domain:function(w,P,y){return new H(\"error\",[new H(\"domain_error\",[new H(w),P]),ee(y)])},representation:function(w,P){return new H(\"error\",[new H(\"representation_error\",[new H(w)]),ee(P)])},permission:function(w,P,y,F){return new H(\"error\",[new H(\"permission_error\",[new H(w),new H(P),y]),ee(F)])},evaluation:function(w,P){return new H(\"error\",[new H(\"evaluation_error\",[new H(w)]),ee(P)])},syntax:function(w,P,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new H(\"token_not_found\"):new H(\"found\",[new H(w.value.toString())]),X=new H(\".\",[new H(\"line\",[new Fe(w.line+1)]),new H(\".\",[new H(\"column\",[new Fe(F+1)]),new H(\".\",[z,new H(\"[]\",[])])])]);return new H(\"error\",[new H(\"syntax_error\",[new H(P)]),X])},syntax_by_predicate:function(w,P){return new H(\"error\",[new H(\"syntax_error\",[new H(w)]),ee(P)])}},warning:{singleton:function(w,P,y){for(var F=new H(\"[]\"),z=w.length-1;z>=0;z--)F=new H(\".\",[new Ie(w[z]),F]);return new H(\"warning\",[new H(\"singleton_variables\",[F,ee(P)]),new H(\".\",[new H(\"line\",[new Fe(y,!1)]),new H(\"[]\")])])},failed_goal:function(w,P){return new H(\"warning\",[new H(\"failed_goal\",[w]),new H(\".\",[new H(\"line\",[new Fe(P,!1)]),new H(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,P,F){P instanceof Te&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,b.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,X=\"\";if(b.type.is_substitution(w)){var Z=w.domain(!0);w=w.filter(function(Ne,ot){return!b.type.is_variable(ot)||Z.indexOf(ot.id)!==-1&&Ne!==ot.id})}for(var ie in w.links)!w.links.hasOwnProperty(ie)||(z++,X!==\"\"&&(X+=\", \"),X+=ie.toString(F)+\" = \"+w.links[ie].toString(F));var Pe=typeof P>\"u\"||P.points.length>0?\" ;\":\".\";return z===0?\"true\"+Pe:X+Pe},flatten_error:function(w){if(!b.type.is_error(w))return null;w=w.args[0];var P={};return P.type=w.args[0].id,P.thrown=P.type===\"syntax_error\"?null:w.args[1].id,P.expected=null,P.found=null,P.representation=null,P.existence=null,P.existence_type=null,P.line=null,P.column=null,P.permission_operation=null,P.permission_type=null,P.evaluation_type=null,P.type===\"type_error\"||P.type===\"domain_error\"?(P.expected=w.args[0].args[0].id,P.found=w.args[0].args[1].toString()):P.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(P.expected=w.args[0].args[0].id,P.found=w.args[1].args[1].args[1].args[0],P.found=P.found.id===\"token_not_found\"?P.found.id:P.found.args[0].id,P.line=w.args[1].args[0].args[0].value,P.column=w.args[1].args[1].args[0].args[0].value):P.thrown=w.args[1].id:P.type===\"permission_error\"?(P.found=w.args[0].args[2].toString(),P.permission_operation=w.args[0].args[0].id,P.permission_type=w.args[0].args[1].id):P.type===\"evaluation_error\"?P.evaluation_type=w.args[0].args[0].id:P.type===\"representation_error\"?P.representation=w.args[0].args[0].id:P.type===\"existence_error\"&&(P.existence=w.args[0].args[1].toString(),P.existence_type=w.args[0].args[0].id),P},create:function(w){return new b.type.Session(w)}};typeof hl<\"u\"?hl.exports=b:window.pl=b})()});function ime(t,e,r){t.prepend(r.map(o=>new Ta.default.type.State(e.goal.replace(o),e.substitution,e)))}function yH(t){let e=ome.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function ame(t,e){ome.set(t,e),t.consult(`:- use_module(library(${zgt.id})).`)}var EH,Ta,sme,u0,Vgt,Jgt,ome,zgt,lme=Et(()=>{Ye();EH=$e(d2()),Ta=$e(mH()),sme=$e(ve(\"vm\")),{is_atom:u0,is_variable:Vgt,is_instantiated_list:Jgt}=Ta.default.type;ome=new WeakMap;zgt=new Ta.default.type.Module(\"constraints\",{[\"project_workspaces_by_descriptor/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let u=W.parseIdent(o.id),A=W.makeDescriptor(u,a.id),h=yH(t).tryWorkspaceByDescriptor(A);Vgt(n)&&h!==null&&ime(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(String(h.relativeCwd))])]),u0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},[\"workspace_field/3\"]:(t,e,r)=>{let[o,a,n]=r.args;if(!u0(o)||!u0(a)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let A=yH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,EH.default)(A.manifest.raw,a.id);typeof p>\"u\"||ime(t,e,[new Ta.default.type.Term(\"=\",[n,new Ta.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},[\"workspace_field_test/3\"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ta.default.type.State(e.goal.replace(new Ta.default.type.Term(\"workspace_field_test\",[o,a,n,new Ta.default.type.Term(\"[]\",[])])),e.substitution,e)])},[\"workspace_field_test/4\"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!u0(o)||!u0(a)||!u0(n)||!Jgt(u)){t.throw_error(Ta.default.error.instantiation(r.indicator));return}let p=yH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,EH.default)(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[v,x]of u.toJavaScript().entries())E[`$${v}`]=x;sme.default.runInNewContext(n.id,E)&&t.success(e)}},[\"project_workspaces_by_descriptor/3\",\"workspace_field/3\",\"workspace_field_test/3\",\"workspace_field_test/4\"])});var b2={};Vt(b2,{Constraints:()=>P2,DependencyType:()=>fme});function to(t){if(t instanceof DC.default.type.Num)return t.value;if(t instanceof DC.default.type.Term)switch(t.indicator){case\"throw/1\":return to(t.args[0]);case\"error/1\":return to(t.args[0]);case\"error/2\":if(t.args[0]instanceof DC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(to(t.args[0]),...to(t.args[1]));{let e=to(t.args[0]);return e.message+=` (in ${to(t.args[1])})`,e}case\"syntax_error/1\":return new zt(43,`Syntax error: ${to(t.args[0])}`);case\"existence_error/2\":return new zt(44,`Existence error: ${to(t.args[0])} ${to(t.args[1])} not found`);case\"instantiation_error/0\":return new zt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:to(t.args[0])};case\"column/1\":return{column:to(t.args[0])};case\"found/1\":return{found:to(t.args[0])};case\"./2\":return[to(t.args[0])].concat(to(t.args[1]));case\"//2\":return`${to(t.args[0])}/${to(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function ume(t){let e;try{e=to(t)}catch(r){throw typeof r==\"string\"?new zt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<\"u\"&&typeof e.column<\"u\"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function em(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function Xgt(t){if(t.id===\"null\")return null;{let e=t.toJavaScript();if(typeof e!=\"string\")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function A0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var Ame,DC,fme,cme,CH,P2,x2=Et(()=>{Ye();Ye();St();Ame=$e(qde()),DC=$e(mH());v2();lme();(0,Ame.default)(DC.default);fme=(o=>(o.Dependencies=\"dependencies\",o.DevDependencies=\"devDependencies\",o.PeerDependencies=\"peerDependencies\",o))(fme||{}),cme=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];CH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=DC.default.create(o),ame(this.session,e),this.session.consult(\":- use_module(library(lists)).\"),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw ume(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new zt(79,\"Resolution limit exceeded\");if(!o)break;if(o.id===\"throw\")throw ume(o);yield o}}};P2=class{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");oe.existsSync(r)&&(this.source=oe.readFileSync(r,\"utf8\"))}static async find(e){return new P2(e)}getProjectDatabase(){let e=\"\";for(let r of cme)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${A0(o)}).\n`,e+=`workspace_ident(${A0(o)}, ${A0(W.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${A0(o)}, ${A0(r.manifest.version)}).\n`;for(let a of cme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${A0(o)}, ${A0(W.stringifyIdent(n))}, ${A0(n.range)}, ${a}).\n`}return e+=`workspace(_) :- false.\n`,e+=`workspace_ident(_, _) :- false.\n`,e+=`workspace_version(_, _) :- false.\n`,e+=`workspace_has_dependency(_, _, _, _) :- false.\n`,e}getDeclarations(){let e=\"\";return e+=`gen_enforced_dependency(_, _, _, _) :- false.\n`,e+=`gen_enforced_field(_, _, _) :- false.\n`,e}get fullSource(){return`${this.getProjectDatabase()}\n${this.source}\n${this.getDeclarations()}`}createSession(){return new CH(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=B2([A,W.stringifyIdent(n)]),h=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=B2(n),p=_e.getMapWithDefault(o,a.cwd);_e.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.DependencyIdent),u=em(o.links.DependencyRange),A=em(o.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=W.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return _e.sortMap(r,[({dependencyRange:o})=>o!==null?\"0\":\"1\",({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({dependencyIdent:o})=>W.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=V.resolve(this.project.cwd,em(o.links.WorkspaceCwd)),n=em(o.links.FieldPath),u=Xgt(o.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return _e.sortMap(r,[({workspace:o})=>W.stringifyIdent(o.anchoredLocator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!==\"_\"&&(a[n]=em(u));yield a}}}});var wme=_(Ik=>{\"use strict\";Object.defineProperty(Ik,\"__esModule\",{value:!0});function G2(t){let e=[...t.caches],r=e.shift();return r===void 0?Cme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>G2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>G2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>G2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>G2({caches:e}).clear())}}}function Cme(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}Ik.createFallbackableCache=G2;Ik.createNullCache=Cme});var Bme=_((QWt,Ime)=>{Ime.exports=wme()});var vme=_(TH=>{\"use strict\";Object.defineProperty(TH,\"__esModule\",{value:!0});function ddt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}TH.createInMemoryCache=ddt});var Sme=_((RWt,Dme)=>{Dme.exports=vme()});var bme=_(Zc=>{\"use strict\";Object.defineProperty(Zc,\"__esModule\",{value:!0});function mdt(t,e,r){let o={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===NH.WithinHeaders?o:{}},queryParameters(){return t===NH.WithinQueryParameters?o:{}}}}function ydt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function Pme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return Pme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Edt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function Cdt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function wdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Idt=\"4.14.2\",Bdt=t=>()=>t.transporter.requester.destroy(),NH={WithinQueryParameters:0,WithinHeaders:1};Zc.AuthMode=NH;Zc.addMethods=Cdt;Zc.createAuth=mdt;Zc.createRetryablePromise=ydt;Zc.createWaitablePromise=Pme;Zc.destroy=Bdt;Zc.encode=wdt;Zc.shuffle=Edt;Zc.version=Idt});var Y2=_((NWt,xme)=>{xme.exports=bme()});var kme=_(LH=>{\"use strict\";Object.defineProperty(LH,\"__esModule\",{value:!0});var vdt={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};LH.MethodEnum=vdt});var W2=_((OWt,Qme)=>{Qme.exports=kme()});var Wme=_(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});var Rme=W2();function OH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var K2={Read:1,Write:2,Any:3},xC={Up:1,Down:2,Timeouted:3},Tme=2*60*1e3;function UH(t,e=xC.Up){return{...t,status:e,lastUpdate:Date.now()}}function Nme(t){return t.status===xC.Up||Date.now()-t.lastUpdate>Tme}function Lme(t){return t.status===xC.Timeouted&&Date.now()-t.lastUpdate<=Tme}function _H(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:K2.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||K2.Any}}function Ddt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(UH(r))))).then(r=>{let o=r.filter(A=>Nme(A)),a=r.filter(A=>Lme(A)),n=[...o,...a],u=n.length>0?n.map(A=>_H(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Sdt=({isTimedOut:t,status:e})=>!t&&~~e===0,Pdt=t=>{let e=t.status;return t.isTimedOut||Sdt(t)||~~(e/100)!==2&&~~(e/100)!==4},bdt=({status:t})=>~~(t/100)===2,xdt=(t,e)=>Pdt(t)?e.onRetry(t):bdt(t)?e.onSuccess(t):e.onFail(t);function Fme(t,e,r,o){let a=[],n=Hme(r,o),u=qme(t,o),A=r.method,p=r.method!==Rme.MethodEnum.Get?{}:{...r.data,...o.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},E=0,I=(v,x)=>{let C=v.pop();if(C===void 0)throw Yme(MH(a));let R={data:n,headers:u,method:A,url:Ume(C,r.path,h),connectTimeout:x(E,t.timeouts.connect),responseTimeout:x(E,o.timeout)},L=J=>{let te={request:R,response:J,host:C,triesLeft:v.length};return a.push(te),te},U={onSuccess:J=>Ome(J),onRetry(J){let te=L(J);return J.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",HH(te)),t.hostsCache.set(C,UH(C,J.isTimedOut?xC.Timeouted:xC.Down))]).then(()=>I(v,x))},onFail(J){throw L(J),Mme(J,MH(a))}};return t.requester.send(R).then(J=>xdt(J,U))};return Ddt(t.hostsCache,e).then(v=>I([...v.statelessHosts].reverse(),v.getTimeout))}function kdt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:E}=t,I={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:E,queryParameters:h,hosts:p.map(v=>_H(v)),read(v,x){let C=OH(x,I.timeouts.read),R=()=>Fme(I,I.hosts.filter(J=>(J.accept&K2.Read)!==0),v,C);if((C.cacheable!==void 0?C.cacheable:v.cacheable)!==!0)return R();let U={request:v,mappedRequestOptions:C,transporter:{queryParameters:I.queryParameters,headers:I.headers}};return I.responsesCache.get(U,()=>I.requestsCache.get(U,()=>I.requestsCache.set(U,R()).then(J=>Promise.all([I.requestsCache.delete(U),J]),J=>Promise.all([I.requestsCache.delete(U),Promise.reject(J)])).then(([J,te])=>te)),{miss:J=>I.responsesCache.set(U,J)})},write(v,x){return Fme(I,I.hosts.filter(C=>(C.accept&K2.Write)!==0),v,OH(x,I.timeouts.write))}};return I}function Qdt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Ome(t){try{return JSON.parse(t.content)}catch(e){throw Gme(e.message,t)}}function Mme({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return jme(o,e,r)}function Fdt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function Ume(t,e,r){let o=_me(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function _me(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>Fdt(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function Hme(t,e){if(t.method===Rme.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function qme(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function MH(t){return t.map(e=>HH(e))}function HH(t){let e=t.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function jme(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function Gme(t,e){return{name:\"DeserializationError\",message:t,response:e}}function Yme(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Fi.CallEnum=K2;Fi.HostStatusEnum=xC;Fi.createApiError=jme;Fi.createDeserializationError=Gme;Fi.createMappedRequestOptions=OH;Fi.createRetryError=Yme;Fi.createStatefulHost=UH;Fi.createStatelessHost=_H;Fi.createTransporter=kdt;Fi.createUserAgent=Qdt;Fi.deserializeFailure=Mme;Fi.deserializeSuccess=Ome;Fi.isStatefulHostTimeouted=Lme;Fi.isStatefulHostUp=Nme;Fi.serializeData=Hme;Fi.serializeHeaders=qme;Fi.serializeQueryParameters=_me;Fi.serializeUrl=Ume;Fi.stackFrameWithoutCredentials=HH;Fi.stackTraceWithoutCredentials=MH});var V2=_((UWt,Kme)=>{Kme.exports=Wme()});var Vme=_(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});var kC=Y2(),Rdt=V2(),J2=W2(),Tdt=t=>{let e=t.region||\"us\",r=kC.createAuth(kC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Rdt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return kC.addMethods({appId:a,transporter:o},t.methods)},Ndt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:\"2/abtests\",data:e},r),Ldt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Delete,path:kC.encode(\"2/abtests/%s\",e)},r),Odt=t=>(e,r)=>t.transporter.read({method:J2.MethodEnum.Get,path:kC.encode(\"2/abtests/%s\",e)},r),Mdt=t=>e=>t.transporter.read({method:J2.MethodEnum.Get,path:\"2/abtests\"},e),Udt=t=>(e,r)=>t.transporter.write({method:J2.MethodEnum.Post,path:kC.encode(\"2/abtests/%s/stop\",e)},r);m0.addABTest=Ndt;m0.createAnalyticsClient=Tdt;m0.deleteABTest=Ldt;m0.getABTest=Odt;m0.getABTests=Mdt;m0.stopABTest=Udt});var zme=_((HWt,Jme)=>{Jme.exports=Vme()});var Zme=_(z2=>{\"use strict\";Object.defineProperty(z2,\"__esModule\",{value:!0});var qH=Y2(),_dt=V2(),Xme=W2(),Hdt=t=>{let e=t.region||\"us\",r=qH.createAuth(qH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=_dt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return qH.addMethods({appId:t.appId,transporter:o},t.methods)},qdt=t=>e=>t.transporter.read({method:Xme.MethodEnum.Get,path:\"1/strategies/personalization\"},e),jdt=t=>(e,r)=>t.transporter.write({method:Xme.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);z2.createPersonalizationClient=Hdt;z2.getPersonalizationStrategy=qdt;z2.setPersonalizationStrategy=jdt});var eye=_((jWt,$me)=>{$me.exports=Zme()});var hye=_(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Gt=Y2(),Na=V2(),Ir=W2(),Gdt=ve(\"crypto\");function Bk(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Ydt=t=>{let e=t.appId,r=Gt.createAuth(t.authMode!==void 0?t.authMode:Gt.AuthMode.WithinHeaders,e,t.apiKey),o=Na.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:Na.CallEnum.Read},{url:`${e}.algolia.net`,accept:Na.CallEnum.Write}].concat(Gt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Gt.addMethods(a,t.methods)};function tye(){return{name:\"MissingObjectIDError\",message:\"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option.\"}}function rye(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function nye(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var Wdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Gt.createRetryablePromise(h=>X2(t)(A.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/keys\",data:n},a),u)},Kdt=t=>(e,r,o)=>{let a=Na.createMappedRequestOptions(o);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},Vdt=t=>(e,r,o)=>t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},o),Jdt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(o,a)=>QC(t)(o.taskID,a)),vk=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},o),a)},zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Rules]}),Xdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Settings]}),Zdt=t=>(e,r,o)=>vk(t)(e,r,{...o,scope:[Sk.Synonyms]}),$dt=t=>(e,r)=>e.method===Ir.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),emt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/keys/%s\",e)},r),o)},tmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},rmt=()=>(t,e)=>{let r=Na.serializeQueryParameters(e),o=Gdt.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(o+r).toString(\"base64\")},X2=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/keys/%s\",e)},r),iye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/task/%s\",e.toString())},r),nmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),imt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/logs\"},e),smt=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,o=e.match(r);if(o===null)throw nye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},omt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),amt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/clusters/mapping/%s\",e)},r),lmt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},o)},Z2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Gt.addMethods(o,r.methods)},cmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/keys\"},e),umt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters\"},e),Amt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/indexes\"},e),fmt=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:\"1/clusters/mapping\"},e),pmt=t=>(e,r,o)=>{let a=(n,u)=>Z2(t)(e,{methods:{waitTask:Zi}}).waitTask(n.taskID,u);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},o),a)},hmt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>Z2(t)(u,{methods:{waitTask:Zi}}).waitTask(a.taskID[u],n)));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),o)},gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),dmt=t=>(e,r)=>{let o=e.map(a=>({...a,params:Na.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},r)},mmt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return Z2(t)(o.indexName,{methods:{searchForFacetValues:Aye}}).searchForFacetValues(a,n,{...r,...u})})),ymt=t=>(e,r)=>{let o=Na.createMappedRequestOptions(r);return o.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:Ir.MethodEnum.Delete,path:\"1/clusters/mapping\"},o)},Emt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Cmt=t=>(e,r)=>{let o=(a,n)=>Gt.createRetryablePromise(u=>X2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/keys/%s/restore\",e)},r),o)},wmt=t=>(e,r,o)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>QC(t)(n.taskID,u))},Imt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},o),Bmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),vmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(o,a)=>QC(t)(o.taskID,a)),Dmt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(o).filter(I=>A.indexOf(I)!==-1).every(I=>E[I]===o[I]),h=(E,I)=>Gt.createRetryablePromise(v=>X2(t)(e,I).then(x=>p(x)?Promise.resolve():v()));return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/keys/%s\",e),data:u},n),h)},QC=t=>(e,r)=>Gt.createRetryablePromise(o=>iye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),sye=t=>(e,r)=>{let o=(a,n)=>Zi(t)(a.taskID,n);return Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),o)},Smt=t=>e=>Bk({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),Pmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return fye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},bmt=t=>e=>{let r={hitsPerPage:1e3,...e};return Bk({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return pye(t)(\"\",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Dk=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],E;for(E=p;E<e.length&&(h.push(e[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(u):sye(t)(h.map(I=>({action:r,body:I})),n).then(I=>(u.objectIDs=u.objectIDs.concat(I.objectIDs),u.taskIDs.push(I.taskID),E++,A(E)))};return Gt.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(E=>Zi(t)(E,h))))},xmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),kmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Qmt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Na.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,u)=>Zi(t)(n.taskID,u))},Fmt=t=>(e,r)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(o,a)=>Zi(t)(o.taskID,a)),Rmt=t=>e=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s\",t.indexName)},e),(r,o)=>Zi(t)(r.taskID,o)),Tmt=t=>(e,r)=>Gt.createWaitablePromise(oye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),oye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return Dk(t)(o,nm.DeleteObject,r)},Nmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Lmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Delete,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(u,A)=>Zi(t)(u.taskID,A))},Omt=t=>e=>aye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),Mmt=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),Umt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>uye(t)(o||\"\",{...n,page:u}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw rye();return A()});return A()},_mt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),Hmt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},qmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:Ir.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},jmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),aye=t=>e=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),Gmt=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),lye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Get,path:Gt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),Ymt=t=>(e,r)=>Gt.createWaitablePromise(cye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),cye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?nm.PartialUpdateObject:nm.PartialUpdateObjectNoCreate;return Dk(t)(e,n,a)},Wmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(C,R,L,U)=>Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/operation\",C),data:{operation:L,destination:R}},U),(J,te)=>Zi(t)(J.taskID,te)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=jH({appId:t.appId,transporter:t.transporter,indexName:h}),I=[],v=A(t.indexName,h,\"copy\",{...u,scope:[\"settings\",\"synonyms\",\"rules\"]});I.push(v);let x=(o?v.wait(u):v).then(()=>{let C=E(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return I.push(C),o?C.wait(u):C}).then(()=>{let C=A(h,t.indexName,\"move\",u);return I.push(C),o?C.wait(u):C}).then(()=>Promise.all(I)).then(([C,R,L])=>({objectIDs:R.objectIDs,taskIDs:[C.taskID,...R.taskIDs,L.taskID]}));return Gt.createWaitablePromise(x,(C,R)=>Promise.all(I.map(L=>L.wait(R))))},Kmt=t=>(e,r)=>GH(t)(e,{...r,clearExistingRules:!0}),Vmt=t=>(e,r)=>YH(t)(e,{...r,clearExistingSynonyms:!0}),Jmt=t=>(e,r)=>Gt.createWaitablePromise(jH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>Zi(t)(o.taskID,a)),jH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?nm.AddObject:nm.UpdateObject;if(n===nm.UpdateObject){for(let u of e)if(u.objectID===void 0)return Gt.createWaitablePromise(Promise.reject(tye()))}return Dk(t)(e,n,a)},zmt=t=>(e,r)=>GH(t)([e],r),GH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=Na.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},u),(A,p)=>Zi(t)(A.taskID,p))},Xmt=t=>(e,r)=>YH(t)([e],r),YH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=Na.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},A),(p,h)=>Zi(t)(p.taskID,h))},uye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),Aye=t=>(e,r,o)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),fye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),pye=t=>(e,r)=>t.transporter.read({method:Ir.MethodEnum.Post,path:Gt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),Zmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Na.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Gt.createWaitablePromise(t.transporter.write({method:Ir.MethodEnum.Put,path:Gt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(u,A)=>Zi(t)(u.taskID,A))},Zi=t=>(e,r)=>Gt.createRetryablePromise(o=>lye(t)(e,r).then(a=>a.status!==\"published\"?o():void 0)),$mt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},nm={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},Sk={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},eyt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},tyt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=$mt;Ft.BatchActionEnum=nm;Ft.ScopeEnum=Sk;Ft.StrategyEnum=eyt;Ft.SynonymEnum=tyt;Ft.addApiKey=Wdt;Ft.assignUserID=Kdt;Ft.assignUserIDs=Vdt;Ft.batch=sye;Ft.browseObjects=Smt;Ft.browseRules=Pmt;Ft.browseSynonyms=bmt;Ft.chunkedBatch=Dk;Ft.clearDictionaryEntries=Jdt;Ft.clearObjects=xmt;Ft.clearRules=kmt;Ft.clearSynonyms=Qmt;Ft.copyIndex=vk;Ft.copyRules=zdt;Ft.copySettings=Xdt;Ft.copySynonyms=Zdt;Ft.createBrowsablePromise=Bk;Ft.createMissingObjectIDError=tye;Ft.createObjectNotFoundError=rye;Ft.createSearchClient=Ydt;Ft.createValidUntilNotFoundError=nye;Ft.customRequest=$dt;Ft.deleteApiKey=emt;Ft.deleteBy=Fmt;Ft.deleteDictionaryEntries=tmt;Ft.deleteIndex=Rmt;Ft.deleteObject=Tmt;Ft.deleteObjects=oye;Ft.deleteRule=Nmt;Ft.deleteSynonym=Lmt;Ft.exists=Omt;Ft.findAnswers=Mmt;Ft.findObject=Umt;Ft.generateSecuredApiKey=rmt;Ft.getApiKey=X2;Ft.getAppTask=iye;Ft.getDictionarySettings=nmt;Ft.getLogs=imt;Ft.getObject=_mt;Ft.getObjectPosition=Hmt;Ft.getObjects=qmt;Ft.getRule=jmt;Ft.getSecuredApiKeyRemainingValidity=smt;Ft.getSettings=aye;Ft.getSynonym=Gmt;Ft.getTask=lye;Ft.getTopUserIDs=omt;Ft.getUserID=amt;Ft.hasPendingMappings=lmt;Ft.initIndex=Z2;Ft.listApiKeys=cmt;Ft.listClusters=umt;Ft.listIndices=Amt;Ft.listUserIDs=fmt;Ft.moveIndex=pmt;Ft.multipleBatch=hmt;Ft.multipleGetObjects=gmt;Ft.multipleQueries=dmt;Ft.multipleSearchForFacetValues=mmt;Ft.partialUpdateObject=Ymt;Ft.partialUpdateObjects=cye;Ft.removeUserID=ymt;Ft.replaceAllObjects=Wmt;Ft.replaceAllRules=Kmt;Ft.replaceAllSynonyms=Vmt;Ft.replaceDictionaryEntries=Emt;Ft.restoreApiKey=Cmt;Ft.saveDictionaryEntries=wmt;Ft.saveObject=Jmt;Ft.saveObjects=jH;Ft.saveRule=zmt;Ft.saveRules=GH;Ft.saveSynonym=Xmt;Ft.saveSynonyms=YH;Ft.search=uye;Ft.searchDictionaryEntries=Imt;Ft.searchForFacetValues=Aye;Ft.searchRules=fye;Ft.searchSynonyms=pye;Ft.searchUserIDs=Bmt;Ft.setDictionarySettings=vmt;Ft.setSettings=Zmt;Ft.updateApiKey=Dmt;Ft.waitAppTask=QC;Ft.waitTask=Zi});var dye=_((YWt,gye)=>{gye.exports=hye()});var mye=_(Pk=>{\"use strict\";Object.defineProperty(Pk,\"__esModule\",{value:!0});function ryt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var nyt={Debug:1,Info:2,Error:3};Pk.LogLevelEnum=nyt;Pk.createNullLogger=ryt});var Eye=_((KWt,yye)=>{yye.exports=mye()});var Bye=_(WH=>{\"use strict\";Object.defineProperty(WH,\"__esModule\",{value:!0});var Cye=ve(\"http\"),wye=ve(\"https\"),iyt=ve(\"url\"),Iye={keepAlive:!0},syt=new Cye.Agent(Iye),oyt=new wye.Agent(Iye);function ayt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||syt,n=r||t||oyt;return{send(u){return new Promise(A=>{let p=iyt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...o,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},I=(p.protocol===\"https:\"?wye:Cye).request(E,R=>{let L=[];R.on(\"data\",U=>{L=L.concat(U)}),R.on(\"end\",()=>{clearTimeout(x),clearTimeout(C),A({status:R.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(R,L)=>setTimeout(()=>{I.abort(),A({status:0,content:L,isTimedOut:!0})},R*1e3),x=v(u.connectTimeout,\"Connection timeout\"),C;I.on(\"error\",R=>{clearTimeout(x),clearTimeout(C),A({status:0,content:R.message,isTimedOut:!1})}),I.once(\"response\",()=>{clearTimeout(x),C=v(u.responseTimeout,\"Socket timeout\")}),u.data!==void 0&&I.write(u.data),I.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}WH.createNodeHttpRequester=ayt});var Dye=_((JWt,vye)=>{vye.exports=Bye()});var xye=_((zWt,bye)=>{\"use strict\";var Sye=Bme(),lyt=Sme(),FC=zme(),VH=Y2(),KH=eye(),Ut=dye(),cyt=Eye(),uyt=Dye(),Ayt=V2();function Pye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:uyt.createNodeHttpRequester(),logger:cyt.createNullLogger(),responsesCache:Sye.createNullCache(),requestsCache:Sye.createNullCache(),hostsCache:lyt.createInMemoryCache(),userAgent:Ayt.createUserAgent(VH.version).add({segment:\"Node.js\",version:process.versions.node})},a={...o,...r},n=()=>u=>KH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:KH.getPersonalizationStrategy,setPersonalizationStrategy:KH.setPersonalizationStrategy}});return Ut.createSearchClient({...a,methods:{search:Ut.multipleQueries,searchForFacetValues:Ut.multipleSearchForFacetValues,multipleBatch:Ut.multipleBatch,multipleGetObjects:Ut.multipleGetObjects,multipleQueries:Ut.multipleQueries,copyIndex:Ut.copyIndex,copySettings:Ut.copySettings,copyRules:Ut.copyRules,copySynonyms:Ut.copySynonyms,moveIndex:Ut.moveIndex,listIndices:Ut.listIndices,getLogs:Ut.getLogs,listClusters:Ut.listClusters,multipleSearchForFacetValues:Ut.multipleSearchForFacetValues,getApiKey:Ut.getApiKey,addApiKey:Ut.addApiKey,listApiKeys:Ut.listApiKeys,updateApiKey:Ut.updateApiKey,deleteApiKey:Ut.deleteApiKey,restoreApiKey:Ut.restoreApiKey,assignUserID:Ut.assignUserID,assignUserIDs:Ut.assignUserIDs,getUserID:Ut.getUserID,searchUserIDs:Ut.searchUserIDs,listUserIDs:Ut.listUserIDs,getTopUserIDs:Ut.getTopUserIDs,removeUserID:Ut.removeUserID,hasPendingMappings:Ut.hasPendingMappings,generateSecuredApiKey:Ut.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Ut.getSecuredApiKeyRemainingValidity,destroy:VH.destroy,clearDictionaryEntries:Ut.clearDictionaryEntries,deleteDictionaryEntries:Ut.deleteDictionaryEntries,getDictionarySettings:Ut.getDictionarySettings,getAppTask:Ut.getAppTask,replaceDictionaryEntries:Ut.replaceDictionaryEntries,saveDictionaryEntries:Ut.saveDictionaryEntries,searchDictionaryEntries:Ut.searchDictionaryEntries,setDictionarySettings:Ut.setDictionarySettings,waitAppTask:Ut.waitAppTask,customRequest:Ut.customRequest,initIndex:u=>A=>Ut.initIndex(u)(A,{methods:{batch:Ut.batch,delete:Ut.deleteIndex,findAnswers:Ut.findAnswers,getObject:Ut.getObject,getObjects:Ut.getObjects,saveObject:Ut.saveObject,saveObjects:Ut.saveObjects,search:Ut.search,searchForFacetValues:Ut.searchForFacetValues,waitTask:Ut.waitTask,setSettings:Ut.setSettings,getSettings:Ut.getSettings,partialUpdateObject:Ut.partialUpdateObject,partialUpdateObjects:Ut.partialUpdateObjects,deleteObject:Ut.deleteObject,deleteObjects:Ut.deleteObjects,deleteBy:Ut.deleteBy,clearObjects:Ut.clearObjects,browseObjects:Ut.browseObjects,getObjectPosition:Ut.getObjectPosition,findObject:Ut.findObject,exists:Ut.exists,saveSynonym:Ut.saveSynonym,saveSynonyms:Ut.saveSynonyms,getSynonym:Ut.getSynonym,searchSynonyms:Ut.searchSynonyms,browseSynonyms:Ut.browseSynonyms,deleteSynonym:Ut.deleteSynonym,clearSynonyms:Ut.clearSynonyms,replaceAllObjects:Ut.replaceAllObjects,replaceAllSynonyms:Ut.replaceAllSynonyms,searchRules:Ut.searchRules,getRule:Ut.getRule,deleteRule:Ut.deleteRule,saveRule:Ut.saveRule,saveRules:Ut.saveRules,replaceAllRules:Ut.replaceAllRules,browseRules:Ut.browseRules,clearRules:Ut.clearRules}}),initAnalytics:()=>u=>FC.createAnalyticsClient({...o,...u,methods:{addABTest:FC.addABTest,getABTest:FC.getABTest,getABTests:FC.getABTests,stopABTest:FC.stopABTest,deleteABTest:FC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(u))}})}Pye.version=VH.version;bye.exports=Pye});var zH=_((XWt,JH)=>{var kye=xye();JH.exports=kye;JH.exports.default=kye});var $H=_(($Wt,Rye)=>{\"use strict\";var Fye=Object.getOwnPropertySymbols,pyt=Object.prototype.hasOwnProperty,hyt=Object.prototype.propertyIsEnumerable;function gyt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function dyt(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",Object.getOwnPropertyNames(t)[0]===\"5\")return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}Rye.exports=dyt()?Object.assign:function(t,e){for(var r,o=gyt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)pyt.call(r,u)&&(o[u]=r[u]);if(Fye){a=Fye(r);for(var A=0;A<a.length;A++)hyt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var Yye=_(Nn=>{\"use strict\";var i6=$H(),$c=typeof Symbol==\"function\"&&Symbol.for,$2=$c?Symbol.for(\"react.element\"):60103,myt=$c?Symbol.for(\"react.portal\"):60106,yyt=$c?Symbol.for(\"react.fragment\"):60107,Eyt=$c?Symbol.for(\"react.strict_mode\"):60108,Cyt=$c?Symbol.for(\"react.profiler\"):60114,wyt=$c?Symbol.for(\"react.provider\"):60109,Iyt=$c?Symbol.for(\"react.context\"):60110,Byt=$c?Symbol.for(\"react.forward_ref\"):60112,vyt=$c?Symbol.for(\"react.suspense\"):60113,Dyt=$c?Symbol.for(\"react.memo\"):60115,Syt=$c?Symbol.for(\"react.lazy\"):60116,Tye=typeof Symbol==\"function\"&&Symbol.iterator;function eB(t){for(var e=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+t,r=1;r<arguments.length;r++)e+=\"&args[]=\"+encodeURIComponent(arguments[r]);return\"Minified React error #\"+t+\"; visit \"+e+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var Nye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Lye={};function RC(t,e,r){this.props=t,this.context=e,this.refs=Lye,this.updater=r||Nye}RC.prototype.isReactComponent={};RC.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error(eB(85));this.updater.enqueueSetState(this,t,e,\"setState\")};RC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function Oye(){}Oye.prototype=RC.prototype;function s6(t,e,r){this.props=t,this.context=e,this.refs=Lye,this.updater=r||Nye}var o6=s6.prototype=new Oye;o6.constructor=s6;i6(o6,RC.prototype);o6.isPureReactComponent=!0;var a6={current:null},Mye=Object.prototype.hasOwnProperty,Uye={key:!0,ref:!0,__self:!0,__source:!0};function _ye(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)Mye.call(e,o)&&!Uye.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:$2,type:t,key:n,ref:u,props:a,_owner:a6.current}}function Pyt(t,e){return{$$typeof:$2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function l6(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===$2}function byt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+t).replace(/[=:]/g,function(r){return e[r]})}var Hye=/\\/+/g,bk=[];function qye(t,e,r,o){if(bk.length){var a=bk.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function jye(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>bk.length&&bk.push(t)}function t6(t,e,r,o){var a=typeof t;(a===\"undefined\"||a===\"boolean\")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case\"string\":case\"number\":n=!0;break;case\"object\":switch(t.$$typeof){case $2:case myt:n=!0}}if(n)return r(o,t,e===\"\"?\".\"+e6(t,0):e),1;if(n=0,e=e===\"\"?\".\":e+\":\",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+e6(a,u);n+=t6(a,A,r,o)}else if(t===null||typeof t!=\"object\"?A=null:(A=Tye&&t[Tye]||t[\"@@iterator\"],A=typeof A==\"function\"?A:null),typeof A==\"function\")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+e6(a,u++),n+=t6(a,A,r,o);else if(a===\"object\")throw r=\"\"+t,Error(eB(31,r===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":r,\"\"));return n}function r6(t,e,r){return t==null?0:t6(t,\"\",e,r)}function e6(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?byt(t.key):e.toString(36)}function xyt(t,e){t.func.call(t.context,e,t.count++)}function kyt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?n6(t,o,r,function(n){return n}):t!=null&&(l6(t)&&(t=Pyt(t,a+(!t.key||e&&e.key===t.key?\"\":(\"\"+t.key).replace(Hye,\"$&/\")+\"/\")+r)),o.push(t))}function n6(t,e,r,o,a){var n=\"\";r!=null&&(n=(\"\"+r).replace(Hye,\"$&/\")+\"/\"),e=qye(e,n,o,a),r6(t,kyt,e),jye(e)}var Gye={current:null};function Xf(){var t=Gye.current;if(t===null)throw Error(eB(321));return t}var Qyt={ReactCurrentDispatcher:Gye,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:a6,IsSomeRendererActing:{current:!1},assign:i6};Nn.Children={map:function(t,e,r){if(t==null)return t;var o=[];return n6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=qye(null,null,e,r),r6(t,xyt,e),jye(e)},count:function(t){return r6(t,function(){return null},null)},toArray:function(t){var e=[];return n6(t,e,null,function(r){return r}),e},only:function(t){if(!l6(t))throw Error(eB(143));return t}};Nn.Component=RC;Nn.Fragment=yyt;Nn.Profiler=Cyt;Nn.PureComponent=s6;Nn.StrictMode=Eyt;Nn.Suspense=vyt;Nn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Qyt;Nn.cloneElement=function(t,e,r){if(t==null)throw Error(eB(267,t));var o=i6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=a6.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)Mye.call(e,p)&&!Uye.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:$2,type:t.type,key:a,ref:n,props:o,_owner:u}};Nn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:Iyt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:wyt,_context:t},t.Consumer=t};Nn.createElement=_ye;Nn.createFactory=function(t){var e=_ye.bind(null,t);return e.type=t,e};Nn.createRef=function(){return{current:null}};Nn.forwardRef=function(t){return{$$typeof:Byt,render:t}};Nn.isValidElement=l6;Nn.lazy=function(t){return{$$typeof:Syt,_ctor:t,_status:-1,_result:null}};Nn.memo=function(t,e){return{$$typeof:Dyt,type:t,compare:e===void 0?null:e}};Nn.useCallback=function(t,e){return Xf().useCallback(t,e)};Nn.useContext=function(t,e){return Xf().useContext(t,e)};Nn.useDebugValue=function(){};Nn.useEffect=function(t,e){return Xf().useEffect(t,e)};Nn.useImperativeHandle=function(t,e,r){return Xf().useImperativeHandle(t,e,r)};Nn.useLayoutEffect=function(t,e){return Xf().useLayoutEffect(t,e)};Nn.useMemo=function(t,e){return Xf().useMemo(t,e)};Nn.useReducer=function(t,e,r){return Xf().useReducer(t,e,r)};Nn.useRef=function(t){return Xf().useRef(t)};Nn.useState=function(t){return Xf().useState(t)};Nn.version=\"16.13.1\"});var on=_((tKt,Wye)=>{\"use strict\";Wye.exports=Yye()});var u6=_((rKt,c6)=>{\"use strict\";var An=c6.exports;c6.exports.default=An;var Ln=\"\\x1B[\",tB=\"\\x1B]\",TC=\"\\x07\",xk=\";\",Kye=process.env.TERM_PROGRAM===\"Apple_Terminal\";An.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Ln+(t+1)+\"G\":Ln+(e+1)+\";\"+(t+1)+\"H\"};An.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Ln+-t+\"D\":t>0&&(r+=Ln+t+\"C\"),e<0?r+=Ln+-e+\"A\":e>0&&(r+=Ln+e+\"B\"),r};An.cursorUp=(t=1)=>Ln+t+\"A\";An.cursorDown=(t=1)=>Ln+t+\"B\";An.cursorForward=(t=1)=>Ln+t+\"C\";An.cursorBackward=(t=1)=>Ln+t+\"D\";An.cursorLeft=Ln+\"G\";An.cursorSavePosition=Kye?\"\\x1B7\":Ln+\"s\";An.cursorRestorePosition=Kye?\"\\x1B8\":Ln+\"u\";An.cursorGetPosition=Ln+\"6n\";An.cursorNextLine=Ln+\"E\";An.cursorPrevLine=Ln+\"F\";An.cursorHide=Ln+\"?25l\";An.cursorShow=Ln+\"?25h\";An.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=An.eraseLine+(r<t-1?An.cursorUp():\"\");return t&&(e+=An.cursorLeft),e};An.eraseEndLine=Ln+\"K\";An.eraseStartLine=Ln+\"1K\";An.eraseLine=Ln+\"2K\";An.eraseDown=Ln+\"J\";An.eraseUp=Ln+\"1J\";An.eraseScreen=Ln+\"2J\";An.scrollUp=Ln+\"S\";An.scrollDown=Ln+\"T\";An.clearScreen=\"\\x1Bc\";An.clearTerminal=process.platform===\"win32\"?`${An.eraseScreen}${Ln}0f`:`${An.eraseScreen}${Ln}3J${Ln}H`;An.beep=TC;An.link=(t,e)=>[tB,\"8\",xk,xk,e,TC,t,tB,\"8\",xk,xk,TC].join(\"\");An.image=(t,e={})=>{let r=`${tB}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=\";preserveAspectRatio=0\"),r+\":\"+t.toString(\"base64\")+TC};An.iTerm={setCwd:(t=process.cwd())=>`${tB}50;CurrentDir=${t}${TC}`,annotation:(t,e={})=>{let r=`${tB}1337;`,o=typeof e.x<\"u\",a=typeof e.y<\"u\";if((o||a)&&!(o&&a&&typeof e.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return t=t.replace(/\\|/g,\"\"),r+=e.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+TC}}});var Jye=_((nKt,A6)=>{\"use strict\";var Vye=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};A6.exports=Vye;A6.exports.default=Vye});var Xye=_((iKt,Qk)=>{\"use strict\";var Fyt=Jye(),kk=new WeakMap,zye=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,o=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...u){if(kk.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return Fyt(n,t),kk.set(n,o),n};Qk.exports=zye;Qk.exports.default=zye;Qk.exports.callCount=t=>{if(!kk.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return kk.get(t)}});var Zye=_((sKt,Fk)=>{Fk.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&Fk.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&Fk.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var h6=_((oKt,OC)=>{var Ei=global.process,im=function(t){return t&&typeof t==\"object\"&&typeof t.removeListener==\"function\"&&typeof t.emit==\"function\"&&typeof t.reallyExit==\"function\"&&typeof t.listeners==\"function\"&&typeof t.kill==\"function\"&&typeof t.pid==\"number\"&&typeof t.on==\"function\"};im(Ei)?($ye=ve(\"assert\"),NC=Zye(),eEe=/^win/i.test(Ei.platform),rB=ve(\"events\"),typeof rB!=\"function\"&&(rB=rB.EventEmitter),Ei.__signal_exit_emitter__?Ts=Ei.__signal_exit_emitter__:(Ts=Ei.__signal_exit_emitter__=new rB,Ts.count=0,Ts.emitted={}),Ts.infinite||(Ts.setMaxListeners(1/0),Ts.infinite=!0),OC.exports=function(t,e){if(!im(global.process))return function(){};$ye.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),LC===!1&&f6();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var o=function(){Ts.removeListener(r,t),Ts.listeners(\"exit\").length===0&&Ts.listeners(\"afterexit\").length===0&&Rk()};return Ts.on(r,t),o},Rk=function(){!LC||!im(global.process)||(LC=!1,NC.forEach(function(e){try{Ei.removeListener(e,Tk[e])}catch{}}),Ei.emit=Nk,Ei.reallyExit=p6,Ts.count-=1)},OC.exports.unload=Rk,sm=function(e,r,o){Ts.emitted[e]||(Ts.emitted[e]=!0,Ts.emit(e,r,o))},Tk={},NC.forEach(function(t){Tk[t]=function(){if(!!im(global.process)){var r=Ei.listeners(t);r.length===Ts.count&&(Rk(),sm(\"exit\",null,t),sm(\"afterexit\",null,t),eEe&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Ei.kill(Ei.pid,t))}}}),OC.exports.signals=function(){return NC},LC=!1,f6=function(){LC||!im(global.process)||(LC=!0,Ts.count+=1,NC=NC.filter(function(e){try{return Ei.on(e,Tk[e]),!0}catch{return!1}}),Ei.emit=rEe,Ei.reallyExit=tEe)},OC.exports.load=f6,p6=Ei.reallyExit,tEe=function(e){!im(global.process)||(Ei.exitCode=e||0,sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),p6.call(Ei,Ei.exitCode))},Nk=Ei.emit,rEe=function(e,r){if(e===\"exit\"&&im(global.process)){r!==void 0&&(Ei.exitCode=r);var o=Nk.apply(this,arguments);return sm(\"exit\",Ei.exitCode,null),sm(\"afterexit\",Ei.exitCode,null),o}else return Nk.apply(this,arguments)}):OC.exports=function(){return function(){}};var $ye,NC,eEe,rB,Ts,Rk,sm,Tk,LC,f6,p6,tEe,Nk,rEe});var iEe=_((aKt,nEe)=>{\"use strict\";var Ryt=Xye(),Tyt=h6();nEe.exports=Ryt(()=>{Tyt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var g6=_(MC=>{\"use strict\";var Nyt=iEe(),Lk=!1;MC.show=(t=process.stderr)=>{!t.isTTY||(Lk=!1,t.write(\"\\x1B[?25h\"))};MC.hide=(t=process.stderr)=>{!t.isTTY||(Nyt(),Lk=!0,t.write(\"\\x1B[?25l\"))};MC.toggle=(t,e)=>{t!==void 0&&(Lk=t),Lk?MC.show(e):MC.hide(e)}});var lEe=_(nB=>{\"use strict\";var aEe=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,\"__esModule\",{value:!0});var sEe=aEe(u6()),oEe=aEe(g6()),Lyt=(t,{showCursor:e=!1}={})=>{let r=0,o=\"\",a=!1,n=u=>{!e&&!a&&(oEe.default.hide(),a=!0);let A=u+`\n`;A!==o&&(o=A,t.write(sEe.default.eraseLines(r)+A),r=A.split(`\n`).length)};return n.clear=()=>{t.write(sEe.default.eraseLines(r)),o=\"\",r=0},n.done=()=>{o=\"\",r=0,e||(oEe.default.show(),a=!1)},n};nB.default={create:Lyt}});var cEe=_((uKt,Oyt)=>{Oyt.exports=[{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\",pr:\"SYSTEM_PULLREQUEST_PULLREQUESTID\"},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY_BUILD_BASE\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}}]});var fEe=_(gl=>{\"use strict\";var AEe=cEe(),pA=process.env;Object.defineProperty(gl,\"_vendors\",{value:AEe.map(function(t){return t.constant})});gl.name=null;gl.isPR=null;AEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return uEe(o)});if(gl[t.constant]=r,r)switch(gl.name=t.name,typeof t.pr){case\"string\":gl.isPR=!!pA[t.pr];break;case\"object\":\"env\"in t.pr?gl.isPR=t.pr.env in pA&&pA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?gl.isPR=t.pr.any.some(function(o){return!!pA[o]}):gl.isPR=uEe(t.pr);break;default:gl.isPR=null}});gl.isCI=!!(pA.CI||pA.CONTINUOUS_INTEGRATION||pA.BUILD_NUMBER||pA.RUN_ID||gl.name);function uEe(t){return typeof t==\"string\"?!!pA[t]:Object.keys(t).every(function(e){return pA[e]===t[e]})}});var hEe=_((fKt,pEe)=>{\"use strict\";pEe.exports=fEe().isCI});var dEe=_((pKt,gEe)=>{\"use strict\";var Myt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};gEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u==\"string\"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of Myt(t.constructor.prototype)){if(n===\"constructor\"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var BEe=_(kn=>{\"use strict\";Object.defineProperty(kn,\"__esModule\",{value:!0});var _C,oB,Hk,qk,I6;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(UC=null,d6=null,m6=function(){if(UC!==null)try{var t=kn.unstable_now();UC(!0,t),UC=null}catch(e){throw setTimeout(m6,0),e}},mEe=Date.now(),kn.unstable_now=function(){return Date.now()-mEe},_C=function(t){UC!==null?setTimeout(_C,0,t):(UC=t,setTimeout(m6,0))},oB=function(t,e){d6=setTimeout(t,e)},Hk=function(){clearTimeout(d6)},qk=function(){return!1},I6=kn.unstable_forceFrameRate=function(){}):(Ok=window.performance,y6=window.Date,yEe=window.setTimeout,EEe=window.clearTimeout,typeof console<\"u\"&&(CEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),typeof CEe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")),typeof Ok==\"object\"&&typeof Ok.now==\"function\"?kn.unstable_now=function(){return Ok.now()}:(wEe=y6.now(),kn.unstable_now=function(){return y6.now()-wEe}),iB=!1,sB=null,Mk=-1,E6=5,C6=0,qk=function(){return kn.unstable_now()>=C6},I6=function(){},kn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):E6=0<t?Math.floor(1e3/t):5},w6=new MessageChannel,Uk=w6.port2,w6.port1.onmessage=function(){if(sB!==null){var t=kn.unstable_now();C6=t+E6;try{sB(!0,t)?Uk.postMessage(null):(iB=!1,sB=null)}catch(e){throw Uk.postMessage(null),e}}else iB=!1},_C=function(t){sB=t,iB||(iB=!0,Uk.postMessage(null))},oB=function(t,e){Mk=yEe(function(){t(kn.unstable_now())},e)},Hk=function(){EEe(Mk),Mk=-1});var UC,d6,m6,mEe,Ok,y6,yEe,EEe,CEe,wEe,iB,sB,Mk,E6,C6,w6,Uk;function B6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<_k(a,e))t[o]=e,t[r]=a,r=o;else break e}}function nc(t){return t=t[0],t===void 0?null:t}function jk(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>_k(u,r))p!==void 0&&0>_k(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>_k(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function _k(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var eu=[],y0=[],Uyt=1,na=null,Lo=3,Gk=!1,om=!1,aB=!1;function Yk(t){for(var e=nc(y0);e!==null;){if(e.callback===null)jk(y0);else if(e.startTime<=t)jk(y0),e.sortIndex=e.expirationTime,B6(eu,e);else break;e=nc(y0)}}function v6(t){if(aB=!1,Yk(t),!om)if(nc(eu)!==null)om=!0,_C(D6);else{var e=nc(y0);e!==null&&oB(v6,e.startTime-t)}}function D6(t,e){om=!1,aB&&(aB=!1,Hk()),Gk=!0;var r=Lo;try{for(Yk(e),na=nc(eu);na!==null&&(!(na.expirationTime>e)||t&&!qk());){var o=na.callback;if(o!==null){na.callback=null,Lo=na.priorityLevel;var a=o(na.expirationTime<=e);e=kn.unstable_now(),typeof a==\"function\"?na.callback=a:na===nc(eu)&&jk(eu),Yk(e)}else jk(eu);na=nc(eu)}if(na!==null)var n=!0;else{var u=nc(y0);u!==null&&oB(v6,u.startTime-e),n=!1}return n}finally{na=null,Lo=r,Gk=!1}}function IEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var _yt=I6;kn.unstable_ImmediatePriority=1;kn.unstable_UserBlockingPriority=2;kn.unstable_NormalPriority=3;kn.unstable_IdlePriority=5;kn.unstable_LowPriority=4;kn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Lo;Lo=t;try{return e()}finally{Lo=r}};kn.unstable_next=function(t){switch(Lo){case 1:case 2:case 3:var e=3;break;default:e=Lo}var r=Lo;Lo=e;try{return t()}finally{Lo=r}};kn.unstable_scheduleCallback=function(t,e,r){var o=kn.unstable_now();if(typeof r==\"object\"&&r!==null){var a=r.delay;a=typeof a==\"number\"&&0<a?o+a:o,r=typeof r.timeout==\"number\"?r.timeout:IEe(t)}else r=IEe(t),a=o;return r=a+r,t={id:Uyt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,B6(y0,t),nc(eu)===null&&t===nc(y0)&&(aB?Hk():aB=!0,oB(v6,a-o))):(t.sortIndex=r,B6(eu,t),om||Gk||(om=!0,_C(D6))),t};kn.unstable_cancelCallback=function(t){t.callback=null};kn.unstable_wrapCallback=function(t){var e=Lo;return function(){var r=Lo;Lo=e;try{return t.apply(this,arguments)}finally{Lo=r}}};kn.unstable_getCurrentPriorityLevel=function(){return Lo};kn.unstable_shouldYield=function(){var t=kn.unstable_now();Yk(t);var e=nc(eu);return e!==na&&na!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<na.expirationTime||qk()};kn.unstable_requestPaint=_yt;kn.unstable_continueExecution=function(){om||Gk||(om=!0,_C(D6))};kn.unstable_pauseExecution=function(){};kn.unstable_getFirstCallbackNode=function(){return nc(eu)};kn.unstable_Profiling=null});var S6=_((gKt,vEe)=>{\"use strict\";vEe.exports=BEe()});var DEe=_((dKt,lB)=>{lB.exports=function t(e){\"use strict\";var r=$H(),o=on(),a=S6();function n(S){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+S,T=1;T<arguments.length;T++)D+=\"&args[]=\"+encodeURIComponent(arguments[T]);return\"Minified React error #\"+S+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty(\"ReactCurrentDispatcher\")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty(\"ReactCurrentBatchConfig\")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol==\"function\"&&Symbol.for,p=A?Symbol.for(\"react.element\"):60103,h=A?Symbol.for(\"react.portal\"):60106,E=A?Symbol.for(\"react.fragment\"):60107,I=A?Symbol.for(\"react.strict_mode\"):60108,v=A?Symbol.for(\"react.profiler\"):60114,x=A?Symbol.for(\"react.provider\"):60109,C=A?Symbol.for(\"react.context\"):60110,R=A?Symbol.for(\"react.concurrent_mode\"):60111,L=A?Symbol.for(\"react.forward_ref\"):60112,U=A?Symbol.for(\"react.suspense\"):60113,J=A?Symbol.for(\"react.suspense_list\"):60120,te=A?Symbol.for(\"react.memo\"):60115,ae=A?Symbol.for(\"react.lazy\"):60116;A&&Symbol.for(\"react.fundamental\"),A&&Symbol.for(\"react.responder\"),A&&Symbol.for(\"react.scope\");var fe=typeof Symbol==\"function\"&&Symbol.iterator;function ce(S){return S===null||typeof S!=\"object\"?null:(S=fe&&S[fe]||S[\"@@iterator\"],typeof S==\"function\"?S:null)}function me(S){if(S._status===-1){S._status=0;var D=S._ctor;D=D(),S._result=D,D.then(function(T){S._status===0&&(T=T.default,S._status=1,S._result=T)},function(T){S._status===0&&(S._status=2,S._result=T)})}}function he(S){if(S==null)return null;if(typeof S==\"function\")return S.displayName||S.name||null;if(typeof S==\"string\")return S;switch(S){case E:return\"Fragment\";case h:return\"Portal\";case v:return\"Profiler\";case I:return\"StrictMode\";case U:return\"Suspense\";case J:return\"SuspenseList\"}if(typeof S==\"object\")switch(S.$$typeof){case C:return\"Context.Consumer\";case x:return\"Context.Provider\";case L:var D=S.render;return D=D.displayName||D.name||\"\",S.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case te:return he(S.type);case ae:if(S=S._status===1?S._result:null)return he(S)}return null}function Be(S){var D=S,T=S;if(S.alternate)for(;D.return;)D=D.return;else{S=D;do D=S,(D.effectTag&1026)!==0&&(T=D.return),S=D.return;while(S)}return D.tag===3?T:null}function we(S){if(Be(S)!==S)throw Error(n(188))}function g(S){var D=S.alternate;if(!D){if(D=Be(S),D===null)throw Error(n(188));return D!==S?null:S}for(var T=S,q=D;;){var Y=T.return;if(Y===null)break;var Ae=Y.alternate;if(Ae===null){if(q=Y.return,q!==null){T=q;continue}break}if(Y.child===Ae.child){for(Ae=Y.child;Ae;){if(Ae===T)return we(Y),S;if(Ae===q)return we(Y),D;Ae=Ae.sibling}throw Error(n(188))}if(T.return!==q.return)T=Y,q=Ae;else{for(var De=!1,vt=Y.child;vt;){if(vt===T){De=!0,T=Y,q=Ae;break}if(vt===q){De=!0,q=Y,T=Ae;break}vt=vt.sibling}if(!De){for(vt=Ae.child;vt;){if(vt===T){De=!0,T=Ae,q=Y;break}if(vt===q){De=!0,q=Ae,T=Y;break}vt=vt.sibling}if(!De)throw Error(n(189))}}if(T.alternate!==q)throw Error(n(190))}if(T.tag!==3)throw Error(n(188));return T.stateNode.current===T?S:D}function Ee(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Se(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var le=e.getPublicInstance,ne=e.getRootHostContext,ee=e.getChildHostContext,Ie=e.prepareForCommit,Fe=e.resetAfterCommit,At=e.createInstance,H=e.appendInitialChild,at=e.finalizeInitialChildren,Re=e.prepareUpdate,ke=e.shouldSetTextContent,xe=e.shouldDeprioritizeSubtree,He=e.createTextInstance,Te=e.setTimeout,Je=e.clearTimeout,qe=e.noTimeout,b=e.isPrimaryRenderer,w=e.supportsMutation,P=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,Z=e.commitMount,ie=e.commitUpdate,Pe=e.insertBefore,Ne=e.insertInContainerBefore,ot=e.removeChild,dt=e.removeChildFromContainer,jt=e.resetTextContent,$t=e.hideInstance,bt=e.hideTextInstance,an=e.unhideInstance,Qr=e.unhideTextInstance,mr=e.cloneInstance,br=e.createContainerChildSet,Wr=e.appendChildToContainerChildSet,Kn=e.finalizeContainerChildren,Ns=e.replaceContainerChildren,Ti=e.cloneHiddenInstance,ps=e.cloneHiddenTextInstance,io=e.canHydrateInstance,Pi=e.canHydrateTextInstance,Ls=e.isSuspenseInstancePending,so=e.isSuspenseInstanceFallback,cc=e.getNextHydratableSibling,cu=e.getFirstHydratableChild,lp=e.hydrateInstance,cp=e.hydrateTextInstance,Os=e.getNextHydratableInstanceAfterSuspenseInstance,Dn=e.commitHydratedContainer,oo=e.commitHydratedSuspenseInstance,Ms=/^(.*)[\\\\\\/]/;function ml(S){var D=\"\";do{e:switch(S.tag){case 3:case 4:case 6:case 7:case 10:case 9:var T=\"\";break e;default:var q=S._debugOwner,Y=S._debugSource,Ae=he(S.type);T=null,q&&(T=he(q.type)),q=Ae,Ae=\"\",Y?Ae=\" (at \"+Y.fileName.replace(Ms,\"\")+\":\"+Y.lineNumber+\")\":T&&(Ae=\" (created by \"+T+\")\"),T=`\n    in `+(q||\"Unknown\")+Ae}D+=T,S=S.return}while(S);return D}var yl=[],ao=-1;function Vn(S){0>ao||(S.current=yl[ao],yl[ao]=null,ao--)}function On(S,D){ao++,yl[ao]=S.current,S.current=D}var Ni={},Mn={current:Ni},_i={current:!1},tr=Ni;function Oe(S,D){var T=S.type.contextTypes;if(!T)return Ni;var q=S.stateNode;if(q&&q.__reactInternalMemoizedUnmaskedChildContext===D)return q.__reactInternalMemoizedMaskedChildContext;var Y={},Ae;for(Ae in T)Y[Ae]=D[Ae];return q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=D,S.__reactInternalMemoizedMaskedChildContext=Y),Y}function ii(S){return S=S.childContextTypes,S!=null}function Ma(S){Vn(_i,S),Vn(Mn,S)}function hr(S){Vn(_i,S),Vn(Mn,S)}function uc(S,D,T){if(Mn.current!==Ni)throw Error(n(168));On(Mn,D,S),On(_i,T,S)}function uu(S,D,T){var q=S.stateNode;if(S=D.childContextTypes,typeof q.getChildContext!=\"function\")return T;q=q.getChildContext();for(var Y in q)if(!(Y in S))throw Error(n(108,he(D)||\"Unknown\",Y));return r({},T,{},q)}function Ac(S){var D=S.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Ni,tr=Mn.current,On(Mn,D,S),On(_i,_i.current,S),!0}function El(S,D,T){var q=S.stateNode;if(!q)throw Error(n(169));T?(D=uu(S,D,tr),q.__reactInternalMemoizedMergedChildContext=D,Vn(_i,S),Vn(Mn,S),On(Mn,D,S)):Vn(_i,S),On(_i,T,S)}var DA=a.unstable_runWithPriority,Au=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,fc=a.unstable_requestPaint,Hi=a.unstable_now,fu=a.unstable_getCurrentPriorityLevel,Yt=a.unstable_ImmediatePriority,Cl=a.unstable_UserBlockingPriority,SA=a.unstable_NormalPriority,up=a.unstable_LowPriority,pc=a.unstable_IdlePriority,PA={},Qn=fc!==void 0?fc:function(){},hi=null,hc=null,bA=!1,sa=Hi(),Li=1e4>sa?Hi:function(){return Hi()-sa};function _o(){switch(fu()){case Yt:return 99;case Cl:return 98;case SA:return 97;case up:return 96;case pc:return 95;default:throw Error(n(332))}}function Ze(S){switch(S){case 99:return Yt;case 98:return Cl;case 97:return SA;case 96:return up;case 95:return pc;default:throw Error(n(332))}}function lo(S,D){return S=Ze(S),DA(S,D)}function gc(S,D,T){return S=Ze(S),Au(S,D,T)}function pu(S){return hi===null?(hi=[S],hc=Au(Yt,hu)):hi.push(S),PA}function qi(){if(hc!==null){var S=hc;hc=null,Ce(S)}hu()}function hu(){if(!bA&&hi!==null){bA=!0;var S=0;try{var D=hi;lo(99,function(){for(;S<D.length;S++){var T=D[S];do T=T(!0);while(T!==null)}}),hi=null}catch(T){throw hi!==null&&(hi=hi.slice(S+1)),Au(Yt,qi),T}finally{bA=!1}}}var xA=3;function Ua(S,D,T){return T/=10,1073741821-(((1073741821-S+D/10)/T|0)+1)*T}function dc(S,D){return S===D&&(S!==0||1/S===1/D)||S!==S&&D!==D}var hs=typeof Object.is==\"function\"?Object.is:dc,_t=Object.prototype.hasOwnProperty;function Fn(S,D){if(hs(S,D))return!0;if(typeof S!=\"object\"||S===null||typeof D!=\"object\"||D===null)return!1;var T=Object.keys(S),q=Object.keys(D);if(T.length!==q.length)return!1;for(q=0;q<T.length;q++)if(!_t.call(D,T[q])||!hs(S[T[q]],D[T[q]]))return!1;return!0}function Ci(S,D){if(S&&S.defaultProps){D=r({},D),S=S.defaultProps;for(var T in S)D[T]===void 0&&(D[T]=S[T])}return D}var oa={current:null},co=null,Us=null,aa=null;function la(){aa=Us=co=null}function Ho(S,D){var T=S.type._context;b?(On(oa,T._currentValue,S),T._currentValue=D):(On(oa,T._currentValue2,S),T._currentValue2=D)}function wi(S){var D=oa.current;Vn(oa,S),S=S.type._context,b?S._currentValue=D:S._currentValue2=D}function gs(S,D){for(;S!==null;){var T=S.alternate;if(S.childExpirationTime<D)S.childExpirationTime=D,T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D);else if(T!==null&&T.childExpirationTime<D)T.childExpirationTime=D;else break;S=S.return}}function ds(S,D){co=S,aa=Us=null,S=S.dependencies,S!==null&&S.firstContext!==null&&(S.expirationTime>=D&&(jo=!0),S.firstContext=null)}function ms(S,D){if(aa!==S&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(aa=S,D=1073741823),D={context:S,observedBits:D,next:null},Us===null){if(co===null)throw Error(n(308));Us=D,co.dependencies={expirationTime:0,firstContext:D,responders:null}}else Us=Us.next=D;return b?S._currentValue:S._currentValue2}var _s=!1;function Un(S){return{baseState:S,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Sn(S){return{baseState:S.baseState,firstUpdate:S.firstUpdate,lastUpdate:S.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function ys(S,D){return{expirationTime:S,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function We(S,D){S.lastUpdate===null?S.firstUpdate=S.lastUpdate=D:(S.lastUpdate.next=D,S.lastUpdate=D)}function tt(S,D){var T=S.alternate;if(T===null){var q=S.updateQueue,Y=null;q===null&&(q=S.updateQueue=Un(S.memoizedState))}else q=S.updateQueue,Y=T.updateQueue,q===null?Y===null?(q=S.updateQueue=Un(S.memoizedState),Y=T.updateQueue=Un(T.memoizedState)):q=S.updateQueue=Sn(Y):Y===null&&(Y=T.updateQueue=Sn(q));Y===null||q===Y?We(q,D):q.lastUpdate===null||Y.lastUpdate===null?(We(q,D),We(Y,D)):(We(q,D),Y.lastUpdate=D)}function It(S,D){var T=S.updateQueue;T=T===null?S.updateQueue=Un(S.memoizedState):nr(S,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function nr(S,D){var T=S.alternate;return T!==null&&D===T.updateQueue&&(D=S.updateQueue=Sn(D)),D}function $(S,D,T,q,Y,Ae){switch(T.tag){case 1:return S=T.payload,typeof S==\"function\"?S.call(Ae,q,Y):S;case 3:S.effectTag=S.effectTag&-4097|64;case 0:if(S=T.payload,Y=typeof S==\"function\"?S.call(Ae,q,Y):S,Y==null)break;return r({},q,Y);case 2:_s=!0}return q}function ye(S,D,T,q,Y){_s=!1,D=nr(S,D);for(var Ae=D.baseState,De=null,vt=0,wt=D.firstUpdate,xt=Ae;wt!==null;){var _r=wt.expirationTime;_r<Y?(De===null&&(De=wt,Ae=xt),vt<_r&&(vt=_r)):(Pw(_r,wt.suspenseConfig),xt=$(S,D,wt,xt,T,q),wt.callback!==null&&(S.effectTag|=32,wt.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=wt:(D.lastEffect.nextEffect=wt,D.lastEffect=wt))),wt=wt.next}for(_r=null,wt=D.firstCapturedUpdate;wt!==null;){var is=wt.expirationTime;is<Y?(_r===null&&(_r=wt,De===null&&(Ae=xt)),vt<is&&(vt=is)):(xt=$(S,D,wt,xt,T,q),wt.callback!==null&&(S.effectTag|=32,wt.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=wt:(D.lastCapturedEffect.nextEffect=wt,D.lastCapturedEffect=wt))),wt=wt.next}De===null&&(D.lastUpdate=null),_r===null?D.lastCapturedUpdate=null:S.effectTag|=32,De===null&&_r===null&&(Ae=xt),D.baseState=Ae,D.firstUpdate=De,D.firstCapturedUpdate=_r,Hm(vt),S.expirationTime=vt,S.memoizedState=xt}function Le(S,D,T){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),pt(D.firstEffect,T),D.firstEffect=D.lastEffect=null,pt(D.firstCapturedEffect,T),D.firstCapturedEffect=D.lastCapturedEffect=null}function pt(S,D){for(;S!==null;){var T=S.callback;if(T!==null){S.callback=null;var q=D;if(typeof T!=\"function\")throw Error(n(191,T));T.call(q)}S=S.nextEffect}}var ht=u.ReactCurrentBatchConfig,Tt=new o.Component().refs;function er(S,D,T,q){D=S.memoizedState,T=T(q,D),T=T==null?D:r({},D,T),S.memoizedState=T,q=S.updateQueue,q!==null&&S.expirationTime===0&&(q.baseState=T)}var $r={isMounted:function(S){return(S=S._reactInternalFiber)?Be(S)===S:!1},enqueueSetState:function(S,D,T){S=S._reactInternalFiber;var q=ga(),Y=ht.suspense;q=qA(q,S,Y),Y=ys(q,Y),Y.payload=D,T!=null&&(Y.callback=T),tt(S,Y),Pc(S,q)},enqueueReplaceState:function(S,D,T){S=S._reactInternalFiber;var q=ga(),Y=ht.suspense;q=qA(q,S,Y),Y=ys(q,Y),Y.tag=1,Y.payload=D,T!=null&&(Y.callback=T),tt(S,Y),Pc(S,q)},enqueueForceUpdate:function(S,D){S=S._reactInternalFiber;var T=ga(),q=ht.suspense;T=qA(T,S,q),q=ys(T,q),q.tag=2,D!=null&&(q.callback=D),tt(S,q),Pc(S,T)}};function ji(S,D,T,q,Y,Ae,De){return S=S.stateNode,typeof S.shouldComponentUpdate==\"function\"?S.shouldComponentUpdate(q,Ae,De):D.prototype&&D.prototype.isPureReactComponent?!Fn(T,q)||!Fn(Y,Ae):!0}function es(S,D,T){var q=!1,Y=Ni,Ae=D.contextType;return typeof Ae==\"object\"&&Ae!==null?Ae=ms(Ae):(Y=ii(D)?tr:Mn.current,q=D.contextTypes,Ae=(q=q!=null)?Oe(S,Y):Ni),D=new D(T,Ae),S.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=$r,S.stateNode=D,D._reactInternalFiber=S,q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=Y,S.__reactInternalMemoizedMaskedChildContext=Ae),D}function bi(S,D,T,q){S=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(T,q),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(T,q),D.state!==S&&$r.enqueueReplaceState(D,D.state,null)}function qo(S,D,T,q){var Y=S.stateNode;Y.props=T,Y.state=S.memoizedState,Y.refs=Tt;var Ae=D.contextType;typeof Ae==\"object\"&&Ae!==null?Y.context=ms(Ae):(Ae=ii(D)?tr:Mn.current,Y.context=Oe(S,Ae)),Ae=S.updateQueue,Ae!==null&&(ye(S,Ae,T,Y,q),Y.state=S.memoizedState),Ae=D.getDerivedStateFromProps,typeof Ae==\"function\"&&(er(S,D,Ae,T),Y.state=S.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof Y.getSnapshotBeforeUpdate==\"function\"||typeof Y.UNSAFE_componentWillMount!=\"function\"&&typeof Y.componentWillMount!=\"function\"||(D=Y.state,typeof Y.componentWillMount==\"function\"&&Y.componentWillMount(),typeof Y.UNSAFE_componentWillMount==\"function\"&&Y.UNSAFE_componentWillMount(),D!==Y.state&&$r.enqueueReplaceState(Y,Y.state,null),Ae=S.updateQueue,Ae!==null&&(ye(S,Ae,T,Y,q),Y.state=S.memoizedState)),typeof Y.componentDidMount==\"function\"&&(S.effectTag|=4)}var kA=Array.isArray;function QA(S,D,T){if(S=T.ref,S!==null&&typeof S!=\"function\"&&typeof S!=\"object\"){if(T._owner){if(T=T._owner,T){if(T.tag!==1)throw Error(n(309));var q=T.stateNode}if(!q)throw Error(n(147,S));var Y=\"\"+S;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===Y?D.ref:(D=function(Ae){var De=q.refs;De===Tt&&(De=q.refs={}),Ae===null?delete De[Y]:De[Y]=Ae},D._stringRef=Y,D)}if(typeof S!=\"string\")throw Error(n(284));if(!T._owner)throw Error(n(290,S))}return S}function Ap(S,D){if(S.type!==\"textarea\")throw Error(n(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D,\"\"))}function ig(S){function D(rt,Ve){if(S){var ft=rt.lastEffect;ft!==null?(ft.nextEffect=Ve,rt.lastEffect=Ve):rt.firstEffect=rt.lastEffect=Ve,Ve.nextEffect=null,Ve.effectTag=8}}function T(rt,Ve){if(!S)return null;for(;Ve!==null;)D(rt,Ve),Ve=Ve.sibling;return null}function q(rt,Ve){for(rt=new Map;Ve!==null;)Ve.key!==null?rt.set(Ve.key,Ve):rt.set(Ve.index,Ve),Ve=Ve.sibling;return rt}function Y(rt,Ve,ft){return rt=WA(rt,Ve,ft),rt.index=0,rt.sibling=null,rt}function Ae(rt,Ve,ft){return rt.index=ft,S?(ft=rt.alternate,ft!==null?(ft=ft.index,ft<Ve?(rt.effectTag=2,Ve):ft):(rt.effectTag=2,Ve)):Ve}function De(rt){return S&&rt.alternate===null&&(rt.effectTag=2),rt}function vt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==6?(Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function wt(rt,Ve,ft,Wt){return Ve!==null&&Ve.elementType===ft.type?(Wt=Y(Ve,ft.props,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt):(Wt=qm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,Wt)}function xt(rt,Ve,ft,Wt){return Ve===null||Ve.tag!==4||Ve.stateNode.containerInfo!==ft.containerInfo||Ve.stateNode.implementation!==ft.implementation?(Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,Ve):(Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,Ve)}function _r(rt,Ve,ft,Wt,vr){return Ve===null||Ve.tag!==7?(Ve=bu(ft,rt.mode,Wt,vr),Ve.return=rt,Ve):(Ve=Y(Ve,ft,Wt),Ve.return=rt,Ve)}function is(rt,Ve,ft){if(typeof Ve==\"string\"||typeof Ve==\"number\")return Ve=Fw(\"\"+Ve,rt.mode,ft),Ve.return=rt,Ve;if(typeof Ve==\"object\"&&Ve!==null){switch(Ve.$$typeof){case p:return ft=qm(Ve.type,Ve.key,Ve.props,null,rt.mode,ft),ft.ref=QA(rt,null,Ve),ft.return=rt,ft;case h:return Ve=Rw(Ve,rt.mode,ft),Ve.return=rt,Ve}if(kA(Ve)||ce(Ve))return Ve=bu(Ve,rt.mode,ft,null),Ve.return=rt,Ve;Ap(rt,Ve)}return null}function di(rt,Ve,ft,Wt){var vr=Ve!==null?Ve.key:null;if(typeof ft==\"string\"||typeof ft==\"number\")return vr!==null?null:vt(rt,Ve,\"\"+ft,Wt);if(typeof ft==\"object\"&&ft!==null){switch(ft.$$typeof){case p:return ft.key===vr?ft.type===E?_r(rt,Ve,ft.props.children,Wt,vr):wt(rt,Ve,ft,Wt):null;case h:return ft.key===vr?xt(rt,Ve,ft,Wt):null}if(kA(ft)||ce(ft))return vr!==null?null:_r(rt,Ve,ft,Wt,null);Ap(rt,ft)}return null}function po(rt,Ve,ft,Wt,vr){if(typeof Wt==\"string\"||typeof Wt==\"number\")return rt=rt.get(ft)||null,vt(Ve,rt,\"\"+Wt,vr);if(typeof Wt==\"object\"&&Wt!==null){switch(Wt.$$typeof){case p:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,Wt.type===E?_r(Ve,rt,Wt.props.children,vr,Wt.key):wt(Ve,rt,Wt,vr);case h:return rt=rt.get(Wt.key===null?ft:Wt.key)||null,xt(Ve,rt,Wt,vr)}if(kA(Wt)||ce(Wt))return rt=rt.get(ft)||null,_r(Ve,rt,Wt,vr,null);Ap(Ve,Wt)}return null}function VA(rt,Ve,ft,Wt){for(var vr=null,Pn=null,Fr=Ve,bn=Ve=0,ai=null;Fr!==null&&bn<ft.length;bn++){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var tn=di(rt,Fr,ft[bn],Wt);if(tn===null){Fr===null&&(Fr=ai);break}S&&Fr&&tn.alternate===null&&D(rt,Fr),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn,Fr=ai}if(bn===ft.length)return T(rt,Fr),vr;if(Fr===null){for(;bn<ft.length;bn++)Fr=is(rt,ft[bn],Wt),Fr!==null&&(Ve=Ae(Fr,Ve,bn),Pn===null?vr=Fr:Pn.sibling=Fr,Pn=Fr);return vr}for(Fr=q(rt,Fr);bn<ft.length;bn++)ai=po(Fr,rt,bn,ft[bn],Wt),ai!==null&&(S&&ai.alternate!==null&&Fr.delete(ai.key===null?bn:ai.key),Ve=Ae(ai,Ve,bn),Pn===null?vr=ai:Pn.sibling=ai,Pn=ai);return S&&Fr.forEach(function(ho){return D(rt,ho)}),vr}function Yo(rt,Ve,ft,Wt){var vr=ce(ft);if(typeof vr!=\"function\")throw Error(n(150));if(ft=vr.call(ft),ft==null)throw Error(n(151));for(var Pn=vr=null,Fr=Ve,bn=Ve=0,ai=null,tn=ft.next();Fr!==null&&!tn.done;bn++,tn=ft.next()){Fr.index>bn?(ai=Fr,Fr=null):ai=Fr.sibling;var ho=di(rt,Fr,tn.value,Wt);if(ho===null){Fr===null&&(Fr=ai);break}S&&Fr&&ho.alternate===null&&D(rt,Fr),Ve=Ae(ho,Ve,bn),Pn===null?vr=ho:Pn.sibling=ho,Pn=ho,Fr=ai}if(tn.done)return T(rt,Fr),vr;if(Fr===null){for(;!tn.done;bn++,tn=ft.next())tn=is(rt,tn.value,Wt),tn!==null&&(Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return vr}for(Fr=q(rt,Fr);!tn.done;bn++,tn=ft.next())tn=po(Fr,rt,bn,tn.value,Wt),tn!==null&&(S&&tn.alternate!==null&&Fr.delete(tn.key===null?bn:tn.key),Ve=Ae(tn,Ve,bn),Pn===null?vr=tn:Pn.sibling=tn,Pn=tn);return S&&Fr.forEach(function(vF){return D(rt,vF)}),vr}return function(rt,Ve,ft,Wt){var vr=typeof ft==\"object\"&&ft!==null&&ft.type===E&&ft.key===null;vr&&(ft=ft.props.children);var Pn=typeof ft==\"object\"&&ft!==null;if(Pn)switch(ft.$$typeof){case p:e:{for(Pn=ft.key,vr=Ve;vr!==null;){if(vr.key===Pn)if(vr.tag===7?ft.type===E:vr.elementType===ft.type){T(rt,vr.sibling),Ve=Y(vr,ft.type===E?ft.props.children:ft.props,Wt),Ve.ref=QA(rt,vr,ft),Ve.return=rt,rt=Ve;break e}else{T(rt,vr);break}else D(rt,vr);vr=vr.sibling}ft.type===E?(Ve=bu(ft.props.children,rt.mode,Wt,ft.key),Ve.return=rt,rt=Ve):(Wt=qm(ft.type,ft.key,ft.props,null,rt.mode,Wt),Wt.ref=QA(rt,Ve,ft),Wt.return=rt,rt=Wt)}return De(rt);case h:e:{for(vr=ft.key;Ve!==null;){if(Ve.key===vr)if(Ve.tag===4&&Ve.stateNode.containerInfo===ft.containerInfo&&Ve.stateNode.implementation===ft.implementation){T(rt,Ve.sibling),Ve=Y(Ve,ft.children||[],Wt),Ve.return=rt,rt=Ve;break e}else{T(rt,Ve);break}else D(rt,Ve);Ve=Ve.sibling}Ve=Rw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve}return De(rt)}if(typeof ft==\"string\"||typeof ft==\"number\")return ft=\"\"+ft,Ve!==null&&Ve.tag===6?(T(rt,Ve.sibling),Ve=Y(Ve,ft,Wt),Ve.return=rt,rt=Ve):(T(rt,Ve),Ve=Fw(ft,rt.mode,Wt),Ve.return=rt,rt=Ve),De(rt);if(kA(ft))return VA(rt,Ve,ft,Wt);if(ce(ft))return Yo(rt,Ve,ft,Wt);if(Pn&&Ap(rt,ft),typeof ft>\"u\"&&!vr)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||\"Component\"))}return T(rt,Ve)}}var gu=ig(!0),sg=ig(!1),du={},uo={current:du},FA={current:du},mc={current:du};function ca(S){if(S===du)throw Error(n(174));return S}function og(S,D){On(mc,D,S),On(FA,S,S),On(uo,du,S),D=ne(D),Vn(uo,S),On(uo,D,S)}function yc(S){Vn(uo,S),Vn(FA,S),Vn(mc,S)}function Pm(S){var D=ca(mc.current),T=ca(uo.current);D=ee(T,S.type,D),T!==D&&(On(FA,S,S),On(uo,D,S))}function ag(S){FA.current===S&&(Vn(uo,S),Vn(FA,S))}var $n={current:0};function fp(S){for(var D=S;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Ls(T)||so(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break;for(;D.sibling===null;){if(D.return===null||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function lg(S,D){return{responder:S,props:D}}var RA=u.ReactCurrentDispatcher,Hs=u.ReactCurrentBatchConfig,mu=0,Ha=null,Gi=null,ua=null,yu=null,Es=null,Ec=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0;function ct(){throw Error(n(321))}function Eu(S,D){if(D===null)return!1;for(var T=0;T<D.length&&T<S.length;T++)if(!hs(S[T],D[T]))return!1;return!0}function cg(S,D,T,q,Y,Ae){if(mu=Ae,Ha=D,ua=S!==null?S.memoizedState:null,RA.current=ua===null?Ew:km,D=T(q,Y),wl){do wl=!1,wc+=1,ua=S!==null?S.memoizedState:null,Ec=yu,G=Es=Gi=null,RA.current=km,D=T(q,Y);while(wl);xi=null,wc=0}if(RA.current=wu,S=Ha,S.memoizedState=yu,S.expirationTime=Cc,S.updateQueue=G,S.effectTag|=Dt,S=Gi!==null&&Gi.next!==null,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,S)throw Error(n(300));return D}function yw(){RA.current=wu,mu=0,Ec=Es=yu=ua=Gi=Ha=null,Cc=0,G=null,Dt=0,wl=!1,xi=null,wc=0}function TA(){var S={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return Es===null?yu=Es=S:Es=Es.next=S,Es}function pp(){if(Ec!==null)Es=Ec,Ec=Es.next,Gi=ua,ua=Gi!==null?Gi.next:null;else{if(ua===null)throw Error(n(310));Gi=ua;var S={memoizedState:Gi.memoizedState,baseState:Gi.baseState,queue:Gi.queue,baseUpdate:Gi.baseUpdate,next:null};Es=Es===null?yu=S:Es.next=S,ua=Gi.next}return Es}function Br(S,D){return typeof D==\"function\"?D(S):D}function Cs(S){var D=pp(),T=D.queue;if(T===null)throw Error(n(311));if(T.lastRenderedReducer=S,0<wc){var q=T.dispatch;if(xi!==null){var Y=xi.get(T);if(Y!==void 0){xi.delete(T);var Ae=D.memoizedState;do Ae=S(Ae,Y.action),Y=Y.next;while(Y!==null);return hs(Ae,D.memoizedState)||(jo=!0),D.memoizedState=Ae,D.baseUpdate===T.last&&(D.baseState=Ae),T.lastRenderedState=Ae,[Ae,q]}}return[D.memoizedState,q]}q=T.last;var De=D.baseUpdate;if(Ae=D.baseState,De!==null?(q!==null&&(q.next=null),q=De.next):q=q!==null?q.next:null,q!==null){var vt=Y=null,wt=q,xt=!1;do{var _r=wt.expirationTime;_r<mu?(xt||(xt=!0,vt=De,Y=Ae),_r>Cc&&(Cc=_r,Hm(Cc))):(Pw(_r,wt.suspenseConfig),Ae=wt.eagerReducer===S?wt.eagerState:S(Ae,wt.action)),De=wt,wt=wt.next}while(wt!==null&&wt!==q);xt||(vt=De,Y=Ae),hs(Ae,D.memoizedState)||(jo=!0),D.memoizedState=Ae,D.baseUpdate=vt,D.baseState=Y,T.lastRenderedState=Ae}return[D.memoizedState,T.dispatch]}function ug(S){var D=TA();return typeof S==\"function\"&&(S=S()),D.memoizedState=D.baseState=S,S=D.queue={last:null,dispatch:null,lastRenderedReducer:Br,lastRenderedState:S},S=S.dispatch=gg.bind(null,Ha,S),[D.memoizedState,S]}function Ag(S){return Cs(Br,S)}function fg(S,D,T,q){return S={tag:S,create:D,destroy:T,deps:q,next:null},G===null?(G={lastEffect:null},G.lastEffect=S.next=S):(D=G.lastEffect,D===null?G.lastEffect=S.next=S:(T=D.next,D.next=S,S.next=T,G.lastEffect=S)),S}function hp(S,D,T,q){var Y=TA();Dt|=S,Y.memoizedState=fg(D,T,void 0,q===void 0?null:q)}function Ic(S,D,T,q){var Y=pp();q=q===void 0?null:q;var Ae=void 0;if(Gi!==null){var De=Gi.memoizedState;if(Ae=De.destroy,q!==null&&Eu(q,De.deps)){fg(0,T,Ae,q);return}}Dt|=S,Y.memoizedState=fg(D,T,Ae,q)}function Ct(S,D){return hp(516,192,S,D)}function bm(S,D){return Ic(516,192,S,D)}function pg(S,D){if(typeof D==\"function\")return S=S(),D(S),function(){D(null)};if(D!=null)return S=S(),D.current=S,function(){D.current=null}}function hg(){}function Cu(S,D){return TA().memoizedState=[S,D===void 0?null:D],S}function xm(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Eu(D,q[1])?q[0]:(T.memoizedState=[S,D],S)}function gg(S,D,T){if(!(25>wc))throw Error(n(301));var q=S.alternate;if(S===Ha||q!==null&&q===Ha)if(wl=!0,S={expirationTime:mu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},xi===null&&(xi=new Map),T=xi.get(D),T===void 0)xi.set(D,S);else{for(D=T;D.next!==null;)D=D.next;D.next=S}else{var Y=ga(),Ae=ht.suspense;Y=qA(Y,S,Ae),Ae={expirationTime:Y,suspenseConfig:Ae,action:T,eagerReducer:null,eagerState:null,next:null};var De=D.last;if(De===null)Ae.next=Ae;else{var vt=De.next;vt!==null&&(Ae.next=vt),De.next=Ae}if(D.last=Ae,S.expirationTime===0&&(q===null||q.expirationTime===0)&&(q=D.lastRenderedReducer,q!==null))try{var wt=D.lastRenderedState,xt=q(wt,T);if(Ae.eagerReducer=q,Ae.eagerState=xt,hs(xt,wt))return}catch{}finally{}Pc(S,Y)}}var wu={readContext:ms,useCallback:ct,useContext:ct,useEffect:ct,useImperativeHandle:ct,useLayoutEffect:ct,useMemo:ct,useReducer:ct,useRef:ct,useState:ct,useDebugValue:ct,useResponder:ct,useDeferredValue:ct,useTransition:ct},Ew={readContext:ms,useCallback:Cu,useContext:ms,useEffect:Ct,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,hp(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return hp(4,36,S,D)},useMemo:function(S,D){var T=TA();return D=D===void 0?null:D,S=S(),T.memoizedState=[S,D],S},useReducer:function(S,D,T){var q=TA();return D=T!==void 0?T(D):D,q.memoizedState=q.baseState=D,S=q.queue={last:null,dispatch:null,lastRenderedReducer:S,lastRenderedState:D},S=S.dispatch=gg.bind(null,Ha,S),[q.memoizedState,S]},useRef:function(S){var D=TA();return S={current:S},D.memoizedState=S},useState:ug,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=ug(S),q=T[0],Y=T[1];return Ct(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),q},useTransition:function(S){var D=ug(!1),T=D[0],q=D[1];return[Cu(function(Y){q(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{q(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},km={readContext:ms,useCallback:xm,useContext:ms,useEffect:bm,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,Ic(4,36,pg.bind(null,D,S),T)},useLayoutEffect:function(S,D){return Ic(4,36,S,D)},useMemo:function(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Eu(D,q[1])?q[0]:(S=S(),T.memoizedState=[S,D],S)},useReducer:Cs,useRef:function(){return pp().memoizedState},useState:Ag,useDebugValue:hg,useResponder:lg,useDeferredValue:function(S,D){var T=Ag(S),q=T[0],Y=T[1];return bm(function(){a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=D===void 0?null:D;try{Y(S)}finally{Hs.suspense=Ae}})},[S,D]),q},useTransition:function(S){var D=Ag(!1),T=D[0],q=D[1];return[xm(function(Y){q(!0),a.unstable_next(function(){var Ae=Hs.suspense;Hs.suspense=S===void 0?null:S;try{q(!1),Y()}finally{Hs.suspense=Ae}})},[S,T]),T]}},Aa=null,Bc=null,Il=!1;function Iu(S,D){var T=Dl(5,null,null,0);T.elementType=\"DELETED\",T.type=\"DELETED\",T.stateNode=D,T.return=S,T.effectTag=8,S.lastEffect!==null?(S.lastEffect.nextEffect=T,S.lastEffect=T):S.firstEffect=S.lastEffect=T}function dg(S,D){switch(S.tag){case 5:return D=io(D,S.type,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 6:return D=Pi(D,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function NA(S){if(Il){var D=Bc;if(D){var T=D;if(!dg(S,D)){if(D=cc(T),!D||!dg(S,D)){S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S;return}Iu(Aa,T)}Aa=S,Bc=cu(D)}else S.effectTag=S.effectTag&-1025|2,Il=!1,Aa=S}}function gp(S){for(S=S.return;S!==null&&S.tag!==5&&S.tag!==3&&S.tag!==13;)S=S.return;Aa=S}function qa(S){if(!y||S!==Aa)return!1;if(!Il)return gp(S),Il=!0,!1;var D=S.type;if(S.tag!==5||D!==\"head\"&&D!==\"body\"&&!ke(D,S.memoizedProps))for(D=Bc;D;)Iu(S,D),D=cc(D);if(gp(S),S.tag===13){if(!y)throw Error(n(316));if(S=S.memoizedState,S=S!==null?S.dehydrated:null,!S)throw Error(n(317));Bc=Os(S)}else Bc=Aa?cc(S.stateNode):null;return!0}function mg(){y&&(Bc=Aa=null,Il=!1)}var dp=u.ReactCurrentOwner,jo=!1;function ws(S,D,T,q){D.child=S===null?sg(D,null,T,q):gu(D,S.child,T,q)}function Ii(S,D,T,q,Y){T=T.render;var Ae=D.ref;return ds(D,Y),q=cg(S,D,T,q,Ae,Y),S!==null&&!jo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=Y&&(S.expirationTime=0),si(S,D,Y)):(D.effectTag|=1,ws(S,D,q,Y),D.child)}function Qm(S,D,T,q,Y,Ae){if(S===null){var De=T.type;return typeof De==\"function\"&&!Qw(De)&&De.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=De,Fm(S,D,De,q,Y,Ae)):(S=qm(T.type,null,q,null,D.mode,Ae),S.ref=D.ref,S.return=D,D.child=S)}return De=S.child,Y<Ae&&(Y=De.memoizedProps,T=T.compare,T=T!==null?T:Fn,T(Y,q)&&S.ref===D.ref)?si(S,D,Ae):(D.effectTag|=1,S=WA(De,q,Ae),S.ref=D.ref,S.return=D,D.child=S)}function Fm(S,D,T,q,Y,Ae){return S!==null&&Fn(S.memoizedProps,q)&&S.ref===D.ref&&(jo=!1,Y<Ae)?si(S,D,Ae):LA(S,D,T,q,Ae)}function Go(S,D){var T=D.ref;(S===null&&T!==null||S!==null&&S.ref!==T)&&(D.effectTag|=128)}function LA(S,D,T,q,Y){var Ae=ii(T)?tr:Mn.current;return Ae=Oe(D,Ae),ds(D,Y),T=cg(S,D,T,q,Ae,Y),S!==null&&!jo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=Y&&(S.expirationTime=0),si(S,D,Y)):(D.effectTag|=1,ws(S,D,T,Y),D.child)}function mp(S,D,T,q,Y){if(ii(T)){var Ae=!0;Ac(D)}else Ae=!1;if(ds(D,Y),D.stateNode===null)S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),es(D,T,q,Y),qo(D,T,q,Y),q=!0;else if(S===null){var De=D.stateNode,vt=D.memoizedProps;De.props=vt;var wt=De.context,xt=T.contextType;typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt));var _r=T.getDerivedStateFromProps,is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\";is||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==q||wt!==xt)&&bi(D,De,q,xt),_s=!1;var di=D.memoizedState;wt=De.state=di;var po=D.updateQueue;po!==null&&(ye(D,po,q,De,Y),wt=D.memoizedState),vt!==q||di!==wt||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,q),wt=D.memoizedState),(vt=_s||ji(D,T,vt,q,di,wt,xt))?(is||typeof De.UNSAFE_componentWillMount!=\"function\"&&typeof De.componentWillMount!=\"function\"||(typeof De.componentWillMount==\"function\"&&De.componentWillMount(),typeof De.UNSAFE_componentWillMount==\"function\"&&De.UNSAFE_componentWillMount()),typeof De.componentDidMount==\"function\"&&(D.effectTag|=4)):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),D.memoizedProps=q,D.memoizedState=wt),De.props=q,De.state=wt,De.context=xt,q=vt):(typeof De.componentDidMount==\"function\"&&(D.effectTag|=4),q=!1)}else De=D.stateNode,vt=D.memoizedProps,De.props=D.type===D.elementType?vt:Ci(D.type,vt),wt=De.context,xt=T.contextType,typeof xt==\"object\"&&xt!==null?xt=ms(xt):(xt=ii(T)?tr:Mn.current,xt=Oe(D,xt)),_r=T.getDerivedStateFromProps,(is=typeof _r==\"function\"||typeof De.getSnapshotBeforeUpdate==\"function\")||typeof De.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof De.componentWillReceiveProps!=\"function\"||(vt!==q||wt!==xt)&&bi(D,De,q,xt),_s=!1,wt=D.memoizedState,di=De.state=wt,po=D.updateQueue,po!==null&&(ye(D,po,q,De,Y),di=D.memoizedState),vt!==q||wt!==di||_i.current||_s?(typeof _r==\"function\"&&(er(D,T,_r,q),di=D.memoizedState),(_r=_s||ji(D,T,vt,q,wt,di,xt))?(is||typeof De.UNSAFE_componentWillUpdate!=\"function\"&&typeof De.componentWillUpdate!=\"function\"||(typeof De.componentWillUpdate==\"function\"&&De.componentWillUpdate(q,di,xt),typeof De.UNSAFE_componentWillUpdate==\"function\"&&De.UNSAFE_componentWillUpdate(q,di,xt)),typeof De.componentDidUpdate==\"function\"&&(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate==\"function\"&&(D.effectTag|=256)):(typeof De.componentDidUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=256),D.memoizedProps=q,D.memoizedState=di),De.props=q,De.state=di,De.context=xt,q=_r):(typeof De.componentDidUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=4),typeof De.getSnapshotBeforeUpdate!=\"function\"||vt===S.memoizedProps&&wt===S.memoizedState||(D.effectTag|=256),q=!1);return yp(S,D,T,q,Ae,Y)}function yp(S,D,T,q,Y,Ae){Go(S,D);var De=(D.effectTag&64)!==0;if(!q&&!De)return Y&&El(D,T,!1),si(S,D,Ae);q=D.stateNode,dp.current=D;var vt=De&&typeof T.getDerivedStateFromError!=\"function\"?null:q.render();return D.effectTag|=1,S!==null&&De?(D.child=gu(D,S.child,null,Ae),D.child=gu(D,null,vt,Ae)):ws(S,D,vt,Ae),D.memoizedState=q.state,Y&&El(D,T,!0),D.child}function yg(S){var D=S.stateNode;D.pendingContext?uc(S,D.pendingContext,D.pendingContext!==D.context):D.context&&uc(S,D.context,!1),og(S,D.containerInfo)}var fa={dehydrated:null,retryTime:0};function ln(S,D,T){var q=D.mode,Y=D.pendingProps,Ae=$n.current,De=!1,vt;if((vt=(D.effectTag&64)!==0)||(vt=(Ae&2)!==0&&(S===null||S.memoizedState!==null)),vt?(De=!0,D.effectTag&=-65):S!==null&&S.memoizedState===null||Y.fallback===void 0||Y.unstable_avoidThisFallback===!0||(Ae|=1),On($n,Ae&1,D),S===null){if(Y.fallback!==void 0&&NA(D),De){if(De=Y.fallback,Y=bu(null,q,0,null),Y.return=D,(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,Y.child=S;S!==null;)S.return=Y,S=S.sibling;return T=bu(De,q,T,null),T.return=D,Y.sibling=T,D.memoizedState=fa,D.child=Y,T}return q=Y.children,D.memoizedState=null,D.child=sg(D,null,q,T)}if(S.memoizedState!==null){if(S=S.child,q=S.sibling,De){if(Y=Y.fallback,T=WA(S,S.pendingProps,0),T.return=D,(D.mode&2)===0&&(De=D.memoizedState!==null?D.child.child:D.child,De!==S.child))for(T.child=De;De!==null;)De.return=T,De=De.sibling;return q=WA(q,Y,q.expirationTime),q.return=D,T.sibling=q,T.childExpirationTime=0,D.memoizedState=fa,D.child=T,q}return T=gu(D,S.child,Y.children,T),D.memoizedState=null,D.child=T}if(S=S.child,De){if(De=Y.fallback,Y=bu(null,q,0,null),Y.return=D,Y.child=S,S!==null&&(S.return=Y),(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,Y.child=S;S!==null;)S.return=Y,S=S.sibling;return T=bu(De,q,T,null),T.return=D,Y.sibling=T,T.effectTag|=2,Y.childExpirationTime=0,D.memoizedState=fa,D.child=Y,T}return D.memoizedState=null,D.child=gu(D,S,Y.children,T)}function Ao(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D),gs(S.return,D)}function OA(S,D,T,q,Y,Ae){var De=S.memoizedState;De===null?S.memoizedState={isBackwards:D,rendering:null,last:q,tail:T,tailExpiration:0,tailMode:Y,lastEffect:Ae}:(De.isBackwards=D,De.rendering=null,De.last=q,De.tail=T,De.tailExpiration=0,De.tailMode=Y,De.lastEffect=Ae)}function ja(S,D,T){var q=D.pendingProps,Y=q.revealOrder,Ae=q.tail;if(ws(S,D,q.children,T),q=$n.current,(q&2)!==0)q=q&1|2,D.effectTag|=64;else{if(S!==null&&(S.effectTag&64)!==0)e:for(S=D.child;S!==null;){if(S.tag===13)S.memoizedState!==null&&Ao(S,T);else if(S.tag===19)Ao(S,T);else if(S.child!==null){S.child.return=S,S=S.child;continue}if(S===D)break e;for(;S.sibling===null;){if(S.return===null||S.return===D)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}q&=1}if(On($n,q,D),(D.mode&2)===0)D.memoizedState=null;else switch(Y){case\"forwards\":for(T=D.child,Y=null;T!==null;)S=T.alternate,S!==null&&fp(S)===null&&(Y=T),T=T.sibling;T=Y,T===null?(Y=D.child,D.child=null):(Y=T.sibling,T.sibling=null),OA(D,!1,Y,T,Ae,D.lastEffect);break;case\"backwards\":for(T=null,Y=D.child,D.child=null;Y!==null;){if(S=Y.alternate,S!==null&&fp(S)===null){D.child=Y;break}S=Y.sibling,Y.sibling=T,T=Y,Y=S}OA(D,!0,T,null,Ae,D.lastEffect);break;case\"together\":OA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function si(S,D,T){S!==null&&(D.dependencies=S.dependencies);var q=D.expirationTime;if(q!==0&&Hm(q),D.childExpirationTime<T)return null;if(S!==null&&D.child!==S.child)throw Error(n(153));if(D.child!==null){for(S=D.child,T=WA(S,S.pendingProps,S.expirationTime),D.child=T,T.return=D;S.sibling!==null;)S=S.sibling,T=T.sibling=WA(S,S.pendingProps,S.expirationTime),T.return=D;T.sibling=null}return D.child}function pa(S){S.effectTag|=4}var vc,Bl,ts,Gr;if(w)vc=function(S,D){for(var T=D.child;T!==null;){if(T.tag===5||T.tag===6)H(S,T.stateNode);else if(T.tag!==4&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===D)break;for(;T.sibling===null;){if(T.return===null||T.return===D)return;T=T.return}T.sibling.return=T.return,T=T.sibling}},Bl=function(){},ts=function(S,D,T,q,Y){if(S=S.memoizedProps,S!==q){var Ae=D.stateNode,De=ca(uo.current);T=Re(Ae,T,S,q,Y,De),(D.updateQueue=T)&&pa(D)}},Gr=function(S,D,T,q){T!==q&&pa(D)};else if(P){vc=function(S,D,T,q){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&q&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),H(S,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&q&&(Ae=ps(Ae,Y.memoizedProps,Y)),H(S,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,vc(S,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};var Ep=function(S,D,T,q){for(var Y=D.child;Y!==null;){if(Y.tag===5){var Ae=Y.stateNode;T&&q&&(Ae=Ti(Ae,Y.type,Y.memoizedProps,Y)),Wr(S,Ae)}else if(Y.tag===6)Ae=Y.stateNode,T&&q&&(Ae=ps(Ae,Y.memoizedProps,Y)),Wr(S,Ae);else if(Y.tag!==4){if(Y.tag===13&&(Y.effectTag&4)!==0&&(Ae=Y.memoizedState!==null)){var De=Y.child;if(De!==null&&(De.child!==null&&(De.child.return=De,Ep(S,De,!0,Ae)),Ae=De.sibling,Ae!==null)){Ae.return=Y,Y=Ae;continue}}if(Y.child!==null){Y.child.return=Y,Y=Y.child;continue}}if(Y===D)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===D)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}};Bl=function(S){var D=S.stateNode;if(S.firstEffect!==null){var T=D.containerInfo,q=br(T);Ep(q,S,!1,!1),D.pendingChildren=q,pa(S),Kn(T,q)}},ts=function(S,D,T,q,Y){var Ae=S.stateNode,De=S.memoizedProps;if((S=D.firstEffect===null)&&De===q)D.stateNode=Ae;else{var vt=D.stateNode,wt=ca(uo.current),xt=null;De!==q&&(xt=Re(vt,T,De,q,Y,wt)),S&&xt===null?D.stateNode=Ae:(Ae=mr(Ae,xt,T,De,q,D,S,vt),at(Ae,T,q,Y,wt)&&pa(D),D.stateNode=Ae,S?pa(D):vc(Ae,D,!1,!1))}},Gr=function(S,D,T,q){T!==q&&(S=ca(mc.current),T=ca(uo.current),D.stateNode=He(q,S,T,D),pa(D))}}else Bl=function(){},ts=function(){},Gr=function(){};function Dc(S,D){switch(S.tailMode){case\"hidden\":D=S.tail;for(var T=null;D!==null;)D.alternate!==null&&(T=D),D=D.sibling;T===null?S.tail=null:T.sibling=null;break;case\"collapsed\":T=S.tail;for(var q=null;T!==null;)T.alternate!==null&&(q=T),T=T.sibling;q===null?D||S.tail===null?S.tail=null:S.tail.sibling=null:q.sibling=null}}function Cw(S){switch(S.tag){case 1:ii(S.type)&&Ma(S);var D=S.effectTag;return D&4096?(S.effectTag=D&-4097|64,S):null;case 3:if(yc(S),hr(S),D=S.effectTag,(D&64)!==0)throw Error(n(285));return S.effectTag=D&-4097|64,S;case 5:return ag(S),null;case 13:return Vn($n,S),D=S.effectTag,D&4096?(S.effectTag=D&-4097|64,S):null;case 19:return Vn($n,S),null;case 4:return yc(S),null;case 10:return wi(S),null;default:return null}}function Eg(S,D){return{value:S,source:D,stack:ml(D)}}var Cg=typeof WeakSet==\"function\"?WeakSet:Set;function Ga(S,D){var T=D.source,q=D.stack;q===null&&T!==null&&(q=ml(T)),T!==null&&he(T.type),D=D.value,S!==null&&S.tag===1&&he(S.type);try{console.error(D)}catch(Y){setTimeout(function(){throw Y})}}function Rm(S,D){try{D.props=S.memoizedProps,D.state=S.memoizedState,D.componentWillUnmount()}catch(T){YA(S,T)}}function wg(S){var D=S.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(T){YA(S,T)}else D.current=null}function Qt(S,D){switch(D.tag){case 0:case 11:case 15:N(2,0,D);break;case 1:if(D.effectTag&256&&S!==null){var T=S.memoizedProps,q=S.memoizedState;S=D.stateNode,D=S.getSnapshotBeforeUpdate(D.elementType===D.type?T:Ci(D.type,T),q),S.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function N(S,D,T){if(T=T.updateQueue,T=T!==null?T.lastEffect:null,T!==null){var q=T=T.next;do{if((q.tag&S)!==0){var Y=q.destroy;q.destroy=void 0,Y!==void 0&&Y()}(q.tag&D)!==0&&(Y=q.create,q.destroy=Y()),q=q.next}while(q!==T)}}function K(S,D,T){switch(typeof kw==\"function\"&&kw(D),D.tag){case 0:case 11:case 14:case 15:if(S=D.updateQueue,S!==null&&(S=S.lastEffect,S!==null)){var q=S.next;lo(97<T?97:T,function(){var Y=q;do{var Ae=Y.destroy;if(Ae!==void 0){var De=D;try{Ae()}catch(vt){YA(De,vt)}}Y=Y.next}while(Y!==q)})}break;case 1:wg(D),T=D.stateNode,typeof T.componentWillUnmount==\"function\"&&Rm(D,T);break;case 5:wg(D);break;case 4:w?Cr(S,D,T):P&&ze(D)}}function re(S,D,T){for(var q=D;;)if(K(S,q,T),q.child===null||w&&q.tag===4){if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return}q.sibling.return=q.return,q=q.sibling}else q.child.return=q,q=q.child}function pe(S){var D=S.alternate;S.return=null,S.child=null,S.memoizedState=null,S.updateQueue=null,S.dependencies=null,S.alternate=null,S.firstEffect=null,S.lastEffect=null,S.pendingProps=null,S.memoizedProps=null,D!==null&&pe(D)}function ze(S){if(P){S=S.stateNode.containerInfo;var D=br(S);Ns(S,D)}}function mt(S){return S.tag===5||S.tag===3||S.tag===4}function fr(S){if(w){e:{for(var D=S.return;D!==null;){if(mt(D)){var T=D;break e}D=D.return}throw Error(n(160))}switch(D=T.stateNode,T.tag){case 5:var q=!1;break;case 3:D=D.containerInfo,q=!0;break;case 4:D=D.containerInfo,q=!0;break;default:throw Error(n(161))}T.effectTag&16&&(jt(D),T.effectTag&=-17);e:t:for(T=S;;){for(;T.sibling===null;){if(T.return===null||mt(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.effectTag&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.effectTag&2)){T=T.stateNode;break e}}for(var Y=S;;){var Ae=Y.tag===5||Y.tag===6;if(Ae)Ae=Ae?Y.stateNode:Y.stateNode.instance,T?q?Ne(D,Ae,T):Pe(D,Ae,T):q?z(D,Ae):F(D,Ae);else if(Y.tag!==4&&Y.child!==null){Y.child.return=Y,Y=Y.child;continue}if(Y===S)break;for(;Y.sibling===null;){if(Y.return===null||Y.return===S)return;Y=Y.return}Y.sibling.return=Y.return,Y=Y.sibling}}}function Cr(S,D,T){for(var q=D,Y=!1,Ae,De;;){if(!Y){Y=q.return;e:for(;;){if(Y===null)throw Error(n(160));switch(Ae=Y.stateNode,Y.tag){case 5:De=!1;break e;case 3:Ae=Ae.containerInfo,De=!0;break e;case 4:Ae=Ae.containerInfo,De=!0;break e}Y=Y.return}Y=!0}if(q.tag===5||q.tag===6)re(S,q,T),De?dt(Ae,q.stateNode):ot(Ae,q.stateNode);else if(q.tag===4){if(q.child!==null){Ae=q.stateNode.containerInfo,De=!0,q.child.return=q,q=q.child;continue}}else if(K(S,q,T),q.child!==null){q.child.return=q,q=q.child;continue}if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return,q.tag===4&&(Y=!1)}q.sibling.return=q.return,q=q.sibling}}function yn(S,D){if(w)switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);break;case 1:break;case 5:var T=D.stateNode;if(T!=null){var q=D.memoizedProps;S=S!==null?S.memoizedProps:q;var Y=D.type,Ae=D.updateQueue;D.updateQueue=null,Ae!==null&&ie(T,Ae,Y,S,q,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));T=D.memoizedProps,X(D.stateNode,S!==null?S.memoizedProps:T,T);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Dn(D.containerInfo)));break;case 12:break;case 13:oi(D),Oi(D);break;case 19:Oi(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);return;case 12:return;case 13:oi(D),Oi(D);return;case 19:Oi(D);return;case 3:y&&(T=D.stateNode,T.hydrate&&(T.hydrate=!1,Dn(T.containerInfo)))}e:if(P)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,Ns(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function oi(S){var D=S;if(S.memoizedState===null)var T=!1;else T=!0,D=S.child,Bw=Li();if(w&&D!==null){e:if(S=D,w)for(D=S;;){if(D.tag===5){var q=D.stateNode;T?$t(q):an(D.stateNode,D.memoizedProps)}else if(D.tag===6)q=D.stateNode,T?bt(q):Qr(q,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){q=D.child.sibling,q.return=D,D=q;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break e;for(;D.sibling===null;){if(D.return===null||D.return===S)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Oi(S){var D=S.updateQueue;if(D!==null){S.updateQueue=null;var T=S.stateNode;T===null&&(T=S.stateNode=new Cg),D.forEach(function(q){var Y=yF.bind(null,S,q);T.has(q)||(T.add(q),q.then(Y,Y))})}}var Ig=typeof WeakMap==\"function\"?WeakMap:Map;function Gv(S,D,T){T=ys(T,null),T.tag=3,T.payload={element:null};var q=D.value;return T.callback=function(){vu||(vu=!0,Mm=q),Ga(S,D)},T}function Yv(S,D,T){T=ys(T,null),T.tag=3;var q=S.type.getDerivedStateFromError;if(typeof q==\"function\"){var Y=D.value;T.payload=function(){return Ga(S,D),q(Y)}}var Ae=S.stateNode;return Ae!==null&&typeof Ae.componentDidCatch==\"function\"&&(T.callback=function(){typeof q!=\"function\"&&(Du===null?Du=new Set([this]):Du.add(this),Ga(S,D));var De=D.stack;this.componentDidCatch(D.value,{componentStack:De!==null?De:\"\"})}),T}var ww=Math.ceil,Cp=u.ReactCurrentDispatcher,Iw=u.ReactCurrentOwner,En=0,Tm=8,rs=16,qs=32,Bu=0,Nm=1,Bi=2,ha=3,vl=4,Sc=5,yr=En,gi=null,Or=null,ns=0,Yi=Bu,Lm=null,Ya=1073741823,MA=1073741823,Om=null,wp=0,UA=!1,Bw=0,vw=500,sr=null,vu=!1,Mm=null,Du=null,Ip=!1,Bg=null,_A=90,HA=null,vg=0,Dw=null,Um=0;function ga(){return(yr&(rs|qs))!==En?1073741821-(Li()/10|0):Um!==0?Um:Um=1073741821-(Li()/10|0)}function qA(S,D,T){if(D=D.mode,(D&2)===0)return 1073741823;var q=_o();if((D&4)===0)return q===99?1073741823:1073741822;if((yr&rs)!==En)return ns;if(T!==null)S=Ua(S,T.timeoutMs|0||5e3,250);else switch(q){case 99:S=1073741823;break;case 98:S=Ua(S,150,100);break;case 97:case 96:S=Ua(S,5e3,250);break;case 95:S=2;break;default:throw Error(n(326))}return gi!==null&&S===ns&&--S,S}function Pc(S,D){if(50<vg)throw vg=0,Dw=null,Error(n(185));if(S=Dg(S,D),S!==null){var T=_o();D===1073741823?(yr&Tm)!==En&&(yr&(rs|qs))===En?Sw(S):(fo(S),yr===En&&qi()):fo(S),(yr&4)===En||T!==98&&T!==99||(HA===null?HA=new Map([[S,D]]):(T=HA.get(S),(T===void 0||T>D)&&HA.set(S,D)))}}function Dg(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D);var q=S.return,Y=null;if(q===null&&S.tag===3)Y=S.stateNode;else for(;q!==null;){if(T=q.alternate,q.childExpirationTime<D&&(q.childExpirationTime=D),T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D),q.return===null&&q.tag===3){Y=q.stateNode;break}q=q.return}return Y!==null&&(gi===Y&&(Hm(D),Yi===vl&&KA(Y,ns)),eD(Y,D)),Y}function _m(S){var D=S.lastExpiredTime;return D!==0||(D=S.firstPendingTime,!$v(S,D))?D:(D=S.lastPingedTime,S=S.nextKnownPendingLevel,D>S?D:S)}function fo(S){if(S.lastExpiredTime!==0)S.callbackExpirationTime=1073741823,S.callbackPriority=99,S.callbackNode=pu(Sw.bind(null,S));else{var D=_m(S),T=S.callbackNode;if(D===0)T!==null&&(S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90);else{var q=ga();if(D===1073741823?q=99:D===1||D===2?q=95:(q=10*(1073741821-D)-10*(1073741821-q),q=0>=q?99:250>=q?98:5250>=q?97:95),T!==null){var Y=S.callbackPriority;if(S.callbackExpirationTime===D&&Y>=q)return;T!==PA&&Ce(T)}S.callbackExpirationTime=D,S.callbackPriority=q,D=D===1073741823?pu(Sw.bind(null,S)):gc(q,Wv.bind(null,S),{timeout:10*(1073741821-D)-Li()}),S.callbackNode=D}}}function Wv(S,D){if(Um=0,D)return D=ga(),jm(S,D),fo(S),null;var T=_m(S);if(T!==0){if(D=S.callbackNode,(yr&(rs|qs))!==En)throw Error(n(327));if(Bp(),S===gi&&T===ns||Su(S,T),Or!==null){var q=yr;yr|=rs;var Y=GA(S);do try{pF();break}catch(vt){jA(S,vt)}while(1);if(la(),yr=q,Cp.current=Y,Yi===Nm)throw D=Lm,Su(S,T),KA(S,T),fo(S),D;if(Or===null)switch(Y=S.finishedWork=S.current.alternate,S.finishedExpirationTime=T,q=Yi,gi=null,q){case Bu:case Nm:throw Error(n(345));case Bi:jm(S,2<T?2:T);break;case ha:if(KA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=bw(Y)),Ya===1073741823&&(Y=Bw+vw-Li(),10<Y)){if(UA){var Ae=S.lastPingedTime;if(Ae===0||Ae>=T){S.lastPingedTime=T,Su(S,T);break}}if(Ae=_m(S),Ae!==0&&Ae!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}S.timeoutHandle=Te(Pu.bind(null,S),Y);break}Pu(S);break;case vl:if(KA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=bw(Y)),UA&&(Y=S.lastPingedTime,Y===0||Y>=T)){S.lastPingedTime=T,Su(S,T);break}if(Y=_m(S),Y!==0&&Y!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}if(MA!==1073741823?q=10*(1073741821-MA)-Li():Ya===1073741823?q=0:(q=10*(1073741821-Ya)-5e3,Y=Li(),T=10*(1073741821-T)-Y,q=Y-q,0>q&&(q=0),q=(120>q?120:480>q?480:1080>q?1080:1920>q?1920:3e3>q?3e3:4320>q?4320:1960*ww(q/1960))-q,T<q&&(q=T)),10<q){S.timeoutHandle=Te(Pu.bind(null,S),q);break}Pu(S);break;case Sc:if(Ya!==1073741823&&Om!==null){Ae=Ya;var De=Om;if(q=De.busyMinDurationMs|0,0>=q?q=0:(Y=De.busyDelayMs|0,Ae=Li()-(10*(1073741821-Ae)-(De.timeoutMs|0||5e3)),q=Ae<=Y?0:Y+q-Ae),10<q){KA(S,T),S.timeoutHandle=Te(Pu.bind(null,S),q);break}}Pu(S);break;default:throw Error(n(329))}if(fo(S),S.callbackNode===D)return Wv.bind(null,S)}}return null}function Sw(S){var D=S.lastExpiredTime;if(D=D!==0?D:1073741823,S.finishedExpirationTime===D)Pu(S);else{if((yr&(rs|qs))!==En)throw Error(n(327));if(Bp(),S===gi&&D===ns||Su(S,D),Or!==null){var T=yr;yr|=rs;var q=GA(S);do try{fF();break}catch(Y){jA(S,Y)}while(1);if(la(),yr=T,Cp.current=q,Yi===Nm)throw T=Lm,Su(S,D),KA(S,D),fo(S),T;if(Or!==null)throw Error(n(261));S.finishedWork=S.current.alternate,S.finishedExpirationTime=D,gi=null,Pu(S),fo(S)}}return null}function Kv(S,D){jm(S,D),fo(S),(yr&(rs|qs))===En&&qi()}function AF(){if(HA!==null){var S=HA;HA=null,S.forEach(function(D,T){jm(T,D),fo(T)}),qi()}}function Vv(S,D){if((yr&(rs|qs))!==En)throw Error(n(187));var T=yr;yr|=1;try{return lo(99,S.bind(null,D))}finally{yr=T,qi()}}function Su(S,D){S.finishedWork=null,S.finishedExpirationTime=0;var T=S.timeoutHandle;if(T!==qe&&(S.timeoutHandle=qe,Je(T)),Or!==null)for(T=Or.return;T!==null;){var q=T;switch(q.tag){case 1:var Y=q.type.childContextTypes;Y!=null&&Ma(q);break;case 3:yc(q),hr(q);break;case 5:ag(q);break;case 4:yc(q);break;case 13:Vn($n,q);break;case 19:Vn($n,q);break;case 10:wi(q)}T=T.return}gi=S,Or=WA(S.current,null,D),ns=D,Yi=Bu,Lm=null,MA=Ya=1073741823,Om=null,wp=0,UA=!1}function jA(S,D){do{try{if(la(),yw(),Or===null||Or.return===null)return Yi=Nm,Lm=D,null;e:{var T=S,q=Or.return,Y=Or,Ae=D;if(D=ns,Y.effectTag|=2048,Y.firstEffect=Y.lastEffect=null,Ae!==null&&typeof Ae==\"object\"&&typeof Ae.then==\"function\"){var De=Ae,vt=($n.current&1)!==0,wt=q;do{var xt;if(xt=wt.tag===13){var _r=wt.memoizedState;if(_r!==null)xt=_r.dehydrated!==null;else{var is=wt.memoizedProps;xt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!vt}}if(xt){var di=wt.updateQueue;if(di===null){var po=new Set;po.add(De),wt.updateQueue=po}else di.add(De);if((wt.mode&2)===0){if(wt.effectTag|=64,Y.effectTag&=-2981,Y.tag===1)if(Y.alternate===null)Y.tag=17;else{var VA=ys(1073741823,null);VA.tag=2,tt(Y,VA)}Y.expirationTime=1073741823;break e}Ae=void 0,Y=D;var Yo=T.pingCache;if(Yo===null?(Yo=T.pingCache=new Ig,Ae=new Set,Yo.set(De,Ae)):(Ae=Yo.get(De),Ae===void 0&&(Ae=new Set,Yo.set(De,Ae))),!Ae.has(Y)){Ae.add(Y);var rt=mF.bind(null,T,De,Y);De.then(rt,rt)}wt.effectTag|=4096,wt.expirationTime=D;break e}wt=wt.return}while(wt!==null);Ae=Error((he(Y.type)||\"A React component\")+` suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+ml(Y))}Yi!==Sc&&(Yi=Bi),Ae=Eg(Ae,Y),wt=q;do{switch(wt.tag){case 3:De=Ae,wt.effectTag|=4096,wt.expirationTime=D;var Ve=Gv(wt,De,D);It(wt,Ve);break e;case 1:De=Ae;var ft=wt.type,Wt=wt.stateNode;if((wt.effectTag&64)===0&&(typeof ft.getDerivedStateFromError==\"function\"||Wt!==null&&typeof Wt.componentDidCatch==\"function\"&&(Du===null||!Du.has(Wt)))){wt.effectTag|=4096,wt.expirationTime=D;var vr=Yv(wt,De,D);It(wt,vr);break e}}wt=wt.return}while(wt!==null)}Or=zv(Or)}catch(Pn){D=Pn;continue}break}while(1)}function GA(){var S=Cp.current;return Cp.current=wu,S===null?wu:S}function Pw(S,D){S<Ya&&2<S&&(Ya=S),D!==null&&S<MA&&2<S&&(MA=S,Om=D)}function Hm(S){S>wp&&(wp=S)}function fF(){for(;Or!==null;)Or=Jv(Or)}function pF(){for(;Or!==null&&!Rt();)Or=Jv(Or)}function Jv(S){var D=Zv(S.alternate,S,ns);return S.memoizedProps=S.pendingProps,D===null&&(D=zv(S)),Iw.current=null,D}function zv(S){Or=S;do{var D=Or.alternate;if(S=Or.return,(Or.effectTag&2048)===0){e:{var T=D;D=Or;var q=ns,Y=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:ii(D.type)&&Ma(D);break;case 3:yc(D),hr(D),Y=D.stateNode,Y.pendingContext&&(Y.context=Y.pendingContext,Y.pendingContext=null),(T===null||T.child===null)&&qa(D)&&pa(D),Bl(D);break;case 5:ag(D);var Ae=ca(mc.current);if(q=D.type,T!==null&&D.stateNode!=null)ts(T,D,q,Y,Ae),T.ref!==D.ref&&(D.effectTag|=128);else if(Y){if(T=ca(uo.current),qa(D)){if(Y=D,!y)throw Error(n(175));T=lp(Y.stateNode,Y.type,Y.memoizedProps,Ae,T,Y),Y.updateQueue=T,T=T!==null,T&&pa(D)}else{var De=At(q,Y,Ae,T,D);vc(De,D,!1,!1),D.stateNode=De,at(De,q,Y,Ae,T)&&pa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)Gr(T,D,T.memoizedProps,Y);else{if(typeof Y!=\"string\"&&D.stateNode===null)throw Error(n(166));if(T=ca(mc.current),Ae=ca(uo.current),qa(D)){if(T=D,!y)throw Error(n(176));(T=cp(T.stateNode,T.memoizedProps,T))&&pa(D)}else D.stateNode=He(Y,T,Ae,D)}break;case 11:break;case 13:if(Vn($n,D),Y=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=q;break e}Y=Y!==null,Ae=!1,T===null?D.memoizedProps.fallback!==void 0&&qa(D):(q=T.memoizedState,Ae=q!==null,Y||q===null||(q=T.child.sibling,q!==null&&(De=D.firstEffect,De!==null?(D.firstEffect=q,q.nextEffect=De):(D.firstEffect=D.lastEffect=q,q.nextEffect=null),q.effectTag=8))),Y&&!Ae&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||($n.current&1)!==0?Yi===Bu&&(Yi=ha):((Yi===Bu||Yi===ha)&&(Yi=vl),wp!==0&&gi!==null&&(KA(gi,ns),eD(gi,wp)))),P&&Y&&(D.effectTag|=4),w&&(Y||Ae)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:wi(D);break;case 9:break;case 14:break;case 17:ii(D.type)&&Ma(D);break;case 19:if(Vn($n,D),Y=D.memoizedState,Y===null)break;if(Ae=(D.effectTag&64)!==0,De=Y.rendering,De===null){if(Ae)Dc(Y,!1);else if(Yi!==Bu||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(De=fp(T),De!==null){for(D.effectTag|=64,Dc(Y,!1),T=De.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Y.lastEffect===null&&(D.firstEffect=null),D.lastEffect=Y.lastEffect,T=q,Y=D.child;Y!==null;)Ae=Y,q=T,Ae.effectTag&=2,Ae.nextEffect=null,Ae.firstEffect=null,Ae.lastEffect=null,De=Ae.alternate,De===null?(Ae.childExpirationTime=0,Ae.expirationTime=q,Ae.child=null,Ae.memoizedProps=null,Ae.memoizedState=null,Ae.updateQueue=null,Ae.dependencies=null):(Ae.childExpirationTime=De.childExpirationTime,Ae.expirationTime=De.expirationTime,Ae.child=De.child,Ae.memoizedProps=De.memoizedProps,Ae.memoizedState=De.memoizedState,Ae.updateQueue=De.updateQueue,q=De.dependencies,Ae.dependencies=q===null?null:{expirationTime:q.expirationTime,firstContext:q.firstContext,responders:q.responders}),Y=Y.sibling;On($n,$n.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!Ae)if(T=fp(De),T!==null){if(D.effectTag|=64,Ae=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Dc(Y,!0),Y.tail===null&&Y.tailMode===\"hidden\"&&!De.alternate){D=D.lastEffect=Y.lastEffect,D!==null&&(D.nextEffect=null);break}}else Li()>Y.tailExpiration&&1<q&&(D.effectTag|=64,Ae=!0,Dc(Y,!1),D.expirationTime=D.childExpirationTime=q-1);Y.isBackwards?(De.sibling=D.child,D.child=De):(T=Y.last,T!==null?T.sibling=De:D.child=De,Y.last=De)}if(Y.tail!==null){Y.tailExpiration===0&&(Y.tailExpiration=Li()+500),T=Y.tail,Y.rendering=T,Y.tail=T.sibling,Y.lastEffect=D.lastEffect,T.sibling=null,Y=$n.current,Y=Ae?Y&1|2:Y&1,On($n,Y,D),D=T;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(T=Or,ns===1||T.childExpirationTime!==1){for(Y=0,Ae=T.child;Ae!==null;)q=Ae.expirationTime,De=Ae.childExpirationTime,q>Y&&(Y=q),De>Y&&(Y=De),Ae=Ae.sibling;T.childExpirationTime=Y}if(D!==null)return D;S!==null&&(S.effectTag&2048)===0&&(S.firstEffect===null&&(S.firstEffect=Or.firstEffect),Or.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=Or.firstEffect),S.lastEffect=Or.lastEffect),1<Or.effectTag&&(S.lastEffect!==null?S.lastEffect.nextEffect=Or:S.firstEffect=Or,S.lastEffect=Or))}else{if(D=Cw(Or,ns),D!==null)return D.effectTag&=2047,D;S!==null&&(S.firstEffect=S.lastEffect=null,S.effectTag|=2048)}if(D=Or.sibling,D!==null)return D;Or=S}while(Or!==null);return Yi===Bu&&(Yi=Sc),null}function bw(S){var D=S.expirationTime;return S=S.childExpirationTime,D>S?D:S}function Pu(S){var D=_o();return lo(99,hF.bind(null,S,D)),null}function hF(S,D){do Bp();while(Bg!==null);if((yr&(rs|qs))!==En)throw Error(n(327));var T=S.finishedWork,q=S.finishedExpirationTime;if(T===null)return null;if(S.finishedWork=null,S.finishedExpirationTime=0,T===S.current)throw Error(n(177));S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90,S.nextKnownPendingLevel=0;var Y=bw(T);if(S.firstPendingTime=Y,q<=S.lastSuspendedTime?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:q<=S.firstSuspendedTime&&(S.firstSuspendedTime=q-1),q<=S.lastPingedTime&&(S.lastPingedTime=0),q<=S.lastExpiredTime&&(S.lastExpiredTime=0),S===gi&&(Or=gi=null,ns=0),1<T.effectTag?T.lastEffect!==null?(T.lastEffect.nextEffect=T,Y=T.firstEffect):Y=T:Y=T.firstEffect,Y!==null){var Ae=yr;yr|=qs,Iw.current=null,Ie(S.containerInfo),sr=Y;do try{gF()}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=Y;do try{for(var De=S,vt=D;sr!==null;){var wt=sr.effectTag;if(wt&16&&w&&jt(sr.stateNode),wt&128){var xt=sr.alternate;if(xt!==null){var _r=xt.ref;_r!==null&&(typeof _r==\"function\"?_r(null):_r.current=null)}}switch(wt&1038){case 2:fr(sr),sr.effectTag&=-3;break;case 6:fr(sr),sr.effectTag&=-3,yn(sr.alternate,sr);break;case 1024:sr.effectTag&=-1025;break;case 1028:sr.effectTag&=-1025,yn(sr.alternate,sr);break;case 4:yn(sr.alternate,sr);break;case 8:var is=De,di=sr,po=vt;w?Cr(is,di,po):re(is,di,po),pe(di)}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);Fe(S.containerInfo),S.current=T,sr=Y;do try{for(wt=q;sr!==null;){var VA=sr.effectTag;if(VA&36){var Yo=sr.alternate;switch(xt=sr,_r=wt,xt.tag){case 0:case 11:case 15:N(16,32,xt);break;case 1:var rt=xt.stateNode;if(xt.effectTag&4)if(Yo===null)rt.componentDidMount();else{var Ve=xt.elementType===xt.type?Yo.memoizedProps:Ci(xt.type,Yo.memoizedProps);rt.componentDidUpdate(Ve,Yo.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var ft=xt.updateQueue;ft!==null&&Le(xt,ft,rt,_r);break;case 3:var Wt=xt.updateQueue;if(Wt!==null){if(De=null,xt.child!==null)switch(xt.child.tag){case 5:De=le(xt.child.stateNode);break;case 1:De=xt.child.stateNode}Le(xt,Wt,De,_r)}break;case 5:var vr=xt.stateNode;Yo===null&&xt.effectTag&4&&Z(vr,xt.type,xt.memoizedProps,xt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&xt.memoizedState===null){var Pn=xt.alternate;if(Pn!==null){var Fr=Pn.memoizedState;if(Fr!==null){var bn=Fr.dehydrated;bn!==null&&oo(bn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(VA&128){xt=void 0;var ai=sr.ref;if(ai!==null){var tn=sr.stateNode;switch(sr.tag){case 5:xt=le(tn);break;default:xt=tn}typeof ai==\"function\"?ai(xt):ai.current=xt}}sr=sr.nextEffect}}catch(ho){if(sr===null)throw Error(n(330));YA(sr,ho),sr=sr.nextEffect}while(sr!==null);sr=null,Qn(),yr=Ae}else S.current=T;if(Ip)Ip=!1,Bg=S,_A=D;else for(sr=Y;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr=D;if(D=S.firstPendingTime,D===0&&(Du=null),D===1073741823?S===Dw?vg++:(vg=0,Dw=S):vg=0,typeof xw==\"function\"&&xw(T.stateNode,q),fo(S),vu)throw vu=!1,S=Mm,Mm=null,S;return(yr&Tm)!==En||qi(),null}function gF(){for(;sr!==null;){var S=sr.effectTag;(S&256)!==0&&Qt(sr.alternate,sr),(S&512)===0||Ip||(Ip=!0,gc(97,function(){return Bp(),null})),sr=sr.nextEffect}}function Bp(){if(_A!==90){var S=97<_A?97:_A;return _A=90,lo(S,dF)}}function dF(){if(Bg===null)return!1;var S=Bg;if(Bg=null,(yr&(rs|qs))!==En)throw Error(n(331));var D=yr;for(yr|=qs,S=S.current.firstEffect;S!==null;){try{var T=S;if((T.effectTag&512)!==0)switch(T.tag){case 0:case 11:case 15:N(128,0,T),N(0,64,T)}}catch(q){if(S===null)throw Error(n(330));YA(S,q)}T=S.nextEffect,S.nextEffect=null,S=T}return yr=D,qi(),!0}function Xv(S,D,T){D=Eg(T,D),D=Gv(S,D,1073741823),tt(S,D),S=Dg(S,1073741823),S!==null&&fo(S)}function YA(S,D){if(S.tag===3)Xv(S,S,D);else for(var T=S.return;T!==null;){if(T.tag===3){Xv(T,S,D);break}else if(T.tag===1){var q=T.stateNode;if(typeof T.type.getDerivedStateFromError==\"function\"||typeof q.componentDidCatch==\"function\"&&(Du===null||!Du.has(q))){S=Eg(D,S),S=Yv(T,S,1073741823),tt(T,S),T=Dg(T,1073741823),T!==null&&fo(T);break}}T=T.return}}function mF(S,D,T){var q=S.pingCache;q!==null&&q.delete(D),gi===S&&ns===T?Yi===vl||Yi===ha&&Ya===1073741823&&Li()-Bw<vw?Su(S,ns):UA=!0:$v(S,T)&&(D=S.lastPingedTime,D!==0&&D<T||(S.lastPingedTime=T,S.finishedExpirationTime===T&&(S.finishedExpirationTime=0,S.finishedWork=null),fo(S)))}function yF(S,D){var T=S.stateNode;T!==null&&T.delete(D),D=0,D===0&&(D=ga(),D=qA(D,S,null)),S=Dg(S,D),S!==null&&fo(S)}var Zv;Zv=function(S,D,T){var q=D.expirationTime;if(S!==null){var Y=D.pendingProps;if(S.memoizedProps!==Y||_i.current)jo=!0;else{if(q<T){switch(jo=!1,D.tag){case 3:yg(D),mg();break;case 5:if(Pm(D),D.mode&4&&T!==1&&xe(D.type,Y))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:ii(D.type)&&Ac(D);break;case 4:og(D,D.stateNode.containerInfo);break;case 10:Ho(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return q=D.child.childExpirationTime,q!==0&&q>=T?ln(S,D,T):(On($n,$n.current&1,D),D=si(S,D,T),D!==null?D.sibling:null);On($n,$n.current&1,D);break;case 19:if(q=D.childExpirationTime>=T,(S.effectTag&64)!==0){if(q)return ja(S,D,T);D.effectTag|=64}if(Y=D.memoizedState,Y!==null&&(Y.rendering=null,Y.tail=null),On($n,$n.current,D),!q)return null}return si(S,D,T)}jo=!1}}else jo=!1;switch(D.expirationTime=0,D.tag){case 2:if(q=D.type,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,Y=Oe(D,Mn.current),ds(D,T),Y=cg(null,D,q,S,Y,T),D.effectTag|=1,typeof Y==\"object\"&&Y!==null&&typeof Y.render==\"function\"&&Y.$$typeof===void 0){if(D.tag=1,yw(),ii(q)){var Ae=!0;Ac(D)}else Ae=!1;D.memoizedState=Y.state!==null&&Y.state!==void 0?Y.state:null;var De=q.getDerivedStateFromProps;typeof De==\"function\"&&er(D,q,De,S),Y.updater=$r,D.stateNode=Y,Y._reactInternalFiber=D,qo(D,q,S,T),D=yp(null,D,q,!0,Ae,T)}else D.tag=0,ws(null,D,Y,T),D=D.child;return D;case 16:if(Y=D.elementType,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,me(Y),Y._status!==1)throw Y._result;switch(Y=Y._result,D.type=Y,Ae=D.tag=wF(Y),S=Ci(Y,S),Ae){case 0:D=LA(null,D,Y,S,T);break;case 1:D=mp(null,D,Y,S,T);break;case 11:D=Ii(null,D,Y,S,T);break;case 14:D=Qm(null,D,Y,Ci(Y.type,S),q,T);break;default:throw Error(n(306,Y,\"\"))}return D;case 0:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),LA(S,D,q,Y,T);case 1:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),mp(S,D,q,Y,T);case 3:if(yg(D),q=D.updateQueue,q===null)throw Error(n(282));if(Y=D.memoizedState,Y=Y!==null?Y.element:null,ye(D,q,D.pendingProps,null,T),q=D.memoizedState.element,q===Y)mg(),D=si(S,D,T);else{if((Y=D.stateNode.hydrate)&&(y?(Bc=cu(D.stateNode.containerInfo),Aa=D,Y=Il=!0):Y=!1),Y)for(T=sg(D,null,q,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else ws(S,D,q,T),mg();D=D.child}return D;case 5:return Pm(D),S===null&&NA(D),q=D.type,Y=D.pendingProps,Ae=S!==null?S.memoizedProps:null,De=Y.children,ke(q,Y)?De=null:Ae!==null&&ke(q,Ae)&&(D.effectTag|=16),Go(S,D),D.mode&4&&T!==1&&xe(q,Y)?(D.expirationTime=D.childExpirationTime=1,D=null):(ws(S,D,De,T),D=D.child),D;case 6:return S===null&&NA(D),null;case 13:return ln(S,D,T);case 4:return og(D,D.stateNode.containerInfo),q=D.pendingProps,S===null?D.child=gu(D,null,q,T):ws(S,D,q,T),D.child;case 11:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),Ii(S,D,q,Y,T);case 7:return ws(S,D,D.pendingProps,T),D.child;case 8:return ws(S,D,D.pendingProps.children,T),D.child;case 12:return ws(S,D,D.pendingProps.children,T),D.child;case 10:e:{if(q=D.type._context,Y=D.pendingProps,De=D.memoizedProps,Ae=Y.value,Ho(D,Ae),De!==null){var vt=De.value;if(Ae=hs(vt,Ae)?0:(typeof q._calculateChangedBits==\"function\"?q._calculateChangedBits(vt,Ae):1073741823)|0,Ae===0){if(De.children===Y.children&&!_i.current){D=si(S,D,T);break e}}else for(vt=D.child,vt!==null&&(vt.return=D);vt!==null;){var wt=vt.dependencies;if(wt!==null){De=vt.child;for(var xt=wt.firstContext;xt!==null;){if(xt.context===q&&(xt.observedBits&Ae)!==0){vt.tag===1&&(xt=ys(T,null),xt.tag=2,tt(vt,xt)),vt.expirationTime<T&&(vt.expirationTime=T),xt=vt.alternate,xt!==null&&xt.expirationTime<T&&(xt.expirationTime=T),gs(vt.return,T),wt.expirationTime<T&&(wt.expirationTime=T);break}xt=xt.next}}else De=vt.tag===10&&vt.type===D.type?null:vt.child;if(De!==null)De.return=vt;else for(De=vt;De!==null;){if(De===D){De=null;break}if(vt=De.sibling,vt!==null){vt.return=De.return,De=vt;break}De=De.return}vt=De}}ws(S,D,Y.children,T),D=D.child}return D;case 9:return Y=D.type,Ae=D.pendingProps,q=Ae.children,ds(D,T),Y=ms(Y,Ae.unstable_observedBits),q=q(Y),D.effectTag|=1,ws(S,D,q,T),D.child;case 14:return Y=D.type,Ae=Ci(Y,D.pendingProps),Ae=Ci(Y.type,Ae),Qm(S,D,Y,Ae,q,T);case 15:return Fm(S,D,D.type,D.pendingProps,q,T);case 17:return q=D.type,Y=D.pendingProps,Y=D.elementType===q?Y:Ci(q,Y),S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,ii(q)?(S=!0,Ac(D)):S=!1,ds(D,T),es(D,q,Y,T),qo(D,q,Y,T),yp(null,D,q,!0,S,T);case 19:return ja(S,D,T)}throw Error(n(156,D.tag))};var xw=null,kw=null;function EF(S){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(S);xw=function(q){try{D.onCommitFiberRoot(T,q,void 0,(q.current.effectTag&64)===64)}catch{}},kw=function(q){try{D.onCommitFiberUnmount(T,q)}catch{}}}catch{}return!0}function CF(S,D,T,q){this.tag=S,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=q,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(S,D,T,q){return new CF(S,D,T,q)}function Qw(S){return S=S.prototype,!(!S||!S.isReactComponent)}function wF(S){if(typeof S==\"function\")return Qw(S)?1:0;if(S!=null){if(S=S.$$typeof,S===L)return 11;if(S===te)return 14}return 2}function WA(S,D){var T=S.alternate;return T===null?(T=Dl(S.tag,D,S.key,S.mode),T.elementType=S.elementType,T.type=S.type,T.stateNode=S.stateNode,T.alternate=S,S.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=S.childExpirationTime,T.expirationTime=S.expirationTime,T.child=S.child,T.memoizedProps=S.memoizedProps,T.memoizedState=S.memoizedState,T.updateQueue=S.updateQueue,D=S.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=S.sibling,T.index=S.index,T.ref=S.ref,T}function qm(S,D,T,q,Y,Ae){var De=2;if(q=S,typeof S==\"function\")Qw(S)&&(De=1);else if(typeof S==\"string\")De=5;else e:switch(S){case E:return bu(T.children,Y,Ae,D);case R:De=8,Y|=7;break;case I:De=8,Y|=1;break;case v:return S=Dl(12,T,D,Y|8),S.elementType=v,S.type=v,S.expirationTime=Ae,S;case U:return S=Dl(13,T,D,Y),S.type=U,S.elementType=U,S.expirationTime=Ae,S;case J:return S=Dl(19,T,D,Y),S.elementType=J,S.expirationTime=Ae,S;default:if(typeof S==\"object\"&&S!==null)switch(S.$$typeof){case x:De=10;break e;case C:De=9;break e;case L:De=11;break e;case te:De=14;break e;case ae:De=16,q=null;break e}throw Error(n(130,S==null?S:typeof S,\"\"))}return D=Dl(De,T,D,Y),D.elementType=S,D.type=q,D.expirationTime=Ae,D}function bu(S,D,T,q){return S=Dl(7,S,q,D),S.expirationTime=T,S}function Fw(S,D,T){return S=Dl(6,S,null,D),S.expirationTime=T,S}function Rw(S,D,T){return D=Dl(4,S.children!==null?S.children:[],S.key,D),D.expirationTime=T,D.stateNode={containerInfo:S.containerInfo,pendingChildren:null,implementation:S.implementation},D}function IF(S,D,T){this.tag=D,this.current=null,this.containerInfo=S,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=qe,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function $v(S,D){var T=S.firstSuspendedTime;return S=S.lastSuspendedTime,T!==0&&T>=D&&S<=D}function KA(S,D){var T=S.firstSuspendedTime,q=S.lastSuspendedTime;T<D&&(S.firstSuspendedTime=D),(q>D||T===0)&&(S.lastSuspendedTime=D),D<=S.lastPingedTime&&(S.lastPingedTime=0),D<=S.lastExpiredTime&&(S.lastExpiredTime=0)}function eD(S,D){D>S.firstPendingTime&&(S.firstPendingTime=D);var T=S.firstSuspendedTime;T!==0&&(D>=T?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:D>=S.lastSuspendedTime&&(S.lastSuspendedTime=D+1),D>S.nextKnownPendingLevel&&(S.nextKnownPendingLevel=D))}function jm(S,D){var T=S.lastExpiredTime;(T===0||T>D)&&(S.lastExpiredTime=D)}function tD(S){var D=S._reactInternalFiber;if(D===void 0)throw typeof S.render==\"function\"?Error(n(188)):Error(n(268,Object.keys(S)));return S=Ee(D),S===null?null:S.stateNode}function rD(S,D){S=S.memoizedState,S!==null&&S.dehydrated!==null&&S.retryTime<D&&(S.retryTime=D)}function Gm(S,D){rD(S,D),(S=S.alternate)&&rD(S,D)}var nD={createContainer:function(S,D,T){return S=new IF(S,D,T),D=Dl(3,null,null,D===2?7:D===1?3:0),S.current=D,D.stateNode=S},updateContainer:function(S,D,T,q){var Y=D.current,Ae=ga(),De=ht.suspense;Ae=qA(Ae,Y,De);e:if(T){T=T._reactInternalFiber;t:{if(Be(T)!==T||T.tag!==1)throw Error(n(170));var vt=T;do{switch(vt.tag){case 3:vt=vt.stateNode.context;break t;case 1:if(ii(vt.type)){vt=vt.stateNode.__reactInternalMemoizedMergedChildContext;break t}}vt=vt.return}while(vt!==null);throw Error(n(171))}if(T.tag===1){var wt=T.type;if(ii(wt)){T=uu(T,wt,vt);break e}}T=vt}else T=Ni;return D.context===null?D.context=T:D.pendingContext=T,D=ys(Ae,De),D.payload={element:S},q=q===void 0?null:q,q!==null&&(D.callback=q),tt(Y,D),Pc(Y,Ae),Ae},batchedEventUpdates:function(S,D){var T=yr;yr|=2;try{return S(D)}finally{yr=T,yr===En&&qi()}},batchedUpdates:function(S,D){var T=yr;yr|=1;try{return S(D)}finally{yr=T,yr===En&&qi()}},unbatchedUpdates:function(S,D){var T=yr;yr&=-2,yr|=Tm;try{return S(D)}finally{yr=T,yr===En&&qi()}},deferredUpdates:function(S){return lo(97,S)},syncUpdates:function(S,D,T,q){return lo(99,S.bind(null,D,T,q))},discreteUpdates:function(S,D,T,q){var Y=yr;yr|=4;try{return lo(98,S.bind(null,D,T,q))}finally{yr=Y,yr===En&&qi()}},flushDiscreteUpdates:function(){(yr&(1|rs|qs))===En&&(AF(),Bp())},flushControlled:function(S){var D=yr;yr|=1;try{lo(99,S)}finally{yr=D,yr===En&&qi()}},flushSync:Vv,flushPassiveEffects:Bp,IsThisRendererActing:{current:!1},getPublicRootInstance:function(S){if(S=S.current,!S.child)return null;switch(S.child.tag){case 5:return le(S.child.stateNode);default:return S.child.stateNode}},attemptSynchronousHydration:function(S){switch(S.tag){case 3:var D=S.stateNode;D.hydrate&&Kv(D,D.firstPendingTime);break;case 13:Vv(function(){return Pc(S,1073741823)}),D=Ua(ga(),150,100),Gm(S,D)}},attemptUserBlockingHydration:function(S){if(S.tag===13){var D=Ua(ga(),150,100);Pc(S,D),Gm(S,D)}},attemptContinuousHydration:function(S){if(S.tag===13){ga();var D=xA++;Pc(S,D),Gm(S,D)}},attemptHydrationAtCurrentPriority:function(S){if(S.tag===13){var D=ga();D=qA(D,S,null),Pc(S,D),Gm(S,D)}},findHostInstance:tD,findHostInstanceWithWarning:function(S){return tD(S)},findHostInstanceWithNoPortals:function(S){return S=Se(S),S===null?null:S.tag===20?S.stateNode.instance:S.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(S){var D=S.findFiberByHostInstance;return EF(r({},S,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return T=Ee(T),T===null?null:T.stateNode},findFiberByHostInstance:function(T){return D?D(T):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};lB.exports=nD.default||nD;var BF=lB.exports;return lB.exports=t,BF}});var PEe=_((mKt,SEe)=>{\"use strict\";SEe.exports=DEe()});var xEe=_((yKt,bEe)=>{\"use strict\";var Hyt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};bEe.exports=Hyt});var REe=_((EKt,FEe)=>{\"use strict\";var qyt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},Wk=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function P6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function b6(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var tu=xEe(),jyt=function(){function t(e,r,o,a,n,u){b6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:\"toString\",value:function(){return\"<Layout#\"+this.left+\":\"+this.right+\";\"+this.top+\":\"+this.bottom+\";\"+this.width+\":\"+this.height+\">\"}}]),t}(),kEe=function(){Wk(t,null,[{key:\"fromJS\",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){b6(this,t),this.width=e,this.height=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),QEe=function(){function t(e,r){b6(this,t),this.unit=e,this.value=r}return Wk(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case tu.UNIT_POINT:return String(this.value);case tu.UNIT_PERCENT:return this.value+\"%\";case tu.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();FEe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var E=arguments.length,I=Array(E),v=0;v<E;v++)I[v]=arguments[v];return p.call.apply(p,[this,h].concat(I))}}for(var o=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var A,p=o[n],h=(A={},P6(A,tu.UNIT_POINT,e.Node.prototype[p]),P6(A,tu.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),P6(A,tu.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),A);r(e.Node.prototype,p,function(E){for(var I=arguments.length,v=Array(I>1?I-1:0),x=1;x<I;x++)v[x-1]=arguments[x];var C=v.pop(),R=void 0,L=void 0;if(C===\"auto\")R=tu.UNIT_AUTO,L=void 0;else if(C instanceof QEe)R=C.unit,L=C.valueOf();else if(R=typeof C==\"string\"&&C.endsWith(\"%\")?tu.UNIT_PERCENT:tu.UNIT_POINT,L=parseFloat(C),!Number.isNaN(C)&&Number.isNaN(L))throw new Error(\"Invalid value \"+C+\" for \"+p);if(!h[R])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+C+\"'\");if(L!==void 0){var U;return(U=h[R]).call.apply(U,[this].concat(v,[L]))}else{var J;return(J=h[R]).call.apply(J,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(u,A){return A?u.call(this,function(){return kEe.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(u){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tu.DIRECTION_LTR;return u.call(this,A,p,h)}),qyt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",jyt),Size:t(\"Size\",kEe),Value:t(\"Value\",QEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tu)}});var TEe=_((exports,module)=>{(function(t,e){typeof define==\"function\"&&define.amd?define([],function(){return e}):typeof module==\"object\"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module==\"function\"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall(\"nbind_init\")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<\"u\"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT===\"WEB\")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT===\"WORKER\")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT===\"NODE\")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT===\"SHELL\")ENVIRONMENT_IS_SHELL=!0;else throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof ve==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(e){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(e));var r=read(e,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open(\"GET\",e,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(t){document.title=t})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(t[t.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(t[0]===\"i\"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e===\"double\"||e===\"i64\"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t==\"i64\"||t==\"double\")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module[\"dynCall_\"+t].apply(null,[e].concat(r)):Module[\"dynCall_\"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(!!t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort(\"Assertion failed: \"+e)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(t){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[o[h]];E?(p===0&&(p=Runtime.stackSave()),A[h]=E(a[h])):A[h]=a[h]}var I=u.apply(null,A);if(r===\"string\"&&(I=Pointer_stringify(I)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return I};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return\"$\"+e}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,o){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[t>>0]=e;break;case\"i8\":HEAP8[t>>0]=e;break;case\"i16\":HEAP16[t>>1]=e;break;case\"i32\":HEAP32[t>>2]=e;break;case\"i64\":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case\"float\":HEAPF32[t>>2]=e;break;case\"double\":HEAPF64[t>>3]=e;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||\"i8\",e.charAt(e.length-1)===\"*\"&&(e=\"i32\"),e){case\"i1\":return HEAP8[t>>0];case\"i8\":return HEAP8[t>>0];case\"i16\":return HEAP16[t>>1];case\"i32\":return HEAP32[t>>2];case\"i64\":return HEAP32[t>>2];case\"float\":return HEAPF32[t>>2];case\"double\":return HEAPF64[t>>3];default:abort(\"invalid type for setValue: \"+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e==\"string\"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,E,I,v;h<n;){var x=t[h];if(typeof x==\"function\"&&(x=Runtime.getFunctionIndex(x)),E=u||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(A+h,x,E),v!==E&&(I=Runtime.getNativeTypeSize(E),v=E),h+=I}return A}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return\"\";for(var r=0,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e=\"\";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,u,A,p,h=\"\";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var E=o-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,\"i32\")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}return t}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),t}function demangleAll(t){var e=/__Z[\\w\\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+\" [\"+o+\"]\"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return\"(no stack trace available)\"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=`\n`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e==\"function\"){e();continue}var r=e.func;typeof r==\"number\"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}return e.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},Browser.mainLoop.method=\"timeout\";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(t==2){if(!window.setImmediate){let n=function(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<\"u\"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,I=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=I:(I=I+.5,Browser.mainLoop.remainingBlockers=(8*E+I)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(u<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||\"Please wait...\",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+\" (\"+(r-e)+\"/\"+r+\")\"):Module.setStatus(t):Module.setStatus(\"\")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(x){Runtime.warnOnce(\"Blob constructor present but fails: \"+x+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var I=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,\"Image \"+u+\" could not be decoded\");var C=document.createElement(\"canvas\");C.width=v.width,C.height=v.height;var R=C.getContext(\"2d\");R.drawImage(v,0,0),Module.preloadedImages[u]=C,Browser.URLObject.revokeObjectURL(I),A&&A(n)},v.onerror=function(C){console.log(\"Image \"+I+\" could not be decoded\"),p&&p()},v.src=I},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},e.handle=function(n,u,A,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function I(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return I()}var x=Browser.URLObject.createObjectURL(v),C=new Audio;C.addEventListener(\"canplaythrough\",function(){E(C)},!1),C.onerror=function(L){if(h)return;console.log(\"warning: browser could not fully decode audio \"+u+\", trying slower base64 approach\");function U(J){for(var te=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ae=\"=\",fe=\"\",ce=0,me=0,he=0;he<J.length;he++)for(ce=ce<<8|J[he],me+=8;me>=6;){var Be=ce>>me-6&63;me-=6,fe+=te[Be]}return me==2?(fe+=te[(ce&3)<<4],fe+=ae+ae):me==4&&(fe+=te[(ce&15)<<2],fe+=ae),fe}C.src=\"data:audio/x-\"+u.substr(-3)+\";base64,\"+U(n),E(C)},C.src=x,Browser.safeSetTimeout(function(){E(C)},1e4)}else return I()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&o.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext(\"2d\");return a?(r&&(e||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[t.substr(t.lastIndexOf(\".\")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case\"DOMMouseScroll\":e=t.detail;break;case\"mousewheel\":e=t.wheelDelta;break;case\"wheel\":e=t.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!=\"mousemove\"&&\"mozMovementX\"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(t.type===\"touchstart\"||t.type===\"touchend\"||t.type===\"touchmove\"){var u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type===\"touchstart\")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[u.identifier];E||(E=h),Browser.lastTouches[u.identifier]=E,Browser.touches[u.identifier]=h}return}var I=t.pageX-(a+e.left),v=t.pageY-(n+e.top);I=I*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=I-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=I,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?\"\":\"al \"+t;Module.readAsync(t,function(n){assert(n,'Loading data file \"'+t+'\" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+t+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),t.height!=a&&(t.height=a),typeof t.style<\"u\"&&(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<\"u\"&&(o!=e||a!=r?(t.style.setProperty(\"width\",o+\"px\",\"important\"),t.style.setProperty(\"height\",a+\"px\",\"important\")):(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>\"u\"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,I,v,x){if(h==1){var C=I&896;(C==128||C==256||C==384)&&(p=\"X const\")}var R;return x?R=E.replace(\"X\",p).replace(\"Y\",v):R=p.replace(\"X\",E).replace(\"Y\",v),R.replace(/([*&]) (?=[*&])/g,\"$1\")}function o(p,h,E,I,v){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(I?\" with flag \"+I:\"\")+\" in \"+v)}function a(p,h,E,I,v,x,C,R){x===void 0&&(x=\"X\"),R===void 0&&(R=1);var L=E(p);if(L)return L;var U=I(p),J=U.placeholderFlag,te=e[J];C&&te&&(x=r(C[2],C[0],x,te[0],\"?\",!0));var ae;J==0&&(ae=\"Unbound\"),J>=10&&(ae=\"Corrupt\"),R>20&&(ae=\"Deeply nested\"),ae&&o(ae,p,x,J,v||\"?\");var fe=U.paramList[0],ce=a(fe,h,E,I,v,x,te,R+1),me,he={flags:te[0],id:p,name:\"\",paramList:[ce]},Be=[],we=\"?\";switch(U.placeholderFlag){case 1:me=ce.spec;break;case 2:if((ce.flags&15360)==1024&&ce.spec.ptrSize==1){he.flags=7168;break}case 3:case 6:case 5:me=ce.spec,ce.flags&15360;break;case 8:we=\"\"+U.paramList[1],he.paramList.push(U.paramList[1]);break;case 9:for(var g=0,Ee=U.paramList[1];g<Ee.length;g++){var Se=Ee[g],le=a(Se,h,E,I,v,x,te,R+1);Be.push(le.name),he.paramList.push(le)}we=Be.join(\", \");break;default:break}if(he.name=r(te[2],te[0],ce.name,ce.flags,we),me){for(var ne=0,ee=Object.keys(me);ne<ee.length;ne++){var Ie=ee[ne];he[Ie]=he[Ie]||me[Ie]}he.flags|=me.flags}return n(h,he)}function n(p,h){var E=h.flags,I=E&896,v=E&15360;return!h.name&&v==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(v=64),v==2048&&(I==512||I==640?v=4096:I&&(v=3072)),p(v,h)}var u=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:A},I=_nbind.makeType(_nbind.constructType,E);I.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),I.destroy=_nbind.makeMethodCaller(I.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:I.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(I.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),I.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[I.name]=I.makeBound(p),_nbind.BindClass.list.push(I)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var E=_nbind.getType(t),I=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),x;if(u==5)x=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(v.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(v.slice(1))}];else{var C=_nbind.readAsciiString(A),R=(E.name&&E.name+\".\")+C;(u==3||u==4)&&(C=_removeAccessorPrefix(C)),x=[{boundID:t,direct:n,name:C,ptr:a,title:R,typeList:v}]}for(var L=0,U=x;L<U.length;L++){var J=U[L];J.signatureType=u,J.policyTbl=I,J.num=p,J.flags=h,E.addMethod(J)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError(\"Unknown value type \"+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,I){var v=___syscall146.buffers[E];assert(v),I===0||I===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(I)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},o=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+o];if(!a)throw new Error(\"dynCall_\"+o+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error(\"Type mismatch\")}if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=u,I=A,v=p;if(n!==_nbind.ptrMarker){var x=h.__nbindConstructor.apply(h,arguments);E=4608,v=HEAPU32[x/4],I=HEAPU32[x/4+1]}var C={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:I};v&&(R.__nbindShared=v,_nbind.mark(h));for(var L=0,U=Object.keys(R);L<U.length;L++){var J=U[L];C.value=R[J],Object.defineProperty(h,J,C)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(t)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,E=p;h<E.length;h++){var I=E[h],v=void 0,x=void 0;if(v=this.proto.prototype,!(o&&I.signatureType!=1))switch(I.signatureType){case 1:v=this.proto;case 5:x=_nbind.makeCaller(I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,I);break;case 3:Object.defineProperty(v,I.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,I),set:a});break;case 2:x=_nbind.makeMethodCaller(r.ptrType,I),_nbind.addMethod(v,I.name,x,I.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],E=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(E,u,a)}this.registerMethods(r,o<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error(\"Type mismatch\")}var o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error(\"Type mismatch\");return o}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?u(E,o):0}:function(E){return u(E,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(o){return typeof o!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(o).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error(\"Invalid value slot \"+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t==\"number\"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error(\"Type mismatch\");var o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t=\"\";else throw new Error(\"Type mismatch\");if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushString(a,o)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+o+\"))\"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+o+\"))\"):o}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,\"callback\"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(A,p,h,E,I){return _nbind.externalList[p].data(h,E,I)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,E=e.num,I=_nbind.getDynCall(a,e.title),v=~e.flags&1;function x(){throw new Error(\"Calling a non-const method on a const object\")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t))};case 1:return function(C){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C)};case 2:return function(C,R){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R)};case 3:return function(C,R,L){return this.__nbindFlags&v?x():I(h,E,_nbind.pushPointer(this,t),C,R,L)};default:break}return buildCallerFunction(I,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,u,v,x)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(x){return h(A,x)};case 2:return function(x,C){return h(A,x,C)};case 3:return function(x,C,R){return h(A,x,C,R)};default:break}p=0}var E;if(p){var I=t.typeList.slice(0);I.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(I,t.title),E=\"ptr,num\"}else p=A,E=\"ptr\";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,E,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(o.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],I=0,v=n.writeResources||[];I<v.length;I++){var p=v[I];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(t){__extends(e,t);function e(r,o){var a=t.call(this,r)||this;return a.ptr=o,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!=\"object\")throw new Error(\"Type mismatch\");var r=t,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,o){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,o,a){return Browser.createContext(e,r,o,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(!!e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!=\"number\"&&u!==\"longjmp\")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!=\"number\"&&A!==\"longjmp\")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!=\"number\"&&o!==\"longjmp\")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),I=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,x=e.ABORT|0,C=e.STACKTOP|0,R=e.STACK_MAX|0,L=e.cttz_i8|0,U=e.___dso_handle|0,J=0,te=0,ae=0,fe=0,ce=t.NaN,me=t.Infinity,he=0,Be=0,we=0,g=0,Ee=0,Se=0,le=t.Math.floor,ne=t.Math.abs,ee=t.Math.sqrt,Ie=t.Math.pow,Fe=t.Math.cos,At=t.Math.sin,H=t.Math.tan,at=t.Math.acos,Re=t.Math.asin,ke=t.Math.atan,xe=t.Math.atan2,He=t.Math.exp,Te=t.Math.log,Je=t.Math.ceil,qe=t.Math.imul,b=t.Math.min,w=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,Z=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,Pe=e.invoke_viiiii,Ne=e.invoke_vif,ot=e.invoke_vid,dt=e.invoke_fiff,jt=e.invoke_vi,$t=e.invoke_vii,bt=e.invoke_ii,an=e.invoke_viddi,Qr=e.invoke_vidd,mr=e.invoke_iiii,br=e.invoke_diii,Wr=e.invoke_di,Kn=e.invoke_iid,Ns=e.invoke_iii,Ti=e.invoke_viiddi,ps=e.invoke_viiiiii,io=e.invoke_dii,Pi=e.invoke_i,Ls=e.invoke_iiiiii,so=e.invoke_viiid,cc=e.invoke_viififi,cu=e.invoke_viii,lp=e.invoke_v,cp=e.invoke_viid,Os=e.invoke_idd,Dn=e.invoke_viiii,oo=e._emscripten_asm_const_iiiii,Ms=e._emscripten_asm_const_iiidddddd,ml=e._emscripten_asm_const_iiiid,yl=e.__nbind_reference_external,ao=e._emscripten_asm_const_iiiiiiii,Vn=e._removeAccessorPrefix,On=e._typeModule,Ni=e.__nbind_register_pool,Mn=e.__decorate,_i=e._llvm_stackrestore,tr=e.___cxa_atexit,Oe=e.__extends,ii=e.__nbind_get_value_object,Ma=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,hr=e._emscripten_set_main_loop_timing,uc=e.__nbind_register_primitive,uu=e.__nbind_register_type,Ac=e._emscripten_memcpy_big,El=e.__nbind_register_function,DA=e.___setErrNo,Au=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,fc=e._nbind_value,Hi=e._llvm_stacksave,fu=e.___syscall54,Yt=e._defineHidden,Cl=e._emscripten_set_main_loop,SA=e._emscripten_get_now,up=e.__nbind_register_callback_signature,pc=e._emscripten_asm_const_iiiiii,PA=e.__nbind_free_external,Qn=e._emscripten_asm_const_iiii,hi=e._emscripten_asm_const_iiididi,hc=e.___syscall6,bA=e._atexit,sa=e.___syscall140,Li=e.___syscall146,_o=y(0);let Ze=y(0);function lo(s){s=s|0;var l=0;return l=C,C=C+s|0,C=C+15&-16,l|0}function gc(){return C|0}function pu(s){s=s|0,C=s}function qi(s,l){s=s|0,l=l|0,C=s,R=l}function hu(s,l){s=s|0,l=l|0,J||(J=s,te=l)}function xA(s){s=s|0,Se=s}function Ua(){return Se|0}function dc(){var s=0,l=0;Dr(8104,8,400)|0,Dr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,tr(17,8104,U|0)|0}function hs(s){s=s|0,pt(s+948|0)}function _t(s){return s=y(s),((Du(s)|0)&2147483647)>>>0>2139095040|0}function Fn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function Ci(s){s=s|0;var l=0;return l=pD(1e3)|0,oa(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Dr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function oa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Eg(s,5,3197,f)),C=d}function co(){return Ci(956)|0}function Us(s){s=s|0;var l=0;return l=Kt(1e3)|0,aa(l,s),oa(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function aa(s,l){s=s|0,l=l|0;var c=0;Dr(s|0,l|0,948)|0,Rm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function la(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Ho(c+948|0,s)|0,n[l>>2]=0),c=wi(s)|0,c|0){l=0;do n[(gs(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),ds(c),hD(s),n[2276]=(n[2276]|0)+-1}function Ho(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0;f=n[s>>2]|0,k=s+4|0,c=n[k>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(Mw(d|0,f|0,s|0)|0,c=n[k>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[k>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function wi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function gs(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function ds(s){s=s|0;var l=0,c=0,f=0,d=0;f=C,C=C+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,Ip(l,d,d,s+8|0),Bg(s,l),_A(l)),C=f}function ms(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;M=wi(s)|0;do if(M|0){if((n[(gs(s,0)|0)+944>>2]|0)==(s|0)){if(!(Ho(s+948|0,l)|0))break;Dr(l+400|0,8504,540)|0,n[l+944>>2]=0,Le(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,k=s+948|0,Q=(B|0)==0,c=0,m=0;do f=n[(n[k>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?Le(s):(d=Us(f)|0,n[(n[k>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,Q||TR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0<M>>>0){Q=s+948|0,k=s+952|0,B=c,c=n[k>>2]|0;do m=(n[Q>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(Mw(m|0,f|0,d|0)|0,c=n[k>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[k>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function _s(s){s=s|0;var l=0,c=0,f=0,d=0;Un(s,(wi(s)|0)==0,2491),Un(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),ds(l),l=s+976|0,c=n[l>>2]|0,Dr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Un(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=C,C=C+16|0,f=d,l||(n[f>>2]=c,Ao(s,5,3197,f)),C=d}function Sn(){return n[2276]|0}function ys(){var s=0;return s=pD(20)|0,We((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function We(s,l){s=s|0,l=l|0;var c=0,f=0;f=C,C=C+16|0,c=f,s||(n[c>>2]=l,Ao(0,5,3197,c)),C=f}function tt(s){s=s|0,hD(s),n[2277]=(n[2277]|0)+-1}function It(s,l){s=s|0,l=l|0;var c=0;l?(Un(s,(wi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function nr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Un(s,(n[l+944>>2]|0)==0,2709),Un(s,(n[s+964>>2]|0)==0,2763),$(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],ye(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,Le(s),C=f}function $(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;if(c=wi(s)|0,c|0&&(n[(gs(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=Us(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=s,m||TR[f&15](B,k,s,l),l=l+1|0;while((l|0)!=(c|0))}}function ye(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0;et=C,C=C+64|0,j=et+52|0,k=et+48|0,se=et+28|0,Ge=et+24|0,Me=et+20|0,Qe=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}HA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0<f>>>0&&zr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,Ip(Qe,M>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-O>>2,s+8|0),O=Qe+8|0,f=n[O>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,Q=f;do if((f|0)==(M|0)){if(M=Qe+4|0,f=n[M>>2]|0,Xe=n[Qe>>2]|0,d=Xe,f>>>0<=Xe>>>0){f=B-d>>1,f=(f|0)==0?1:f,Ip(se,f,f>>>2,n[Qe+16>>2]|0),n[Ge>>2]=n[M>>2],n[Me>>2]=n[O>>2],n[k>>2]=n[Ge>>2],n[j>>2]=n[Me>>2],Dw(se,k,j),f=n[Qe>>2]|0,n[Qe>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Xe=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Xe,f=se+8|0,Xe=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Xe,f=se+12|0,Xe=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Xe,_A(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,k=f+(B<<2)|0,d=Q-m|0,m=d>>2,m&&(Mw(k|0,f|0,d|0)|0,f=n[M>>2]|0),Xe=k+(m<<2)|0,n[O>>2]=Xe,n[M>>2]=f+(B<<2),f=Xe}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=vg(s,Qe,l)|0,_A(Qe)}while(0);return C=et,l|0}function Le(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(ce),s=n[s+944>>2]|0}while((s|0)!=0)}function pt(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ht(s){return s=s|0,n[s+944>>2]|0}function Tt(s){s=s|0,Un(s,(n[s+964>>2]|0)!=0,2832),Le(s)}function er(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function $r(s,l){s=s|0,l=l|0,QUe(s,l,400)|0&&(Dr(s|0,l|0,400)|0,Le(s))}function ji(s){s=s|0;var l=Ze;return l=y(h[s+44>>2]),s=_t(l)|0,y(s?y(0):l)}function es(s){s=s|0;var l=Ze;return l=y(h[s+48>>2]),_t(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function bi(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function qo(s){return s=s|0,n[s+980>>2]|0}function kA(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function QA(s){return s=s|0,n[s+4>>2]|0}function Ap(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function ig(s){return s=s|0,n[s+8>>2]|0}function gu(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function sg(s){return s=s|0,n[s+12>>2]|0}function du(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function uo(s){return s=s|0,n[s+16>>2]|0}function FA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function ca(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function og(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function Pm(s){return s=s|0,n[s+28>>2]|0}function ag(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function $n(s){return s=s|0,n[s+32>>2]|0}function fp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,Le(s))}function lg(s){return s=s|0,n[s+36>>2]|0}function RA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Hs(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function mu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Ha(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Gi(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function ua(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function yu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Es(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(ce),n[c>>2]=3,Le(s))}function xi(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function wc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function ct(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Eu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=_t(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,Le(s))}function cg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function yw(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function TA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function pp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(ce),n[l>>2]=3,Le(s))}function Br(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cs(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function ug(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=_t(l)|0,n[c>>2]=f?3:2,Le(s))}function Ag(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(ce),n[l>>2]=3,Le(s))}function fg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function hp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ic(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ct(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function bm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function pg(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function hg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Cu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function xm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function gg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function Ew(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=_t(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,Le(s))}function km(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Aa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,Le(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function Il(s){return s=s|0,y(h[s+400>>2])}function Iu(s){return s=s|0,y(h[s+404>>2])}function dg(s){return s=s|0,y(h[s+408>>2])}function NA(s){return s=s|0,y(h[s+412>>2])}function gp(s){return s=s|0,y(h[s+416>>2])}function qa(s){return s=s|0,y(h[s+420>>2])}function mg(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function dp(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function jo(s,l){switch(s=s|0,l=l|0,Un(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function ws(s,l){s=s|0,l=l|0;var c=0,f=Ze;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ii(s,l){s=y(s),l=y(l);var c=0;return _t(s)|0?c=_t(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function Qm(s,l){s=s|0,l=l|0,Fm(s,l)}function Fm(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Ma(f|0,s|0,l|0,0),Ao(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),e3e(f),C=c}function Go(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=Ze;s=y(s*l),d=y(bR(s,y(1)));do if(Ii(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ii(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ii(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function LA(s,l,c,f,d,m,B,k,Q,M,O,j,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,k=y(k),Q=y(Q),M=y(M),O=y(O),j=y(j),se=se|0;var Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze;return Q<y(0)|M<y(0)?se=0:((se|0)!=0&&(Me=y(h[se+4>>2]),Me!=y(0))?(et=y(Go(l,Me,0,0)),Xe=y(Go(f,Me,0,0)),Qe=y(Go(m,Me,0,0)),Me=y(Go(k,Me,0,0))):(Qe=m,et=l,Me=k,Xe=f),(d|0)==(s|0)?Ge=Ii(Qe,et)|0:Ge=0,(B|0)==(c|0)?se=Ii(Me,Xe)|0:se=0,!Ge&&(lt=y(l-O),!(mp(s,lt,Q)|0))&&!(yp(s,lt,d,Q)|0)?Ge=yg(s,lt,d,m,Q)|0:Ge=1,!se&&(Ue=y(f-j),!(mp(c,Ue,M)|0))&&!(yp(c,Ue,B,M)|0)?se=yg(c,Ue,B,k,M)|0:se=1,se=Ge&se),se|0}function mp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ii(l,c)|0:s=0,s|0}function yp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ii(l,f)|0:s=0,s|0}function yg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ii(l,d)|0:s=0,s|0}function fa(s,l,c,f,d,m,B,k,Q,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0,O=O|0;var j=0,se=0,Ge=0,Me=0,Qe=Ze,et=Ze,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=Ze,go=Ze,mo=Ze,yo=0,ya=0;ir=C,C=C+160|0,Xt=ir+152|0,or=ir+120|0,Mr=ir+104|0,Ue=ir+72|0,Me=ir+56|0,Lt=ir+8|0,lt=ir,je=(n[2279]|0)+1|0,n[2279]=je,Sr=s+984|0,(o[Sr>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Xe=4:(n[s+516>>2]|0)==(f|0)?Nr=0:Xe=4,(Xe|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Nr=1);e:do if(n[s+964>>2]|0)if(Qe=y(ln(s,2,B)),et=y(ln(s,0,B)),j=s+916|0,mo=y(h[j>>2]),go=y(h[s+920>>2]),xn=y(h[s+932>>2]),LA(d,l,m,c,n[s+924>>2]|0,mo,n[s+928>>2]|0,go,xn,y(h[s+936>>2]),Qe,et,O)|0)Xe=22;else if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,xn=y(h[j>>2]),go=y(h[s+524+(se*24|0)+4>>2]),mo=y(h[s+524+(se*24|0)+16>>2]),LA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,xn,n[s+524+(se*24|0)+12>>2]|0,go,mo,y(h[s+524+(se*24|0)+20>>2]),Qe,et,O)|0){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}else{if(Q){if(j=s+916|0,!(Ii(y(h[j>>2]),l)|0)){Xe=21;break}if(!(Ii(y(h[s+920>>2]),c)|0)){Xe=21;break}if((n[s+924>>2]|0)!=(d|0)){Xe=21;break}j=(n[s+928>>2]|0)==(m|0)?j:0,Xe=22;break}if(Ge=n[s+520>>2]|0,!Ge)Xe=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Ii(y(h[j>>2]),l)|0&&Ii(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Xe=22;break e}if(se=se+1|0,se>>>0>=Ge>>>0){Xe=21;break}}}while(0);do if((Xe|0)==21)o[11697]|0?(j=0,Xe=28):(j=0,Xe=31);else if((Xe|0)==22){if(se=(o[11697]|0)!=0,!((j|0)!=0&(Nr^1)))if(se){Xe=28;break}else{Xe=31;break}Me=j+16|0,n[s+908>>2]=n[Me>>2],Ge=j+20|0,n[s+912>>2]=n[Ge>>2],(o[11698]|0)==0|se^1||(n[lt>>2]=OA(je)|0,n[lt+4>>2]=je,Ao(s,4,2972,lt),se=n[s+972>>2]|0,se|0&&tf[se&127](s),d=ja(d,Q)|0,m=ja(m,Q)|0,ya=+y(h[Me>>2]),yo=+y(h[Ge>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+c,E[Lt+24>>3]=ya,E[Lt+32>>3]=yo,n[Lt+40>>2]=M,Ao(s,4,2989,Lt))}while(0);return(Xe|0)==28&&(se=OA(je)|0,n[Me>>2]=se,n[Me+4>>2]=je,n[Me+8>>2]=Nr?3047:11699,Ao(s,4,3038,Me),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=ja(d,Q)|0,Xe=ja(m,Q)|0,n[Ue>>2]=Lt,n[Ue+4>>2]=Xe,E[Ue+8>>3]=+l,E[Ue+16>>3]=+c,n[Ue+24>>2]=M,Ao(s,4,3049,Ue),Xe=31),(Xe|0)==31&&(si(s,l,c,f,d,m,B,k,Q,O),o[11697]|0&&(se=n[2279]|0,Lt=OA(se)|0,n[Mr>>2]=Lt,n[Mr+4>>2]=se,n[Mr+8>>2]=Nr?3047:11699,Ao(s,4,3083,Mr),se=n[s+972>>2]|0,se|0&&tf[se&127](s),Lt=ja(d,Q)|0,Mr=ja(m,Q)|0,yo=+y(h[s+908>>2]),ya=+y(h[s+912>>2]),n[or>>2]=Lt,n[or+4>>2]=Mr,E[or+8>>3]=yo,E[or+16>>3]=ya,n[or+24>>2]=M,Ao(s,4,3092,or)),n[s+516>>2]=f,j||(se=s+520|0,j=n[se>>2]|0,(j|0)==16&&(o[11697]|0&&Ao(s,4,3124,Xt),n[se>>2]=0,j=0),Q?j=s+916|0:(n[se>>2]=j+1,j=s+524+(j*24|0)|0),h[j>>2]=l,h[j+4>>2]=c,n[j+8>>2]=d,n[j+12>>2]=m,n[j+16>>2]=n[s+908>>2],n[j+20>>2]=n[s+912>>2],j=0)),Q&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Sr>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],C=ir,Nr|(j|0)==0|0}function ln(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(K(s,l,c)),y(f+y(re(s,l,c)))}function Ao(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=C,C=C+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,Cg(f,s,l,c,d),C=m}function OA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function ja(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,C=d,s|0}function si(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),k=y(k),Q=Q|0,M=M|0;var O=0,j=0,se=0,Ge=0,Me=Ze,Qe=Ze,et=Ze,Xe=Ze,lt=Ze,Ue=Ze,je=Ze,Lt=0,Mr=0,or=0,Xt=Ze,Sr=Ze,Nr=0,ir=Ze,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=Ze,_p=Ze,Tu=Ze,Nu=Ze,kc=Ze,js=0,za=0,Wo=0,kl=0,nf=0,sf=Ze,Lu=Ze,of=Ze,af=Ze,Gs=Ze,vs=Ze,Ql=0,Rn=Ze,lf=Ze,Eo=Ze,Qc=Ze,Co=Ze,Fc=Ze,cf=0,uf=0,Rc=Ze,Ys=Ze,Fl=0,Af=0,ff=0,pf=0,xr=Ze,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0,Jt=Ze,hf=0,li=0;Rl=C,C=C+16|0,js=Rl+12|0,za=Rl+8|0,Wo=Rl+4|0,kl=Rl,Un(s,(d|0)==0|(_t(l)|0)^1,3326),Un(s,(m|0)==0|(_t(c)|0)^1,3406),Ds=mt(s,f)|0,n[s+496>>2]=Ds,Rr=fr(2,Ds)|0,ur=fr(0,Ds)|0,h[s+440>>2]=y(K(s,Rr,B)),h[s+444>>2]=y(re(s,Rr,B)),h[s+428>>2]=y(K(s,ur,B)),h[s+436>>2]=y(re(s,ur,B)),h[s+464>>2]=y(Cr(s,Rr)),h[s+468>>2]=y(yn(s,Rr)),h[s+452>>2]=y(Cr(s,ur)),h[s+460>>2]=y(yn(s,ur)),h[s+488>>2]=y(oi(s,Rr,B)),h[s+492>>2]=y(Oi(s,Rr,B)),h[s+476>>2]=y(oi(s,ur,B)),h[s+484>>2]=y(Oi(s,ur,B));do if(n[s+964>>2]|0)Ig(s,l,c,d,m,B,k);else{if(wo=s+948|0,Ws=(n[s+952>>2]|0)-(n[wo>>2]|0)>>2,!Ws){Gv(s,l,c,d,m,B,k);break}if(!Q&&Yv(s,l,c,d,m,B,k)|0)break;$(s),xl=s+508|0,o[xl>>0]=0,Rr=fr(n[s+4>>2]|0,Ds)|0,ur=ww(Rr,Ds)|0,Jn=pe(Rr)|0,Mp=n[s+8>>2]|0,Af=s+28|0,xc=(n[Af>>2]|0)!=0,Co=Jn?B:k,Rc=Jn?k:B,Up=y(Cp(s,Rr,B)),_p=y(Iw(s,Rr,B)),Me=y(Cp(s,ur,B)),Fc=y(En(s,Rr,B)),Ys=y(En(s,ur,B)),or=Jn?d:m,Fl=Jn?m:d,xr=Jn?Fc:Ys,lt=Jn?Ys:Fc,Qc=y(ln(s,2,B)),Xe=y(ln(s,0,B)),Qe=y(y(Gr(s+364|0,B))-xr),et=y(y(Gr(s+380|0,B))-xr),Ue=y(y(Gr(s+372|0,k))-lt),je=y(y(Gr(s+388|0,k))-lt),Tu=Jn?Qe:Ue,Nu=Jn?et:je,Qc=y(l-Qc),l=y(Qc-xr),_t(l)|0?xr=l:xr=y(_n(y(Tg(l,et)),Qe)),lf=y(c-Xe),l=y(lf-lt),_t(l)|0?Eo=l:Eo=y(_n(y(Tg(l,je)),Ue)),Qe=Jn?xr:Eo,Rn=Jn?Eo:xr;e:do if((or|0)==1)for(f=0,j=0;;){if(O=gs(s,j)|0,!f)y(rs(O))>y(0)&&y(qs(O))>y(0)?f=O:f=0;else if(Tm(O)|0){Ge=0;break e}if(j=j+1|0,j>>>0>=Ws>>>0){Ge=f;break}}else Ge=0;while(0);Lt=Ge+500|0,Mr=Ge+504|0,f=0,O=0,l=y(0),se=0;do{if(j=n[(n[wo>>2]|0)+(se<<2)>>2]|0,(n[j+36>>2]|0)==1)Bu(j),o[j+985>>0]=1,o[j+984>>0]=0;else{Bl(j),Q&&Ep(j,mt(j,Ds)|0,Qe,Rn,xr);do if((n[j+24>>2]|0)!=1)if((j|0)==(Ge|0)){n[Lt>>2]=n[2278],h[Mr>>2]=y(0);break}else{Nm(s,j,xr,d,Eo,xr,Eo,m,Ds,M);break}else O|0&&(n[O+960>>2]=j),n[j+960>>2]=0,O=j,f=(f|0)==0?j:f;while(0);vs=y(h[j+504>>2]),l=y(l+y(vs+y(ln(j,Rr,xr))))}se=se+1|0}while((se|0)!=(Ws|0));for(mo=l>Qe,Ql=xc&((or|0)==2&mo)?1:or,xn=(Fl|0)==1,ya=xn&(Q^1),Fp=(Ql|0)==1,Rp=(Ql|0)==2,bl=976+(Rr<<2)|0,Tp=(Fl|2|0)==2,Op=xn&(xc^1),Fu=1040+(ur<<2)|0,Ru=1040+(Rr<<2)|0,Np=976+(ur<<2)|0,Lp=(Fl|0)!=1,mo=xc&((or|0)!=0&mo),go=s+976|0,xn=xn^1,l=Qe,Nr=0,yo=0,vs=y(0),kc=y(0);;){e:do if(Nr>>>0<Ws>>>0)for(Mr=n[wo>>2]|0,se=0,je=y(0),Ue=y(0),et=y(0),Qe=y(0),j=0,O=0,Ge=Nr;;){if(Lt=n[Mr+(Ge<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=yo,(n[Lt+24>>2]|0)!=1)){if(Xe=y(ln(Lt,Rr,xr)),Xr=n[bl>>2]|0,c=y(Gr(Lt+380+(Xr<<3)|0,Co)),lt=y(h[Lt+504>>2]),c=y(Tg(c,lt)),c=y(_n(y(Gr(Lt+364+(Xr<<3)|0,Co)),c)),xc&(se|0)!=0&y(Xe+y(Ue+c))>l){m=se,Xe=je,or=Ge;break e}Xe=y(Xe+c),c=y(Ue+Xe),Xe=y(je+Xe),Tm(Lt)|0&&(et=y(et+y(rs(Lt))),Qe=y(Qe-y(lt*y(qs(Lt))))),O|0&&(n[O+960>>2]=Lt),n[Lt+960>>2]=0,se=se+1|0,O=Lt,j=(j|0)==0?Lt:j}else Xe=je,c=Ue;if(Ge=Ge+1|0,Ge>>>0<Ws>>>0)je=Xe,Ue=c;else{m=se,or=Ge;break}}else m=0,Xe=y(0),et=y(0),Qe=y(0),j=0,or=Nr;while(0);Xr=et>y(0)&et<y(1),Xt=Xr?y(1):et,Xr=Qe>y(0)&Qe<y(1),je=Xr?y(1):Qe;do if(Fp)Xr=51;else if(Xe<Tu&((_t(Tu)|0)^1))l=Tu,Xr=51;else if(Xe>Nu&((_t(Nu)|0)^1))l=Nu,Xr=51;else if(o[(n[go>>2]|0)+3>>0]|0)Xr=51;else{if(Xt!=y(0)&&y(rs(s))!=y(0)){Xr=53;break}l=Xe,Xr=53}while(0);if((Xr|0)==51&&(Xr=0,_t(l)|0?Xr=53:(Sr=y(l-Xe),ir=l)),(Xr|0)==53&&(Xr=0,Xe<y(0)?(Sr=y(-Xe),ir=l):(Sr=y(0),ir=l)),!ya&&(nf=(j|0)==0,!nf)){se=n[bl>>2]|0,Ge=Sr<y(0),lt=y(Sr/je),Lt=Sr>y(0),Ue=y(Sr/Xt),et=y(0),Xe=y(0),l=y(0),O=j;do c=y(Gr(O+380+(se<<3)|0,Co)),Qe=y(Gr(O+364+(se<<3)|0,Co)),Qe=y(Tg(c,y(_n(Qe,y(h[O+504>>2]))))),Ge?(c=y(Qe*y(qs(O))),c!=y(-0)&&(Jt=y(Qe-y(lt*c)),sf=y(Bi(O,Rr,Jt,ir,xr)),Jt!=sf)&&(et=y(et-y(sf-Qe)),l=y(l+c))):Lt&&(Lu=y(rs(O)),Lu!=y(0))&&(Jt=y(Qe+y(Ue*Lu)),of=y(Bi(O,Rr,Jt,ir,xr)),Jt!=of)&&(et=y(et-y(of-Qe)),Xe=y(Xe-Lu)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(je+l),Qe=y(Sr+et),nf)l=y(0);else{lt=y(Xt+Xe),Ge=n[bl>>2]|0,Lt=Qe<y(0),Mr=l==y(0),Ue=y(Qe/l),se=Qe>y(0),lt=y(Qe/lt),l=y(0);do{Jt=y(Gr(j+380+(Ge<<3)|0,Co)),et=y(Gr(j+364+(Ge<<3)|0,Co)),et=y(Tg(Jt,y(_n(et,y(h[j+504>>2]))))),Lt?(Jt=y(et*y(qs(j))),Qe=y(-Jt),Jt!=y(-0)?(Jt=y(Ue*Qe),Qe=y(Bi(j,Rr,y(et+(Mr?Qe:Jt)),ir,xr))):Qe=et):se&&(af=y(rs(j)),af!=y(0))?Qe=y(Bi(j,Rr,y(et+y(lt*af)),ir,xr)):Qe=et,l=y(l-y(Qe-et)),Xe=y(ln(j,Rr,xr)),c=y(ln(j,ur,xr)),Qe=y(Qe+Xe),h[za>>2]=Qe,n[kl>>2]=1,et=y(h[j+396>>2]);e:do if(_t(et)|0){O=_t(Rn)|0;do if(!O){if(mo|(ts(j,ur,Rn)|0|xn)||(ha(s,j)|0)!=4||(n[(vl(j,ur)|0)+4>>2]|0)==3||(n[(Sc(j,ur)|0)+4>>2]|0)==3)break;h[js>>2]=Rn,n[Wo>>2]=1;break e}while(0);if(ts(j,ur,Rn)|0){O=n[j+992+(n[Np>>2]<<2)>>2]|0,Jt=y(c+y(Gr(O,Rn))),h[js>>2]=Jt,O=Lp&(n[O+4>>2]|0)==2,n[Wo>>2]=((_t(Jt)|0|O)^1)&1;break}else{h[js>>2]=Rn,n[Wo>>2]=O?0:2;break}}else Jt=y(Qe-Xe),Xt=y(Jt/et),Jt=y(et*Jt),n[Wo>>2]=1,h[js>>2]=y(c+(Jn?Xt:Jt));while(0);yr(j,Rr,ir,xr,kl,za),yr(j,ur,Rn,xr,Wo,js);do if(!(ts(j,ur,Rn)|0)&&(ha(s,j)|0)==4){if((n[(vl(j,ur)|0)+4>>2]|0)==3){O=0;break}O=(n[(Sc(j,ur)|0)+4>>2]|0)!=3}else O=0;while(0);Jt=y(h[za>>2]),Xt=y(h[js>>2]),hf=n[kl>>2]|0,li=n[Wo>>2]|0,fa(j,Jn?Jt:Xt,Jn?Xt:Jt,Ds,Jn?hf:li,Jn?li:hf,xr,Eo,Q&(O^1),3488,M)|0,o[xl>>0]=o[xl>>0]|o[j+508>>0],j=n[j+960>>2]|0}while((j|0)!=0)}}else l=y(0);if(l=y(Sr+l),li=l<y(0)&1,o[xl>>0]=li|u[xl>>0],Rp&l>y(0)?(O=n[bl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(Gs=y(Gr(s+364+(O<<3)|0,Co)),Gs>=y(0))?Qe=y(_n(y(0),y(Gs-y(ir-l)))):Qe=y(0)):Qe=l,Lt=Nr>>>0<or>>>0,Lt){Ge=n[wo>>2]|0,se=Nr,O=0;do j=n[Ge+(se<<2)>>2]|0,n[j+24>>2]|0||(O=((n[(vl(j,Rr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Sc(j,Rr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(or|0));O?(Xe=y(0),c=y(0)):Xr=101}else Xr=101;e:do if((Xr|0)==101)switch(Xr=0,Mp|0){case 1:{O=0,Xe=y(Qe*y(.5)),c=y(0);break e}case 2:{O=0,Xe=Qe,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Xe=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Xe=y(0),c=y(y(_n(Qe,y(0)))/c);break e}case 5:{c=y(Qe/y((m+1|0)>>>0)),O=0,Xe=c;break e}case 4:{c=y(Qe/y(m>>>0)),O=0,Xe=y(c*y(.5));break e}default:{O=0,Xe=y(0),c=y(0);break e}}while(0);if(l=y(Up+Xe),Lt){et=y(Qe/y(O|0)),se=n[wo>>2]|0,j=Nr,Qe=y(0);do{O=n[se+(j<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(gi(O,Rr)|0){if(!Q)break e;Jt=y(Or(O,Rr,ir)),Jt=y(Jt+y(Cr(s,Rr))),Jt=y(Jt+y(K(O,Rr,xr))),h[O+400+(n[Ru>>2]<<2)>>2]=Jt;break e}break}case 0:if(li=(n[(vl(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,Q&&(li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(l+y(h[li>>2]))),li=(n[(Sc(O,Rr)|0)+4>>2]|0)==3,Jt=y(et+l),l=li?Jt:l,ya){Jt=y(c+y(ln(O,Rr,xr))),Qe=Rn,l=y(l+y(Jt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Rr,xr)))),Qe=y(_n(Qe,y(ns(O,ur,xr))));break e}default:}Q&&(Jt=y(Xe+y(Cr(s,Rr))),li=O+400+(n[Ru>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2])))}while(0);j=j+1|0}while((j|0)!=(or|0))}else Qe=y(0);if(c=y(_p+l),Tp?Xe=y(y(Bi(s,ur,y(Ys+Qe),Rc,B))-Ys):Xe=Rn,et=y(y(Bi(s,ur,y(Ys+(Op?Rn:Qe)),Rc,B))-Ys),Lt&Q){j=Nr;do{se=n[(n[wo>>2]|0)+(j<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(gi(se,ur)|0){if(Jt=y(Or(se,ur,Rn)),Jt=y(Jt+y(Cr(s,ur))),Jt=y(Jt+y(K(se,ur,xr))),O=n[Fu>>2]|0,h[se+400+(O<<2)>>2]=Jt,!(_t(Jt)|0))break}else O=n[Fu>>2]|0;Jt=y(Cr(s,ur)),h[se+400+(O<<2)>>2]=y(Jt+y(K(se,ur,xr)));break}O=ha(s,se)|0;do if((O|0)==4){if((n[(vl(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if((n[(Sc(se,ur)|0)+4>>2]|0)==3){Xr=139;break}if(ts(se,ur,Rn)|0){l=Me;break}hf=n[se+908+(n[bl>>2]<<2)>>2]|0,n[js>>2]=hf,l=y(h[se+396>>2]),li=_t(l)|0,Qe=(n[v>>2]=hf,y(h[v>>2])),li?l=et:(Sr=y(ln(se,ur,xr)),Jt=y(Qe/l),l=y(l*Qe),l=y(Sr+(Jn?Jt:l))),h[za>>2]=l,h[js>>2]=y(y(ln(se,Rr,xr))+Qe),n[Wo>>2]=1,n[kl>>2]=1,yr(se,Rr,ir,xr,Wo,js),yr(se,ur,Rn,xr,kl,za),l=y(h[js>>2]),Sr=y(h[za>>2]),Jt=Jn?l:Sr,l=Jn?Sr:l,li=((_t(Jt)|0)^1)&1,fa(se,Jt,l,Ds,li,((_t(l)|0)^1)&1,xr,Eo,1,3493,M)|0,l=Me}else Xr=139;while(0);e:do if((Xr|0)==139){Xr=0,l=y(Xe-y(ns(se,ur,xr)));do if((n[(vl(se,ur)|0)+4>>2]|0)==3){if((n[(Sc(se,ur)|0)+4>>2]|0)!=3)break;l=y(Me+y(_n(y(0),y(l*y(.5)))));break e}while(0);if((n[(Sc(se,ur)|0)+4>>2]|0)==3){l=Me;break}if((n[(vl(se,ur)|0)+4>>2]|0)==3){l=y(Me+y(_n(y(0),l)));break}switch(O|0){case 1:{l=Me;break e}case 2:{l=y(Me+y(l*y(.5)));break e}default:{l=y(Me+l);break e}}}while(0);Jt=y(vs+l),li=se+400+(n[Fu>>2]<<2)|0,h[li>>2]=y(Jt+y(h[li>>2]))}while(0);j=j+1|0}while((j|0)!=(or|0))}if(vs=y(vs+et),kc=y(_n(kc,c)),m=yo+1|0,or>>>0>=Ws>>>0)break;l=ir,Nr=or,yo=m}do if(Q){if(O=m>>>0>1,!O&&!(Yi(s)|0))break;if(!(_t(Rn)|0)){l=y(Rn-vs);e:do switch(n[s+12>>2]|0){case 3:{Me=y(Me+l),Ue=y(0);break}case 2:{Me=y(Me+y(l*y(.5))),Ue=y(0);break}case 4:{Rn>vs?Ue=y(l/y(m>>>0)):Ue=y(0);break}case 7:if(Rn>vs){Me=y(Me+y(l/y(m<<1>>>0))),Ue=y(l/y(m>>>0)),Ue=O?Ue:y(0);break e}else{Me=y(Me+y(l*y(.5))),Ue=y(0);break e}case 6:{Ue=y(l/y(yo>>>0)),Ue=Rn>vs&O?Ue:y(0);break}default:Ue=y(0)}while(0);if(m|0)for(Lt=1040+(ur<<2)|0,Mr=976+(ur<<2)|0,Ge=0,j=0;;){e:do if(j>>>0<Ws>>>0)for(Qe=y(0),et=y(0),l=y(0),se=j;;){O=n[(n[wo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(Ge|0))break e;if(Lm(O,ur)|0&&(Jt=y(h[O+908+(n[Mr>>2]<<2)>>2]),l=y(_n(l,y(Jt+y(ln(O,ur,xr)))))),(ha(s,O)|0)!=5)break;Gs=y(Ya(O)),Gs=y(Gs+y(K(O,0,xr))),Jt=y(h[O+912>>2]),Jt=y(y(Jt+y(ln(O,0,xr)))-Gs),Gs=y(_n(et,Gs)),Jt=y(_n(Qe,Jt)),Qe=Jt,et=Gs,l=y(_n(l,y(Gs+Jt)))}while(0);if(O=se+1|0,O>>>0<Ws>>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=j;while(0);if(lt=y(Ue+l),c=Me,Me=y(Me+lt),j>>>0<se>>>0){Xe=y(c+et),O=j;do{j=n[(n[wo>>2]|0)+(O<<2)>>2]|0;e:do if((n[j+36>>2]|0)!=1&&(n[j+24>>2]|0)==0)switch(ha(s,j)|0){case 1:{Jt=y(c+y(K(j,ur,xr))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 3:{Jt=y(y(Me-y(re(j,ur,xr)))-y(h[j+908+(n[Mr>>2]<<2)>>2])),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 2:{Jt=y(c+y(y(lt-y(h[j+908+(n[Mr>>2]<<2)>>2]))*y(.5))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt;break e}case 4:{if(Jt=y(c+y(K(j,ur,xr))),h[j+400+(n[Lt>>2]<<2)>>2]=Jt,ts(j,ur,Rn)|0||(Jn?(Qe=y(h[j+908>>2]),l=y(Qe+y(ln(j,Rr,xr))),et=lt):(et=y(h[j+912>>2]),et=y(et+y(ln(j,ur,xr))),l=lt,Qe=y(h[j+908>>2])),Ii(l,Qe)|0&&Ii(et,y(h[j+912>>2]))|0))break e;fa(j,l,et,Ds,1,1,xr,Eo,1,3501,M)|0;break e}case 5:{h[j+404>>2]=y(y(Xe-y(Ya(j)))+y(Or(j,0,Rn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(Ge=Ge+1|0,(Ge|0)==(m|0))break;j=se}}}while(0);if(h[s+908>>2]=y(Bi(s,2,Qc,B,B)),h[s+912>>2]=y(Bi(s,0,lf,k,B)),(Ql|0)!=0&&(cf=n[s+32>>2]|0,uf=(Ql|0)==2,!(uf&(cf|0)!=2))?uf&(cf|0)==2&&(l=y(Fc+ir),l=y(_n(y(Tg(l,y(MA(s,Rr,kc,Co)))),Fc)),Xr=198):(l=y(Bi(s,Rr,kc,Co,B)),Xr=198),(Xr|0)==198&&(h[s+908+(n[976+(Rr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(ff=n[s+32>>2]|0,pf=(Fl|0)==2,!(pf&(ff|0)!=2))?pf&(ff|0)==2&&(l=y(Ys+Rn),l=y(_n(y(Tg(l,y(MA(s,ur,y(Ys+vs),Rc)))),Ys)),Xr=204):(l=y(Bi(s,ur,y(Ys+vs),Rc,B)),Xr=204),(Xr|0)==204&&(h[s+908+(n[976+(ur<<2)>>2]<<2)>>2]=l),Q){if((n[Af>>2]|0)==2){j=976+(ur<<2)|0,se=1040+(ur<<2)|0,O=0;do Ge=gs(s,O)|0,n[Ge+24>>2]|0||(hf=n[j>>2]|0,Jt=y(h[s+908+(hf<<2)>>2]),li=Ge+400+(n[se>>2]<<2)|0,Jt=y(Jt-y(h[li>>2])),h[li>>2]=y(Jt-y(h[Ge+908+(hf<<2)>>2]))),O=O+1|0;while((O|0)!=(Ws|0))}if(f|0){O=Jn?Ql:d;do Om(s,f,xr,O,Eo,Ds,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Rr|2|0)==3,j=(ur|2|0)==3,O|j){f=0;do se=n[(n[wo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&wp(s,se,Rr),j&&wp(s,se,ur)),f=f+1|0;while((f|0)!=(Ws|0))}}}while(0);C=Rl}function pa(s,l){s=s|0,l=y(l);var c=0;oa(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=Ze,m=Ze,B=0,k=0,Q=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(Gr(n[s+992>>2]|0,l)),Q=1,d=y(d+y(ln(s,2,l)))):(d=y(Gr(s+380|0,l)),d>=y(0)?Q=2:(Q=((_t(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Gr(n[s+996>>2]|0,c)),k=1,m=y(m+y(ln(s,0,l)))):(m=y(Gr(s+388|0,c)),m>=y(0)?k=2:(k=((_t(c)|0)^1)&1,m=c)),B=s+976|0,fa(s,d,m,f,Q,k,l,c,1,3189,n[B>>2]|0)|0&&(Ep(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&Qm(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;k=C,C=C+32|0,B=k+24|0,m=k+16|0,f=k+8|0,d=k,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(Q=l,M=n[Q+4>>2]|0,O=f,n[O>>2]=n[Q>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,Q=d,n[Q>>2]=n[O>>2],n[Q+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],ws(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);C=k}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(_t(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Gr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(ce)}return y(l)}function Ep(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=Ze;l=n[s+944>>2]|0?l:1,m=fr(n[s+4>>2]|0,l)|0,l=ww(m,l)|0,c=y(Mm(s,m,c)),f=y(Mm(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(re(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(re(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=Ze,k=Ze,Q=0,M=0,O=Ze,j=0,se=Ze,Ge=Ze,Me=Ze,Qe=Ze;if(l!=y(0)&&(d=s+400|0,Qe=y(h[d>>2]),m=s+404|0,Me=y(h[m>>2]),j=s+416|0,Ge=y(h[j>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Qe+c),O=y(Me+f),f=y(se+Ge),k=y(O+B),Q=(n[s+988>>2]|0)==1,h[d>>2]=y(Go(Qe,l,0,Q)),h[m>>2]=y(Go(Me,l,0,Q)),c=y(bR(y(Ge*l),y(1))),Ii(c,y(0))|0?m=0:m=(Ii(c,y(1))|0)^1,c=y(bR(y(B*l),y(1))),Ii(c,y(0))|0?d=0:d=(Ii(c,y(1))|0)^1,Qe=y(Go(f,l,Q&m,Q&(m^1))),h[j>>2]=y(Qe-y(Go(se,l,0,Q))),Qe=y(Go(k,l,Q&d,Q&(d^1))),h[M>>2]=y(Qe-y(Go(O,l,0,Q))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(gs(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function Cw(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=i7(n[489]|0,f,d)|0;break}default:s=zUe(f,d)|0}return s|0}function Eg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=C,C=C+16|0,m=d,n[m>>2]=f,Cg(s,0,l,c,m),C=d}function Cg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,D7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function Ga(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Rm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(wg(s,f),Qt(s,n[l>>2]|0,n[c>>2]|0,f))}function wg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function Qt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Fn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function re(s,l,c){return s=s|0,l=l|0,c=y(c),pe(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Fn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function pe(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Gr(s,l)),y(l)}function mt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function fr(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function Cr(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function yn(s,l){s=s|0,l=l|0;var c=Ze;return pe(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(_n(y(h[(Fn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Gr(s+236|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Oi(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return pe(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Gr(s+244|0,c)),f>=y(0))||(f=y(_n(y(Gr(Fn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ig(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze,j=Ze,se=Ze,Ge=0,Me=0,Qe=0;Qe=C,C=C+16|0,Ge=Qe,Me=s+964|0,Un(s,(n[Me>>2]|0)!=0,3519),k=y(En(s,2,l)),Q=y(En(s,0,l)),M=y(ln(s,2,l)),O=y(ln(s,0,l)),_t(l)|0?j=l:j=y(_n(y(0),y(y(l-M)-k))),_t(c)|0?se=c:se=y(_n(y(0),y(y(c-O)-Q))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Bi(s,2,y(l-M),m,m)),l=y(Bi(s,0,y(c-O),B,m))):(S7[n[Me>>2]&1](Ge,s,j,f,se,d),j=y(k+y(h[Ge>>2])),se=y(l-M),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?j:se,m,m)),se=y(Q+y(h[Ge+4>>2])),l=y(c-O),l=y(Bi(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,C=Qe}function Gv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=Ze,Q=Ze,M=Ze,O=Ze;M=y(En(s,2,m)),k=y(En(s,0,m)),O=y(ln(s,2,m)),Q=y(ln(s,0,m)),l=y(l-O),h[s+908>>2]=y(Bi(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-Q),h[s+912>>2]=y(Bi(s,0,(d|2|0)==2?k:c,B,m))}function Yv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var k=0,Q=Ze,M=Ze;return k=(f|0)==2,!(l<=y(0)&k)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(Q=y(ln(s,0,m)),M=y(ln(s,2,m)),k=l<y(0)&k|(_t(l)|0),l=y(l-M),h[s+908>>2]=y(Bi(s,2,k?y(0):l,m,m)),l=y(c-Q),k=c<y(0)&(d|0)==2|(_t(c)|0),h[s+912>>2]=y(Bi(s,0,k?y(0):l,B,m)),s=1),s|0}function ww(s,l){return s=s|0,l=l|0,UA(s)|0?s=fr(2,l)|0:s=0,s|0}function Cp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(oi(s,l,c)),y(c+y(Cr(s,l)))}function Iw(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Oi(s,l,c)),y(c+y(yn(s,l)))}function En(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(Cp(s,l,c)),y(f+y(Iw(s,l,c)))}function Tm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(qs(s))!=y(0),s|0}function rs(s){s=s|0;var l=Ze;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),_t(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((_t(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function qs(s){s=s|0;var l=Ze,c=0,f=Ze;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),_t(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((_t(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Bu(s){s=s|0;var l=0,c=0;if(Xm(s+400|0,0,540)|0,o[s+985>>0]=1,$(s),c=wi(s)|0,c|0){l=s+948|0,s=0;do Bu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Nm(s,l,c,f,d,m,B,k,Q,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),k=k|0,Q=Q|0,M=M|0;var O=0,j=Ze,se=0,Ge=0,Me=Ze,Qe=Ze,et=0,Xe=Ze,lt=0,Ue=Ze,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0;xn=C,C=C+16|0,Mr=xn+12|0,or=xn+8|0,Xt=xn+4|0,Sr=xn,ir=fr(n[s+4>>2]|0,Q)|0,je=pe(ir)|0,j=y(Gr(Bw(l)|0,je?m:B)),Lt=ts(l,2,m)|0,Nr=ts(l,0,B)|0;do if(!(_t(j)|0)&&!(_t(je?c:d)|0)){if(O=l+504|0,!(_t(y(h[O>>2]))|0)&&(!(vw(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(_n(j,y(En(l,ir,m))))}else se=7;while(0);do if((se|0)==7){if(lt=je^1,!(lt|Lt^1)){B=y(Gr(n[l+992>>2]|0,m)),h[l+504>>2]=y(_n(B,y(En(l,2,m))));break}if(!(je|Nr^1)){B=y(Gr(n[l+996>>2]|0,B)),h[l+504>>2]=y(_n(B,y(En(l,0,m))));break}h[Mr>>2]=y(ce),h[or>>2]=y(ce),n[Xt>>2]=0,n[Sr>>2]=0,Xe=y(ln(l,2,m)),Ue=y(ln(l,0,m)),Lt?(Me=y(Xe+y(Gr(n[l+992>>2]|0,m))),h[Mr>>2]=Me,n[Xt>>2]=1,Ge=1):(Ge=0,Me=y(ce)),Nr?(j=y(Ue+y(Gr(n[l+996>>2]|0,B))),h[or>>2]=j,n[Sr>>2]=1,O=1):(O=0,j=y(ce)),se=n[s+32>>2]|0,je&(se|0)==2?se=2:_t(Me)|0&&!(_t(c)|0)&&(h[Mr>>2]=c,n[Xt>>2]=2,Ge=2,Me=c),!((se|0)==2&lt)&&_t(j)|0&&!(_t(d)|0)&&(h[or>>2]=d,n[Sr>>2]=2,O=2,j=d),Qe=y(h[l+396>>2]),et=_t(Qe)|0;do if(et)se=Ge;else{if((Ge|0)==1&lt){h[or>>2]=y(y(Me-Xe)/Qe),n[Sr>>2]=1,O=1,se=1;break}je&(O|0)==1?(h[Mr>>2]=y(Qe*y(j-Ue)),n[Xt>>2]=1,O=1,se=1):se=Ge}while(0);go=_t(c)|0,Ge=(ha(s,l)|0)!=4,!(je|Lt|((f|0)!=1|go)|(Ge|(se|0)==1))&&(h[Mr>>2]=c,n[Xt>>2]=1,!et)&&(h[or>>2]=y(y(c-Xe)/Qe),n[Sr>>2]=1,O=1),!(Nr|lt|((k|0)!=1|(_t(d)|0))|(Ge|(O|0)==1))&&(h[or>>2]=d,n[Sr>>2]=1,!et)&&(h[Mr>>2]=y(Qe*y(d-Ue)),n[Xt>>2]=1),yr(l,2,m,m,Xt,Mr),yr(l,0,B,m,Sr,or),c=y(h[Mr>>2]),d=y(h[or>>2]),fa(l,c,d,Q,n[Xt>>2]|0,n[Sr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(ir<<2)>>2]<<2)>>2]),h[l+504>>2]=y(_n(B,y(En(l,ir,m))))}while(0);n[l+500>>2]=n[2278],C=xn}function Bi(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(MA(s,l,c,f)),y(_n(f,y(En(s,l,d))))}function ha(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&UA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Sc(s,l){return s=s|0,l=l|0,pe(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function yr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Gr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(ln(s,l,f))),n[d>>2]|0){case 2:case 1:{d=_t(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{_t(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function gi(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Or(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=Ze;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(re(s,l,c)))}function Yi(s){s=s|0;var l=0,c=0,f=0;e:do if(UA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=wi(s)|0,!c)l=0;else for(l=0;;){if(f=gs(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Lm(s,l){s=s|0,l=l|0;var c=Ze;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((_t(c)|0)^1)|0}function Ya(s){s=s|0;var l=Ze,c=0,f=0,d=0,m=0,B=0,k=0,Q=Ze;if(c=n[s+968>>2]|0,c)Q=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(w7[c&0](s,Q,l)),Un(s,(_t(l)|0)^1,3573);else{m=wi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=gs(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(k=(ha(s,f)|0)==5,k){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function MA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=Ze,m=0;return UA(l)|0?(l=1,m=3):pe(l)|0?(l=0,m=3):(f=y(ce),d=y(ce)),(m|0)==3&&(d=y(Gr(s+364+(l<<3)|0,f)),f=y(Gr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((_t(f)|0)^1)),c=m?f:c,m=d>=y(0)&((_t(d)|0)^1)&c<d,y(m?d:c)}function Om(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var k=Ze,Q=Ze,M=0,O=0,j=Ze,se=Ze,Ge=Ze,Me=0,Qe=0,et=0,Xe=0,lt=Ze,Ue=0;et=fr(n[s+4>>2]|0,m)|0,Me=ww(et,m)|0,Qe=pe(et)|0,j=y(ln(l,2,c)),se=y(ln(l,0,c)),ts(l,2,c)|0?k=y(j+y(Gr(n[l+992>>2]|0,c))):gi(l,2)|0&&sr(l,2)|0?(k=y(h[s+908>>2]),Q=y(Cr(s,2)),Q=y(k-y(Q+y(yn(s,2)))),k=y(Or(l,2,c)),k=y(Bi(l,2,y(Q-y(k+y(vu(l,2,c)))),c,c))):k=y(ce),ts(l,0,d)|0?Q=y(se+y(Gr(n[l+996>>2]|0,d))):gi(l,0)|0&&sr(l,0)|0?(Q=y(h[s+912>>2]),lt=y(Cr(s,0)),lt=y(Q-y(lt+y(yn(s,0)))),Q=y(Or(l,0,d)),Q=y(Bi(l,0,y(lt-y(Q+y(vu(l,0,d)))),d,c))):Q=y(ce),M=_t(k)|0,O=_t(Q)|0;do if(M^O&&(Ge=y(h[l+396>>2]),!(_t(Ge)|0)))if(M){k=y(j+y(y(Q-se)*Ge));break}else{lt=y(se+y(y(k-j)/Ge)),Q=O?lt:Q;break}while(0);O=_t(k)|0,M=_t(Q)|0,O|M&&(Ue=(O^1)&1,f=c>y(0)&((f|0)!=0&O),k=Qe?k:f?c:k,fa(l,k,Q,m,Qe?Ue:f?2:Ue,O&(M^1)&1,k,Q,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(ln(l,2,c))),Q=y(h[l+912>>2]),Q=y(Q+y(ln(l,0,c)))),fa(l,k,Q,m,1,1,k,Q,1,3635,B)|0,sr(l,et)|0&&!(gi(l,et)|0)?(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,et))),lt=y(lt-y(re(l,et,c))),lt=y(lt-y(vu(l,et,Qe?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt):Xe=21;do if((Xe|0)==21){if(!(gi(l,et)|0)&&(n[s+8>>2]|0)==1){Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt;break}!(gi(l,et)|0)&&(n[s+8>>2]|0)==2&&(Ue=n[976+(et<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=lt)}while(0);sr(l,Me)|0&&!(gi(l,Me)|0)?(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),lt=y(lt-y(yn(s,Me))),lt=y(lt-y(re(l,Me,c))),lt=y(lt-y(vu(l,Me,Qe?d:c))),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt):Xe=30;do if((Xe|0)==30&&!(gi(l,Me)|0)){if((ha(s,l)|0)==2){Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(y(lt-y(h[l+908+(Ue<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt;break}Ue=(ha(s,l)|0)==3,Ue^(n[s+28>>2]|0)==2&&(Ue=n[976+(Me<<2)>>2]|0,lt=y(h[s+908+(Ue<<2)>>2]),lt=y(lt-y(h[l+908+(Ue<<2)>>2])),h[l+400+(n[1040+(Me<<2)>>2]<<2)>>2]=lt)}while(0)}function wp(s,l,c){s=s|0,l=l|0,c=c|0;var f=Ze,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function UA(s){return s=s|0,(s|1|0)==1|0}function Bw(s){s=s|0;var l=Ze;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((_t(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function vw(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function sr(s,l){return s=s|0,l=l|0,s=s+132|0,pe(l)|0&&(n[(Fn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Fn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function vu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,pe(l)|0&&(f=Fn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Fn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Gr(f,c))),y(c)}function Mm(s,l,c){return s=s|0,l=l|0,c=y(c),gi(s,l)|0?c=y(Or(s,l,c)):c=y(-y(vu(s,l,c))),y(c)}function Du(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Ip(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Bg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _A(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function HA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;if(B=s+4|0,k=n[B>>2]|0,d=k-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=k;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&Mw(k+(0-m<<2)|0,l|0,d|0)|0}function vg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return k=l+4|0,Q=n[k>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=Q+(0-(m>>2)<<2)|0,n[k>>2]=f,(m|0)>0&&Dr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Dr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[k>>2],Q|0}function Dw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Um(){dc()}function ga(){var s=0;return s=Kt(4)|0,qA(s),s|0}function qA(s){s=s|0,n[s>>2]=ys()|0}function Pc(s){s=s|0,s|0&&(Dg(s),gt(s))}function Dg(s){s=s|0,tt(n[s>>2]|0)}function _m(s,l,c){s=s|0,l=l|0,c=c|0,Ga(n[s>>2]|0,l,c)}function fo(s,l){s=s|0,l=y(l),pa(n[s>>2]|0,l)}function Wv(s,l){return s=s|0,l=l|0,vw(n[s>>2]|0,l)|0}function Sw(){var s=0;return s=Kt(8)|0,Kv(s,0),s|0}function Kv(s,l){s=s|0,l=l|0,l?l=Ci(n[l>>2]|0)|0:l=co()|0,n[s>>2]=l,n[s+4>>2]=0,bi(l,s)}function AF(s){s=s|0;var l=0;return l=Kt(8)|0,Kv(l,s),l|0}function Vv(s){s=s|0,s|0&&(Su(s),gt(s))}function Su(s){s=s|0;var l=0;la(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(jA(s),gt(s))}function jA(s){s=s|0,GA(s)}function GA(s){s=s|0,s=n[s>>2]|0,s|0&&PA(s|0)}function Pw(s){return s=s|0,qo(s)|0}function Hm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),_s(n[s>>2]|0)}function fF(s,l){s=s|0,l=l|0,$r(n[s>>2]|0,n[l>>2]|0)}function pF(s,l){s=s|0,l=l|0,ca(n[s>>2]|0,l)}function Jv(s,l,c){s=s|0,l=l|0,c=+c,yu(n[s>>2]|0,l,y(c))}function zv(s,l,c){s=s|0,l=l|0,c=+c,Es(n[s>>2]|0,l,y(c))}function bw(s,l){s=s|0,l=l|0,gu(n[s>>2]|0,l)}function Pu(s,l){s=s|0,l=l|0,du(n[s>>2]|0,l)}function hF(s,l){s=s|0,l=l|0,FA(n[s>>2]|0,l)}function gF(s,l){s=s|0,l=l|0,kA(n[s>>2]|0,l)}function Bp(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function dF(s,l){s=s|0,l=l|0,Ap(n[s>>2]|0,l)}function Xv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function YA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function mF(s,l){s=s|0,l=l|0,wl(n[s>>2]|0,l)}function yF(s,l){s=s|0,l=l|0,ag(n[s>>2]|0,l)}function Zv(s,l){s=s|0,l=l|0,fp(n[s>>2]|0,l)}function xw(s,l){s=s|0,l=+l,RA(n[s>>2]|0,y(l))}function kw(s,l){s=s|0,l=+l,Ha(n[s>>2]|0,y(l))}function EF(s,l){s=s|0,l=+l,Gi(n[s>>2]|0,y(l))}function CF(s,l){s=s|0,l=+l,Hs(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,mu(n[s>>2]|0,y(l))}function Qw(s,l){s=s|0,l=+l,yw(n[s>>2]|0,y(l))}function wF(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function WA(s){s=s|0,pp(n[s>>2]|0)}function qm(s,l){s=s|0,l=+l,Cs(n[s>>2]|0,y(l))}function bu(s,l){s=s|0,l=+l,ug(n[s>>2]|0,y(l))}function Fw(s){s=s|0,Ag(n[s>>2]|0)}function Rw(s,l){s=s|0,l=+l,hp(n[s>>2]|0,y(l))}function IF(s,l){s=s|0,l=+l,Ic(n[s>>2]|0,y(l))}function $v(s,l){s=s|0,l=+l,bm(n[s>>2]|0,y(l))}function KA(s,l){s=s|0,l=+l,pg(n[s>>2]|0,y(l))}function eD(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function jm(s,l){s=s|0,l=+l,xm(n[s>>2]|0,y(l))}function tD(s,l){s=s|0,l=+l,wu(n[s>>2]|0,y(l))}function rD(s,l){s=s|0,l=+l,Ew(n[s>>2]|0,y(l))}function Gm(s,l){s=s|0,l=+l,Aa(n[s>>2]|0,y(l))}function nD(s,l,c){s=s|0,l=l|0,c=+c,Eu(n[s>>2]|0,l,y(c))}function BF(s,l,c){s=s|0,l=l|0,c=+c,xi(n[s>>2]|0,l,y(c))}function S(s,l,c){s=s|0,l=l|0,c=+c,wc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,og(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ec(d,n[l>>2]|0,c),q(s,d),C=f}function q(s,l){s=s|0,l=l|0,Y(s,n[l+4>>2]|0,+y(h[l>>2]))}function Y(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,E[s+8>>3]=c}function Ae(s){return s=s|0,sg(n[s>>2]|0)|0}function De(s){return s=s|0,uo(n[s>>2]|0)|0}function vt(s){return s=s|0,mc(n[s>>2]|0)|0}function wt(s){return s=s|0,QA(n[s>>2]|0)|0}function xt(s){return s=s|0,Pm(n[s>>2]|0)|0}function _r(s){return s=s|0,ig(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Dt(d,n[l>>2]|0,c),q(s,d),C=f}function di(s){return s=s|0,$n(n[s>>2]|0)|0}function po(s){return s=s|0,lg(n[s>>2]|0)|0}function VA(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,ua(f,n[l>>2]|0),q(s,f),C=c}function Yo(s){return s=s|0,+ +y(ji(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(es(n[s>>2]|0))}function Ve(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Br(f,n[l>>2]|0),q(s,f),C=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,fg(f,n[l>>2]|0),q(s,f),C=c}function Wt(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Ct(f,n[l>>2]|0),q(s,f),C=c}function vr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,hg(f,n[l>>2]|0),q(s,f),C=c}function Pn(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,gg(f,n[l>>2]|0),q(s,f),C=c}function Fr(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,km(f,n[l>>2]|0),q(s,f),C=c}function bn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ai(s,l){return s=s|0,l=l|0,+ +y(cg(n[s>>2]|0,l))}function tn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,ct(d,n[l>>2]|0,c),q(s,d),C=f}function ho(s,l,c){s=s|0,l=l|0,c=c|0,nr(n[s>>2]|0,n[l>>2]|0,c)}function vF(s,l){s=s|0,l=l|0,ms(n[s>>2]|0,n[l>>2]|0)}function eve(s){return s=s|0,wi(n[s>>2]|0)|0}function tve(s){return s=s|0,s=ht(n[s>>2]|0)|0,s?s=Pw(s)|0:s=0,s|0}function rve(s,l){return s=s|0,l=l|0,s=gs(n[s>>2]|0,l)|0,s?s=Pw(s)|0:s=0,s|0}function nve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Kt(4)|0,zG(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,1)}function zG(s,l){s=s|0,l=l|0,gve(s,l)}function ive(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,sve(k,qo(l)|0,+c,f,+d,m),h[s>>2]=y(+E[k>>3]),h[s+4>>2]=y(+E[k+8>>3]),C=B}function sve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,k=0,Q=0,M=0,O=0;B=C,C=C+32|0,O=B+8|0,M=B+20|0,Q=B,k=B+16|0,E[O>>3]=c,n[M>>2]=f,E[Q>>3]=d,n[k>>2]=m,ove(s,n[l+4>>2]|0,O,M,Q,k),C=B}function ove(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0;B=C,C=C+16|0,k=B,Ka(k),l=da(l)|0,ave(s,l,+E[c>>3],n[f>>2]|0,+E[d>>3],n[m>>2]|0),Va(k),C=B}function da(s){return s=s|0,n[s>>2]|0}function ave(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Sl(lve()|0)|0,c=+JA(c),f=DF(f)|0,d=+JA(d),cve(s,hi(0,B|0,l|0,+c,f|0,+d,DF(m)|0)|0)}function lve(){var s=0;return o[7608]|0||(pve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Sl(s){return s=s|0,n[s+8>>2]|0}function JA(s){return s=+s,+ +SF(s)}function DF(s){return s=s|0,ZG(s)|0}function cve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=l,f&1?(uve(c,0),ii(f|0,c|0)|0,Ave(s,c),fve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),C=d}function uve(s,l){s=s|0,l=l|0,XG(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function Ave(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function fve(s){s=s|0,o[s+24>>0]=0}function XG(s,l){s=s|0,l=l|0,n[s>>2]=l}function ZG(s){return s=s|0,s|0}function SF(s){return s=+s,+s}function pve(s){s=s|0,Pl(s,hve()|0,4)}function hve(){return 1064}function Pl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=up(l|0,c+1|0)|0}function gve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,yl(l|0)}function dve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(jA(l),gt(l)),It(n[s>>2]|0,0)}function mve(s){s=s|0,Tt(n[s>>2]|0)}function yve(s){return s=s|0,er(n[s>>2]|0)|0}function Eve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function Cve(s){return s=s|0,+ +y(Il(n[s>>2]|0))}function wve(s){return s=s|0,+ +y(dg(n[s>>2]|0))}function Ive(s){return s=s|0,+ +y(Iu(n[s>>2]|0))}function Bve(s){return s=s|0,+ +y(NA(n[s>>2]|0))}function vve(s){return s=s|0,+ +y(gp(n[s>>2]|0))}function Dve(s){return s=s|0,+ +y(qa(n[s>>2]|0))}function Sve(s,l){s=s|0,l=l|0,E[s>>3]=+y(Il(n[l>>2]|0)),E[s+8>>3]=+y(dg(n[l>>2]|0)),E[s+16>>3]=+y(Iu(n[l>>2]|0)),E[s+24>>3]=+y(NA(n[l>>2]|0)),E[s+32>>3]=+y(gp(n[l>>2]|0)),E[s+40>>3]=+y(qa(n[l>>2]|0))}function Pve(s,l){return s=s|0,l=l|0,+ +y(mg(n[s>>2]|0,l))}function bve(s,l){return s=s|0,l=l|0,+ +y(dp(n[s>>2]|0,l))}function xve(s,l){return s=s|0,l=l|0,+ +y(jo(n[s>>2]|0,l))}function kve(){return Sn()|0}function Qve(){Fve(),Rve(),Tve(),Nve(),Lve(),Ove()}function Fve(){LNe(11713,4938,1)}function Rve(){tNe(10448)}function Tve(){LTe(10408)}function Nve(){sTe(10324)}function Lve(){pFe(10096)}function Ove(){Mve(9132)}function Mve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0,go=0,mo=0,yo=0,ya=0,Fp=0,Rp=0,bl=0,Tp=0,Fu=0,Ru=0,Np=0,Lp=0,Op=0,Xr=0,xl=0,Mp=0,xc=0,Up=0,_p=0,Tu=0,Nu=0,kc=0,js=0,za=0,Wo=0,kl=0,nf=0,sf=0,Lu=0,of=0,af=0,Gs=0,vs=0,Ql=0,Rn=0,lf=0,Eo=0,Qc=0,Co=0,Fc=0,cf=0,uf=0,Rc=0,Ys=0,Fl=0,Af=0,ff=0,pf=0,xr=0,Jn=0,Ds=0,wo=0,Ws=0,Rr=0,ur=0,Rl=0;l=C,C=C+672|0,c=l+656|0,Rl=l+648|0,ur=l+640|0,Rr=l+632|0,Ws=l+624|0,wo=l+616|0,Ds=l+608|0,Jn=l+600|0,xr=l+592|0,pf=l+584|0,ff=l+576|0,Af=l+568|0,Fl=l+560|0,Ys=l+552|0,Rc=l+544|0,uf=l+536|0,cf=l+528|0,Fc=l+520|0,Co=l+512|0,Qc=l+504|0,Eo=l+496|0,lf=l+488|0,Rn=l+480|0,Ql=l+472|0,vs=l+464|0,Gs=l+456|0,af=l+448|0,of=l+440|0,Lu=l+432|0,sf=l+424|0,nf=l+416|0,kl=l+408|0,Wo=l+400|0,za=l+392|0,js=l+384|0,kc=l+376|0,Nu=l+368|0,Tu=l+360|0,_p=l+352|0,Up=l+344|0,xc=l+336|0,Mp=l+328|0,xl=l+320|0,Xr=l+312|0,Op=l+304|0,Lp=l+296|0,Np=l+288|0,Ru=l+280|0,Fu=l+272|0,Tp=l+264|0,bl=l+256|0,Rp=l+248|0,Fp=l+240|0,ya=l+232|0,yo=l+224|0,mo=l+216|0,go=l+208|0,xn=l+200|0,ir=l+192|0,Nr=l+184|0,Sr=l+176|0,Xt=l+168|0,or=l+160|0,Mr=l+152|0,Lt=l+144|0,je=l+136|0,Ue=l+128|0,lt=l+120|0,Xe=l+112|0,et=l+104|0,Qe=l+96|0,Me=l+88|0,Ge=l+80|0,se=l+72|0,j=l+64|0,O=l+56|0,M=l+48|0,Q=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,Uve(s,3646),_ve(s,3651,2)|0,Hve(s,3665,2)|0,qve(s,3682,18)|0,n[Rl>>2]=19,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],Tw(s,3690,c)|0,n[ur>>2]=1,n[ur+4>>2]=0,n[c>>2]=n[ur>>2],n[c+4>>2]=n[ur+4>>2],jve(s,3696,c)|0,n[Rr>>2]=2,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],xu(s,3706,c)|0,n[Ws>>2]=1,n[Ws+4>>2]=0,n[c>>2]=n[Ws>>2],n[c+4>>2]=n[Ws+4>>2],Sg(s,3722,c)|0,n[wo>>2]=2,n[wo+4>>2]=0,n[c>>2]=n[wo>>2],n[c+4>>2]=n[wo+4>>2],Sg(s,3734,c)|0,n[Ds>>2]=3,n[Ds+4>>2]=0,n[c>>2]=n[Ds>>2],n[c+4>>2]=n[Ds+4>>2],xu(s,3753,c)|0,n[Jn>>2]=4,n[Jn+4>>2]=0,n[c>>2]=n[Jn>>2],n[c+4>>2]=n[Jn+4>>2],xu(s,3769,c)|0,n[xr>>2]=5,n[xr+4>>2]=0,n[c>>2]=n[xr>>2],n[c+4>>2]=n[xr+4>>2],xu(s,3783,c)|0,n[pf>>2]=6,n[pf+4>>2]=0,n[c>>2]=n[pf>>2],n[c+4>>2]=n[pf+4>>2],xu(s,3796,c)|0,n[ff>>2]=7,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],xu(s,3813,c)|0,n[Af>>2]=8,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],xu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Sg(s,3843,c)|0,n[Ys>>2]=4,n[Ys+4>>2]=0,n[c>>2]=n[Ys>>2],n[c+4>>2]=n[Ys+4>>2],Sg(s,3853,c)|0,n[Rc>>2]=9,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],xu(s,3870,c)|0,n[uf>>2]=10,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],xu(s,3884,c)|0,n[cf>>2]=11,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],xu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Is(s,3907,c)|0,n[Co>>2]=2,n[Co+4>>2]=0,n[c>>2]=n[Co>>2],n[c+4>>2]=n[Co+4>>2],Is(s,3915,c)|0,n[Qc>>2]=3,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Is(s,3928,c)|0,n[Eo>>2]=4,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Is(s,3948,c)|0,n[lf>>2]=5,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Is(s,3960,c)|0,n[Rn>>2]=6,n[Rn+4>>2]=0,n[c>>2]=n[Rn>>2],n[c+4>>2]=n[Rn+4>>2],Is(s,3974,c)|0,n[Ql>>2]=7,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Is(s,3983,c)|0,n[vs>>2]=20,n[vs+4>>2]=0,n[c>>2]=n[vs>>2],n[c+4>>2]=n[vs+4>>2],Tw(s,3999,c)|0,n[Gs>>2]=8,n[Gs+4>>2]=0,n[c>>2]=n[Gs>>2],n[c+4>>2]=n[Gs+4>>2],Is(s,4012,c)|0,n[af>>2]=9,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Is(s,4022,c)|0,n[of>>2]=21,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Tw(s,4039,c)|0,n[Lu>>2]=10,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],Is(s,4053,c)|0,n[sf>>2]=11,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Is(s,4065,c)|0,n[nf>>2]=12,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],Is(s,4084,c)|0,n[kl>>2]=13,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Is(s,4097,c)|0,n[Wo>>2]=14,n[Wo+4>>2]=0,n[c>>2]=n[Wo>>2],n[c+4>>2]=n[Wo+4>>2],Is(s,4117,c)|0,n[za>>2]=15,n[za+4>>2]=0,n[c>>2]=n[za>>2],n[c+4>>2]=n[za+4>>2],Is(s,4129,c)|0,n[js>>2]=16,n[js+4>>2]=0,n[c>>2]=n[js>>2],n[c+4>>2]=n[js+4>>2],Is(s,4148,c)|0,n[kc>>2]=17,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Is(s,4161,c)|0,n[Nu>>2]=18,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],Is(s,4181,c)|0,n[Tu>>2]=5,n[Tu+4>>2]=0,n[c>>2]=n[Tu>>2],n[c+4>>2]=n[Tu+4>>2],Sg(s,4196,c)|0,n[_p>>2]=6,n[_p+4>>2]=0,n[c>>2]=n[_p>>2],n[c+4>>2]=n[_p+4>>2],Sg(s,4206,c)|0,n[Up>>2]=7,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Sg(s,4217,c)|0,n[xc>>2]=3,n[xc+4>>2]=0,n[c>>2]=n[xc>>2],n[c+4>>2]=n[xc+4>>2],zA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],PF(s,4251,c)|0,n[xl>>2]=4,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],zA(s,4263,c)|0,n[Xr>>2]=5,n[Xr+4>>2]=0,n[c>>2]=n[Xr>>2],n[c+4>>2]=n[Xr+4>>2],zA(s,4279,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],zA(s,4293,c)|0,n[Lp>>2]=7,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],zA(s,4306,c)|0,n[Np>>2]=8,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],zA(s,4323,c)|0,n[Ru>>2]=9,n[Ru+4>>2]=0,n[c>>2]=n[Ru>>2],n[c+4>>2]=n[Ru+4>>2],zA(s,4335,c)|0,n[Fu>>2]=2,n[Fu+4>>2]=0,n[c>>2]=n[Fu>>2],n[c+4>>2]=n[Fu+4>>2],PF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],Pg(s,4363,c)|0,n[bl>>2]=1,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],XA(s,4376,c)|0,n[Rp>>2]=2,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],XA(s,4388,c)|0,n[Fp>>2]=13,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],Pg(s,4402,c)|0,n[ya>>2]=14,n[ya+4>>2]=0,n[c>>2]=n[ya>>2],n[c+4>>2]=n[ya+4>>2],Pg(s,4411,c)|0,n[yo>>2]=15,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Pg(s,4421,c)|0,n[mo>>2]=16,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Pg(s,4433,c)|0,n[go>>2]=17,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Pg(s,4446,c)|0,n[xn>>2]=18,n[xn+4>>2]=0,n[c>>2]=n[xn>>2],n[c+4>>2]=n[xn+4>>2],Pg(s,4458,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],XA(s,4471,c)|0,n[Nr>>2]=1,n[Nr+4>>2]=0,n[c>>2]=n[Nr>>2],n[c+4>>2]=n[Nr+4>>2],iD(s,4486,c)|0,n[Sr>>2]=10,n[Sr+4>>2]=0,n[c>>2]=n[Sr>>2],n[c+4>>2]=n[Sr+4>>2],zA(s,4496,c)|0,n[Xt>>2]=11,n[Xt+4>>2]=0,n[c>>2]=n[Xt>>2],n[c+4>>2]=n[Xt+4>>2],zA(s,4508,c)|0,n[or>>2]=3,n[or+4>>2]=0,n[c>>2]=n[or>>2],n[c+4>>2]=n[or+4>>2],PF(s,4519,c)|0,n[Mr>>2]=4,n[Mr+4>>2]=0,n[c>>2]=n[Mr>>2],n[c+4>>2]=n[Mr+4>>2],Gve(s,4530,c)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[c>>2]=n[Lt>>2],n[c+4>>2]=n[Lt+4>>2],Yve(s,4542,c)|0,n[je>>2]=12,n[je+4>>2]=0,n[c>>2]=n[je>>2],n[c+4>>2]=n[je+4>>2],Wve(s,4554,c)|0,n[Ue>>2]=13,n[Ue+4>>2]=0,n[c>>2]=n[Ue>>2],n[c+4>>2]=n[Ue+4>>2],Kve(s,4568,c)|0,n[lt>>2]=2,n[lt+4>>2]=0,n[c>>2]=n[lt>>2],n[c+4>>2]=n[lt+4>>2],Vve(s,4578,c)|0,n[Xe>>2]=20,n[Xe+4>>2]=0,n[c>>2]=n[Xe>>2],n[c+4>>2]=n[Xe+4>>2],Jve(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],Tw(s,4602,c)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[c>>2]=n[Qe>>2],n[c+4>>2]=n[Qe+4>>2],Tw(s,4619,c)|0,n[Me>>2]=14,n[Me+4>>2]=0,n[c>>2]=n[Me>>2],n[c+4>>2]=n[Me+4>>2],zve(s,4629,c)|0,n[Ge>>2]=1,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],Xve(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],XA(s,4653,c)|0,n[j>>2]=5,n[j+4>>2]=0,n[c>>2]=n[j>>2],n[c+4>>2]=n[j+4>>2],XA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],XA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],XA(s,4701,c)|0,n[Q>>2]=8,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],XA(s,4719,c)|0,n[k>>2]=9,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],XA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],Zve(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],iD(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],iD(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],iD(s,4808,c)|0,C=l}function Uve(s,l){s=s|0,l=l|0;var c=0;c=iFe()|0,n[s>>2]=c,sFe(c,l),xp(n[s>>2]|0)}function _ve(s,l,c){return s=s|0,l=l|0,c=c|0,GQe(s,pn(l)|0,c,0),s|0}function Hve(s,l,c){return s=s|0,l=l|0,c=c|0,bQe(s,pn(l)|0,c,0),s|0}function qve(s,l,c){return s=s|0,l=l|0,c=c|0,hQe(s,pn(l)|0,c,0),s|0}function Tw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Zke(s,l,d),C=f,s|0}function jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rke(s,l,d),C=f,s|0}function xu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mke(s,l,d),C=f,s|0}function Sg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tke(s,l,d),C=f,s|0}function Is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Uxe(s,l,d),C=f,s|0}function zA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bxe(s,l,d),C=f,s|0}function PF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],axe(s,l,d),C=f,s|0}function Pg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rbe(s,l,d),C=f,s|0}function XA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mbe(s,l,d),C=f,s|0}function iD(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tbe(s,l,d),C=f,s|0}function Gve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UPe(s,l,d),C=f,s|0}function Yve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],BPe(s,l,d),C=f,s|0}function Wve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lPe(s,l,d),C=f,s|0}function Kve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KSe(s,l,d),C=f,s|0}function Vve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kSe(s,l,d),C=f,s|0}function Jve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pSe(s,l,d),C=f,s|0}function zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XDe(s,l,d),C=f,s|0}function Xve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RDe(s,l,d),C=f,s|0}function Zve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ve(s,l,d),C=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eDe(s,c,d,1),C=f}function pn(s){return s=s|0,s|0}function eDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=tDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,rDe(m,f)|0,f),C=d}function bF(){var s=0,l=0;if(o[7616]|0||(t5(9136),tr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t5(9136)}return 9136}function tDe(s){return s=s|0,0}function rDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=bF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],e5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sDe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function hn(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0;B=C,C=C+32|0,se=B+24|0,j=B+20|0,Q=B+16|0,O=B+12|0,M=B+8|0,k=B+4|0,Ge=B,n[j>>2]=l,n[Q>>2]=c,n[O>>2]=f,n[M>>2]=d,n[k>>2]=m,m=s+28|0,n[Ge>>2]=n[m>>2],n[se>>2]=n[Ge>>2],nDe(s+24|0,se,j,O,M,Q,k)|0,n[m>>2]=n[n[m>>2]>>2],C=B}function nDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=iDe(l)|0,l=Kt(24)|0,$G(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function iDe(s){return s=s|0,n[s>>2]|0}function $G(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gr(s,l){return s=s|0,l=l|0,l|s|0}function e5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,aDe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],e5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lDe(s,k),cDe(k),C=M;return}}function oDe(s){return s=s|0,357913941}function aDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function t5(s){s=s|0,fDe(s)}function uDe(s){s=s|0,ADe(s+24|0)}function Tr(s){return s=s|0,n[s>>2]|0}function ADe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Kr(){return 9228}function pDe(){return 1140}function hDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=gDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=dDe(l,f)|0,C=c,l|0}function Vr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function gDe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function dDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=mDe(f)|0,C=d,f|0}function mDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(r5()|0)|0,f?(kF(l,f),QF(c,l),yDe(s,c),s=FF(l)|0):s=EDe(s)|0,C=d,s|0}function r5(){var s=0;return o[7632]|0||(xDe(9184),tr(25,9184,U|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function xF(s){return s=s|0,n[s+36>>2]|0}function kF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function QF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function yDe(s,l){s=s|0,l=l|0,BDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function FF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function EDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;Q=C,C=C+16|0,c=Q+4|0,f=Q,d=Wa(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[s>>2],k=k+4|0,s=s+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],n5(k,B,c),n[d>>2]=k,C=Q,m|0}function n5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function CDe(s){s=s|0,zm(s),gt(s)}function wDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function IDe(s){s=s|0,gt(s)}function BDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=vDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function vDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var k=0,Q=0;return k=C,C=C+16|0,Q=k,Ka(Q),s=da(s)|0,B=DDe(s,+E[l>>3],+E[c>>3],+E[f>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Va(Q),C=k,B|0}function DDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var k=0;return k=Sl(SDe()|0)|0,l=+JA(l),c=+JA(c),f=+JA(f),d=+JA(d),m=+JA(m),Ms(0,k|0,s|0,+l,+c,+f,+d,+m,+ +JA(B))|0}function SDe(){var s=0;return o[7624]|0||(PDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function PDe(s){s=s|0,Pl(s,bDe()|0,6)}function bDe(){return 1112}function xDe(s){s=s|0,vp(s)}function kDe(s){s=s|0,i5(s+24|0),s5(s+16|0)}function i5(s){s=s|0,FDe(s)}function s5(s){s=s|0,QDe(s)}function QDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function FDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function vp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function RDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TDe(s,c,d,0),C=f}function TDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=RF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NDe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,LDe(m,f)|0,f),C=d}function RF(){var s=0,l=0;if(o[7640]|0||(a5(9232),tr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a5(9232)}return 9232}function NDe(s){return s=s|0,0}function LDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=RF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ODe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ODe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=MDe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,UDe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_De(s,k),HDe(k),C=M;return}}function MDe(s){return s=s|0,357913941}function UDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _De(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a5(s){s=s|0,GDe(s)}function qDe(s){s=s|0,jDe(s+24|0)}function jDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function GDe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,YDe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function YDe(){return 1144}function WDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,B=m+8|0,k=m,Q=KDe(s)|0,s=n[Q+4>>2]|0,n[k>>2]=n[Q>>2],n[k+4>>2]=s,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],VDe(l,B,c,f,d),C=m}function KDe(s){return s=s|0,(n[(RF()|0)+24>>2]|0)+(s*12|0)|0}function VDe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,k=0,Q=0,M=0;M=C,C=C+16|0,B=M+2|0,k=M+1|0,Q=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),ku(B,c),c=+Qu(B,c),ku(k,f),f=+Qu(k,f),ZA(Q,d),Q=$A(Q,d)|0,I7[m&1](s,c,f,Q),C=M}function ku(s,l){s=s|0,l=+l}function Qu(s,l){return s=s|0,l=+l,+ +zDe(l)}function ZA(s,l){s=s|0,l=l|0}function $A(s,l){return s=s|0,l=l|0,JDe(l)|0}function JDe(s){return s=s|0,s|0}function zDe(s){return s=+s,+s}function XDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZDe(s,c,d,1),C=f}function ZDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=TF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=$De(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,eSe(m,f)|0,f),C=d}function TF(){var s=0,l=0;if(o[7648]|0||(c5(9268),tr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(9268)}return 9268}function $De(s){return s=s|0,0}function eSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=TF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],l5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(tSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function tSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=rSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,nSe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],l5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,iSe(s,k),sSe(k),C=M;return}}function rSe(s){return s=s|0,357913941}function nSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function iSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function sSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function c5(s){s=s|0,lSe(s)}function oSe(s){s=s|0,aSe(s+24|0)}function aSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function lSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,cSe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cSe(){return 1160}function uSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=ASe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=fSe(l,f)|0,C=c,l|0}function ASe(s){return s=s|0,(n[(TF()|0)+24>>2]|0)+(s*12|0)|0}function fSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),u5(Lg[c&31](s)|0)|0}function u5(s){return s=s|0,s&1|0}function pSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hSe(s,c,d,0),C=f}function hSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=gSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,dSe(m,f)|0,f),C=d}function NF(){var s=0,l=0;if(o[7656]|0||(f5(9304),tr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f5(9304)}return 9304}function gSe(s){return s=s|0,0}function dSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=NF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(mSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function mSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ySe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ESe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,CSe(s,k),wSe(k),C=M;return}}function ySe(s){return s=s|0,357913941}function ESe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function CSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function f5(s){s=s|0,vSe(s)}function ISe(s){s=s|0,BSe(s+24|0)}function BSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function vSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,DSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DSe(){return 1164}function SSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=PSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],bSe(l,d,c),C=f}function PSe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function bSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dp(d,c),c=Sp(d,c)|0,rf[f&31](s,c),Pp(d),C=m}function Dp(s,l){s=s|0,l=l|0,xSe(s,l)}function Sp(s,l){return s=s|0,l=l|0,s|0}function Pp(s){s=s|0,jA(s)}function xSe(s,l){s=s|0,l=l|0,LF(s,l)}function LF(s,l){s=s|0,l=l|0,n[s>>2]=l}function kSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QSe(s,c,d,0),C=f}function QSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=OF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=FSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,RSe(m,f)|0,f),C=d}function OF(){var s=0,l=0;if(o[7664]|0||(h5(9340),tr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h5(9340)}return 9340}function FSe(s){return s=s|0,0}function RSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=OF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],p5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(TSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function p5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function TSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,LSe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],p5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,OSe(s,k),MSe(k),C=M;return}}function NSe(s){return s=s|0,357913941}function LSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function OSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function MSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function h5(s){s=s|0,HSe(s)}function USe(s){s=s|0,_Se(s+24|0)}function _Se(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function HSe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,4,l,qSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qSe(){return 1180}function jSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=GSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=YSe(l,d,c)|0,C=f,c|0}function GSe(s){return s=s|0,(n[(OF()|0)+24>>2]|0)+(s*12|0)|0}function YSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),bg(d,c),d=xg(d,c)|0,d=sD(RR[f&15](s,d)|0)|0,C=m,d|0}function bg(s,l){s=s|0,l=l|0}function xg(s,l){return s=s|0,l=l|0,WSe(l)|0}function sD(s){return s=s|0,s|0}function WSe(s){return s=s|0,s|0}function KSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VSe(s,c,d,0),C=f}function VSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=JSe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,zSe(m,f)|0,f),C=d}function MF(){var s=0,l=0;if(o[7672]|0||(d5(9376),tr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));d5(9376)}return 9376}function JSe(s){return s=s|0,0}function zSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=MF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],g5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(XSe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function g5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function XSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=ZSe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,$Se(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],g5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,ePe(s,k),tPe(k),C=M;return}}function ZSe(s){return s=s|0,357913941}function $Se(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function ePe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function tPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function d5(s){s=s|0,iPe(s)}function rPe(s){s=s|0,nPe(s+24|0)}function nPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function iPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,m5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function m5(){return 1196}function sPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=oPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=aPe(l,f)|0,C=c,l|0}function oPe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function aPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),sD(Lg[c&31](s)|0)|0}function lPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cPe(s,c,d,1),C=f}function cPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=uPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,APe(m,f)|0,f),C=d}function UF(){var s=0,l=0;if(o[7680]|0||(E5(9412),tr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E5(9412)}return 9412}function uPe(s){return s=s|0,0}function APe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=UF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(fPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function fPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=pPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,hPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,gPe(s,k),dPe(k),C=M;return}}function pPe(s){return s=s|0,357913941}function hPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function gPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function dPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function E5(s){s=s|0,EPe(s)}function mPe(s){s=s|0,yPe(s+24|0)}function yPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function EPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function C5(){return 1200}function CPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=wPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=IPe(l,f)|0,C=c,l|0}function wPe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function IPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),oD(Lg[c&31](s)|0)|0}function oD(s){return s=s|0,s|0}function BPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vPe(s,c,d,0),C=f}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=DPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,SPe(m,f)|0,f),C=d}function _F(){var s=0,l=0;if(o[7688]|0||(I5(9448),tr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I5(9448)}return 9448}function DPe(s){return s=s|0,0}function SPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=_F()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(PPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function w5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function PPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,xPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kPe(s,k),QPe(k),C=M;return}}function bPe(s){return s=s|0,357913941}function xPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function QPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function I5(s){s=s|0,TPe(s)}function FPe(s){s=s|0,RPe(s+24|0)}function RPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function TPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,B5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function B5(){return 1204}function NPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=LPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OPe(l,d,c),C=f}function LPe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function OPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),HF(d,c),d=qF(d,c)|0,rf[f&31](s,d),C=m}function HF(s,l){s=s|0,l=l|0}function qF(s,l){return s=s|0,l=l|0,MPe(l)|0}function MPe(s){return s=s|0,s|0}function UPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Pe(s,c,d,0),C=f}function _Pe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=jF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=HPe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qPe(m,f)|0,f),C=d}function jF(){var s=0,l=0;if(o[7696]|0||(D5(9484),tr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D5(9484)}return 9484}function HPe(s){return s=s|0,0}function qPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=jF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jPe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=GPe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,YPe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,WPe(s,k),KPe(k),C=M;return}}function GPe(s){return s=s|0,357913941}function YPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function WPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function KPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function D5(s){s=s|0,zPe(s)}function VPe(s){s=s|0,JPe(s+24|0)}function JPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zPe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,XPe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function XPe(){return 1212}function ZPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=$Pe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],ebe(l,m,c,f),C=d}function $Pe(s){return s=s|0,(n[(jF()|0)+24>>2]|0)+(s*12|0)|0}function ebe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),HF(m,c),m=qF(m,c)|0,bg(B,f),B=xg(B,f)|0,Hw[d&15](s,m,B),C=k}function tbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rbe(s,c,d,1),C=f}function rbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ibe(m,f)|0,f),C=d}function GF(){var s=0,l=0;if(o[7704]|0||(P5(9520),tr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));P5(9520)}return 9520}function nbe(s){return s=s|0,0}function ibe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=GF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function S5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=obe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,abe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lbe(s,k),cbe(k),C=M;return}}function obe(s){return s=s|0,357913941}function abe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function P5(s){s=s|0,fbe(s)}function ube(s){s=s|0,Abe(s+24|0)}function Abe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pbe(){return 1224}function hbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;return d=C,C=C+16|0,m=d+8|0,B=d,k=gbe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+dbe(l,m,c),C=d,+f}function gbe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function dbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,B=+SF(+v7[f&7](s,d)),C=m,+B}function mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ybe(s,c,d,1),C=f}function ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Ebe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cbe(m,f)|0,f),C=d}function YF(){var s=0,l=0;if(o[7712]|0||(x5(9556),tr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));x5(9556)}return 9556}function Ebe(s){return s=s|0,0}function Cbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=YF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],b5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wbe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function b5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ibe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Bbe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],b5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vbe(s,k),Dbe(k),C=M;return}}function Ibe(s){return s=s|0,357913941}function Bbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function x5(s){s=s|0,bbe(s)}function Sbe(s){s=s|0,Pbe(s+24|0)}function Pbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,xbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xbe(){return 1232}function kbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=Qbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+Fbe(l,d),C=f,+c}function Qbe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function Fbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +SF(+B7[c&15](s))}function Rbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tbe(s,c,d,1),C=f}function Tbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nbe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lbe(m,f)|0,f),C=d}function WF(){var s=0,l=0;if(o[7720]|0||(Q5(9592),tr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Q5(9592)}return 9592}function Nbe(s){return s=s|0,0}function Lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=WF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],k5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Obe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function k5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mbe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Ube(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],k5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_be(s,k),Hbe(k),C=M;return}}function Mbe(s){return s=s|0,357913941}function Ube(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _be(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Q5(s){s=s|0,Gbe(s)}function qbe(s){s=s|0,jbe(s+24|0)}function jbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Gbe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,Ybe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Ybe(){return 1276}function Wbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Kbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Vbe(l,f)|0,C=c,l|0}function Kbe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function Vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=C,C=C+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&31](f,s),f=F5(f)|0,C=d,f|0}function F5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(R5()|0)|0,f?(kF(l,f),QF(c,l),Jbe(s,c),s=FF(l)|0):s=zbe(s)|0,C=d,s|0}function R5(){var s=0;return o[7736]|0||(oxe(9640),tr(25,9640,U|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function Jbe(s,l){s=s|0,l=l|0,exe(l,s,s+8|0)|0}function zbe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(16)|0,n[k>>2]=n[s>>2],n[k+4>>2]=n[s+4>>2],n[k+8>>2]=n[s+8>>2],n[k+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(s,m,d),n[f>>2]=s,C=c,l|0}function KF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function Xbe(s){s=s|0,zm(s),gt(s)}function Zbe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function $be(s){s=s|0,gt(s)}function exe(s,l,c){return s=s|0,l=l|0,c=c|0,l=txe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function txe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=C,C=C+16|0,d=f,Ka(d),s=da(s)|0,c=rxe(s,n[l>>2]|0,+E[c>>3])|0,Va(d),C=f,c|0}function rxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Sl(nxe()|0)|0,l=DF(l)|0,ml(0,f|0,s|0,l|0,+ +JA(c))|0}function nxe(){var s=0;return o[7728]|0||(ixe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function ixe(s){s=s|0,Pl(s,sxe()|0,2)}function sxe(){return 1264}function oxe(s){s=s|0,vp(s)}function axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lxe(s,c,d,1),C=f}function lxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=cxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,uxe(m,f)|0,f),C=d}function VF(){var s=0,l=0;if(o[7744]|0||(N5(9684),tr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));N5(9684)}return 9684}function cxe(s){return s=s|0,0}function uxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=VF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Axe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,pxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,hxe(s,k),gxe(k),C=M;return}}function fxe(s){return s=s|0,357913941}function pxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function hxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function N5(s){s=s|0,yxe(s)}function dxe(s){s=s|0,mxe(s+24|0)}function mxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function yxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,5,l,Exe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Exe(){return 1280}function Cxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=wxe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Ixe(l,d,c)|0,C=f,c|0}function wxe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function Ixe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=C,C=C+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(m,c),m=$A(m,c)|0,Hw[f&15](d,s,m),m=F5(d)|0,C=B,m|0}function Bxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vxe(s,c,d,1),C=f}function vxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=JF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Dxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Sxe(m,f)|0,f),C=d}function JF(){var s=0,l=0;if(o[7752]|0||(O5(9720),tr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O5(9720)}return 9720}function Dxe(s){return s=s|0,0}function Sxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=JF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],L5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function L5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=bxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,xxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],L5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,kxe(s,k),Qxe(k),C=M;return}}function bxe(s){return s=s|0,357913941}function xxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function kxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Qxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function O5(s){s=s|0,Txe(s)}function Fxe(s){s=s|0,Rxe(s+24|0)}function Rxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Txe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Nxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nxe(){return 1288}function Lxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=C,C=C+16|0,f=c+8|0,d=c,m=Oxe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Mxe(l,f)|0,C=c,l|0}function Oxe(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s*12|0)|0}function Mxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ZG(Lg[c&31](s)|0)|0}function Uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_xe(s,c,d,0),C=f}function _xe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Hxe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,qxe(m,f)|0,f),C=d}function zF(){var s=0,l=0;if(o[7760]|0||(U5(9756),tr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U5(9756)}return 9756}function Hxe(s){return s=s|0,0}function qxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=zF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(jxe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function M5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function jxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Gxe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Yxe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,Wxe(s,k),Kxe(k),C=M;return}}function Gxe(s){return s=s|0,357913941}function Yxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Wxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Kxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function U5(s){s=s|0,zxe(s)}function Vxe(s){s=s|0,Jxe(s+24|0)}function Jxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function zxe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Xxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Xxe(){return 1292}function Zxe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=$xe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eke(l,d,c),C=f}function $xe(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function eke(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ku(d,c),c=+Qu(d,c),C7[f&31](s,c),C=m}function tke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rke(s,c,d,0),C=f}function rke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,ike(m,f)|0,f),C=d}function XF(){var s=0,l=0;if(o[7768]|0||(H5(9792),tr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H5(9792)}return 9792}function nke(s){return s=s|0,0}function ike(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=XF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ske(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function _5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ske(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ake(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],_5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lke(s,k),cke(k),C=M;return}}function oke(s){return s=s|0,357913941}function ake(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function H5(s){s=s|0,fke(s)}function uke(s){s=s|0,Ake(s+24|0)}function Ake(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,1,l,pke()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pke(){return 1300}function hke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gke(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dke(l,m,c,f),C=d}function gke(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function dke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,ku(B,f),f=+Qu(B,f),b7[d&15](s,m,f),C=k}function mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yke(s,c,d,0),C=f}function yke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Eke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Cke(m,f)|0,f),C=d}function ZF(){var s=0,l=0;if(o[7776]|0||(j5(9828),tr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));j5(9828)}return 9828}function Eke(s){return s=s|0,0}function Cke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=ZF()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],q5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function q5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Ike(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Bke(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],q5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,vke(s,k),Dke(k),C=M;return}}function Ike(s){return s=s|0,357913941}function Bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function j5(s){s=s|0,bke(s)}function Ske(s){s=s|0,Pke(s+24|0)}function Pke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function bke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,7,l,xke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xke(){return 1312}function kke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Qke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Fke(l,d,c),C=f}function Qke(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function Fke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,rf[f&31](s,d),C=m}function Rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tke(s,c,d,0),C=f}function Tke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=$F()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nke(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,Lke(m,f)|0,f),C=d}function $F(){var s=0,l=0;if(o[7784]|0||(Y5(9864),tr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Y5(9864)}return 9864}function Nke(s){return s=s|0,0}function Lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=$F()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],G5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Oke(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function G5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Oke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mke(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Uke(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],G5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,_ke(s,k),Hke(k),C=M;return}}function Mke(s){return s=s|0,357913941}function Uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _ke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function Y5(s){s=s|0,Gke(s)}function qke(s){s=s|0,jke(s+24|0)}function jke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function Gke(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,8,l,Yke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Yke(){return 1320}function Wke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=Kke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vke(l,d,c),C=f}function Kke(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s*12|0)|0}function Vke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Jke(d,c),d=zke(d,c)|0,rf[f&31](s,d),C=m}function Jke(s,l){s=s|0,l=l|0}function zke(s,l){return s=s|0,l=l|0,Xke(l)|0}function Xke(s){return s=s|0,s|0}function Zke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$ke(s,c,d,0),C=f}function $ke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=eR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=eQe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,tQe(m,f)|0,f),C=d}function eR(){var s=0,l=0;if(o[7792]|0||(K5(9900),tr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K5(9900)}return 9900}function eQe(s){return s=s|0,0}function tQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=eR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],W5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(rQe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function W5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function rQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=nQe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,iQe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],W5(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,sQe(s,k),oQe(k),C=M;return}}function nQe(s){return s=s|0,357913941}function iQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function sQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function K5(s){s=s|0,cQe(s)}function aQe(s){s=s|0,lQe(s+24|0)}function lQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function cQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,22,l,uQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uQe(){return 1344}function AQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=C,C=C+16|0,f=c+8|0,d=c,m=fQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],pQe(l,f),C=c}function fQe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s*12|0)|0}function pQe(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),tf[c&127](s)}function hQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=tR()|0,s=gQe(c)|0,hn(m,l,d,s,dQe(c,f)|0,f)}function tR(){var s=0,l=0;if(o[7800]|0||(J5(9936),tr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J5(9936)}return 9936}function gQe(s){return s=s|0,s|0}function dQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=tR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(V5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(mQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function V5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function mQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=yQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,EQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,V5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,CQe(s,d),wQe(d),C=k;return}}function yQe(s){return s=s|0,536870911}function EQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function CQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function J5(s){s=s|0,vQe(s)}function IQe(s){s=s|0,BQe(s+24|0)}function BQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function vQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,23,l,B5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function DQe(s,l){s=s|0,l=l|0,PQe(n[(SQe(s)|0)>>2]|0,l)}function SQe(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s<<3)|0}function PQe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,HF(f,l),l=qF(f,l)|0,tf[s&127](l),C=c}function bQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=rR()|0,s=xQe(c)|0,hn(m,l,d,s,kQe(c,f)|0,f)}function rR(){var s=0,l=0;if(o[7808]|0||(X5(9972),tr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(Tr(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X5(9972)}return 9972}function xQe(s){return s=s|0,s|0}function kQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=rR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(z5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(QQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function z5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function QQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=FQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,RQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,z5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,TQe(s,d),NQe(d),C=k;return}}function FQe(s){return s=s|0,536870911}function RQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function TQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function NQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function X5(s){s=s|0,MQe(s)}function LQe(s){s=s|0,OQe(s+24|0)}function OQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function MQe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,9,l,UQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function UQe(){return 1348}function _Qe(s,l){return s=s|0,l=l|0,qQe(n[(HQe(s)|0)>>2]|0,l)|0}function HQe(s){return s=s|0,(n[(rR()|0)+24>>2]|0)+(s<<3)|0}function qQe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Z5(f,l),l=$5(f,l)|0,l=sD(Lg[s&31](l)|0)|0,C=c,l|0}function Z5(s,l){s=s|0,l=l|0}function $5(s,l){return s=s|0,l=l|0,jQe(l)|0}function jQe(s){return s=s|0,s|0}function GQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nR()|0,s=YQe(c)|0,hn(m,l,d,s,WQe(c,f)|0,f)}function nR(){var s=0,l=0;if(o[7816]|0||(t9(10008),tr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t9(10008)}return 10008}function YQe(s){return s=s|0,s|0}function WQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=nR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(e9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(KQe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function e9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function KQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=VQe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,JQe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,e9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,zQe(s,d),XQe(d),C=k;return}}function VQe(s){return s=s|0,536870911}function JQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function zQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function XQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function t9(s){s=s|0,eFe(s)}function ZQe(s){s=s|0,$Qe(s+24|0)}function $Qe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function eFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,15,l,m5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tFe(s){return s=s|0,nFe(n[(rFe(s)|0)>>2]|0)|0}function rFe(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s<<3)|0}function nFe(s){return s=s|0,sD(CD[s&7]()|0)|0}function iFe(){var s=0;return o[7832]|0||(fFe(10052),tr(25,10052,U|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function sFe(s,l){s=s|0,l=l|0,n[s>>2]=oFe()|0,n[s+4>>2]=aFe()|0,n[s+12>>2]=l,n[s+8>>2]=lFe()|0,n[s+32>>2]=2}function oFe(){return 11709}function aFe(){return 1188}function lFe(){return aD()|0}function cFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(uFe(c),gt(c)):l|0&&(Su(l),gt(l))}function bp(s,l){return s=s|0,l=l|0,l&s|0}function uFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function aD(){var s=0;return o[7824]|0||(n[2511]=AFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function AFe(){return 0}function fFe(s){s=s|0,vp(s)}function pFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=C,C=C+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,hFe(s,4827),gFe(s,4834,3)|0,dFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],mFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],yFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],EFe(s,4891,c)|0,C=l}function hFe(s,l){s=s|0,l=l|0;var c=0;c=XRe()|0,n[s>>2]=c,ZRe(c,l),xp(n[s>>2]|0)}function gFe(s,l,c){return s=s|0,l=l|0,c=c|0,NRe(s,pn(l)|0,c,0),s|0}function dFe(s,l,c){return s=s|0,l=l|0,c=c|0,CRe(s,pn(l)|0,c,0),s|0}function mFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tRe(s,l,d),C=f,s|0}function yFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],LFe(s,l,d),C=f,s|0}function EFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],CFe(s,l,d),C=f,s|0}function CFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wFe(s,c,d,1),C=f}function wFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=iR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=IFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,BFe(m,f)|0,f),C=d}function iR(){var s=0,l=0;if(o[7840]|0||(n9(10100),tr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));n9(10100)}return 10100}function IFe(s){return s=s|0,0}function BFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=iR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],r9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(vFe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function r9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function vFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=DFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,SFe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],r9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,PFe(s,k),bFe(k),C=M;return}}function DFe(s){return s=s|0,357913941}function SFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function PFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function bFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function n9(s){s=s|0,QFe(s)}function xFe(s){s=s|0,kFe(s+24|0)}function kFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function QFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,6,l,FFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function FFe(){return 1364}function RFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=C,C=C+16|0,d=f+8|0,m=f,B=TFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=NFe(l,d,c)|0,C=f,c|0}function TFe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s*12|0)|0}function NFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZA(d,c),d=$A(d,c)|0,d=u5(RR[f&15](s,d)|0)|0,C=m,d|0}function LFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],OFe(s,c,d,0),C=f}function OFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=sR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=MFe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,UFe(m,f)|0,f),C=d}function sR(){var s=0,l=0;if(o[7848]|0||(s9(10136),tr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s9(10136)}return 10136}function MFe(s){return s=s|0,0}function UFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=sR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(_Fe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function _Fe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=HFe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,qFe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,jFe(s,k),GFe(k),C=M;return}}function HFe(s){return s=s|0,357913941}function qFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function jFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function GFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function s9(s){s=s|0,KFe(s)}function YFe(s){s=s|0,WFe(s+24|0)}function WFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function KFe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,9,l,VFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VFe(){return 1372}function JFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,d=f+8|0,m=f,B=zFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XFe(l,d,c),C=f}function zFe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s*12|0)|0}function XFe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=Ze;m=C,C=C+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ZFe(d,c),B=y($Fe(d,c)),E7[f&1](s,B),C=m}function ZFe(s,l){s=s|0,l=+l}function $Fe(s,l){return s=s|0,l=+l,y(eRe(l))}function eRe(s){return s=+s,y(s)}function tRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,d=f+8|0,m=f,k=n[c>>2]|0,B=n[c+4>>2]|0,c=pn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rRe(s,c,d,0),C=f}function rRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0,Q=0,M=0,O=0;d=C,C=C+32|0,m=d+16|0,O=d+8|0,k=d,M=n[c>>2]|0,Q=n[c+4>>2]|0,B=n[s>>2]|0,s=oR()|0,n[O>>2]=M,n[O+4>>2]=Q,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nRe(m)|0,n[k>>2]=M,n[k+4>>2]=Q,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],hn(B,l,s,c,iRe(m,f)|0,f),C=d}function oR(){var s=0,l=0;if(o[7856]|0||(a9(10172),tr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a9(10172)}return 10172}function nRe(s){return s=s|0,0}function iRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0;return O=C,C=C+32|0,d=O+24|0,B=O+16|0,k=O,Q=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[k>>2]=m,n[k+4>>2]=f,j=oR()|0,M=j+24|0,s=gr(l,4)|0,n[Q>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sRe(M,k,Q),s=n[l>>2]|0),C=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;if(M=C,C=C+48|0,f=M+32|0,B=M+24|0,k=M,Q=s+4|0,d=(((n[Q>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oRe(s)|0,m>>>0<d>>>0)zr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,aRe(k,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[Q>>2]|0)-O|0)/12|0,s+8|0),Q=k+8|0,m=n[Q>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o9(m,f,c),n[Q>>2]=(n[Q>>2]|0)+12,lRe(s,k),cRe(k),C=M;return}}function oRe(s){return s=s|0,357913941}function aRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Kt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&gt(s)}function a9(s){s=s|0,fRe(s)}function uRe(s){s=s|0,ARe(s+24|0)}function ARe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),gt(c))}function fRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,2,3,l,pRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pRe(){return 1380}function hRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+8|0,B=d,k=gRe(s)|0,s=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],dRe(l,m,c,f),C=d}function gRe(s){return s=s|0,(n[(oR()|0)+24>>2]|0)+(s*12|0)|0}function dRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;k=C,C=C+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),ZA(m,c),m=$A(m,c)|0,mRe(B,f),B=yRe(B,f)|0,Hw[d&15](s,m,B),C=k}function mRe(s,l){s=s|0,l=l|0}function yRe(s,l){return s=s|0,l=l|0,ERe(l)|0}function ERe(s){return s=s|0,(s|0)!=0|0}function CRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=aR()|0,s=wRe(c)|0,hn(m,l,d,s,IRe(c,f)|0,f)}function aR(){var s=0,l=0;if(o[7864]|0||(c9(10208),tr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c9(10208)}return 10208}function wRe(s){return s=s|0,s|0}function IRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=aR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(l9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(BRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function l9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function BRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=vRe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,DRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,l9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,SRe(s,d),PRe(d),C=k;return}}function vRe(s){return s=s|0,536870911}function DRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function SRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function PRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function c9(s){s=s|0,kRe(s)}function bRe(s){s=s|0,xRe(s+24|0)}function xRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function kRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,24,l,QRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function QRe(){return 1392}function FRe(s,l){s=s|0,l=l|0,TRe(n[(RRe(s)|0)>>2]|0,l)}function RRe(s){return s=s|0,(n[(aR()|0)+24>>2]|0)+(s<<3)|0}function TRe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,Z5(f,l),l=$5(f,l)|0,tf[s&127](l),C=c}function NRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=lR()|0,s=LRe(c)|0,hn(m,l,d,s,ORe(c,f)|0,f)}function lR(){var s=0,l=0;if(o[7872]|0||(A9(10244),tr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));A9(10244)}return 10244}function LRe(s){return s=s|0,s|0}function ORe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=lR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(u9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(MRe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function u9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function MRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=URe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,_Re(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,u9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,HRe(s,d),qRe(d),C=k;return}}function URe(s){return s=s|0,536870911}function _Re(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function HRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function qRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function A9(s){s=s|0,YRe(s)}function jRe(s){s=s|0,GRe(s+24|0)}function GRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function YRe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,16,l,WRe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function WRe(){return 1400}function KRe(s){return s=s|0,JRe(n[(VRe(s)|0)>>2]|0)|0}function VRe(s){return s=s|0,(n[(lR()|0)+24>>2]|0)+(s<<3)|0}function JRe(s){return s=s|0,zRe(CD[s&7]()|0)|0}function zRe(s){return s=s|0,s|0}function XRe(){var s=0;return o[7880]|0||(iTe(10280),tr(25,10280,U|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function ZRe(s,l){s=s|0,l=l|0,n[s>>2]=$Re()|0,n[s+4>>2]=eTe()|0,n[s+12>>2]=l,n[s+8>>2]=tTe()|0,n[s+32>>2]=4}function $Re(){return 11711}function eTe(){return 1356}function tTe(){return aD()|0}function rTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(nTe(c),gt(c)):l|0&&(Dg(l),gt(l))}function nTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function iTe(s){s=s|0,vp(s)}function sTe(s){s=s|0,oTe(s,4920),aTe(s)|0,lTe(s)|0}function oTe(s,l){s=s|0,l=l|0;var c=0;c=R5()|0,n[s>>2]=c,xTe(c,l),xp(n[s>>2]|0)}function aTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,ETe()|0),s|0}function lTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,cTe()|0),s|0}function cTe(){var s=0;return o[7888]|0||(f9(10328),tr(53,10328,U|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),Tr(10328)|0||f9(10328),10328}function kg(s,l){s=s|0,l=l|0,hn(s,0,l,0,0,0)}function f9(s){s=s|0,fTe(s),Qg(s,10)}function uTe(s){s=s|0,ATe(s+24|0)}function ATe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function fTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,dTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pTe(s,l,c){s=s|0,l=l|0,c=+c,hTe(s,l,c)}function Qg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function hTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+16|0,m=f+8|0,k=f+13|0,d=f,B=f+12|0,ZA(k,l),n[m>>2]=$A(k,l)|0,ku(B,c),E[d>>3]=+Qu(B,c),gTe(s,m,d),C=f}function gTe(s,l,c){s=s|0,l=l|0,c=c|0,Y(s+8|0,n[l>>2]|0,+E[c>>3]),o[s+24>>0]=1}function dTe(){return 1404}function mTe(s,l){return s=s|0,l=+l,yTe(s,l)|0}function yTe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,m=f+4|0,B=f+8|0,k=f,d=Wa(8)|0,c=d,Q=Kt(16)|0,ZA(m,s),s=$A(m,s)|0,ku(B,l),Y(Q,s,+Qu(B,l)),B=c+4|0,n[B>>2]=Q,s=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],KF(s,B,m),n[d>>2]=s,C=f,c|0}function ETe(){var s=0;return o[7896]|0||(p9(10364),tr(54,10364,U|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),Tr(10364)|0||p9(10364),10364}function p9(s){s=s|0,ITe(s),Qg(s,55)}function CTe(s){s=s|0,wTe(s+24|0)}function wTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function ITe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,4,l,STe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BTe(s){s=s|0,vTe(s)}function vTe(s){s=s|0,DTe(s)}function DTe(s){s=s|0,h9(s+8|0),o[s+24>>0]=1}function h9(s){s=s|0,n[s>>2]=0,E[s+8>>3]=0}function STe(){return 1424}function PTe(){return bTe()|0}function bTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,h9(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],KF(f,m,d),n[c>>2]=f,C=l,s|0}function xTe(s,l){s=s|0,l=l|0,n[s>>2]=kTe()|0,n[s+4>>2]=QTe()|0,n[s+12>>2]=l,n[s+8>>2]=FTe()|0,n[s+32>>2]=5}function kTe(){return 11710}function QTe(){return 1416}function FTe(){return lD()|0}function RTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TTe(c),gt(c)):l|0&&gt(l)}function TTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function lD(){var s=0;return o[7904]|0||(n[2600]=NTe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function NTe(){return n[357]|0}function LTe(s){s=s|0,OTe(s,4926),MTe(s)|0}function OTe(s,l){s=s|0,l=l|0;var c=0;c=r5()|0,n[s>>2]=c,JTe(c,l),xp(n[s>>2]|0)}function MTe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,UTe()|0),s|0}function UTe(){var s=0;return o[7912]|0||(g9(10412),tr(56,10412,U|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),Tr(10412)|0||g9(10412),10412}function g9(s){s=s|0,qTe(s),Qg(s,57)}function _Te(s){s=s|0,HTe(s+24|0)}function HTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function qTe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,5,l,WTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jTe(s){s=s|0,GTe(s)}function GTe(s){s=s|0,YTe(s)}function YTe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function WTe(){return 1432}function KTe(){return VTe()|0}function VTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0;B=C,C=C+16|0,s=B+4|0,l=B,c=Wa(8)|0,f=c,d=Kt(48)|0,m=d,k=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(k|0));return m=f+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],n5(k,m,s),n[c>>2]=k,C=B,f|0}function JTe(s,l){s=s|0,l=l|0,n[s>>2]=zTe()|0,n[s+4>>2]=XTe()|0,n[s+12>>2]=l,n[s+8>>2]=ZTe()|0,n[s+32>>2]=6}function zTe(){return 11704}function XTe(){return 1436}function ZTe(){return lD()|0}function $Te(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(eNe(c),gt(c)):l|0&&gt(l)}function eNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function tNe(s){s=s|0,rNe(s,4933),nNe(s)|0,iNe(s)|0}function rNe(s,l){s=s|0,l=l|0;var c=0;c=bNe()|0,n[s>>2]=c,xNe(c,l),xp(n[s>>2]|0)}function nNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,yNe()|0),s|0}function iNe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,sNe()|0),s|0}function sNe(){var s=0;return o[7920]|0||(d9(10452),tr(58,10452,U|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),Tr(10452)|0||d9(10452),10452}function d9(s){s=s|0,lNe(s),Qg(s,1)}function oNe(s){s=s|0,aNe(s+24|0)}function aNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function lNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,1,l,fNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function cNe(s,l,c){s=s|0,l=+l,c=+c,uNe(s,l,c)}function uNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,m=f+8|0,k=f+17|0,d=f,B=f+16|0,ku(k,l),E[m>>3]=+Qu(k,l),ku(B,c),E[d>>3]=+Qu(B,c),ANe(s,m,d),C=f}function ANe(s,l,c){s=s|0,l=l|0,c=c|0,m9(s+8|0,+E[l>>3],+E[c>>3]),o[s+24>>0]=1}function m9(s,l,c){s=s|0,l=+l,c=+c,E[s>>3]=l,E[s+8>>3]=c}function fNe(){return 1472}function pNe(s,l){return s=+s,l=+l,hNe(s,l)|0}function hNe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+16|0,B=f+4|0,k=f+8|0,Q=f,d=Wa(8)|0,c=d,m=Kt(16)|0,ku(B,s),s=+Qu(B,s),ku(k,l),m9(m,s,+Qu(k,l)),k=c+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[Q>>2]=0,n[B>>2]=n[Q>>2],y9(m,k,B),n[d>>2]=m,C=f,c|0}function y9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function gNe(s){s=s|0,zm(s),gt(s)}function dNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function mNe(s){s=s|0,gt(s)}function yNe(){var s=0;return o[7928]|0||(E9(10488),tr(59,10488,U|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),Tr(10488)|0||E9(10488),10488}function E9(s){s=s|0,wNe(s),Qg(s,60)}function ENe(s){s=s|0,CNe(s+24|0)}function CNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function wNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,6,l,DNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function INe(s){s=s|0,BNe(s)}function BNe(s){s=s|0,vNe(s)}function vNe(s){s=s|0,C9(s+8|0),o[s+24>>0]=1}function C9(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function DNe(){return 1492}function SNe(){return PNe()|0}function PNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,f=Kt(16)|0,C9(f),m=s+4|0,n[m>>2]=f,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],y9(f,m,d),n[c>>2]=f,C=l,s|0}function bNe(){var s=0;return o[7936]|0||(NNe(10524),tr(25,10524,U|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function xNe(s,l){s=s|0,l=l|0,n[s>>2]=kNe()|0,n[s+4>>2]=QNe()|0,n[s+12>>2]=l,n[s+8>>2]=FNe()|0,n[s+32>>2]=7}function kNe(){return 11700}function QNe(){return 1484}function FNe(){return lD()|0}function RNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(TNe(c),gt(c)):l|0&&gt(l)}function TNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function NNe(s){s=s|0,vp(s)}function LNe(s,l,c){s=s|0,l=l|0,c=c|0,s=pn(l)|0,l=ONe(c)|0,c=MNe(c,0)|0,hLe(s,l,c,cR()|0,0)}function ONe(s){return s=s|0,s|0}function MNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=cR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(I9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(YNe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function cR(){var s=0,l=0;if(o[7944]|0||(w9(10568),tr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));w9(10568)}return 10568}function w9(s){s=s|0,HNe(s)}function UNe(s){s=s|0,_Ne(s+24|0)}function _Ne(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function HNe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,17,l,C5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qNe(s){return s=s|0,GNe(n[(jNe(s)|0)>>2]|0)|0}function jNe(s){return s=s|0,(n[(cR()|0)+24>>2]|0)+(s<<3)|0}function GNe(s){return s=s|0,oD(CD[s&7]()|0)|0}function I9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function YNe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=WNe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,KNe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,I9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,VNe(s,d),JNe(d),C=k;return}}function WNe(s){return s=s|0,536870911}function KNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function VNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JNe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function zNe(){XNe()}function XNe(){ZNe(10604)}function ZNe(s){s=s|0,$Ne(s,4955)}function $Ne(s,l){s=s|0,l=l|0;var c=0;c=eLe()|0,n[s>>2]=c,tLe(c,l),xp(n[s>>2]|0)}function eLe(){var s=0;return o[7952]|0||(uLe(10612),tr(25,10612,U|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function tLe(s,l){s=s|0,l=l|0,n[s>>2]=sLe()|0,n[s+4>>2]=oLe()|0,n[s+12>>2]=l,n[s+8>>2]=aLe()|0,n[s+32>>2]=8}function xp(s){s=s|0;var l=0,c=0;l=C,C=C+16|0,c=l,Ym()|0,n[c>>2]=s,rLe(10608,c),C=l}function Ym(){return o[11714]|0||(n[2652]=0,tr(62,10608,U|0)|0,o[11714]=1),10608}function rLe(s,l){s=s|0,l=l|0;var c=0;c=Kt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function nLe(s){s=s|0,iLe(s)}function iLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,gt(c);while((l|0)!=0);n[s>>2]=0}function sLe(){return 11715}function oLe(){return 1496}function aLe(){return aD()|0}function lLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(cLe(c),gt(c)):l|0&&gt(l)}function cLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function uLe(s){s=s|0,vp(s)}function ALe(s,l){s=s|0,l=l|0;var c=0,f=0;Ym()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(n7(uR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;fLe(f,l)}while(0)}function uR(s){return s=s|0,n[s+12>>2]|0}function fLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(jA(c),gt(c)),c=Kt(4)|0,zG(c,l),n[s>>2]=c}function AR(){return o[11716]|0||(n[2664]=0,tr(63,10656,U|0)|0,o[11716]=1),10656}function B9(){var s=0;return o[11717]|0?s=n[2665]|0:(pLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function pLe(){o[11740]|0||(o[11718]=gr(gr(8,0)|0,0)|0,o[11719]=gr(gr(0,0)|0,0)|0,o[11720]=gr(gr(0,16)|0,0)|0,o[11721]=gr(gr(8,0)|0,0)|0,o[11722]=gr(gr(0,0)|0,0)|0,o[11723]=gr(gr(8,0)|0,0)|0,o[11724]=gr(gr(0,0)|0,0)|0,o[11725]=gr(gr(8,0)|0,0)|0,o[11726]=gr(gr(0,0)|0,0)|0,o[11727]=gr(gr(8,0)|0,0)|0,o[11728]=gr(gr(0,0)|0,0)|0,o[11729]=gr(gr(0,0)|0,32)|0,o[11730]=gr(gr(0,0)|0,32)|0,o[11740]=1)}function v9(){return 1572}function hLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0;m=C,C=C+32|0,O=m+16|0,M=m+12|0,Q=m+8|0,k=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[Q>>2]=c,n[k>>2]=f,n[B>>2]=d,AR()|0,gLe(10656,O,M,Q,k,B),C=m}function gLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,$G(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function D9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0;if(lt=C,C=C+32|0,Me=lt+20|0,Qe=lt+8|0,et=lt+4|0,Xe=lt,l=n[l>>2]|0,l|0){Ge=Me+4|0,Q=Me+8|0,M=Qe+4|0,O=Qe+8|0,j=Qe+8|0,se=Me+8|0;do{if(B=l+4|0,k=fR(B)|0,k|0){if(d=Nw(k)|0,n[Me>>2]=0,n[Ge>>2]=0,n[Q>>2]=0,f=(Lw(k)|0)+1|0,dLe(Me,f),f|0)for(;f=f+-1|0,bc(Qe,n[d>>2]|0),m=n[Ge>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ge>>2]=(n[Ge>>2]|0)+4):pR(Me,Qe),f;)d=d+4|0;f=Ow(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?mLe(Qe,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[j>>2]|0}while(0);n[et>>2]=cD(B)|0,n[Xe>>2]=Tr(k)|0,yLe(c,s,et,Xe,Me,Qe),hR(Qe),ef(Me)}l=n[l>>2]|0}while((l|0)!=0)}C=lt}function fR(s){return s=s|0,n[s+12>>2]|0}function Nw(s){return s=s|0,n[s+12>>2]|0}function Lw(s){return s=s|0,n[s+16>>2]|0}function dLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(R9(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),T9(s,c),N9(c)),C=d}function pR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=F9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,R9(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,T9(s,c),N9(c),C=B;return}}function Ow(s){return s=s|0,n[s+8>>2]|0}function mLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;if(B=C,C=C+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=Q9(s)|0,m>>>0<d>>>0)zr(s);else{k=n[s>>2]|0,M=(n[s+8>>2]|0)-k|0,Q=M>>1,OLe(c,M>>2>>>0<m>>>1>>>0?Q>>>0<d>>>0?d:Q:m,(n[f>>2]|0)-k>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,MLe(s,c),ULe(c),C=B;return}}function cD(s){return s=s|0,n[s>>2]|0}function yLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,ELe(s,l,c,f,d,m)}function hR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ef(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),gt(c))}function ELe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+48|0,O=B+40|0,k=B+32|0,j=B+24|0,Q=B+12|0,M=B,Ka(k),s=da(s)|0,n[j>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,gR(Q,d),CLe(M,m),n[O>>2]=n[j>>2],wLe(s,O,c,f,Q,M),hR(M),ef(Q),Va(k),C=B}function gR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(NLe(s,f),LLe(s,n[l>>2]|0,n[c>>2]|0,f))}function CLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(RLe(s,f),TLe(s,n[l>>2]|0,n[c>>2]|0,f))}function wLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+32|0,O=B+28|0,j=B+24|0,k=B+12|0,Q=B,M=Sl(ILe()|0)|0,n[j>>2]=n[l>>2],n[O>>2]=n[j>>2],l=Fg(O)|0,c=S9(c)|0,f=dR(f)|0,n[k>>2]=n[d>>2],O=d+4|0,n[k+4>>2]=n[O>>2],j=d+8|0,n[k+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[d>>2]=0,d=mR(k)|0,n[Q>>2]=n[m>>2],O=m+4|0,n[Q+4>>2]=n[O>>2],j=m+8|0,n[Q+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[m>>2]=0,ao(0,M|0,s|0,l|0,c|0,f|0,d|0,BLe(Q)|0)|0,hR(Q),ef(k),C=B}function ILe(){var s=0;return o[7968]|0||(QLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Fg(s){return s=s|0,b9(s)|0}function S9(s){return s=s|0,P9(s)|0}function dR(s){return s=s|0,oD(s)|0}function mR(s){return s=s|0,DLe(s)|0}function BLe(s){return s=s|0,vLe(s)|0}function vLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=P9(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function P9(s){return s=s|0,s|0}function DLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Wa(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=b9((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function b9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=C,C=C+32|0,l=d+12|0,c=d,f=xF(x9()|0)|0,f?(kF(l,f),QF(c,l),aUe(s,c),s=FF(l)|0):s=SLe(s)|0,C=d,s|0}function x9(){var s=0;return o[7960]|0||(kLe(10664),tr(25,10664,U|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function SLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,n[k>>2]=n[s>>2],m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k9(s,m,d),n[f>>2]=s,C=c,l|0}function k9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function PLe(s){s=s|0,zm(s),gt(s)}function bLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function xLe(s){s=s|0,gt(s)}function kLe(s){s=s|0,vp(s)}function QLe(s){s=s|0,Pl(s,FLe()|0,5)}function FLe(){return 1676}function RLe(s,l){s=s|0,l=l|0;var c=0;if((Q9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function TLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function Q9(s){return s=s|0,1073741823}function NLe(s,l){s=s|0,l=l|0;var c=0;if((F9(s)|0)>>>0<l>>>0&&zr(s),l>>>0>1073741823)Rt();else{c=Kt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function LLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Dr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function F9(s){return s=s|0,1073741823}function OLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function MLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ULe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function R9(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Kt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function T9(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function N9(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&gt(s)}function _Le(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;if(Qe=C,C=C+32|0,O=Qe+20|0,j=Qe+12|0,M=Qe+16|0,se=Qe+4|0,Ge=Qe,Me=Qe+8|0,k=B9()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(Q=n[k+8>>2]|0,k=n[k+4>>2]|0;bc(O,B),HLe(s,O,k,Q),m=m+4|0,B=n[m>>2]|0,B;)Q=Q+1|0,k=k+1|0;if(m=v9()|0,B=n[m>>2]|0,B|0)do bc(O,B),n[j>>2]=n[m+4>>2],qLe(l,O,j),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Ym()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bc(O,n[(Wm(l)|0)>>2]|0),n[j>>2]=uR(l)|0,jLe(c,O,j),m=n[m>>2]|0;while((m|0)!=0);if(bc(M,0),m=AR()|0,n[O>>2]=n[M>>2],D9(O,m,d),m=n[(Ym()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(Q=n[m+4>>2]|0,bc(j,n[(Wm(Q)|0)>>2]|0),GLe(se,L9(Q)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do bc(Ge,n[(Wm(n[B+4>>2]|0)|0)>>2]|0),k=n[s>>2]|0,k>>>0<(n[c>>2]|0)>>>0?(n[k>>2]=n[Ge>>2],n[s>>2]=(n[s>>2]|0)+4):pR(O,Ge),B=n[B>>2]|0;while((B|0)!=0);YLe(f,j,O),ef(O)}n[Me>>2]=n[j>>2],M=O9(Q)|0,n[O>>2]=n[Me>>2],D9(O,M,d),s5(se),m=n[m>>2]|0}while((m|0)!=0)}C=Qe}function HLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,nOe(s,l,c,f)}function qLe(s,l,c){s=s|0,l=l|0,c=c|0,rOe(s,l,c)}function Wm(s){return s=s|0,s|0}function jLe(s,l,c){s=s|0,l=l|0,c=c|0,ZLe(s,l,c)}function L9(s){return s=s|0,s+16|0}function GLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(m=C,C=C+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=XLe(c)|0,f|0){if(f=Kt(12)|0,B=(M9(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Kt(12)|0,Q=(M9(d)|0)+4|0,k=n[Q+4>>2]|0,B=s+4|0,n[B>>2]=n[Q>>2],n[B+4>>2]=k,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}C=m}function YLe(s,l,c){s=s|0,l=l|0,c=c|0,WLe(s,l,c)}function O9(s){return s=s|0,s+24|0}function WLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+24|0,d=f+16|0,k=f+12|0,m=f,Ka(d),s=da(s)|0,n[k>>2]=n[l>>2],gR(m,c),n[B>>2]=n[k>>2],KLe(s,B,m),ef(m),Va(d),C=f}function KLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=C,C=C+32|0,B=f+16|0,k=f+12|0,d=f,m=Sl(VLe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],k=c+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[c>>2]=0,oo(0,m|0,s|0,l|0,mR(d)|0)|0,ef(d),C=f}function VLe(){var s=0;return o[7976]|0||(JLe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function JLe(s){s=s|0,Pl(s,zLe()|0,2)}function zLe(){return 1732}function XLe(s){return s=s|0,n[s>>2]|0}function M9(s){return s=s|0,n[s>>2]|0}function ZLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U9(s,m,c),Va(d),C=f}function U9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+16|0,m=f+4|0,B=f,d=Sl($Le()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Fg(m)|0,oo(0,d|0,s|0,l|0,S9(c)|0)|0,C=f}function $Le(){var s=0;return o[7984]|0||(eOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function eOe(s){s=s|0,Pl(s,tOe()|0,2)}function tOe(){return 1744}function rOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=C,C=C+32|0,m=f+16|0,d=f+8|0,B=f,Ka(d),s=da(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],U9(s,m,c),Va(d),C=f}function nOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),s=da(s)|0,n[k>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[k>>2],iOe(s,B,c,f),Va(m),C=d}function iOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,B=d+4|0,k=d,m=Sl(sOe()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=Fg(B)|0,c=Km(c)|0,pc(0,m|0,s|0,l|0,c|0,Km(f)|0)|0,C=d}function sOe(){var s=0;return o[7992]|0||(aOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Km(s){return s=s|0,oOe(s)|0}function oOe(s){return s=s|0,s&255|0}function aOe(s){s=s|0,Pl(s,lOe()|0,3)}function lOe(){return 1756}function cOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;switch(se=C,C=C+32|0,k=se+8|0,Q=se+4|0,M=se+20|0,O=se,LF(s,0),f=oUe(l)|0,n[k>>2]=0,j=k+4|0,n[j>>2]=0,n[k+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,uOe(Q,c,M),uD(s,Q)|0,GA(Q);break}case 8:{j=BR(l)|0,o[M>>0]=8,bc(O,n[j+4>>2]|0),AOe(Q,c,M,O,j+8|0),uD(s,Q)|0,GA(Q);break}case 9:{if(m=BR(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bc(Q,n[d>>2]|0),f=n[j>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[Q>>2],n[j>>2]=(n[j>>2]|0)+4):pR(k,Q),l;)d=d+4|0;o[M>>0]=9,bc(O,n[m+8>>2]|0),fOe(Q,c,M,O,k),uD(s,Q)|0,GA(Q);break}default:j=BR(l)|0,o[M>>0]=f,bc(O,n[j+4>>2]|0),pOe(Q,c,M,O),uD(s,Q)|0,GA(Q)}ef(k),C=se}function uOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=C,C=C+16|0,d=f,Ka(d),l=da(l)|0,SOe(s,l,o[c>>0]|0),Va(d),C=f}function uD(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&PA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function AOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+32|0,k=m+16|0,B=m+8|0,Q=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],d=n[d>>2]|0,n[k>>2]=n[Q>>2],IOe(s,l,c,k,d),Va(B),C=m}function fOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+24|0,B=m+16|0,M=m+12|0,k=m,Ka(B),l=da(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],gR(k,d),n[Q>>2]=n[M>>2],yOe(s,l,c,Q,k),ef(k),Va(B),C=m}function pOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+32|0,B=d+16|0,m=d+8|0,k=d,Ka(m),l=da(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],n[B>>2]=n[k>>2],hOe(s,l,c,B),Va(m),C=d}function hOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,k=0;d=C,C=C+16|0,m=d+4|0,k=d,B=Sl(gOe()|0)|0,c=Km(c)|0,n[k>>2]=n[f>>2],n[m>>2]=n[k>>2],AD(s,oo(0,B|0,l|0,c|0,Fg(m)|0)|0),C=d}function gOe(){var s=0;return o[8e3]|0||(dOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function AD(s,l){s=s|0,l=l|0,LF(s,l)}function dOe(s){s=s|0,Pl(s,mOe()|0,2)}function mOe(){return 1772}function yOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0;m=C,C=C+32|0,Q=m+16|0,M=m+12|0,B=m,k=Sl(EOe()|0)|0,c=Km(c)|0,n[M>>2]=n[f>>2],n[Q>>2]=n[M>>2],f=Fg(Q)|0,n[B>>2]=n[d>>2],Q=d+4|0,n[B+4>>2]=n[Q>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[Q>>2]=0,n[d>>2]=0,AD(s,pc(0,k|0,l|0,c|0,f|0,mR(B)|0)|0),ef(B),C=m}function EOe(){var s=0;return o[8008]|0||(COe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function COe(s){s=s|0,Pl(s,wOe()|0,3)}function wOe(){return 1784}function IOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0;m=C,C=C+16|0,k=m+4|0,Q=m,B=Sl(BOe()|0)|0,c=Km(c)|0,n[Q>>2]=n[f>>2],n[k>>2]=n[Q>>2],f=Fg(k)|0,AD(s,pc(0,B|0,l|0,c|0,f|0,dR(d)|0)|0),C=m}function BOe(){var s=0;return o[8016]|0||(vOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function vOe(s){s=s|0,Pl(s,DOe()|0,3)}function DOe(){return 1800}function SOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Sl(POe()|0)|0,AD(s,Qn(0,f|0,l|0,Km(c)|0)|0)}function POe(){var s=0;return o[8024]|0||(bOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function bOe(s){s=s|0,Pl(s,xOe()|0,1)}function xOe(){return 1816}function kOe(){QOe(),FOe(),ROe()}function QOe(){n[2702]=p7(65536)|0}function FOe(){$Oe(10856)}function ROe(){TOe(10816)}function TOe(s){s=s|0,NOe(s,5044),LOe(s)|0}function NOe(s,l){s=s|0,l=l|0;var c=0;c=x9()|0,n[s>>2]=c,KOe(c,l),xp(n[s>>2]|0)}function LOe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,OOe()|0),s|0}function OOe(){var s=0;return o[8032]|0||(_9(10820),tr(64,10820,U|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),Tr(10820)|0||_9(10820),10820}function _9(s){s=s|0,_Oe(s),Qg(s,25)}function MOe(s){s=s|0,UOe(s+24|0)}function UOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function _Oe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,18,l,GOe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function HOe(s,l){s=s|0,l=l|0,qOe(s,l)}function qOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=C,C=C+16|0,f=c,d=c+4|0,bg(d,l),n[f>>2]=xg(d,l)|0,jOe(s,f),C=c}function jOe(s,l){s=s|0,l=l|0,H9(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function H9(s,l){s=s|0,l=l|0,n[s>>2]=l}function GOe(){return 1824}function YOe(s){return s=s|0,WOe(s)|0}function WOe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0;return c=C,C=C+16|0,d=c+4|0,B=c,f=Wa(8)|0,l=f,k=Kt(4)|0,bg(d,s),H9(k,xg(d,s)|0),m=l+4|0,n[m>>2]=k,s=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],k9(s,m,d),n[f>>2]=s,C=c,l|0}function Wa(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=p7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function KOe(s,l){s=s|0,l=l|0,n[s>>2]=VOe()|0,n[s+4>>2]=JOe()|0,n[s+12>>2]=l,n[s+8>>2]=zOe()|0,n[s+32>>2]=9}function VOe(){return 11744}function JOe(){return 1832}function zOe(){return lD()|0}function XOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(ZOe(c),gt(c)):l|0&&gt(l)}function ZOe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function $Oe(s){s=s|0,eMe(s,5052),tMe(s)|0,rMe(s,5058,26)|0,nMe(s,5069,1)|0,iMe(s,5077,10)|0,sMe(s,5087,19)|0,oMe(s,5094,27)|0}function eMe(s,l){s=s|0,l=l|0;var c=0;c=Z4e()|0,n[s>>2]=c,$4e(c,l),xp(n[s>>2]|0)}function tMe(s){s=s|0;var l=0;return l=n[s>>2]|0,kg(l,M4e()|0),s|0}function rMe(s,l,c){return s=s|0,l=l|0,c=c|0,C4e(s,pn(l)|0,c,0),s|0}function nMe(s,l,c){return s=s|0,l=l|0,c=c|0,s4e(s,pn(l)|0,c,0),s|0}function iMe(s,l,c){return s=s|0,l=l|0,c=c|0,OMe(s,pn(l)|0,c,0),s|0}function sMe(s,l,c){return s=s|0,l=l|0,c=c|0,IMe(s,pn(l)|0,c,0),s|0}function q9(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}gt(c)}n[2701]=s}function oMe(s,l,c){return s=s|0,l=l|0,c=c|0,aMe(s,pn(l)|0,c,0),s|0}function aMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=yR()|0,s=lMe(c)|0,hn(m,l,d,s,cMe(c,f)|0,f)}function yR(){var s=0,l=0;if(o[8040]|0||(G9(10860),tr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G9(10860)}return 10860}function lMe(s){return s=s|0,s|0}function cMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=yR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(j9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(uMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function j9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function uMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=AMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,fMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,j9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,pMe(s,d),hMe(d),C=k;return}}function AMe(s){return s=s|0,536870911}function fMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function pMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function hMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function G9(s){s=s|0,mMe(s)}function gMe(s){s=s|0,dMe(s+24|0)}function dMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function mMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,yMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function yMe(){return 1840}function EMe(s,l,c){s=s|0,l=l|0,c=c|0,wMe(n[(CMe(s)|0)>>2]|0,l,c)}function CMe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s<<3)|0}function wMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+1|0,d=f,bg(m,l),l=xg(m,l)|0,bg(d,c),c=xg(d,c)|0,rf[s&31](l,c),C=f}function IMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=ER()|0,s=BMe(c)|0,hn(m,l,d,s,vMe(c,f)|0,f)}function ER(){var s=0,l=0;if(o[8048]|0||(W9(10896),tr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W9(10896)}return 10896}function BMe(s){return s=s|0,s|0}function vMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=ER()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(Y9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(DMe(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function Y9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function DMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=SMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,PMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,Y9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,bMe(s,d),xMe(d),C=k;return}}function SMe(s){return s=s|0,536870911}function PMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function bMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function xMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function W9(s){s=s|0,FMe(s)}function kMe(s){s=s|0,QMe(s+24|0)}function QMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function FMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,11,l,RMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RMe(){return 1852}function TMe(s,l){return s=s|0,l=l|0,LMe(n[(NMe(s)|0)>>2]|0,l)|0}function NMe(s){return s=s|0,(n[(ER()|0)+24>>2]|0)+(s<<3)|0}function LMe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,bg(f,l),l=xg(f,l)|0,l=oD(Lg[s&31](l)|0)|0,C=c,l|0}function OMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=CR()|0,s=MMe(c)|0,hn(m,l,d,s,UMe(c,f)|0,f)}function CR(){var s=0,l=0;if(o[8056]|0||(V9(10932),tr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V9(10932)}return 10932}function MMe(s){return s=s|0,s|0}function UMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=CR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(K9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(_Me(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function K9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function _Me(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=HMe(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,qMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,K9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,jMe(s,d),GMe(d),C=k;return}}function HMe(s){return s=s|0,536870911}function qMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function jMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function GMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function V9(s){s=s|0,KMe(s)}function YMe(s){s=s|0,WMe(s+24|0)}function WMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function KMe(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,7,l,VMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VMe(){return 1860}function JMe(s,l,c){return s=s|0,l=l|0,c=c|0,XMe(n[(zMe(s)|0)>>2]|0,l,c)|0}function zMe(s){return s=s|0,(n[(CR()|0)+24>>2]|0)+(s<<3)|0}function XMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0;return f=C,C=C+32|0,B=f+12|0,m=f+8|0,k=f,Q=f+16|0,d=f+4|0,ZMe(Q,l),$Me(k,Q,l),Dp(d,c),c=Sp(d,c)|0,n[B>>2]=n[k>>2],Hw[s&15](m,B,c),c=e4e(m)|0,GA(m),Pp(d),C=f,c|0}function ZMe(s,l){s=s|0,l=l|0}function $Me(s,l,c){s=s|0,l=l|0,c=c|0,t4e(s,c)}function e4e(s){return s=s|0,da(s)|0}function t4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=C,C=C+16|0,c=d,f=l,f&1?(r4e(c,0),ii(f|0,c|0)|0,n4e(s,c),i4e(c)):n[s>>2]=n[l>>2],C=d}function r4e(s,l){s=s|0,l=l|0,XG(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function n4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function i4e(s){s=s|0,o[s+8>>0]=0}function s4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=wR()|0,s=o4e(c)|0,hn(m,l,d,s,a4e(c,f)|0,f)}function wR(){var s=0,l=0;if(o[8064]|0||(z9(10968),tr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(Tr(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z9(10968)}return 10968}function o4e(s){return s=s|0,s|0}function a4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=wR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(J9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(l4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function J9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function l4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=c4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,u4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,J9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,A4e(s,d),f4e(d),C=k;return}}function c4e(s){return s=s|0,536870911}function u4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function A4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function f4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function z9(s){s=s|0,g4e(s)}function p4e(s){s=s|0,h4e(s+24|0)}function h4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function g4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,1,l,d4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function d4e(){return 1872}function m4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,E4e(n[(y4e(s)|0)>>2]|0,l,c,f,d,m)}function y4e(s){return s=s|0,(n[(wR()|0)+24>>2]|0)+(s<<3)|0}function E4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0;B=C,C=C+32|0,k=B+16|0,Q=B+12|0,M=B+8|0,O=B+4|0,j=B,Dp(k,l),l=Sp(k,l)|0,Dp(Q,c),c=Sp(Q,c)|0,Dp(M,f),f=Sp(M,f)|0,Dp(O,d),d=Sp(O,d)|0,Dp(j,m),m=Sp(j,m)|0,y7[s&1](l,c,f,d,m),Pp(j),Pp(O),Pp(M),Pp(Q),Pp(k),C=B}function C4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=IR()|0,s=w4e(c)|0,hn(m,l,d,s,I4e(c,f)|0,f)}function IR(){var s=0,l=0;if(o[8072]|0||(Z9(11004),tr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(Tr(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Z9(11004)}return 11004}function w4e(s){return s=s|0,s|0}function I4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,k=0,Q=0;return k=C,C=C+16|0,d=k,m=k+4|0,n[d>>2]=s,Q=IR()|0,B=Q+24|0,l=gr(l,4)|0,n[m>>2]=l,c=Q+28|0,f=n[c>>2]|0,f>>>0<(n[Q+32>>2]|0)>>>0?(X9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(B4e(B,d,m),l=n[c>>2]|0),C=k,(l-(n[B>>2]|0)>>3)+-1|0}function X9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function B4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0;if(k=C,C=C+32|0,d=k,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=v4e(s)|0,f>>>0<B>>>0)zr(s);else{Q=n[s>>2]|0,O=(n[s+8>>2]|0)-Q|0,M=O>>2,D4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-Q>>3,s+8|0),B=d+8|0,X9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(s,d),P4e(d),C=k;return}}function v4e(s){return s=s|0,536870911}function D4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Kt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Dr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function P4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&gt(s)}function Z9(s){s=s|0,k4e(s)}function b4e(s){s=s|0,x4e(s+24|0)}function x4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function k4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,1,12,l,Q4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Q4e(){return 1896}function F4e(s,l,c){s=s|0,l=l|0,c=c|0,T4e(n[(R4e(s)|0)>>2]|0,l,c)}function R4e(s){return s=s|0,(n[(IR()|0)+24>>2]|0)+(s<<3)|0}function T4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=C,C=C+16|0,m=f+4|0,d=f,N4e(m,l),l=L4e(m,l)|0,Dp(d,c),c=Sp(d,c)|0,rf[s&31](l,c),Pp(d),C=f}function N4e(s,l){s=s|0,l=l|0}function L4e(s,l){return s=s|0,l=l|0,O4e(l)|0}function O4e(s){return s=s|0,s|0}function M4e(){var s=0;return o[8080]|0||($9(11040),tr(70,11040,U|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),Tr(11040)|0||$9(11040),11040}function $9(s){s=s|0,H4e(s),Qg(s,71)}function U4e(s){s=s|0,_4e(s+24|0)}function _4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),gt(c))}function H4e(s){s=s|0;var l=0;l=Kr()|0,Vr(s,5,7,l,Y4e()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function q4e(s){s=s|0,j4e(s)}function j4e(s){s=s|0,G4e(s)}function G4e(s){s=s|0,o[s+8>>0]=1}function Y4e(){return 1936}function W4e(){return K4e()|0}function K4e(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=C,C=C+16|0,d=l+4|0,B=l,c=Wa(8)|0,s=c,m=s+4|0,n[m>>2]=Kt(1)|0,f=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],V4e(f,m,d),n[c>>2]=f,C=l,s|0}function V4e(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Kt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function J4e(s){s=s|0,zm(s),gt(s)}function z4e(s){s=s|0,s=n[s+12>>2]|0,s|0&&gt(s)}function X4e(s){s=s|0,gt(s)}function Z4e(){var s=0;return o[8088]|0||(sUe(11076),tr(25,11076,U|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function $4e(s,l){s=s|0,l=l|0,n[s>>2]=eUe()|0,n[s+4>>2]=tUe()|0,n[s+12>>2]=l,n[s+8>>2]=rUe()|0,n[s+32>>2]=10}function eUe(){return 11745}function tUe(){return 1940}function rUe(){return aD()|0}function nUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(bp(f,896)|0)==512?c|0&&(iUe(c),gt(c)):l|0&&gt(l)}function iUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&kp(s)}function sUe(s){s=s|0,vp(s)}function bc(s,l){s=s|0,l=l|0,n[s>>2]=l}function BR(s){return s=s|0,n[s>>2]|0}function oUe(s){return s=s|0,o[n[s>>2]>>0]|0}function aUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=C,C=C+16|0,f=c,n[f>>2]=n[s>>2],lUe(l,f)|0,C=c}function lUe(s,l){s=s|0,l=l|0;var c=0;return c=cUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function cUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=C,C=C+16|0,f=c,Ka(f),s=da(s)|0,l=uUe(s,n[l>>2]|0)|0,Va(f),C=c,l|0}function Ka(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function uUe(s,l){s=s|0,l=l|0;var c=0;return c=Sl(AUe()|0)|0,Qn(0,c|0,s|0,dR(l)|0)|0}function Va(s){s=s|0,q9(n[s>>2]|0,n[s+4>>2]|0)}function AUe(){var s=0;return o[8096]|0||(fUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function fUe(s){s=s|0,Pl(s,pUe()|0,1)}function pUe(){return 1948}function hUe(){gUe()}function gUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;if(Me=C,C=C+16|0,O=Me+4|0,j=Me,Ni(65536,10804,n[2702]|0,10812),c=B9()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;uc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=v9()|0,l=n[s>>2]|0,l|0)do uu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);uu(dUe()|0,5167),M=Ym()|0,s=n[M>>2]|0;e:do if(s|0){do mUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){Q=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(yUe(d)|0);)if(n[j>>2]=Q,n[O>>2]=n[j>>2],EUe(M,O)|0,!s)break e;if(CUe(d),Q=n[Q>>2]|0,l=e7(d)|0,m=Hi()|0,B=C,C=C+((1*(l<<2)|0)+15&-16)|0,k=C,C=C+((1*(l<<2)|0)+15&-16)|0,l=n[(L9(d)|0)>>2]|0,l|0)for(c=B,f=k;n[c>>2]=n[(Wm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Qe=Wm(d)|0,l=wUe(d)|0,c=e7(d)|0,f=IUe(d)|0,Au(Qe|0,l|0,B|0,k|0,c|0,f|0,uR(d)|0),_i(m|0)}while((s|0)!=0)}}while(0);if(s=n[(AR()|0)>>2]|0,s|0)do Qe=s+4|0,M=fR(Qe)|0,d=Ow(M)|0,m=Nw(M)|0,B=(Lw(M)|0)+1|0,k=fD(M)|0,Q=t7(Qe)|0,M=Tr(M)|0,O=cD(Qe)|0,j=vR(Qe)|0,El(0,d|0,m|0,B|0,k|0,Q|0,M|0,O|0,j|0,DR(Qe)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Ym()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Wm(l)|0)>>2]|0,Ge=n[(O9(l)|0)>>2]|0,Ge|0)){c=Ge;do{l=c+4|0,f=fR(l)|0;r:do if(f|0)switch(Tr(f)|0){case 0:break t;case 4:case 3:case 2:{k=Ow(f)|0,Q=Nw(f)|0,M=(Lw(f)|0)+1|0,O=fD(f)|0,j=Tr(f)|0,Qe=cD(l)|0,El(se|0,k|0,Q|0,M|0,O|0,0,j|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 1:{B=Ow(f)|0,k=Nw(f)|0,Q=(Lw(f)|0)+1|0,M=fD(f)|0,O=t7(l)|0,j=Tr(f)|0,Qe=cD(l)|0,El(se|0,B|0,k|0,Q|0,M|0,O|0,j|0,Qe|0,vR(l)|0,DR(l)|0);break r}case 5:{M=Ow(f)|0,O=Nw(f)|0,j=(Lw(f)|0)+1|0,Qe=fD(f)|0,El(se|0,M|0,O|0,j|0,Qe|0,BUe(f)|0,Tr(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),C=Me}function dUe(){return 11703}function mUe(s){s=s|0,o[s+40>>0]=0}function yUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function EUe(s,l){return s=s|0,l=l|0,l=vUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],gt(s),n[l>>2]|0}function CUe(s){s=s|0,o[s+40>>0]=1}function e7(s){return s=s|0,n[s+20>>2]|0}function wUe(s){return s=s|0,n[s+8>>2]|0}function IUe(s){return s=s|0,n[s+32>>2]|0}function fD(s){return s=s|0,n[s+4>>2]|0}function t7(s){return s=s|0,n[s+4>>2]|0}function vR(s){return s=s|0,n[s+8>>2]|0}function DR(s){return s=s|0,n[s+16>>2]|0}function BUe(s){return s=s|0,n[s+20>>2]|0}function vUe(s){return s=s|0,n[s>>2]|0}function pD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0;Lt=C,C=C+16|0,se=Lt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,j=n[2783]|0,c=j>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=j&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),je=l<<3,n[f+4>>2]=je|3,je=f+je+4|0,n[je>>2]=n[je>>2]|1,je=d,C=Lt,je|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=j&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=j),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,je=B,C=Lt,je|0;if(k=n[2784]|0,k){if(c=(k&0-k)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,Q=c>>>2&4,c=c>>>Q,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|Q|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)Q=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,Q=B>>>0<c>>>0,c=Q?B:c,s=Q?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);Q=s,m=c}if(B=Q+M|0,Q>>>0<B>>>0){d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[Q+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[Q+28>>2]|0,s=11436+(l<<2)|0,(Q|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[Q+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[Q+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(je=m+M|0,n[Q+4>>2]=je|3,je=Q+je+4|0,n[je>>2]=n[je>>2]|1):(n[Q+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,j&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=j|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),je=Q+8|0,C=Lt,je|0}else j=M}else j=M}else j=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,Q=n[2784]|0,Q){f=0-M|0,s=s>>>8,s?M>>>0>16777215?k=31:(j=(s+1048320|0)>>>16&8,Ue=s<<j,O=(Ue+520192|0)>>>16&4,Ue=Ue<<O,k=(Ue+245760|0)>>>16&2,k=14-(O|j|k)+(Ue<<k>>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,c=n[11436+(k<<2)>>2]|0;e:do if(!c)c=0,s=0,Ue=57;else for(s=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,Ue=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,Ue=57;break}else B=B<<((d^1)&1)}while(0);if((Ue|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<k,s=Q&(s|0-s),!s){j=M;break}j=(s&0-s)+-1|0,B=j>>>12&16,j=j>>>B,m=j>>>5&8,j=j>>>m,k=j>>>2&4,j=j>>>k,O=j>>>1&2,j=j>>>O,c=j>>>1&1,s=0,c=n[11436+((m|B|k|O|c)+(j>>>c)<<2)>>2]|0}c?(d=c,Ue=61):(k=s,B=f)}if((Ue|0)==61)for(;;)if(Ue=0,c=(n[d+4>>2]&-8)-M|0,j=c>>>0<f>>>0,c=j?c:f,s=j?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,Ue=61;else{k=s,B=c;break}if((k|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return je=0,C=Lt,je|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else je=n[k+8>>2]|0,n[je+12>>2]=l,n[l+8>>2]=je;while(0);do if(d){if(s=n[k+28>>2]|0,c=11436+(s<<2)|0,(k|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=Q&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){f=Q;break}n[l+24>>2]=d,s=n[k+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[k+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=Q}else f=Q;while(0);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,l=(je+245760|0)>>>16&2,l=14-(lt|Ue|l)+(je<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){Ue=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=96;break}}if((Ue|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((Ue|0)==97){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=m,n[Ue>>2]=m,n[m+8>>2]=je,n[m+12>>2]=c,n[m+24>>2]=0;break}}else je=B+M|0,n[k+4>>2]=je|3,je=k+je+4|0,n[je>>2]=n[je>>2]|1;while(0);return je=k+8|0,C=Lt,je|0}else j=M}else j=M;else j=-1;while(0);if(c=n[2785]|0,c>>>0>=j>>>0)return l=c-j|0,s=n[2788]|0,l>>>0>15?(je=s+j|0,n[2788]=je,n[2785]=l,n[je+4>>2]=l|1,n[je+l>>2]=l,n[s+4>>2]=j|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,je=s+c+4|0,n[je>>2]=n[je>>2]|1),je=s+8|0,C=Lt,je|0;if(B=n[2786]|0,B>>>0>j>>>0)return lt=B-j|0,n[2786]=lt,je=n[2789]|0,Ue=je+j|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[je+4>>2]=j|3,je=je+8|0,C=Lt,je|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),k=j+48|0,Q=j+47|0,m=s+Q|0,d=0-s|0,M=m&d,M>>>0<=j>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return je=0,C=Lt,je|0;e:do if(n[2894]&4)l=0,Ue=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Qe=f+4|0,(s+(n[Qe>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{Ue=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=Qp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Qe>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,Ue=135;break e}}else f=s,Ue=126;else l=0}else Ue=118;while(0);do if((Ue|0)==118)if(c=Qp(0)|0,(c|0)!=-1&&(l=c,Ge=n[2902]|0,Me=Ge+-1|0,l=((Me&l|0)==0?0:(Me+l&0-Ge)-l|0)+M|0,Ge=n[2891]|0,Me=l+Ge|0,l>>>0>j>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Me>>>0<=Ge>>>0|Me>>>0>Qe>>>0){l=0;break}if(s=Qp(l|0)|0,(s|0)==(c|0)){B=l,m=c,Ue=135;break e}else f=s,Ue=126}else l=0;while(0);do if((Ue|0)==126){if(c=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,Ue=135;break e}if(s=n[2903]|0,s=Q-l+s&0-s,s>>>0>=2147483647){B=l,m=f,Ue=135;break e}if((Qp(s|0)|0)==-1){Qp(c|0)|0,l=0;break}else{B=s+l|0,m=f,Ue=135;break e}}while(0);n[2894]=n[2894]|4,Ue=133}while(0);if((Ue|0)==133&&M>>>0<2147483647&&(lt=Qp(M|0)|0,Qe=Qp(0)|0,et=Qe-lt|0,Xe=et>>>0>(j+40|0)>>>0,!((lt|0)==-1|Xe^1|lt>>>0<Qe>>>0&((lt|0)!=-1&(Qe|0)!=-1)^1))&&(B=Xe?et:l,m=lt,Ue=135),(Ue|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),Q=n[2789]|0;do if(Q){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){Ue=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((Ue|0)==145&&(n[l+12>>2]&8|0)==0&&Q>>>0<m>>>0&Q>>>0>=s>>>0){n[c>>2]=f+B,je=Q+8|0,je=(je&7|0)==0?0:0-je&7,Ue=Q+je|0,je=(n[2786]|0)+(B-je)|0,n[2789]=Ue,n[2786]=je,n[Ue+4>>2]=je|1,n[Ue+je+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){Ue=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((Ue|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+j|0,k=l-O-j|0,n[O+4>>2]=j|3;do if((l|0)!=(Q|0)){if((l|0)==(n[2788]|0)){je=(n[2785]|0)+k|0,n[2785]=je,n[2788]=M,n[M+4>>2]=je|1,n[M+je>>2]=je;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else je=n[l+8>>2]|0,n[je+12>>2]=s,n[s+8>>2]=je;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,l=(je+245760|0)>>>16&2,l=14-(lt|Ue|l)+(je<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){Ue=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=193;break}}if((Ue|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((Ue|0)==194){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=M,n[Ue>>2]=M,n[M+8>>2]=je,n[M+12>>2]=c,n[M+24>>2]=0;break}}else je=(n[2786]|0)+k|0,n[2786]=je,n[2789]=M,n[M+4>>2]=je|1;while(0);return je=O+8|0,C=Lt,je|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=Q>>>0&&(je=s+(n[l+4>>2]|0)|0,je>>>0>Q>>>0));)l=n[l+8>>2]|0;d=je+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=Q+16|0,s=s>>>0<d>>>0?Q:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,Ue=m+c|0,c=B+-40-c|0,n[2789]=Ue,n[2786]=c,n[Ue+4>>2]=c|1,n[Ue+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=s+24|0;do Ue=l,l=l+4|0,n[l>>2]=7;while((Ue+8|0)>>>0<je>>>0);if((s|0)!=(Q|0)){if(m=s-Q|0,n[c>>2]=n[c>>2]&-2,n[Q+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=Q,n[l+12>>2]=Q,n[Q+8>>2]=l,n[Q+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(Ue=(l+1048320|0)>>>16&8,je=l<<Ue,lt=(je+520192|0)>>>16&4,je=je<<lt,c=(je+245760|0)>>>16&2,c=14-(lt|Ue|c)+(je<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[Q+28>>2]=c,n[Q+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){Ue=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{Ue=215;break}}if((Ue|0)==215){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((Ue|0)==216){Ue=c+8|0,je=n[Ue>>2]|0,n[je+12>>2]=Q,n[Ue>>2]=Q,n[Q+8>>2]=je,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}}else{je=n[2787]|0,(je|0)==0|m>>>0<je>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do je=11172+(l<<1<<2)|0,n[je+12>>2]=je,n[je+8>>2]=je,l=l+1|0;while((l|0)!=32);je=m+8|0,je=(je&7|0)==0?0:0-je&7,Ue=m+je|0,je=B+-40-je|0,n[2789]=Ue,n[2786]=je,n[Ue+4>>2]=je|1,n[Ue+je+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>j>>>0)return lt=l-j|0,n[2786]=lt,je=n[2789]|0,Ue=je+j|0,n[2789]=Ue,n[Ue+4>>2]=lt|1,n[je+4>>2]=j|3,je=je+8|0,C=Lt,je|0}return n[(Vm()|0)>>2]=12,je=0,C=Lt,je|0}function hD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,k=0,Q=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,Q=c+l|0;do if(s&1)k=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=Q+4|0,l=n[s>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),k=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,k=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=s,n[s+8>>2]=k;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){k=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(0);if(!(B>>>0>=Q>>>0)&&(s=Q+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(Q|0)==(n[2789]|0)){if(Q=(n[2786]|0)+l|0,n[2786]=Q,n[2789]=k,n[k+4>>2]=Q|1,(k|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((Q|0)==(s|0)){Q=(n[2785]|0)+l|0,n[2785]=Q,n[2788]=B,n[k+4>>2]=Q|1,n[B+Q>>2]=Q;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[Q+8>>2]|0,s=n[Q+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[Q+24>>2]|0,s=n[Q+12>>2]|0;do if((s|0)==(Q|0)){if(c=Q+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[Q+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[Q+28>>2]|0,l=11436+(s<<2)|0,(Q|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(Q|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=Q+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=k,n[s+12>>2]=k,n[k+8>>2]=s,n[k+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,Q=s<<B,m=(Q+520192|0)>>>16&4,Q=Q<<m,s=(Q+245760|0)>>>16&2,s=14-(m|B|s)+(Q<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[k+28>>2]=s,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((s|0)==73){B=c+8|0,Q=n[B>>2]|0,n[Q+12>>2]=k,n[B>>2]=k,n[k+8>>2]=Q,n[k+12>>2]=c,n[k+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;while(0);if(Q=(n[2791]|0)+-1|0,n[2791]=Q,!Q)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function DUe(){return 11628}function SUe(s){s=s|0;var l=0,c=0;return l=C,C=C+16|0,c=l,n[c>>2]=xUe(n[s+60>>2]|0)|0,s=gD(hc(6,c|0)|0)|0,C=l,s|0}function r7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0;j=C,C=C+48|0,M=j+16|0,m=j,d=j+32|0,k=s+28|0,f=n[k>>2]|0,n[d>>2]=f,Q=s+20|0,f=(n[Q>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=gD(Li(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,Ge=n[d+4>>2]|0,se=m>>>0>Ge>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,Ge=m-(se?Ge:0)|0,n[d>>2]=(n[d>>2]|0)+Ge,se=d+4|0,n[se>>2]=(n[se>>2]|0)-Ge,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=gD(Li(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[k>>2]=0,n[Q>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(Ge=n[s+44>>2]|0,n[s+16>>2]=Ge+(n[s+48>>2]|0),n[k>>2]=Ge,n[Q>>2]=Ge),C=j,c|0}function PUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=C,C=C+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(gD(sa(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,C=d,s|0}function gD(s){return s=s|0,s>>>0>4294963200&&(n[(Vm()|0)>>2]=0-s,s=-1),s|0}function Vm(){return(bUe()|0)+64|0}function bUe(){return SR()|0}function SR(){return 2084}function xUe(s){return s=s|0,s|0}function kUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=C,C=C+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,fu(54,f|0)|0)&&(o[s+75>>0]=-1),f=r7(s,l,c)|0,C=d,f|0}function n7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function QUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function i7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0;Qe=C,C=C+224|0,O=Qe+120|0,j=Qe+80|0,Ge=Qe,Me=Qe+136|0,f=j,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(PR(0,l,O,Ge,j)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=FUe(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=PR(s,l,O,Ge,j)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Me,B=s+28|0,n[B>>2]=Me,k=s+20|0,n[k>>2]=Me,n[f>>2]=80,Q=s+16|0,n[Q>>2]=Me+80,c=PR(s,l,O,Ge,j)|0,m&&(ED[n[s+36>>2]&7](s,0,0)|0,c=(n[k>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[Q>>2]=0,n[B>>2]=0,n[k>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&RUe(s),c=(f&32|0)==0?c:-1),C=Qe,c|0}function PR(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0;ir=C,C=C+64|0,or=ir+16|0,Xt=ir,Lt=ir+24|0,Sr=ir+8|0,Nr=ir+20|0,n[or>>2]=l,lt=(s|0)!=0,Ue=Lt+40|0,je=Ue,Lt=Lt+39|0,Mr=Sr+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Vm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)k=l;else{Xe=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Xe=9;break t}case 0:{B=k;break t}default:}et=k+1|0,n[or>>2]=et,B=o[et>>0]|0,k=et}t:do if((Xe|0)==9)for(;;){if(Xe=0,(o[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[or>>2]=k,(o[k>>0]|0)==37)Xe=9;else break}while(0);if(B=B-l|0,lt&&ss(s,l,B),B|0){l=k;continue}Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10?(et=(o[k+2>>0]|0)==36,Qe=et?B:-1,O=et?1:O,Q=et?k+3|0:Q):Qe=-1,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,j=B;;){if(B=1<<k,!(B&75913)){B=j;break t}if(M=B|M,Q=Q+1|0,n[or>>2]=Q,B=o[Q>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;j=B}else M=0;while(0);if(B<<24>>24==42){if(k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10&&(o[Q+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[k>>0]|0)+-48<<3)>>2]|0,O=1,Q=Q+3|0;else{if(O|0){m=-1;break}lt?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,Q=k):(B=0,O=0,Q=k)}n[or>>2]=Q,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=s7(or)|0,(B|0)<0){m=-1;break}Q=n[or>>2]|0}do if((o[Q>>0]|0)==46){if((o[Q+1>>0]|0)!=42){n[or>>2]=Q+1,k=s7(or)|0,Q=n[or>>2]|0;break}if(j=Q+2|0,k=(o[j>>0]|0)+-48|0,k>>>0<10&&(o[Q+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[f+((o[j>>0]|0)+-48<<3)>>2]|0,Q=Q+4|0,n[or>>2]=Q;break}if(O|0){m=-1;break e}lt?(et=(n[c>>2]|0)+(4-1)&~(4-1),k=n[et>>2]|0,n[c>>2]=et+4):k=0,n[or>>2]=j,Q=j}else k=-1;while(0);for(Me=0;;){if(((o[Q>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=Q+1|0,n[or>>2]=et,j=o[(o[Q>>0]|0)+-65+(5178+(Me*58|0))>>0]|0,se=j&255,(se+-1|0)>>>0<8)Me=se,Q=et;else break}if(!(j<<24>>24)){m=-1;break}Ge=(Qe|0)>-1;do if(j<<24>>24==19)if(Ge){m=-1;break e}else Xe=49;else{if(Ge){n[d+(Qe<<2)>>2]=se,Ge=f+(Qe<<3)|0,Qe=n[Ge+4>>2]|0,Xe=Xt,n[Xe>>2]=n[Ge>>2],n[Xe+4>>2]=Qe,Xe=49;break}if(!lt){m=0;break e}o7(Xt,se,c)}while(0);if((Xe|0)==49&&(Xe=0,!lt)){B=0,l=et;continue}Q=o[Q>>0]|0,Q=(Me|0)!=0&(Q&15|0)==3?Q&-33:Q,Ge=M&-65537,Qe=(M&8192|0)==0?M:Ge;t:do switch(Q|0){case 110:switch((Me&255)<<24>>24){case 0:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Xt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Xt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Xt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Xt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{Q=120,k=k>>>0>8?k:8,l=Qe|8,Xe=61;break}case 88:case 120:{l=Qe,Xe=61;break}case 111:{Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,se=NUe(l,Q,Ue)|0,Ge=je-se|0,M=0,j=5642,k=(Qe&8|0)==0|(k|0)>(Ge|0)?k:Ge+1|0,Ge=Qe,Xe=67;break}case 105:case 100:if(Q=Xt,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,(Q|0)<0){l=dD(0,0,l|0,Q|0)|0,Q=Se,M=Xt,n[M>>2]=l,n[M+4>>2]=Q,M=1,j=5642,Xe=66;break t}else{M=(Qe&2049|0)!=0&1,j=(Qe&2048|0)==0?(Qe&1|0)==0?5642:5644:5643,Xe=66;break t}case 117:{Q=Xt,M=0,j=5642,l=n[Q>>2]|0,Q=n[Q+4>>2]|0,Xe=66;break}case 99:{o[Lt>>0]=n[Xt>>2],l=Lt,M=0,j=5642,se=Ue,Q=1,k=Ge;break}case 109:{Q=LUe(n[(Vm()|0)>>2]|0)|0,Xe=71;break}case 115:{Q=n[Xt>>2]|0,Q=Q|0?Q:5652,Xe=71;break}case 67:{n[Sr>>2]=n[Xt>>2],n[Mr>>2]=0,n[Xt>>2]=Sr,se=-1,Q=Sr,Xe=75;break}case 83:{l=n[Xt>>2]|0,k?(se=k,Q=l,Xe=75):(Bs(s,32,B,0,Qe),l=0,Xe=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=MUe(s,+E[Xt>>3],B,k,Qe,Q)|0,l=et;continue e}default:M=0,j=5642,se=Ue,Q=k,k=Qe}while(0);t:do if((Xe|0)==61)Qe=Xt,Me=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,se=TUe(Me,Qe,Ue,Q&32)|0,j=(l&8|0)==0|(Me|0)==0&(Qe|0)==0,M=j?0:2,j=j?5642:5642+(Q>>4)|0,Ge=l,l=Me,Q=Qe,Xe=67;else if((Xe|0)==66)se=Jm(l,Q,Ue)|0,Ge=Qe,Xe=67;else if((Xe|0)==71)Xe=0,Qe=OUe(Q,0,k)|0,Me=(Qe|0)==0,l=Q,M=0,j=5642,se=Me?Q+k|0:Qe,Q=Me?k:Qe-Q|0,k=Ge;else if((Xe|0)==75){for(Xe=0,j=Q,l=0,k=0;M=n[j>>2]|0,!(!M||(k=a7(Nr,M)|0,(k|0)<0|k>>>0>(se-l|0)>>>0));)if(l=k+l|0,se>>>0>l>>>0)j=j+4|0;else break;if((k|0)<0){m=-1;break e}if(Bs(s,32,B,l,Qe),!l)l=0,Xe=84;else for(M=0;;){if(k=n[Q>>2]|0,!k){Xe=84;break t}if(k=a7(Nr,k)|0,M=k+M|0,(M|0)>(l|0)){Xe=84;break t}if(ss(s,Nr,k),M>>>0>=l>>>0){Xe=84;break}else Q=Q+4|0}}while(0);if((Xe|0)==67)Xe=0,Q=(l|0)!=0|(Q|0)!=0,Qe=(k|0)!=0|Q,Q=((Q^1)&1)+(je-se)|0,l=Qe?se:Ue,se=Ue,Q=Qe?(k|0)>(Q|0)?k:Q:k,k=(k|0)>-1?Ge&-65537:Ge;else if((Xe|0)==84){Xe=0,Bs(s,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Me=se-l|0,Ge=(Q|0)<(Me|0)?Me:Q,Qe=Ge+M|0,B=(B|0)<(Qe|0)?Qe:B,Bs(s,32,B,Qe,k),ss(s,j,M),Bs(s,48,B,Qe,k^65536),Bs(s,48,Ge,Me,0),ss(s,l,Me),Bs(s,32,B,Qe,k^8192),l=et}e:do if((Xe|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(o7(f+(m<<3)|0,l,c),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return C=ir,m|0}function FUe(s){return s=s|0,0}function RUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||KUe(l,c,s)|0}function s7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function o7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+E[d>>3],n[c>>2]=d+8,E[s>>3]=m;break e}default:break e}while(0);while(0)}function TUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=mD(s|0,l|0,4)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function NUe(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=mD(s|0,l|0,3)|0,l=Se;while(!((s|0)==0&(l|0)==0));return c|0}function Jm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=QR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=kR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Se;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function LUe(s){return s=s|0,jUe(s,n[(qUe()|0)+188>>2]|0)|0}function OUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=qe(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Bs(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=C,C=C+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,Xm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}C=B}function a7(s,l){return s=s|0,l=l|0,s?s=_Ue(s,l,0)|0:s=0,s|0}function MUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0,Qe=0,et=0,Xe=0,lt=0,Ue=0,je=0,Lt=0,Mr=0,or=0,Xt=0,Sr=0,Nr=0,ir=0,xn=0;xn=C,C=C+560|0,Q=xn+8|0,et=xn,ir=xn+524|0,Nr=ir,M=xn+512|0,n[et>>2]=0,Sr=M+12|0,l7(l)|0,(Se|0)<0?(l=-l,or=1,Mr=5659):(or=(d&2049|0)!=0&1,Mr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),l7(l)|0,Xt=Se&2146435072;do if(Xt>>>0<2146435072|(Xt|0)==2146435072&0<0){if(Ge=+UUe(l,et)*2,B=Ge!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),lt=m|32,(lt|0)==97){Me=m&32,se=(Me|0)==0?Mr:Mr+9|0,j=or|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=Ge;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-Ge-l));break}else{l=Ge+l-l;break}}while(0);k=n[et>>2]|0,B=(k|0)<0?0-k|0:k,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,(B|0)==(Sr|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(k>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,Q=(d&8|0)==0,B=ir;do Xt=~~l,k=B+1|0,o[B>>0]=u[5694+Xt>>0]|Me,l=(l-+(Xt|0))*16,(k-Nr|0)==1&&!(Q&(M&l==0))?(o[k>>0]=46,B=B+2|0):B=k;while(l!=0);Xt=B-Nr|0,Nr=Sr-O|0,Sr=(f|0)!=0&(Xt+-2|0)<(f|0)?f+2|0:Xt,B=Nr+j+Sr|0,Bs(s,32,c,B,d),ss(s,se,j),Bs(s,48,c,B,d^65536),ss(s,ir,Xt),Bs(s,48,Sr-Xt|0,0,0),ss(s,O,Nr),Bs(s,32,c,B,d^8192);break}k=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=Ge*268435456):(l=Ge,B=n[et>>2]|0),Xt=(B|0)<0?Q:Q+288|0,Q=Xt;do je=~~l>>>0,n[Q>>2]=je,Q=Q+4|0,l=(l-+(je>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Xt,j=Q;;){if(O=(B|0)<29?B:29,B=j+-4|0,B>>>0>=M>>>0){Q=0;do Ue=h7(n[B>>2]|0,0,O|0)|0,Ue=xR(Ue|0,Se|0,Q|0,0)|0,je=Se,Xe=QR(Ue|0,je|0,1e9,0)|0,n[B>>2]=Xe,Q=kR(Ue|0,je|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);Q&&(M=M+-4|0,n[M>>2]=Q)}for(Q=j;!(Q>>>0<=M>>>0);)if(B=Q+-4|0,!(n[B>>2]|0))Q=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)j=Q;else break}else M=Xt;if((B|0)<0){f=((k+25|0)/9|0)+1|0,Qe=(lt|0)==102;do{if(Me=0-B|0,Me=(Me|0)<9?Me:9,M>>>0<Q>>>0){O=(1<<Me)+-1|0,j=1e9>>>Me,se=0,B=M;do je=n[B>>2]|0,n[B>>2]=(je>>>Me)+se,se=qe(je&O,j)|0,B=B+4|0;while(B>>>0<Q>>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[Q>>2]=se,M=B,B=Q+4|0):(M=B,B=Q)}else M=(n[M>>2]|0)==0?M+4|0:M,B=Q;Q=Qe?Xt:M,Q=(B-Q>>2|0)>(f|0)?Q+(f<<2)|0:B,B=(n[et>>2]|0)+Me|0,n[et>>2]=B}while((B|0)<0);B=M,f=Q}else B=M,f=Q;if(je=Xt,B>>>0<f>>>0){if(Q=(je-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,Q=Q+1|0;while(O>>>0>=M>>>0)}}else Q=0;if(Qe=(lt|0)==103,Xe=(k|0)!=0,M=k-((lt|0)!=102?Q:0)+((Xe&Qe)<<31>>31)|0,(M|0)<(((f-je>>2)*9|0)+-9|0)){if(M=M+9216|0,Me=Xt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(j=n[Me>>2]|0,se=(j>>>0)%(O>>>0)|0,M=(Me+4|0)==(f|0),M&(se|0)==0)M=Me;else if(Ge=(((j>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,Ue=(O|0)/2|0,l=se>>>0<Ue>>>0?.5:M&(se|0)==(Ue|0)?1:1.5,or&&(Ue=(o[Mr>>0]|0)==45,l=Ue?-l:l,Ge=Ue?-Ge:Ge),M=j-se|0,n[Me>>2]=M,Ge+l!=Ge){if(Ue=M+O|0,n[Me>>2]=Ue,Ue>>>0>999999999)for(Q=Me;M=Q+-4|0,n[Q>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),Ue=(n[M>>2]|0)+1|0,n[M>>2]=Ue,Ue>>>0>999999999;)Q=M;else M=Me;if(Q=(je-B>>2)*9|0,j=n[B>>2]|0,j>>>0>=10){O=10;do O=O*10|0,Q=Q+1|0;while(j>>>0>=O>>>0)}}else M=Me;M=M+4|0,M=f>>>0>M>>>0?M:f,Ue=B}else M=f,Ue=B;for(lt=M;;){if(lt>>>0<=Ue>>>0){et=0;break}if(B=lt+-4|0,!(n[B>>2]|0))lt=B;else{et=1;break}}f=0-Q|0;do if(Qe)if(B=((Xe^1)&1)+k|0,(B|0)>(Q|0)&(Q|0)>-5?(O=m+-1|0,k=B+-1-Q|0):(O=m+-2|0,k=B+-1|0),B=d&8,B)Me=B;else{if(et&&(Lt=n[lt+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Lt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((lt-je>>2)*9|0)+-9|0,(O|32|0)==102){Me=B-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}else{Me=B+Q-M|0,Me=(Me|0)>0?Me:0,k=(k|0)<(Me|0)?k:Me,Me=0;break}}else O=m,Me=d&8;while(0);if(Qe=k|Me,j=(Qe|0)!=0&1,se=(O|32|0)==102,se)Xe=0,B=(Q|0)>0?Q:0;else{if(B=(Q|0)<0?f:Q,B=Jm(B,((B|0)<0)<<31>>31,Sr)|0,M=Sr,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(Q>>31&2)+43,B=B+-2|0,o[B>>0]=O,Xe=B,B=M-B|0}if(B=or+1+k+j+B|0,Bs(s,32,c,B,d),ss(s,Mr,or),Bs(s,48,c,B,d^65536),se){O=Ue>>>0>Xt>>>0?Xt:Ue,Me=ir+9|0,j=Me,se=ir+8|0,M=O;do{if(Q=Jm(n[M>>2]|0,0,Me)|0,(M|0)==(O|0))(Q|0)==(Me|0)&&(o[se>>0]=48,Q=se);else if(Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}ss(s,Q,j-Q|0),M=M+4|0}while(M>>>0<=Xt>>>0);if(Qe|0&&ss(s,5710,1),M>>>0<lt>>>0&(k|0)>0)for(;;){if(Q=Jm(n[M>>2]|0,0,Me)|0,Q>>>0>ir>>>0){Xm(ir|0,48,Q-Nr|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}if(ss(s,Q,(k|0)<9?k:9),M=M+4|0,Q=k+-9|0,M>>>0<lt>>>0&(k|0)>9)k=Q;else{k=Q;break}}Bs(s,48,k+9|0,9,0)}else{if(Qe=et?lt:Ue+4|0,(k|0)>-1){et=ir+9|0,Me=(Me|0)==0,f=et,j=0-Nr|0,se=ir+8|0,O=Ue;do{Q=Jm(n[O>>2]|0,0,et)|0,(Q|0)==(et|0)&&(o[se>>0]=48,Q=se);do if((O|0)==(Ue|0)){if(M=Q+1|0,ss(s,Q,1),Me&(k|0)<1){Q=M;break}ss(s,5710,1),Q=M}else{if(Q>>>0<=ir>>>0)break;Xm(ir|0,48,Q+j|0)|0;do Q=Q+-1|0;while(Q>>>0>ir>>>0)}while(0);Nr=f-Q|0,ss(s,Q,(k|0)>(Nr|0)?Nr:k),k=k-Nr|0,O=O+4|0}while(O>>>0<Qe>>>0&(k|0)>-1)}Bs(s,48,k+18|0,18,0),ss(s,Xe,Sr-Xe|0)}Bs(s,32,c,B,d^8192)}else ir=(m&32|0)!=0,B=or+3|0,Bs(s,32,c,B,d&-65537),ss(s,Mr,or),ss(s,l!=l|!1?ir?5686:5690:ir?5678:5682,3),Bs(s,32,c,B,d^8192);while(0);return C=xn,((B|0)<(c|0)?c:B)|0}function l7(s){s=+s;var l=0;return E[v>>3]=s,l=n[v>>2]|0,Se=n[v+4>>2]|0,l|0}function UUe(s,l){return s=+s,l=l|0,+ +c7(s,l)}function c7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(E[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=mD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+c7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+E[v>>3]}return+s}function _Ue(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(HUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Vm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Vm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function HUe(){return SR()|0}function qUe(){return SR()|0}function jUe(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return GUe(c,n[l+20>>2]|0)|0}function GUe(s,l){return s=s|0,l=l|0,YUe(s,l)|0}function YUe(s,l){return s=s|0,l=l|0,l?l=WUe(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function WUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Rg(n[s+8>>2]|0,se)|0,f=Rg(n[s+12>>2]|0,se)|0,d=Rg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(j=l-(m<<2)|0,f>>>0<j>>>0&d>>>0<j>>>0)&&((d|f)&3|0)==0){for(j=f>>>2,O=d>>>2,M=0;;){if(k=m>>>1,Q=M+k|0,B=Q<<1,d=B+j|0,f=Rg(n[s+(d<<2)>>2]|0,se)|0,d=Rg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=n7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:Q,m=f?k:m-k|0}f=B+O|0,d=Rg(n[s+(f<<2)>>2]|0,se)|0,f=Rg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Rg(s,l){s=s|0,l=l|0;var c=0;return c=m7(s|0)|0,((l|0)==0?s:c)|0}function KUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,k=0;f=c+16|0,d=n[f>>2]|0,d?m=5:VUe(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(k=c+20|0,B=n[k>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=ED[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=ED[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[k>>2]|0}else m=0,d=s;while(0);Dr(f|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,f=m+l|0}while(0);return f|0}function VUe(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function _n(s,l){s=y(s),l=y(l);var c=0,f=0;c=u7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=u7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function u7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Tg(s,l){s=y(s),l=y(l);var c=0,f=0;c=A7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=A7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function A7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function bR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,k=0,Q=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),k=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=k>>>23&255,Q=m&-2147483648,d=k<<1;e:do if((d|0)!=0&&!((c|0)==255|((JUe(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=f-k|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-k|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|Q,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function JUe(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function zUe(s,l){return s=s|0,l=l|0,i7(n[582]|0,s,l)|0}function zr(s){s=s|0,Rt()}function zm(s){s=s|0}function XUe(s,l){return s=s|0,l=l|0,0}function ZUe(s){return s=s|0,(f7(s+4|0)|0)==-1?(tf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function f7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function kp(s){s=s|0,ZUe(s)|0&&$Ue(s)}function $Ue(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(f7(l)|0)!=-1||tf[n[(n[s>>2]|0)+16>>2]&127](s)}function Kt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=pD(l)|0,!(s|0);){if(s=t3e()|0,!s){s=0;break}P7[s&0]()}return s|0}function p7(s){return s=s|0,Kt(s)|0}function gt(s){s=s|0,hD(s)}function e3e(s){s=s|0,(o[s+11>>0]|0)<0&&gt(n[s>>2]|0)}function t3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function r3e(){}function dD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Se=f,s-c>>>0|0|0}function xR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Se=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function Xm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function h7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Se=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(Se=s<<c-32,0)}function mD(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Se=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(Se=0,l>>>c-32|0)}function Dr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return Ac(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function g7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function d7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,k=0,Q=0,M=0,O=0,j=0,se=0,Ge=0,Me=0;if(O=s,Q=l,M=Q,B=c,se=f,k=se,!M)return m=(d|0)!=0,k?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Se=se,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=31){j=m+1|0,k=31-m|0,l=m-31>>31,B=j,s=O>>>(j>>>0)&l|M<<k,l=M>>>(j>>>0)&l,m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,se=0,d=0,Se=se,d|0):(se=0,d=0,Se=se,d|0)}if(m=B-1|0,m&B|0){k=(P(B|0)|0)+33-(P(M|0)|0)|0,Me=64-k|0,j=32-k|0,Q=j>>31,Ge=k-32|0,l=Ge>>31,B=k,s=j-1>>31&M>>>(Ge>>>0)|(M<<j|O>>>(k>>>0))&l,l=l&M>>>(k>>>0),m=O<<Me&Q,k=(M<<Me|O>>>(Ge>>>0))&Q|O<<j&k-33>>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(Ge=Q|l&0,Me=s|0|0,Se=Ge,Me|0):(Me=g7(B|0)|0,Ge=M>>>(Me>>>0)|0,Me=M<<32-Me|O>>>(Me>>>0)|0,Se=Ge,Me|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ge=0,Me=(M>>>0)/(B>>>0)>>>0,Se=Ge,Me|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ge=0,Me=(M>>>0)/(k>>>0)>>>0,Se=Ge,Me|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),Ge=0,Me=M>>>((g7(k|0)|0)>>>0),Se=Ge,Me|0;if(m=(P(k|0)|0)-(P(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,s=M<<k|O>>>(l>>>0),l=M>>>(l>>>0),m=0,k=O<<k;break}return d?(n[d>>2]=s|0,n[d+4>>2]=Q|l&0,Ge=0,Me=0,Se=Ge,Me|0):(Ge=0,Me=0,Se=Ge,Me|0)}while(0);if(!B)M=k,Q=0,k=0;else{j=c|0|0,O=se|f&0,M=xR(j|0,O|0,-1,-1)|0,c=Se,Q=k,k=0;do f=Q,Q=m>>>31|Q<<1,m=k|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,dD(M|0,c|0,f|0,se|0)|0,Me=Se,Ge=Me>>31|((Me|0)<0?-1:0)<<1,k=Ge&1,s=dD(f|0,se|0,Ge&j|0,(((Me|0)<0?-1:0)>>31|((Me|0)<0?-1:0)<<1)&O|0)|0,l=Se,B=B-1|0;while((B|0)!=0);M=Q,Q=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),Ge=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|Q,Me=(m<<1|0>>>31)&-2|k,Se=Ge,Me|0}function kR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,d7(s,l,c,f,0)|0}function Qp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[I>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,DA(12),-1):(n[I>>2]=s,(s|0)>(Z()|0)&&(X()|0)==0?(n[I>>2]=l,DA(12),-1):l|0)}function Mw(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Dr(s,l,c)|0;return s|0}function QR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=C,C=C+16|0,d=m|0,d7(s,l,c,f,d)|0,C=m,Se=n[d+4>>2]|0,n[d>>2]|0|0}function m7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function n3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,y7[s&1](l|0,c|0,f|0,d|0,m|0)}function i3e(s,l,c){s=s|0,l=l|0,c=y(c),E7[s&1](l|0,y(c))}function s3e(s,l,c){s=s|0,l=l|0,c=+c,C7[s&31](l|0,+c)}function o3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(w7[s&0](l|0,y(c),y(f)))}function a3e(s,l){s=s|0,l=l|0,tf[s&127](l|0)}function l3e(s,l,c){s=s|0,l=l|0,c=c|0,rf[s&31](l|0,c|0)}function c3e(s,l){return s=s|0,l=l|0,Lg[s&31](l|0)|0}function u3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,I7[s&1](l|0,+c,+f,d|0)}function A3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,Y3e[s&1](l|0,+c,+f)}function f3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,ED[s&7](l|0,c|0,f|0)|0}function p3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+W3e[s&1](l|0,c|0,f|0)}function h3e(s,l){return s=s|0,l=l|0,+B7[s&15](l|0)}function g3e(s,l,c){return s=s|0,l=l|0,c=+c,K3e[s&1](l|0,+c)|0}function d3e(s,l,c){return s=s|0,l=l|0,c=c|0,RR[s&15](l|0,c|0)|0}function m3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,V3e[s&1](l|0,c|0,+f,+d,m|0)}function y3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,J3e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function E3e(s,l,c){return s=s|0,l=l|0,c=c|0,+v7[s&7](l|0,c|0)}function C3e(s){return s=s|0,CD[s&7]()|0}function w3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,D7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function I3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,z3e[s&1](l|0,c|0,f|0,+d)}function B3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,S7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function v3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,Hw[s&15](l|0,c|0,f|0)}function D3e(s){s=s|0,P7[s&0]()}function S3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,b7[s&15](l|0,c|0,+f)}function P3e(s,l,c){return s=s|0,l=+l,c=+c,X3e[s&1](+l,+c)|0}function b3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,TR[s&15](l|0,c|0,f|0,d|0)}function x3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function k3e(s,l){s=s|0,l=y(l),F(1)}function ma(s,l){s=s|0,l=+l,F(2)}function Q3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),Ze}function Er(s){s=s|0,F(4)}function Uw(s,l){s=s|0,l=l|0,F(5)}function Ja(s){return s=s|0,F(6),0}function F3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function R3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function T3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function N3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Ng(s){return s=s|0,F(11),0}function L3e(s,l){return s=s|0,l=+l,F(12),0}function _w(s,l){return s=s|0,l=l|0,F(13),0}function O3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function M3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function FR(s,l){return s=s|0,l=l|0,F(16),0}function U3e(){return F(17),0}function _3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function H3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function q3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function yD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function j3e(){F(22)}function Zm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function G3e(s,l){return s=+s,l=+l,F(24),0}function $m(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var y7=[x3e,_Le],E7=[k3e,fo],C7=[ma,xw,kw,EF,CF,Dl,Qw,wF,qm,bu,Rw,IF,$v,KA,eD,jm,tD,rD,Gm,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma,ma],w7=[Q3e],tf=[Er,zm,CDe,wDe,IDe,Xbe,Zbe,$be,gNe,dNe,mNe,PLe,bLe,xLe,J4e,z4e,X4e,hs,Vv,Hm,WA,Fw,dve,mve,uDe,kDe,qDe,oSe,ISe,USe,rPe,mPe,FPe,VPe,ube,Sbe,qbe,dxe,Fxe,Vxe,uke,Ske,qke,aQe,IQe,LQe,ZQe,Pc,xFe,YFe,uRe,bRe,jRe,uTe,CTe,BTe,_Te,jTe,oNe,ENe,INe,UNe,nLe,i5,MOe,gMe,kMe,YMe,p4e,b4e,U4e,q4e,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er,Er],rf=[Uw,fF,pF,bw,Pu,hF,gF,Bp,dF,mF,yF,Zv,VA,Ve,ft,Wt,vr,Pn,Fr,vF,nve,Sve,AQe,DQe,FRe,HOe,ALe,q9,Uw,Uw,Uw,Uw],Lg=[Ja,SUe,AF,D,Ae,De,vt,wt,xt,_r,di,po,eve,tve,yve,tFe,KRe,qNe,YOe,Wa,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja,Ja],I7=[F3e,Eve],Y3e=[R3e,cNe],ED=[T3e,r7,PUe,kUe,jSe,Cxe,RFe,JMe],W3e=[N3e,hbe],B7=[Ng,Yo,rt,bn,Cve,wve,Ive,Bve,vve,Dve,Ng,Ng,Ng,Ng,Ng,Ng],K3e=[L3e,mTe],RR=[_w,XUe,rve,hDe,uSe,sPe,CPe,Wbe,Lxe,_Qe,Wv,TMe,_w,_w,_w,_w],V3e=[O3e,WDe],J3e=[M3e,m4e],v7=[FR,ai,Pve,bve,xve,kbe,FR,FR],CD=[U3e,kve,Sw,ga,PTe,KTe,SNe,W4e],D7=[_3e,Cw],z3e=[H3e,hke],S7=[q3e,ive],Hw=[yD,T,is,tn,ho,SSe,NPe,kke,Wke,_m,cOe,EMe,F4e,yD,yD,yD],P7=[j3e],b7=[Zm,Jv,zv,Xv,YA,nD,BF,S,Zxe,JFe,pTe,Zm,Zm,Zm,Zm,Zm],X3e=[G3e,pNe],TR=[$m,ZPe,cFe,hRe,rTe,RTe,$Te,RNe,lLe,XOe,nUe,$m,$m,$m,$m,$m];return{_llvm_bswap_i32:m7,dynCall_idd:P3e,dynCall_i:C3e,_i64Subtract:dD,___udivdi3:kR,dynCall_vif:i3e,setThrew:hu,dynCall_viii:v3e,_bitshift64Lshr:mD,_bitshift64Shl:h7,dynCall_vi:a3e,dynCall_viiddi:m3e,dynCall_diii:p3e,dynCall_iii:d3e,_memset:Xm,_sbrk:Qp,_memcpy:Dr,__GLOBAL__sub_I_Yoga_cpp:Um,dynCall_vii:l3e,___uremdi3:QR,dynCall_vid:s3e,stackAlloc:lo,_nbind_init:hUe,getTempRet0:Ua,dynCall_di:h3e,dynCall_iid:g3e,setTempRet0:xA,_i64Add:xR,dynCall_fiff:o3e,dynCall_iiii:f3e,_emscripten_get_global_libc:DUe,dynCall_viid:S3e,dynCall_viiid:I3e,dynCall_viififi:B3e,dynCall_ii:c3e,__GLOBAL__sub_I_Binding_cc:kOe,dynCall_viiii:b3e,dynCall_iiiiii:w3e,stackSave:gc,dynCall_viiiii:n3e,__GLOBAL__sub_I_nbind_cc:Qve,dynCall_vidd:A3e,_free:hD,runPostSets:r3e,dynCall_viiiiii:y3e,establishStackSpace:qi,_memmove:Mw,stackRestore:pu,_malloc:pD,__GLOBAL__sub_I_common_cc:zNe,dynCall_viddi:u3e,dynCall_dii:E3e,dynCall_v:D3e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+t+\")\",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p==\"object\"&&p.stack&&(A=[p,p.stack]),Module.printErr(\"exception thrown: \"+A),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t=\"\",ABORT=!0,EXITSTATUS=1;var e=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+t+\") at \"+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var am=_((wKt,NEe)=>{\"use strict\";var Gyt=REe(),Yyt=TEe(),x6=!1,k6=null;Yyt({},function(t,e){if(!x6){if(x6=!0,t)throw t;k6=e}});if(!x6)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");NEe.exports=Gyt(k6.bind,k6.lib)});var F6=_((IKt,Q6)=>{\"use strict\";var LEe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);Q6.exports=LEe;Q6.exports.default=LEe});var MEe=_((BKt,OEe)=>{\"use strict\";OEe.exports=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g}});var Kk=_((vKt,R6)=>{\"use strict\";var Wyt=OS(),Kyt=F6(),Vyt=MEe(),UEe=t=>{if(typeof t!=\"string\"||t.length===0||(t=Wyt(t),t.length===0))return 0;t=t.replace(Vyt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Kyt(o)?2:1)}return e};R6.exports=UEe;R6.exports.default=UEe});var N6=_((DKt,T6)=>{\"use strict\";var Jyt=Kk(),_Ee=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,Jyt(r));return e};T6.exports=_Ee;T6.exports.default=_Ee});var HEe=_(cB=>{\"use strict\";var zyt=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,\"__esModule\",{value:!0});var Xyt=zyt(N6()),L6={};cB.default=t=>{if(t.length===0)return{width:0,height:0};if(L6[t])return L6[t];let e=Xyt.default(t),r=t.split(`\n`).length;return L6[t]={width:e,height:r},{width:e,height:r}}});var qEe=_(uB=>{\"use strict\";var Zyt=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,\"__esModule\",{value:!0});var dn=Zyt(am()),$yt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?dn.default.POSITION_TYPE_ABSOLUTE:dn.default.POSITION_TYPE_RELATIVE)},eEt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(dn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(dn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(dn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(dn.default.EDGE_BOTTOM,e.marginBottom||0)},tEt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(dn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(dn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(dn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(dn.default.EDGE_BOTTOM,e.paddingBottom||0)},rEt=(t,e)=>{var r;\"flexGrow\"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in e&&t.setFlexShrink(typeof e.flexShrink==\"number\"?e.flexShrink:1),\"flexDirection\"in e&&(e.flexDirection===\"row\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(dn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in e&&(typeof e.flexBasis==\"number\"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis==\"string\"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),\"alignItems\"in e&&((e.alignItems===\"stretch\"||!e.alignItems)&&t.setAlignItems(dn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(dn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(dn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(dn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(dn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(dn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(dn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(dn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(dn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(dn.default.JUSTIFY_SPACE_AROUND))},nEt=(t,e)=>{var r,o;\"width\"in e&&(typeof e.width==\"number\"?t.setWidth(e.width):typeof e.width==\"string\"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),\"height\"in e&&(typeof e.height==\"number\"?t.setHeight(e.height):typeof e.height==\"string\"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),\"minWidth\"in e&&(typeof e.minWidth==\"string\"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in e&&(typeof e.minHeight==\"string\"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},iEt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?dn.default.DISPLAY_FLEX:dn.default.DISPLAY_NONE)},sEt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(dn.default.EDGE_TOP,r),t.setBorder(dn.default.EDGE_BOTTOM,r),t.setBorder(dn.default.EDGE_LEFT,r),t.setBorder(dn.default.EDGE_RIGHT,r)}};uB.default=(t,e={})=>{$yt(t,e),eEt(t,e),tEt(t,e),rEt(t,e),nEt(t,e),iEt(t,e),sEt(t,e)}});var YEe=_((bKt,GEe)=>{\"use strict\";var AB=Kk(),oEt=OS(),aEt=DI(),M6=new Set([\"\\x1B\",\"\\x9B\"]),lEt=39,jEe=t=>`${M6.values().next().value}[${t}m`,cEt=t=>t.split(\" \").map(e=>AB(e)),O6=(t,e,r)=>{let o=[...e],a=!1,n=AB(oEt(t[t.length-1]));for(let[u,A]of o.entries()){let p=AB(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),M6.has(A))a=!0;else if(a&&A===\"m\"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},uEt=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(AB(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},AEt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let o=\"\",a=\"\",n,u=cEt(t),A=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let E=AB(A[A.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(\"\"),E=0),(E>0||r.trim===!1)&&(A[A.length-1]+=\" \",E++)),r.hard&&u[p]>e){let I=e-E,v=1+Math.floor((u[p]-I-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(\"\"),O6(A,h,e);continue}if(E+u[p]>e&&E>0&&u[p]>0){if(r.wordWrap===!1&&E<e){O6(A,h,e);continue}A.push(\"\")}if(E+u[p]>e&&r.wordWrap===!1){O6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(uEt)),o=A.join(`\n`);for(let[p,h]of[...o].entries()){if(a+=h,M6.has(h)){let I=parseFloat(/\\d[^m]*/.exec(o.slice(p,p+4)));n=I===lEt?null:I}let E=aEt.codes.get(Number(n));n&&E&&(o[p+1]===`\n`?a+=jEe(E):h===`\n`&&(a+=jEe(n)))}return a};GEe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(o=>AEt(o,e,r)).join(`\n`)});var VEe=_((xKt,KEe)=>{\"use strict\";var WEe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",fEt=t=>t&&t.exact?new RegExp(`^${WEe}$`):new RegExp(WEe,\"g\");KEe.exports=fEt});var U6=_((kKt,ZEe)=>{\"use strict\";var pEt=F6(),hEt=VEe(),JEe=DI(),XEe=[\"\\x1B\",\"\\x9B\"],Vk=t=>`${XEe[0]}[${t}m`,zEe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let u=JEe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(Vk(e?u:n))}else if(e){o.push(Vk(0));break}else o.push(Vk(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=Vk(JEe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join(\"\")};ZEe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r==\"number\"?r:o.length;let n=!1,u,A=0,p=\"\";for(let[h,E]of o.entries()){let I=!1;if(XEe.includes(E)){let v=/\\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&E===\"m\"&&(n=!1,I=!0);if(!n&&!I&&++A,!hEt({exact:!0}).test(E)&&pEt(E.codePointAt())&&++A,A>e&&A<=r)p+=E;else if(A===e&&!n&&u!==void 0)p=zEe(a);else if(A>=r){p+=zEe(a,!0,u);break}}return p}});var eCe=_((QKt,$Ee)=>{\"use strict\";var E0=U6(),gEt=Kk();function Jk(t,e,r){if(t.charAt(e)===\" \")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===\" \")return e+o}else if(t.charAt(e-o)===\" \")return e-o;return e}$Ee.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u=\"\\u2026\",A=1;if(typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof t}`);if(typeof e!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof e}`);if(e<1)return\"\";if(e===1)return u;let p=gEt(t);if(p<=e)return t;if(o===\"start\"){if(n){let h=Jk(t,p-e+1,!0);return u+E0(t,h,p).trim()}return a===!0&&(u+=\" \",A=2),u+E0(t,p-e+A,p)}if(o===\"middle\"){a===!0&&(u=\" \"+u+\" \",A=3);let h=Math.floor(e/2);if(n){let E=Jk(t,h),I=Jk(t,p-(e-h)+1,!0);return E0(t,0,E)+u+E0(t,I,p).trim()}return E0(t,0,h)+u+E0(t,p-(e-h)+A,p)}if(o===\"end\"){if(n){let h=Jk(t,e-1);return E0(t,0,h)+u}return a===!0&&(u=\" \"+u,A=2),E0(t,0,e-A)+u}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${o}`)}});var H6=_(fB=>{\"use strict\";var tCe=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,\"__esModule\",{value:!0});var dEt=tCe(YEe()),mEt=tCe(eCe()),_6={};fB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(_6[o])return _6[o];let a=t;if(r===\"wrap\"&&(a=dEt.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=mEt.default(t,e,{position:n})}return _6[o]=a,a}});var j6=_(q6=>{\"use strict\";Object.defineProperty(q6,\"__esModule\",{value:!0});var rCe=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let o=\"\";r.nodeName===\"#text\"?o=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(o=rCe(r)),o.length>0&&typeof r.internal_transform==\"function\"&&(o=r.internal_transform(o))),e+=o}return e};q6.default=rCe});var G6=_(pi=>{\"use strict\";var pB=pi&&pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pi,\"__esModule\",{value:!0});pi.setTextNodeValue=pi.createTextNode=pi.setStyle=pi.setAttribute=pi.removeChildNode=pi.insertBeforeNode=pi.appendChildNode=pi.createNode=pi.TEXT_NAME=void 0;var yEt=pB(am()),nCe=pB(HEe()),EEt=pB(qEe()),CEt=pB(H6()),wEt=pB(j6());pi.TEXT_NAME=\"#text\";pi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t===\"ink-virtual-text\"?void 0:yEt.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(IEt.bind(null,r))),r};pi.appendChildNode=(t,e)=>{var r;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&pi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&zk(t)};pi.setAttribute=(t,e,r)=>{t.attributes[e]=r};pi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&EEt.default(t.yogaNode,e)};pi.createTextNode=t=>{let e={nodeName:\"#text\",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return pi.setTextNodeValue(e,t),e};var IEt=function(t,e){var r,o;let a=t.nodeName===\"#text\"?t.nodeValue:wEt.default(t),n=nCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:\"wrap\",A=CEt.default(a,e,u);return nCe.default(A)},iCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:iCe(t.parentNode)},zk=t=>{let e=iCe(t);e?.markDirty()};pi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,zk(t)}});var cCe=_(hB=>{\"use strict\";var lCe=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,\"__esModule\",{value:!0});var sCe=S6(),BEt=lCe(PEe()),oCe=lCe(am()),Oo=G6(),aCe=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};hB.default=BEt.default({schedulePassiveEffects:sCe.unstable_scheduleCallback,cancelPassiveEffects:sCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender==\"function\"&&t.onImmediateRender();return}typeof t.onRender==\"function\"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e===\"ink-text\"||e===\"ink-virtual-text\";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&o.isInsideText?\"ink-virtual-text\":t,n=Oo.createNode(a);for(let[u,A]of Object.entries(e))u!==\"children\"&&(u===\"style\"?Oo.setStyle(n,A):u===\"internal_transform\"?n.internal_transform=A:u===\"internal_static\"?n.internal_static=!0:Oo.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return Oo.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{Oo.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{Oo.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(oCe.default.DISPLAY_FLEX)},appendInitialChild:Oo.appendChildNode,appendChild:Oo.appendChildNode,insertBefore:Oo.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:Oo.appendChildNode,insertInContainerBefore:Oo.insertBeforeNode,removeChildFromContainer:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A===\"style\"&&typeof o.style==\"object\"&&typeof r.style==\"object\"){let h=o.style,E=r.style,I=Object.keys(h);for(let v of I){if(v===\"borderStyle\"||v===\"borderColor\"){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==E[v]){if(typeof n.style!=\"object\"){let x={};n.style=x}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!==\"children\"&&(r===\"style\"?Oo.setStyle(t,o):r===\"internal_transform\"?t.internal_transform=o:r===\"internal_static\"?t.internal_static=!0:Oo.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{Oo.setTextNodeValue(t,r)},removeChild:(t,e)=>{Oo.removeChildNode(t,e),aCe(e.yogaNode)}})});var ACe=_((LKt,uCe)=>{\"use strict\";uCe.exports=(t,e=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof t}\\``);if(typeof e!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof e}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var fCe=_(gB=>{\"use strict\";var vEt=gB&&gB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gB,\"__esModule\",{value:!0});var Xk=vEt(am());gB.default=t=>t.getComputedWidth()-t.getComputedPadding(Xk.default.EDGE_LEFT)-t.getComputedPadding(Xk.default.EDGE_RIGHT)-t.getComputedBorder(Xk.default.EDGE_LEFT)-t.getComputedBorder(Xk.default.EDGE_RIGHT)});var pCe=_((MKt,DEt)=>{DEt.exports={single:{topLeft:\"\\u250C\",topRight:\"\\u2510\",bottomRight:\"\\u2518\",bottomLeft:\"\\u2514\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},double:{topLeft:\"\\u2554\",topRight:\"\\u2557\",bottomRight:\"\\u255D\",bottomLeft:\"\\u255A\",vertical:\"\\u2551\",horizontal:\"\\u2550\"},round:{topLeft:\"\\u256D\",topRight:\"\\u256E\",bottomRight:\"\\u256F\",bottomLeft:\"\\u2570\",vertical:\"\\u2502\",horizontal:\"\\u2500\"},bold:{topLeft:\"\\u250F\",topRight:\"\\u2513\",bottomRight:\"\\u251B\",bottomLeft:\"\\u2517\",vertical:\"\\u2503\",horizontal:\"\\u2501\"},singleDouble:{topLeft:\"\\u2553\",topRight:\"\\u2556\",bottomRight:\"\\u255C\",bottomLeft:\"\\u2559\",vertical:\"\\u2551\",horizontal:\"\\u2500\"},doubleSingle:{topLeft:\"\\u2552\",topRight:\"\\u2555\",bottomRight:\"\\u255B\",bottomLeft:\"\\u2558\",vertical:\"\\u2502\",horizontal:\"\\u2550\"},classic:{topLeft:\"+\",topRight:\"+\",bottomRight:\"+\",bottomLeft:\"+\",vertical:\"|\",horizontal:\"-\"}}});var gCe=_((UKt,Y6)=>{\"use strict\";var hCe=pCe();Y6.exports=hCe;Y6.exports.default=hCe});var mCe=_((_Kt,dCe)=>{\"use strict\";var SEt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u=\"\";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},PEt=(t,e,r,o)=>{let a=0,n=\"\";do{let u=t[o-1]===\"\\r\";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\\r\n`:`\n`)+r,a=o+1,o=t.indexOf(`\n`,a)}while(o!==-1);return n+=t.substr(a),n};dCe.exports={stringReplaceAll:SEt,stringEncaseCRLFWithFirstIndex:PEt}});var ICe=_((HKt,wCe)=>{\"use strict\";var bEt=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,yCe=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,xEt=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,kEt=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,QEt=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function CCe(t){let e=t[0]===\"u\",r=t[1]===\"{\";return e&&!r&&t.length===5||t[0]===\"x\"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):QEt.get(t)||t}function FEt(t,e){let r=[],o=e.trim().split(/\\s*,\\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(xEt))r.push(a[2].replace(kEt,(A,p,h)=>p?CCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function REt(t){yCe.lastIndex=0;let e=[],r;for(;(r=yCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=FEt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function ECe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}wCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(bEt,(n,u,A,p,h,E)=>{if(u)a.push(CCe(u));else if(p){let I=a.join(\"\");a=[],o.push(r.length===0?I:ECe(t,r)(I)),r.push({inverse:A,styles:REt(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");o.push(ECe(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),o.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return o.join(\"\")}});var rQ=_((qKt,bCe)=>{\"use strict\";var dB=DI(),{stdout:K6,stderr:V6}=dN(),{stringReplaceAll:TEt,stringEncaseCRLFWithFirstIndex:NEt}=mCe(),{isArray:Zk}=Array,vCe=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],HC=Object.create(null),LEt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error(\"The `level` option should be an integer from 0 to 3\");let r=K6?K6.level:0;t.level=e.level===void 0?r:e.level},J6=class{constructor(e){return DCe(e)}},DCe=t=>{let e={};return LEt(e,t),e.template=(...r)=>PCe(e.template,...r),Object.setPrototypeOf(e,$k.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=J6,e.template};function $k(t){return DCe(t)}for(let[t,e]of Object.entries(dB))HC[t]={get(){let r=eQ(this,z6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};HC.visible={get(){let t=eQ(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var SCe=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of SCe)HC[t]={get(){let{level:e}=this;return function(...r){let o=z6(dB.color[vCe[e]][t](...r),dB.color.close,this._styler);return eQ(this,o,this._isEmpty)}}};for(let t of SCe){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);HC[e]={get(){let{level:r}=this;return function(...o){let a=z6(dB.bgColor[vCe[r]][t](...o),dB.bgColor.close,this._styler);return eQ(this,a,this._isEmpty)}}}}var OEt=Object.defineProperties(()=>{},{...HC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),z6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},eQ=(t,e,r)=>{let o=(...a)=>Zk(a[0])&&Zk(a[0].raw)?BCe(o,PCe(o,...a)):BCe(o,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(o,OEt),o._generator=t,o._styler=e,o._isEmpty=r,o},BCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=TEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=NEt(e,a,o,n)),o+e+a},W6,PCe=(t,...e)=>{let[r]=e;if(!Zk(r)||!Zk(r.raw))return e.join(\" \");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return W6===void 0&&(W6=ICe()),W6(t,a.join(\"\"))};Object.defineProperties($k.prototype,HC);var tQ=$k();tQ.supportsColor=K6;tQ.stderr=$k({level:V6?V6.level:0});tQ.stderr.supportsColor=V6;bCe.exports=tQ});var X6=_(yB=>{\"use strict\";var MEt=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,\"__esModule\",{value:!0});var mB=MEt(rQ()),UEt=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,_Et=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,nQ=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);yB.default=(t,e,r)=>{if(!e)return t;if(e in mB.default){let a=nQ(e,r);return mB.default[a](t)}if(e.startsWith(\"#\")){let a=nQ(\"hex\",r);return mB.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=_Et.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]);return mB.default[n](u)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=UEt.exec(e);if(!a)return t;let n=nQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return mB.default[n](u,A,p)(t)}return t}});var kCe=_(EB=>{\"use strict\";var xCe=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,\"__esModule\",{value:!0});var HEt=xCe(gCe()),Z6=xCe(X6());EB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=HEt.default[r.style.borderStyle],p=Z6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,\"foreground\"),h=(Z6.default(A.vertical,u,\"foreground\")+`\n`).repeat(n-2),E=Z6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,\"foreground\");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,E,{transformers:[]})}}});var FCe=_(CB=>{\"use strict\";var lm=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,\"__esModule\",{value:!0});var qEt=lm(am()),jEt=lm(N6()),GEt=lm(ACe()),YEt=lm(H6()),WEt=lm(fCe()),KEt=lm(j6()),VEt=lm(kCe()),JEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=`\n`.repeat(n)+GEt.default(e,a)}return e},QCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===qEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),I=u;if(typeof t.internal_transform==\"function\"&&(I=[t.internal_transform,...u]),t.nodeName===\"ink-text\"){let v=KEt.default(t);if(v.length>0){let x=jEt.default(v),C=WEt.default(p);if(x>C){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:\"wrap\";v=YEt.default(v,C,R)}v=JEt(t,v),e.write(h,E,v,{transformers:I})}return}if(t.nodeName===\"ink-box\"&&VEt.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let v of t.childNodes)QCe(v,e,{offsetX:h,offsetY:E,transformers:I,skipStaticElements:A})}};CB.default=QCe});var TCe=_((WKt,RCe)=>{\"use strict\";RCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\"].join(\"|\");return new RegExp(e,t.onlyFirst?void 0:\"g\")}});var LCe=_((KKt,$6)=>{\"use strict\";var zEt=TCe(),NCe=t=>typeof t==\"string\"?t.replace(zEt(),\"\"):t;$6.exports=NCe;$6.exports.default=NCe});var UCe=_((VKt,MCe)=>{\"use strict\";var OCe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\";MCe.exports=t=>t&&t.exact?new RegExp(`^${OCe}$`):new RegExp(OCe,\"g\")});var HCe=_((JKt,eq)=>{\"use strict\";var XEt=LCe(),ZEt=UCe(),_Ce=t=>XEt(t).replace(ZEt(),\" \").length;eq.exports=_Ce;eq.exports.default=_Ce});var GCe=_(wB=>{\"use strict\";var jCe=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,\"__esModule\",{value:!0});var qCe=jCe(U6()),$Et=jCe(HCe()),tq=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(\" \".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(`\n`),h=0;for(let E of p){let I=e[n+h];if(!I)continue;let v=$Et.default(E);for(let x of A)E=x(E);e[n+h]=qCe.default(I,0,a)+E+qCe.default(I,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(`\n`),height:e.length}}};wB.default=tq});var KCe=_(IB=>{\"use strict\";var rq=IB&&IB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(IB,\"__esModule\",{value:!0});var eCt=rq(am()),YCe=rq(FCe()),WCe=rq(GCe());IB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,eCt.default.DIRECTION_LTR);let o=new WCe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});YCe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new WCe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),YCe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var XCe=_((ZKt,zCe)=>{\"use strict\";var VCe=ve(\"stream\"),JCe=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],nq={},tCt=t=>{let e=new VCe.PassThrough,r=new VCe.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let o=new console.Console(e,r);for(let a of JCe)nq[a]=console[a],console[a]=o[a];return()=>{for(let a of JCe)console[a]=nq[a];nq={}}};zCe.exports=tCt});var sq=_(iq=>{\"use strict\";Object.defineProperty(iq,\"__esModule\",{value:!0});iq.default=new WeakMap});var aq=_(oq=>{\"use strict\";Object.defineProperty(oq,\"__esModule\",{value:!0});var rCt=on(),ZCe=rCt.createContext({exit:()=>{}});ZCe.displayName=\"InternalAppContext\";oq.default=ZCe});var cq=_(lq=>{\"use strict\";Object.defineProperty(lq,\"__esModule\",{value:!0});var nCt=on(),$Ce=nCt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});$Ce.displayName=\"InternalStdinContext\";lq.default=$Ce});var Aq=_(uq=>{\"use strict\";Object.defineProperty(uq,\"__esModule\",{value:!0});var iCt=on(),ewe=iCt.createContext({stdout:void 0,write:()=>{}});ewe.displayName=\"InternalStdoutContext\";uq.default=ewe});var pq=_(fq=>{\"use strict\";Object.defineProperty(fq,\"__esModule\",{value:!0});var sCt=on(),twe=sCt.createContext({stderr:void 0,write:()=>{}});twe.displayName=\"InternalStderrContext\";fq.default=twe});var iQ=_(hq=>{\"use strict\";Object.defineProperty(hq,\"__esModule\",{value:!0});var oCt=on(),rwe=oCt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});rwe.displayName=\"InternalFocusContext\";hq.default=rwe});var iwe=_((sVt,nwe)=>{\"use strict\";var aCt=/[|\\\\{}()[\\]^$+*?.-]/g;nwe.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(aCt,\"\\\\$&\")}});var lwe=_((oVt,awe)=>{\"use strict\";var lCt=iwe(),cCt=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",owe=[].concat(ve(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));owe.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var BB=class{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=BB.nodeInternals()),\"cwd\"in e||(e.cwd=cCt),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,uCt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...owe]}clean(e,r=0){r=\" \".repeat(r),Array.isArray(e)||(e=e.split(`\n`)),!/^\\s*at /.test(e[0])&&/^\\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(u)))return;let A=/^\\s*at /.test(u);o?u=u.trimEnd().replace(/^(\\s+)at /,\"$1\"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,\"\"),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};swe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(ACt);if(!r)return null;let o=r[1]===\"new\",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],I=r[9],v=r[10]===\"native\",x=r[11]===\")\",C,R={};if(E&&(R.line=Number(E)),I&&(R.column=Number(I)),x&&h){let L=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")L++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(L--,L===-1&&h.charAt(U-1)===\" \")){let J=h.slice(0,U-1);h=h.slice(U+1),a+=` (${J}`;break}}if(a){let L=a.match(fCt);L&&(a=L[1],C=L[2])}return swe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\\\/g,\"/\")),v&&(R.native=!0),a&&(R.function=a),C&&a!==C&&(R.method=C),R}};function swe(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function uCt(t){if(t.length===0)return[];let e=t.map(r=>lCt(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var ACt=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),fCt=/^(.*?) \\[as (.*?)\\]$/;awe.exports=BB});var uwe=_((aVt,cwe)=>{\"use strict\";cwe.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var fwe=_((lVt,Awe)=>{\"use strict\";var pCt=uwe(),hCt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};Awe.exports=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(\"Source code is missing.\");if(!e||e<1)throw new TypeError(\"Line number must start from `1`.\");if(t=pCt(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},hCt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var sQ=_(ru=>{\"use strict\";var gCt=ru&&ru.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),dCt=ru&&ru.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),mCt=ru&&ru.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&gCt(e,t,r);return dCt(e,t),e},yCt=ru&&ru.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(ru,\"__esModule\",{value:!0});var pwe=mCt(on()),gq=pwe.forwardRef((t,e)=>{var{children:r}=t,o=yCt(t,[\"children\"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return pwe.default.createElement(\"ink-box\",{ref:e,style:a},r)});gq.displayName=\"Box\";gq.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};ru.default=gq});var yq=_(vB=>{\"use strict\";var dq=vB&&vB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(vB,\"__esModule\",{value:!0});var ECt=dq(on()),qC=dq(rQ()),hwe=dq(X6()),mq=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let E=I=>(r&&(I=qC.default.dim(I)),t&&(I=hwe.default(I,t,\"foreground\")),e&&(I=hwe.default(I,e,\"background\")),o&&(I=qC.default.bold(I)),a&&(I=qC.default.italic(I)),n&&(I=qC.default.underline(I)),u&&(I=qC.default.strikethrough(I)),A&&(I=qC.default.inverse(I)),I);return ECt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};mq.displayName=\"Text\";mq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};vB.default=mq});var ywe=_(nu=>{\"use strict\";var CCt=nu&&nu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),wCt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ICt=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&CCt(e,t,r);return wCt(e,t),e},DB=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,\"__esModule\",{value:!0});var gwe=ICt(ve(\"fs\")),fs=DB(on()),dwe=DB(lwe()),BCt=DB(fwe()),Zf=DB(sQ()),hA=DB(yq()),mwe=new dwe.default({cwd:process.cwd(),internals:dwe.default.nodeInternals()}),vCt=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?mwe.parseLine(e[0]):void 0,o,a=0;if(r?.file&&r?.line&&gwe.existsSync(r.file)){let n=gwe.readFileSync(r.file,\"utf8\");if(o=BCt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return fs.default.createElement(Zf.default,{flexDirection:\"column\",padding:1},fs.default.createElement(Zf.default,null,fs.default.createElement(hA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),fs.default.createElement(hA.default,null,\" \",t.message)),r&&fs.default.createElement(Zf.default,{marginTop:1},fs.default.createElement(hA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&o&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},o.map(({line:n,value:u})=>fs.default.createElement(Zf.default,{key:n},fs.default.createElement(Zf.default,{width:a+1},fs.default.createElement(hA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),fs.default.createElement(hA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+u)))),t.stack&&fs.default.createElement(Zf.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let u=mwe.parseLine(n);return u?fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},u.function),fs.default.createElement(hA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",u.file,\":\",u.line,\":\",u.column,\")\")):fs.default.createElement(Zf.default,{key:n},fs.default.createElement(hA.default,{dimColor:!0},\"- \"),fs.default.createElement(hA.default,{dimColor:!0,bold:!0},n))})))};nu.default=vCt});var Cwe=_(iu=>{\"use strict\";var DCt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),SCt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),PCt=iu&&iu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&DCt(e,t,r);return SCt(e,t),e},um=iu&&iu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iu,\"__esModule\",{value:!0});var cm=PCt(on()),Ewe=um(g6()),bCt=um(aq()),xCt=um(cq()),kCt=um(Aq()),QCt=um(pq()),FCt=um(iQ()),RCt=um(ywe()),TCt=\"\t\",NCt=\"\\x1B[Z\",LCt=\"\\x1B\",oQ=class extends cm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding(\"utf8\"),e){this.rawModeEnabledCount===0&&(r.addListener(\"data\",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener(\"data\",this.handleInput),r.pause())},this.handleInput=e=>{e===\"\u0003\"&&this.props.exitOnCtrlC&&this.handleExit(),e===LCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===TCt&&this.focusNext(),e===NCt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return cm.default.createElement(bCt.default.Provider,{value:{exit:this.handleExit}},cm.default.createElement(xCt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},cm.default.createElement(kCt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},cm.default.createElement(QCt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},cm.default.createElement(FCt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?cm.default.createElement(RCt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){Ewe.default.hide(this.props.stdout)}componentWillUnmount(){Ewe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};iu.default=oQ;oQ.displayName=\"InternalApp\"});var Bwe=_(su=>{\"use strict\";var OCt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),MCt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),UCt=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&OCt(e,t,r);return MCt(e,t),e},ou=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,\"__esModule\",{value:!0});var _Ct=ou(on()),wwe=lM(),HCt=ou(lEe()),qCt=ou(u6()),jCt=ou(hEe()),GCt=ou(dEe()),Eq=ou(cCe()),YCt=ou(KCe()),WCt=ou(h6()),KCt=ou(XCe()),VCt=UCt(G6()),JCt=ou(sq()),zCt=ou(Cwe()),jC=process.env.CI===\"false\"?!1:jCt.default,Iwe=()=>{},Cq=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=YCt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==`\n`;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(jC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(qCt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},GCt.default(this),this.options=e,this.rootNode=VCt.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:wwe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=HCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:wwe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=Eq.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=WCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),jC||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=_Ct.default.createElement(zCt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);Eq.default.updateContainer(r,this.container,null,Iwe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(jC){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(jC){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==\"function\"&&this.restoreConsole(),typeof this.unsubscribeResize==\"function\"&&this.unsubscribeResize(),jC?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,Eq.default.updateContainer(null,this.container,null,Iwe),JCt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!jC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=KCt.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};su.default=Cq});var Dwe=_(SB=>{\"use strict\";var vwe=SB&&SB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SB,\"__esModule\",{value:!0});var XCt=vwe(Bwe()),aQ=vwe(sq()),ZCt=ve(\"stream\"),$Ct=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},ewt(e)),o=twt(r.stdout,()=>new XCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>aQ.default.delete(r.stdout),clear:o.clear}};SB.default=$Ct;var ewt=(t={})=>t instanceof ZCt.Stream?{stdout:t,stdin:process.stdin}:t,twt=(t,e)=>{let r;return aQ.default.has(t)?r=aQ.default.get(t):(r=e(),aQ.default.set(t,r)),r}});var Pwe=_($f=>{\"use strict\";var rwt=$f&&$f.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),nwt=$f&&$f.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),iwt=$f&&$f.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&rwt(e,t,r);return nwt(e,t),e};Object.defineProperty($f,\"__esModule\",{value:!0});var PB=iwt(on()),Swe=t=>{let{items:e,children:r,style:o}=t,[a,n]=PB.useState(0),u=PB.useMemo(()=>e.slice(a),[e,a]);PB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,E)=>r(h,a+E)),p=PB.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},o),[o]);return PB.default.createElement(\"ink-box\",{internal_static:!0,style:p},A)};Swe.displayName=\"Static\";$f.default=Swe});var xwe=_(bB=>{\"use strict\";var swt=bB&&bB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bB,\"__esModule\",{value:!0});var owt=swt(on()),bwe=({children:t,transform:e})=>t==null?null:owt.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);bwe.displayName=\"Transform\";bB.default=bwe});var Qwe=_(xB=>{\"use strict\";var awt=xB&&xB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xB,\"__esModule\",{value:!0});var lwt=awt(on()),kwe=({count:t=1})=>lwt.default.createElement(\"ink-text\",null,`\n`.repeat(t));kwe.displayName=\"Newline\";xB.default=kwe});var Twe=_(kB=>{\"use strict\";var Fwe=kB&&kB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kB,\"__esModule\",{value:!0});var cwt=Fwe(on()),uwt=Fwe(sQ()),Rwe=()=>cwt.default.createElement(uwt.default,{flexGrow:1});Rwe.displayName=\"Spacer\";kB.default=Rwe});var lQ=_(QB=>{\"use strict\";var Awt=QB&&QB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(QB,\"__esModule\",{value:!0});var fwt=on(),pwt=Awt(cq()),hwt=()=>fwt.useContext(pwt.default);QB.default=hwt});var Lwe=_(FB=>{\"use strict\";var gwt=FB&&FB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(FB,\"__esModule\",{value:!0});var Nwe=on(),dwt=gwt(lQ()),mwt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=dwt.default();Nwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),Nwe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A===\"\\x1B[A\",downArrow:A===\"\\x1B[B\",leftArrow:A===\"\\x1B[D\",rightArrow:A===\"\\x1B[C\",pageDown:A===\"\\x1B[6~\",pageUp:A===\"\\x1B[5~\",return:A===\"\\r\",escape:A===\"\\x1B\",ctrl:!1,shift:!1,tab:A===\"\t\"||A===\"\\x1B[Z\",backspace:A===\"\\b\",delete:A===\"\\x7F\"||A===\"\\x1B[3~\",meta:!1};A<=\"\u001a\"&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+\"a\".charCodeAt(0)-1),p.ctrl=!0),A.startsWith(\"\\x1B\")&&(A=A.slice(1),p.meta=!0);let h=A>=\"A\"&&A<=\"Z\",E=A>=\"\\u0410\"&&A<=\"\\u042F\";A.length===1&&(h||E)&&(p.shift=!0),p.tab&&A===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=\"\"),(!(A===\"c\"&&p.ctrl)||!a)&&t(A,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};FB.default=mwt});var Owe=_(RB=>{\"use strict\";var ywt=RB&&RB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(RB,\"__esModule\",{value:!0});var Ewt=on(),Cwt=ywt(aq()),wwt=()=>Ewt.useContext(Cwt.default);RB.default=wwt});var Mwe=_(TB=>{\"use strict\";var Iwt=TB&&TB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(TB,\"__esModule\",{value:!0});var Bwt=on(),vwt=Iwt(Aq()),Dwt=()=>Bwt.useContext(vwt.default);TB.default=Dwt});var Uwe=_(NB=>{\"use strict\";var Swt=NB&&NB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(NB,\"__esModule\",{value:!0});var Pwt=on(),bwt=Swt(pq()),xwt=()=>Pwt.useContext(bwt.default);NB.default=xwt});var Hwe=_(OB=>{\"use strict\";var _we=OB&&OB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(OB,\"__esModule\",{value:!0});var LB=on(),kwt=_we(iQ()),Qwt=_we(lQ()),Fwt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=Qwt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=LB.useContext(kwt.default),h=LB.useMemo(()=>Math.random().toString().slice(2,7),[]);return LB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),LB.useEffect(()=>{t?A(h):p(h)},[t,h]),LB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};OB.default=Fwt});var qwe=_(MB=>{\"use strict\";var Rwt=MB&&MB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(MB,\"__esModule\",{value:!0});var Twt=on(),Nwt=Rwt(iQ()),Lwt=()=>{let t=Twt.useContext(Nwt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};MB.default=Lwt});var jwe=_(wq=>{\"use strict\";Object.defineProperty(wq,\"__esModule\",{value:!0});wq.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var ic=_(ro=>{\"use strict\";Object.defineProperty(ro,\"__esModule\",{value:!0});var Owt=Dwe();Object.defineProperty(ro,\"render\",{enumerable:!0,get:function(){return Owt.default}});var Mwt=sQ();Object.defineProperty(ro,\"Box\",{enumerable:!0,get:function(){return Mwt.default}});var Uwt=yq();Object.defineProperty(ro,\"Text\",{enumerable:!0,get:function(){return Uwt.default}});var _wt=Pwe();Object.defineProperty(ro,\"Static\",{enumerable:!0,get:function(){return _wt.default}});var Hwt=xwe();Object.defineProperty(ro,\"Transform\",{enumerable:!0,get:function(){return Hwt.default}});var qwt=Qwe();Object.defineProperty(ro,\"Newline\",{enumerable:!0,get:function(){return qwt.default}});var jwt=Twe();Object.defineProperty(ro,\"Spacer\",{enumerable:!0,get:function(){return jwt.default}});var Gwt=Lwe();Object.defineProperty(ro,\"useInput\",{enumerable:!0,get:function(){return Gwt.default}});var Ywt=Owe();Object.defineProperty(ro,\"useApp\",{enumerable:!0,get:function(){return Ywt.default}});var Wwt=lQ();Object.defineProperty(ro,\"useStdin\",{enumerable:!0,get:function(){return Wwt.default}});var Kwt=Mwe();Object.defineProperty(ro,\"useStdout\",{enumerable:!0,get:function(){return Kwt.default}});var Vwt=Uwe();Object.defineProperty(ro,\"useStderr\",{enumerable:!0,get:function(){return Vwt.default}});var Jwt=Hwe();Object.defineProperty(ro,\"useFocus\",{enumerable:!0,get:function(){return Jwt.default}});var zwt=qwe();Object.defineProperty(ro,\"useFocusManager\",{enumerable:!0,get:function(){return zwt.default}});var Xwt=jwe();Object.defineProperty(ro,\"measureElement\",{enumerable:!0,get:function(){return Xwt.default}})});var Bq={};Vt(Bq,{Gem:()=>Iq});var Gwe,Am,Iq,cQ=Et(()=>{Gwe=$e(ic()),Am=$e(on()),Iq=(0,Am.memo)(({active:t})=>{let e=(0,Am.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,Am.useMemo)(()=>t?\"green\":\"yellow\",[t]);return Am.default.createElement(Gwe.Text,{color:r},e)})});var Wwe={};Vt(Wwe,{useKeypress:()=>fm});function fm({active:t},e,r){let{stdin:o}=(0,Ywe.useStdin)(),a=(0,uQ.useCallback)((n,u)=>e(n,u),r);(0,uQ.useEffect)(()=>{if(!(!t||!o))return o.on(\"keypress\",a),()=>{o.off(\"keypress\",a)}},[t,a,o])}var Ywe,uQ,UB=Et(()=>{Ywe=$e(ic()),uQ=$e(on())});var Vwe={};Vt(Vwe,{FocusRequest:()=>Kwe,useFocusRequest:()=>vq});var Kwe,vq,Dq=Et(()=>{UB();Kwe=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(Kwe||{}),vq=function({active:t},e,r){fm({active:t},(o,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var Jwe={};Vt(Jwe,{useListInput:()=>_B});var _B,AQ=Et(()=>{UB();_B=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){fm({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let E=h-1;if(u){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(u){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,u])}});var fQ={};Vt(fQ,{ScrollableItems:()=>Zwt});var C0,La,Zwt,pQ=Et(()=>{C0=$e(ic()),La=$e(on());Dq();AQ();Zwt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error(\"Expected all children to have a key\");return L.key},p=La.default.Children.map(e,L=>A(L)),h=p[0],[E,I]=(0,La.useState)(h),v=p.indexOf(E);(0,La.useEffect)(()=>{p.includes(E)||I(h)},[e]),(0,La.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),vq({active:t&&!!n},L=>{n?.(L)},[n]),_B(E,p,{active:t,minus:\"up\",plus:\"down\",set:I,loop:a});let x=v-r,C=v+r;C>p.length&&(x-=C-p.length,C=p.length),x<0&&(C+=-x,x=0),C>=p.length&&(C=p.length-1);let R=[];for(let L=x;L<=C;++L){let U=p[L],J=t&&U===E;R.push(La.default.createElement(C0.Box,{key:U,height:o},La.default.createElement(C0.Box,{marginLeft:1,marginRight:1},La.default.createElement(C0.Text,null,J?La.default.createElement(C0.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),La.default.createElement(C0.Box,null,La.default.cloneElement(e[L],{active:J}))))}return La.default.createElement(C0.Box,{flexDirection:\"column\",width:\"100%\"},R)}});var zwe,ep,Xwe,Sq,Zwe,Pq=Et(()=>{zwe=$e(ic()),ep=$e(on()),Xwe=ve(\"readline\"),Sq=ep.default.createContext(null),Zwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,zwe.useStdin)();(0,ep.useEffect)(()=>{r&&r(!0),e&&(0,Xwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,ep.useState)(new Map),n=(0,ep.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return ep.default.createElement(Sq.Provider,{value:n,children:t})}});var bq={};Vt(bq,{useMinistore:()=>$wt});function $wt(t,e){let r=(0,hQ.useContext)(Sq);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let o=(0,hQ.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,o]}var hQ,xq=Et(()=>{hQ=$e(on());Pq()});var dQ={};Vt(dQ,{renderForm:()=>eIt});async function eIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,gQ.useApp)();fm({active:!0},(E,I)=>{I.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,gQ.render)(kq.default.createElement(Zwe,null,kq.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var gQ,kq,mQ=Et(()=>{gQ=$e(ic()),kq=$e(on());Pq();UB()});var rIe=_(HB=>{\"use strict\";Object.defineProperty(HB,\"__esModule\",{value:!0});HB.UncontrolledTextInput=void 0;var eIe=on(),Qq=on(),$we=ic(),pm=rQ(),tIe=({value:t,placeholder:e=\"\",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},E]=Qq.useState({cursorOffset:(t||\"\").length,cursorWidth:0});Qq.useEffect(()=>{E(R=>{if(!r||!n)return R;let L=t||\"\";return R.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:R})},[t,r,n]);let I=a?h:0,v=o?o.repeat(t.length):t,x=v,C=e?pm.grey(e):void 0;if(n&&r){C=e.length>0?pm.inverse(e[0])+pm.grey(e.slice(1)):pm.inverse(\" \"),x=v.length>0?\"\":pm.inverse(\" \");let R=0;for(let L of v)R>=p-I&&R<=p?x+=pm.inverse(L):x+=L,R++;v.length>0&&p===v.length&&(x+=pm.inverse(\" \"))}return $we.useInput((R,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&R===\"c\"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let U=p,J=t,te=0;L.leftArrow?n&&U--:L.rightArrow?n&&U++:L.backspace||L.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),U--):(J=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(te=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:te}),J!==t&&u(J)},{isActive:r}),eIe.createElement($we.Text,null,e?v.length>0?x:C:x)};HB.default=tIe;HB.UncontrolledTextInput=t=>{let[e,r]=Qq.useState(\"\");return eIe.createElement(tIe,Object.assign({},t,{value:e,onChange:r}))}});var sIe={};Vt(sIe,{Pad:()=>Fq});var nIe,iIe,Fq,Rq=Et(()=>{nIe=$e(ic()),iIe=$e(on()),Fq=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return iIe.default.createElement(nIe.Text,{dimColor:!e},r)}});var oIe={};Vt(oIe,{ItemOptions:()=>tIt});var jB,I0,tIt,aIe=Et(()=>{jB=$e(ic()),I0=$e(on());AQ();cQ();Rq();tIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!=\"\");return _B(o,u,{active:t,minus:\"left\",plus:\"right\",set:a}),I0.default.createElement(I0.default.Fragment,null,r.map(({label:p},h)=>{let E=h===A,I=n[h]-1||0,v=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),x=Math.max(0,I-v.length-2);return p?I0.default.createElement(jB.Box,{key:p,width:I,marginLeft:1},I0.default.createElement(jB.Text,{wrap:\"truncate\"},I0.default.createElement(Iq,{active:E}),\" \",p),e?I0.default.createElement(Fq,{active:t,length:x}):null):I0.default.createElement(jB.Box,{key:`spacer-${h}`,width:I,marginLeft:1})}))}});var BIe=_((zJt,IIe)=>{var qq;IIe.exports=()=>(typeof qq>\"u\"&&(qq=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"W2lyVjG25TS5HRg3/v82z3FCUZE5ZdUOx67hxYumSrGrXlC27VoE6c3qLuji/+ZrqGpaUhljG+A+AbqlVVVJofCOQBdGp0nGgHlKkBcc+xq86CbKYCGrD9xbP07y9URAeL3JfXv+0PdHwTZJtSO3kaRyqF7t0zjnQSpMUtRc/G8uNXkL4OT26hyKbIIIvTZCkxpyjO/wEJ/+Y87snFxOLxq3kQz/JwV2XVjEkxUDjneUsIdkLfxbU8MWQS/pP1bW3Eoj3NaMbnhp8BZxOj+japGQXO5bTfPvz+tQCsLXpKWE7BWSyavV16ZowXC3rhob0tYT/1vOTmdSY8Jk5crk8VfE25UfaLbUQm01bDazfz4vX4drlSPXtLZMNBjZIxmSrt1rLf3s92r//fmaPj2rjteV03utpVrYmDxtU4PbuyC0EJjgbQjLsThXqsPX1jdlm1PbZLi0b96006wChAS3mfsCjiAU5v+cvsqMQPhuFlgV8v/S7F1KN7Tqp/lfv+sM5RUOGTnJKcgqTvaLygM47La2euYEXBX2an7rr6l8CVgwsYypvVARZ79H2rfBg5PAX1qLGtPnow9JYlrznD0WXCMkA5KG/AzWxdoGI7YnIXjK13k89GfAJeY4u1rHIhHwQgyYGxFkISq4xYWXwMNXvdNfLvL54We2p+/MaG4jgVogG3lnC7sHqwDn4URJLGqo9Xzc3QXbyq78rOrpgcaAPSgokX+yvGmIkmAZOSOtH/1o/tPnx+7unajJM5+nqqubYgAtsFHmb8JcC4I63jAJGj+s3zwePJiitfb4ZjLJBlgwhID0hr/ZEBE/bZfo++l0XBNuxyurBHb1N33pnh0sOL4AhGimlcWndUjlAMTuQZl2LhVBiM53b4pabFk+nzUQtsPTTgJFXTyDs0gOvzlaTJATcnAY/3/Nz+V2/mNKXIInXkxBO8iumMMvvinNCJZuWu9H7yowgwSjGNhujoYwAT/A/v/7flqOPFA0aBlnMgWRPGHYMsbnWnn9c86+m/jvG6EcmlUFoAWC7DVEW6DNjL/nnPt+fVeYqgKbAtBjSI7jaKyJnE0DKVaQKYtAamTtaW/fz/5Akkj7gyR6lGC7u25tmBlC1igzJ3W9eElZYZTp+9bMOvD/2/v5SScBbsZzRHhUdc7dazq8niBp0g9OERnG2nufqtt63a2R+n/nCNAsbhwBRK8lhwnZyAaU+e/90uxzz30vkUgQFAtksSVQ1Qt7L7b+qv4xdgJgLVsva311RHuzG4547zn3Rr1770sJ72VilPky8YV8mQghE+R8ZiYwQQBkvgTASoCsGrCq1ANSUgdLXR1DLf2DWnvZiyArQiyWIkSy6i9V6lkkzbpZE1H9l3WzZtvC/8tutTkx1jfsMfwxxzbGG9P8ljmGOf7/79er3fceuH+G0zUNTorKXAoAKNW8M68QAluVuPLy82YKAMZWaHa6y5MRlbKrKvAfzaXdl+T+7NFchS8bF2uPQZVI2Goiq1vHRLUbDw7P3hIKZDFADMSj/uNgWnvwVd8EFFJACXimGnxfN25ngq/41tbu20WcWHiiiQSaRR78/3cp751HX2nPKG5JqRqgBEv10AQnGKCiEoUgLn5cwRCEN/3t3gYSTCJNtS9JA0uwVFqmKyyBwgVqQiq6/bL+POj5/yf3Fvc1tG93oEIWsuyoEsSuolV71ZhZpeOP4dlW33+O6K4K/rvbv1PqKFJhUQJi5FgTxjiDYCBO1PZFD+C2//+Hl/Aq6M9TQi+IjTEYDBBGjkglStiQFqHVU//3ArYXRJPbFeFj8wcMmjZDK15IBFlOIGrEdlqRmZ28/xQuDHGCChMUIoIKQRRQocIQQ5zDF6ZwMYUCWwzkef3m/v/5evteaN3/I46I2CIiNKGJiIgITUTRRNRAxBLFTIkSNVAils7/f1TeBaT/Cw44ICAgwCDAUg2sysCqDAwsdYHBggULFoyqAfHVPf1jb96nZW13wIALBlxwQUBAQLQKCDCItAbRKiAgKwW4koFXMjggbTv02+oPozAu2gGDAURKe8POrXzx8zsDrA7DxRBtVl1nApkNEO48yYC30LQRRLuRIN4QzKJAJjo7c/eiLSUjZYfyj0FZAP+skffTx8I7lkyIu7DoVfD3YvPQ9jZsxyt4saLzQmuCuLAdVAcSJN/+3Uz4WF7etQpZKboPdryC3/a3mn1A9BgrKR676q3OttKrwtawtnz63iIpa6Id3UBV+sdXrMWfZ/AditY84rTjVUAetNw/d3Y5XcF4dIwL2HHRApq87xy/a1M7ZctUvgz0Dp+elzEkGIzvNEb6AxbJBp/wKxGN+ZIG1xzJV7WIJFeVeySGVaVCV2KwfhnNe/qcOKe57td8Wl9keat+qcb5ZeC1/lRD9TsO213sX7OGtMqSdkXAA2T9QNJmvRthWfSZjf0bJ/AquFR6i4svcJ+ltH3XMNHVE/Hfb4m9t3IUH/Y7UK3q//pruN3Z9xYobwNh4VOa2cKT9iEGEivRS9RnDdQrCiqV3Ppv9TOZrvfCH0f2BwPj3X/YtRGkB0kCkeh9/kL9y5fqfULnGD506V/NZJ3Zm52H+2wgj+NQ6v8scYnlpA5vxsmuYuQEveUQh6/FsxRJLGeNfJY4KywNrcEsCXsyvk2YLVHDELUHsyRngarJ+JRbozjVL99j5aTtSV4OJPDvcfTJ3yk4/Hs5MubvTDy+pbAKjLchoq03W3Tf24ic9X2vBZH0TJ1V99+tt4Hp6KOsDgcVvjzelC8PrNlvo3hW9aFxpo34h8dSXshLbhcbBtl+P/dXs+43rBxPnaBM1/GI3Ac4TxQa+Y2AjZgt6yDMCb//0RkaibPGCvwgES+QGgqGIsD2gGuXMmBoZfLNW0GIQc0g5/sVpFpj6jrH1vh3jjNyhQxFwK2dKkOU3vWKTiDt4W9eDSQQslj0627AbD5/0uAuaRATW3y7+hkw1Wc9/0szFAFUXphGsgFma/ibJzkq0AyiFSuG01dCsRHXRe3a0Ddj7xtGJtHxF77UwXUru2u52G+mzqUEiSY/+ENXcpjeLLdPEwsk9j94svWjTydEefKfT6we8vAb2hN4IcuMIWfroYkLZ4p49D/VKPCv1BIB7JVDaweFERb1di2p69CVa+v96wlm8IA3L63yXBCpvlC5PhkZFvn/v9HXcnm/vOhzDYxlRAZYdnp8ktTolfuVCoi3G39S4ImyJxnsTSm7WUQg1UaH9QucpH+1/oreDn3mGjkYK6jtD7r6aeO5MhB90YzmOBSjv1kGvRBmTrpt3M7Mu7Ywjyy8wvbNCb7FbKMMYZmddX+P4PCDEunwxKaxUXG3zOHFdXb2/p7E47jHnnt2frXX6KPRA3EqwAdhZz01hghEMOcvXqZ8lgNX7peTnP+ambjy+ZXPX9z8svNEx08CfAqRFMTGwHUETcLwcKuihXts6mk9DUwqLI7jJxkgD9FtqKCPBGTfViWxHgnKDbaqPB1IYC6tyr6Y6LJikyU1Po+gnMisexHzFtoC1+AVfTYta1E3bbHFQcOEBcZVzp+ooPtOUw4JcirmMBDC3b8RyF1NtsfpxEF12xBxLfhIZv3ms9mQGlPp4kTDxwe2kfwPWFlr0J8O1AhH2s4LnBdPRfmYac1OprcRjLgD8DMlqa7AwGWUU+iPY/ErD1LOUdCeMGmPqND8q6dssxBONYln1/KpM4WaEvZlRXiox9JJasPXXNp5Bt8Pw4k0Z3Yi99gnlnssE5XvCvNkOTFUTmSNjfSAyQn0+wp9i/faidNJKRud1Jy0x1aKFhLpKRQx8Hg7Fo5s7ADHWtOjq7MIjjRHFoXD4wl3krFbWvlnc7rfoyYCNIPfY7ACNIOopwaGKEkztqwLJ0Ym643V9+0kxtO9MKEXBwmcaEdHrw6Ag3bAczdgHu0F++6cmHyKdmLW1xsB+Xc7mjfFF+c2/DPYDjfDc73VHqeH6sbW68P0beFX9MYs8LvmDvypjWLaYp3M213DzRMpcaJfwl+sX0JepLCTIgGcbCbibplytqU8o9ZocbdSElPZ6+ltwkXTS9ccfobsTqzc2oS9eZ+sllAvaSJw/cFrRX7mf8ky7dbVVV3KjZ3NFtKU8abrgcPtZlmu36+R5ENK2Abq9gPYrD5PP8DmYmB28/zwZttEvR3bm3I2UDfls5y+vp6hOYFkGocCSZOu8YGEhxt9fpROSW7P1j92UlungyFh8L6ukP+thvZbvBgZ9GpJjaY3gqNbdP5WUVmkqm4kzSj7RL6LxtX+ibLcl/Lv+dxukeGmtejLk9jcV2KmKne3baD0le4MF7i5htSpUVayiIQfE5bVJkoYbaZh/bSJAycOIXuX6AcJ6hz7akRYUhQHis2tIdWHGr49U38hzCKdT4xi3Qha5Vd48h+EZzjmmzVZ5dWkdaZDBUM7iYUWLC4Zfj2hINNB5pA2Irk9Ko96bLDHM+1HCbptLjgDlN4buSj53qi7wQJpaloce3Xh9xIbLkzLUglFWrIV9htk6mMMp312WiF5CWxf9PqEFhRz1BWfyKn2PpoQOleRvToQklptXHrS8CtFTrDk1KRKog6zVFJFjeiNBzWukv7o7+PAsz0lGft7RuD1hy+ZybScPL6bHBzPzVd7Rn1O9+wN/R2aqx9XatKsnhImLO8NlX1oZdiK42BEwfSxRvaxGKDm2TX64Xf+3dkUerehQUioP83F4MvSMEmpBDGqcCgculKBYWDDg4WQiMwyP8dlGERoYgSpNDODvFN0GXoWa2/K76DJA31yClhSOJS6Wb14TBisqArycJet0pxm7j0DvRZTnslSGkCuE/hc7fGZxLDygVtYEIQbWxxE2jQCU21S2kvsCiZK4nmmfshHU6QPTQmt3SwAkmFEuHg8g9MsjFATbHMjiffrCVMN7Yv2m6SxqH++8fRngcytMNq4DIQnC1pcyODo8sWMjvbqZtc2DXsd2+NWfvqpuyiLFkxFyGILSG5kRcoT1qNQ9KfL4lnqyv7h4yn4+147TFRM57tTB4XykBR41Fm5LoXdNPyryqzd+a4GWJ8oypA77JW/ztil+S6eW0+Ij0VFqmmslOfiOrk25JC0bbIYQ4gWnJawxnYYMm9YGKJtLs+QDo05tP8Pv2iB3Vq4Gq28qbuj1lQnE0ozLRWNzP60Edq3fGtwFmCIcrkieV9U5APpA/l9li+lYUugSbaDbXnhcGeqy0o3fWPrU1wxX1pBxVit4RPXsa1ReiMqMRwOLCRXuzeXMJ+DP5Kcn7z15HBh8sRK9UhndmzGm5sKdasXKKC1j5YDJp/HfKHEXi6KkJifz5GOhJiew2rW6ojstlOdTGpNu8SOriY5VKnAK5UwkNwuUJF1yfjwC1RrFZZ4x0aIoAhOwKrZStGontZ6UotVzt9wdpZbtrVoKIMKhsgyCKnCEcxcPTPPY2IZuC3XMPgucLKetTrDssq0WwsJTQez1h32Y1m5KBbmxmZSIM32fhPzs20zydngWirE3uNFowsyucdX5DzZgW3g3r//XYDgxiZDex6RnmWo04ePjaqrWww5tfqIu4sf0G55e0Qnq4YykaeYkgk21RPnhzMcJ5NZi7sxhNIVS1HJjJazbHMvRgHKUhNUwRzLZctLeM4q1KqzVQ82URL0WCN0Sdn5bJE6GEmBI7OxuTkq1UKR8JIL01ZPXBYmLAu3h6V7vtDURWfNMn/XZHqTx3JavXLpbzgidXI+cucA6aMhwR7XRsVmhRitulmGoJPvVCxstoENfDqpEAvyHmtPTchU+88Jqf6aT0DSS5SCsjZKbxVda1MfIG+ImAyyCoAVjxlUqTvk20Kt02iYjvZmcc5UZsPE7Y0AeWsN4QCGg8Oto88sKLk6kUxAWOG5xcCZ2R67sKlDT+5JWWgp7qguTWmCB3sgDQnxEOimtWrqRi5YKR8PeaR1KgqZj3lkqJOMz5OPxVLTe6NAQ10tRxv7iMmiz3oUJZNlZxtQ1J8r8iWr6qZhIzzzoXzblZkMBPPlbuKsEA02IWBnMDMlStFT3Xn9hlOcvky7Ix7bVXYVRv3IogiM34RyNeB9TnLoDKxTsfLOpCFSPtzG8xHNL2Io+aPscjjcPPhhu0HJe6DTH3BulOSukiyTjAgVN2zdzLjvzvEnqzgvQPljK3wmOU/5nVtT4idPRttle+o8HTBHsrx3ZzbdNVEY6eY3/GRIRsX/ZDwy/toCeh7miWr5mRx3ap3UW1bsMJ/VXjmdMqcSxzwB3F24S43RFSS+KMOx2Y9TqrJC5z1z8AQvRs6QMjQ/b2xRsqXHqSFIyFAdxORvduIBBJHucDdV4WcYR+3aPeJQx4TRSX2A2VS5vJjFijuy7iN46FJGgQ5wTu91GU7JryPO22bdLN8T6qcslwLXWcLXAbxoHxQFzUZ13DQ8nqX7ew0WYHHKl1Ivnr9qtMWlvYOfbqw6q175CrqwiLZQ7w1YBjzbq2m4riTW3QZJcNIYMvCAI7C4x8HtvNmJn48hn65wezgO52Gfbw6NZDphNCULiXXFEl7aBnEdTWuhzZG9Y2yj7i3jya3+r2+OAsWKRIW2bI+xLB0gP5vRyrqR1a3tNUv1cUODI7/9UR5m/Fsb20K3LKCjxiC31oieoUbE3b1ii1w3reH4mnVr82cSj0PRZ7nRNEfd+kjC8rWxBbloqy8UUlN7CxmbSiAhfeHqIXARRnjdkg63WOySdTvm9HWKH/5yeAyVluOtPMd/8o0wxYyre3xtxDDDcWsXdUVVadqKZtKYua1+GKPCydU05gbTRXGcXZA9MrgDw+R4q1Tf7aSOP3jq+DJdCvXZLxG9CgIBplsF5W07+uygfUx8vAyzMy/v5Eu+x5E2i/Um8TqljVurQKeTixzIILLz218Cdt7xqFedfgEyLlaHrHLZydgp+7hz8isZdT+tvyNqocSc80jL9flKajNAzoFFmUxjC4CNqrYH15N94xZVocImlyTsjlGx7DrYbV4VGLhFurWJJHESgLFObriVQp3E9qhcwLo6DGJ2rpt/wrquh6gxEDHUeAV9UIams500/fcvrGDr2prxDy1TZn70aBca8y5PI/z/phjJJGzVVTwRgNe5zJ/X8PsnHqwOJVk/PIDvbN//10oKi6Qsz+jGyQFyR6HuRL0piPj1Wzt2nEmnP7HNIujrDuyIPtRAHPiQEJWQ7rk8m0JCBGc5gV499rASTZGoyYEFrhVzlLlsz10kSv9iIZkNXTqAvRcEsQAc+MdrPGXks/tLQxzwp4O3Ool53MTtwzW4bMAxLVcPFGL67jmJ9Gq0ZgXWg6N6oQHTAyZ+OKdo+SmMwEW+bw5ISXW0Kp1s9oQ3DP2+awpu+qwSqdPI+LuTjUUeWw7uVsey5Wtq6cx5jnoxP0T2b9AXb69fvPFxGFNSqfm5eG4HMP5xRxyxQ++Pucucgp8qTK9Bx7OH7x1PxJ3sNlhu+knWw/sW3eGHn217h95h+q8Pb6IxH7b6YaUbxw2BA4XFJ9/5656B3rItJ1Klqi8XpxMD8s+Br1HMr5+9ONkB03mC2sMzaHClJfbE802itMt+T1mOzJnU8kEzPNaih2I+7dM62U1At9eSi7ojMt/H2CjiSs/VzxKeW6gFSy9jdaXkTLAak0ki6CzdmeTVUCCON+FaWysp2KBW7MFoYTtMOC2jeg9H1xn10ieu8etyte+lVFsCIlyYIvi0GI0hmJdy3L34fOCXhWUbngovxx91cpV/njZJNJdUm1Thy/TXjD4fNoCSiEsrGzw476ZJeojQrnQU3UtStBQQRaHVp4Mh32WH7bYmCJqTBdX40DwHM2gTG/a1qDw6ZRHY1qFt72dj9z1woocwGQVjKt1ZofxVbyT1e+xTmeEznY8CRoudtiw+S9l1lZA3Wldbgq3YjtUSwgm7/6okEEg6O0TItH89a+YDksW1cZGdb8csVeUZe45kPNWff458o+OmHS6PiFtc9yW7uP7Ud8TY62VPSpSmfBVc64nuSnpbzRlNS50YDAUWJ7TDTljMS80yHptlXoAXajzkI66mobL/uiwlY7PMzOMwP2al8w5eqNcYVqHDSsEmlylVEc8y+gWG+pVBVOe/8DVULBpsLoZuiZYhkpWBrmqKQ0m3Ad3bWDQArAIMeZGcUp8m6iDeAEuOOB7V3HarHmQA61yP4mRRe4zkOJwefmPRqcVg7FP2k7BLbAzNcKw0FzzOHJRY0bNz9IalL7Kz9+SDq+WZPXE05OXiSC1IeGfG1cOPlGaZiNxJZUDfJcKxWCP5ecrl8z4LI2EOVws8QuLqXOwra2FH6CvCYD81DW1+TNMaq0IRrrT5ybFf4Bwl7nP1oFDEfxRUroUTW2NxECrzqZOhPbaQt1xWcRzkeXuOvrhuQEZK/XrD+Wgm5XmVTIDsCsLNPbyhFRrruAuhWXiazYJjF7I+ep3m7KJpo36V9BiyX+NG1UYCwQcp1eJ6cJc+7amyyiiyvk4NDF0zJbXKlfu+F+rfxgq951Tu+zO9aneE4q6/zWBRXE5tm7AZgskpPx5jEreuf8lipvienohzvgBE7TyxZYz/6H7bNG1C+W4dnnoKCg5dLcg5ZE1Ve2CILox0666d7efv/DScm4DObfXdUtA1Bsf22GbWUYhdngkjXCnEkU6WI687hyxgObdbKspHOKk49nh585ZdWW4Dkc/ELfy2+67NqZFgHsLU/eqwRAoWkzqRikN8bBsAfeMPHDezOaMMOpBy4QDznpy45xU6cf0kuzszj6Z0gJOk/4ExevhL1J3p7CtS/bNLp+fb9nDEoiOinJyKUGRyo4HbrD0xA32eKFSHRUR6jOpu9561pAne+/wdEyZM4iXXh0Mgod9KqOUQiypTuthVLu1HQnZUBju1XMakgJE+VNmvMvMyMXNgLH66YC1rj3LNXv69b9NUxcnvOgWuCEMNJ+VLOd00Jx7blR+XY+/AKrmktBiOdWJr0CTN7UL7RAyXL83bMLyhe4C2PK82bHRKssnlZa3z9hqEWTpH20n1cfLPbPzD60Gvu7B5wmIR44vChc5DbBp1qaI2kEHvZB7rfTDeeRAUvtVpDWCdLeSvOho1n2v/vMBTBaQzUpyM+6UTZ5v+Y3+dJ12eb5JyudSOuhRujHJWPdWTzPhCasNx5II3ZtYlsBwyg6VCaUflo6y/qLo6y5kjs6yldeM08u+zCEL5JiMfQ26ZnvNflO9sqlZt/pRhkm+nW6CkHbHbBwFAl++NaY+DqHwnBw2S13pqrTuUjwYSHwpQAnWFO5RuQk8fwCUFUDyeL8K7TVKGkeFxWNSXJWP7cn51zpyfjAXv37YZlo+T7Tttf+MWaOweN70NuDK+whs3fsEG2B+AaMn82kCSmX371WxnWx6ANqPlscex4eXQyGtASSzbYHisJoZX0ltDKETPjsCILDMaa5uhknBTKRtKjF9TyPht/HyPF7W8hGisZdo/6H7dEKOhLlDDhPrzXdO3NeT+uG3ubtvQWV9oZjXHEltbIOH3V06QqgUA+v88IXXVhyyOAHG1KMB69NWd9VzZ9ETaRXz66zb69xb/U5Vj7DjuYWA5HmguJ+fVVzypw9OSDyXwm8xwm52jh2TvBC+kCeG4hYCOa8adcE6oSJhJnDhWpqqJI5BH0xyWsMaI1MNYo+EXJ611QMx1FN4utffo0/Cx1U4BnR0LgteUotgYkSZwPoqNsca2J5S0Huu9hRtctW/bpo68evzmq+CaauXZiwuaaVO+DFpNVkvgbAs2DtBzpccrF3yJC11pFEy4QQHxHGnPufcI9B4rAXsgvQ9qbWwEcPHWmEOCSjQmJoHbdi6Z2XoTsj2dy6bx3dH327hGf3PE/FbxanXls5X3PkSljCdb2eN17L6/S7SuHtCDzttuV/tZU5hHanOuCCYwd0w/naAlrZabUkXNUJsY+gvLPnhlWXK9Qj7PPTmCN5R0VgF2N9HM7UORpoKBFs+QobT7zgUudQrH067p/MqGa2tgg0tdt0Up6ACaC59aR3upT+NLOR3s2L1Ncj9ZvtlSSA9C/CDKaI9/3qQY7zc5WTedifAngLLIkvfsqzOsclKf2M/ZjZY0qpKY9qxVFJPLygpqQov+VNdasDtCpB0jkJSLp7We+spmbJ/m2pn3x+3VMi/R9obIUfIRNshcVu/7dTHXhiPSp4l0tyLUI/DQj/ybLtP1zZo8u2UEZj35/NpewCUYsvRXOjta7OUOmol4caEe+DCBbX/hOK5dOU4yyHj0SH6VkEsjHHceaSnARJxXifI8DPaxvIyBv6jTrGLSfAu5zAdj6x760bDUVEaHfruso5rDpqP5wMkp7n2kVoez1ribHW4WuuPVC4so8UpJRA+DSSCcS7qacivSXvuP3RSLUlREGsKuqta5OMl5/oZ5FzpiTAWjD3IRpPPnqAkhAfx6yyax+ntf8TYj4r1+fUDMY6sdASRltgS7d/+hdhH7z77xesx4gLrd5Voqcp/bcV6tzbN8aWHm5xCUmh1GAdqMYacyr+hHvWBJJ+qePjriqzx9S9VXm8mf+zWZZUcYc/zqO7qX8lj+5IObVCSJK7mZLZXR0myfmIuHlc5xQ3bBZS8Z8XHTDOiqjPDxKo2Q/JRZ+QGpm5ZckEhf94vela1/p5E3w2yGeIHVuLdD/yuMXEEmW/3Zs0G8T99lNRcvy3NV2TF+gsaPNe1hVyefaR3FZB61t8qQ3sO1936+oDGtqD469FLEGMe3kGt33Tv39xwz2/dGINGMy3yfayx55EaNw7jRVdVG7WbebTvnCOGpj6cMyQalsxYYinZ/qww6OV3Hw/Xo/e2TkNZe+Jzhh9hxozLOTjew4MY9kseXwfQNxNj0cIMChze8sciQXorkbh55MY86j75oxrQPwnuS39woPzAE7rJYLdzkPBts/F1D7Yu/zCdtg3LfFKtY3yuiePu9CVoVPLLmq13q0xu9e9zbE5d0HPb4NWSvq0xzslSe6eVa/YjIbv9RSA9wt/bLO9t1/PIhfTpxZVkEybgQEm5Dhr9ymjdqQwM3IpIyneZmxzvQ51eU5TltykWeZO/TtYxIrU5RHkFE+Sz6Eg7x270lTMWSL/nGe1OLXgUl3sPrU64MPd63VrpVT5jlTlFZPYo9jBpETE5d62SCHlH0oqNQSJQ027FCShCr6IxvWQuzzphXm6bRsiS8qmydaN/6pW5i6jCrDIPBFf7+gJG0m2VUyykUkbmO2KKZJYBcAZncV4GtIYUAxlxhQaGlQ8O3wl2dngAm5LwoiMsFyExEIAnPVRivpXKif1yY8UMCbM8K5HEZSGUqdn93k+kCWW5Iso4Eg525srHnIKCPZnOMBHChl5dhhQ87ZyvFHSvEjvw6QIkuiVjuSb2kBAHGYuFhDN41ULbCeZminW1IyCfBM4HALqN1nh9fBI5tQlYUH/3q3gt/lNAutBJYkPc46M8zPg9CdkmUHdDbkDqxDa6cqyKExFJR9mKkPdrbab2iwZOlhzyOu+P5GFjYTEGUgevlH3nCRMki4zm0Po1qXSvSxnDcp470jNSpMeuMuLniKRouM4asPBPl5cYEBgkFxWZ/KgVip1xiFGcl+UvHS5lolJarkSfKdTdAexloV0CbrS+jP+gG+pRJzyjdLMqYo4yeqDb4PA0yGCvYo0dOplDhQRoh+D7bNW+nyvg/+876wyQG0hqpKb06hTizJ7oNPl+DDMZKj+iSq2nUEsrPFcm5vfjbXSjDy9ynhgGgR1Hge5W8JB0/+bi6iTeHOrLORaxtaeCF97Sw2TqH12ptKFdWJJKL5QDiUbwz264HrZ0nZ+80ggGbEIGyzC+9n7blyvIWYOpJ//FRthXSEqYowIScTRcAeOqIf/mlKPwgI4gATI4AkUS8dXJZqshUGy6OWA0gkgcQ153gtU8BTDOzJPy4R5JF4ezrRKbAUEXsYr8kp78DQPsbaH9AXJU3aYxH1DLgupMpVGYF/nrzrQhELQNud6xTmRgwjXV7zcpi75qs5cRY62NZt2cJAHQJguJ73rbH94vyM/UO084tnbeT9OIXEsZJxa7/dFcC8BUpNjbY/hkXj5zFkqVbOESCsA9HcKP/bhn0BY+3KuQ2q9IdPaLqUHPXNmx/J2VxSrJDwZBLtyAQoCg5I5yvLOjfOOAfvNzB13svArmVEVTzaHnF9hqohcn32hiUJBkw9g/TqAJ9FjKxm2H6OozYFBiRSfC2QUY2YwpiZQC02QB46qC16bvgBygl3Kfqs6XI9KniDGwbzQ11FKlMiRnzCCdOKBrjJYo5dE6aGIGq2OOsRPrfDMhJPUNmcY4saH8DJSDRpfz0XRV0aLboWaeLbBrafzgi/OQOmAOfaiez0bDtSbSo9Wh4+S772iT5G1WWD3P7yXjGx/0gLvGLZ+DBD9b14xxS8f4EI7XjMw4Jerfi3IjrIZIzGR71Nh53EavZ9dDB96OFTczfXZyKHYzrHhMHWi3L8DX/cHk1neTe+MQxPoVKveUZ8XPEVZ0jTGk0OYH5NhvOB7zQD5Mq7Cayy2F/4f0AK7Tx9kqlvcu7xJuXuA4Q1z6Xt68W5TPcjHW2TQb4I8jwKLDNECnOVu2O2bcPQzpXzhAqG++EJ8mYbYaE+kSm0GpTWl+L2Swhu+q7rXGov2tWs3K0MSCWeetdkx1L4Rv5v5+FBey7JLdGYB633zeD/0K8Y17u6oytKO4+cq4IiJWX1DDnLW+eNIs/iUY3FcMG1Z0tEeS2oBVVyA/FoTiEUDY0bUlRq1LfXDHG4c0d4xX9j5yvW8ZGU90N5EyO0mbfQlJAExJ6UAE3I57fFYT9B6mF/jnY8cptoiiVgwF9W51fQhQXGXCEaFroPNW6ZOa32B9Q2GGhiEIAjMsCWdPQ8ffo5DFQvKSLlCSAL/d9Dq29daNK9BlwpxrxqBx89hujuu3X+pyCAxud7h4mM4yNSbpb/+tFV2kwyGq4TRScx5dYI+2GrW6rFhMM8glc+bxWbdfqJZ8r8YE9HQM+K4/6MjUyJMgWXbBcTWttg1FJvGmB8pJAXx0VKRWX14nP7QanK7Fm/UGuryyiR/LLB8PSiLVGTBWp2POxEPtGNG2ruLwxdOZkqy93y0KnYrt8cjJsCdXVGROJy+3DGtfbDwjQrQL63RnotgDtDyjvCKvvzwYrUpneddWda0FfCPT5H8GcRlQKKTvuWp6ylqFw4NVLa7CzlBQWUncKJh96oJfGCOa0JFRQ3eHY5y1rNRrHYz086KWEhP1wJmnna7oy687NBBYI+BY7O+tLHsxTMITJxq1j8jQtiB2qbXEAJEVSOlgL1bN94Y7xi6pgKsUsJHNarjqpUh+kXeXvXiYA86gZpilYq6J1N/TlJO6H4hA4jA+i0Z+G7NOE75X3BgtG7laPlBmLJ+1fEgOGeOIIiE6OxBsd9L3eoKK/VNzHbaKwYmT7KsFmCrWEBsMssCIIlFXYyhBzl5WbequGXoq3DmhHA+0PqL4SRC+/Dq8yM7SfW2Viecoqq77aZP2ZtE7/EADIiqC+noYiFdQlWVejt+Zsl0IO1rtYra/dsXECkeiStTx6uYNlJg4RzLNG/ybwGH6IccFgRoPjydoob2mJ4wbHOvnSrMY4/rjfX2iPLhVZiPlll94qslj+YiswwmQKGely+XMOX++Kj5NsbxktPse8T6ptJa65th1UztCLy1txbjvje8f1PCLfOD2eHOsuhW8xyKkg5lx4RI5DuwzLdX2PYD33cXUqP3i7LoR+8ABatcU3oWnXQ9mqPmXQEpts2hFUTz+ufPky14uRemySkE08ddDQrAiDSRY+ou0XRFQA4MoCwcY7ndI3kASd+rTSn7ipz+crqyjB5j61xEgPTASKKW8YJCwGwGlBSsH6jYOkT5DnQb+BkMCCJHWzkTCvSUu1cx9acKLpp/3cHpc96Q85yLZZtzkWNwn3Nh1jKT0+mLs2gY6bqf3snF5mcydqKlzgGfbmq+bB1Jhh/QF3mky+nGOMfK47An1l1XsmQ/SGvQAqhN2CZ+/l/5PwkH3BHUzKO+yuN26w5bW3Dsvve0Un3c2nDh8s4nTedfIgUTrWs7pJT7gT+0BFpKXeMOJ9v8BWvW5Skm7rY+AtXfI3jcradYZcWOF1WSj8O8RI1dsFD//5yWa1/wkO/40TXDyQ4y0La/8d7C58fvPIosSOImKAMjuA7yVp/eLPh94bAMOS4LaCcIDD2sC2KRtbsP0Dbr/ZmyazWDqAz2SVYrrVUoaYtvWK0S0Zo31aB/TLspYXkxLjNLQ1iZszsdSCyjRQwVGfiYYGBMccUqqJfVonc2Ysbvan6ixmTguwwLd+gGFyNh771CfzDdCdqDO4GsfDpek7ei/o/f2U57uSMygHaz2YoXwePGIKX8ZFUHovJHEFKXj8U2wn3bcM0a/1+rGgQMxnMggJ4W952z+mpxCYSnH9M+s1GGv0ljH5E1P2G9P9xb6vyYACH3k8X4udVxieXQ+6ZdqK7YCMh8GBZJaGTS/mF0VbxbqDfOvHAMeaF3a2+pZBFZlHiaO3mK6grKM9h26duB0xkoR9092if/Ase4w3iZ25+1F8vYXHIsXByFU4hMAJKwAwW05km8+pHKDGcokfFpCShlQJiJNlrfCKbfB680iwlphGZAHBi0l4zEgMX7j19dnBxy1ezb281VtvHT6L2ZaBLAa3qAT092xAd9BmvLvbvhIYg9yrju5jsdT9Hfw3KjId6cf6x4fw6J4NLYxgbI2vsdq/uOi9jOF1Z9wv6toch4P0SBOaqy3iwKG+d4W+bKr3uTi8RiDYdK0gDQtn1KHftK4vF8FmddmTPmx4xTBHWksbS+d2HlJXeNywqZh81LrASXHrH6iyfiWVPYDFhhXhgxsleF3VMGlEpFy2RgFGqYcF/QjBY7N439OpAzF0cDGJuGx4wMIxmnrEj75vJ/H1ZUnaK8nTlKSpvPUdMuzrH/FBhVMefsShu/iCwGeTvyzAl60fA/3EFYL39eSByWcZXy+cQYLe+uJFidhvbcin+0JmoIV8hruFyNUGvPponpL0Ai4mH1/Fzfddor9q95nGl+x1U+UT4hv+s4c2LM6Zte+dzzVZMLdtkU8u6WfPRysWOOblQQj8ObxPdIMpRko8rEseESzWRjs4+34j7RxYVCg2yqIvGHFjcYjTal5ck8kV8eU0FFtBmB8fib31rN7WuFT1s4GkYSN5Pzf6qmCwS/oHS9AthGaHIb3eYsZy7flsAECv6L9Jr8mAgUafFnOcM8W+SHqdRpT1MUunMqZp5taaWwcFOUKiMTLhiYv6q7aYzeLXb10A2VyrLcJIX3+ypF5+oHIoRDo/TYyMhiuXjtNp3CignQDdnoFuBdDzANX3VdJHY0qLR4cIsqjNB6L1e6jqo6RzLOVJOxDiRFTp2UoPYtp6ED9zI6jVvGLpD3waKkCy+XyVPXDpa0SS2uJVY4jhVYv/6NFSqKf28jGyTn1AsF6WoHUsBFwIFWmaFP0OaPqmJUVf37yAkQ9Isb6Dmr6ZienomhqQTuZRtWNbrGdkr8d9Ms3WEOQNJceAfpa2hdgZnZJC/nj37Vqx3vUiADtNxeTTvq8riiDmSvAfvyjB31uv/jAVZO/uVRf199Pef9XsW9+xsSO/cPfZHVI8+kpPbDdMCHeru6feq9KmGg/tOW8LwB95N4cDJkUjCDI5oaXoMtY19A5QXGw9jkiH5qFa5BGw5jjR5X0klrhRZDx2BBeKtZnWEhMzYEzc1crU3MNULRIunsHLBwXu5s+GxRlp1ybt8V7819d8BZESWiSfMqPFLB63MH46wmVV5YexqwUrNBGDPfJd4kg83h5+HZx/ZMF9wLWCtsFnlfBWRfkN3GvjyZjH+N0nQIJDzMpU903SGn00lLTvnpCqANlc/8pwFVvx9uJm7cIM6KTXDlYnAL4Plz/aU8/GH3AtDfEPCheuQmAA9mfJ2yOm/aEbOBXEwcvcaL3KJ8caX+h/5GcFYXPBx8iinQAXpEPCxbHcF0YfRWvKk8UhN+Thnlc0FKosTdslfSb6mj9R3FDikwdjD0emRFakAXMKz0FCj8J+z/P+2+e4zxP8kp9r/G4GxXtBEdu3IEd1xDZpRg71yxTSrEeLVdU0eYK+Qt5L1PoHdSmpzgXrdgPrtf8bUWsOilZf759dP6NZFEM+uRlTBSafsWB3dN2EZ4WdZubTp1Mvvt3adcAKAiFWjoDl7AhILBsJmOkjoCKIlL2L6y3BparXPGiU3CFHhlUAsCsBCIZA6/tcr7+CAHptkp0FId36/ul6TScZyfROCvUc0y7qiJXg5gHtDuiWDXR7gHYBJPE/rzeBmLZe72BSt4vraGsB0NADkq2D/5v5ps+Yth6ASR10tLUAaOjBt95vup306wvadc1mRZCrOEkP+HRe9/3blNXyTrESaZ3EswUV7+evb8QFEeTqT1IEEOzxr2rcWVYS/cc0fKB5SoC+3NOM9YhPD0QclvWnA+h1nqIkQizxUkGtzo/TN8esV9H3Qj7BgH8tELFQmsF6gSNMjfhM9TBYVGFkWQYGcTEMrDEs2oVdX4YZ1no9+pQAwKy4h7teoxELUbla3Lmi1XeM19uxpxgtHiUfsvUwfkEGhvobb+kVadkcDdFuJiJWxtPe+/XVy/r5v+DZgehdn+F+oKl3PkvAddrp+wnopQEakyUSsyFpfE0liM281e9ToAE+jQrvzEoYOOLmMOqu5nDs/jyi/6RPy+LoJvhSTPnrli2IXdbS/ggU4Vk6/ooiq8NvFsd08D+992hjIhhH/ScVWJOr24PpInM/3gCCwkvXGxIbF1ZvncrxObf+LO8vvmihYuT2Ool6e1W/YTRNVXW4yi/L21ndU67l9wX9PkWazXUaaFNl3YB4NfYuP57X4gHBJubquQdMBA6Vngn3cvMw34c89x0ysrFssNMY7p/Di32HgSLsEgF1y3KxRp7TdC9+lQQtC24nKikfqJwHIVsYYRUSmnp6g930VVjh1lQzDyAf96fcOU90BgTd/Bmyy1haXirmKePcGZklqPMDebAdXIyYczR4UcusgT3saTV2GZXMo7I71dyWJ5IvCkgXDWQFHDMODRdvT45W5Q/KW4avp2Tk0zjVRGo+szaMPv/B7lhpeMhGdGoP3RMxFUzJGcxqcgc36C/aZmpomWovSC7X6XYLI7MZ4KhYhl6sEnMLaoEQgja15fA1HbYoCC+w5YmETmzbepiZFV37XBK6q39jSPLBo8bWGS0uAc8qaKwrrszIA0ISqYoP2xHA3NIlofLBMpeA3Fs6MHd6n8KFPBbg4aNMXoQ9mXQPRR1f4TuXzxPdccDTbcUO7mCUMaa/a/urc7Xfa1PzW31cPEbn43obF44MNwgst3Uv4OtBA8Nazbzn1EEjo6rnQfv7L0rUbKmShwIK4sGDG2a8OhaHBs8n8g3zfxPNlfVJTeyc0V7mQLInBl00KYHGDqCDzM5jiHcPi7FD994VfOz/ky2gFLTwrQg+YDDZrsnx05SPBcuVYzbTokMxYm3SIhkrSZucu+zujHZtYWdjFn7Z4GQWcPrjZmCezW1wH/HsADQbuZKO5bRFZR0eDRLoC5UAuLxLPpa5GCIQpr8kqXKrOnUa3pvVZyzNPCa44fkgl14qWs47Lq2ruyZNm1TXz3tExYWHz/t13oJaz4emfBh8ZtVeDfVrBV9lsJqOHT6Ix90NmGJ/PUwnLdMRMk1Ph+bxIC1NtnDQ4mAtbk7JUIvVn15s8xzVWf8CpJXpmu20lKbQTquA7eVY6vk5ftWbNuOzyiXRtYVdJl29vF2jlNvoq+ZN3P1zSc0yebdkvBnDu9QlGb1j9SqSC17//yLCKyqdDb79VKpaI/VMy0lHzKi7xC9Qb7cI907yh/0i5xgkCvalK8zMpvKIQT7u5+iBlBZd/3lBc1FXHF8fMkREYaWPoEvvhUBMvcJ+T45KKs0mwW4rUhLAXnS9wPXa3tjZfRZShCxT075O+uIj21DKVgqndqIy/p1PbDglspKniCySPxZ79okC5kG39BF/dalHj/6ZDBiwzwUorAfwBq3hQSyNbE5jbLewFmljpbLb4SmSwRuQYcS2i4uM30yjUiLGrsWpNiOnc8hIzyrbKA09VTCfafeIVIYchQ+SZvHXNKIOKLkTY0XgnSJy0a1DV/ENKwOIOc0OdWkYTTB63npf4RfaE3E1qjRxGR4Ma9lE8nBB/OG4zMzJ7LQK7Cf58kq7ela5qvjWDEGA99ywnGNvJeypLpcVIDAHO5N7uTlH9CmjlT8Cn7dSLbaSz/Bk8vb1+Gha+sCJxI815Oxw8f18ZaFgsijDLh6nToX4+EgO48Glj/2PHFPab5GJCRFBOW2agy+aGk80rwx/+4nx54GmHEY3VK9o1iFcMvfQyzwY0n/phO8fufXVtzvofa7+hgcZC4s2reyZxhp/4ZA/KoWTqsuDR3NFPZpanofBtyLp8ycCRbiQrC0D/u9BJmzZMfzle7ybBhvq75CNXQJoLnVxIdj7Ze1lIa/6yL2kOLVssKLIY1mOehmfMuI9ckmwysD6nmsYE5Jk8VDiGuljQ5GTiJDrJ7azDmwl9T2d85ez9hy+r6XMl8sdIwYC+VGEzr91bFgbwKqXSePAgDtZT4sMbYc4tbQjmTsIslOodpQLfMw8P3K0xz/lHDHt+CUXzcEWpjvKwyJiUB5QdcjdHbYv1HUsT5pla5WEWk+xMavI+eVchPNcv5dS9T/bPt4p5Ut+uK83O533EnEWKUN+cftUzar17WGG7/unsxdF3GYoYnVon/35qncpIFvzFU5GKjKP7wDJ2PyQXodrg1cetK05s4CIF3xLROVoOPJdxcElzVhgv1tTOfiZhqwLwP6vXgttEjwFaX2GrLZcv0vpD72Xvjlfna8nzQXe3uh9vbH/adhjOS4egdSnPoeUJz+HVPMf7n/m0rgzQtRR1VKFAAcZkNE2wghS1JHHrtgUSE8FKaNgffD4LbqAHRWdtVbVDaOwY1J3MXZObI1eTX6Wq+/4lsc3Kr57PlNcQX35BqoSU8aBA93n7CeHMAAcTJKxH7I1eVfAewfi159uepfTYeKbo7TfqsgEd+jLD4A+QW0pDKI37WGKif7jiSW56e81ibm8penpiJ7UtqOZSdjGYbFDJbtWrqkQ14xYvu9JeoGFkjXShhdb8eM5FZO0znpjN39X4UJMkMyuA7iXA2Itm62Zf5r8bnYe6OY00AkuJ10vgEdhFXQpkiSCXruWAisMXH0G/q0i+hZhZruV1ieKpWDn1IMKNMhnZnFyaz0zHt8d37AlyN0wcY+BlBP0G3vumS/OITodhBp6nqwpbOICisrrSHK4ll6Z6tvAvxYb0vDmVQl1IfUeXYq9IncBRQ+1heluhysMtSfsKzKb3uOAMNRsPtpm3NCCpe7ndldDZyVFNud2Lm2HG7vPwS2hhj78Z3Pi9XYe8J1lrmE17AcVUrZLMOmbZpBusJAybMLSQ5PWzr/d1jMPNaiGOtX7JK1Y1daqrDThH7g2qXJaYF7uTc2GfsIshdQU0grPpBSfsupmVZdCeaaetXQhH2rfLmY/eZgrtU6Y2sxdDdF8YDXI+Udgg9Ln3ca1gO4R1CLoNOkb7Dz524V2QLN6+XlukJAmgdjx8ZRjPO1QSE0sD+LcsjuZmcyf7sUt3b4mzdU/pZIVi7iSoCutBo/k9rlqNcRCtqwYoDIVF7diScPUdDrRz5NnuSV8bibhH/xho4NuUiaKHL7MzJiujVA+BmyGm54QgbfZNvjlaTm+ZO0SV50rdKPjdgxql6f82XN0hcDAQzrpPTfQ7K+wrbjvDm5Jmg8RpTEZHdhfwklHqq3tDvSmUw8UnnS44jbL7JqXVEzkGWmK4BPpNKzepNlJ+8CeDr2T61K9cdGNIbYh2iWf4ULpTumPcG0LCK70ty5p6brzDFU3i6jLo/HVYmHNTGbcMJGn3ubSa4SedwT5dC+xGF/ZE1QViWNgJCUFiJhMxUs2GDe/itu95oijbHKp66LUjKX/eslCZChRVADwq6cWFKOdyz9J7dE5NifWDgHGm9l2LOMcM/1pqcxLhwpRKfWVqw5qsHy+BgUCPN+A9o7Q7YpUWvHajBERF0p1PgIQsU6nO6ZgywFXSWFvTFrsztg+uyNjkIwROZr++JDZUIeRZm8MPIYJB5h9+nmrPRJhI3hZKFjl4YeSYH9D7r9wu8/e/u5d19VX6brqzFxxP+PtLDzFmdLqdHh5RdjPaiHK+97ZiWUdpDOWPqUPqISqAH0EE4aPBESwJom4gxNl9znC9GBmB/Y2RS7iU3JHBn+cghH0w0B3AwIJwXVkcSMW5Kj49CEo12a1DJKT3GOTCLfjIhrJSVPyc5fJ+1nlSVC+Ps8bJl9D2xURdSKMI4UzKn8yDqJi+UAScLXQVzgmYDygJJdB6uS439uxNsESYDyO+DQwq+S0X34RmGhfXN5PijNMnmTcR+Iiw0QdYDzw2XtgagSc6i8yTwyLyHlQZCNsFzh4u+CVjvuLOWkp2VWkR1X7AicYJQvTepINw+A5hC2yVG5t9RHnxGJ7k11/s+XiMIG1tMHdFLDGF04MocAjS0rrnrvWB26YZvjsltpefByBdmTdjY3Nai+M5TEXYI9j80jmaNjPQrqzo5SBLPLiKJpbL6gBV2sVgvyt2tH5iDPbSv5XkTCMiM+j3ybodlottc4VzuAYJwQEGSgl3wlwAIOgkqxYAZuztDsiy1PQV0zCZoyL0GhRJ2Jy5/gZjWyfB4BFaNHGv/AsffzuboJImS+jQNis/Un6B17IYR+rxFjDkqPBWewZZruIvaXZ82e0kWazeD9jYiFtsUYkbOT52H3NiYxENTq20QZmrM5KcguOiiUzCavZP9clyW+SeV59VuZ+y040Rl6Ig0IuZXEjdNDmBYHO7shqWtScv0Yw8C5rckrOJ1ToDdt2rnIIx52GhUX+tmU1Py3jCWTF+SjcW/u46dBnoLnaGDK8DJtDjirOGJ9cEpQPr6YgigcRk5buR01yqpTc3SmhKBIrO+FmEsPp5TwBSZ3+8aLTWE09ypEt/fvMhCy0um1b8I2W7xmfmzV5pjk21jgYEpfjLMyCGBIv3s9sRQSh2D14/O+/fwym8EJeK2T0J75W0IBDs33PbHqOzuIKkV7UM2PQKcyQJ2bDCMLUMRMcRxx4nQGa7CydiZGqI2VZnn/AnCBjMcFBsJq5fDI9/+ylTYzzsZ+Y28cFiuJTJTFoAZJLEGDSJgpwMbXI4O4rqnNr4PgZK8y9QA/XRYHIcBu8VDjMjBsAOK6wTuvyie8lcSFIoGnXub3qLpvPNVYsV2xF5lkMQdd7jjFyrjwO+fgNHeHxJmXs7Z4DtnJstNBXchmRGVleF4Be9I1kneWEDRGTL0ajJCoeQ8oDQL9PLBtd0s1jYp/ceYuT5v/bgZlvCOaoXh3/omvQBPk0grBpxiAaJdsvS9l8NWJCGfbfTfUrZb3g9IidACh7D9H96u9O3dj2v0yKYe5T4sA7v8f7qbr1Dd2fI5SHUZWeSUgHQ2OEtkia0gzDyxayxOAkJ2Gvh4gVefIVm06omMfBDZFFDmEw78EaecfxP4HMvuiOjyV41432jSLA+DmhmO4rs71glBMG83bK1u3SXaR2gcHqQrqv+J2E4s1TdGiFKTbkUd/YjOfZdf09F+HleXEBnnnj0dXXpOBXYak9iyQ5UillFW/gLIEeC5PmEDoSdHvI8PIsGpOLGq8kIKNBxVrGyAAbW0HG+D+5R4ZNvnRuy4aoV8LquNE3I6XWmrpyiYUhUWzfQWckUXEOPTWicL/s2BbgIIDQmD4A7rczAJfCaihCAcj1RvTKQrLIKROOvWMQrzAvoOB9yWJcDzZoij9UEA+7nK9NqQ49xyJqWkbSC39CRPZ4AD4IjTTH3F4Z8mSo3NVNR4II9Lh3U1JPZ2TetPsz76X+fXIKwIJsY6KO4FuweO88ne4CTyl2bmtppG/RDSbqwW44+sKvPlMfln+vCEc04dTgNM0ZwaptINxD/Y9k6B6pZ3d58yY3AqTdFHchyYvGvCpsDOExhUEu1X1ic7IKLQj2EpgmVYJJ6AV0LMi0GF9qGmvoqfcOG8FtX4Neh8tP1RZ1aHH3rzIynYN5oJnf1wzoRKSRl0lAWNof+x3iq7v3v9D/2VpSAze7X5BO5hzijT1I/hW7tT45gB8hgZzVy5sUQN+zbJrIzJOW9ZKQvYR7F0VTFBjhggtdM/JjEORmTDI+7547Sfrtv+g34YQD30ZZFelc1C/WqeKxtWwD33HQIdS+fOJ6lUCjZYnH84QNu9/w5WQlKp9sh/FvkDpGBnvF5c/8itQ7tKXpRwjDKQDDeJrK1maLsQRCOo1AqUjNOn0fpd4kvPjON/SZhxL4yhTRABYRMYUK0vgv2+htb+zQ0OxrD014L64Xvfn4bX9yjVbosOA098bjt8q9NAIPodExowkJUDjZgaNJTAghH2r3FLsy8dkgVrR2ez+5ZKszNMmFMEJ5IU5zBYbHIVnpuBCbInp2tasE2tUQ/Ce6BOI6DPeAMiEGSUWDAj5CMtw5zRnEDY4QSndo7cA8II/uRnCvP37aO6EqnqH9djVLGYLRs9gQnceyXqakIoEx5hDvYfIC3hSKI/6QzZdg8NY0uxgbpSe9RdXkNX2u9VwklCGl5+SyDgD5MBRKKP3TJcBpS44qlBIpo7KdGHcVvT+xvcpSJWbpY0TJnHiUu6K8pUhmXzQKE84t4cuqusAQEmiJjNfWn0e3MMhhxEG+QtRxy1CjVwsMxXCB3YAdUwI+TXzdoLHNPDiRNlJB1JILlPdbK0q6UpkY2WuixCPBggz+ZStPXobWbnPZmCAP495WX8nfUf+Dfj/e8Y8v9XoEROtlUisTilMKRE8yc/MKeD44gfQjeEMPz6NOt0hWQNON298LSiRuuhZ8GXWQpe/0nMlc2I2dV69eDQwKnHVPrO/L2GHvCIXrReTCS5grWpjXzFahUApbtUf9rXh6UsUCHOep0JKh4Qz7TqxoJFpjGFDNNIaFtlChBN0BhWU7ij2qMK2CjWUf5nlIRzwZ4puTz+cBUNqMdr/SURLNKTjauYsoc+dCHfJoGI3n4+xj9h0rd6ICNGIPA8HW13jF/TbEbHWEXnWt2Gjxzm+jew4P16bj10a9/s53N5Owooe2Ew4YvUEwy0aqUL6RhavkgxsPwrt6gdg+SCS2g16/1z5zPCrA9xaRIYM88uVWao4a45PduwtANHAmAMeOSwg1AGWpm3HAO85pSBmlzrgH4BNFmhiE8m8pgAVBS9951NgEO8Lo149bmAhzV+wmz4hinyiR66wRE+sOnljz2LyIrO5HBStxbU2tzpFBB3umYp7Ks/v2Ilf/9AfPDxWhKPegSQyODQrPtSJKMNxcwOI3SfPJkuWmb2/Qr6rLd2K1wfEFiQEfNv2inAokCaZROEHRoLNMoS5QTC4O+yh1txcSeW3X3NHpuO1SOHt57o7cI2lAxrUgmAbh2HnEtgxXRhkqmZFBsxx1qdi+WjxX+PSue4XeOOzfc7fQ47c5t2v56VXabT4Cl8k7VaycjbXlSF6HtGeQjBgNmk85LVjrrJtkj/U8BRb31eJIvDCAULeKG7vuNUhO9/QdZ4ZBKH4SOK+XAxVqFXLia2V2dmpwiFfcUQlxFydORuFo/iKigHJ0bbChawHldTbliND0myrIJuM+SuKZT4xdQrv5IB9AKpvJDg94lJxtfQxS7+VTzSQJf+2MUSU5qyMiYZ8LXiDFjmNUUMsPYz6nNqpONrL5bAd4H5k3GvC9ZKjIfcT44+HINTrqvsrvoN3TSa4nUMhPNQuYlsQYRB2O8QDWTLMkpV8iZ3HcQA/DK3nSRkJNqSNS6EaMOUWWIilMIQuEfdHl/0VK2WaVYKUJHpOwPO4yNdKyedOzNo13avXIDM+tYl4a8zPoS+SJ4TWKHItoc7/c4dBc1HABJTel95vPnv6pd+fntvW2ICn+xcYUqltDYtcVmDqiYhZ52vxVUW6UbgDVy53Zh5VBe+MtHvVVTNscE/7x7/YzeEq4ee9axqxwUIfh4X3AwKBk7Q6uxc+W/eQCQSm9yXi1qkDSSq4fW4AKthDugibBUzuuuG6F88BD+T5xpdc1qfYTEIUNC4F1WscQ3K6UHjLM7dGzFOG0wzPuLE+OG2XawO1noQLk5qQH+Ne9wN/GBX7z3NmFqyvqgwHMwWI/cDSrANsTnI/A8KCstB/4N3jNv+Z3pk05+L+lMbL/thpW1v9j4MhMeNQ3qJJ4q9s/znv+uRZBmbmLqgR3lxDItaJsvBBB1TfsTuaqvUQlzd1m0DV1+4aI0MKQYiBs8ZUrsTmhKtQHlRyvPqEJQCQozrtS7hEaT6AhXtomeUyiJThqXUoX91MOvb0hhbru0VQDNjYjxkPKtSoi9cbAgNF2kDC9QV4SpIF2kHe3gwZ4y0d7XxiWc9AHhxPdqHN+ekAjyBHDjQhFucVezUDsr6VPxJd0TnrJR/ntBp9DXQ8ZhThg5yhGzztjh0ELxwOJxtCYqvkD1kcGDJUOoZXW7z8Mf1AG4JIDXMCNvYBlZ1vbaz0gk9bZuACTELy3AFgf37cBhLya+1/8ku/62eTm3StPe3hIe2G1S6HTx9F2HIP2FWuNsxNXblpPVvl59fcUdV+iBMGGVG3fwjMeALFBQxY+ADGwA6rlFie88JZKYx4bzYlhYFArtwOnN8+pbdWUvr/1bU3T95/dtipKd/gv+J7l3c8uFhVyOGYaVxM/limYtU4FiU2d6SaYw+aoHGGiMHLdoux7WBCnyPWF8sQIP2N/6NmmO4mQ0Yyf+JCtTdty370qfh0thtwJC3lSGGclrSCkZdJsmLTtF8RnDQHIs6+XJABAs6h1h2a2v1tzfwva53jZopxdWR5nyCHPd/d6CDOPAf1Mn+DmqeweTHnAqaPJuY81979wDXyG9sjw58brvePt/j94fXBoWBepgDVOnJsEdhMzDd7cLVPmgpmeBPwHnPqCQfAM3gTu1H0dOQIzs7y//w9jigAc0F2c8GO4ZAXHY/5DFHrOpLyqcNjSJJSfAeAVW2mZ9UB9BQ6OwG8HcHQE/jgKf/8/eEq4z9UrYgFsarFpl8KD80MnrjatughbBEU2bEaYXPl6VFghwjFiay1asKAG3BuKCmywuSebx50HRZK360y0kHjY8nUFglcEZTheEI3h5rMaUMMMlMStgxeNbkWENQwuUhgygCRUFjYhxGUDVyu0AqbKAAdSYaAAocBBsB0JUxJXL74DQYVguRoVQAtICNQShjLwSJhy8BmgfoYpYQPDjYUGipiJ5wpAgBsLVYhZxHrxSdgRA9gNLH7kS47k9kb4Ul24fmPbCRAHHGVb7Sdi9on5SDyOGJPQO/iEmF0wc+Jxjves9J7lFTGLmBWCJ8UZoc7lATH7Qg/CE/E7lHaJ72HZLWTlUw6FmM1RO/F0xDkr/YrAsExQH4ms+I0QIzyygZll2LeCPOCSlaooE1hmqBpCXvAXQrXLN2K2RmWEvOErCW0YImL2hP2CyLf4A6EG/I+YVdgnRG/4BaFmw54NwTFusKegb1F7vIeBfoLPiNkb9oOgHzi70msMDqYLegpe44D5gnitB8znxGs3YJ4wvDohQuHrr4nnU/rtZUR/evmR4+4jl0/Y/Lplc3OYq3t7+fP1EX8GOSbf4tDx1csNDpRjLhMOSt/TcuD5mj+9esVzpXla7vEM3Xn1hKfMiVcP2DV0m5YtTgf+8GqDU6IkVwknpQTFM8YVv1JXYFzYXK9z1tlNtyjv07JIIcU+11BQlhIOET1OswYSyccZRSHH+WETcExzWKDIQl0yUETBdcxSqqPBPkKhHj9NO7palEcoOiY0wLEdGhiB3WToXCCjxgDifs0NKyjqAfWJApHlrXlPuO7lzky2fbd3qKO52GBUeQ973whySkbIGSXtJ+R0p1dw9NgWR4FKt94gjsOOAzbhCfYROpi1gQHBUA9onsijxoDwCFV1U6zbkAaQQa/g3sJGiQGBVfVpaicURbCDohFNQ1JCwCaBImClFFJhB0exzmAHsuRjOj9CoZ4WYBAr+bRojuQibBKIynAiQhuA1VmHBWwFRe1oLl0wJldJ+vXO43FIYRfIoBYgCrmCQxET8n0y5DSvAKMx/IpYNbKis4QII1T9+QS6Xs4NfHEkpNJtxyozoKI9mFaVwcVo8iYLiWPbjl1hShIyu/QIQ2b6P6VZQjdIqGIBe78qOqBxgyI7cvzWbXZBAoKBBE92BU8KRtgmaNwQ4uJocJtYAA7UzA1QaglvK0ThzEXB4pa9KMmXRTHUt3BStCjsRMcOBo7pSFB/jQh1P5LKLuuwKxcjnKRpKey4AreNoZdJe64oAuYQSjdiLiW1KEKhDd/Xs6N5DlJ4gWKGZqcWEHW91SxhN7kYyyTtrorHU+kPMCeWZwY1NaXs5IK6xF7nzm53qfzI0Mqg/fWcycUHTVigTPVQN2InilwnB2N2G1bPbdk77Jkg/j3cv+JAZ+THfxvfx49j7J7krDwBP8MwabJN0WhXjgWNUgodzwTi673ozURtDpn5NAD/enMDySxmC1E4RKk0CWf/MihnfN8Inieo454H7k3TpJagDN9sfzXYyBOwhypPygY4vnccAtjAtuxogJsH6ldx27BajChYOq4wQSHFbDZbzM1wkCQsW5au16bfnm/fKMWbhKXOWO8qMLzBK0fgbVQY8mUBIYO3L7h0laR3O0cCdxMy/lomstBOAEWU7OfpNjG7Ho76uE9jGVwQ5NuuyjvtjqPHD4vKRAkspH9CRGNduQPvJBTdkMVUqTkno5AAIA89C4rmyC84CUQOhlLw9HY2lLJMdu+vImyQM4oBsYRCZmEXUj9UWy+k9Gpf2x4JTGaJmTkZRFbXfXrHSj4xA10YopubvCghQ/tYnimwHqWhTEdK6njEaYBQgO8zCoSJHAQHxSbuWnlP0fwnFo/jhMSZAT86NXD8KAQJ+yuYLeQh9lDAkcAKPTpwHyZAUX5aLAIDoIhfKZbXPlbAAoVIYM0fgZmzWlCVakBLE5SE72Ggee0XAN+A7jK6TSMoG49DUqG8vYD/PWpWKVGFWEPRyL6SWaQAZOnAYEMrzIeUvHZAA4U6kovTgTm9SdsV7S7QI1QnoYBVGgf4BLIy3nKyMi5lqlUs4XOw6oteRTwk/5m40TV33hOeb47Y0NmiOmrEcRob+pKRnngsek6pgeQMgnFahiRfWpCOCThK2dmS1UoUDlbW34NSnzo5TpMuChTov8aaoCcHnZQAP2cwF1h95hrJfRhdHAXqaWAHZgB4UQtp08in6f+GBHPogLUJQJU7FGihwAUQsQDsoSIY1gaY+NKc8jnT5eIHRGw7rV8BTJTAchC+00mr+9pjW1Aki7nvyO78vBOHSFVX46SetuxqfeX6mnKcdYlStwFv0y1ZJuaR7s1k266vy9ifLIIZIN1hpuhGEG+J3ude33qD9ozWoY+tTkZlHtcNNZIgoZMaft9ci/uUo4v0n/+kF61Fhw4kCqYKG8rEnAQGjs/MkcC7SmZEoKDzYRDaToOCJF2+iRY687YrZIm7o4ZxE6AoJ4M4ugxjR0bHCQroFtk8tUBAV2fAU2fOL5sS9Hxvn6Yd4Tod8D2AugeOknIC2rGeyCBvZ2eO3wzN3WETYq9iAuJagCNe4xEIQYNTcxPHA2QoMGEECeMrJrOpxRvi9IOPAZ/IXhQutbFrNJUxnxuIciZ2BTrQTgK1kpN8BRKiKbCDcUadNG0JJhCYSP+z8ZDsZFAQuBLVMJCMmIuxdZyUc6VxEHw+iYTzeL6kmJ1NoRCpd0eN3UbrlpfbxP6S2/Amiq0GKxLNaGLOfrrGrzfirad7G4z4ry89QsVe+4therdYOJIydmAG8CPUzOlE4SghLhhaJgwTAMiomdYYM+b2AMR258eceu7dYQJVOMGxnHedd8PBoh850RBPu30K46AfQ2g8z7JYnYlVdUgp8dRpQ5pCXUj6saxzsAmDuzgttBDpwYATcONvDQFrE18XozBg7/ef6liATqU54ZCjovY+8eFnKysmMMLFjyNG2unZ9y9EErAcO9CJ3YRg+09/zeKuscSR8b5jBtjbd8wA3APjYhxcuAI6Dh2NZZLMdXLx1dqJHhEH7yEx4ZIxHshrxNu93U84Vg9lfpd6xBJYoChshgtu7QzNc8oTAwKjHnvS04SswQTOD3Lp4JzWTJTlK6moxSzwOQ9lxhfkl1078XWfys6u+qEzbicB/8/S4S9Xw8vFlC5l4UTtPlzIsQ2sDjlJFwwxrAu0ao4jCltrx7CM6EHbZ4aM/YyoPJdI6q/5zJOBTyJpCTH2P5PzCkSCorl0N+SB3yMabGDwkQmiMPhJSR/R6tJqCPAWasvIzkNyWQXJWcYGGKFT24nYGzvMTWwAy77s9AK4YHxB5sOVtvKEjsQebxa2FNimpsTXYFZPDfQmKO/VdAgZKYhAKol80a5rZ0bVMRnGuj9sVLWHXY4m1pom/f/UoOF5ZJlXSAamEsF/yCHFOkSiPQX2ST0ylJxlQVQdrgpuiijkFM4ABvMG3tO9qMoNzlon6wcXt8lLURaHbN6GtvkUTUeOpvs+1nfecbvCoOrGcMRv9vumAj5o8xMfKye3D+fth2+/a49sNQSCnzftpbvJFi7NaJvuSDi24yRX2mrFA5MH/poVQVcIKcm9jSfyC9sqjnOSEDZMGoM4Ze04nnlrI+cEjNU1xIaJsjfMdAJ7iIMhoCYDg3Nr6GuH/sPQrFMW6z+0T49X3S4I76aR9sWulANs9iJH04qmO3MtDOrS6vdIOL5327XYnA9dRKCRaLuwNPQy+0/86Tf58RSTmH9tHnpfg2somjLdrX9PIF0sqjDBKR8nGFTFgim8CcjO4+K80lly8W02m80kWTqq35AQPlp/0XotVCETsEoMgL0+lCnhIrLtE7dhAnurrc/lZFic28tpvGOXi2lsQweGKi0Te2zirIq445HDq0mAmtYBF4IRtw94LzVHnoCO4dDiWTliqq3EVnGi75yhRvbSQkJSxTHH4ffNoNwqhipz/zeMjNax4Ilqj7USiUMExYgFdI21DoX0ozkemqBW96ciQyKjL84wj54U06Tv3zGtRL8kGl0QC2Y4XjFIxFFF9VrKJjI/L1PndPF5kaXP7F76OKE6G4ews5LIt0osU3EA+XzLGzPh68K5DdppXITaNyXMmQaGeNsY1o8MjVyopDOu6e9fAxjCgpUi3o8FOKHX3iznGctX12aEdIeEXdqfUtxdymYHWtHtY3SAItI4i5mMvnGWrhQt2MPJxwq7kPa6uAAf5KU2YAQDS92MI6HYMIECjoLb3ufpou7xJs4Np3c0weMvZlSPXbuu/5rwQ7J8psClTqLFSRxVhR+ReiwfmlBsu54Oiu1EKqmbMIDomjvnNuJalL4ISv35cn7iqJUZsw44yIQrOZZDFhjVWMCinPlWThBUFG/OscsMBwtdCTjIRU3qDY2skgvzXowKIJramnl2odDp+xdAQ19uMqcm6B7+5V/KLwVvFy26QaAoJeQn0p3+2Kc7g7tsh5TjMqLgDCcpMeGQxVnDQmyBJzgxgYd0uDB1zPodE+XK+T2KBRwK53EOWOTjaoskUOsM5Bq8VoqdfCpJl4bzrAE5XnztTAHOQ+sg5GX3eEdMMscYCTgS+ozcE+fDlFW0ZsStgkNoP19EOCQhYleQ2KHIwQunKiCbhwpDmbuY58qTxcZR6ACcBmj2tP+taLGhEMzonBAV+ngqB0vB9W5eJOwUnC6JxvsCuwBGjcScZ/K77yUoShgIonYIYawjGLyYNncw0nRg8A4q3IHU3M7spiUiK3jF/rVM9rdXkYR/fj+c0krwodCZxPAN6cnFZ4+Drf4nkibx4dYgjitzdKuzKQlPdBRg1cvn61Gp+zaVZT40YHUW0Lg9Gg4BoRNhYCqXNqLEqdZBtGR16X+pK8MuGBDycTmWD+sABoEnJYaabvWQt6ZHxmrdLfDWdnNrpn6cywIFVTMKM25AiiJzyixIbi0qqUFSA7gdcdF7bBWxS4PxAcjpEQpkmCT/D1agr24+U/Ifs6fETPi2+2ILFrSymiBEFl/h7fmJuv4/w2IXwZYcX0xryr9Kisx9RzfHscTX4KadtViMWQ8H1vbmj4DrTydhSLIHh5Wr/rRTMYzdnkYiCtUOmbbMsF11DarNOB+EDbpC8b339G5qm6OCdJZrZV52zBSpErku6QC5JxUGZuoEaASZr44n+feVE322CKcxNNFixaVFVsoeqjNvB0PW9m5Cws8xK/J87ZDQTiQwAo1gZKUVUgLSekJxAlViPA5Heck+Qk3iAdzNR8cB5G42Ol1QayuVYEDkrI8g6eA3YvVuvGicmBzn4QuwGZ+0gdE9pIsunhEgU+sshQr74OKvVz/t5GuAbaaiRgCy4sbCXLLqXOCkVJhXlDMiTUMNZ4ErVEyABUre5vH5EIa03iNPMJRTZtT1X+R/adY1KznSYCWScYiY+JY8BxRLaIxHpTy509MAakNgPMDAOsfYrLY7O+MUMYzeb2tsjgYiXZ2MwNkbX3CWI+ZiAz1Zol5FJvgQS4/sQ/MwwvyhBx606KD8DIz4/883QOzCyscBnnCXlWhdeoB/JDADyt0eyv1eKBMcai2zd2ikzugcG4TrgMIaa6XctVFGtIOZyoJw8yDblTzPxnS4H3iCZFww+NVqgQeHpDSgjYQOXR4WQ42JbEiZk1HFEptYIrGQWJDkv0l3KyZDTSe1KnXm8TB2nTPGDQST2yVB5H3ftct2LLIkA1UzO58Rn0FOyYAB9jPYB6GBtT2/Fgp4MFmjaLK6Bq8fQEM1luH3EUzDHnZgPERjgRLYfVSgvTKtaC9Uo9qkIbxEO8/fiLv8QAZHKxzn2e2jR0yVny0OsIvjvSufhfehAbDsmcAsPpvi24Kq1eRClLn62ny7krwuhAHUPRVnDijECpYJoePRIOeqyi5hTqMkeGBWExoupeCNlhSzXBQOkjTETjJlmNy+WRHnIt6BMqWWO5ceyXgdVI4nw0wpeBusbDCUgn5TEd6q7lJqDbdZvmeyM75LJJKCHirSia6iMDaW9nOcXk0FeiVMbgzBsA43s+JtxX2uL4k2jYpd7X3HeS6XD1tPXm0MeMsTBexZ2CN2DBNgxDeABCTHPjKamPEI40sFLmMbDbVjf3NqRoDjeYTWF3hdCFFCgQuU4yvxMQgb8+Pm69doNd7rUK1tHHeW2nRhGABum+KGSBb75WulOw9Bwv0HLnuxTfLfcS5exZMDvMgCW80skjSNkzCBpcrVfUA478r3FLNrr5+NpPkgZwEBOVNH1Ir4sVZXolhfVAOwjAtgKpZBtWurFFAr15C8RnDMzWve38DC62xE8vGRo+LPFxGwdlmlnrLNKNjDbQ5PUkKLYESw4Bh3yssUQf0dUQyJfjTpSFJcChaVhrWmTxrgpJ69cB7e1ZNGTk8aJutf3WrZIaZO9nM09I1j4iPhkJcVkX571Y/3jnb3nLsLvcbwEFEVm7Vf88wpGJlZoK6DIxXXFG17oH86eMF7SINPoIrViZgEA/7gedCySLKI6YtntstH6OzhOSFwymCM6YPnfyv0MTEl98lrzd2pXea3eUcPlbtlwhoTtdvsU6vyTkLcZmcC1lbIcvXZjFXt5qrOLDr+mv/guXZ0WUTyes0oetJ9M8/kkNBAlaJeOB8aX+RZSBw13vaxiIaYpWxq8cVR1W3TRa1rsZ2JToswKSrhPChwi1IM63GuuQMUJA98+1SnIzddB3KC/cAl6AtR+SrhPzX4WnjjqpDE7O/clAF7489t2spA8pt/Pi3uCNZk+CDkRk2lYDtIgL1bvKGohM9bPPHlqlPs4GRVBVyaLenunes5v/kjkspsTUrtvKXZbDF0m3Bv+PKZH26ZxZu4NZxJE1wOva0noT3r4L5XfXbVkFpdzmJ5NnxXLDzH/dKTWeNsCIqX0lKPDriI8K585zc3n6Y7ZXlNiND2fqEedHVSJyaYkTpLrpfiqfZxmaTg11Glwat6HBVGTNT60tBmoiT41BnbQTKjUqRNtQw+dPUa6KidIf+QpguDjxJHD4y7Nup6LyDF1ibzH0QMOO636tPqy7bib7jiF0xG4ugo6A9YL7wT1qlUpW36vN/uKqTsGSa1m077nc6lYfEZxOeRYoa2VkI4cR82v+w9j/exvzC4r2OBdCCQkqDTaBhdGGXlBfMDUEyNj3vM2316b9f/n6WPwysYnOMGi6FHldHaw3wWyb6uxmbgOxnx5kWg1ob9FdKygrHopZYzWGYcSLaZObjLRb58volMcHlcxpCgascmYPNQ9UjEmUK8Xd+rwpn/fsbbPXUG1g6f9vmawA7puKibTMbtRzMqAnGsKzgk5dnfzoUmBPYn/MJ2u02GloOPzxWTudiu2y3EfqX5eDduNeB7cR2/XIEP6vC36MC9HL+L+LewUy7sX+eqVlX7vlS5RNre+/ctJA52uQw3DH/fQF2F1LKH+cvJiELsC5qeANw6NjLVEhNIyV+tFMlPT5H/zq3GDh1EcaosuTY0gtfT2Vbm4GM4yvUYGdhj701xIstP01feJRnQXSVdxok8iXRS0rg2Xa35ZOh0ErEDWu+ZULQ5VdIQ0XYAy381KeSDoIUgTs/XG2uBzrudx2B3ABwaEO8hiClflCjPP8eRDYkdoIjn952OqouD0ZXxcbc+YOUr+w//HCTeCqxNH0FhCdOSG5/vG+lY8yf80z98xcA+WP82C7XAZEGUCMp5ylLlxdskNxFS8c0iou0qEsx4upOv3SWr9ya4bvT7furN0koi4Nj+O0wqXZgAJbtuQse6OOi1gvEYj7N6+zw3F1FMH6wtMgPzaJDITfE+1xcfguQleVqaw4PTseQ9ZEryc2iBWnxuUKGptv6otPpwv9dfF1utgtSajcMpvAtVuqbnf1NSUwEMOb68NW0Lp8j/9mMZmVCeRTpDL0/L0qFDPG8kK3qRn8NJsM61kKeJdY+RPMFN9iH1+496KD9uBNfFqMaitZUERuGph5+8c/+0NHqSGbQyIjeX92q6tnLiJE8ULcdD0u53QzCoebzj30M4LMkxVLgdH4zq3OhRtS0GuRcN/zSBRa/XmcJ5Q3FYj1CwK9A1thgElRYbefEGyYhv6U+k4QDQjsHq+PuWwJr7S5Uit8jXJDpn3dGwUdjGUTitQ32ikfWBLBYG2ekOa/3UUSbmfkdVDqXooQmpigUA1ujiAY07dMgR2i+VpN2wpsH1e+/OvwCllyMIojP9VtgBcYz9CfXc4E9oEpGvX3ogWq8+sJQQF86bm1lIyuUv9PcqkrrmOD+Bgx5q9AERNThtW01yNm2O4Pdh/zzSctH3j4s9n4b176Lr3XjNg5ONo8VD6Y5aez9HeDMG2PqgdTUMzI0MiT0MfVII+USsDhE07uwysFajOi7PBYDMNRASOJUTHQCk9XsmbPXtwNvxSC9i74ByEBOQsMF0riu2v2KBDgQRa4KBtAmD6YoV8SVQAlhDWWCZX2uwAwIB3ebd2z5hQ/OQqJYeXOzj/tuh/5LTk+NH+lg7GmxD4xNPkCxZLCAY2oV5q3idz+CZHJf3k4xMsOFugB5quD8B+JyzguY1/3qya0y535yPgTPvYAwVhLgubfyIXyEC8IDBhzEDqDnsfswcxFIUxRdX+ekPzR1AZj18EnAZ4BGD/FR1Wbw1N8Wmw9V/zhH5cULBaJDFeo0P0+5Pz+l2PnnKyvtrC6vkbNpWSJwZGYh2NANUCErYHXW0dQ2PKySTUQzUkGts6GsZe5L0WE5KHBVfWvzxeoHVYdS2WaGw9Us03ntEufSPhynLBJANYaivnj9DD9j5ZmA8zbm/AqQVOBxyDHOVliJXiPhD5VSe6t0BR2H7I3P89YgCUVynaQ2s2JoqBEO/9ZnATKn4D4TnicXYdzN9KBZALC26+2QVGfN5oVZKLijNLYvN5s/wIfmNqqEl6LZ1F2xTSLquQyMVSgbBH4l+3CB2v7/WV/vKECZsU7jf1aPeO9EZuvUBMljnGt7y9+R3QLE06zaVEXRYza8RHs3XQJ48aGFAnGE3Pl1N6ZBPcl0sZv7kSePIilg+ITyf1knjFSvEbyNWXXtVWzPBKeiZBAFT3k50afAIDWhuV1tiG1+cT+ePMhD4xZo2Fc+0BvvrfM3EdzPlPFrwDXX6i3UpVGidSwi6L1dKaJYOpik3XCFnLeSjZzaJvL6nRdPUH10n/Txrz5T8mPJSyP0qqWTJVXjdmDy70uVQtF/Tqr+aIn1gUrsdv4aZuP0fIyGTwqJUnBbka3y4kYUz3i9OTOmtju8244il8WurvmzGBc1DVruH1yCacYMywiEQI10lE7UqQ0SVO/ze0e5ypo6xoDgYY9wKxtux/Bgvay/IimszOFTz8oOK7wNrj6NwvybsCl/nay+8rbL9IE+GyM5aX75UlyifV4frXfqzfJEXg5RE5wvNFTeNec/7G0VUtEK1xjoHoGWFI+LjCXqAVVM1+PeaCsUEFwYW6c7GRnaICNBrcTzzJS/NFELLjaE8ZhfLG/MmB8ik+pE0fO+UHUCp171ZdS1bN4FO7DebWAUdbRwnUBMFf0/bIJ9vijyApPUrA/sJOC1fSfTpEDzj6wciq/vDWxrg601pL59fwXG6gAGxDhyXK1iW9S/lhIu09NPY/WuBBcm0L09MVyFc7QholfC04JrXuUc74+siGgRIX+z1oHr5mo3zO0bKgw4Zej3MSIH4gh7mHtO6h3V4YYu7wZH1BopXcrTL/vuh4bs1cb12sJK1Lu1jm7jMzGcDbVqtM8JkYIzlHMkWNbDj9eFfQ0PQK1wuaRfE57fXKrTgCkFYshib4DjWuYvLAnQajPeOpGyoIQ/kyn5srrJRWC4cwg6MZGegnbaACJksiSVYwVw5NbaVtlBBCXHuCS0/631NLc+iy3S3Uxl2A1lQW2zedKR4E16jevwFXcuxAN7Wsr+C+Qvqhg7IA2h3tA6jdBhLzH3SdSFJd1p9WiwFrIkC9ZYdtbrGUyYLxKUoiQTlFPnACopfufyUppZEZfYnyWn+Z4Fm3WHGrQliB+oGD+Sxw6LWjE4toMgXoJQId007UBULMSwdGHFNhAyOhSWmGaTe0NVmOon7AG+y2iHyK+3jKkLJL9LLIqx/iFdUD9rLPKWI2Ove0m9LtIFDPBuNch9WOrlObnwRdMCv3a6HdlCYNW/dy1HXGWNzT6LMG7pvsAMmJES+PjwoJifV6z4PJHe0CyhT/tv72KNAW6JcOUGWMSrnVqCrjKuwZmFYN/uYzSQB77xUc7ir1thC20V5YwOxutqKaL9ysm49ydCI9gdBl1+6FiXL60lJ2FlFFfVhYqN05iXdRgpDL8Mh9vDr1poYXhp9tSDAvH6ZSZJstBXkmCzcWAsW6DkN7ZjlAPyKZq0lRJYXwzsVbpXfvr1bsUFWzdgjMtC2zY0Mnrw2OVfbTvPeCri0o2oZZDLZOtQFZVqeKklY4fNy9ZqctMo9HP8bCNXV5WSRa4OtFcskZmjQIZLqzEL1dRmlKtReBKwJOzgTim2axdva2UEntbqE7o6rVv48h3nJdq25QV2qerka76lgRYcI3m7XxAdmkREZqOOVfB1QuA7+EvTbUT6e6fkuisNNZ/TkXnA1nwRrxE7TG96reZtxdu3TeNsVjKtfNqMmCWxj2a6OaKhk951G70YSRd54VbnmrOayfg9n6d/RulHiMWmeIo/o+tl43gqsmrGyiXGlK0BfpZ/YHajQ4tmKYlBFcnKpIsltxNdxQhnJiBKNhIj9kGSfLpuoada05AZZnnqKxoL2lehZQ/e6MOp3yb+fEZcuDj1/EDPFQrueUxoqVg1t1EJccQ11mEzLZYYos5idLVJYGrUE5nmu5Lo2yq/4s/VRYBDP845g6zQXxi8PiI+15/MsJ+aavJ7XuQO/BaaEAJA044se6SA4x91p7v9VYNWNwUT0+fnagB+qW+TIbB5cgWyVFmDvUJA2F6ifyfJP9xCmZL7CKWqK6PKicwbVmcxloDLyOeLO4BsjvN2zN6GhtHLEKdsebw+bwC6wvmrNCabptAtYJYlPJTLsDCkOVKfl1cRFw7ZWZNk6NdjroikjFFLOzghylBMCx0PsxsbJMPtwaVzc4dMdcr5hN0oBoRrw+2vn7UXVglBqJggTorq0U7QkwyKngaZC9ulm2GVF85E4cLdp35T/q92gie0QBQ8DdIAO+Yw5MpruUtdws+3vb3qLJTHUnkTlfB/Kh/56NeK4FPlIhhljh08+VXn+PpBw47C2c6v4uFmbJ8WPJO/XpTBl5WFaG3EQ6Jpqcp1PXl0Jb3vLSg/zy1zi2uJWZOXH5RJozhUSpWKdmEHFCFxYe7qIw/c3ku4jELUBVYxA1og7TXzLtwIEnuwS9PDYXrvmWyPo0M4M5sfJErCdjwqqIRw/rqDnVdjMW2pxOkESH8cKUFc5YRYgbvuyBFpTHs0ptdLR2TfIOfRkQNhfaCoK7DRzWq7QeH3RA8vzYCaAUq994nu/F5QVrJ1myHVFX0Ow/VwZ7hR5l/g304ZjgVaVZyJS0nV5YUonT5RA1OWJ5AesoT3ktNEmSHXjpr4xt9MOogBDOiZcWvNDQyWytCI5jj1F3VpnWtcF475x1QVAoeTDtDP+6YiaNE7YFnTUe/25I3DHKxX8iQV5pZQph6X9x34qG8T4Mtx2ngPT2oCvyjmGGFO3FIykl6O50zh3Wn/NFMnRLg/4cnAZzy401Qle/du27/5OQ6sP8rPOnin9QXwfQP4Hpv2MYoUNZdC9ALW0QW1CbKWAmmxsx1AnCBxd5ZOx4HDTUDkscds0Z5AXb7tO69bNyM/1midhF6dC27ESGDhMENtC28QZBFEL1WPlMEBvpqnVNkOetIeQoosiqWgaFBhbZqJG25Vjoc36GN/yYwIfr7xljRgmsOFcu8WCXhdfTyTwFgIzOIPPb8cRscfOt548DU/900TAhWq+wwIweE3Q2zVzD+AKL6mHcY/CJyzvgLRwqLTxXqtDXaG1npwPZ9PepZyOtnemRr7l85j8hJOoCevAs7WG69hoVnEit+zSm55iHjjzgQIIusWLRLTgkN/D/eZiwOXLDuwJkNBrq90TVioDTLJyG3Pok4pA5F7b1E1TdOiWw7NhipNFt5oRBhKP1yh5l1U6Qrxe2MZyiwXzcF8IDK1VbSEj+1VFWF3OOQclylZTE3xU/yVnIhHTOkqs5FtbQaqGrueWe8HVxVm0w471NPtpSEUwUqFLqMI6WbRpkJQQbFOSbyR/lgWJl/j0nonqFZPr5iqUYDodKhdJXfx86ASFyNM7+3DpRpeyU3TknbUCtAmI1qDD3m5Ec2JmuYHUoVx4DDYmXqRWAK5chz9kSpZHugidWUIXMyv1ROnvC3MSCHf2cb9NCSQO+rcqBbLoGP6HB6KcpP6gzauPoxWOC1+LiG3Xl2N9KXWaBNz6hettGyVApFDcNOF+dtjl0wjK1HdbenQ1/DgJDi4S9+P5CqzgyFJtu5W3nMhL7Sf1QByNk2yJKW14h37po8wY86yOq8lpHpYgecSUL00oZ8w/u0bwKHeYDn6mWebJkhIte/EmyAvUyTFxpUpWKdWZUHqWOnCYUlyZJV5u5jDBLPqGsb/ZKTaoWsgNF3Xsru4A5eRBmwwkSBv2KGUXFOlA6o7KmRD1QeRQTWWCo/G3Ab6LvuDC2+TkRLbvVTQ7A8FGh1V6xvhRSJSGyq1a8cEX4knn32rCmy9vb0IC2VBabcbliolI/7gv/luspNplBwisv9gUpT9x6BasBKxiy9yf1jlgt3iwd+gIb7pAh+C1yrSfXAvvmOp9wyDGtl2WvB49CiFzYYRcDaNWExL+FNnhOqG93D1+REHjQIWL96mdV7NCgNPB+xtuqD75q4aFHc7QKExALAbkvfV8BaIwFnrwMaSSo870nkaGXlxDKW6BIMokM2xjxr6lgZd3npb4Vxg5ar6aZMqmt+Jm7LI4B+apyjmpLHogpFa3OXyXMBiL8XFbisHdA7DrlYAPm0zNehxhe+CN6s0ErGP5ext69e1IqcDz77bOqoHwP468hlll0MrcfAj6REdvNdYHtxxahcSF98QXuTNp7L2ZsoE1x+poRBfr6zJUTeg2p+Tqe1LCNWQj5BYDXRGEYsiTQAjjCXuMKc+rnNRsrZJcL/NK6AU2jqyaD+4/LsliwZjl5TVqM5iDJiMZE9VBG4MUI++ZcHrlbhuChw65neuRFJC072uzcinSjB0Yoj74lIN0ghtqdDCl3+xZOvw2DxOEfwwEW80csTEnIJOF1DoRWLCVyVaIyhf25xu6QcRnDp4cZPH6QjBuKitrFRHn78Mv1u29nL5RYg9zXcX0NajWdod7LZSNow+14wJmpvU2AuexJjrUfp6XNA8PuYX/PBn/RH9AIo7p3pmLvuIbkED4abolLM/ELK03iTD7nH4+zx0vAXLyIjGuvqPlMMluaPngdu06tI7as4V1PxZagkGRSN3E/tNPXOn/YFeCNRqaxcQP/0AVKY4x1/huyghMiAs2FbaGE6iCoAGWzV/4+7DLy/agcxkjK4xMTe2X2IB6Q39/anGkBRu/XCDLJon5KDBqk3e0URxm5kE4t6RjCFK50/xUASu3EP/1cfTI0qzYmC22Lxh4oWOrvF0MkKBcmTBPbTEl5r6kluCPSI7qWtXOuK61EGwrj85qj0rdggmWVzHG3LsdJlil2BLHgsJSIVx8xXhTacwHJ6e4o/ApL7pYpsZwUuO909ZHPBMMyTKGsHUkh/pjZ+kZFR0cXC8iu3X1xZLu4caQyFKwPhcKVnfaIYot+WR2CH+6rdwWCEOYxuguZEN/9XtUKgKcPHFwucBgDKFPYU19HntSnZwAaL8Z7IQzHB3z05idGFhN6nJsdNULIUDzLPVMSzPrih2HIFfcK1A469Vkv5uadeYk8WYwYXEo9pf6CF/a5HicJ47PIQsqoXnuF4CK3pClRYIir2CbT6jaNRuwfvDHRei01WQc9XT+PXKM44bgK0z5W2t5MiGxc7cJRZ6oCEdn7g7BsOhLoRcuOR+485Jit/QbSqxmrJNokD+Iw4ld1LS0Rvi28bNz1Zei+g0wigQX26elR2MYfjkP/QwE1zzIcz7UQ5JZRU7U/zCYlaTdgm+KFMTxb4rxT0Gt0kSjSQlp0+Awqbw2tSd5dVG1skq1K0+fgOW0+zU3SVBZgmkQiK3vp7QvgIoveH2TadP+to1Xn/2PzkVJVhfXoc9CG93Js+GKtN6AIR8NDOZAubP+B/X270RhlppBEuP9fHGmspJ9zoG9+91+Lf14+1NekszL37bwkGvf09ZuQlgEwX/M/4jMSAwqf9uSYuCXxLp0x/fyvQdzmjk2nrkxT236Y0sVVagRzEekj0Df7eeeiEMfUaqQEU3W1OLgBSlMp4korO5eALqfvgAXAPI8YR9ZUBoFX/FgkY4zgqKVvegzhM62hYfOmm0TZ5udIWBcFtkiabq8GyMGdWgLB805Ezg/AnHm+8dCjJv3MF9VIdY2ggcv5Px9qWyJC1+uOgsTPBs614CLnjvYamaQC4AJqmoZqKgoCfPL1GkpsDM046uos4AgKhjggnAvX7mQ5PNrbfw5QO9dbLi7WKRxFTCWcwNIlyMLoFTVuvwrm4cOBPhFVJ67g3A21fwYRlbId6YwVTIw9vGw8AiJ3dxVOCWVtpiYVQP1+27kyTo4GzMVmLJm9fdxvrlV2YDuPpGfYuqTQCDTQfvxGi033l8aFE9Pi4yqBPSckbhYGoOaxvnsgBupBSc/VaQib1KzRiuhZ6XvEIdFaJlWu8Eoz8dRyv6u/fHwSdm09bdrjyoUTYGRRr1LGLwj1uYTMeBpwf3UxTJ/qAY7KAzpbipEv4Cy/KqHKrNvxRdFe80HzF9DE3DGDfc4bRLGS9rYx7SUwHcnQ/YsAh9ev9iBjQzi3PDdVK/w4U2AnTC6Y9OqoYHCBhSK/Y3uQOp5e1baS6Cf/Dh4wpNHLU1SSbHUg/cXpF4KyE3pl3Lc5VYH7wu96WV9Z1QUuci5PB/EizFgg8INVkb76iozQO9vmBJHYjQyclGDQrPzsjDRfHiewCj6Gu+sZpUCMwlE5zr/OgQfAJ4MQS9kQvr/hjDcQ6ONCV+JBvuw0Mar70k9pk7bPWis1ouKiorKTqgMqA4jk6x4S1HCHNPG88lQK90Rb/sSR7Eur4wyig/H22kIEmaxD7ibkDEpbAFP1oBr/4VtCziq1sJzMEDdwYDpOxcKKFI+5E0Itc37Djg4kQkFzHV5VNm/gMG1M27TFiOupY5w9Iz19lspNEQYqjBQqECIV5j+whABtnHQtTN88xHCIhwxASHvSZThtrQGkugoEFVHRNmKRDXHQSrMPnh7t03+o9hT37WZ6x9Ke6EDYWENfTKUDIs3DiC1XeB3fjnrn9VPYruSu0/3sWf9TJqnSDFFDCTZRZEoUk45jRTcW/IGlSuKEUHUMmYMyiIgyRyPW+CDke7yVWLlM+JtU4MQUwUVywq4rusQJsHbPlztrJ3drAFA+BYSDjwrdL5AiJLLsxlGQRUMY9MIo2ZA023X+fnejWCWx7ueAoRQtQwVBUDii2m+cQbmi0oL/9u/J+kAfg2B+8n5dDUykMhyJW6QjgnSMV4axFFNp+PHF2lGvJdpINRNBHOnxOP8YgxSOjYBqBjVxpOd0g92oaAkWhEmyqvVTqSp+nGX9w2Mr3K4h3+McRnAgNjNKf/Fp2j4fSCU9r71mlH0oTxSf7ZkcS+SxlNROqqtlXITU9CVMT9Viv+eC+X4/N2roD+bRpfSxKwIae1yLCbQRMDVaguuSe+zmS5p7v2k8LhBFjmOVQSU4SrIG8MAsFUgIEnxaVKpbWNNZR/ppFT+zDYMzgZGHTJLaYgijTMWvJF1OIndb+VkzNxhA2JeKbL4j9oGJ8Vi6l5c3hfJylQRA4hMlXXRQ1cGBxMUgK8FZSMBTUXI8qomTttBFqDVdCgjX7hpXeCYf2ntQ2qntFN2cUHLaoDjpODkqtOZY5uaJGAGMVuQBlB4aIKQmrrYCEmYj9upNAuQgWIajhmx2KhJkqULXI3WV6m+iscevc2+mNIHUb1GpbCs6H82gPSEb7Gg//nJx9jldZ56yjyMsUj8ZtcY4T2/jn9ofd+iDM1dxu+KrfmRjWVJmMICXatEp8KQrv9AAcqWzScf3mLCauWqAJgAditfCUJWKxJGw6NbipxpylGguuBJq1H8p1YUgFKwV8fBzywK+VFJqcrmbLUaBMvC3zkw4K+it1JkeTAY1fsRG9MQpZ5W9LKL3BmlGkYzBMN9Vwgdc9MD59o7I9T3RWhwC8VqSJePgzlRcKcOhYEv3yWQrpRTU3V39ns/ybnEoAYvSdXSk9Q6Rfpj/UndIpKgRGT+cRCt5yD4VTdI0CEU3RFj9KlbSQ+w2kDwpBRF/lis35tgjWGCC5NBgTPlLW2Rq5XWxPb+/oRfdoW1eXBqdhqzF+ywIsPTVCHDqgZv/+vI8CQIVgYtAt8r3jFCcR/jCiM9YMGEMeRlhD9maOXT8B60IK7x4COOMlev3a1xHQmNPstaHnsEwUhV54kx4UDw9GiK3F3k+Cg2y2KTygPWMLFKrWHOKymyxCcM82t7a4YMGQYr/9UY1pKbNDqzzayH9DkUupf6tnVZMrVWgBtWiXzqA8D5zHx9ObYwjcz+FNb4BqAyMssFmICcSN+LpmkcxFxBsiHa3aBF6jYSSUwYOxKNLBgsu+dQdbRL4mkD4jZYh5WGkUAqmofdKKH2rFbCRqHwJRxW+oPonTPVpz7xZSUyOhCuUIebA/H0QLU/BruSoVYnDHtOd/gfzB2mBK2IIFJM2Cf/rcB8fzISNfQqpWygSoFa4UuPfz4kmjzn7YVF0hyGD/FAXjtoo0JvwiAhIlyxPMPxnFif9YcIW/Pd+NKtIytXFMY0GadJm3QzGMaYVIOyK2/Z7C4rRF9eincYHzku6yKwjQozZrN0S07Kx5RW5kF0cOJs2paquyTnY3Pwk03l2Q/BrajBX2FVKJWIU9Ba+2BJlgt/4FFBL5COjf3iwvi3g3+vztJ95En1sqKL28xBcj99bAk/pX+t/lwwhwkjgNSDHXcx3UIY9zDWppsqwSncDhqBCBnUtjadNawQ4F1ZF8f6MkW9pqcKX1H0h6vfGuQFdeFAXm0sHIkuTl5vHGSbcYW6VkN+HLLLkuQQH4DAJ0yRI1EcZiltr09oKLqVc4PruKmKpWlIaf8t95kafJUEUe8hHUnL/w4WFNjZ6JtR0Gt9FPTvq7qRPZXVvvWW7IHLgR3Y5CH/RL+ZHSosYkeB6IwsfknKXT/zi+mxYWJ4FzzFScvcwx5iDNic7jehUCDoz3GEcp30NBZ6Gd1tTUrh2P1GERY7gYDSznHMUOVai3KgSFbhfSEu1vWakAE+vDJ+WA2DDnTaWkfF+FgicW+yDW4sYjTGhtQbprSnzuluiFUU2/HJh2WAvatAEuj2pXL2Ib1by346he2A4zS3AnBysu572SHl7dy0ZTa9WYWuKHS8/M4oFigyxImdh+PiyD7RORo/b9rgSPLnalTz7pi2DHL9FJSF+WFEjJnnGcW8bqf3WBJFSGVqFb/qLKPUyKwVmyV97VUtaVVfXy5AlFUzdugQDVGYZdT6G19uGNtjfaPZeoOPSKhZv+Qbp30kZ0tUrhAOiBXzxiBNWjeqmjqd7C8SgSzbftH9JhahCpRMX8UnaA0QN3K2+EB02hqi4GrmBj95HHgjmFzvzk7Ta4kRHDE33IwhAYHumnODRckFA5KLPnfST3T4husXNsAx8DpRp1BoojUWW3xgF3KxMeyz6y7A6Ld8Si60CCEjxtqyGLd3GKFPTI1bWS4Eq2KBIkWAbW9xNJ9pmSweiCIOSRIdblQdM+CRVfpgUWZ9fSSTWxaz4iQD7k1SfTF1ShPCQPlip676ztlxW2x0JKhhOlM8PVlizGVGa4JZe1A5juikJBADd+bxQrZeZpVYJkZOtEPQXdF5rLUVmTzPR9oEFWibSZaYjLRdA08R5SOSCZ7T515Vx7XsYjw6r4hwmSyjNARrU6CwSbyUyzL2jVfmqsMUHeaKEe58XC1klGR9FI0YF9SnkhQdHQ6PDYe3TMT10pA9EYI0pRTaU1UmwJwrF9gpH5PkAzPFyQX65/woCbEjsegh1tQBzZEzE6JkGdJQn646fb0kj4gX70CxWOIShFT76rBOcVz06yYWVV1GzmxHg6wAJhZm03oREjenZd/Ll79BnzgXPFMXfOpBEWXWkdLWQ5ay9cDSpOlpsy4MLKIix1MW+LA69Ao71AIf5rxOFMYGc8SRTDW1XzoueVBNmIgJr1rPKId5cvfGyXffL6bZhWfzR6n+sPgmYG24rUFt4cqq+id9ra4Ua4FGsfIrE18eLgZxZLmXYLon/q10+WTEnWM/ViPJOp3+BunSO/HVY+jNf9/IzeHDUqiMdDKR/zPETiHHVWlvcy0S8C9NMn3KYytCZ+QYopeJyMey+raUlFaOgBsFdcAsiHSR+sPaQuiO57evG1WC4hwGfVamffd+zF/hMQDbkB75G3Y/3YTr8CnFCrL64NuCjaEgjiUsoFLf+MnyM0DRJoZmPk9WChOiWefI4oeN1Ib8DoN5deIyMAUCvtjB42xHexdlfAKOMGtrf8UtZfP7r2ZDRFGZVbLijGYiewWZsnBWJix9glByx20Nx7Q70qbgz4NotfvAsj9yCxofWJyQ3yN5fVsF9up0qTAwejKzMs8ncJCRxTUuttN2oBXikv3lsIDLcum0vB6zQql6sCldYccNwylowZ0FTrpSEu6HKrdfwuwNrh3UympsFsBoi0YFd4VaQNa2MVAUtAYa272uE8K05fDx+f6taI1MOvdtj01L2bGxlk6fxOuI++tJxh7YBWIEHF/T6P598p48LftcMe7r+9MEGyKwFoZzf+JiDy07g4EHkEyP82omiuXtYtJwzjyOzc7NxaND7/qpmTpHhhfTsJJime9vYSGnR52hfLKOhMtKvpursmG6TVxBg2IbWSBOymC51mocJUbjCVOZelHEJmSKxC1mHSflbmBkXehNHjtK56IMm96rGyx07NNX20mwnhhOwDxuhn7FK0RDqOYwpud3BLchpp47MArD4themlg3SGDhW7hnyk61mix0ztfCxAN2MUyA1XBpIMPA1QQy9WoTYiS0dQK06x47uBzouaJiQnyQJcEzf5ofXFZXVgbVXtAA5x4uoVOeu9R6MKuLi4B2jcQ4cHyVWmIDfSl31RaJi/GX2DdvhT8dsYNidUlIhiggPYGVUti665aIRaI0D2hizLJm6UAI/zBBHKUS4qIONOD/ZZksU2GUhsWD+Ivp28nUXRqC4vLgJyODOwe8GeChYaE8d4hsBnFhJLYBtCy4mgDbwKXQk7DVBChGD4Tfv0BjHH2gx92vAry/9pBcjhyF+FGw3DtYI1QhLiXdoanQdqbUqGZ+nebtNSdm8hPQUHnO3Z+mKCxcLuiaDykhPqhVX59joYN3DI1lWtk1JWsZXYuha0ttcAat/BZQk8vcj4Elcdh9XFRoIw33Ai0JUx2q/IKdP036FpJ+VdcNfzPFlMtuLlOCr/BWOyL9W4CV6ZRAYax6wRMPJxPt2nJyAcreDsZMSGl7ljhsw1U2nLKrn67Khj7gKY48OlQaJTrYQDQQY6bys6U2SItXoz0iHPhnx9/ojbdcmCt+hs/TkteoLWbqmbBEMtZGxEBdQmwTeVb5bovyHqW7Xqa7IQs7aciWm0+70XF9RMPYw+lStmtDCxoHhAEndgZoBay/qEqUNRa6spBUJaeMvOLURkaoIEE7CFPcKH5Na5zrWdLA6oIQBLkjtgzvlSZqcK96m2VbeLSjS4l2t7Ys5lJ7RZHzhVc9vGMr+M75S6qIlNW/5YUsH+T0z/4hGB1JgR2cjOI8zGdoy0UCtWjpeQSaNyha/Xzlt4GH9cLIJS3rPphT9ugMtg2FHGDROHkdoBCf4LzC/rKygIMju9qnLLibp4PSZ3qdgu6eeub+2pmXl0jGYmrKWYhrpxdpnsKHdtk7WJA76dcnXeYVka6zNGFClrmin7BDbqAJmK1jC9YQL7IIArrGsxxXBjMLE7CSwZq6ztX7sWb8/PYpxXpAub3NuX8is5jbvUhtGC6AzNQc5jlVMJBWeGHT98n6A76sP+Ut9ZtTOCZ/xTAdc1FcA3ZQ3ETImo6l+JqFBA+WecFKE2bWbh/3m5TKsD+5M3l/o42gvzs4qPB74MPGRrGGUCJDnbQ1iBwTgd+IswjQ2of9v4fASTNoM+S2FkQNPDuOFof5EPw1/r/Vmt/CtwOGFkyCIRXB7ZAEY/mzgHBr/sYxJ9d0KM/npG7OCmsZNMkPcA96VBzK/nb6UovVwxURACR9VrqgC3XcsvnU5uIuNlWUk8E37KqJMbs1IHldLzSuKNztMLIvnW54kJ0oXOBe4I0e2RIJDLFmUbfqcOn5SdVdWjC7W9ucphMgMgCdaa/9k5DB1FN8+uFTaM2vCZkL5yMElBaFfTX16okhqe+mHEhfnIb8yCeACxjOgSTPBJQZv2E+iLf67VuKluspMHJFCabsUB4nsUQCwbJULlriG6oH/LhDivR05ELFE5LB5obkYpSGbh31wnpdOFpT0nJsIucjD2davUZb8xk7GJN32L9vAkXSoJVh/IO1dxCpzMa3UukaEuOhTkxaKqAu+VeVQylFxdKji8nJ8Zm04rgCDSbIhaYu5vURoCalcCmQvHMHyAnYXRPWgUtXGPUs7zQlZWnthegw0IhCKE7YjCRUAUxd8rh3n+8rB8RJUgSKyxQsycsYDBH2K93oEU1Hi+t9+7J0yCKtWngwxn2m/sYDTXTY8fwadlA6eFKPBKFAhWqH3RV96LqFVCK8BMSC5zDk6rPruph1sB7/Kp431qiYXExx8D8wNZeLaA9lezFPbMNJ3ZhfIE56fF8t+4Mw0Na4G8elQ4fS6NKE9kSwquJEhJGY6Qy3f8PobLgzkk/T3S9Y62zwRqsvcSllkEqivMic30YtZCcmf4Ry5XaEL4sq3Et7Fa8SpYr3/kxf/3MYwLKfmzQohNZZJOi0G2x70ar9M8qR01aFAqvR8E6wssFVgVZxEaEOSx6X3IHtxhPxOjdhJHJ1Nt1tntK6etYnJ4cZdVS8/uWz91aR/O09xbdJuNsUPGFqNHo5LGPIksXZ78ajIc9abEdiUtWmE8GNAWr8FjAa8tRYluIpTCpFvE2YSkkfnLRsrelVy4Wrg21JvAw48x0LMK6WoqhhbS9TxReGZnUGtXZodhIejkRhFQ+sl6FxTGiQmM+AAL5mrdMC5U2+HW6VLFs8TJYxjlp6EHNfOEjEsO3lF74HYNslkoCOW7U1wEtvYQFT8De2X2CXVg6hskwyLHeZJuHH29Y4eijc7Sbr+brweJV6FvaaJssSW8J6e1i/KLkltE+bstHR4/cMOhwM+AbABTtwosSduxRmLdCk2wdeW3MyFF8vIaLiBiNtVbCSs8RV0nkpTSyvFUJH12s097i5fZugYpiF55qX0tIO47n0st3UmS5nFeCLW64WCo+3mgS/fWZSXRLuDTsP52Uqbm28pQGlRGDcjaThbju1NyyjoESMU+lYy6dhKicPkyCli7ww77Ocu9umBzj2Em0j5wQpFI5GgpcKTLFbHzq64L15TCYYta6moujlEuLVSIYpwzEoeVgPBJoauNSQTskTh6Q4nok33hvsDpdwwOkoosNV4sG1SId4covWSSJUKVkjwMOrdAmUGY3DK5jkQNd/7xFNWxOjhoNRRp6UM28UV3NW5J/NjSH+bBtAXcg7q2zZnk0dVZu4SJSs5QFyb4ZRXbIWV8wdjFcjlut1Pz5jM957d8k2XSH85jhe+IBYtDq26xWYjsKbJa3iN6PgPgW4Tj00iHdYeF/FJNyYKFnLE7VC/5Phx+1TyOIBk7hzNq1x/GRrEO2J6/PQHNLyMCiPEIcHQXkDoTIQ7XAyietOX623AKZJEHoMFB1ew5fmdkykb+srB5p/A2sQFKxf3EjMiXl6I8trxhW+4T1FTACPJTSKzntIV5L9NWHwgj3romlS9GQeBKxnt/aHBCia+N+2/fh2o2hHOI5v/JDXU4pkt0AIqdwZhJ4ZGQ6V0jXJQ8LNyeJiRTFvfg5NUwWdPEDhY7pinnUWIiI7svdzaKs2BHcEvZMcOEKV7Zb38itO5gjSqEjiuILrYCmfrAm4EOgsfESlp03bUT/7qnljHmOuCDHRrQeylUQRf/U4S5c+dI9/+Rh9AFA5igS/ckKtauLmJaLcneU7P/l0OntGtpHVmkYqeiA9b0TGmSa3AsXLKe3jbZ+2MAw949i8iOLbrylRDQoqwjuEgvFA2GooxFSfgjj6rq/tBZvMNsOsEakHZVwH+jJHS0J02mLaqkyYo+loiGEBs4IbOl/NjO2ipGKqqNlReXYoVLWPMa/ZDVw1F6NSsAbHTE2guQhdLF4xcp6YdcoWdOJJjt41Xt8WRu4eKTAArRiusHGUY6OcdKiyl+pLh7NZbuovMjqESxPpRoxNZ6ntjDDn6g8Ul0VWjHwiOuUbIRcINSbxwJDa5qRNiEmrkMs2ys1gYLEw0Ene+VLI9CxGNIj5SraMSuHyZHdy0BL3nOzX2wsFZddQjAIqNtwa2oE4mlFvNjmI9LghQUiDf9DC4MsmK6OrfJ/IYuME5yUGCHEqLo3gtumHftUryruuInXnosZmDY/lQ+AOeJ/p+5Sr+SHlkkPeKymNqOcwvRxVepdX3OHhr9JJ6nfwRRHkd3MMDdhBBHaPe6c5qIkXV0Fsore/IJngYtFfBkr81qLpP6KE3LsWqY/OQVTdcSVL1E0lYd/T58+2N6hLXV5SzD4fFVBk52EhZkTBgq1IpT+McWb+yzx7E6+CHUZle3Id25pOGEqvKEYaZfO48vDYUh3UzUKqooNQ0MFs6XN/Sfl28CeunTYTi1v/Hq3+INgXWWNK16tJznWEfC73nFCK1bp9mylyok/cP7w/QJIXPQI35M6ziL7ABtYAAnPVhLcZqHUGwPF23gShIxiwt/ht3w3N7Kp/+HTC4UnDDkU4p/ZKtwLExP16LQrTcZFCr1fTYu8LqeUv6hk77OeN0E0LOqurrvFbKjZ56OL1D2IfvKkxnMgneo2vdiafbFktKFmv61FH1/mHj1Bx1App121fDblkluNMBGG1fRaO53ZoOsWkrj4Av9q8TjQsj98uvnf9BUCqoeHunWsNScySB/qNf+EdX5y8qdjwVY3vhQIlP6tInnCIHUha2NQfIK/zDiGcmD5UWNpig4q5+o4o4eN4rrczwpuCmLJxRRptin0AKfDsjhbZm+eGMrQ6lxxa4vk6TkD1bHBsSTFlffAzntdaM7w8CJ1+y7Een7EOisIVWrpmw+m8NKFV0wSeMjKkwVN5vbzfQg554FZLEqOYUZJXWo39qRMOLE8YxXm4MeiI0UCuC7KbXlMUmIN4fe4t8UguCrfkHt5X2SAbtKZaU0VVVJ2Zzkxvrjdf3YE/WEXH1sBTf6C9J1hxCyJEw/Qk2sTAMj5ZLhBSgnPzHZIh/Nv2eEmncoF5F4JNom8CT8N/4hT4cDwzDGXw3UxnoW88aHgvqhle1ZkP/97kl3Q6jm6iz8eHGOfMxKccNu5N08vRdofjJ+rTdei+TUUZtH22w9APAw8yGuNkjj3Vo4eN6G5nCLngQjezcogkhq/8WJNXPSBue4WQyddA+GZiCpjo55vMdYpS+tkyKSJG507mkXrW6uCIM8Pe30IIt6PcVNhAYeERVs0MdJECr6GcpEXbU4RMeVMdFVQW3pNOvP3e5iRAccsHVN5deZ6OziS8cNNa9qlrFo717ev3jeZ3i7UcHybLiFr+YK3RIBPQlDEWk+HBckYJF9z/meo+kuyV90J06QqHW9fb2PaB9HOclDpdFOn084UNZm3W2bbtMyJ+8ynsgZFR/k5GpYv/P5hl/1dWDR0ThvgESCIGRBwBSc4/yqB34S1t96Wfceo+95FFY7YcpBOEGIf0CjpIJIV9NUYqCCR+IVqXDiJDW4QnnpdWI7RfWvZkefDTDjZhCCS1YGx8kjVRq1SzVjj96bT/Nt8CYJUMn+aNy4yd4cuFU4rrpyzHtJLk4FuCjU/shlC+h0B9a9o0NT/qIod5GKqEeIYk2KL6u0UHLvywu2MHjC0aMko5Vprdw67KDd6ifSk5fns77dNEEUXyG8RD1RnL1Oy2QBa3rJrkvIZi1RV2ErAxILCWBHnq6pVtCPxQCG6qagI+x4ArLPQQPoCV35uT+uWi2lvrYKRccIMCi605O52SAHfgm4bn0yDSA23pO1xiVsneK9+xd9yz9+TDzVtEeSkUUISt41PwJfyo77QUS+lZ3iQ21+2p40m3RiKe609bFQ2OCO6v0Ej6dxkjQ6KtwcpNkGo3aSo6/j0ztI3jBUcYPhzNmPh5z3iDc0U3qS6C3r23HzCUCbYFSxeBAWqb3qAxvKDo3cYo8vt5DaZUWKg3VcDlZgPcHj/d/jZaXTtR0TwqhkpRBTvsqxeslpea9zNSQeZ1iio3gZ1XCXTe6bTbX7u+RZ7OsDXYX0a6E8JEN/zVTvCTg5gLXZpiDZg7TvD7mip2eaI0JcOF9ASmSR5SURGO1xTGybC/TContYSu0PHF+mrXIqNWVFW6td4occ5uJJ0/qk6n30b9hRknjZni5aHqw8U0UDRDebIARkXNURcwMgjz37wjwJBfu52XpzqUBWdoBdfP5xR3NDDfuf5CtKlsCAr9w53A0bkzx4RAlRtYl4xgB6cUwMUjTwimoIflHUbiZ7ZOdpXs77omxuNMRe8+MYOy9M3xeAbAeQiffFDLyo+daL6v7MjjfuDmFhMgsCdvM3UbmgZcUc9suIcEtsbyEk9v65ssEwPCw8BbNDzjkaA0g49bU13OptYyqRAsFqtFV+ow5WzmuJv54ZVTeN1UQkkYJ+nG8lfkd+pm3ffbYHRZ2/Tx3WIzaHc315dfQ7j3lY9VAhnt3gl5/KElzOzZ7sLVtR8vfnf9bdrfpbT4CT/VVztLXWv1oE/xc9pUVf1Y0n0IRYiqywzryBjjJuivg0KAtn4479MX/zWDh1qsrA03zuP55KbHN54tH5cpUXKmYIvFJVblSBfXYTnda8WtY/tvb8Mc/CimrWHvdBn8ZPufV/OYF6y7PFY350Bes1rvtAGDEnjZq85maoXaQGA2NYjVww1ZliJ+mVqUiYgvSUZD4KOYdm/FtHNw6+Ix/wwooRS9Kjwa3eNd+SEVyaTwsum+m18QjdNWTb9vgif9GszjbfJHa9N9qkLaCe/QKxZH6fBpBx9ABn0H4Rr0wnRJUDpJKJJV5Fk7D6MsXv/Ag+CpZgxZ2Wo3qRyOO0tldwww4HJsEl9gMdYCm0ZmmkVGlRGlde7IylHcxYHATju8JaJGnifPbp/9NA6XRbgQz8r6AC6bW7WXbd1H0Vt/VycgoJHf329kO9v3otv3ORtyr5+Es8HiO0igoFBjnyPOhSuJiVU1vPCn8D+x47Ww2hm9vCrG6ur4QXIOFxp5l0H1hV66i0avZDLLQzFv2Ea473Q6GuQZ+C02NKVBPDTQ9mWetoI/b8IPoyHKH+l9h/L6U7bwEzyADJ6gnrLM82K1JCLFuBb8iqzBejoBWZ5fN4EA5e5qURPR+IZ7R7rY8PnepkuyRLhR2eHPMxrNvWL8+9FAMCu2aKE0jqHW0oMNC7r+5KLxYIH2GoJf7aU3dYMe50GPXAk+6gEdTD+hYy3y29rh7oKof/AlafxduxdEHm1nCXNQw/VUxj4CDjBoh0zlBZdzo2t69bAxLmWrbXSoRkQxZyAq4i0x6MSjHled+7/G2bn1PC10jU7S4LL+Jt3NrpGOZCF3dtKlnsSqxD4JE/ZVx73IO0ggdvY5zfUgcyNVObE6rmPlbnO8aVXgDx6NLvfWRi/x4uZVe0pKueSBLHedjNxHg/uffEQb1pzxxjEQgiMyaGpldzGu2j7VYQfueTAb3i10Qol+HCswNMfgCTpBwp7rF8IKr9F5DQ7eMaS7p0VFdsMAT0BvHYOil33xhiH2UgAVRyjXP4JPuhYfaQ7iRhsheuy0o4xczt7bOeEhk4ckqqMKBA0JrGJhNSYo1Xp+Z15kY2MMNCSwijHGgFUWHBQGrGKMMUIgKattbcnbCrxbBbxbBbxHBLwLQlxxkgXtfZNrm8jj78eXw/EYMXeENkuyheeiLO+GYXyVwH1xYIXCCqTGL//3bhPGATsGYP0ZES+GWLTQe/VBdJZgOMMPZ/AcVwznjWdhaXvB01Vw0x52Pyzzx2EcuYSUmjjCfWkmX7UyRvtNeE7KJL1+Fmn6B3rsGk8n15ClllgLnHUiTMMA43KoSFJCTHApe9uD7sH8xfUkvkItMaf26gkum8c63H+t++sc09vnTjo0lFUsa2o27fYGN8quo0Iu5AQvtOolOckxi8KoWlzB6xcV48f3jYxGp7TiFZKu864z4CLH1AfJDTQRR8W2Ot/XmDMvUFT3bTUhzxkNjTUUVofb0wbcME/nXiP5bFPmgQRmjRNVpF0c7hEiNfgHhSEHDfrfjnSM2tpIGGV+hnCYvGJr12VEQ6npYdGFloy1MUHOqnRC6B74rBS2l+fyWNAw9EiIZoVL0jTQR8mIdRS3432sAlrVywgpZPs0L3tE8wXsGe8a+6jOIfVYJDfL2Bza22MYk3sUlceEn1Gxv1C77BBFtmc1LfE0GYj2DJHxeDCoVTKtNZxltma3lxHHwpth6dXE4Z5cOZ/pckJ5BJLvopCuJo735KdTp18mTvfkr3NIv01c3JNbZ0rvmObscOZSVQUkU0sVqnnCOA61mZkGO5n557qeX2A7G0fGSG6NuAyrnW6PgBYTauM0P/Gi2wQhRRBMYGTyB+JRYlSszA7j4FWb6zVe7mLRgAwWoLTKEyZpydBmD9VsSA+s2KTL1Okpb3T6k8+S4qpTygv7d4cRNCxG6OLS1IkrSglMD4vlHkW5lcWTVNLmqugBOFpietpVKqaqQ576YCjPaVcEfEBAhNpX7N8Zy+2F7YthignOwYDRq1zODHwZj/Vl3/bfMFQK3zoNIaodIDceeQIRXUmVBDJ39llAOc6EQvu9pHBR0Fc4vpX9lmBpwTg+OGt07gEb0DsQ3NVDUlx6UDFjANYvr00c7smV85muJpRHIPkuCumXieM9+enU6beJ0z356xzSu4mLe3LrTKx3CqYgho5x+M1sihkykl+eTvg5AR4K20Q+vkk0durJtDuVlpoCBa0wNPpGjW7oSq6db41aYoebEuBfmLqh0+Adaya8xszMFENTLoVO9IQgGyl1CmRlkvn11V8FMMiEqTDaSsh3CXCbVcWVEqSLAAeBP1epPO2vqBE0LuZ6TTnOa/ntxUS99kftJ10YcOYtGTsNotP7z9HqU2n02/TpAW8gy9iQf5huVW7/uH/G2hk2ba3KRevXk8U3Qe+fgjPviawFmNjs09k3Ki/UG2uVSfiZ3B23RY2ZewCdAV2IUSI8mi4pwQMry4UaoDZonfa8LxzBsSzSXJwZe6PWqgvKEnC1tDL3WNEEyqDjCetwkkkeVMUQgaumMJbN+BENpnNemNOhdADvpsfVmmDFjh9vjhw+xa3TqMIrtnXvuyiY+V90Mej1y3LNhzZttqw696xfHinobJcYtUDiZLhYQXb7xa0s8JNM7m+uWv4A2cZIaFvOQMznqn4v32hsDOKx1fU+szXb1FVFnpLuMiW60BMy76Epe9IM32KSoSUNOmpKTapiDxMIDEEDvJhiYRCLwYi7yeRmRS/QgvwdDKpRThbZK7wmekBBZV9ZctQ+E2kY0zHzRlMo9M7ESiQmG93+DdnKWu9XlieSd8CFCoAMU3o5Cxw6r4cOuDR0dYXzwd0Er3mmkDsEdNVHbASrOB66bgwLjFHVbdNzzlsrOCqsD26uescEvAUTZopNtSpMMuroKdVBWe8YOygB6b6dVWdZcwNko8hhsXSzTWgTC9sOWNtu7RoHNjTfYOMlpK+kHl2AySZTdbS0ueWFAvDRz/1gJ4AKsEdNd7OiHdF/UjDzQ48vNGLgd7VXeA3aEJ9TtqVjVAf8vE6Mo29UaOKlYFRUz1wGdKpMx4wvhvIWemHT6Xpf6CR/PYuFA8yUoAbhXWC6AaDo13n82Ij60P2QmNZIwo4UAJ5OzNh8sl5eDKqrceRQjD8TrFfUcVrq0drTqTf1uzkjtXmumajYl1vi9O86S3M/goliMEdfIZNiaAJbfMbroPac79bjSkOWWAd92Khg3xc7No9md050cRBS7xOqOKMg8JalL25DNr7hkzeLwY8jXZ0Y5sHGw2dNJwRe5+bKSEbZdUTKVNPT6E87n62s5ThPiHY7VdrKbZ9HTE5A/EAYGVlYeOrOwLa3X6zZNKisYnTGNo6LWG03rXm8E002Jk2rAdUa95VXTnrIeB410Z15VLclF9Xl985UaxYSInzawRZstl3IHI32BxpV7fWXQTwoaeF9Ki7IbvLEe34IjPATA8IJ7YtaF8ikbonxh7lctE9JRcGHjSDEAMfBBqZMpbqcRS4eBEkk11zoeMQpNMp8EIjob40iH4hEl0WJ45A63JQoUB2pMZ2kdkoWpSjHxWWHMXbOoNX9U7TsTov2KRJFWbKW4IrFSQ0gSkvYfYONRAl7E4jXb1++fUXh6mKEYNMW40G4M1Si0Z+uxkALAlB/RSajHXZGjJjQ5jYdSf5orDFJSJ4By7AdXr0XNPvqsK7ucZ3Uj1WLFEwKZ758XnTMDlX1z7Wj93L0pONaUfABBS2OjeYfTKVyPs7RBhAV4OUor9qDGH3cHatb3kVJQik3ONF+PNMMu0t6wpheFyi5ZftcPQ4dHw3XktI8iqUOi7SPd92XxY7892MFpO5qntWV9NO2qssUA/JtDiIDJ53qg2SxgPbnJH4f7tqeBc9/uf7LdEvZlYHrwAeRvP+jxZYsaST9C732aaWRvr4ovw5XdfltaHJdUYptWaqECDgUcUBIkapAi5BP1PoPiAg5QVQPlZD+KcuLCsXMKZNEYlHr8wyUY2r3EygOiOhpSjWQB6b8NdmWRDfgjd7nHVB25VdvrPnS45uw908rI3Z3rV84+98/j9/Pqj+/TnH4Whd/fWV/H109/j/UlzbbddGi6cJk5miuMDH50w2p4OowOh9JD//yoXgYBU909x1sxL4g6Z37FFKbY5TKk/a3dGW3GG3mZJ6PvugtiPu4cmVi7yL0oEMWt42voE+PbkhYvI5uhGv45aWhBDgop0UOhhtMQHJTkBU4NoF5+sWmRn+eohjUApIvNKsSI1ECfP0iYDRDo+fpbJnyEGxwaEA9hntBoajW35FODKau8IaG8sffatquDuMsvrhyksOs8CdACn7LTxSGCtORq5nTp70EKmM3GkbH/mYcLo8n/YbCjbOOxTFQMZsl5/k5XKXlgS8u6w8CBSKQ+wvdXaXgATgFp74Rzv1Hpa9SRTZNTbbDJW4627oSKmH9gSs/ohRcKmwISTEl+EwT15gHoLDiOJ2nM+vfRjY1tynVv6GEp7kjHQPYmP5g92UGfjPMyBU+Og1lEGvUEI3TnX3aBY/VUS24luQ7zIbjiem2tZfLiioqjiwTB5vr9XF+A3x7ywWLdGQPD+MN7PeAb3K+zhZOiRWbg2KvOr1OI6qccGQsMw4+w/K/iGQelzs0yEkkYFCePBTE/BRhrAR3KVQ5Jq/r4s41n/kisEvkyRCz8rbCOGXXvqKUppoZig70x28QkTwjqa/KJJyEL2YKctorVRfsPQiD4N4zRqd6kmaB+6oIZ6Z7JzwKDYD6zAzqdV9Xuee2hOnNLR5bWgoIr6bMoH/v48aldmz5C4CjmPB2yj8czGBrbed+Ql1LvMYNjd4dE2KLRMIqExlRhpxaGEzzS/VIehKyHLvwTOdTFU/noEiXgHYR8/YFis3ockxaJADC5gq9AT2FxlaevcgjX46yDEFikhuryyFiAMcQl9Xql34F8RPcByQYvX0lKRLAz4z5lqefFX7B2vD4IcxmxEms3S/Jy1U1Rf08ZaJoHXfHn19htNBfRzXhcILIvzXNHXegSvyk1hz+qj1LsrQmQMu5s/TAAemRBfdpE4DV5eZmX6J6pLvjk1NjiLYGvw8DUSJcDNc2KWfGpJ//ApFVhIoBkAwPNX0yOM7LDGgpilulBE5jVlHhBL5DxUHjUwmIRUUpQCVDKkoBiShdauu/+lwoqEZUbM1y06CAc4X6adPZb+39UqHLriNbGjT98kuIgv9zlJ0vMvFxo0uW5xsn4BmKgwcJdzvz0y0rOKaTm4fbDcCY0RcSqIAodHEKL8HrW4Ak7rSWy4KRmb/rHGjYlSed2OdDpQ3h5l3ZMk/n4XYBhbQyotLPS274SJ8+diXwfsKKkuBBl/yqsFwezOg2eZs5n8jseCPAFqmk3+IUb+umrJfgCv05fd1h584U7F0lkDuVpQGBloVBGxTVBfHwKjEvx9+IJxUL2LMDxrSC26D8tEU6QzsJHkbmTQ+fqfRWPZh7qosBrBYXad+sgX4G+DBnzbH/++o3GwVPmJ23pzN0j2RtMFGYzVL78P+dU0QD6UFft1Ug8oaWdhBJPKithdFObLcBJSnEeC0p+tdmpkyxBtkXFGXbRARWtvrVtRUy4xC54jUhOolbPkZ5jP5fGou11ehrSGQ3zJ8u/2OirRsZ3w2vjzLRAX9FN09QX8wKxxqOK9Pslhy/BSNUmQA6dD00MFvnDQ40Hu9tZrbTKOh7O/tTvSiw4dCCJeNA0Zy1PV7MQSm+fZXY9e0Nh53ruSeAWgLSBHoeA9iuXY0BwBBay9l0GdnWRdky3fZdiS06TEByJ2ENzUjGzEnK/zZHUUQdlbqJ3EqFyiIkfCwc60SDze/n6KSSb6gqFTM0DBLDqVql+Wfg+0kl4a7HDmNrAjwfyOxiCeVOU2BKTBS8fTg0WJZ9Y1arn0Q7bwrQl77AonFOcLfxahxasxh/GY9++zB5fzrMTaGhFwd2o9WqQKtmgOdq1hJpP9tcL8PnPMFG0rM0H1W69GOfAAjkOgUr8vXJ49UpUvyGjEU5SlFi3TiILtYX42lneKIuXzM9uCPf9NHVW6KmLvCGxzl39pyD4rX0aXy/OKA/Ab9VUGMYqlV7N5+nZcCAB9a0LF92IufKxkrFf4Ak7k6zc/1XacrZveuEhNIPVNhcQr9VcM8NBHNfbUq5zXaDdooRTTDPSOD5OYK3GE81D66e8oJg9GFFHKCepxBcJClxFS4pzLe/ijFsUSr6fLAJc+UzVESn20wQ4/WUHgEjbFVbqpgMkb7oZD8FmBKO1XP03DWi/c44bgolXLtKONtdKrp2pNa5ZGjmu7KL2ZU7yEAT9RIPpqCAwQrig5ogq6IYkpik1QFe/vetHvGTJZEROP0snBH4TG2M/x2RCbCAG1io2+BIms5FjsCsHsUO6GJAfmM7mth0ZLgJHJ6TyFEakH16X8QfKVYJ/UAhaDBaLYJmAMlQLJxKR6BvWONbA9WAoq1F4Zx1IxIkmibjU3V1WBICJRdb4BofD4TqDP7HQfXDlXG9NgeS18bSjgoJntADeq+OGxkAEys46/hzdasKQauQBghvGmVh5mZjwNl4ZJogoQJ96kZfnBYMgua3258OJJ29pNUWJjkPhYfMj+gGv9uAFaH7OFgOW1ZeCWAGm+TgkesUYAyLlkR7bNPqGc4vDOcKfSiBkMAKohDLuAR7sohzVSxQupBJWXm98jMTVs4MJE0IxUAhXLx6ik/kIlkBlRNQNWY6zh5+xI7WcWCOhMa3zD/kIoLxK6Gmm4ESQk4MQNns3j3sOY5O+jo8iryKU4T83HWeDIj2+dETC1gGdQ6UDmIKYUsXXgA0yLzBtUeZzH0xqJzLlT6MlEU7X4QyluhAik1FegmIpcHSuceD+cigPjseVz39G6N3buvWQWNRGlUUg5SiQsMcRIIlFsIOOE4KqEQJxer1M7DDxPs0650OfH7gwZQSqDUM9pxM/Jx63LtHLqgoT0lMbreV5CSMZiUhOjfzdpQ1ym22jgmnOXvZ6YYWXbYUbDa3heBBJOvr3Z+u5shynXK3KHWazRWi0J6e8u655XhODl2C0IeURugtvwli/TQG7gfzn2NnHXhNQcwNikvFrsa9XvgadRACuTq1wty7O8a5EKZ7rNS9B3fcL+LT0GLymBYvXiU7V/jeMxGu4qaAqEqMFIPSCvBaSnTf9ZscQBv4kogEWMzGPisiezs9sQ095BCjvYSgm8cep0NyW2bvYeWsylDUexYE9mBDgRfuJjK4/RD5vigUeiYAT7hXoj3pB5b2+z+701VtmMAisjz+eSUG+hRDleOWoD0MpmnPwVD5KeAESYW7aef8QeCwGEVjVwihRSsD18+TGq1ldiPiCmZWQq+5AQvZPbh+T5rwwoYNQhxOJIEltlAWIhG+ZSLvtytpMHCXgLQXLmfynULrVgX4FjjNkLw+0GQ5LWIda4UsvPcXbwqbTGRzZJwrK9uTYn89SZw2Qdr7rIFtwJV9WfWTdmSB85pZBYQUJdWHLk0wh+bn1eB15aDiAD0ptAe6PBksYdKzS9kenfehyefanhi8UxCzsBZn6egM10pOCfgUzgZyS1tZDyJdJyT+P2xC+wkdM0Lw1OGCKrg3JHaSY7c++EOgcWt/kf/aqjKUb4i8gXUvYCBHHvMWGLcr0S2dtglW8kOuDL+t6EJYFE5n6g/wwmuCmSsN6makGvWTTzkQFC+iGGAot8EeKlntpV9c3vKke1TK5CwpN2Q6NqP8WTDvmkCtZiwSuGWICW4WoS1CNT0ThlJ3E2zu36g8FXN+j0i6xXhmgmKyh2B3QmJ4gWCx809KCehpk1vKBfO609UhIqse3bF6EucgKrcFcr/CoA4X3rhFCaS8WmN0tb0uapOWvvmYLTZLfXkrIPxMsRyp7SIMWBL7LNWguKf7qaQLPBm896fvD8FST7APhGKGlVd98CLm9vHoFhQSynmBjTV+AFRo+9TNYGy9IMgq1BQ0DgpnNeFx4hqC6Prb6gUMcx5ZKCvPtEu8LhDzuFwx81a5mTnNcv3LpMxZyYZS+yqOFGEU+kT8XeHGSmDcUWxm7HtQ8/LNiGPdB/jPvJYyK8V8T6MOrACHovi1tuBDYUsa86spwdHYBTLAW+WbzLOClnfGLB07SDASEtGXcgo7LQOh5qy2tXCQ9fVrCDDlhHOJAHBM7Likka4rLoKK61gZecvwGrdVm2CFjaPa5FXghjNq517gd6sgwlvUyfF58974kHyoEVCqqonCP0rDgkXjY5BEviraqSlb3Agv65THESNFA2WjgmSmUwYMe0385sY7RQgzthIlguAtBKv39Z7094ec/yFmE0rxQsx0K14nUpw6h8SOH4hKAMCLlEFFasVXeZ7/892nnVUuepgL7C1JRpJcSa1pKGBbVOGoBHTzK/QKtyA5QmDOMRnY8pDBCkst4D5OFZjqf6YDmdz6SIpvVOMkhy1K0sCdzK2YrMrS8YAXJYj7u0TjvZw1M6CRAfeZosij4BBzu9435AqrEwsJjBM28cNIAqILkcq7bMBBO6kg5UmtAwEBl7Di+95NI2hFXu/W9uJSrNBJMPcWf04Uh6kMj8NhH5HeWXoUatrjoh3QGh/fp59iQl+5j/BtsikMq2/fcl/DfXzn3CcWyg+iqHLjzAFtj+/dAORAR5D1YcWQojCPWvqP34zer+R02K6P9QSs6E+Ar698wDCDSAPkV3XLCKI7guJ3baj+njkS1dUpuXChNs7yY1WzqR2MKyi+AJIiv2BjHChE5YIBsAaiNdumYdfvw9hYkDXAY1HC34ykQQ0pbxiuH0buYvEui88jS7kdqwdAGFty4gdjDicByuUR3qnEKiEc4xq/D635CLowQcOvicUfXkr3Yv2v8/J7afT9nhaPEAA9PU+w0T1SwU2IdSBc+GACOVBgA3192wtAJ22vPZjSmNHWdKMoXv2+pF2YIdmVWEpdBBjAePnbM8iIxBRX2xqETaI3hpQyKd734aU/XO3FgwGMH30CA3TeE7yzJ5F/iKfdZ9be/Lpud6zGPqT3NtR0NzU/aLp0KEkmA4dqJHWrwAJFBlUK8c9/+WaPPLVLazbxBpF8A81RsVq2RCIEF6DNU5pdIq9Jf34fcKTK+26zTVdZPrj/EBxbkyrek/PVPwrBScWFhbBingdibR56DO9yeKn8705oA35ldhtJaEvTr9dTyn8BkOQFCzZU7tHAV976F45E9asK7TGF0qvY+KsD+9iqqU0Z/vIrMagCLjrIOH19dIhPreUe/7TX5TLMDvBweaz1I/aP2e8HKA8SbIp/i338wvRkRRvi2WDZApiAKa8UDfiFhkL6gFNL6mcN9GX+PLWdOZuCCvWc5djaefNXHIPH2mxdOp3tB0XrdFDr1H6mOFrCId/zZ8cDgCrMTeDP+I8hkWciP/a23vhcSgJJoXYtQRpvKM/Fw5+/8twkgcwKYMGJ3SX9X9PvcsYEB7pNOqLOvNk1ydVs2bYHe5qPEsl8O8r+Osa2+U+aSVmXckxxtYpMJznlbJ0dstMMNzVYIo9dRDE6BsaG0Zl1TgcKZOJXozyZLhB0/BwMUAX47R63yAPf+CX/2epHfLyv5t8+9e57/Ruh3O5pukqpEYOCFacmGb/l9iCvEhDgiDWg+7oV426lAsZOMFJ+A7mwRw3LQcIyMBFc88l1g/SAN5sjGcnQvw8JJ/EOKZrSWZgqt0D+sOwFK3ltiHDN4xUXwsbBwGLV8mOtKs+Qep8UzQcZyl/Rexce5pFreBF/HxJIPioipnc3U4/KxhXHJ4+64nUn3s8mLHO382PGfvO6BUMhjK37jwVuVbWvXoCPHhZLdk1rxfnyV3XG8J0rmTPLzb7JDNDqZ9zi2v2zNDIaXr2RQRCrrnq12EFkdLaYj+U/2LpxF1uRZZ8zJ0JCO+YsjaexQ3zjmWOX5I78t7h53jYDgnARJNqEHF/WKQbPLlnQ3ulcslB3NP6iwqm0w1jNHg579Gg03OQ/HAy7Y+md2snRhzuo82Rx1e4U/TrxFWQPz2bHD8SGUd7+ICvAe61Z8qUjCPoJf3gROsECpn+JB5QYQ4m9xjn6Q7t0RUr51nkQsc2ISNDlA6z+WpOSsSWVFSSoGSMEWwhHV4kGtjxHmaezH5ctUCq3dsR6tUEbr8P1KBWFnJjZd3aWLqXCKokLvqQRFV8fWlE4B8yFk5EkJgmZRRdOj4qqjOTh/RlGJ+dcR9GhEd85uo7xI+0QLdZCTW+jUqLt/nDIOXI4Rww6dvSkSSY0kEL/Iq2xo6xq1B1gWskj3Nur5hCzRpy7WdnSEQnHezkXUVeBkBkIsmeOuMMnOQt6wzU664AvT+66/gQYlABBMNIE2EwN6r4Glt/S3v6cpy+wGR1ncojrQBduB0tCgP3bQ2fm2VPC3riVZin74Wsakn7+fgcd5P1GG/1RTTFzNoQklrLE62mM4NA/+0GQ0xBJHOflFv+NMqSaBUSLiBHaLnDH+mik/XZTjhp/bybz3ZcT9oAjvZW5HL3/MsyZk3ly8mlChvpd3TlF3Sb47wLdVAed/P1LYXo0+44KGB2Cq8B8LRn0UnU/Jv4Fw4/hQqIBfIvbVg7fUbOcTi/xe5s5vlhKpqawn+uJtoarn3cR4XY66RGugC/yQ85TUWTuTlWyLgglm+coyAC+UFoCQb2wQfKigpsqMbGbtwbXrDPfG97wj4PiVeHr3L2ltrepIBN3w7LJ1bpgZJVjsq0ySuI/jC6BLXDz5z0cjoQb/x0/XFvlOGs7jAqV6G1YNZGokUdChGDyWsTWGREsk6Hz7FBbHsqwsbtXvKKgi8YnRT6slAc8j6Y/SmxYj3CI+N1UPmdHACvNc6krhWkohm0OfHbTJMmLjJRoGkn3NyKs2VS0/RLjv5z+eZeoSoXCeamtvy00riMs50RnlGtRITqzSHuwzmtkhYOvSD36kbJ8dJipR84f8v6R6uafz+yeAIW3BTZY0bhDwy8hLbvirJGtI0mQp2LlRjhdBbGNwt7DitpIiyMRGIgv5MyHq+kQn7pwP2JdNliYO2tXRbm7CZsqJLNgGm7yiD4AVlerEJzXvCywa8WFpe0PTzGefIS+Ad9RoBNJjehPfr9nWiFK5ZU30GBI7RO/KFs85w/RIYQLVhX1QaE5yQYE1VrudykUtjnwhAkdwCl1J3Z+JT/QpYeTyrSzQadn8nJUcYkfxXufQ8Xzn2/gDccIfoYubTApD0C+OQfjpgNc3aMTnOs/cWu36jJZZFS1+RC3y7pPIZtJ8f62kLwPfqMppITghHeCoK50TA5PMxVteKYySaJKhW6rNrO+dJpQ3tZyaqnu3A4lOthkQu7ZHmEFW+tTP9MdkaNxhZyAq6+L02MN1GZ9ixfvZrWh+PaWAQE1A+TYllBVEChyhUGoI8cfgqmcUrQfbGttq0Ppm9NaCLl+SFUW34NVYE4V5EGMzL76JB1jnsm/iv7jt/wvr0iwsujeAzS7fVXpnmshAsVYFfJwYl36mjzDEEqEKrOAq/jAulFgsecPhikJeWXllQW7xewW5NzqZF0tNKh51tY5g3pO1TQ38LtE3wSFbs2w8k2xxiJGyGEAUbPKzapcyNQcfVmkJ/bqW7013LE7s8oSQzxZOuligLH+pv603cuuupH0uP0i2cJfr1PyV2/I+ywizcH20qtOP9QqLDA2R7uG8LQ+7d7Sq3uj7MuwXJGwJ1cCBuc75LW0msVB+WMd9lysysEWsA9EdCDWsGashElh2Ft4nT+kpHxEB02TOoxPh3ZQuPoYrhP8oRuzcIHZAsme22xuYHJEsB9Gk76maFqjjkCM7DdqtYw/ZZVJdHcCxyGD2r2PGKWPTT+PHMlme8+VLi56oX0Cmdv9cLATptIZE9TjzaFBHlbYLfnOCDg9L7ylMfRCzJ1h25L+XztqPPOjS925KjlloNFvp5yV9iSAdEegj9tRcVJDYEd2F2HPvDusSCJxqQ/jcVjyMML6XwY0dXmY/tifcO+2Q2FcZgv5zV0fEH/4NoHiuCshXIBwKXfeONn/ceeHx4lv/1karMeo7qzpqAY2JD9NOFKRzYPjnhk+aonD//5iC4PA7UxjuNPQWZLdtiZe2tkseesuj+/qztqOO43+n9344k78BokYhmb7XVHHMmYHWzrk21DFMmVOx5ytUXa5D/T7ZtJwj4rb/NpoWILenR8XwVuxKCFwc325BnriZnaOG8FT39TWWhPv/OHgxinGlcSdtRwQ6qabQcg+XEp02eof/pD5P7mtn9HVO9BhHy4fdudtOWLBQd/05oByu9uFit1vxa/3QvKmAQq32wFQ8cJ2IKGj5iwcykcCAgSFG6BmSEmShR8xGjRM/Oczaf1LXWfxrdxEUQB6CtJQOV0cgpIkI9OK5Se+VqqxCQBvm82hdOQ8sdfRM371loOwVGCN47T9RkQtoQs2s4oNrOwTxsP2w94mEHVnfccDxNix3+sJfzMoFca2t1Sk4OyLWhp7HusV9T76VzmUV0WLPjwKuVlL7JLP7O0jW1v+bYH8Eu7yNwzS5Iv1UlSY0P9a02ixO5bA6xw0JbAcX9IuXSMNBwCzZOGdBD2mz9ZReZvmDedHRPhdRFnqFQA61kGJlQ1ruKqiz/cNRyaS6wSZjbqQvwltiAcpxNjTrBmoWE/T4azalk3cjzDihIW6s8bjbhHHNNt/mTYyLtC38gXNd0Pykt5Fkc9Le+ajOIbZsjdKFJ/gOOFYnY5QO3ds/kTqTpl4PsLgCVXdWduh89NAGz4OUx9Zm7tubRYwwTWqJ3OENDFCR2VswHXgZ4tRGX+9yVVARGQG0x9eI30ORRj5zcwBtWqnn6+TUBfbSI788+nX+KmFR5Fdf8NaPzM90fZ5O36Tl0ORxJ+E+cEhf1UzZ5c7Nzdk6/LQJq6axpzg/0zzfE9m5JjbMCd6vkXz1zSE+U3LlvS5WOhV2/uX9sCSMX8N890cCe9uiiY2t01dCwGwaZoCBMwRCdTnacYm/jvGZn79P8vOwZGTxoBi3rit3xtZhTm+pZV5MmrlkQ6wzFNj/B0LgtIi45Iwd6YBgpnckXLwsSHDFg0PliOiBIskXskT94JrJDmhGwHMJA3WyygUFWh8/jYd1eCi6SGcABNZFKbBWtcO+CxO8CQFrqh0lGOlMDMGYk1ostHL9t8Vg/H6FhcPrpCGxV6kgocvHEUXD2JIFGL9rh4riA1j9rllEs/yaPjvd4pl0tFBizP4Zj1HW1PWCwwD5cDIO+7PT0QL19V8btjCSCgStvreg4v6rKmuLIGg736pCKQwkBBzhVdAF54xpChPTJ/nCmyyS/XfmzJ8F4I5JL+VDdYQGnZC8738rdAge2jGk1/2GELoQvhmAwN+4QGvpooxPW3a0v/MeMkMsAswvEtTuZ54hQAqQvWO/uhdQ3pZFMe3rQvzUfvjhQiviHx08aGitNxW/Ac29XvMbdyzCCC2MqtjwdzrS+VQkCReR29RuMEV/EUpa+BeWkNYZzA1UdtFVr6QoqQASp9WisIoMg9rL+iPvNC4fWNcXilPpBe6MVSPZ1qGBj/qBX8A9AtKpgT0ZFAqBnuzk2X53o+4kiXqYf+VMgnE2kcnJSPXS3tanvrf+ImHQFGwIGNMfMlr8GLS1tXldV5Wyq+dzDRlGAWvEVRf72SsNybUOWtFVjwgjsl30GBH1bmSkQgtrrUFo0aVbVeVKsLNhDgTQHLwKApbf4eapWh2GGULXHONiSKi1gSafohMAt7ant8Ug0OAPgexRDAE3bW9IvynGgUsGUEuNqVnu178tZDuPaQcotapl5q8eOUkhZir2BRTWCJTRlCcfhMGACIuBO4YIPxppX8g4NGkQ11ckkhNAqN33wOkMFKAWwJk+DcJOeF/K7y7YCohsy70i2iG6GnZFlVQitqr40cA9l59332PP19U7nfH6mIWd5d9ukuT2wVncj311s8bd/7m8I3AiI5HhOpHGAmsL8SrFCzpIcxQK5RRhBvWkXqzAUi6ru/vLv98OtPePcvs/6Lq1jQW2ZUK/9SWDAppTAVQOlaQOKdo9S+U8OR9ZRw6+OLLg7VBkIXfEzZ0hQm/XzGThI0iEpL9mipIKe9UomFvu6sqJtVs1CDhzrqr7plkbNQiRdc6kjK6pbVldtr3xpumJwn7M1FNiLRAl5mBruK3b+hBY6H1Q+c7d+9obnBndCu6kUjMfVn0aVRwpWKzQy2qUaoc/kXAPwqaSpHK9/oeYE3w5DbUYjI/TvD3d58PSSU2Yp0yZZQwKHBUwBXoFGiV0iiFSimUYlJUCgodTqSm04b+3Lv/DRgaUV3kaHE0yUssmNRnW02uKAHNHc1PS8WWrZc7R2qwZkBIJo8oBranwPy8aExGJPHBgd9/kRHzB/+sGCRimSNPgT/w08qW/i2jNyMRH/2szbPyhbWiCfuj/dkSpOyaJmNrQpZEawUhbTzKLZL5m5umoNdlB27MIB6soZK4Q//AsO4bpYy1oQYupSjVtj3UZaxc+7cPjOsVaYqtYIm/XtzFf0+YARJ6ZWw5AiKMpWYea2ZXkx+bgCaEbLCXCTbImWPq62LxichuO7rH+LFuzNoiiONN8gToF783o1L+4wKIvyrqDqwiMz/QhNdvF6a+5f1qcPxI0kGzEXYCdzutaOn0+X3A6bgT8h5f5Ttsedsu6FzjMw+j1gQ3KRu+VYtscEkOiZU+uJmn2GrsGPabEDkUgPF2cuS7ks5iBPanRLkHfZq6CXX5i78pAe+KudZs10gORsu+5d1eQviJ3YN1EqVl4onBEhCpW3pNc7Okbun6TGCLv8MMGV/E3Uu/JByhRBK5XvrbRsIy9S8/XRFYRYMfD/Gnn9cdmMJOItHi0AyHnaM1QRVqraMVof7ohYXr2oyU65PXrP0Na0u+3FZJFra/UynxPqGQvFdRMYcoPwYCeEGbICAe8KuO8pgPdafy/LofIzWXPIEKkFtsC+Hj9keRlMIyGG4ookiKZxmycyMPxXCoizyifkKHygoK5gYyAOCpt+ajOM/RC6DY57ja6xYZ8KIS4kH8oO72zYlhzpdvhTODN463DjpvwOch+DhXRYOInoWvrXLjjzzhr2lk0/m7Ao79dfOQlfbTje0DU9edQum3/gy4caRak9VdmkloEo3XbuRBZsU7rql+3iBE24kkdXiYFV6Dj2y8RigXadb6RlqbP595lr1wZ0x3mqRKSrqlrXRP+Sr//teXAY3sh79XZqGQDDfvr0EtZ2NV3swm3U4J5nLxDCiZXfZostj5OSGrKZOZ8JN8NcrUXoRrVb0yFKPvnuJdEioDMWOOdzFbxDDL8pQaTAv5DlvT5xrFOyQ8Yj6dIAFwva0kNVN4Kk5chWsuaY9tHPR9XWHhxu2ohV/VR+G4uRHTownpLKI+HT8mMORdpjLzDR+fVSEXPywIgaWGOspzmZS5wWUFJezv5GZyxkCfRsQPUChHdGmG8waqTgSKmi0MixcAEMm5LXFzvzg+wgqv1V/80PlHVsLbSvZTwWcH5hKGpmvXLaVkZP1jckOtcdsc1DPpUcaBe3zxW+EGy2udK+mvtCt9w8W0wZvdMBaoixQCT0J9tOnfbE2efYRKouJVaUSuFVPdwsUiLI67UVXRJA7AGDe9FJJ2w+TYNCyyVqmOYBdblVoKahS9WIr09VKOUSpHAxK33nyl4HWoL+c2QM+M0Q49FghPnKdR8rVVKzkWSwPMBFTpJQW7KDHi2XVbXaKLMkNVPgXkXMl9IjeKNTKUs6pRGIoydigK/MJpCD9Xj5R1x2rfpDVKhpcyyhD/AGRcRiBb6RB+NFxxrHZPwTXbYCZP5pW5dUskq/aTN+dKvuRsNYwzXEgHu5oonqg2RLpWfXDzXQ3u9qfEZk48kVKBc2cpRLpNS5okJznL6suYrkXZZmmKUaDOAhD50yu1A7zO6WeLuwN3vuh1cMPfLrPclwLjIBuBR9HOFBUgbTPfMxBg9Qe/B+sAsfAO2lCRCa+QcUxs0UeBhKfdsjM0yQHv9luYbokGfMq7DqDFa4CEvlILTw5ZWiJGSvo6lyvDOQWcre9Fo2ONBP8tvMXUNlw59+YVDlk4iwQOMUc7WAv2cllxEVovgIUJoSYlERFaLvzHFipFWeklovD0OM6UZcIkS0HLS4KkuWrYXyBlPkHSJOdd4f87iJMRNbXru+nUpndre/Z4axtpATqbHo9ACUUUyFeCgSRqcFQJVfnQW24d3j5ztJ7VJ6fu96vgkOUlh3O4UXQK2/YigzbPOyVDuvNkjGneMvRLeI/vGyo7GDqsWOV95K64X7kxzsg1tg+ncHelkf/ugZvVrdjexfaB3/b6ECasw7x1/WER77dM0ShvXqb0MP3544Q9GD2mRmWVTzZj1V/Sqi/l/oPH6xheuExDnXkNRUx2MztQAMUyTb4s9Boisvaiw/X6MYIHUiV1q0d7Q9iwLRiIK0B4C2Z/7WdAHtgb8SkiN1jPuYr2zdgUZpzt85MHWJvc1p3R0vUHTcLK95H3MztzxBhhhotUlgkqxZyfKZRf+26PqODdbMYp8DPbWh+pnGP1cA1arGmP19URjLvWlAg3JcXX1ZEJ0goVM9mXxxbGxrIiFCsgkUylHSSTfinYS4bSQ2B9MKjVtUVBZIq+izuW0yr2Z6D3k3uuHeL379zxaw8NWkmgch7ill6m5aAQyIkcySu340JJ5UsGiHSKb79lLFTRN8dg3JbloYWU/xsQBonZb3d7etkL0v1dkVWB+yXlcnJVmEPVPHw64tu1V02aLO0HYaVK/OzG0FvVBi6wWYiN1ZsNRXfwsqHOEQceeqV66YxSLg72S23VHNDgFk2O9+nNr4IKj5EFSisB3yiv01q62mq0Cp8zplS4GVl8DKya+85cGwA2ImGfVniocEJhjBPT0VCSBj42ZcLDMjgnCjyXs+SWf383faW8nondolHLmVVdiEEjI5pWN/eB+c12qi+OCU3+Ih0lgLNgtw+8ERH5KsfZuefbYkMWfGYCxsR11yTlt40ZC2Uy+R8Jw2Vjmg54hTBPnh4rBsAHYq3F/MgXcS/uDjSsf/Fxn6j7PlVJvf3Y6/hdic0mtUqTepfbTKofr6e0qs4PAGwn279fhkpYXurYu2U1lGzBOdD35Z7Ke7812g1DRapmbUHh88DqNT8oxUm38pnskB8QwTZKexsKqUbJtPKGUovsqdp+ccb8Yznb73Ft06DasN1LeHxx/Uqu/25jKpkG5prucMzYnuNOovrbI9H1qpjWBElhbIM9wO9kVDaPlkRiGisfgCE7mahG6uic1a7HokZghUthEZVMJNeVG6oaV6nXQFM+ReuOjyNgS81lrX0KdREZVT+/T4ge769il9Hjqy5QKqXA4oGedgkICpf6aVNKve0hnbWZYXW3/nmfTzq/gPardh5y/2IrHTVGcEmfftIQq34J8lFIw6LL3iU9CTyNqlTQMZRr5m2w9003myQfPpXeco+amNXzOBxGo8Y/YpnWGqvhkVUZl8e3PG0Jjz/5SaaRfpQtnCFwjUefJeRn/GcoA6/vTp0Xvxu95e9DI/eY9XdE7dDlorhMEIP8Y81XTVZCufNmcz3sgYh2GhrS40DErhBrom2dTikn2NmyJOWYA31+SpyE2vy5Wm5BfafBrNbi7aa3y7QWuvMm9HsJg1HhsYvT2hbrShBho2QVf0Sl0wbR+Sw4uZJGkwIOs50m4trjWlAkGmqYI5Toq07mVBWj1jHebPRSumkumEvys9s1N974uUyo1X8smNav8yq8NTLXq8vXVqGFZnu+AK2IJa2tmon7+3SWaYM1y7NMYZqX5VlxPNhQ565wEwlIRcZBoGQenf24UE7eHeY6YO0xUyUNjbDZPnqA1nHG1qos0Ba33W2od6JtOWJUnlZOoNSqSsUhUGnGJ9h29uQms9TpTSdnjmTd7jkwG7md9nfN659eLn2bhPSV4ix2jUrQaG0NXkPhna+KuTpf0A1QcBM5Q7xmfbBHe9GA+FnjzOa54GWFNbGGWHis9u8jdgFv6xItpU1bdoMUY45etjWqgj56JfSU7UvX/V36USPL0GbKQytfwo+ft3jU/XQbFxtF6xXTZxGWTgNpjOxR+3C0N1pVRtOYsv9TJojf8g6sSOGqAkHHZ7kGJkHkDsHU5TWybF+zGs3jZotx4UTaJTTn+OycVmEgpbroCKTivpH23e//OX9kJxjqBA03Ob7cUrHNziXuPd6Vs2dIV84nuZLuwcFNuOehy0wXG0NGYqIhlxSb9yXdWeQHHaikqnQlFGJbDZ1L8nxlWLvl/U8LrCqXKdlOwtcsM8ZTHo1WDzY9m4l2Fw45LkkciRjhj87MqW7MeES9+tQ49QeEpVbzuTKyWpDXrY3KUDjzidZKt61FY3i2gwuDVHyMprNeYMfqhtFuy9cne3IHUgqlwQeNnFhs7wgdRlvWhLZzNB3p1sTGHRM6hcegJ/rwKUi2lnwojGgQW28efsl8vhOdnwqXG+22i4Y6GtK0k6BKu2mHBBYLBd4E3OoOElDU2UHPk0SlWVN5AgnlGxUKz0nOQxmmQYY8rFlBtxh+BITouXNQx1JMUMXQzQu/sBlYVQXDg1pm1W7fTGElwyVyVoTvz2g/0EAS3Bj/qiRdztNfbz5lx/+uANw8/YaNl3koJwlHgfLHFGkn7IXLOPXOH3/lTDgnMdKW3Wi3TwZiDaO0mySlYD/z6tbQTKYdybJ1XFl2UIcrobFZDNQHhF1MvV/5pA98DlYpMJWUyncpbojUrLRg8fcXGRo6X4RK30IxDinUTHT64e8gnPyu7HMXCU8QsYh4axaeCvq9ghiKvDan6GlrhrZLoUCFlcEri5alOAgyKpsBIiIJQHXSl0b2VSxCmLCmx1ubWmU6hj5jCWyBI+bYwbOz78GRHJcXZEXAn3FlBMHkvcROCQ+kO0nKQUeXTXaRNTj/vQ15tGWSBmOawGi468s4pyE8OkqjWoqAqFI9Fv0lEMYxxnES4JzCfLJf6xMJ6O3EcAV0g8Jf+FjJDK/PHJ8jOKbs8fO5DEWezgBuF8R2wIMO1aFKAo76isoFrGCsA3tgJ+gebXGFGqUwKY15OKdPD32UqeUrREf2zCHSqLxvMzg4vrkwdmg5AAtWxiZxJUKhhxRnfsq94UI8PYm249iQ8o9MY8uJttiaHUna4WScZHJXJADQFplGwg7WvejsnjOrwSopQIJpDmSm2jzxpahSLxq6/Mr9K6hcQ4+OZsXorZDzuMw6IhCO/ndUb93DP0gvOLS+MMZg1g9zuBlUkNhA2NqftMh4esF06WYc5pv3p0LD7padW7Kwv+q2plb9eqYLSZFlSmLKIdovuXmDTC4ulVIxnWqjx+IUH0zt2LTzS7+MURdnWRDms99xnoz+7EjhcoaPwbQ+N/q7k3VTQH9Yp1jGcRy5FFK1t21Q5+WGr55LpRiEvwP0dZB2IAdz4ApTOsDyJdy0NSg8z13DXI2RX3VT/CrGGsTI9zq4tlQBrB3/IzudsObHX8HaPxLc3FYN2rZeAD7JuBW9OdexVA1GufX9HF0LR5NHth9jFTDwsM1AK2jxB4+/WfIO45M1rI3eGnV9sFXrkTEYdt4dR1cBb99EC3/osz/TiipR22NtYK3pEZbg9IQ12ZHxY0gA64MnPukD/bzBXaIkYtM2PokS0BjZdWj7jqnHLt5SuhPBj+x2wnQ0J/r3MdO0S8EaJmdXp6CK0iCJO045DfgknNZSu1l3tFUMaLpWAHu/p6zab7uJUBYkMxw4dW9MGkdmqAoyNYrKTaKeMj/bxwFo+7M41Rpv9+r6DyOlhxmmjNkbErh/hy8uQUdWrYwv351oVTR/ctRPK4Yps1eQe8GBTSoOayVt07AmMpqNtw12oCsKOYr0VI47sYtxdk1gne2XdkhWyL+C0ptoywCRPVRU4K8chKQ6El+AAd3183l4tuEqH3ci01TqEVg2RNw3cE6G8JU4aG6Z31L8SWRCUzogSQdR0pRbV94klR8kNfVVzeHPjb+Ajad/aY8USbgD/GVPnUe2h8Z7KD19M5p+2Gp0NUZ7Cfl38jhP3VOhYJfNfr9UHo66kD8iRuNnfEJR9kEYR6d/jYl/MefkYdZwdKjuw+UMDW5JMz4Rr4Taz1P39Z38lCvFbpggV/i3EqWqHl9Ti5iwWmSR7vKS7/JLRObKU0ccbbvveoh2xFzjT9+Q4u94Z0yYO3wStFh0Be/xYg0yNs5yfkmm3YWtLkffy6+6FpVe9KSZ8/b9tmzaxXbXUpVcWxMy9nnszwXWv61tslZILrnSj0OSouUMee16eBzTUgSgBqq049iYMqhqbXa8kiWgNkiSeLQM+KvZ8MeUUNsbOI7Jb56ZIFAd9KyOHZ4VfIUB0yGM/7UXw51LORSeI6KROZYuKeoUJJREONQBC1cduENBQCHUaYv0CJQMk6biJlVcDzQCPV6c6RnznHm36WqaHOBrfytaZoG22qD2jrAAQeQo0WTq/y2aPxfPFoz474ReA5CRN3FdCra1gGSo1gtgJboK6V1mymMeIZdYScWqNwEf62dTavH9Rk7qPauzE2JRSo1o5IOV0VVBHBjNWnBBMSKh0VGhw9yJPUEyM885qKeSisujhGIZYbJirRepYAjGJ6VlwTqOgPdTU8BLNdzZcFGaJAx+9FTU2JEFr/dPovBtNCExk9fBCTcvMT+i8ZF0IiWro1/v5BhdRz7rVt97Xdk+eMC22mRX2Jx5TnL4tEEL10a2pAtfv4hRoVhN6JDr5l/Ecep1GOQtbRiu8Om8kNjdkOT/KPP1phH9LwtaCLbW/pVppsVXn6l4/w8oeMz7Zvt4/x1+7N4DbM0We7Zgo5fgq8ftUz58zWMOnJTgYwnMbHB/vH4dlLj7IYo8LcG9YS7l4FqY9K4+R+NysjUXKMWhsh3K6Qz7KDJYJE2OOsUrfz85i/4+aBQ/f8aVeZ9CZ0q4XjSSA6KQfYGJD5vr2RLxI3M1qVft1QuhFeAEMsoZSYlCpjRxAp6mEhFsfmOTJE/L0CwJRCoyU0fL6pDU1atCDyNMGRhJn4vVJfPCnvgOaIAj2sarWwSfCvyjNdp8uAPqQCS2uqFg/qlrw1jWVgQsvpqlhL4oZ+zkXPphZXS+iWD4EROvqgqxi1KV+ErdI4dU/aakPJ8Foqg43qo8WEpAim69CWN0ytOdImVFVFUyKx5nNRuz4kTU3260uN3KgZK8XG9+8lN+VAoxRde6bkLuIytBTCQS7KFOSZCzF9Bh1Zx4qpoSkCUsURrlFT6FR1t5T00x+v8HcyoAobWpZvRFCVFoe/SYFT0rKP28t3YoMQCKE2M+ug6WEzgnclghmnipv4EgvO4fDoLnTTj8e4fjjweKafDm815EW0BIZ6u1NErlYyeBXhRxnEi2FGc93zh6JhiTQ9+RAmMkTWRQhWUNaTDxX893bDdmRsC/Kw1Dt1KZjEmDwpf2QldUKNQtzyclGk1l+mjKdjUhmUUdJCGs2cCCm4mIwVbQtCTZsZyqL6TNgUaylGpai/vrEVWU2T6YrS19oV9Wki+bRfMHvMHamKJiNHE1LUzgIvShqFtWDYWfkl6QKMZyVsnAAPFai5f2Pp1FDw3StN8uzDRHhCbcg+o9l0uqBxE4EFeJz1IZ1I4MnXIafdqGbP2DwC0zCjkeyemW5MbCe8fuwJ4FppGn+W9OjZddcodP+2DjJGgep1rcK3NsY7YXZAk6lHCXXXi6NSvleZzcDNyxA6/vQVvALKBX/w72emjP6rxWWn/jeN0/dGicHbY24hyFIiOBLVVDSDLeBBI7AHoEfOsJF1HYhNGYuZHtAcnlvlZvf9gXtJL8GCYfxEtuUzlZiX4khVkVzXHs9FuhxqAT1bjxxErRTmwCdp1M6B2coWiCbalJw+LqLKBQ/IIy8Z2FuBSuDSIi001B6nC6nOSJCKeNQ5xSsNiSlf2EJJjjDXW4Da8WKi3GRo/faSwsI6w+xOGs7i3wxn/nkIXWwJpe6InDl38mt7Y7sIGjttXbzvZ5Go0+f2g3ug4kRFajtjZq+0lbnStlIWvVkWUEzo8H0ZY31mSXFLY0Kttooz29SjnaK5JIGFIvzotAV3KdRjBl3c0YbRlU7PbxV8YPtcro1+gah0CG4QwNSFPBi7HxhG9FRVTUITKJ8u8VuTtCRpc3G6RwP9inD2LjYGNR54UW07ZiVK/ErqmLshAGYVM2aGiuDljQsOcnBP0/LrcuvU9GbSxtDi7+y3DzPBner+0iQNXKf3TBlPo9qPal5M6qfxW7t0dByEYKeYwPrNmGw9O5+7u7G6lK2oTzr+VjrEkEq+EgIHSGwaNUs1ks/kyXOVn3BIFChYXfUo2Xg8QUlRSbya9I0Mb+is0phdTfzX5JMg/ytZWKI7j5Lw5zIn+/US0JPqWWfWse2+cDBgZRJBkcVJRllTY4BEo+IwuTwh3Zl9irH2rRMoLvNif1bKuMij5S77SNdljEi8bFdVKzT5VSlSFDEGCaFEwN1z0pbSRYTMiJfbirCv1S2SFA+CiZXD1/H5NUJAZMScGmznE0UCS53oey7+tmP6CNml3XGh9IlSfVeh/55q/AmdcU91LhvDQ2P3161Y4vB8m6kyMKbWEDlnJwjiIPk3Exjqh/eM/27Dab2TYOWnU+1F7C2RH15NhaptRgBWEaKIKYAHfJzRzxHeuUC1a2POEE55NmrybayX0Elk6l0+SGE5L9NI4p2wTzSPLQquUUFTUX6MzEU+iQrgT0V4ZIgUFypbKcYI813VD2SXHBRRK9C1Or8u4ApzWgSadkahWNh69K5mkBSXHt6M/0XoklsKm6UC681kBkDL9JHqXROOGyTcsQPTwAlixohpn/AQF7eW5uel4izF2d7BLJubLLbrKywuzURdD4/FGuXFtTFH/F5kFCSgnh5ISrnTmVYx+cw7I/Kpdf6qsvcUxHPvNcGTgRjnNidJ/RpeEBTeyVfxH9zBalQgPtk1AbhSF1FaYmFF+lrBgOIL86rcRJoyk57mDbabCxhKTjhAgavk5EjoFS0fKOIArd4CCsVSGMfpcgAS0HKHw/GicpFTqN+10Gy6EJiyd0tZE6WZUrq6eYV6sVIV3oj8eXMtzsTFU9TLChlJjonFan2ic3mqgIWL8nRJOH4ALI1GXoLpd96BtYmpH7gCwiizSjW+BpB8NZrDy+W13e5XYpgTh5h3E8I219UpvQ1/8vuUe35CX+44kXZ+VJ9KJGjI6a2lkcvkgW6vtiLRvJnZqEVMo3mC7KzSeZScYHLAzKnGkV35emcdONALnZzkyJV+UUktjYj6HWFOcTLBhbYdYMPKidZONx5vWZ6fNeXbtrRdHssDajZtBgFDRlpPJ57IUQG7SN3NQ27AQLLsS68dH8Vkhj0k7Gy1vJ7zdyG4PhTBkOi7FnsaF5MH+GALsfa810/x240jA4ZN6DpMGIK2PS0S6uzJNW1qZgEQ6LzkiBQMhJR16DO32sAR5NUKvaOcpl3Jq3c53ocjndd5qiQLgIny7gwJDrlh4g1Ygd77ChlyoIjxb3IrmQG5Djeg7ow5QSMgpoWhRDITSYc1189olt2ukqTJCrNbP+dwV7hYLDX9wYWBLyhM1RSzy4zL7tYge8eCDdeUZNb//Z+lUdy390TUhvXOnsKo2aXRBTmBCyRF2FqsYVa9EcMNt4f71CIhYsZSGeYgE5Ligm1b2eczIbIWC6wszd/7VibMnVbzyKcEMJ+uCwVnnW76bCnsRA8NaJ/8OuI9GVO1JgZfoqPZ21E8jc0s9Wam1y5uOCNz0S58XUFL+GQPuNxBQu06B9Zi1wJ9BzmmXtTAkCk0piVGi0jpIK0eZ9coetxPZzaIhOt/PoVklI8wsdYF7VHBNOAAWqu9wEtxeJ8c2k7W1ssLDE0f5I1irUjjlX3WKk0gxRRDDHLVLT0P9MhQ8mpEP3pStUcHNoWy7a9WwzsjoSHSLXjpg5WR2vr0hMjSc4PS4HkP44Ta7HmDSIyhytjl9YQCM7JJW778jqYjPSN898uzkzABffg4aFSGHTnoaAbfG02C1AU9lfBEvSoBaWVtJCGVrJYxNTRHTc1kQZqFaJDHIKYX8jeEpI1L4mTBS5dfv1dITYX5K6ap245YWhINkPXy/yvdBVjJ13fQIY/8fNG/q5Em916jtG8mWSQySlcFiTFm8SaJIKQw/IUr6tCVewigG0SqNCr5w4LF6zPP+BZIgbQMmsivi+YqFVdNUI9XrL7+6veBCVfU0NtO3pnbalUpU1qCAvp5S+MkTMMKap6j99iFV3DwnrRSS8L4vPym0L3YfLVFKc91xapKod+jAepKUGllfJSH2Dfj0jrD81wpkjA5YWLbWtL+buwO9n3xH+vcvPFzlHGEzCJJEb/HlcmTZe4eGtSF8rMQZcryzDe9aFFO9ePSwEiPe2yYRKvoBRmIjxSEgUpui5h5lSwa3vz+y2vxfTT5ZPH465VHUGMRhhsA40NTu+aw58HPJN//q2S6lWZBAdjr8KsKSv5hq/lZYD3AFXqi8YVBS1y2HHK0MMg9VqLgSpmvnu66iwKQyBLEYEMk3fnkskzX1MikC9x+8tekocsFxmQUmEztkOcoKyGTwY7ISjoD5drwt2uC1WLqIvisFIrXJJzY372XJMgDJQlV2h758v6fqyT8SYJel1RzDEWD3mt28Plkh0A3CnlFa1XJ+qkU/vS4MRPFmCo8xQqOuRwKea6grbBsM0tHSXeC1Sm0ZXEUyfwLuHVk8iYqkg/ysw3EDAaEQf2SHWAaO7fMB2HNB0ucNx92BoJ4sMskyTih+CvUrL5+TR5X3+tLyD434ly7tOwpKOnPCPl+cU+9vDjwXoDAr2zV1DaJaDCDLgQmmS4HCd39xZ9KQe/jRWj9/Chzk+mTTkP/RtOvzYPTKiABMCBl7JioB7NgCNs4XDbzllV8tnaQqRtVYc5CkP+ny1FZruVeX+yHAszGqAmk47emL3NQdbzVnerUtpN27P13V3iFNVJ4FnL4tpJfroR4roR8Ev8kiCQ+0GVB8sF6NNZAS3Ul5v/6DvetBGG/lUiaLsMcfgWHusD2qw70EmgJQfTcoCHeYaV9jHEZaru1IKkshNiPSrzpu1/+g8aGNl29UzoNKtdgVoSxakYGW04yCQ03W9IPS7Rzz14ly7lwwtKSfUnLpNvJluT5HM2hQAHPChxRRvORg8UmhGjSqiiIJlJN7ueoeknM9XFWt4yBJjqIz9Q7rq+Q/DBpXS7BuCeM+OSKyizIk/mPA56Vd2b193hddDObZXj9CVghYUGXKPpgqh1pweKDWQkD1uFIFwgFUgyuW7V5q6FTIb1DiY/TG1ZjfgOFY/AFOCCMH+yjTbnl0rT9FrRbTPsJ4n5WIimKHJPmCYvHn/vSLVwT1IIRAChAjgGpaTlFDkB+xtr/irq5b1mfKgCrPNwU5l3l9JtiW+pXUhtJ+JfeTG0J5To7xnfIDqAbmJUe3uTIA/I09hpNA1QbqrnDEHq3CZcztZ8KK4lHDpUQG0xZe7xe+qQV3dhTg7OMsvlrWCXWt7E4aUl7iDK9dDRLG4GL2q1+aj4ZBKj1c0wnYIiaOqJw4C+esgl0oj8FUtmmp1BFP1PNChBWWT17ILGymOvchYVAr+qo5rSt51QBuimV4M0rKQUOadRifwgfjnJsvw9H9SS7dRWkn0pQQ1I6YCeEY8G7A2mW4dMuEH3eQgRqiVFcxZgNBQEptvw1j7xBehMOM8dYilocufkCXDS2dJvbIIHojiocHs3iHI9/Nle7GY5deGUCjSoW2YXvijR4gxb5uidgwvbAnUE69e8O9yueG4LyCH82Kyic72AeMyxQi6yRCKT1YCsi9gQZC764pxX44BC6lNBaNC5XxrSK90dgQerX6nl+TDaUpZLCPL9rzCpKGvZIeLUAev5UXToImiqimdXcgjzgUZGxCnJBvA0KtfcGtc/rVdHqTMwEeSHLLMW21grPD1TUWsOCrCAoC8PlFU8jQad0A9tq3Ot0+pjZdVVYHB2Awl2BthgRkEd+hDqgNOBhkxMOCaUvEmKS8/lssgDgaKKa7nC2ThGTLkgBapXJW6HkY111H1ba8qa0EzQPFrU69Ah5subqrcSkITfiRGnK7GBjKUqFP5j78MK94N4hV/yU3XzvpWr2KTisZ3YuKF/8Z5nwjfE/iBqJU4f4Cc2Ss/IQwGt0PZ2b8NXdubECSTfwqHb830tx+L3bkMHr/6JIYP+vJjsrryYv+A5V90Jgj3T9B4ndAI2Zm2nzlMtTVLwgLDfxfaqacPQt6Nrfhwjs/pQrSPJeq+qXcMxQEP9TLusygk+eltlY1AumPOy2gbWwLWJzyZWxSCLBZAmHHgI1liH0VGOReKeQkiWMzZPfo45rPC/Ibu9Vwgk/tfxo5gDVtD1DVntOYI3qADAIMsV5QM4kVRSGWNq2C7ME0xqaDSLyMVqveUW5V06/FLG8py2GaLkivQOSyeQK6RdxSULHOPGXKMGb/S0y9+QMMSU4LypECyG1A8T9na22m1F9X70mucMikeedd1Abr84jv1tKlLfnxqkBsSDS6LamQ03kjUWu6XgG0ewFhmkXd61UwxccQTZKX3d8VfIzR5o8GsmJQtIYP8wXMNc/BxrCrcUDpcyFhTP3PReV7MjeZV7rHeOH+P0c+lreBqoeKRlzsaprQ7pXj415chnFbYDpafo46dBJu5HEyJzwwE/ff95F++EDW/A0O7VyGO5DQV8VZLmma0QvY9Sb9d2uSeizEfP5kFN+8q8ZwiLJ1gq4zmJanWTbCuyaRsFAYzdmZ9ss6nlCs+Pjy9lCwFNJvNY5a4JGp9MoXS62+FLskB06nAsOhw3ilL/a5+fgv6ZBmwYLLjzKIUV0nMm3Ir6770ITk+HAY5vGidnCwy1TCO3lZoj54ZUFWC0xKNGUrJ2L3hXNRQJbs1v8H8wvyohxO4bSCkCtRj2jJl61YSPO3EaJJ4svodBVXygD9S5UkLIfUtskr4ddPrkk8+iLFdjzFuH9BnDG96JsBVUqV2AxcpNxCiZt1qgMeRheFu/NXwjiCOXOQxs9gNKnRkKtlvy71cl7lQ7z7LW74YM5V9mJ4Zjth+NGVVnJaAXWYh50w3c8/O+0B0HEjPYW3T9YCbGIjJjJRKpJo1kSZdLeuDEau+AEjcoRI3u+BdnD7MGx7C5Ab5FbeH3zY3U6VCMl9XVBqsNmk4lwJR6jDlDOt3m3UT4SYzyZhH+MFEN5MbrAyqRXN/ZkgdEr9Z1W1JnMsWD8ZXTk3eWdjdtLlghYX4JnSuoa+p9v7lAvmFXbLcma1t4v0cNk+5jecnRX6feKxNTFPB032+p/h0PYMUT3yXkVktPhdTLvh3bmVCwffMfdpj1j05yd45HlnZu88Pdrc1mh6r4vJvY5CgeHdbOs6cKpkNYUHq99a2RSNemyHtNx2Iqbz4G+zbv2OKiX+frnEcq+8cd4E5fK3L9Swpnps4PntPPX7aN9YNmlg84u9PS83WpAXvOEvPqSiGngk3Il3WQLDiuRh72/tKsvgXUkh9TGqdG4pszXL3EIs3yLG4ESdzQRDtL25yLytz7+MYcScQC7Mb9SLHY2cDRE1dMNeA5m3L0pDntG4EjTglU5UR9sCGpd/NO+/pcpybFByrvrZMnKx0907NP1mVqvxnCXYh+vrPFyiSnLgDBX3iGxfEId5ox6TrsB4JJaLa0ZhKUyEPC3mffLi7Njjc5xwKpvtaVh3jEG2ED81sW2SEEa6LtRB/eFGUcW6lXoCw9IDH9g0ziO7i7XNhJroksnpoUsYI9/ITG8YvLYrHPgP3wP/CD8isZt3ZsmnZXcXkZATH/28C+QYgbSb4ft51ZyRGyeUJqV2m0GePKOC6spqiud23fDlNQDbqE9kEdPJQGPTLnKokbjcqBLXGQ1IJqTfYmeJhhVwVmXFq/pXi0mHG8vY+w+pPFyE5cVKz2fEeV15GJjRmLJ6wRlA1TF+xMjV++5npVyaLxsHGSpS2cRZvzIIVht1IbKua7vu0KFxFjY+VXSsXbVNLvXrGGPThMjLznKAMXodZgNKT8lb/QFKJGfz90f58i5b+pOf07/XbHPvvplNqWVPW8ElQRmCrlG/SFWdMCnxuKkXfXKMMJnZzgMjSIbOpAJoguXKHV6/UTvcpPKVILuqR9f6sGONNn3DKz1qQ8LlMU7YFeiJFwQYLIKWWbgeVkjWgdmtv1HqYzFSstnn+gAJGKCOyHZ5iRgQdYrG+yhDQF9XUM40A5W2KBaj1xMnmkgW2m1i5ogAojXEJ4gUYJRhFaGI+vHdz6mI6YSMtj85reGbv1b6KhSZNbl1yVTGiX4q94Z2hxfJnZrerwqF7dZF619NNm5f58wV31cU+t1lzW/vx/aLbMZYGML0NqN1bpvO+Jwi95/sTS/z3/Zgnx7aXu060GJQSgAwQ9j7x7+6GKc7jkk8HPGcufOgL7p9EhnHH7il0AWuTRbMAIKedBVGYdRqHFRn3J7SMyhWXB6JBXAhFNZDDoJiDHh93QDqnbtIi9Kj4cQzHxvnxuDNi31ZNg2A7B9v9/ikR60kEZTkwNKyeQqnWuRKwOpnT/tbuVRj2/pOasU2Ba/36UEltOlkhbrWwQMIjTJ4edolKLVE0ITdjsqvBDM6voCdC7OPsx2UFVNliW8EZIUTj3rMJW9ZoytvOIjIWPGEUEvVJeuTPzZ7o5dJh+rh6k2QeI+XgS1Z7hAdfgPP3dezBJ0zDArS/Z5YJY++WSnvyNa4MQ1g+AdUjRNdSJYMwpk9LInvSAtEWpKNAbIRzNsVqUknx+QqwgRBQzN3QoHOiiX4EnhQkBMZTi87c5rEqqe85hfW3e/iWM/zqLhP7+w56m9ThBzj2ruEE/erVIAeLEmNvhmy/oMdiWtC7K5Ra5z6ovHNk7J829IZRXh6YMX6IjFKe6yXRH5wiPPEGU6br7n8XoiLdCWL1WlIRSbCqIS6HaWLzrWMjxdbUqNe0mHJOtOzxa1E5PaZz8cy+pNyKhkwo5aV61Lu1x40YZQozj11jiUzx3Lg3QY9lThTQCe9nCynvuMtE6oSHwIIPzZBJ6o7KArn2kwpoMr80SWIBa1YsIXiDDiJSE3DXegC8qV4mLWm0rEq0tA5gl7QMljdwD8c5xCwvinFfhPwgxq9rSyRZRKfqow3UcxAPtbY46sAI8HVdi+/lwUOd0POYK1PyTpr7jvL7nUaxwSpT6C/zmRgt0Nq6jyYdv+Abf7Hs1ZIfZqaCBX68KAW5jU0QYRTU2uFMhRnHDZENTrKf0tBdlw41TjYbEx+LDMfOQmurpTLofmym0nP5FYtfCIMFUDUlOub+8ANOt2Jax3Ad9CJaaH21t+N52Dpn2W0TxrKltL96qhgp0HRhzquq8ugyIxH3QKlZdtKELHgH56qPMTY+Fgj3tHhjg2TlHOmxnDjzxAIBEnOJkg2LF7K2eipWRRwWIbsoXav5oP+f2NlZlZlhqCGQuid7OTy97YfY472AdJVvyWBUymR19Vla93RLZfOh3SHJc+e7GD5ONlnJqHvGVjIq8g+wbb1T+8o1UX4q0aLC6J73mYUK+9M4e2DPgjUxr+mE/rWU4saUWHHFSXu+ffuJ5TB6m3Nb65M+GB6x2cjjDZY6fyWKK67U2A2t1pr5XurI9zE33Ylt/prSrteFDI0H71GHoqlhZE/O77u+HOTTPTrM2yhu5SvT0YgbHInlEpAnX/NB9TWN/bFqkM7069GyPYgcSptQFpYDR7MUG6o5hPCICTzWmDPUYWVZm2+uZ6tgclbv9Xz/hUeRdo9kRFHsBD5OWUAmwO54D8bS2Y/1PVcA7sTcgB1hwQa6lt9s1z9EhMiR++rqXyTbrPriMCXM/6a8PnrqBX/XrXCi7v1/OMiptunMPmFR+BiCGG2u++K4NgxZKeNuPcKSlw4Ia/Bz7w7IwtZ2bYB6gHs5EVkVXUlnYSzomLgJIyXxVcVUT+WgISV/eeXW4q+dOEEVJfSx4xTymncnapUfv4m7/rxKqsShq0BHmh3qMT/hQahaAAIOSNijqffG23xT786Ak5QvDO+AJj4q5qDJ8Elf/IBA0kuK6+vHapUovKbnjin3enHg0PZeSgqS9bzque3SSF2rTz58YYg6rHh9k+WdzqItsGN2PL4VJz5cDnTitzFnnEEvTCLqqu8H9VhETtWJWlkaGPSu4nd040c4Hhl2VoWTjRz9SsTRIdNmaa5KUWR52EH1EgX2wR+WPBI3/mDi63Z3FI2PIzyaEfMlgT/Q+PLF/5h1eia7aG7wSRAWd5goS6Gm0vFH8YbojtsXDQgDUJxpehq/E+EhGXFvGuQcNjiXlbDDdOhhsU0Ibc/A/PYMGA3wGY4fV2d7uXEYF6NFmB4pAHz6pMAqXSDvjMxQnsau9Idd2ovJb/HL2aP+GKAr5RN7p8TLlTypF4PJd7RPwXwbnVIvXUURD2zoYM1PyLwC53iRGbOgi7Bg4jc+4RIknZyB6OiS6+xgeY8iiBcxb7VsmBmtrjbggqHpPQltp5OKpeTRnJu0hpda0iRmcxeTK8z9F9YxYROPqr/flkqjS2F5TH9GiGr+ykCiKWfLhrU5LL9fNUUg8aI+JiOIRYX2Web9jLu7zhHejk7NvDWMllRDhuJ3XO8CxaEqY/6E7brQYjDwXxhuD0u67RaJ2Fbtk0c01eod6IckQ2kx/B+rNqcCe4opwrSPW8H1wONLRTz837/y5Y1XOiwz5Scv21WGdvSQpdXQuQd9ck5wMlrUMdd9RrhyYl91GYgLpfNjBQ2BmaITpxJhiIl29+VxvJ2zQ89lWOpwNMgV/hBYRzSERftSytZpVbjkAHzT7PuSMuWGYB8GtlbeoitYIfp3mOoLpXbruIeSuBW4GExHP1a0Q5Bl5BVDFfByaDQ9zRO+4EBM6VHNXxBLmFl3zRcf8Q8ecizPhUwaG8ZtnzH/ptPd1CtG/9tqiCrhoHIzlSffhQkcNu5J0Oedc0THB5xg7vHwIdLRneDi1u+zL4iXhRejY1offDHKfwd/ZT3svH/J2KYhY+pHHqtF8NUf6pTwYErFchSe8+4rmI2Z02d4cIWJyJH/Xb+GA/igZ3XR5rFWJxvzICIKFGKrjr2i0/0KRUAvSkGbDaoqvMrl6VrwXVHHjp3oAdvf2VWdDdBZXOhsNYxjpNiMS3p/+NkKM7pfdtieTT8TlU/E/TsE/fwYHDPhSVv9jKAc+TJ07xExL2IWUf7J2qsRaqB9jnivc4ENCw6Y9KmkNTIP4GEO5dnWDjJIy3BSGZ1/7yehRrx80FmO0/5j0MwZVv/TIA2r7fee9nftYb1Xl6ud62ROy2FK5fjWUBxdvoZY908gt1eU7iK5cb9ilBdxun7hJcLlFuxuQ2yq6snwsjHrXsuIOxSO0ADy2lrghZNid1HG3jqn4Ugf4KIoj6Uwp3p4MwrJBOLYZKwAIZVzlvkymNTRMG8TI2zmr14D35NBqKJMTK+f6M2qgPKaD6lV6nigYPo7wpYql/otejFk5s6x6Nw/EGnTEPnUWk0VXlJqxEda4Q0BmCDHjGR+3R1lWFpW6VxMPsOyTmkywSMiiQQ92+XPO+rjxNa3hybyutv0SvPSL6ZLQ6uBDW0WP/1OORb6zj9Ok1mt7OMJmal9MpUaLwlYSrTzMZm3TbcJAHsIsaQSeGPSKiMShwNSWvZyV+EUEHf6cmGUR5xeX4WGWZICftecLJH+jkpZGWvI0aiaFbGQoNg+vY9eYkXjSUKdQwlD3UKS5T7hUHv0KwpHJexLjfu5u78Ox9lggYqIdUUYAzMupgTjYJeqFKYFA8lNK5m6F/KDVZpUAS+pmbC7nxppuf715GxWeEpxO8E721pVLHA/WFQJ6/84Ve6XXgg/41JcFiEOkskN4QoTGCjiueG7pae6WTBdTyBHQin31NisU9uXcd57eNa9dwYX+ldHhpGbHRrZi4dU+jjr8AO/xfMAtW4Mx3emJbiqvxxgLv5ykmZzI3hoiNskbhel7a88ecL9XAAJ55TltZ9MFOZWmjczHay4WsL8kcbJPw6TIph2LC4NEb3mxSojKQ2Ly2QOFaQiTzMhFoGJRkBU7HMk8Uy3GDYZ8Rl2rrKXEbqxKVumfw4CbJg77UaXcuE146exmYRfsF36ZocVG55mmz2nr5P541lklEeZC0QXe/vBDDibW0K54+iUHaL8stdRntS1vTkEOCdv2TpWbhhjDEQXY4yB6LLgQGg1jDHGSImptHO65b08DyyvLWkNLGOil7kkCDjmzDLQB1SVJ+wjaTRUAoVqgpdGQ3mMV1m9WLi92WkNAyQs7CqSpUvIEFvMQDmFkQoBrbXuu13piD/e9yuvRUHxndPkUCV4EljJb2IWtTIHV0NDWKMeg5WYe0hyivDsdGUTSuNljEXqC4UMprphHnGRY65tRAUVfZ6jIGvRivF1INQ0yaYiistRqrem2w9P4phyLA4zA3r1tXEXGcKqTVfGdp7kc7Z8AdDwgsN2KIXhaYmW/BQdyOQDpnC+zRXrxmRrlhvlUfN2eemXMkOi0ldrljqHhubCMsbK+zbzXZgPMLgcsnItGWzV1bV6tboBqwWL8w9wy53Ci3htov0aFZGRZsKDLkHGLX5exBV2YWEDNEqXhKrxHu087uESSBWSxcy/RDz1d9mXZ+bYwf6jse4WKOWteKTkaY4uFmKI8vVnBbbJ15fMIWcDMYlOWzxOHWFgCZvggdBvNrjQ4eZHidKtu9aLz9pRnygO0ucxuaXF2bXw/vaDwkdwhzEbhgRkNu3gZ2ZLHhiEa9ga281xO0be8NPG6RZniYNmeH/3NTxLotE1z2QeAmkRkCeOsQEjSYIZ0W8KBS4lBjssWS3FMgLuzCniOXwhbcLskpV2Rs0S4gAeEDMfnTBn+OLCQmIP3b0uzh6yB0vvIBhchwBwmMTQjZRghX9HKSjqrCJsyvR6+K0vgkX5tSPYFno/SnIM7pYtcbXCFUJ5VQafkh1GBvfPcHAxVfflSCDI5xfmJ+NU2GhVO4w1+hmH0/SNMcHZibB8Xdmmm90hc5QHYWYCIdU4cvgO08JY8RldPvzAuz/Uva6KRhACO3bxB+ucttU0+hwn25InYVgQ0+iQeH4yFwgNi7Aw/AF9HjnL77N2rnFm7jGuRWmInaFpsBhIlGo6ceGLyFPBeMFzPubUsTGeSsBhYifphcyBWLhz/a6h9zMTzARGGjM1Y9RzLIq9ah9JOW7GFCyOfG0Hkbv+c8b+HHuJf1ZojxpOgsju+3/o8A6FNciyVn5NSJpQpk8qm96HCdkwMowjeJUCRJ+0TWc+/w6baGAFkS+fQQ/ix6BFdtZcEn/MIS0gElKIcqkcUdAFAxtcIS6jEI8IIJlsFRdFHZTo0t/pbIxbJqgHa3YxkqJ6o5pO+D9tPcH+vTANXlWaKf67LilMGWm/LbS63HT8clobrg7VxdSQVaS4bXTjEEq7puSTy+c+CD/5s4xSb4VON07NCBbLIzUljH1OXHLItQrIYoF1ab02V78X5UMoDbHdBsWq5Srx8xRycnAnAXXLVMYanWb7h4H4a9/OCdgmy2W5kH1KjJXUm+WimbZr78ypnJNZHVFm3iQWs3qmXLNTqYqZZ/AU37hfJlGVAIJe4A0XSFyYFRqNFzjXmEki8/ToDpRXJ7dPMI5kHpozWAof+wGxjPaIpMC/d4QpAOKjcBh7wrCY3dxME5y2POHkUyUubAhFKkNxGbm27lXTRnHRfCLzOiV8wG9VHYLk7RF1bwc3cOnN6SRlLTGrPmjpdXwswgvVje9unpqelv/FGTuRL3i7jlWZqmOBK2vNfmKWclesls3b98swmL/ud8AvEsCqJvkx3gboi3rKFBIX+WTwQYIiHnOI46/faQVXF+JqucWf9NcLyY9chuLZcm3qRZnJl0vx/gmFIiJf92P1WShLKpJV/nrW+rGAgNUpASoyJGqKMtmoFNCUzLyYi0ptyJqZLtsLJXjOBR2XyUhgoizBlFKNnrIAputFteErpqWuZAg2btEH39ExMijq19mDE2pfhAIdyN5B85P9276XWmRIvDX5qvDYxY346MjFIv5946HroWjg6UyrV7M0b1uxcsG3z/TyYwNBPlphClnHyGktdVWnO9dWjDmWC6wBhSRfC8U25V0/fuE67WxivC6mkS6dLiJ0GP15vo34HnbAhSlf4V0r0pLTdAvyNYDGXn9m35ZN2u+UFrBG/prvX5/YBrHkNb5HHgqviWLsVskGMHtWl0t5LPkhoRkOrCbfclkI/8RH6Qx9EayjxRFIVK5tXGJ8Hcb4l/t2z1+9+gycACIf/VggHeOFT+YqhD3c7nCKTFzYmmi/ihC3pQN1rfFBcYVIwOvgSmBdbuXyhx9zXyw9ecR5d/OqEfq0Ld1ytrHa+Bo3JQ6hsS7D1ELP0CYiaCJ87qTWUMjgWluTUV75Tyk+TWxu+OEUG6LQ6Q1N2JN0G8ptRAe5wGr3OpTDTlpOWvgbWP3Z69L0APH8BTp5t3Ku9MhZ8Xvv9s5Eu2s4ZXIHcKR1DI9y0Mfqo8jAc2c711VDvpqQAggD27/Oh3TiKGaoGq7DuDzA7HHAMS4T2QQKtf5IJbZQMIyVRFkZ2M7BYCwlWf9viEhR+5bgS0MOBSGJ2e8zPdhFLYTxwpw4LhJHlOqTetk+jMQ2bNK4984fLhyShGuAXAYeaFIidR8i9aB6Lth2bPSOSpwqVZ+bFf5FJ42PY9QU7dgU/eVb283NvfmbPjdi7IMBO73+fN/m5o6OF6W38SmsMS9lk58nNQEwL4UfmWEfUmWWq+OthnibNRrqw8ecBWAhYxqs1SlXhm+TdI5AdtihuGB7zvx4bufkMHMze1vPDpY62fL0UwcWUqnsCDEFwnJSkEmL2EXlp+uV0KCWuzkOTtuBdwIce3VSsB9jkTMHsq4zHzhOq9w9i2MarOGYrnJBVJdMKtj3lhUt2ftmg10eJTyygv8Wi7eRacRRIhFI+eg+LzoZsfkCi9NNmfpvGR4GKejeRMwZVCwUnm+K6tRY5HsJpNZ4ehV0sVH3a22SolucPbBw6fppVbxUlisBK8fB9loQ3xFreEBGkN4dxYBC0YGe/u4ftJW4lXKQo2YP8p5WlLgP9r0poiSxBGmlaQDzXiI7yMBic2OeYOY5AxI6x+geUfxV+bdSQJnhD7fXHolRnutJTWLaaq80fqfQdlufpIQtx7LEX1VI3EsNgP6AvaabfFJ5r8EZ1ZuUuKuu41Ad9sLsjaYHKWG7Uu4Nc/GX6ftM3WXm9MtHx7OuF9fnAaK0LJYlaUCElCPYkNIKJbsVS6n7+uqgV1cm6exPa3VLsBYL7ieAInfXBYa3KbvTcrNSVHIqmKMOU2ZYlvMkbTbGeDeJUbMAgaa+pQUoJQShgE00ESLqxSK6oKyqYua7+eBITSi0kTNMAkotciuPfw3Hw/dN6OhxndJcEzhxS7s2bF/ebFMyHQNMH2TBtsaQ6EVA9m9ZfyRegQfThM6peXC4WY2lF5t1TcPnBJKYDv3DxQB98mU5MDLqGpXuvl7Tn9GSW0cjDzh6Ih5PLxOEkOgiJginJ4sJiUfoyc0HuV+xjjUIkIDLnk3kJOCWNm3KNGGpY1MRK97//JCTanc4sTzt7lJ8hrrLJS/8EQdGFYIcLzUPAt65otOw9kSMsedjuok21Zx/y6SRgcDnTsG6OIU7ZfuFFxn+OMkXp2ap8C7J4/dUr3schpkOjy5zVEsaYfGwyw0QHIaoRg3rpUbKHR4oAImjZ4s1adJg7FFL28aR6Bnlu8CCljUt16nASmtcs226g5zuGRGnHXLqo31TDEbo0pINfcX5p/qxKftxIgBYdnicPrCW/Ra+S9gbppAmhlK18oOLcE0YQpCSYKEFTw0DXYWnxrTA934Vfm7gZ/3gmZfRZLa2VbwsGI2wBhHjCm/RAhuvj5rmM44WL6ffyWrpwcXZhaNvnXagE37nv5ddZHkXmk7hooDarwBRF0zLcSGF5NaGzO2RuuHQ3J6f+0luRhzKVDS1ngaFiHHPk3YdzwfBaCeeU2gHTDzVx0P3Da6fugrY5caBwIV7JwT6tkUoZf/yuZ8rl0v2i9BUxEb1IaDYGsXWJbM8AUq4wqsZSIFCx3JHOI86SQOqkCq0yPD9w8TecdbKHdl8+Jxds8oe2oFW9yNZxWBS3CTrh3eKptL/HEbxSFCcvCXkoTRIpgShTSwuV2ArIwYF+0FK4BcJc9eb4BsNi1+ic+L5pefAUvAzgT/PyMjl45xOwcJ4i2o66jRKBSUBOhSArigYjj/s8fevmQK8MemU59+oqY44J8j41u4m5edgwDJs/FtuyiXfepNWdN6CBrjryTmE55elp6O4uFfse0yQf0V8cOT7cgcs93ePZ662JoU/8UbLIDFvE7mb03YuYGxi/nCkFrxNxFpwXV2o7Vef/gTLd05Y3qTy3JUdk96J4h5UOVOykOqiNksXJ5al8ndBgT0YF3sw+crRMQEM8iCyGJ2Sj/tYGE2moG6p/5q4eP2Dz7AEWJ2N8i52qcmGxN6+adNpIu5BHafMe81+6+xliU5Xfii/DKTX2bPptOvT0LU/gIRHmMMr37YwxDVgs5vDbVYfcyg7D02+iRtcBgtD/umcG8pnchetr71H9WEhc1cdevOSW+kQwK3L1KHQTUr78MS476rXXytd+00J2/oylYKPAGXV8YBE5oPYsI2a6MBckHViuTymJTvBRk4YPTvpcCNccG1aduXxJC1EkSdJRijQLb7UVDzBwwEKdeUXejSK6ODZuW7e/xdbhoHpQI4svcTp4+Ex83VTLylNZ6Fhw6KoXbkLHyvnW+3/zJYxAjCkexTRlQNnxaAHX/qN1RXM6x0nrFpMFLmZAI7hsqmsBYmrwIUDlelAk9ijR6qVJtJex6vm6m0z7Kywu7zq+GjYFD0Lj/Tuctqmg4XpMLoKduIkKj6Bl821FzzxWQejuhdkpULtL7I3ZfS2r5sGdHxm789lsZKykO1vkTqR90NxTvIDOuSmSXLsa+zB6dLVQ0hTvk1DXoft//4zhNzJ6yhdMkuBym198TEpMY0BdVPD0NaC07KpTxRM175X6qO5hdjY1/q2wqsQamgLyxEnnWDG4gtlt2PnrcLze72TjhCkfweXvnzf34rGbnclOGKrWedFsTEK5YZpQLN1/KDCNn9SlzkcGkvo8mjiDcm30PlUno2VgJJ4RelobWhZ57woYedeiHdwxnNT8ebltVcgG9iB8y5pcBCGZTw8dxj2oVEST9b1Ss3dHgfip0F1IJdqW1t0IUX5YU7W0IwgesdU+VSSnp6kOcJu7I/0FYbglbUAIO5sj46R97o56vK+h6hxn5wKbIIaIdGYIqXe7cvlJQdrp2aXCrABSb7de8BnAZ48JfXvVkoR+Lohi+cwgQe1BSQg4VwE6/WOWK7icuST+HGNqNH7q9B9iJSHYMppbEQisSgM/c8U0iEvNOJOO4fX0le/YsiQfQMET5DcClZOGkwVysIGobAsrkjsgO5ifnLyWvU/jsSdlKXMN4vJSlekchMR4co9yWsl86cFu289N8KLoSsLzPrHyRPM6DEtKgmuh0jkJfJSgkGKYb2O8AhiIOCTF4AM5ahhI+xKLhxZ5HeYvKtgNTYHnBRPpgd6b7oJfo2WB5kQd5BoQmxz8b9eBttuzg+PPo+98/L+JFbQWhCszyBjGPZRBPplY8w8oFLHa9NYetIqoNOIXQgzcLyE8wUUZvtBP1xNiMf5bsQLI27Ww+wEM59cwY1FgSsyWbFVT8JFl8fJYkt/jtoh6r7lt9O+l+5wPAfSdR+pTn0vlpIPrwx7FFeziGIby6dnVKZ3i2h3oYyTeQlyaLI8jvqQmjT2PH0CaM/GDBRtumHA+tfFJHZzgLMwWwpI6by9Qz8tC3gyvI6D2MPIqQpO7SaVwPwOeHCXhsIrodc9gq+VacKGUJmxC5u6j/Y+IC56he7CISQoaHQp9jfwfPl3xlKgRQNHtO/c5xfTkjXltfKCn58wdw4Z7LOH8y8sNHqcKnNUm1pSSDDlTxslnTF2DVBKiwoXaCxhsSwMVUwAc1RmGvnD3u9UYpaovfyvScWq4nrZBpF76SA1p1wqtwOxALf7x22fso0kvWVz0WQUfNH2AVTPr+wOUMD8GA3KwXQcxydl9w7xDDsRY/n1AnFWEGtMkTtpzlTobxW9YLNA0hLkd3/N7us7h13JARpTzPzSqxCrBj1zZ3YibuucPApMT4Hx4WT6KuV8GzRK3gVZZGCyLbZfncvxEGzKKcq0PZ4yh8gddgBvVTAPwMCSwtj4lRsJl3Ejp0ZhdOpY/sGt0JpBGMlT4l0WCJfZloc7QjacA2qw1QxPxmLclJY1mCG7tmpFjw/fiwCvBy61YbLFnkJ5/MWFBBl/YX3HMB9tBE8KlrA2LIJcbk06e6GXYxbX8fD+nPv9utCNV3Moc+Li9dfkhXJi5P9pXzznVRr790H6SN1os7lmY3+x2D9fwXb/5fPjxX8a0i2mCijvWNBqdlZaoLnUBQu2BhVqpAopVrrcs+CXa49igZ2c5ZxVKg103wV1oDFD3BCysFBVuYQCRk5kOJHDHaWt3zVfDNl4cJsSQAPnTLA0vRLq9Ud/UvpYRQ5yd1nz0/32RQ4IaZ+c9MMcW5qmDg6CfRqLSk3bVLTCQpoAC7W1kXRPvU1FkSMrihzZogNCEioBC2prKKJnNHgJj2wK1dRnqDCGos3NmbMzgzra6yBcR69zg3bdKeY9/rWpr67xx32d/3g1+JnboSmpG2ln1+TRmlJRho+qphw4qhAjlQvQjX/U7/jmFk+cU9E+Z3XAt6nl5oF0RGKBcI5CS/gXW14TOMbtqaOhM7QPycugaBfmX03RGj0gktPEDel1ECekBpKCu5EFaxuxOslst6VG/La28mdKq/bQot3N4FspA/A2nbLZ00uKZBL3H0wDYIKsVdz2LQhd0XNIYK+uv9oPI2FKPLQo7u2u6o7nxzzEWJ4FCtihTr9GdXkumuqTViifEufjgbJd6nD77gzrKsBwodCoiHlp4/5uESV5xRbzR3ovFzozwSMLWKv9CTJaO9dbAw6sRYKI7242a3fYBZi5To6LbviiCpaTdTsU3EyTIdGUmQaR73jtN2QpS9YudjIqAtfDwkD4iZkDyByW7CTwi/fALsetYCvr+SgHGAEEvxYynlcjLy0dOSsMWyhGf8Zx8nPlX0qxbXgC08e9dHOW3YC+5lBJVY83OTapBDlMZLYQK9gFNuuv7GTIMtRauuG1cur1JVtgkEyDmEaP63/mk7FUGzzIuAXddt7dEBvyKHBdlm8zzmsKkS4xITeVFUOMfyCnn0tMPKdi+myDfpBbCCUIkW7V+g507NHnXPmN8an+2Nz8+XdRQZbIBk16gGpYNJh/364hJJJA9a7yw/QPqKx1jkhWfd4ENi4qJ+wTqj6Y70goHjVmXaJJWll2MjXw6Dr0ervB201//jaOKDjDIV3xfx7VP/ZJwgQlbhComCCn18gAcuAqjUdqQn/aK/u87wbMQBGx38ry8cnazE4WxWFh3m9tIMCIFJRYCe2iIUPcMGu7FAZCyTp+0myJnX6atlx2pep82/ZqtJHAZIajP3SGz1rvlonXnuu6OB+pOQ+Q3yix6HtKswSCUUJ06lpJJGM6kv1wNqBAEgmkicTwbq5EMkv3f5x/jFMcBqnMiIplaqwSXIk0rQpWWPfpgTO4dig7TPAI1MrYIqfmU9ShD5HnIdDhomcJ0TYZJU2GhlU+2+hHfFXXAtntLHfPLb5hmphRvFiZ+3Jqb1/vrAAu3yGzrIYTgiNtcP/XQqLqr6a+EEaDYZz669BeJfVnPtnGK+zXFXfB+D3A4MOyw8CYE3CCBCyXGFAbdn4OZShvWHK3/hxinrfCf4Zi9nGeELbkhWjDlB6vEcTkLjJoFbnqTMTaRG/MeLvMoMY2vdCneWHMLxZNz8eoOPyPGkcoLDdUhmO6/8j99fJmW0j/VHr60B9uPci7T1utw5J0x4Fs1ZfzlIVY0d9wDEs2scda6iij5w1XPCspclNzdUqTiBFZLtJuzyYZ+NeoCdQTZvNlRTfB0mNDhNlk6S5PBFtrrpZM5ySEUUFLafv3Valb8RNngrWj2A/BDr6HRr08bgNFN95B1AyLywY/ZpAV0bxnDC3vu9O7DMY+6+Ch/Sqmb74arHZCJtheTM2nCJ5P7y27F+mziCihpsV2Ydq/AKzOePCT8fzxJSc4YhuxO4D7dY1DBxuqX8SNxd2AJvImfsDZ7CtYMZxcPbjvcuD9QoGPRGiIJtLSuutCvaRoNZnMPX6YklP+UJKLj+mLBD/m6FJAXwo/XisaFRaMwg760H/UC22fcgKeVGTUII/ltm395btII/o/2k8jIsfZosf/OA/ELcC65SA6yEd1Ga6TshnpKzy0S456ZKEuPomT4rVxVDLdJBap72UUjOHaKIXnM+8oMI35O/wN2PQfZMFkAU2nijZ28luwsXOgpuIqnp50h7iYWaJybH3InDFKOTtsd6TR5it563BxapUYQsqiwVlww8nSjO8E8KJJdXd+k6Jd/3fwhb1BP8Nh+HYS+b/qHgv1D+Sfjf129U9+wj/Wfq0Ul5Q/1a/zH7r2djDXYM8NSUTHyBtal4Sfa4Pa76x+ubsU/9vf0KFVCQoqLw8+aaPgGD8lMA8/WZBBY7P+Obj8xzwhE0CT/OfnUSaT5NkSP99FETro94MV+TkFpdxhnM3SFZ0w5+V9AEqTja48Tv/RKoT4cfq0ybAWyj+0MvA+6/QUtvVm9QhKB4JoTZsdc6cmEA5SM2ryPpLS1p9v8j49m3rLvT6oXarG31Qq52xu5lqWcr/E570Tn1bgFHLga+sdwau6eUBSvUDpIIH7laun2bojeNBacCyzDpRuA+5UqznkjDcc8l9PPaNoMoETkvebH2qDreVap//kIuFC3UD5AFtm+MPZJ0+dE1ZOosD7SPmkcVU1D2OUCuVz7JrE8wLKRfrpR6LJSutxm8uD4gz8LLqS621WpFHL5xvijDQ7sgP/y8qRDYs6ZQ0zdSVDnY6U1l+/V1sgO4LqTv3he4k7wl/oLn8/5u3eVnK5Vh6+ClIMzkVIPJTjHy618M3sOCj251+zZ9V4WrvS3q1ft5Gr9BVGM+jZeAuBopRzcj8GmuQS79cfHuydyLsgl4xdsGXpUUUutH5obk85TvyHf0mK9mrNqP6w1bbsz2Yk7RKPI/zzGpYtdtLo1wWOcsr+V109UrZ5JHhG+pHUutzReb5EKbtd43a9xF3tryoggLQQvKbI693npboY8GK7Gslm9udfrMlbh69ySoOkuOPNzEN5rZv0N4Wu+lJyf8H+M0FRG9C3dB2/nvrJ+hSmv3jLiz+UbtX7DySIe19kY9F6zDytiSuHfVTI/x9K5EHj9nflaY3+XAiOOfO2Z7D47o0Co/iV3cTPCUsT7K4Jpzlxaom1LNiXJ+5WB4yhFDtp1bz3tSrynLQo1VpnBE4QoGhPAYZ7WYUjDQ5X3G2jVLMDJ6kJv3ly9GedC7xYqbzZdS2jAihqQ2PQ5+Mjdx3pDBP5WgmeMgn+k+uvqnWlpVhAtid0+ecN5rRQ0RIndW4qiZNRWoJ2jcbnO9fAGh2JU2hR2G22sgQRt8iu4DH8ErXGCbcT5WjxGRh2rvjXOhzql33LrBYuBh61turIhRCtI79Tsz/3DKk+vm8xqDUIq2afP//amJCdElZnvVvvFnDF74sUNdM/MS6O7BjAIWFmOhVg9VY6Ms+vIRW4Nh2qB4nKGK6iABH/VuwD+UjevjzRlU8qUVt1Gh9KIoT8k/YlFERpxZuR1bceYHL1MptuRcN0anauQh50mKnbuoMgn9z2GX2rm/MV82JcKZ9Qe7MPRVTOhU44hkFUgaId8Zj5OUaqWlNWiZeumcz31FduJvm7SIe8XX6FY5jQkfJnvix9th9fz0sv8Tr3K/19zvF/K4oOfinB2ZE6jZR1xafcU9tEeVqC175nOoz4VJLfeuB1x/Bf6Tzbs+nnxEPF3DvRd5RdwYsDKxP+Ktj2mWEzMvxWkq/9wGYZGT5VvOkz63FFeVOCPx0J2tyv630roMEIp37MUs7KdFkDQP/qryUu/f8djHbT95GtGOfXW38BDfPDzS9by+DP/hzaDvpS47C/4Wd4jX0rwd94f+zeysdtOzNh+Wfp/ipf5WzhDy5M2VZuKKhL8zYzFwG+lteUYmQRozw7ib3aPYvuKvwpTtZ8F2vrdDY0m+4/Q7gOvxtmN7wxHN2cXRpWtt0vGi1KNW7slK3xYJdlNJ7c9nJpPLuL8tJ4aa9cmUb7c9mb9t718s7UvY/ywXRyr3w0rd1n6VbNoZc7q/Ahyler2UflX6ujj1lOViufevlp5hjlwTx5UB6ZDx6yrM2Lz72cmdOXKL+RX+9z2Lg5uejD4oY3MXxz8+J/ORzdXHrbh5NN+CeG524O/unDyvbgsg9ntotfsrx1nV56vXO19+2hvva5eRvDL9ujyxiuXB391etfiq/fxTPr9BKVy4ecP2U90QnaimVpKtCRzz0SYMPngAbwm+9P+A34ZOGmgT81/94331BL/tjjf4BvL9RjAzTwnx47QMlfjFegjv/skQEH3u7xBFjx57G5g+nY7qmEc80XphrOkp/x4385rQ6LXF7kbX141Yej/DUcvFyO8pcd/ul/F/LvfPj3BK78PKI9wVAWeSjTR4Jj138Abfn4hu/hL0+lvO2pk5BSyj1V0slmieqSYJH76nLpkL4SJPeguxV8NCbA1I+RVxlLn/Obh6HyUBFl3HTm7I3faZzNRNe6CLAfguG4UN44Owh6UVId92RD+161XTk5IdSln0nXPaAR7J6lD71Y7DdwluSszWzSOVT32IHVr6bJaseMECDRIyWIQfPgDvNOZ34ce1kw5mTBPzgRHxazOC+nPDD/K8OMq4NJYELTBXNbTGx6AOdq9zlnrl70yQD5d2DInxhzWKBQbPNlXkQ+6m7E8yBeQjAm7jaiHH9s2kI6ANO60yqU94frFF4HZa85gs17w2lMp7Ah8CHOL6nWoB9JSeUf5fpSm2wv3D4+dKZ75jjli7CznDP500BrswlmfHdJ9BYuAJ9NNuI6UBu0hxGarrJoAwEOY/dbo45tl/CXRPLRCuo+fHJqeaSqwMaSPdGiuGeI2ubsnxhSJPoN21EXErLTS66OkD+1ozRjLfBgLCE5OwbWhArXht3LSXX6TKEvWibDcCJt/NemZaTBHwBw2x4DagV5QJQMRy2A8ly0y64lrcF4nNgRKkCZT9Jm7mfXuDrgn+a9K3VSdUJ62yCzcbKCP8qO8cfQo23HSPElRBVO6GyDwKkv43AkISnMr6p5uISkJeYfo8JShs+A2/4NiaMjkXzlsCpr7xy6t8BUEdu5mTYOAun9Wdx5deb6ziiKhZF59t/4YmB7wk+n9pb8KMPVdpe0VopenrOKEaGy4XGI3bf8OYw8vuUOskTTSnAUZeEqCnKpMe8Nox0pJteB5/Mg7y1PJ2e2wso3ybHTWIaIjn5IOTaygOTsPLPTeZXtHYAXs0PYmFXn4vzCXqYIWF/1jJMkYTkkgYp0ZB0Svyx0HtWr7S6FzyF861EnbVNRRUJRGd9aXrJ7AHp/9nnmsvNla0jPdtPDwpsTS7CCzJMIX4clPW8WYOW9iN/TKPW62X7vxqf710ATNZqXugRriPLGw7vPRV5uwikdNbFhBFjkLmrMRR+rmp3cIWS7WawgGD+9bEN6pM/ncMgZWUUkz6XqMVGTfcyauZXO5ueOtrLNVNh/YhFYOLOo4ocPIzbDBo6uS1yWdmmkSFrshfDqZUGrYt5nPJ4AWNScXCPPHUCnJTmXHlB196NRezX0Uv9uBjThMV113pYke5dQhUpWmnFK+2QNCH79IaXjozOuDM5TZGcZ3gGmDWaIKP7IE1WWoi0W6fFlGTSPaz27wVuRMKVEjYoT7/hBuXrlieY9rmWndKHiHiFRoqMQ/1h0gwYEQW1FVF00Dv6kKhM1ABvs/905oj37rhmq9QdE1p+cI5onRwxPHv/eGKOjB6b00OvzOh1kqyWFw0lIW47ceWt9BXCk1/bNz0s0JUYLejMdxDAMw7j9OafJi/zHrvnZdEfVffot6HTdHc6eJQxEKmC5HiE4CpH5j9kbE4Zolxe9vtt+7u9O6p5TqQPs0BYqTanZLWGS5SxJtKJOs5FAevvoy2gERlTQr1N8PqZ6YjaNFNcuTENBSkjsoUNkWRq67/1r/hhYd45wymE8ibPmmc7M6YDsamb4CbZf8kGGUIZ56F2vGIgKixglaaI4kdB7T15JMrcgQDuWAlPWaBbUZWkWe37HNIUbcuTsITDf0iRIcgH/TmQGW86EZtI8P5yrGZYvH5+8sB+mTKbtCNwhDEj4c2JRnYlLwgnice9h2nhGL77NszYgvPvC9DyXYXdEJIkbj5khl88wl8F9DqIW7E4DrYvxoRayUj0/mh9JIN2mN5SdtWADLPxew5CRelnYIoMpauH7NW2J+RIPc5g0O3u+odtnCBvi9Nwo+sjgKI3oumGmlevmBYFXFsmh1OzxAjUlOnpGPTUdZG7fxXk4a+B0g3BMVvER3YcCL/2sSi7ZUFKMc0fU2XurJH1XHN8ZwrjsvSaO0vSNr+RetfdjyvwbNaGkvsp5Hysw41ZSuJctivy+Th12Gk7xRoJ8QjXq6Vvizf0o3qzZBunOI1JtuieS9OiYMHdQP5BF3nrETbcdofXu6P16CphPTsJ4yzw6T0NIDslqWA7oWAv8HkneWR7fy1DRuVV4Yi18Ai5VYkaGC2/vMxo4Szr2XEIXAOJ7pM1rstFnd/qp4WGWQ4XmxUdFSb9kx7obX3rPoRYN9ORtoRJ/pfs065BLVAKBzK8rNgQMn71uQt4ZX5StY08D/Gf7QZNsTrPL+ZvQ0aGy+Lj53MGNmKwWPNkR0fy4skxEj6ovYxaRsGett6eHRZIhMqAzSWI8hT1KmVELdNG5h3gpF75nfkAg8nbu9EhcWncozf8cRC7LEsVGyURguLAT5/GORn64KDTaD/UHJEZUjyQ9ngdcXsvRyV5nMRFs5MoJ/RwS5PB2GpXIQEk0KVUdhy/AJIGBdt/pMqc183ecrYcWRGDMWNXmeVlkFr24/+wZ/ybPPQhc8DRofNfenm1Bat5Yg0CHbfF5NLECU3CBSlbI76I+YI5AmhAislNBkQ9q0snQbd/j+Gzm5duOCMFOOglB1ig3w0xQFH5nfljLf3YwcM6u0xNE+rudvCPXOEM6YtByjue5as5NizF8Ndv96Ty99NCBi3a40t5FQvb3TcfWuURvo+kTC+aAc8IH14m7NDZIciFFWHr5YwsW43veJZfnZj54VZyb/4X3YcYuz2R9E0i/NQQdGzxpe4IRWYXrovs1XxHNrV8JyLYt07QkjLpZbhL83NALXWj7MVHIxzhpDqpNiF4u3Amz6XwkBGfEnzAMwzBix2Bn/bK7C21JGi2AYmbWRPTJAgjPXczBpdvDJsqZoKIpzKOzk4sxdExgtaUvr2I84Gh/FYkzEvxrVjvPQjqt6V0ELwA/iqSERYs6v5jdThx6ruju8MwLzh7ym/Zf3ktnNTEFDChieakbB18RtHegAW/IMMwcBLaUd6IhE5SLM/l2OlFV+BiiRlOmJtLzffwESfJtI9dhR8YgQuSquKseqBJUjSUS4kZ/fxbY+6cDKmlAdguJ2gC5nmHsOcoDKplBbqqWfnuoyp7U5Yz3y+znNzzCo/NBkm1iLAEykAdSQT00JxLIGkFQ88G9VFchZMOeXJKOpkTk1ULmmZZdf3AC/OTWliHVRlmJuMUXqWERNwyTxBX/PcMm26d/Iu+1tLp2+Hq4WdAv9LByDeIQSD0ZFNecSdz3CiNVSowP1sHQWlVjtXSl7YLdpgfuTz/m0p14mz0S86JqzmfhC4larRFwDXrNxITHWysPbty1K76YBchB2Wa5z5rUfjhlUNrqZmSIk+X7b858U4/un30mEeOKJolPGuq46NBz4R6dhLcf3GFObZ9Bx05u4jDxzUbYKnaPoa3wt/W2DFLN42t81v5zeyned79ESfAqNU/mHexa5vbcK7hdtAlXSGs38x3kexfVQfVZyl3nIUr9gkOj9LJ4oxpVaC969ZN2gwb+6SCslHFi//uZXK0VicdDgR9niBfAGk6Ey0MUJEuwcUNmLB6qZbqhKqiGIeDoy+M9g35mS+RQQ+xFbuUMUfkLmUaX6XeO2h8hseNVTVNIIGp7f1kI3+TnhHpVZ4usuOSFXYO3xrQo5oQfibm3i1Sa09u1lWVR+Fc6adAeVo5ybHyDd435U+hzuZ9Z034WtDwvMC0gHIKdUTdjNXqeYKvZjTy5AZ3p8MOT8pwJz2Z82ImdBcTiS9o7oUN7v2jKgnE3bY1ldYttAFc64Cf0PQuYYOxqB7q3k8SpWM7N8bEuueLFpZRb5nOq+1oLyUGTYilMsLYubhdOTE1mx2/9xTBQf1S8k8IfBwEPpxob0kO5apfqghc+yV2pvWY/KHq9Bao4Smt5X63ZmHHOc/PaGuwATsuf75hQNRgXfymTy5+bJo2yYkeUs/Xk4DfPfB/mpfJR5TC9cX6K7gKTILTwgLdSZNGvTvwZ4EnsIokCgcerd+RtUA+da84o/+PsMAX6l75KeTgr+pqGCqorLGhJLL7G6fUDCEtmbosUDXqBeKjU1F/AWNt296I0dkvipPQCn2bjoQej4wa0hrz3GmBS1MGM9qXzXGM9idt+FNfIFf0goDqJC53PXdBiXJSxwtcf+mFZ36cyuV+AV9is2n0rrWFdqzDREDHjvNJm/OSEimwWzSwOwzAM356jfjfIHbCRXrbXIsFEo+OITOBKRNUMPnAd2fIa7ooAlDBgZ79J4OWzHYPOigPuv//E/XeuckpRN9RgksSacQHV/j7pgZbfSTReLMjLoas1RUfFVmIm1dRiZv6v/1H9DLsaH434MNlycpem4anh8lG4oaCpaPV9+QDmnxh6K8WlYIm69kO4mgRTzJx/epNjHiP5h5+OQwSw92X6Q4ltqaEZK645TT8QXX241FiHBDrliZIZgW/TKUTsg29fP+CxrQZ7VWwY9ZbDgif4cBkQjP1YUI8EnEwxbJDH5anCBqVGTOHLNSsR27pr8fWdVsoSyGsQwSx1rmQDy0xL2BQKQjRFXoeVkUc5xe3O6aRbMR5J4ZYwOf62BLHy1kfIX6EaYmYKzpFkoGwMxkdDuXGxN3UkNXnV2C2aocC2alTcc43qlNXyTbrg5kq3tNQzSbYrUPul+4Ap603tMzFyCDUzwI++c+Z2vW5YEsXguBZjHHeq3bdR/dqNZQpK6yYjr3xA9dbroECEUWO9EvoOHMmIfZzE8DJ0CJ3AAD1XIMVSllE66nwsWPMBCdv7UUjj9hr3RbIIEyDlPoF9e5ysqIxSr26eQqjHDd7Gs3kV1vuDzTwbCA8damqsL+sqLmmCQ1glMfbS8b6wfCJfPt+/y5GpHC7wzVuHJLkl0xhsATZVuu8T61iBwPU5sGP/fbpK8T5EOLW4qLHiEi9WfLgBYHr8huc2voQN1pP7f4/563c44B3Tsj4ipNBChhKBEkTqRHwKi/HqekunULT1OfvTVucRp9fn8aXsI50KSR9W2o6ul46o131oE9UQ4tHUUNepzRvp+5WR+QtaP061UJ1o9sYd+gdWC8q8AgN17jfEkZ7YJAJiAsJvAWGjTMOhwws7+tSWW7gdptvrtWAldQINQaq0f0erJDF8azDWngKjIm6OZqFBB6G8smXhnnw0pZgEGKpnaiWog+s6+UEUpCz8N+4mqLnsZqpeLnMUKBfh0CzoiT6Bbqoe1giaLTxZ/mqAFOGtwyi6TyY39AmJqSc2OTsBVrN3UVCSs03tJs5GD5N+hzLPZ+HVewWIIfVA8BLVfctPo0UBOmeKr/PJ8E2Vjn9DQEjyE8Px1g4+kIuU7YAvehousd80TpX9AM0FuyNgOIgcFEBDzpUNyGhqhQ9H/R/kMwlNfH0xn2Sc5eb9bkAe0Xg+l1Bb6rmxaxygMS10jXOCgvjwdoaqXrhkMPRbXza2WNl81h8huavhBcZxBSFwmYb+3nLkmtgK7FzJXt/U+DFIsbyipHjtHCfbdbcJaq/ZeeitjTfQb9XIdFYcIr3l6xWcuzEqLZ1YCq+PHEyHoQPz0d1ZFzgSc9WbHNWqwDAMwzjUNbVU5dimJ0T46v9foRTYf+y3o5y/N3vo5ykqbgtWXrZ62kYldRjtEnR76GZsFwqbBQhrjqmCHBqYLtXp6Io/7tE4R3ARygOFrru6BkSR/5Y12JcePh58Pj5/3cOD/C4sOpedK9VeOPfl1em2qDYTRZBPvCdxGG3a7kP18i0fgQNOtNqZVgMzvloxBIvZWZYnZiK3Jo7Y9Pq9YKUy8n9chYgB0JMJVWBcsk7EmV3kvQwuROXGJucfxSpVJ2+ggr8SG9wDQ/4XxFNSu3nKT3jNKccGYstGVv1m2UjuPGAnnemQm6CzX3E4AlbKHz3AdoxOa2iv6MNz600yD9JSKMV5dWHm8tPxphY8WfD9yfkdjnVVt4Km+gE7lcIyvGljRmqV/NgaQmQTeBXFv6wOXH1WLgEC3c2RUihhLkzYTInQrpmkbPrTs88NMvfuKCEvhbMuh9+LqCsAyjVKuImkIe+iiy3e7Sj/iQ1AV4J0F/A0kMfEmMiP83Pwb4/JY4VA+Pvpy9PGLCNZpfEy1TwxfzKKRnpYIWGmHLjeiQY4k9Bp7EOw4YVYrzquy+dUWtsgOsm2mydpdz++nqdSBRcUAaU8IwqXBcVL99B4cJnkv95sDSrt5lToxDx/96mDfzaZx+3DwrHe4k5iuiI96SpbdlCReHJzPporM643hCxXr/f6tjPcQuvw9eTT54jXMJOKr6Zc0fkXS10s0p8vkZWLV8R8aFvn9Yoap1AnJfHk1I8cSGS8ttS9tQA/ivHzFwYncsLrSGqjzmHx4HJBDURzHKLtBBTwVOLVoKEdbvfOUf7BqcDTbfwK+s4YLYVvL1hHgLWg2N+PtQHVyyQhvQv3cI+i8HWuHWauyYybBr80WqlAVYmJ2EgDlhvwJN65Z5w9/f0oktLBMTFEopBZ0Dq4gDIOmw1JJjDOHb7UdgYT3dSLcWx0I2w2y4XAQeIm17ho/mDY75RIHXudM8jW11MefaW5PnyWgtyw9paxD5k9pqRtSj8U5wJpmz376oNCUOzHPsdIeCTmAdC9ldAhB0HYzI0qy6WsEUg1zoS0mryY3iKNzGrzJ7mxPMFORjiiar6n+vENDNHJGpFbrs5B0yZ+lVOcTtlxNa1EMeDRwy4E5gyYfSJ/IGQJd4ffqnMlD1bKEd26cQ5+v5yUSiqvKBoiwKexFaiVjv4k8J6Mk5pXVmTFNIYUbSnOG8qRLlP4sl6IRGQzL9sVtscRcWL2vVamiev/kaBEBzpQTIJK39d6DRXhD9l0nReSa3a8dRMPkLN+XyEGUUXhF7LMUsebZoac8uxuvY7d5h/Ni0PytIFNqGl8KzUJAT7nEpCK4B7TreUeq3dZJv0MSssqbZn7koi/M2rU1Q6vNVj6nrFviW8loDGME7EpwdpJOwyFv5/USCEmujvSJgWvdP8nrVIYTnQzqaZQZro/SEMKsaH7QtqmIOh6l8YUhkqXXboahfKF7qJLZRTiNd2+S9ej4F+61y7NozA80EWX8kUoF3T/dimOQvxH97FLNy+Cj3RPXZqOwvCB7qZL66NQntL90EkOQpzT7bq0OQie6L51aXUQhq90U5fqQShv6X7r0nAQ4jHdQ5e2B8EN3dcujRfC8JJu3aWrtVB+0L3tUlkL8YnuvkvXa8EPdH93aV4Lw290mpSjUArdOaRoQnymO4R0Mwp2dKeQpiYMV3SbkNZNKPd0lyE5CfGc7jakzSL4RvdnSKtFGP6lW4VUF6G8p/s9pGER4m+6zyFtF8FEt4Q07oVhS1dDutoL5R+6NyGVvRBv6N6FdL0X/Eb3PaR5LwyP6IaQ8lehvKD7L6RYCfE/3aeQbn4VPNA9hzSthOEj3Tak9Uooz+h+CalMItxpi1Oq6lRqlGtO9udWXU8ihmttsUnVMJUa9Rcnr9mqeRJRfmmLy1Rtp1LDmpPIVuWriHqpLW5TNb6WGsMlJ/9mq+Ikwv+1xZ+pujqVGuU7Jx+zVTevIobv2mKVqnIqNeoNJ0/Zqukkotxoi99TdX0qNbzl5ObcqvVJRD3TFp9TNZ9KjeGMkx/SKkcRZm2xpCqPpUbZcbLLVm1mEcNOW9RUxVxq1G+cfMtWrWYR5Zu2eJOqm2Op4Z6TKVtVZxH1nbZ4l6ppLjWGd5z8lq0aZhH+0BbfU7WeS43yhJOHbNV2FjE80RZDqlyWGvUVJ1+zVeOliPJKW/yXqs2m1PA3J+ts1dVGRP2pLT6larUpNYafnLzNVpWNCF+0xXOq6qbUKLec3GerrjcihlttsU3VsCk16l+c/J2tmjciyl9i8UtSbTelBhw1ZkHJ0jkamU2UdOboyExXsowcXTFbdSUdOHrPbOhKljVHhdnYlHTi6AOzEkqWPUfXzOZQ0kDXUxo3wjDQ5Vm6moRyR3eREkpo7AWT0pUwsjcxcVbCkT3dpIxKuGJv1U0clPCevaGblLUSCntjM3FSwgf2SpiUvRKu2ZvDxEYJd+xFmpSTEmb2pjQZV+Uhrc8cij61Yj+Vfjgvfd6VnO+Tib9gDf7lO+nHi7d9uqz5/TENzt8fv74Y4n9nff3yt3+4Nq+G/O32KXZtGe/aP7GfSrzZXu0rmHOn9NtX2Hx1oYKe4PtAYYbvCfcTvj8i1k7v1f/XEviHK7QRvw3qfwXYDnfBMvcva4anZ861buv3q7jedn/CP26w6aib/gJdOUDdOUBdxqDo1AOA3oC6doDbXx+WsH2Hq+ElsLFLdKJxABQdocGXqaHjcfbOaqokXufKGXa5cJqeAk53jk7uiu6cr3NDO1y/5q//tZZwkN8Ynv4EyLuNAyftEPj+w+Gb9YqNb/+T0Zh7wyWoQatHgM8wJMDgqgPKBLNx7qu0vnb7JHG7FeH0DZk7VSa9JNATY9+kV7M/ddI4xyPW71knWK1OOklqs5U2N5s5dqsTuZcKsStys9ccOL+Kb5l/md+69XgWxS2Yo5tuu1E4Pi/9uK0Zk/OqDr1tP/790xX4fxx+y99G1o9dx21q8/WB758v44D/cDK/7qdGugYHN3FQky8d7OvG+4dHBekkmi9dko4KTQb26Q3af3FLOb1YxNP9nbORvdLNdBGueDWErdKMZ/fKyZy+ipNNemvc2J/LnXnSs97ZTC5SaGqzM/Y4pHekvQbgbjsCjJzdORMNmADvVAzBf3SOygubI42ppEt00Y29X8H/Tf5BNJsoxarpMRTG0qMVvQ1alNJbalma8eBWmUy8B1RCVGiE9EU/mLp7ZbbioCxW4aNytEqflDTzoKw0hZVCX9e2vw8lxmO6LfcbLIncIGZGxwvkAVHhqf9gGC3/tdU1reQBywG5QrxnPM9nyM+IoeM5lDa3Rpx39CPqCaHjcUTeIm4ZHRvyHaKEKe7ulGl3kcQu0FeoD+xKrrAsyIr40NEbckG0huejYq6IbaLPqF/Zl0cTlg1yi/jYjX1+h/yEqImnNXJAjGcsE+pvtJITltfIsXtXLybjeb5DHjsxjHhuSptrEucj+hfUfxESjxXZOvEpjI475PtOlCOe9krsIondEf0p6iNuy/2E5T/kVSduAv0C+diJ9oLnlWIuQWwP6G+NEnfl14TlMfK6E3Ma2/wK+aET9YCnE7J0YjxgOUc9o5VcsHxCzp14nyYPd8gvnRjWeJ6VcT5P4nyN/gP1J8IFHl8i7zpxmw6OkPtGlGaKL4Myzrskdg39HjW7VvKI5TMyG/FhRC/IHkQb8fxFMZdObBf096hLd1d+nbD8jbxpxMfR2OYr5Mcg6oKnB2QEMZ6wPEfddK1kYHmDnEKrsrTz/B35EMSwx/OF0uYhiPM9+j+o/3XCHo9b5C6IT0ej44i8D6Ks8PRBid3+TOxW6M9QH3e35X7G8j9yHcTNEf0F8msQ7Vc8P1XMzsR2Qr9W9nlOd+VhwvILuUliPhjbfIk8JFEnPH1FOhPjBsuA+nfXSs5YbpCrJN4fTB4G5OckhhOe3yrj3M7E+Qn9O+r/nfCKx0vkbRK3B6PjFvkuiTJrOmXaTUnsZvQnqL+6XckNlm/ImsSHNfoOuSTRjnj+oZhrENsN+i3qt25fHk9Y/kJuk/i4Nvb5BvkpibrB02/IIYnxEssr1L+69JKwBHJkH7vJ2Odb5BExwHNRzLUT59A76jEI8AjZEJ+a0fEc+R5ROp6ulGn38kzsOvoadRV25b5hOSKvEDcNfUQ+IlrH871iLohtoO+VfV6ku/JwwrJCXiPmxdjmF8gPiBp4+hdZEGPD0lCfhlayY5mRM+L9YvJwjfyCGBLP75Vx3iZxnugn1B9BOONxQt4hbhej44Dcd6KMpvhyp0y78UzsRvQH1PuwK3nC8gWZnfiwR6/I3omWeP5HMZcktkf0D6j/hH1ZTVieIm868XFv7PM18mMn6hFPj5DRifEFywXqs9BK7rG8RU69CIzn+RfyoRPDAc8vlDYPSZwf0L+ifg/CAY/nyF0nPq2Mjs+R950oazx9VGJ3SGK3Rv8N9Um4LfcnLD+Q607crNBfIr92ol1gpjPdBQgP9y1Qml7OGBxCPYcQe08pZwyOYXxDq8eQyhmD8w2Yv4jAZxME39PIcSRyBLODKu+J5szBAUVyQJn35D+fNTyMkRn1Hka8ZwqPY2JH5D3tHkW6xzGo4lUc6hnKo+j2KJLvqfYM5UFNjer2oLI9Av+/WCr5GO2LMm+1dleumlXuSyttKuFDiTZO8aYoq629VmKysi+W2I7NsUTrre+rctxq/W05NM2eYtLdl0Mr7bz/oJy2dv2qxGwV+1I+76dDeCix7c1+VPpWm/blupnty1TGaQgfS7TNtr8rRhNaV6+hD4H/AA6im3hV2LAxhOCCZmuc+xnruGqi27VdM/zE21tOhpzjvzLGZls/t11r00VJhdNlTSIOl1hzuIJx13bG1f1ZWI/t9OW8Uusc8cWTZldrbgL4mbKUp7+tRLaNcX4CunMb6Qxl6sFx/KCUuFsrrKitaq/ZHOjLBN4ZaFgDzTAKgLNL3i+WG4qZOgqqQC0/4aB3s4onXPYuFxVgXrbSKt63eDznsCwEUBVML9bkg+QsSJxmBpkv62tmVEop5mGrz28Rwxi88Bm/A5t9gVmByDmQK7oNy+I2kAEjOuWU2Br88Mh6TvKPyOE7eC5/cPb3yiIP/Qaz5OyQ6q5f2J5DWOJjMrL/rtqf1F4HFYzHjJonKDwbREqHORaP6SYvJKnswmVHs1xM4YJn8sagqd1yiCyXLOoDbXIfGey7KsNrBaPDsoetMBy2WF4HB62dp582lqrPzrCo2R0y2XCin2nzkZe4Q4fVEe/q6/UA+EJ+kvCCfFtPRAmuGdqkqVLsfBov7e+OAiezeHWKPSy4AJd4uVi/OzDQ8kBefnfoSOOmiUsUZ79c9fMgw4e8z/58CwvMLc7F5RJeRjeKsC7McNKW0jpqjDPA82S44qQ8RRl1mBf5W3H13KKkOQZR89e3Dh1izuTuxTAu1YyZFyhCSUYWjtNrteUuWOL1zOYivzMc6xjNTgsQjfjmScnxQ+dwcAkofA68ffwbVMRNFStxtxAEDwZBG99Ymk5yP7uoXniI/MF+I3/EIZBF4CKi0ngl+jGA0UR2zANzjlAKPVz9e8yhDB4SmOTQ4eMb1ALCIGtGWB3R/RBzuBoSURvFAf71Ppck6s5c1aHIxmxUGcdaCPhUi5Pz7DRu28UfNkk1IK7QX8Up5n4F0isCECwmaPZWxqDhie/xqLaw+hYvqAVvV0WaDoUJKmD8ozt7BCbzSKGngwQVa/XO5yn0pNmFX1ulC74Cd3EZMHheiHw8pMe69RLUOgYvtXXIpG8IUbQ65/X0VQdtcupYLNUzUCEV5SGDfErwpQxeSj4xR2TF5RT1PKjAFSpy9JZp9FgumuOH2HzKQ3Tjn8NNlvXHpz42zI4BEvDtV3HSwZwSj0FJ6lffn6k271oDrL44b/uKgExT38yukYVJ0gKLsvOhFyV0UvYQhfux84D4S86xm3dxH0oweprHll7q1MYgUA8vXmlkQ98Y7EjJiJ3xp6wYR3pRkypIMynUW1HTEgthOj8HomL9vbHlebKhH9UclK49spqD9CUQgiGKdxY/nnCTZ6YaRIciUI1/vMXNKb/uAM6Lm/Y5DaJJ/baRAxnmcz/Cr+spYsIRlJp2Um/vFjogUUFeClwENNCpfm98RhNYNPDkMamEINtIqGTWVZ07Ka62hELXD8g3KTBo1zhhDBM4o5MKwZGeWdqF8hXh+6hVoYwuTfVUulHAcGLEiS+l8W69yjl6q4XVKWdlp2iLwCGzYuIUU2k6xF85guStpogozA4UZtb4vBPDHsT3WIY/D5VJGuSaUCkBJE1mtnDKuULmSROdL41Q1KwWYNn8PZ6ShFdbR+vuTadCwm0a8ZOnW6c4n1un11VOGuZAtiQt6ZAZZD6dH2S/CB7WoX9K4g+/zrx7a4InZ3hsc2YmP/hLNC+vCGHrbyfyLGKUHW1Xh69R2oN0ZCbIe0zSXcWjVDMmfeH9MZPDOZrVRkBmJIsEJXNNjCNzKYJSfzzmQQnmW800CtJEJCcR0OKdhLe+vrLbuBe4roJxiMRL3hRmKqBx29xNKV0ZdveJqxeF6dEyVfNTZ2GqyYzm9U1zPPbymTGsUHIm4qaLX83M5GTP/GAOX1oJjtQEmWzYDoiJIcgXvuqmG9lXL91YVXNO3Es5DNOQsLCwmqbWk80vh5btZ+58PeptF4Z3vvoXNokh4De47hjms+nk5jUbxul/WbDnd7vOX+3a7euqneq71rSbOmin+OvDWftt47rqFcSHANZzT1ubDBAyWVk9bYydSYcz3SBTGxpnjV+teTJ3kmno1nWqllb5yfbTH1M05YYW2FnljJFkSXx8Km8bknNNBrVcszLC+KIiCUOc4jZAVbzUoZczSI8SJ7L4TFpxMqjov0jKTwuNBXG/wPItPwu8wVLWajmX1tTOJGmO6BepB7Ij9GNRyLbTBcy+k/NAXgIvbseluGtH8UQuY0l6MG890XZbkswuk5fP8SVrHM34ygSRFU3MYaaQGus8ti1NNBiiJdigHa57F+7+zPOWdEW2jrDjsowFPkPRpTVyaTPMTQMzlnYVDAUo4/KoR4uwOrDv+aV9hMjCnALVvdTeahUtRVWa1dGKvNhJ8CcdZcyO4HcwwP6SahRF9gG/uasYyzV+M3Y4k+wnhEcC1myC9LQHZbaYK6mpSIILZOVVPGtMgDrQz3RsMG/wEDQBpRNt6+imKg++XrJ7vobwyAi0WwTVbb/sMvRCicbS/YKdcBYvtNLCtbA3g6aP8xQylRcQFKFyQiT7o3kTDZRMU+zxTSgfnXSpSgldaPWafIHd7XeCPmOvMWeX+OIIX2JBXy5fwGNl4bIgNiO229iMsJPC7oZvXghcKi/Sq0oT7brb+myLmwWC3DXKbQfR593svVQhszXjlLSSl1hiLxEqmhT1wu81tj6jHOdOleTj6THgyWNcylXc1g48x4nv/C+11nHbXf2/d16Td3amhmN5ap3t00I0+PyEhFEnlB8rAgMyPMMl7ya+79tIZI1QHj7A4mEWjjotZwi1HRGjqm7RIfJpQqcT+tD59j1MY0u3WyF1EOeUtE9OhXXThqv/sMhSggAWgefUfn+/JnzrmB9Hehbduk7Xx79fX2BxU3ZPiKjYoL+yVC6Z99PmL/s8CkgP3ZdbwbBMUnBp7wLgLSwUeQXVAEhSVUB2xlKpR7d1jkCA9ceuAiGyEFxIO5NpVqvIRlishTnIBchPF6zYxOk64mrk7g7H0FTgcDXQqnlSBBe+6E0rbGzJ7MFyiY0aDvltrpq0/95vLefG5nTPOSDP3EILapWFztGBRzyUVEqNbl/ShIfJS/pEhwqr3F2LS53dOC79b67aMTO4r41CAYk/ELW/9CuplZSc+4feCCOo9TcD35WE0qlzf9/fijGhTSKhSWc5yuDiMH/9Ra/HEj6AIXBxfnzKf3kQk7Z8Mx2+8XP1TXnVUrY7/gIRD7n/G/LNHeSAXjZ4wMNfF1wCjzT5+bR89oNtqBxBjee6lRYbvPUAHHh3Hm2nehE1FaEMeAbAvmGvQjz+zV7i2kWqJFyHKMzqxWQxl4e/z/524+8smDG4AXbaYvb4fwC9ZSzaQVfW4oLak0MuyLbF2XF77g7sj/1qtDGXfrYNSjAvtg5sn1ifI70eN7uOTa8F+e2/0LQuDolGjGjsHVDWLbslxv5q/3OG7gzYoKs3d+HtE7kvtZgOrxS5m9BD0txkiSrOobBdBQBtBxabgGIExSCLT9PSLyNU7b56xV3K+t9gnMnZg7MPRNKccG+cbHvM1d5vm/nqmiMNwO9eyuEFxbk03iH+SNWJeZlt12jOWvlZU+BaFOi8lnXI+jzFUkAdT6+6AZlcYOKBYR3LyP/VzCI6KjJDObSXubdVLevTKyTeZy3/GehPwwpv7HburfqNhBpUU2zOuuhjMDxaHdai0quQuqVNtyxZ18h7wi93psWM7YH2afuFoC7JM7yM91Pd4LCSkZNTDC/XMJjyWRkvIR9/lxzWNUQ8cFwu+aohfu1yVBGCYQ1gxGzbRNgLLosnBgtUF87oLkvkgE3dI1E1e7rc5qHNfNZans2zXvBfddHi80aVqDKiNxrjp7Igixu5Mb4VWCAh8FM/Zq+WvBTDXuIMWiRVzTPtZ+Z5T9MXBaeyrAvERetKolU0zy6KOGgwuK6bP5dZcOAVXBWeACIOI0D1bG0gV5zhfQlkqQrHShwGB9vsbb1UpXKDl0dx/L+PlOnnRwebyaN7HdWq9ryQmcQ9wiFrOMDaunBgxF0C2Oh2phoo7gi5kPnIBCpkSxStpSpgrioXrnx+Xec752LewVnX7S3qnY5NHkO+GlTcFzLaFfnShYducdaaUv4RMyxzzLSN409on3GHyqnTnU/J5fYJNDXeu+Y7J9FZLpCO22T8tRz9s38w8SDrwAetyIWWraaR/CqANPfRX0K+/+/vOAF6A/yGIn+s2PX3isvxf3j0IbcbdH6CpjXzplfhBUgbYxfXCCykE9FV0leeiFPgzFzJsvMMeU2SjmF3vAPxOwlsDZ/8Jh3EG5opkBdZm5KB9mmi1fKxWWW+ZhCCkz1Ivn5LTx0hy1uZ4ax9lgcoJbL62eiO1xSGnGrLvXZpoDdSP79oLuCNJt8FFvZc6dbKhed8JWpL6FyH6da0X4jgacD9vADRtvs6z3e3P4WuEWpdV8uUSND7VFHWT3+0pNu+d8M8Y43q+Tr35Y00ui4qhdh35rTbE6Ocy/6wQ/HQaQu3r/K9mKehbtIq74uq9RxW7It6fqTORehKG71rVZfiWFbodV1LGFAJH6vVTR4PR+U//r9+o2tEhi/bdZqKxZjl8s48TyKDV9C/26hLUX75M95YmCpx2RfU3usDjOl7hNqIlfDl/9vtWetVtrV/dt8457qDUU86145Z45eaqHHX9PTxdXfp1aNdZpkba4wCxf6J68e6+LESXO2bYAecKmyCtTdC4q3JGFgzqNixziPC2pdy4l67xlXOu0oM7YXIGLmCa3l5qsqy3k33ObWDCWveCtxoUXvXRfrWvmvGQJ/LblWX0eaypsp3+Z02g2wooKoSvOxe6tgaunZhZQyvHZYDmwUmjvk160jPSpXwFR+iAbNuJBT1i7Xj2D9zwzpd6VHrtmKu+Ns/c2GoL/u3TcJRK134pwe7/Vfdjx1PJebS97wNESYIqhKX1rw6EjL0V8wL3xHt1A6G6ZXwWfkuSFuh9iny1KnLPCzzxjoAfOrMAkG1M2oF65cBsOBpW1Plu8oAu1a3e2grzhYrBK6ff9pvWOc/i7iuJSxvDIoQL4nzLM3KWahDyLo3yWPoOkdvMJ8faN5YEyfHX6MBS023neAtTp+viUSshZnFXz11J5fcyjLBIhUrwc3Fees2ZjJFDbp7GiLFfDBEVuRB9Zi8ST165HIp2smxa96w8F1HMsMIngHLeHfP4k+379Scdo85+QxRaj/u9sJZpFWEN5ktis7Bn8kdXgvL8+bYHh537WGyH8YBupO12cmmIeZoY7MU/QTQz1AMzp7myRUZ3vDzBuDIwtYdWNs6qHJj2DPra5h8xTLC+br4K7y0TwUp/4RoZq/8BZa57Omdrd9ZMwMqTos9H367M0+MtBuFn2UOQLCDkq96Y8aQNjm++a+AeyqGYnn0ECZ1+rqRX0l683AAXvHEbHjM1w53nyuYjCFELoAZWpNGVR4W2+iepz126AmC6Rt0HH2M3mb40MZwvvb4H4lcxd8Ix/ap6rbLhTbSAZrjg57Whum9MWO+djj1mg8KtVGepx3GaJHeugQ6kwO1yxHS4rQQ/eRplvGIb9jRDYRc7c12qCusb6M7nuYkXkO3xAUS1J4AKdRbcGOEXO3snmVQ44+J24iUs/207VhiZCMdR3NSjzyZsRvTZ+jTuQZtE7NR3t/OFO/baVMF25jj6yPrDmeZXuiCE9QeNxqtNzkXQF87Y57EfsQHN3rI1X6uHjM595T/djDibK/Kn+EtU08uDIL6nL6P2YznRaXZiJCvnVWv7emkbWTG2WeM8HWyMcNMvbrSbuCdzY3yGdpj53xrgxc6efr0V5BWvj7RbNI2vIm7xhQ9oOESae1bQwo9nX6BlLoxqr2YwH3hVbCN95Zm+TESGQBebAoPGYlmm0i7s4aNl9uf/gRMkB9lRvxcU6w9Sv4OP8sF/h3IYcNIUqnsU4bV5vK5Qh1UreJH13utxxHfj8nc1acuht9Dr/YCV91UtfQvn4vuq4WsWrr0uzDRAKa6hCwD15bp8BJGSB5001wiv71M5gOR4nuggpAdj7VlZUEfUnvuLlF9yQk8cc26Q5d4snNgdHy/aS9RX/NlefFTElLNj4lr1B5bgcMFEFX75UVRRsmfAHwWNiH1W2HVX45QmShG8gKFwqgG9leY/RF7uwKHcp7N2VgvvzTbuPS8uoesgRt+Mor+2VR/zfnaHkaWE89sQtygaNCvNP5C/2l+9O282Kv2Hivwb3yBZwr7LopJRK6IMS7fSRxXNQhCmqbkVpc8HlN3O0NuQ2P5SrmxeGIbbudP4L62hQmcb4zuN/Ocip7BQQMmHwe4RHIdMuoiIJioeB8bnBjc2CctnKz2eoPx4Zbwo5Bvc8dcc0D8kxbdrptXwbeQtaa+gLj74kQHaAFkuzV5dh2QMvm2ZUnuWxeNLvSKNdGvzJfUdeBSFsX0K/lOQc+wqNXqIkrd965d8EAPMHN/KUbiblgpgQ72dKPZrt2kn5DeuGfZaulp+PiiZnsRJOadnisvYOTXHw0vb3m+es/trNnn+PndH76tZowxj7nWK2eVoyvyMor9g59d1KPFvtX2faA/JXAZBaQp/kmCUufizV4UFbdm2/8T/FFrSbP6+8NyyfANmHdxa9ITTEPLa94Wii0Wj+60dL63N9uDtbo+KyPRlun7jqBksngZSKv39+T26nbQY4HqUqE+ZZl3yXVxjVOfb8hpj/2KTOMsMbFSKjLNX58Y/TZI3uucENcesRdjjVPG5mu3PbQsMo1zwkAswZ5ZNxcjSUPRsYiXJ4142mVj++tDWjw/XyRiYVTC3G8XZ1G/bFRLQWYfm+fk9tgq+DhyIjbhn/aZS/hlyr0sNW2ozPh8cmHiG8yFSLaKtnNoTMZSiiwSA5+k8oiwDVfN+UswmM8brwFNbXNCMAchBEBV6CZyw8tPXQiocO+MfoiACXKs2vOUAagNNSfq9fWU85qyMBdXmEESUhsGSh8HOwGKT94h5kxtYT4JLPNbML8gxf+MBMhESEHCoZFMeP/ZBa2PRFmgCyj6qUC2nBNzfmQbpyQil0pivnDOjgmAGl4Qao38wcuvZIxJdNIIdaf/ejOU6czsQ4eoZdGjP9LUIg6G1DXB+iBlw60yIrk2J93TFJIy0FjxxoXjUFwigg6VydtcIobZBG4iM/8ZCkyLoXTQf+TFO0KDwsV8ayhGrAPvNHHghstxS6hMP6KwvlJjsqUSLgXuzMIExRf6VADR3L9RyG+XM0/O0et/036XiIEh5zoIx2GseQKle3dw3agXCsHLJ0zPpSpba++K27jL6dHmZIjImpIalwkNryGNgC811FOKo5feg1iOP2REolsBplLCxqSlxMn/IfdOD3pBkth+Y+dchvK8j7vi9MXGm+9DjN9MNe6sdoae2gcgyDF1KnuPhkCCDWZE3Hdp12MdbBAX3lBhpO7FnWTdqX9xqwF8jave1pgyZUMrhKHSKE2jSu0mEo4MlSHYxjG88EbPdpMWh2CsCQNUQXJYggRx/IV5sNph2I3AvqI2wE+QBw6om7Ht86pH6iR/10fnxBi/ucZ/5/X4Bxw+++r/xdUfBmZ+00p2Zys+NC7YUNqZUId9CEBQ0uFymjVET86BTY8j4WT05zKvMO0UZVrKA9vtGRqHsANQnx4gxwL8o56JdgBjHLf/gTWxNvo+G/9vanCaFPxC0o1rNOkBemHD7ZxOh75YP0eo/aI4Tcnm3AWDp9iI7TPva+oKzcK1nFNd0olLV6wdZ/Cb6kQsY9eqFVBOUgunWaODPey0QIisfvIB2M7H4YSmWeCBXifSrW37VEhUrmMhZpVIvjuascyNaNTIHxmod+jKHG0gXAGxCSrSyiTLYJDpyCHAI6fUXwi/CY+XitVqS6DzFHVJE8HsbuU66EQu92VXCecMtU7R73DgO+AuEc3vkppdNbNttrhaiBF2p79sFStdZhn8EEdFmiaq3wtmOJiCO+NjJVocvN2b46Hm1VGKC7tZLbNcQgUzo5OMK3Xl19IQNjKsxcPf90QDCy+CiS3A111OGKLPy2kWMVaxTpdQ6ZbaQ2seR3JSxZUm58PKrxt9hwaTeD80jAaLK8GfKdGG6Dgm1B21WqVAEvU0JhyGbXHmc2SFa8Bl971MW8YajQI5Mcc2GKGYl8Iv6DIHeD9zCvokNWn5n4l/4+IHnGehCxFz0XVY4/E3Zn4M1EjfrD06YTYeUug9NgSk8SVkXXNFJFIxqHUR3txH4YNghqSGVsWYhuTwnRK5plagWBpKM+Htse/lLBOTyqkEIUnq102/Ahmlh7lgeLC4bpXHjZ9cwYOxFo5SthVLTmGyiHgTbGKJjotrcZkxmBvziO6PE7mQWUEhXHeJcE47quhCEzmhsEReEzoj88GqcBvPqD8DYkpNdYSmEkWtgpXutee+hk7lTUDkhgU+8p36GHxcOJmUGGfaIKN7ZRSmrrQYHwV1NavxJ9W7tMGT7Hb2FON+mpFjgEaWHBF677tdcWbRbNPkKt6LxCi35aj1x7ackAtjf4ATrP1JYMGUNAO09zFvxRblIlnCDqiew5Sm54/F0duAnFdj0a00g7pvauduq0EqMzm425uXAIJ64XhpBAksMzmuNSalWEuWgwmotqucJa43mPceBMbDfZfEK6Lzr0lTVXCuopQFex+BvZa2d7EEsQcvoB51H9vmBGrLpoLYdiMhn9tG0RMVFvVKyI9N47YUWyWCzCspPnMt7okTWbMoR8nkBy4WfiFaGYQ1cnARSFmXW/zfnA0q0KO7+ZCtveoSxGA8JCRtHjWaSMLTOoJhF2S457k4IGwcDbBr1uf4K1S/jaYbq4ai94LhrAuNkXIMpY41ZFJueeFCiTGyILx0+ndFvMg7CBupVdRqyMsIhPb65IB27/6sWCjlYcaIaWkZ4Dx/Jjd0Xp6laMyy2dQrP1fkBkP+KFNkVV8K+QXNAlc29SGq9+tHGr2GSM+3sFKUJMVqv+fuDXDaqzVhoGDj+MOEmgOkHOsQRLeZtViK+u5Z1B5Iw2MuC9UFDc8jje+LrROxKmGpTbv4YULrqfSuPON/1mbSSPeKDhZSFHVyEqFmi+DUKgB/EaJwt5it8/CG4M1hbi9oyCBTjF6P/xg5vNDaOy1G9QPvZM5CEil07+tagbQdQ+U/hI/arOS02v9ELEKKHuliE45GUnijg/aGDu3XFGQmaU3J24BM6kkmDJtmcv7cYT9lmYdiC/U6Bksgfxi0Bg8TPtK1KNcx3qw558cappxQaF2xB4IkllRYCqBBV902LB79pY6IyL9zGsoFeYSAgAkY+E0Y2mFDYUFBJA0/9nrcmeKn2fWNYabkLQ8nu5MC7gwGL56dgTpjsUnTkAkaedMM/NxyuiINgCuANBAt1cJWmdP51Im7YH8hq5OPg/ZMoURj7tHcIyhlOUxfDUPSVeqzoOLME1BJnBSN5lVhy94XqG2FnSHD/EU4tI36mNjTKbMlOsfRCyrmjQs73Dw0qNVgdPbQ+Rds/OKeZ3TiWKrxUC4Pr2Vho1E14XARNmp4VDwgFw8nqggjbtmaQuoDNicvtLxe85Wn43KmgblBG5bzhVj3v1trO0x8aFzT+0fkjsvv6aVhCPNTbTTWdEiIXehgXZJgpig9HRoPOfuEZ+Nw2wb0ysEvd8Ah/G066o2g13oer+M1KSSEIJN+AkMkW/5AyxFTRHSoiNjU6BILO8bTAa1lML3GUTxOL0Q/oWpnOzcF30sg1/ZAnQExEa8rVIg6Vf6NdFbzzt9PRZToflbTenTc+kVD7j4juNe4r/nSxX02dgZ8hUX3jj7ue1kCq2mgCyNTpfVz5+4P9WKJorz8wOY/j2IM9XJZv86jBrsnatwm4luCsURNc4IkHzjjYeDIXwisfoxmvpL6XHfVEowUZ1cnwv+pBijl/Y1tSBZAOVTBj8wSo4DhP+jTkTIfKyKnqp7I9MCUm9FP0q9UHmtRwMNqF1xdt+Hmh8mhH04Pw86sRTyBzlok8QjPKoHIxV7zeyNDRGFqIwDm5nSG3PXZ6gicIMLFLDk8m3QrEUKzN140lEpf+zUrO+oQxqUV5bUOvSX+83kQrxCDnqjoGcyn0NThDojt4fWyGVS1J2me7X+rG8tjSQ0WD8PGYdfGlVtIVo8SD9fIGnXGh3Inp3fOHwfgGw+QCWoLDSfh1eikFutgMxgSgFfVAmrNcC7yd/C4YfSxna5dAidK991KWY+t4IYcmi5D6eIk8hBv+nVSNokikfJYH3k55BZCVhR/xOG7GsvS74wL3v1oqeTq80QzyiGZO+CwG7yB1LEIxHhaPWGwv644n/0vEsBAK1fL9enXXTJbH7b8PLfO8jk2rvyeJyw3wfJ5YixHjSXDeh06+LwxB8/HWJ6DscB3AL6pmq3zdRjSJOqxW+nhNyMshBMVVrg2d1hpXls1g+2o+FTrn42PstZIXAcrkP+vOlzHRkENjc/qxfDBOHB/yc9nNL/GK4+fAdtl0cPnsXomFX6fPaF0eAKyjWF55a7wV8BAk3USUbQqND9bhWJx/wdnw5O/A4YXGNQDj0TGsEbPx7AHMTyfgf0aIlQfiC7igEvtweouwCUnl93QtHvicv8OOtB0woFUZ1hXEWJajSp5Hvx3JB5zLdKnWBn0UNFAaXJpPpNQVBeNT1QuCWpK03oVh9wtLBxM4AUKd5LjP41PbRbtTNEO17mwrheAbxSPX0a4biRtKGGsQVG9EbI/9mWD5gBLpXjc6zDyAIpF93Zq0v31MxuiUYZEL4b5i7rZl1S35nY9Qm8zxlRudVLs6RPZwti8hZr2tKqn5fXOLahe4LAnaoh5v8/H+vsWJ6/iGgaXpC/H76tt2fuik4qXX3rpUDrXRveGOWSq8hK/6RTgR1XVloafm363w7EXkyzMOunc+lW4yC1fM75UV2d/K0wA66NusPq7+LzIPyfD41uHBYIGzaYekkM8qFgMBSilWe31QrlU2m4vzKf1b5lqbjLjtNyMFra6zovVXxVUxUa5DRqEqzsqTM0rm7YisomZdDPiVAbaCH/YAJrOWYwD4Ki/j9c9OR6AjF5kUkc1shVwpPZDSQa+ankfkzeCniQrGzpBWC8n/QX5AjN/cliG5KMEkTmO2W4ihA/z/Th2Bd6WTU0hb/htK8C8kyMONZU3Y2rv9bxnGk1ABxcpez6p0gfsvtYOxrKGtjVustzZgVipaRbqo6enhp2IAHW/aAvlqE562G3hjOElTi8/zS+E+Ukfr2ekHqo+eKuxfsXvlNmvt7WJ1qZeBrLHxPu+FJcE3ycaKZtvQR5515gmJK6WroJLY2Rg36KKG7yafHBWcJUzps4AHjy+wMyZxD2oquto6jpUijqy5ZnZCOkoVAVHpoGdnkTEUXpm9TcA5c0PzDOgRA6fN1QrBnexLJrAKHbBrk30gYl8XN3cBKQ/0keZokOGapFAXkwoKjLVMp4XG9mGVopsIi7sZYjlXDfbbjU7lMGHS9XT/fnbcbfdWFlDsNyu8V7WHRCCaVbhhody2/S8Q3G/dSjqSPWlRdqXXMRIXa7lzRm4Y1EA7w63HTVw3klrfqKux0k36Zi87zKDjpvrkw7fg7mXFQK1Z6RrDdmxNw7ifsE8LonbqfcOpogD6HIXyILMTYr09uFdgZ1pKKuW7tKCgCwaxNgYVQqGuzfA37ZqdxS/ATnnyxxENMYcD4pZPdS3cQGN+W1idJmIUOWJTvAHk4RJZ6jXSgdrUw43fO6vrtYT9dlzRfhHq+dAnVCqZT5OU8V8i3pS4zfr3dL6llA6T5gNVhhSo2Oqpnr6oBSZmuBli1u52bd8LBS3XAjxRB+6gH33sPunae1iO/Ag0nco4L1CscIjjN7BaU94lFHyNDNhJp5JMSQucqGVjuT1Oh0itn7Atndy+ofx2qFvbyEGwblUojxtXotr7+Yf/DWHdTm2Z5OH9ZWQfgMfjZj/r+s7N+aZfLwmOH1CIxEh2eqJT9queKBe0pvY99z4Zcatxne93eG6gVgb89TnU2L4GhjEMI2qbKCZF8pF6T0arPR4lKFVB24sHTAYr1mJsNAKOQdx4pP09dUDeJYEZlZhHR/nE8+GmCAZ3uFYt6OKb1Jb1isaeO6XT14OpJ+ayE1dcEFttmvC17dxOTqPEIx2TOzbkkNTdj7/uYXr3HDXzlT2bPkcmVue99zCvYp8pcrFe7XgkG9B4+5isFLJbWSe1edqK555sIXqXheye9FvyooVZqpStNv7LzMmw2ZntPg7yH8AVsH+LFfoNNExehEakx3mb6bycHBSdUwnJoQiRx3sHURnC2fgFYTlkQsLcuINFr/gTMVpXzmJ7J+9UBWiLzTa+xiLJdv3xB1bTZriwXyf8DPhkMfGak9mGgVoowEtvd8Bi2zgpxhOrHPeD6BswBA+NkK7W3iLZ6clbJ3iG9CON2Qs2lQL0pJYMLeHsNbN483vt/nGl5/MLMCEcUBHztGI3hoksUGa+3ZtM/JmKLcqh18/5jeytZdpknPaQTFp/7o2/r90lzrx77ZYjfFtIK8krXbkDw8laho39bkf84TrUe2GfLqiBtO43xHnbuCvGF6W5X3B74ZZP1dFuJv5nSLWQ9mN13d4MPZud+BxXsvV1WRmdKhzOipOtbu3hwWUM58Jxjixz1qGW+BmRzzxUAA/OwJx7LARdzkUR93EiCNiEdJh+3YaT8OiL2IPp9uuWtLfqKFMLjPs9IeZHTNp8cpLbBsX3rmwzXZmjv7MbkVTvp8xrcOaeDr4goxmfpomsw7Yj/ujsxABz04WIpw6EWlW61R4DuIQxohOnEhuy+pGuDedDmZUVz0SEgiL8XHL1AKZqtmnUzjli0NCgbZxwULYQnNb1Fn2u9dKlZYBvQ5H4W4vkra/ccgiQhvFJWXi5uDIby7AXxThpZqQvvfuKYx+MCWFwxRlS6tfVqTcSo3pDU0RD+CqngwPBDlXbsv0zySFNYLGZ/CCuX14FyfwaujTwS1er/HZgRT2J9wVBtQTqqdkufuA/9AnHX7LQJPHGSZJ34n1pqiO3gtSPDfmRyUwqC9GdTn8xY4eBkqrcZRpuGlZCM2b6/dJIiv51PAC8H88KbebUrDf8oRqWu6U3uxL0fxsi0womL+bESz/FhuCEHx1l+wqTLv6yR1FR4w7YaDbspvRRKwOQ1VEmkxo1Zr2+utOgSsp22thnlLjcTOKVMrwKTCzYSQ84kmJRg3bKu7SDK7dtrjwcc393wneiMyUVmZDicIayZqnai22e8goGOKxjWJ5o1KSRmq0faPgEQTxignwCN0BiNTd/dpvrc5CkDgJHmSvVvRoQ4y1iOYTntX2C+xinboVVNbnOzj3d5TFms8gPzCc7xd6IYIr3ewBItuMPZHeh03PfS2g+yzM8GC4C8GkQFCEckuHpHoSaPFzVyTW54SxfM4YC+ZSliab9e6iNrvvyOwOJnEMST9V9RKxrWA+hLqofUbcvFD65HsnJm+EnV5eya0h3IKKfo54xOmjtVOeQVmPIUA9iH+cAbtLCI7qc33PNrDnctDL5IGRiwXwWKN1pWA+alVJ6lTX28HENih77dRnp6usxPNFYb5HqW+jWQ/LQD2IV4pwB2JOEebT8bs/bR7ivhxOSN1an/0yXwggCogH88yLYlxIWjCZasEQaPMFx8NSY8BH/VjfhVxV/Mz64j1Rf0gwrj2f3RA/hCWHzqe0SdHf1w1BrI9iLw9yHuf3AiuhoqHDz5taPOKJkNzxIOorfGPkvTHI41lNh7eie019x4l3u7AGSnrNEceIyNrGpEZ6/wHKFKv5hss3TOvi5O5+qiUorlL4XTewJMNp4mbcReq8Roq+6sqWE7CygpPGXa/TC3mqr+FJjFKYUQ7Yr+jvr+SnV1ptmH7MwWbuxjMbGlCuSYrGwk3ofQzrzuqF/ENOCZ8Ie0eVaM/fTbD3OODi0byH88yx094JlVnuVjEjZR9WvxQyaEbfg0UNc4YWDADSn3c4b2v3if66OeRPsgPnh0d4XrBi/t4lDXPYpUe+FPckPHpmuZTwUwSzQK+J9wgUZfdRvcw62AAUtE57Qxc52AhZ5OhpGFLTnec0orQOxH4OT68sTKNVDdfcQ/sYXWwwjmdzxj/2yHtKZQUa6UOeFHhruMh3qFEdWAnnAckSj+tYm5MQ54K4IlPV0UXpEdnLR0lP3aogLMVX6M/I+D0d1j3qUSdkSijk5zTTkZtlCsH3naVi7l8QiHeRw/tkDM+C1WslMFtcF+1vtVaNbHTW4FLLTwmsKt48yq3YjgEW7y+rwKorSbosbtv2coebdlqxRpa/l4g1ySx3TXepirBFwMxinK6qAAlead1QjLpp8R9ihxQ543exWxUNyF/Ypk1tH9dA7zqsOf1xUhZj+d0DK24cQNwdFZ2b7bjEchM9tRb+n5tA6yxQ8JrB/1qSW6WMOqXsqG+8hM+9sCsJ9uLdUaDdnOvxLImC1NnlDVJz5rDvgE6uhmRy/ggesBZI2CEvcB5AeQrm5G7h9iPLG2017dw4ZJyAHrlqKIwyfwM1sbzaP29cG2ZuvtyJ9rKt+p3H7bqk+pLht4nBt50r8uOtdfykg5RFI+FHFFZv0Vk17X0wzVDrB/uLg3Cco4eK95gbdUgVKRqSxKs7qneRZ31O5deIjo8JNvv5KvF42x7rzGN25vlfc4BXyMAov7/69JWcu2+97asjXP6niA2A9K8ZfuVf2M+FVFCa8K7p5w+PVImy9+jJ5k+S1D9lAQtyQPb71IyXGp2/siAKI7gsk/ytX2dIFAkDFj36mE350WHw65Qf5IwO8OTIv8RTx0NkvCdHDpipv9HAacK/RwSPV97GOeGM7zX7XzbO1cBRP+RryryFp+StkZo4blBy94icYnRS5hi+fZaDArwZOnUlQBTcsXfojINTuYMTRh0sYPvzDAGKkmyxNUhf6TG+p17723jhuEr29QFOMm0PuzsqQRpgdKVX6IXwBnmvib7/eMFFi3ZJbMWnjNChMagUAMfnETjJb5e8pFbVD0IScPTBsB+iflFFJ+0iQXSSBrMGzVwhpjOhhYDOKbkwkw8SzEGaYKhHsPJ1b8dsL2yv2/pNTNWlOsVV/QalZpOrYfz9oTTpaQ9TTKpW3GSM3P1ZH05M9ZdxYql+FyW1kjM8FhH4wQihZtd4B7FSvSLeFTGytExCeH1/p4astmMZDd8SsutCRLAia7XES6txld8RKhRExmk2CEHch8XvLHqLTWs4xXR+fYWUsX1PU/1SNiuqgQjsqwNeRNdUh3XxekYSdUCSDirdB8AsM24vnouMw6EyBAdOJuuPXtCNbmJgD6s7E9JNGUZTOq/lZnlPBf3xZVSn27dGJYLceRLiZq/RSyI2Mq7RpTtmPgc/zj/fQjViUfcDGax+xbLrnmW1OMK85bHUXnTDgMioC0jKit0tUOBQC6PBw8lSnGORNjbhs8Npy4zOv5TGKGVXmTTM0YswzRfl2xGGJyIlcmFh26N1QZcRLF5W6GyXafCse8R1CWlN8dKxHgjFMtqcmfcOoqtYAgWh+Am3equhTkbnih2+q7dMdKkhx/aOlS4IXr0wEa4EZFj2UME+Pis20kQWOm+O0yFWDef+pFTdr4IUpsNsRmFvX/XBda9pA7809isBpFW2l+9xbsYjllEGRoW+KxN0SAXuoeFn8XOvaUV9h5EA8gaHM4CpVftJX+wydFx1cHx8yKH+2fq4cXPtLlvT5/cGk4Y+2JQqRZweQ0cy4Dqi5/pR2RDBCoLmmjH4d4LVu8OtJNk7JeI3ZLJK3X7AryrV6jFCfVemWyR2YVGmO4B/sNYDWWTOlnaqTSvZc122r9pZt96xRwPEmstH4RWMgO8gByAg/WiORrqYkr0h3HOok7N/iCTlZnBaMDZKjbB0FE4dvSu2eTIrFMxpMItqMK/z7g86/nFjOXETv9XGobQtc4DxpPhRm3uEtSx7kNPJ2y8Ak2CRqdfeWR/QYI3glw1j6yXjAI2Of85pcjHWc2ZziQrL+YsMl/0hjoyVPWKzaBn5PVd3k2EncYlfmxQVeeDQ05pDsWo5I50c4gT0fMRWVwOGtleV5nkq9N23PAZt0prIuFBp0bIV/L6mxKhik8AEhBo0tk6tRI0wPPtSTF5FprpUu8abZ/iXWMRL1FCNxunpwhUI9HaRcD4Mm+dFAF4We/VEZYmNG3uHB+LHAnu21iAIZmx6uR2dvbxcZMYKlRab0z9aAI64oZ34tw26xa93uoFn6wtYkVpj+5QUFLK0UEABpVbUQEib7LNQcJC8EmCbvJGMy3PMK42fJ5GlrOk7cOgchKYUowImfTPp043cxb9uJ4f6N5k+xKMR4Ts7T9CCS2htVZ6NhsMAQvwjfzd53qdKaGlqlxpXk0bJKYSdlWbR/lYGhi8UmbsCtKvj2Vfmt3lX+LAUdWdxmThullLZV0HiXD8+mUnSOQ7ydcXD7nvklYdwVfLVirw5hcNfpq5P1rq6hb/k3nK/q8bi9hkq4ZA7+pzPGZVBUCXBFC0kgX19iDyjzW5CIrbHfs7eQsYZZLGukbJwS9Kjg1Up7R/vGUFN0dnaUTLchJm+MzFCEBLRO43RJTqvcaUxzfTdmP5t5pVpnEcaJOrQLD821PQVznlaNeNC9K1KzZh2pqMhlbRBDMD1ZIH0m/csWvPmH7Y2N1v3kV21+wcqgJ3JQzeAyQsKAbrnX7+k4K4vyZ8QDKChxVpSzRA3RC+aRxamPf30bdOcEZuzONZstk0h+ndqyIWTCfBQb5aIO6OR//aE6N/W5DGphMFZqTHx9wKQ729r2jr/DK74pY/pQ7cHAvK4HrLsmTnjZc63Cs+74RxveWqTIxK7HQgFGocKMeETNkw686AobTvF0gRGm+XdQUmGglWB+TmRnZTo9TPPzCIGoIQIxPsFY2jkqMf56apezJkvrG513WIB0t+QAwOx+WrkQTLj1OQPtWbvvfoful/a3rjVakEnMfAz70BCMHSu/YuPsgllV4R50Sk5asT1qIvlg8jgqEm9Yecz7OHidwKuasepGAblXV6nB8M4O1k20oBe/GXUmJuvimAfxnEqSAQ7qbrfIOlectc8Sb8If38maAljRJji1F/ki+XPi4akiuxhzyVv8NnBi8XbgE8ccuLFzegKYn26fHE4JYr+ajeP3AKUkzo56ryy05mulQ9TmkTWPc830IfFhlC/sEN3J1psss9tXZ7H2DUR8/hjUKFMr1dG+LYpDXBwijWLwX48SG/7d5NBzg0ZU0t8AsArCnbJ6boj4CQ3tJWU8zfGqRCq8YH77JOmIyEz2V68QJO7fPcPSA1rEOLDmj6O5BG2ncz8h9dTd7a0qS4Zer14WC1/JwGnhJsGawVJhbo2qSKcZjXVLfrJ2ox8wqZpnKcZiLEYIXk5a0ebSIzVtiydH+VH0fKtC9OiF7REJNxgF1ZKHqDB23ieAvblL/dVrs83dlStNd7cENvSWk3pWGBpOn9YpbkHOI4bB8Uh5nmOU/eeelFNtcJdFQiqFaO1yFT8cedWGLTactVfewAzGcNKFwpn3M3nhfUspV5Q30+sWvfmJr/itXJZeCz9xXdyRbF5cGi38CZF14+mtD8OLQUkQqPVpxnJnyf0zQ6x9SYB6hi67o3yEbXgpJ86fcekeVqaFON2q62qXtc3Pny5VKZo2NDkzGedr4bO8sDSin2WK82sZ0in4+iUZwFc6/XezbUg7M0zg0pI2N5NhP4r0bu/DZdGjDfk8zunhrrcrRgKFFa81pDfEZYqYbQgdN92PVzm2hQTB1ZMN3VgLWli1RPmfuazcTmbo5FuiEEJmutpyQPp29JnmdicVSaXtn41TtmWDN/215X31ahgF06LLbC5tIuM6B7X7ITh66SFYLY5zbw7rJzJj9nr7YWCSXGcebpmaMGh8K0fmhJN8Oextl+NM9hpc3ZLDPtMLKScK9wVVkEC1G7nsj1ilUJI2L4GFQ2HRcnz3+l1GAQqSL2F7KNR1PofTVEKtcvqwpYDAzXeu/s6uTO/px3AC7ojC2h93oRj6RXbfKLCZIctIZ22BjMrqNHq2QoUfSBOQcAFe94ZtbLbL05jeyN8G1n9VZ6y3LEvUgFYrchgIAxtYa5MhYpIHU0EuCDxJnRyCZgAHdIBXch4A0nv4qrv3DBJEsJ+ruIbfCaQJ7oYlmhvulWHWNx+X8vDMyo4bW7Lx+YDwkQexWHLZOPUnelPN04pCCuL9xUrBBr1vhmiJxOHRIiwxtkaJHI9RzYGtZ2DR4NF0JA5PVLZZ/K4KsWz5smcNEHCGPvl7u6I5tHwtCxbkMGbNcuoSnc3s/5GABFeUQQ6RUmZbCgUsrEX95y7bKD08OKTZ3UEc8RGmcOd3Q1RcBT4qq9+fwHXLrdy++BQ6oLRmtoyRX0VJf568bUHsEdBlmZN7qTCjl1EGlcde0V8eO6ISZwFDZNT8etzBPHjd2xmuczKWpwu7oszT1XZbc8SH5wNMqm/umBNuuvfZi59kpltnya/BCFNRaa4ZuAkYypPp3uWnPDbITPRmpJY8bezyZvf9yJtTN4MUnqywQXnTW9JieSlIbSnvL7pi/rcoZQb7cPaPffR6qDMHFttzGZPpVVqQVjnTFx6qwPzS2b/LEOcua50NNfCZp7IAEtRB0sl6G4eByEVOg1uxemuMaaKMZAuW9VbJoidNHCxD3mO8JgpYWd9t8BsjZWn88pWvCAPKyy6cLR9rX/HnW5G9gnW1Ot64bHi8J348MB8R5tN8y1eosAuZuwSjNily4ASodd54YMhYgv3u7jf/6A7VlQWQZ5QTb5Y+bahR+UAS3SwSPAHdodcLHLiQICauBqJzOlocdjt+gCFcYTFvlNuKzh/ie+SD+tKGwP5GEGnbhUT9J9h0tI+RARzEYLDWJmzmSgo+vyXzn7GTIga8KL7/+buZpiJc3acHqBxYU73JpDOMyG+Xs5WY/364mqsNBfdWYTEoI3sDjcNA6fSoOMqD1VYHB7PY6SBGzJjY2i1pC05d8CxdiEjUCe9ST/iSI9WxX1V0bQq/WGqokYNHqLKO0kLzHPzXV3RxLTmfqJEQ+/eGHECdPehWXzeVRuZID/fRnbWvun4PJySz8tBnsGrYxQAdJfiU8n1rycstC1/0nwrybd/y8cfxu2PCeojkHj2i7vjFoIOUcBz+5tbcIXjGvYCnF50ehfGcSsY6QC7cfgAjGW4PtYuicXnSoTpq0gm1zvEfD4Coxlva0E/PnMdIVyzddOy9dZeZmXk4v+/5gnheIAya7OSwAK0wY/rVzKvGYFSH4MgM/E6g99OGrhmbW7etIeHpaKIR1YcNglyEPQa3cIqlPuH7+jrghu4ly6AjffhNkkckS/MNJ5yqMG2dImzCj8mxDPfHN5wcG2Omm1DAd2LM5eZWJDZCmCTYB0nkrNBOD4z0B6Qr+4AwT3RE8IN8JB8ZeiaHLyAn/vYPwvKEEoyQou18Xt3QRBN6Dlz8GpCLKwzncnwlFhaSCLAzR2dAwPff60yt700v4NB/aImxHapKRY/dMPBvuf9xaeqvinKziK5v2RvHgpmqyyqGrOMLIDksiIJRhlCUieGOjgnVwskiH37BgBwseHrkmfYxAxNxcz6wvbCzTSF/FkizziYemFGE+Q7AQlxedZvpwnRJbQjikw7IAIoye+AmcRifCoxuS7grC8dETxqjOKwYuUHIssJDyx4Ft4mKtLs2lMh3aT9qlzG07gtqB7MW2ScaUgLi8zEuMFNq1v1bma5jTRt75c5/qulOtqLaZibHz2TYvIpg9ZDUiS8VFGGMk82KSCqJsat/R3p5tcQBh2XK3sxKLkeXTPD9akgBjS5NvFyYJCIb0qaDbdzFq++j/26/cRWEUaBXcVMrIUfOR/Pz/ceOTk8l7uonjOxccDB4BdNdmW+RtxF27BXQBxEDIEbrBcFkklo7fQQjbh9WsTEfY7LCDfPGB+Zqvm8pQMuRsjc4HTXHeofbmdtWSe8b+pvzTtWNWN4JjJNCMrNRhcsM/gCgtNxggpDWg1581DhXCXQimBHhsm/v3cUohDUAhJqNplVmr3UAXTwkLsYC5AI46GAWz4X8EUhLowv76qRqYYjMHvQCe8GZq7CRFobmjwGvYb+P0YeGPv/LdKFiDARDwSmwi/E46GLr/3/3t6AY/oabzTQU4X90aKAZTslJLRaTD3GIYyv/3BAjT0BiQ8XaTpAZaqmmgPhjGro7ql3tdi06OWIaY+tM4rLqkzVydwhHLQBw2w5T9PrOPHvzRcNxCIj6k5JzqPn3kzjJcilW8WLcxrxS0lXA9eUXV0IVxWJLa1uSxHuYw1MehEgy+IymGKumd7HeR1gJTQm8A5vSGrc8XQ8Ij/oDwkQoIZZJeiblmw79t3hGHpBRGPiG4DWYA9VkS2HfR6qVrwSrcRkSyjZv+YUNDD9guSBRWL2Dvm4zdw8VufqWJ2rY3U7DXBunWV6QJXlu1Y/vbGTiYP2uPGKAYnb8P8X/fb2MEsplSKLZJIhJ6FYxbokqiFuNeTrUsfxc6AY1qgNQuCRlAejxLsYhes9zkPW2Hw4Y5E1hSZ4idUZPtw4OYKktX+AHkjm+QPJ3HggK86VvXneL0JbnYbB0d4qZ1ogaVq0s7HrjGExS3+1eAxeXUfSslWrN4lZsPs2LJYz2GoVMrDS4kptRDiMuVT8Yn5qSiATWeoJj4iJ/+YNeaadfdT1QWJYmIL+NLPwARuThQv49YY+wZL66ZXtyWwakvoRq7PUND3Bd/7ZyXOSO5jFd9Nnpr/v8xN+aGAgLSOMkPdHli1f7/qyHkaS0TcMz5dPoP1znj7rCszFnfKM7Mlp4MPIEhj0yVu1z/3jJQpPH/ksAvCSlKij0xrSsYl30UXMijcsV9QJwFZBVIocJ2Aq6hwln7gp0s3mmBtZGpMN3DsDLWulfdtrzwEqN9AVqOKF/rBENROztatl3jyZiAXNvTmzO0sT0WomJ4CTij9F3vqNbar5CpOgZkTRhFfCcH3qEF7IYiKDySbqtWgGfolrTkzU3XOWfJaXUVEDiU8qduARxz09jzTLZRNBb2zXJsL43FwM6e8p+UBOFjyWMAvwnO0o+eEbVB51SS/NlbNpAJpNcoQJP9X7HBN+pttuU6lYn267iBA2JiBqq/wVgZ2lHEpEhU729F37Xw3fJZquV135Clnavy76pztFkx9CPJPgqpSPSNX4trP0GDUAaVfTzABNlJ2SZSe2M9daZ7sSLb3nO0Hy8aHTboZpm6sxTHxsrOBqtssiAjgBXpr1wuQ313IO+PrMwMwXqaqkOURYWVrO0JsvVKtlPW65gTfrxX23QpUnXba6AsLOAHyZivAMDINpiyplVIpsXiKGrEy3ONflkgHWGDfx/0z+Y8NaOXhceNzabgM4pXTQpOHGs68v8QV6EGgQanJKCZ9XC+PvAhBzYNEENPSNbsONvH/FeyhDzIYahxzdHSIkrmfeYiPfj+Q7zrRSumHf0beEOgIoW40hm3+ninCVg0N3QbAz07A4s/ceRwQtu4LozLfyZQzKEfiitRVLU36uPDYz5h9KH+LpTo+SoMdoQbcsklRiXdaZV9akRucSALOyJ2S+GbKcwK6WzRJ5VMkUe9v5/5I9ZiEP3G83mKXkxPys62uhGywl0euAlB6LRTEhAR1mHueBhiGNRAcoWT2RLFAj8UrICGezm1pGVqcH/jnXhC5TLeIsEqYX97nlcvVtZn6IsoK/V77BRTd0ZWDb6sYtBzF9T351zBFnGOSNybxbWFu30VeQ68eYB1DAuFSrbv5evhCegzv4qn6Z3bNIK53I8JMVGOb51RW0L2gv01o0ImpTA9yXVZdmll6wutijMsWx4eLyVY5KIY8o8GkTxpWlS3gq+PmyjUr+3DrZY17bD2zxGVFrc2L22tqW7nIyWHRlZc30fAkUZvys4Ww68YDz3lqaoCKrY8wmnwRgToDv/UYDw7UIsWjw/WKeHV5yeaXLjaUTlaorr5FgESJEkK92E2qnO0lihogzbwal9txLuYPxCnkSKOp4ruPVDAv9/upcvV6h/sBCFvZeVFu/1NHzIPkZBvtDObaSsckozFgBMZTyVkHH282XBHYvc+1URTPGBoChjCzCtCvNrIrY7se8aFCHg5aSMEh6LpBQD3YyuSIH9824oyvuk3fEHQOzbv0f9UUrEQpIjENf3x3ngcRRQMrl0wfXH4/WXE9DmF9l6ni4nTXyWK+oJ5FfFqKx+xUw2KKVI29luQrsl1OAScApEPFpnkBsgfaPVkgZThQAABZ+44Jb9I9dAMgUVPCjLVioSrUAvAxeevXUhb1xO9iWqUtFzDaY0X3XnmfKHTKDL93ePEC9JUYUhsZxk68U7GE13jm/5dFIfx0CXy6vXmEwzvsV1WEPEk3eGPq+Y3nqY5xKSsAJcat8sCyJIA6XZS9bVUMfF2RSVG691gvHvYrYjEJD/6izmP4f1JfxVH2OmRKuKZx8D8l2ltEJW1Ghg3nPsMIKdK3YrY0nckcSJfLFlQ8zMhB9Q9u7F6KNDfczh0T6Lzi0Qc9tfUS3WPgMHGiVabnrj8+uUl++xn2yUwQa5///8Gwg7V1fRtqf9RcZ73w94tGd1MHP+eJclJ9b7Cx2dpTvv+9CChRepoZtJEm1/qV1KQKlmOmCa/7R2scBULWpNXModHTaZOVVchzT+pOY+ogxRP2jh/z4TM4Kcik3tizH1WIRo6NveLwiCw76MZ+ITWGRvEetLZSC8imG0pdoV4g3H3qMCpvwZD2WESgvqg1X6FoCDjMZMWycLB3W5JQmfGb8f+kln5V7OeYrKN/NxxiDbINgo59I9tbrUA5plqMGeX6lKmaY3ZVHJ41tgnVIwvjD5vJgKDsCjGRorQID9TAOFALmdwkLWKCCMZWV8iX1bVeErw2arDAQ2/EdqA0wNGJgtX1OL6cBoW/Eeoe+goTKtJgiEkznwmKaGBJBfAm3TFcO03ow+k+UCjMCvN8/zRbnRC7Eugb0cSlOMJprrc42kK7s1rR8VFyVaUL9w3n4ypo1BboJ3YqKGyIFgKwrwc11Z+xXmmua/Sp0Pjas1oECBAn2Ly8RbGTGS8tKHcDDrh7Vy0k7VZX8/fQ6b3u+rARFedfCOulWqlH+aDTvHGJ5an02OavR1auJcparaln66TNLf+s10MxrpjU6lHx51w/2R+oxZS0Wq96q1eGatyxUlehheSXNWem7OiGovhbbF9VbnVkclCdK9crs7WE264ctXjmYuFk8Jins6cSQn/hjkMGQ2xNk4b37rZmFtYCq5kwRx6JlEz/KCmfDu9UZDqgNxvMvU42KloIo4qpvVqdPjdvinRgQXhq759nB4/fyYGrT2ArwOvO2aAsvVpALVuXKze/A2TBZzsbpBf04ms5ryaXSuc0bn2XoLjgwzqXAq/c2zNcIhep7Z7g34uc73KY9rJj6BAezU45CAT3gWuKmElsBJ7iW1k23qIviqCrDeZCxq6YLqgyydU2gI0F5ELk9CTPfepVu7+62jbivU5WoDIn6ac/XJY2W7rmoCCc0EFh3oW0GMgiJcyysyJD7MGfOtlHpBoY9ONbxHNhQNtUv72CoziGnWyUcKOpecFK9jiDdoPyHw4R+Zad4VlzIiSCBBxBtYLKyNYybwjRAB6QqJYrQkj0xFFGxzqeEQEhg+mnO1I2So4sh+dyTFSbgDZ2sa0zaktgFb+CCmZK3uqgVs+oFoFsWKEf6uJWZJkzcZHrir3LXlqR8yBAtdonRejyA1K4EArJwMapfdu7fVaSwAVHghg46JfqJmGS9htvumAPYMT7R99GlXdIxGnc6udtH14di1QHwK/TdijXZgpB8DX4SJSG6Aa2R9PYCweQGT0v8vsBgc6067o9lkpaKBXMXx244kPzxHGLc/Hsa9PbEEHEPwsl/ykIDvvVazx4eyQpE2vI8KfPgIaSrjEOdG+6L+DBO0+yg7oFNwwgOhbq0NiJGWAtBzFYxDX9jxsqm1kFAxjCPEp3JQpq5LDCfo2LoOm7MlA0N13niOMRwG5fpQq1CSnWbMEMX5LGgnyvEwcruxQhpABH4WdhHr7VBPxUI/YVfx6sw8e/YMdnsAzMIJwEoKD7aO4Q7XbvAkpgi9PSqM+ZfmyVwBkfp19N3VkUrFzyYGK8glGamkz9sus+upEd3JfJsufs678s32kIpipTdIsY7HHwhQEolQcI2sWysGJWVSXd68R2P/HlDgGxFdc0IhtuSkpTDxiTw37qM+Rv11hQmaxEJ0bdYES+St1hthceIXRmEyGFDC+PLi4U9jypOwW9uBqwUafjafGVRD1UZBxOJuVR1YLwqFdIIqV4LDIFmwRfllEtmmW3jn/pnERwTJyoKoXks8yY0KiIM6BX/hAS0HNnf1l5gaqIwIhF4X4Osao+bgHB+V5HMrEiqHC7jczOlMcBS3KE0LxZRMc8s3D7meiRMziFe3oPsfj3hR1SWLYgUGfFj2fmAA6mWq8hhPjbvMNjpP8hzZXIDSwUWJyIL5oDL0S3BaBIh9fsIBw/UucLASaYpW56A3pEsACQslqysskSKWn9NN2vFZGGvt1U+8u8vmkWJbu5LTTKJdTPoq12PS2jAhiUOExHsRFWyrmWcLd+d7Nj3N5VEx1J/qCyinAMB3WulABJKSwN01YxPBf0s/x6BSeouokh9AksBpRjokvhvE9LlhF7bwAxD2wV3m9ag8hDS9jjcHqNTKt2cFkwZZZtUUtHghUvQzVHUxZR+EfXtsyAYKLY98iMy99SN7d/QjjDtZH6PUpT+Gb3TlMFcCpDRo4J7E7tYUo/Kz1AT1nYZxU3HDWM+v8PUI52CVskXNIDiyA3E2wo+p47S1WnaEuPuWxOuMZ1WYcwh6dDq9PRpkOYRc65QyiCVT22lQYLAjl4jIuA+w/fn4NOJGtQx6O7GOVVeNX9Vjt7SmuEM29yqByHvPtwRAOy/2P6/h44HkNcMtX1Z3e1qpQgoG4VScc/4La8CtH53P5wzbiIk8+00EKlOYrTRwGnjjfOpS+l/i93ZYDHhbfdMgNP2V4JW3Qvsd6yaoZN9qIqEgOjkpJyYFhOYq4rewoPsIwHxH3LYfGpquSJgMsPRxGv27ZWyl2Is5fTAkM86ehRn9UgtXQR06JsFh/Exj3tne8KCwZ3kB/VA1yyIiybqsMYgQ1+EM9QTt6HHjue0z4GeGMS7nNxC5ylBIIpuKmkFNU70UP6oTjHnbmelhIbLNIQ2jKlAfX9SQSdS/23Pe/TgPMUbfsR12+mZrsBmbwelKmV9Ikq+nHzWxd5NlxqVA/4nFeC67y6j2+b90ygZUl//2qUo/HXeinI+EmfUZiUPK9V5AN4nVE057Ybwd+qqwQ/ymP+xgywnUySk2P4vsc3BXWQmjkI8nAvQ117yUqVGpUoeS7H7cAvkyaagTIkS2R2dhEM/nboddGcEq4SKbd6XxMkm3zYVhJ5kQ9tbzBm2+Gv2h7i+s81/F93Yu4wyNvltX7JUCaeM08tTTrdK8TLkEmd3CbE64YY0CPx9EuNy59a9InSRSpZ/gnhQF4Xr2x8nF54eyhaNtv2lTXaCGUjnijZDi25DVaPq7tVkMEwz7Vo8n9QDUD0kA48GUr+Y9PL9Gzx7RETR2R0hzZn18lHqwM82Y/WCd7SdxLGDDV4MPDyTWfYR3e/58OUSITxB6AFa1nzVTXdt6bl1TbShbd08gjlMXv3KBBawtSEPU1wttlnv8EJLMh6kmfuFBbg7JGT5OBjUY+YGQWfoC6A9/g3c6omuFQpSln+rnp44wwE+7bdvUCktAh6jphq47LzRhIZO3oWoQRfhM3hjqIlG/Kyd8Y4eoJsxw2cR7n5bqHWD7229YweHFQfXBYzO2l3aPz2VAy0nxiXEqOdWrgPlbHWJ4XoGT7x/+G2txyg6rCO+9Fx6StVm5pbqagx/snIV+bmGnnsfPggn0qSJ8PZ3ztfd2X5jSeS2pXdiH4Ms0MUrqCQRRphRJVc0h1U6Ni126FYqJoDDGOGdb4HNEEuQogskE7YnQkLGthkVHeoxxEnyb11Tsn6YjOTDs4V+ONtYsDdCIpVoSc1gWmSAnbF2Wedc6++aJZPtX+iWiY1s4yvvMrD8+h7LuJSHRJ+t3NlxMRn0eZ/tgrBt3+v+lFbgx1ZIChO+cvx3XZ6lEayeCkj2nZ+p1450zQ4S1b8+ynlu3eHAa1Rada5uXog9G2tTe5uP+MbLTQwAl1M6YGCfY2C76Wpz4+WiNfHLxLQ32S0jBk5jmyztAyhBDsGhJv2fMUFEdRTSsmAPnzhYseuxYYSOPEiXJNJ5KQYB4epsCS4Vle5l7T173eIc9RhPuVG8rLXgK/Uw9zBkmwuq3WJ3jznwYLjQns5GHL/c1AFrEQI0lJUAzmb4trBoBy3HQ2hn91K8M4y+DA97psXtMbM3oJaHHgdcVq68aVFsCnghf49FlBgGvV6sJBdRKApiPkM7/KL2tcbmCS5EkqxU67EuKgYcteYnCLZkhm/RcOE2DxOrby1zvoZUzxpq3Eq+HohwP2vJ7JYcPVhN7S9Jru3E6ReB0fxtTeOb/eGR0ljS7V6FZE8SfkJ9//Tt8KHd7e8XNtONdx6l3wyA4cZX53G5erdPQKghxELM9JfB7p48933j2I+sx7vpIU0Lb7KcQrnmAyJ3d4/GfBZqKJP+hs806rW5dKE/Yv39hG8BKMedgiW4XFdXDj8RtCmDF3JTwWsA8rrgxLPoPZsv//gfii0vgWebC2gf7dwYx/s8IQ7bWjYtKqSQ39Iz9OEHLR7zGL7x+7WpvjVgu+fRvcGJI+Ex6/lY1u5uDcj/vEw+xBlO1ZvJMfebeA6o6TH5ypWOq+JL2BOBgzD5BX+HByDFi18/97cfeXt4DW9S+mQxCH2K62k/UZuW3D/Et3nR2TI6n+LXh7kemihhW77PwKHiI4bSjPr6yufM0uMVjtUCzeU4C3x3gAzxlvHBZeBkwkRM6v0a4A6AMy9X9zkYAIMetc9mP3pMZqobrFLxIx5oHFG/bTxNnvX+sT6MbonAmyfU/LvMs4kEeNs1MR0PX5fZZFCkyLXd3N9s/RF5qAoibb3XaNNOv94Xrd42gTnc4CDZKX8gevb2hkGVV2SD9big5EdgCS2LglQ/2jZ10lkTR/Gl/wJjvEdQiHvWHWrtWR0WrWahl7c0oQDyCUPJeuknZsKjOGfBx53djSZztdkYj/w10TFGB5Qcqq39wFlH6dPCgN7EQPrOb8VAiuLsHKY0CA3/iXV3XoBrnsdYa6yYI75pLZGqkfUZaRP8eKaWdxDbemuNZInUUAl6EyecByhXhnfXEsIln1zSZlBEvBxeZ+y2kYYX5TrXsVqtvi6E9zlNJ5dn7gZv/mPrkTj6ZunfsKBX/AEsM7LumtBbh0qHn5zY/+eqrnEzdivPPh63W7p4bFFnioGhweX+HU3YJe7jgYiiNATiS5HWpqfoeShwaXSzqnf9Im6slmWzHUDRRG95qjM5VeSuUtgUxPnNeDdayyK5QGPGoFPrWAR6CRoLlUxttO4lQ0GIJHjJuSGLooJRC3inEB2VoyllA1LSOCi37hTDeE7rWLSvX8sGp+BeSWkJ93gD09TXeKkuy4lzeZbeyIIeUW3mCP8sxw1qCGBpraJMkXohc/AZLTPxGl6+oChLTKBzKNem9pzIfUlnn4r2AT8mBFndnFhFNEM3RUDfXnw3P/NRtbYlYHhELIM0GDlq489NaguqMnUdnA4fKCQw16yDhKjJxdyx6M4+RMRNFOQLVGzco6obzm6ea5H/+s/y6mLAyXYyQ2MynkGkkhshCK1tz3P53Q6+JXInGIE54gEBFjxKHgltl1PyLPAZwn6G2YV5Q7UCYoswFB3zfPmWxAjVkaNdCYlyn0aE/LRJnx2ULi0svfYM7RGGSk672+YObSTpurLHjznGxmnqyYHQmE4SwGFmu0p1DTTliUT5g5uN2DCLfHV+UfimRZ+Wp5nK3gencKKN4M1iziVrhsvBWCg3KfOuwYH1u4fv+WS4v//VNKDskLTgF/HdJMsInj1Ql/IGluN7HGYSIwotul2vqWs89blqpN/eIFbEphXQW1P0yghtpCtt8woeY5u00uSyDQ3eqBsZTMObgn8Ymli3E+gC1gjFNUZedZj6SJOpCFP86JE2VX2RUZ1drWCp2pUY3yc8rKaqafgYQePK/oaD5bhGlgYqa7RaxC5xxxU3p7iGBj5uia+dcGNKK5Fm0SEKZUCqO+3dG9X9BEZiPDKVSFLcarKQd3Gnh7fNwvan05861PJNcyvOANXeVHd+dMitR+/R/B0kPum+F9DrfbdFQ6Ttopy63rqA652+aIH0oOyD6VTzZwVqdwNwmcDCXixsT6RmIJx7End0fnrlbMltwObwEugPZvGKxxvHxJL3QHSEMExOCIatp4ZNfb06UDhMgRU0Crx2n9eYTZKMsNwfdt0ukjJxYeD3qhnCsYRkndxoijU+X+QKQG2DBwaLWY4QUWYwSuwsBpsyH/lHXBhR8XEgTr6StpoZ8vMxYC9JRmVkUlHvsiIghbG5NR1tmuQrb3lylUyx2iB9DCES/aE8QJAIJxru/ZhpqQVxnCtDUYCOFwwtAtM+YesAucYjrhWIH1JImdc2HfFpkcTXJXLIZ4kBfISWd3iMa/VmVphXCc4C5RXxNLKNEUlVUhGazj7fB+epIbWdRxOqEOVltgCwCFN7MB8ArF9Jl755PuPBFimY3QTLjTpG2CKv8xX10DcEoEqWR0OZ2+lBoWQYw/rRdoSXsx/WIQWKdKo9+5YHhuxZ316HG+uMU4hbo3mddflNPmNbTaoHBrOV1HpfqjtV5HIw7IwJ0ISu3hafRxA0ay/a9JXKwHB8rAJJwDnwRPTFRChod2SDtjTxbsdyztd8vDNOfTmpsA78lau2IuAgy/TbHGhM+tUtUN0qiRkZGUq+lZejkPC6n5pBWhdO80tnGMzPBzOsbsXLiHgTVqHAxvClg9EDgsfQ6mP/zy7zcGiNhNjzqoqw7Vorpm/aB/AiXzLW4qPY8m7o6ffR9ehJpVk8k/GLS7X8yQaApthkpEFu8/eWjgeG5W2sSCeTzfuuKv1ULTqfBouRa/nseUr4jpw+bJuIHU0JK1Yq6cOkB2HYHFpARhckEVrKqa99eObxL60MXRzvAOj2AGACE0HDVzh2hIMWpka8BrOcrW/mJId8Ka2msmUrpgCCUT84WUxBNd/s5N+AtdyW8eQ6flnjjjfie7vAIqBjVNxnHeXiWtIr4Vt9/RsSrAKnGgd8NuWXAXSS341pv6KTnzq9F26G2EJZoEyesEBROyvJ2PMqhwFOLlBzVDpvd4WtapTuGKrBDHHM2ySzYcBkNHoYyZ4wWpFlzoKPL8u9W6Fiqqe/ZfwN0eZSaIW7U6JKcXTVZWPr1a0euc3BWNqkMFUtHBiRQGpKFiPtrjOId9sBEH5kFVAL0q6P9Dhkjondnv6jaMBbKA0JT7nNSRzI4XylCP5g1ZkWrnOyueIaDE+eovS6j88/wtI9cJbGpJ6MHeN4HLq30xrqqBQYDVtD1jW8nZzjtwGk7H9WqObFV7WPel5dVz9w9e5qqKFO9X3dkM5g/3ttvgmXidgNId/2rp8dqFWGESD8R0HhmuxWKaEsXip4llz86vOGzVQ2OEj2vqd5G32vG5X0dQLR1rtkukxUWnrcsJ/qBq3JiKhqxATr0SgmX8HbC4K46x7Y6bj8kryH/lsAbo77PJHhXxawOc4xRA75DvzPHpXfYTxzw5cF65YrVydjkpZp6fk15FxRo9yyTcEHln/4F4fww/A/XL93PPblXUTzNaAsoSzp7CERL03aEeA7IrsPhdWGXaYSatdMoSHZodD61sdmIKGc6Pm4BjfgNa/L6RVLU3yvGctL4T6f9NqDqMPdJzYf2u4a626cvr9Sw1Nt73SPcOvvQA11eVOgGIY5n6FVVH44iEiv2fdAYK6WUdmxl3ro6CfLyXi6SnR5FZNvCfKDRoTaZx/B0gXWjNWPRcxmFJXAPHuPRykb0UXWWGfjv9TpmzKej2HxUxv+PXaOJz9qARbn2xcKdmwJ7YYSU/4yiwhTYLcl/IJ7MheqB5didWgPoZogK68cJesPJ9ybcumRuxVHk92lqCj70gGoVTmTwjLngPe2P8n0FA3DoOa6Zv0f0GQ4cbH9GRijNuRGR1ON0lfi2G/CyRSA0/cIETsenf5/Hzg+mPZ8PFdglLCCs+eI0M7fjr4MICs9Hx2zyeDDsoyMKG87kjrh5qj2zfR2JnT0s3SsYQfbrIMJp3tqtQOHR4gkua+GA+S44upEMuGYB0+lQ7JWGtK8+uPK295cmv9Fnbt5zVeVFpvy5S2/2Tu006ztJQK4xVW29SnaHmoQ2r2qbZsMZYlUmV0dg3SzEGcYzNsXp/JU5YLyPrTTXHpp/BKnBeE/MhWmv/W+pJRf6ecFSMjOhwQfr7/IpyN5jltq7JPOQJ5YaJkt8lEP9wmuT/MFm7IcXaE8ZY3Pi046Cnvt6xYVe5L8T/Xkovbehc98foN48erP/o94ea1OS78kufhLMUK0Cjtdvd7dvkIzLZSMd+hBKbbv4qAzNDLCzkDUzC04Es5jhuWmwLumwsFw6s3jEmM9JiNHuG/TKVXmrXtfPypgK+Hkv1dryRfzaQaLeFpqDLU0xanjhEUS1DcVUg72+m1OFN9AdKolC03GKrnFdBs93s5pJhx1RrsACUfKKRj/GC8hRgaQTMlToKJ/uPXQyn7+CADVGe+B63XfL2WgMLvlZVaK65991CXSSTJJvFC0zu+3aSADmvoKTeLvYyP9BOe4KiTdzyWfHCUJaJDFG7/seIKv6UUmM2VJL9mQopkexiuPju9fc6oqDBVOMqSw7S2qz0fYhE1DSGcZ2KLxx6CAgTBqQFsdvIFYHLEl+0PZqSk8WzPU2xwpA5Pp3vNlJTF5vEFOnFMYDFxmWjy6cneSbIcZv4DxVSi9femjaX8nEOUxwN63d3TBZbzG00w8ixfM1neyQ1z3zc1jYN6CtoqlpzE/zBgSUM+HANRlv6/vyhUIZhMx7lQP0TqakW8tVxFghnldWRRwhzNLJQtkzwznAW5+q7Xw311mTnPQaVsBxIXIb5t5FB6GgSgxrqmwWibk+48uh33oa2CpjszkNebxP66NRAO8jAquciXjw6RSK590sgAzZayKlXEeaTJVLt7K0hn0PzqFoLe68M2eP3c9GLVaqkhVyajX8b2f+JCUTOAXUjVyJwaJhYV9bDbv8eHIwAd5OuQqNzE1UBEbct0ifDQBVI5VE/hxXImpQlq1stmzGpPfMspu+i7Iv3SxIeBonu/ptu4SoVrvPGifR8yQ8XrFMisq/VWwUB/9A6cVrZzOtocTDGc0jjH32vsJEEv1eeHERbzYsmqV1Cc7kE5S5MepDCThueCk9PQVgQpIQOLrbItWbeRlK9qjl+Kd7c6IdWrbotNo5UUrsH64+G1LdhPJ3cqppiJ5CR7G+CsxmyyEoxwTxckwJR6/CQylnkKub2L+fuB//5S0LM3ojhL+PzImEI/1USWWWp0/BPcg9uwJvVf8iaQNXkd3gGvPOPxNJzkM/Wveyi7X7Ieq3gVncMzclGXJDiis1sR/28jyzRhtb0sGN+S309faC8aH02hRdAFDuXdQ3UFVGFM6PGL/iXqIYs+Dc/5z7ju/6t3lPXn+HzRtqYCGddWHIZrtq5Y2IMNreU9P5XVONbl2gkmzqZsL5T/Xzn+0fL32gONXmf2MGv+qZ+GFp8URm3U511X5V05u+bJQBRu+pCjlK8uMsR2PWtHEOrqycLi3QjQYJBAKMyZmtNBkQBROd8nrejKYif1U50G1dH4kLjBeGee4Wu+eDaakLibqfMwNNFaaZoI9xiSDImafCa4/uLq6s59gS47w5aET59caTLwQq4dNX9CBwfxI3HuwpXoW1a2JmGM/6eMBJq5zpl9Gtb1CZse2k48TT3ji1mkDeVHWpcsznXoJo3HZ70cy9+JIsV60vkWLfR45DW181Wex0dg3PewaeHAPRznFYxq0TZE4a54QWB9N6ouk4iHsYEfhzcxHjB3QuCJDdDxwtdMmTPXWcxjM04Zfbg2toUdw2pM/3OhpN2ii+4EsWWHehsIVVrj7QRjr3Q666dJDL0HTr8SAb83T/YP7oBfuQ6pMvSYhm63gFE2QdxQnOH1m/Po2O/NZxy/my/BzrE0tUBZQtheTKXWzi0W7FD1rkSpW39EsHMbEg3kmj2/guVJLBdiZsB5dlJqGAIFyhjC/Jj+QNeoaB0Pt9ujeJIab4sPq/CM6IYThGoAbfFuXINsIg3Su1c38plmAZ8z6ilzAekYu+gL9mnpZkp/444+XhZT0gag6EiCe+XYFrccaOZe5h/TQVimVeOjIMwhBLkH52ZHnI1edk++NoLeQeFaqCbVS6+KeFfOozZf9pb0HobK+QWVY+wSGXjUUBCxfoZEHZQVNeBhqCso47BQvwvJc5sGTvPhnbuu+CyBz/LrVnrML8kuIusK91hb/gIixGkSixbRz3JFrHn0AanWRoZTHE0wDLarYlSJK//OXAuSOBxg6B+7lZL7S8vJv65yUnVMuSSFyGR/W+3dLRIICv4ZYhIcZtK1Fbx94pqzo+RNZ/9ReFiIr8kVHshfOV71kPjpe7zM2Kic7wdfbQCkOjl8Yp8cc3XTET9UNEMMC09p4UJ4Ofu/QpKPaCJPvoXbs9QQ4qyzoSAQeIVJQMTjNQC2V5Dfuo56L8PY26xO4wU9X3Ro7PdGJav39mZ9wxunaCHzdMnhpV9J/36UrXkDFmTxUS0Oylt1LHe+tXFqWXp3aUzoA3douFKXlCVHP6OPEXXrgkXJehcQGad/aoOiWmmHTwXoRgUqHX7X0iHtnDC7Jy1Xosp8pkBDy929fzAIDlzb3j8nN3EnQu3mDGThu98DToWb/DX+ftTzC5ubbs6tWYeZGxIOXxdV7Msa+mNqnAfY8xGk7lvVXZigPznXYlKcivqqswj5eY3xafEJfY1sAtzEemm97HYxXLDo+7O7Fr6EAVBzC2S7VGuQ1AtwQk01jhtgg7kUHR/z0R3qxTEz5KHfFf4R8Pp0G+Dh9zj9oAoudemWBPL1sLOCT2c0XS4rGI7eL+S2P7wPT+91NOCw9myIg9uC1ZLWbqt+SaTmXLOEb3LbNVJ+7v3/tutes9f07b7gsZ70fUJ8r4Phrlf+V7y2Itz58iUgc6jFTSbqP0eQoqwjQkVtjm0OiJygNJY9RK8tpZA4YoIEFX4Ul5Rm4iQsx98DKbUHi6SQnPmWgJkvjeNeDPK3Bv+CDliSR2MZ3GJEwNu11lh8GDmIOA92w+Mq0bwwnpZGJv2TnKzjleh5XKDlx8P1mo6JuJx11mCikyzOWFTsUz1QAxMJ3X2XCxuFGyZGZmLKzB7zRTyVCzbZs0eve39UMflyu9OCUfUVgqDqqPSnfyGgLjJ/Jfk6/vDbk0kuojra48h8k+SGAwus59bQGVtcSb568Pe+33NCghYx012cX1YJBugaAi6GZtBTp/WIqB12fFuWlKG+BvOJ+xjh6mN6XJimUHtQa3+PfKOlCXy/T1tF7PAF9VFWb+C0Z8bI3YqzRukqrJZ1TS8XsXvK3wFde298qAqus+LrhFa1RywpTbP0RFOjmKAnChfhBh1DCK6izck/tcPRhGc50VF5s/+4ZcqwvkDmcD8qiJ326lpPbtAGGdrd+nGRTV1XtvBmC0qOQHeBbtDy3YuIfMQ+wQin+wWN8W8rdfuidsIyd/QNbITvqdwhrWTj79mkA/zjztraDcmIYAUPWc4TFBj+e3oL6FRxhiBp40YjmBCHiRP0+gvHPfmj5mPjrOVGc/kGGYPXn+IGz4P6GkXcb+cogB5DPTgwKIkDhA6+gxySVSzzEMf+j+zDw8c9/UNYBk1HFvOdrcssUEhLo4bTra6mYcfiqCy7s3gx1EFvydcclIyeVy1xPNLwH8bXZ5C7kvWCXZANrlApAi4hk/AsF9kwoUw9KMpiMxD4DKfcichfbb3HBrSOlvvUa0fA4lHpWcupDZEWI+p3SiD5hQKkiS4gE8fFBMkF0cyxmUdgxhTh6lGVeyN0EIOw4DWjQd4g2Rk8FJrlJ/D5V/JfyIVYuD0uBld16zvSqW2sXwg8pYG+to/nt2GzLrEq47D9g4xUJnLw20UVkrS1bUTbrrhvDRpCQ/X9F/eGaqmCPVpYCYZuXCPX4L+QsYO64WPqYS7l8/LJwE6Su0QI6vGaNCTa3Q2i58wDs6EDchUgsfN+6APV5DO8e7Hp9FuR29wX9k+zWPidhK7alAjv3JBCSGxem+WvZl3XRXpIuwly7ugIkDC9nhfNEtqUtdj+oNd6M7ViHrdvyJxzNjSMznhZui9ZTU2LX7r+XA98duHdMaPVvz/P4mhiHX7hWjb9EPd+bca7Hu+J6SEVG1ZzI3tG3m+V8uZhzVTzC9RwpsOZWkyjEvegM85K3Jkl3vFGjY554n4/BLy8EhHZVjAFIbZYAmw/e2Xf4D2BlV9dsAun1hv6poQNcEQyv+GGczG66QBwicyvCmqSjZDdEl2iQNTf331sE30tY8htoVxnK1jQ=\",\"base64\")).toString()),qq)});var GIe=_((wzt,jIe)=>{var Xq=Symbol(\"arg flag\"),Oa=class extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,Oa.prototype)}};function sv(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Oa(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Oa(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(A[0]!==\"-\")throw new Oa(`argument key must start with '-' but found: '${A}'`,\"ARG_CONFIG_NONOPT_KEY\");if(A.length===1)throw new Oa(`argument key must have a name; singular '-' keys are not allowed: ${A}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[A]==\"string\"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(I,v,x=[])=>(x.push(E(I,v,x[x.length-1])),x),h=E===Boolean||E[Xq]===!0}else if(typeof p==\"function\")h=p===Boolean||p[Xq]===!0;else throw new Oa(`type missing or not a function or valid array type: ${A}`,\"ARG_CONFIG_VAD_TYPE\");if(A[1]!==\"-\"&&A.length>2)throw new Oa(`short argument keys (with a single hyphen) must have only one character: ${A}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");u[A]=[p,h]}for(let A=0,p=e.length;A<p;A++){let h=e[A];if(o&&a._.length>0){a._=a._.concat(e.slice(A));break}if(h===\"--\"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(I=>`-${I}`);for(let I=0;I<E.length;I++){let v=E[I],[x,C]=v[1]===\"-\"?v.split(/=(.*)/,2):[v,void 0],R=x;for(;R in n;)R=n[R];if(!(R in u))if(r){a._.push(v);continue}else throw new Oa(`unknown or unexpected option: ${x}`,\"ARG_UNKNOWN_OPTION\");let[L,U]=u[R];if(!U&&I+1<E.length)throw new Oa(`option requires argument (but was followed by another short argument): ${x}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[R]=L(!0,R,a[R]);else if(C===void 0){if(e.length<A+2||e[A+1].length>1&&e[A+1][0]===\"-\"&&!(e[A+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(L===Number||typeof BigInt<\"u\"&&L===BigInt))){let J=x===R?\"\":` (alias for ${R})`;throw new Oa(`option requires argument: ${x}${J}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[R]=L(e[A+1],R,a[R]),++A}else a[R]=L(C,R,a[R])}}else a._.push(h)}return a}sv.flag=t=>(t[Xq]=!0,t);sv.COUNT=sv.flag((t,e,r)=>(r||0)+1);sv.ArgError=Oa;jIe.exports=sv});var ZIe=_((Jzt,XIe)=>{var tj;XIe.exports=()=>(typeof tj>\"u\"&&(tj=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"W7ARIYpg4wCC8FROo6Kks34QYF28MR6pl2BlUKxsBKU1lU+64Dq8fBQI+jgD3GGlvTP65avav3++npUGzK2Z0qn0wpSq4ZxgYinvCQR4WKhlQp7/uWd9JR1W3GIWYcoQhBfGR4Ph2qbStDpWsM/FqIl0Gh8h0KbrD9P731TdvUwRaUg+w8fuODpSlwknecit/TuhNBx4Pt2qqgmmNcPjn1h1nVlgTbJWQcxUy55NtZb5eq6OBqxWHA2dYyWcD5VzImWVblUbw6xkvrIDv4/5om3SID0yPv163/RzIwn4LlLlSpXEa2yQrCKVouhP97l9imMwSw6MFiCK+w3+enKtud193xuDWdYA5JaIT66xLpOxkcviH2+oMAIpm8WyavmvgDAFLkS0O7et5JwReT2hR/G+cyoeCQD37EyYoTYZss2AZcXU+/aHzP8/bmq3zel/s4UQkgAhUGy7+82XZf5zFtMWguk/gjSycDDHAHvsD9X+cZe46XDzhwOSEGDwACRiKFHDWbPhB4UzvTQNC4ZDU9g1rY9ng4OI42BcS8edERWUrn9NL972HAvkxiWHizory+SpAw9cxYRk3n9Enw9jSQ433izwxT12iFX5s5I+l7DV/lEHEr3AWeWtvMJKcYAZA9tpI7PLUWId4niI/C3oe4yZ+7oD6wAnMf+XAemIK6VSg3oO7OePC1gtn+9WCClQdnejdzAS/0ozZMGOdfaGmfeqxqSyhxXSX191Ow9Ii/Lgqcy/YqDXOFxs2f9fT8Efidd1OQ7GmZjit2xAXiBsGE+7JLlmyKMFdYBHyeUE2eNKqRQ70nDF4TUA2iLLYQ5bUK4CKPuivenoVnLnCW/FfFxRyQL2H6Pig+mik3dS8SuZPAPWs4Hk6uCbZUi+KU2u7/OtSFDaEI9ZTHjrnBuAGxySg2flD5vFGsrdfJOrWUzvQjnAulbAF0KMRAjN2fD4IlsJIccKrwL6vPJoPQISfj2bwpW9zUradgicxTU5wAFptaRTB4WTiqujuV2lZNHl+yHiXNNwKgkmcmILR8ZtRU3KeUffr5vBt3IsmofYnuox/o2d/HugXyUfTv4/Pqm7RQpG9fJVvbCGt/c0NU0zOVxkTT+2xdzZR2tQrT6PfsUuuAuLVD5N8DSmLjUPfyTK3YMv31xcYBzofukO9CubJcb+2IuIZtFnUlSLYN3ngNDkFRZGhELhu7CzB6nRGMxV2GcjNmA+wDfBQVvy03FY8N3pC93aHTMnqJoA7HlVSr/DVN9Q2CNX3Uj7uzmnK5B1UB63oZ7BlqIUBeeixMVneki+KKH51wvQ2ADUj7O7Tz70/KtLSCKlo8tvhBV9nSxSuTylbvlFDjCrjSjdrXxLOfMuqsmx2LRkx3TTD2zvK/9B1pacYu/mPI5eMLNO5qUWoGU1NLqFprSBhifv+Cl0jNxqlDTs7LZk4EwsLqkD4U25FBVSarY7HNXvSqH6SRKYfZ2Lly95r2DeUbXi30WT0bp6Hfm98fBPiq9WZq+88HqW0WH6giJD6sCFCTiwSF30jWJnAfnUqgiuXd3JFpiwMU5BJIcEBzWQ6yazve6L4dtl909aLocDwqAdw+Ovz8GijOisUm4pL3bE4bSmsfly8wHi0AqWEKJ+M2hxheIujsQengKyfciw9pJHr00kHXBSXfE3Ud9HzQ6LneHjd0+L/yBVDm69HsZgqLZIhDqHyIZndi4lYewElUOl1JA/1xfiB2zVtTHKa/sBI90vZ7DDWe6IGrJFIE5XiyY2hVBvrlx4GYsPqwY3GumJujJTcwRvFibFJLW0U2p+Kch5KXt2YuIXUGwPElc1lwzfOW5NuMcWVjW0gIAAwmiVT6any5o8anys2C51fZkFw/owEhDTjKUSXvu8UYnuwPQsX5xN1UN2QNwEgj56YWPom4khizKu1uiBw6jYlOkInRHXmcdH6vq9REXdP3JuGJP5mnSGk14iNNCJSechf5iUTmuky/6hjHaFrx7syRt4OZimxSIthu17o/ONEmK2ujDRq7VF09REI/G1deBmDwXGO5w1WI9Nlsv6ZboW2k+0xKUjk5NF1vMLUcV5RJDZQ0l7Cw+Lfw1LF1Tn3PPrDa8diMgihsHiB/NHUFKNQ0GUFWPLlLdI3htJi5YRFT1xjTPMWeV2EiXngEz5AAQYtBabksFFy/uM1dXuTJ7f8hA6Rm4a3dKcJcWQy/rFPCnCXupEahB2xRoSGVwG+fuI8SltzQ8SsTUmxCg8ZNko0Eu5/pTz5wYjMl86WBSZCsVSq2bm+v1M5jOinrIext3sUjE5xBbX3FjmrcpOGlyReAActcs/YtR+xbsTmLtF7cxF/FrCfjnGoj6xDydd+zlPYILOlm3jQr43urlDHosvh8x4B7DBBFX4O0NLUtM0KktpJUo0HbHvM3rZjxj6pWtqroOlEne3EA1X2QedR9wYH2v1SdYVBxG8DqzrMpbYyCalUaDL1LsG31Ylk3YQz27gcYpNq4lXLKMvUpI4pzzzfA0tm56VeFEFrFJ5Gup+cav3IvRAx0n+I45iShfUQIzNGRXkGDfNZD1DY4kbCT7HgoZa5tF3ccrIw5DfnyHqkaseqWs0Z8VpWtvyDnUzIM2EzYondzX0g+HHmbu6MhBvNJF+xt8WfUVlqSzNS3W611WGBAdta/4mIDasd6YZk/c5nw95UQKzY0S1O2Zj3ioPp9ix2sXS0XFa+VykU2lXeB8SXc4I+zjcmmThiiVVNk9rX7pREGTJOcNcF6+ls2jpyu+8oTg+TO94R4l+wddtmHq/Fv8tHPrzuCkzUWePEFNdMJp9C2li5F5bC+DnqZxwPkaiTkF7FLXdat+k+Dq2uF62+dvmUi0oVgM4YD8dAAy07InOH1x53oIccm7m+I0kJpyW59hooNbrnc5Zkzh4r+JLK2OVT3WKTVBwRSEK1l5wpb0fr8vkCpCYZ4+RCJHezCnfqXr5koZo377jS647XrKpfYqnfGJsvUYkvWlKBrKUyVVM2ZWlhQO4XEKAfPEkN63DhO/o8tIK9DUtY2gG52hXTOGInT9mDL98LHB5LXY3T20UY6nj2Di9t4tOS54yagHzkkh64flMqApLfxY71xlqqlczSVlfvlz/DMoqfjcjonJHvx4bC6+C43RxR4tuzD64GxlBysw7Wt2vCDz/Yn2leZL0G8IL8+Tm+kk8vWGcRlypZ7UjesdNnIhfnsjzOhEnTnkulxVAXanoRcw5dDYtfU51sMfESSRyK1H+YMHjZwCpElSjntWczGnMyb4rqOvYgoR81JphJBoMumd5IJl9Ht+qrMPg8Wgwyzx6jS7tJc1cM8PuGWHtxD+8PCC/afx6aASh3a79BuDtjQ9rdTNGvaVv1UOZ0NqMsGwz+a+MJJ8m27FS326u20hLvfxUyioAx5+WKSmNKX/UVnB4vwe35hdfsGW/9Rspm6AtpWkXdS5x/R8hY3/E35a84fg1uy1nzZLkdWE2EiyVppjvwtanXeYoTt+nWwPe77glOP6M7rq47ohaPHO6bgAIPbZ0zNydNbRkuohW1qThbGZrHBoBYtNiANhbh/nDqaKFg5nYbde9dsEbIgzh09AjM84eE7Q7M9W+sGDLWyvf+mgsmKZLYLwm15/sLxw8TF2SspIa3CQC/jYDl698s+mSlnNmnvbSYz4AuI/vSLMCQAjvc/sq4zsOzd+Pg6F7D4n5k/5sE9dlF3T/Ac6VCyF136K6no9ldPUdSdpoYWGse85PTaTo+p8vLugOhfUzOw/QQhP2qXGQSJd9XF95wvObCQmU0D65T8wTxQpHE8wBP1N0mEikx/XvlX2PvoogMUcE7L/Ny4q1GLzlfWt1Gf2gUN1FQ9doqC7mzUtIoK4NWTBs6/1G0ltd1zm7eXT7z5wClwdCAiJL8o4FQJd0zAd8FW+aJt6W09ufZUtMKiUmF5/QFFZTtWA9bYLERKLMN2Pq0hIStoH4WAK+51mUG1mvfT6WrZnBX5gTqjFH08Y3i2ju8/vmXPznEO2sZu9P6wxX31+jkeM51x933qGypHrV2PxSyMMo3SNJ/5nz3cmHft1b0MSWMFzkNHO2aE0keZU/9UpEZcs1f5cRCQzArPQTmTjZhvXMVXyCAHwVXw6xS619ps46XQLuI/bOa9YS628lkpWnCSckaz8JqpZ6ki6JreMpnSZ5sO8qipMaOCbUDTRi687hHDGsmx4HwKgp62Vq8SePZPSAxapZQVfUPwavxhtB21UOEMJVVpsjn7CU2cr2Zau73QA2V/J8eq/8pVAenzan1m44Z6E4a6yG1YQNbVbqBusYKr0L0NtgczDfeYL+e8+22u2QtqZkTwbEzyRNq3HiBUhdSRqowypZ5aWr1rC0UHfRaUaWRMo1BJQgm4gLpzFUXSSrr/HpgalAcsJQSL88x/JFtXDnhiRAzvLSHds6VHSy83PRA66t14s3SsQpBo6QBYjc/tfJvUr59PafpXud4EmC3u8u9QTA5p/ImbwVfl/3GLfLn6RZrjetoVNZDyepm2eJ6D4xuLPalVhxOF/UT558S3wxpFNtSLqXevQQvEcSqDlk+XBoOXQiNPYs6aHBKQf6J0Ob0Upoot6d9uqN93COXAFB+DzC2+06q52Awtw6PbGDkt3LyxkQX6qi4U+uvsbADCFOpLDO6drNzZBp79pG3jim+BbqqC51ivZzZ+ZcuLAxdnBh71I4a1TMY3rnjdye0IJO/E3wbMXhI723R9ivM/GQRRwjV/mzpsKmE83genP3QHwmBD4wbecU6Xd9C3m6X+tZtzflLslX6VfGzXenq/ufPDl062eQHpNtd7+4o58v52Juq1+9O0vpl7q44iulAk08zJKMl8ViuSv6ZGJ8JEMyAB0GAi9NQfkKZRdo8uJFna4+pl0RQX/x1JxgI9IEtto7GDL90nlsGiORu9kAV4XW5Z/FV4FfpVl0EgpquK4ZN0j7zdFO5aKd2NM0ev/RB9697nw3Ev6lwKn2OyT4Vfo7i3rxKrnTpxlmjPYGxK28MBY2sec0pfaOfcrC0xwqI+IQe2ZMBCdnEZjDnPxSp1aGM7c7AbXe08Ava/L0YobwLnOqzMvh9sTYTsg8DVI9nl9azEn06E+CORe89w4Zo2uC0DETbpKYGgI4cvrM7H7RDV57Nzp/SWkoP7uwfBXnudSQB0JK8Iqjc9ut4Rr/pf7WThdHEfqY9z2vHoRUyPXNOUaekuH63dqgefi0Udt8ZU79iBusfeF8HU6ycrCxLD5sSNyXCLOvU4khfvTVXFA1lj/35hfHtDPm6r2Zf3i4R/o4tJ5knYPx/ZWN+Pn6d9/hPopvS2t5PdI/sDjiq2VyCbRGfhOdWN1qMAAApShxlBY54GYfxuIJBe07pPSCT94/3fcQOdP7tRhTzJp7DZBCP1WCP/slnfozu7EehpDBZF81TXHt0gznmdls3kujsXjtQnryeYR6mxDsDjFuzJxbKpmY3HeW8PPqnb6e7Um8FHHcyWTLkRb0ENnDM+YfGm3FwWsUZBWup64xSsR2g1ysTbouG7K1jBjh8qb0B+MTiiTf06gaeUuZHWm2vKeF896130XPYhanhdbMN8x8zmfb/bXHqkVOG5BUD49cAdulzEKKLaNq/zPpCpAS4TWemL/H3Gb8GDMtpbJ7Vy3toY8NOaUi6r+HtLthk/R6Re2d9bbGLab7XykgqnUvI2973UqK2ihdAAkdsxaBvNXuYWl8RBvEvVz3TBntF1XS2B19UjVK14+z81PUundKogcMDctprz/NEaqR6OEOXVI4SO7LyvX4AFdx7ZdrT/C2WDdMTOsmica4kmrZPe/fkcdvzjHzcUJwXe6TdIqV1+q2QdVKB1mMjNzWX9Yiq0MJY0RLwmWX65cy5/I8+o/9O4nJvAJXXidrDw7KqH6fpu37Q/t8+c3KoHRs2k4twTIQ71SA/ZA+hx5Axz8ouCN5CoXx7ikoLTft+9FiVwj691c4mCGHWnUnRiDD1v1YYP0oWAirxD2vR9pIzlazk0K9PHcj49WLOESj0WSZqBpC3bDs5iy6yFfeC3tmCqSypY6f8EpiMRuJqyWE2UKxbademCKsB4xKQQbncHDjKgwiZUtG9YpN1iacfU2tqhoTAdZKf/m6n7y3h5eN3r2eNDuk3jDL7sJWPzjB0Oxlq4iI4gzvxOslQJAqJ84T0f62nVoMta7dvL72Erv4hQsPRXE2TfHIecZQP30Xw+YWNKyqCQ445GUJHnAJwrernWJ36JuQbF9uzLqauGdc4A2pUtg0HM+slFO2JAh1PaCs4YhdwvWOidnC0up/bN1lXVdB5x21XRrzvrBfWG2CIw/oCDYaoNL8x4q02UYh8DZ8skXNmxqFab5mhkAFy2IapMWGGefM26cLikVB1gZf7OTCVO8vWBy8BkuvBzw/4wlhhJy+x7LnVlgvYdFbqaKiRGriHrUXEG0xK6sNSTpG4ZzZQfHsE7p56qDH45TykVeJSbPJ7lRh+moVKgSiIa5LTQhdHQQyipG2c4oFFhIhhlcysYkhUJ2vc9nu92AWP9rKx1gGep94W1BWBwE/7Vju3C3EvSruGiLYvau/1qPTdUYIPcgVIoUs4dnIzaNxgyb2rYcCAyTK8ZFOCFelXfytG/FkLfVgUhAINhm8VlccS3k2c/Po3KCJ/R2hwRgZSMLvubw4xxTfOQffbN0+bPOAWNCbluuj98rUCvSTI3cKUMhoE7NJg4sU3GlYWo8122g/FiBbXD0EDbWRTRPmMRuZ2Yl9dh0mQUlbgp/oG0KZZm9lLQoUzCk+2+v7osgqYYMpQIa00JCuJ3+rqyPbkFd3CNIOqaHzTo3LgmHqylqiPWsBXRzYTnevLl8nOQ3Dsv7o6AIu7XNVwUGwnpC/C9nECwhx/4r7h4gz8UTrdhAph/lUBHSK8PEdB9svVR4u0TVcwjzQ+3Tdi7FYqybf3VBUq1vxlhZBQ0yfkG/vYiT2FQg+w8STdo7j3NpmEs/5ZoRyPuXTZf/jBnFL/4e03PEDg2KPggy+2bKZef/SLNTbXxvf5PgEhdw5qiChR2AOiHs6w/q+9ceTAGfL0gfbnAWDrnqMzPL8hPlOvPuznt2w5g9ugruKCW/uiFKx7hVb2OleW/eELjyI8SACg5gqSSoXPFWDiUgGdJphnRfTtasUasrBJhcHSNfDz53zJnaulLUPfeDjOq6Qj2JKFtISsbyUASCRT9hhssRoLADlHthZQqaolEKGE05vHyze/2oDqSKmLYvd5FFe3Hn+x+jVBEiSKruicfr5IJ79xV9rz4P7iMFU3jT7xUh2NGtsDmTh5sovZ21zgCpEt49C9mDUEyVfiOVr+mGcvdhC8jgxL4+eNXtATqDWFuMFrUyCA3DaUo+b8lT3K1w0ytzV4AIt0zkL5sJz8syXhBQTP+Tgip44e85KCTGLOSHn05jQ/sPmm0/CWAPxfqssCMrz0B3e52V4v+0GtZiigxuRZbw+R74qQ5C4PWeMd/chcStKl+mAtfnn1/zpBvpQq0xqeRewCiFvmZ5/ofcZv3+nQp8Ahok995o52XGqFLkWS4YWUCHcNjfHG1kxkjAcwyd2jx6f5yefOBDZkmRTs4gm5qz1U2dz5V4mIPrdy5y1+a2nfAPT/+UvQH54ye6zuF633W8nr608uNeKc7HtWSfOIMNfFigNHwg3T0oF2sB2tuKWydLc0LdxG7dxizbZyohDY9f5olzYf69PReJ/gs68RByk1OkejxEdmq5NCMVYcEQXSTEjbMxf+QP1BkBIxCvnFx/eE7xxfkE/E1VEoTivNkRJv2TWg/ke0S+p/zOFa4W8tQUoOmxoWyBMrbMXr/vExC0A6AOW9gPKtpRnulSmrjDalI2R+33cBVHldx3fQAZGL6eBtRWIpT5dmX9caSouWLkaMLk3g+MNKRNYSup8tFiVmztoyOewyk+rOzznaFOafi4tcIOGjAYoDgk4NSmtvZwZRMku2aNM/PNnQsU7RRJdc5VOmlxPDaRnsl3FqT/lSYKhE+K5BQUVb3A13Kh0qcvzEY9eCCYs8PpnN+tum7HMqFQPpEI4E1k8nl3/rc3b9T8U4r81xIur+O8Kcf8Q84zX/nrMMKBcXGHVWbRAbQz9ubYmNyeafFFn6LIl+TKhZ+r2e8lwGEDmEyn7F+j9od8L1iTnjt43WmYxW5QtLz0M4/7BUDLmLY5wZoppjdyPdRYzAge9td2s5n6HL9jUYGZkR2Ygy7zfypxGPjg050XPpG6bKbiV0B39Ogu3PSh0wBh746o7U+orZye5usdAI2dda2d6zK6+Tjc/mqfdNm5hWPwRrfb16Hs4e3mVPwxlF5k6eAfII3bQf/Yd5bm5gzpxFwOsRkN/bmfA+7cQ90ltCcafzaPktSb6OWOosoZxK/lUr5ERE5VlV3eVjH7u/dvDfce67x/u9foe/Wyb81F2Ce2XuiRMSZZP9Tolx9+FNrGeg8HvAc2ErwikS5yHcuWZ/niczUiA+EAbqdIKOnjCdNKsrrDTz27DlXsabpK77qVD1PUhnV56li2h2lCoV12Jn+TyaL6R17k4//K+f8ZRUNYG+fIgy1cJOZqvwvAnMjLei8Lw6FkNlt9VdZX5FYMRElv6MIZwocObU2UZshcGc0eW9pgURHT6bPPtttz6h3VPeH9fy6hBWeA5EhqejJEjNjo5sJnoeiKKu9UWou8vNBiG0lG3zhhdn7IJXFJYiWNq+hTQfqxxtMsHdT/+VNdIjfDjPQbD9RFnA5+ez/KEL6OtwQBC0ghr2PXze5mkmUhlTBfW3vOpyfJIXouvn1PAssDLeVKvGYi51QASmxRv+2sIAitMHnN/TUEYNjmkXGMwH4KMbNYpeIaUK9xS3nwdX1zXAJM/OSUVd9VtREJ+T7sWJEjU2J/Y6DzWQS5ZpnIxVjhrf2+aaXLL9qHHgymnWjixaFF87OO/p9Pj6flmMgEDid3f/xLrFk5e4xnzZX1scZfV/lUp8gUSoQNyPMUAHeMeA1Q3fxycKghgTUM21JxVMKz65dQEjBqK+/O8lfe8AW4mYjrH/7iTAGfSxYJCjkYSsTilYYbbjKn4AwwCFsfKxYxtZaSapXfl7IlwdFWa5eclRVxUTcaKGWbC8BVtYwXFvR4K8ubwanth1TExJHpiGw6PguR2L8gi3OqpA6b5wTpiwXsn9rlKAgES4x4hQSzbSMCie7xkHiqfnXuT5XgPgCpdv5tQtvhQ4bYpO4VNeOXcBiIrHwTj72hhb9yWSg9EhRicf3G6MgShk43pF6oKJPYHrw6XraN7NyHEKmMD2p+Ioxh6lwQoSLLskfqqXCH4KDpjrWLPsIeKVVtZcYOVhotesH197Pi/w0WvOIj5/oNipek04BnScL5lPCKAr58r+98AGfSP9G3iZgDrRAhBbnAcInXSSjTjEaQE93BoT/IHEVReY8yu9nf9jaHvJQZ4fDSGqQ8vQhCQXPmt3AYaowr3chn+HYKfQQGxv+X6as3qVFPycR2IzniXbS/GwUSuy3FzQbgeqgaBMyHn5RqI4c9nxOsnMlJFNZl+ltVaVW7jXRHDkZlIwClPtjU5Jvik1koRhI8op05O6puFW15BmYfDZdzHAzdU8MM+FQt9z+bhM9zLeInquwjTlNnUpQpMR/MwUesJThF1Ch+PFam0s70/JkW+DFBfef+F/+nt/RqGNyriAV2QSCy/S7Wqs6oG46C8I8CPvnS81sHxeWCUUFyHYP/LSFag1qI6VbfF4lvEgOVc1lHZHmJkuCe4zDqGGMvtEYaV+7nEAQHvQAuT7MKSQ+rjWjDSJTb+tFX3tee+6Tg/8elxgoesK1zeHiMML/jTxePUxr8AIsyhefAGQ/wbvavxEd1HUYbRQd8Ud5Wzh5K4WVT7G1MqX3h02ZWUJQSk7UpDXWxG3VAeRR1cPjmUV/Z3KoA3wqy1Tw7hLrDpXFHUjghyvQqj/Up49huIDcNwihjjfwXL/2p0SQrtxQZZRGOLJVhYYbmBFLBrKtRdWPeAiz6Q7YqroU/pBXTdQfC23VfvYbOybMTT09qASwU7y6PDxGgXED6EvsL/xVN7KN7NMcG4DMttY0nR5X2tNYN3B0sJYNNuzlasDtIQBvtKG9JHodRaJ+d8+Oxydn7eTbf+NaFl92b6/hZWKOHU98mW97LWLlkMptCrvss1W086D6genzIg5dfrkoUfaJh1I83bdbQ2Slm7VyyugSqPUMIXlkjKl564PJ9PzErCd+xeXl4178hKGIkxrFDXq8aYNZvutwLkNkjV0KoTyHmw/deP+y/H/3S5pKrxf0peWKYTunn9c6jKMGhn88m30+GebhAzrU6WFo5CPTWbGSkoo5l0DPte89re5I5PmWiRchJK9aXcCSeuoTbXq4mrd89YFu0GAkTQRrbwRYEug4sIQdvuIJWBsTTLxBZEF90PQqpwi6LpZfUXrbtfpFqLQjldvbPktKya/opNcv78fDQ5jOdbUfgCErmKwqgulQzYs2CVQNe2ipWlOw+HhlE5PMT9TL3WscTQAf203ASMpW6nIobAcFY1hZ8PUjwgVPkALPdMFqHghtDSZCHlm+IE7xgkd1JNVchpcxBsQh1Pc95JKMcRyy6ud21vcYxrD+UtkElSkcGgH2LA3ye4blF2u2XU/W4orxE+mwZlgy7oCL00TJB0pWaoKOG+Ocr8KFMnzKteeYYVvZ3uFs9z3FbF1FlM4F6yoZDYEOsrJQdaZbgjPT+Kxh+iB9kK1P/osleeSaVtGyQ/1MXoYWkN/z2cQ0mJL0fw2NyO6G+MCrj8Wc1sqfwegffdvS2sX/3RlqhMhpiGohiur7AlsY9JfQ9OAqW7pboUQR/zCfCqz0kZBBS2x7QYMfxVXd3Za/3PXbBot5J72U7QchKi4TXpLfqOR/mNhqU+5CWXj7t4U93SJrx+h2p1DyBQE917Xzm1/TZAJuhdhHPSl6AA3RndnK3O7jLWlfWHYcKYqPwh33FIwoendIbV2lzhIFzOLTPkHilK8hqKa0qN92V+Hy+c2Vlfo3bAL+FWH4YNIVH5oWxsCKI31pKLfeeRMgMDns3G1Ip75SfytxdTKwDd/dNtt/Xy7A/HbRT4DOOuxgK3F/N5+RJk+nxpkIkqmfSBgG4asXy06/m9G4GTW2loYWITbGS5PQNozEczRckdh2Y8GUrn0eWaCd1Z2vF9sOKAnR2moz01wccHKqVCXimE6picR0WbgdxilnXKf/rXplEOZmLX5X8xwU9xcf/p6Aq/SB5cricYy4tP2Ka4aOBXw5evocVyqFrjTMcgCBxnsm2MzADbc6E2CJP/Eq4VIwhByhtcMLAP2ip2qYxpwOb5Bv9DIQC2EeUyLCxPG+gQ9rkgXOAxtB9ohD6IAD2MP1hCmh5FLi2yjPm4Ia5BmDcheX4q+nq6UsywZmf4KWMaiH74wac9kMtmDJvdHbS6mm6LZAXM4N69ac/x5CUwJvUrGNGPlxnouPBimn9yR/oj2x6ICjf3fCBHcL55q6+HUVimnAt+F/AooObpsAWaPydWRYQ16LIA9upjnetlKyMeW7oA0UeUj9d8OCJan5+HIu+C8cikD/zJwm6iRg5b9F0DwkH4Yk2hY9/uEf4Yy3jlb5S2LgfSwlgfzfuIAfux8VOsjws5dixbB9n3RBV6cMZ1Se67fa/xQoAC/UhdF38/0HIfHuBYsaELKgbo4DH/f8Frez5M59xg8umadHAh1rxK6KgYrj6ZJTWuGjLWyKPmBXafliuVLJwLGvk6kKtFa01ed9koek+vCr7Hwlq1XdO9178D123f7w96wuPp9CSLCUChOkNp/+2CmQLqVapvKWT+4K16qCZNtWrvnsW2TczthXtH9NSmdf5cWbSmrYzquiQV951uqm0bKy53RPR1z9tRFTeV5aLJiw2xlIs4hD9FDlgemkg4A/E5L6KNkZuxFYYt9R4FShsDPRw4a9brRYwg/Vb/F0KcB3AJAjCH8c1TBnG9cY2g+s4xeKMOa00EsKiXDf23BfKnQypB2JdoQeFJWH5YEwdbyU4lewqdn/0Mi9yWlMREfVJXUYx8k2O03Kh5tlg6loSt2y3ccNBjC11bLfO027ZmSZbtOgrvjKwi0L6Qb0o28G2EWqBtGlN/0gLH+x1t3gALZOwu7jsDpUfExRHxDSsOfWVYlHlKTZajNQ930iEVtg47PHsuUO0ksL9p1uJhyDMJ+CxAlT8ImsX4hRyOTztbiCY50YsVFFw1qY3FITUX4tmycMNceKpBLges0g53HA/04h8LG+9K7vSE96YTfOEAnKtuxQVmIiIwWJhLisNbnvB5Tq+8cjhviAvRnVJ45gdS5Yg4OUq+vVz1nF7Dhh5nmocr9iRIM+g4xY8yO7c1ZV0QW62/LMw6IihSKLz9LtrEhYtQUDLSIBzt3SEEq8rBFtPNSgPvghAtxQGSLCP9pqKunRw+Lt0AI8pVgijwTvqWeT7XjmiuX6412mNTGmYZh5Z8Oo7T8cbpmyEYExweWxkdXiL3Du+ckyhPiU3ipokzPhHSd97aEaLVW+r10O9MreCOr/E1vebX+Nqe4h2KfSZ+XlDCorJz/CGVYywVGz5IQteOzcK5iwEGaaMCmwrWecHIuUrOEslCQspK75kNaWVloog6xfhLr8pdU/8eR892F91FlH3j0GlkAiOF2XBmGuDZG9T9TX61DlkgDuxJsT17UmzPqoNAcPdeE17UWUj4djMObgUx3BANPJcokux9UREJtbyAHWlZqpndacoS2Ns7qEXQxBFvEjx9nMrAYFtmsynUxph7zzAs4nmp/SUUzY0+uPUroZ4BCBsnUqYXdpTe0GBD6Suu7Rz/TkCnj27WTZnkTC5nuu3vb6k9ndZHx/57Ztum87X9br3bi23bsu3ltm/51ucVB7aP289aj7etZnts+5VDZ/tevoFdqaHt/lxnJvRu9kh9Z1You1zJOHyRTfqmxmhFoxc2MJwfRlx0IG3IpHYoLCeI1V5VVuJYAEL1UxGcZL4rcVyxMLo9n8OUn91yaPhsTCZAs5ebqdldbXpbAmqL/Rg4Qb07DLn04qEOr+zbyEh7gaIgbNg8MUsmAFStC0v/2baA8bGUHiHqqcIhqPLwpTqNdetLo+GSkUEyB5tdxm73e7AL95HOD7dkzGMQrc51qeSCNZesjRUZVJY/IIdJW7/I2lE3l6ky28uEe9jPuVYeG+Bk/qDUcRZVw1iRK46b82YC6JrUHA6+7ef/lqWUz4oex3exMXTWnQtCKgOU6Kg0JZmhzLjU09IQa/G6n0iG1KIOoq9c9UKgPUp9QW8N218SSa+vNE+Cak+VMELOsBOHVxxWYAJNqfTrwJ4oiMlVzzTfjj6syHSlnRVWSgdmLJtNziTxl78QIuYZoFm77ompzVpo9ptl5Dg1l6UrDfHjUrU4KlzrsziNNTtvkmH02st5depUplibmkI0XcL44YRI0BWiglmMkFMa5d1127ECzBW2XiHQqNISnHU3nGQNRlS5eXRI4CBtCWAQ4Q8nuJK93Z8wg80CCK4QGUeULS+hA2d3AWSGPnIS47NGiUtCvjXyLuRUyi3PMTe/EkR+Zxsv55QHz4dvAyznLyJX9f1eU9QJKNJNW+C3MputmO5VjWdC0qrgwXeHoYLXGmEKZjN8SrF/hLtQF0En/vIWLCduPoTgUZca0UImzjnVHJkLP6CCfnROUe2tga59whQXDvTdX/NGT9bFPFUt3FrreQx8yw7j21H8PJEOhiaI7WmX3ikIl4lKulA4avsMvnnp6Vv6HwbEI1g6PHChKgBuskHTebkk+V4c+CMh++uax7RnX3kO0LgB2gAbplUmUqbGfAWWZk16nRblqB3kPMoNLKFRy8h8/JYP//824/gmRVh2dePM1m5r6Ps4M0Etrmsut6Hz+7qrX9cpv+P4GAT/qaUzkyD8mQ8jVy+ewsDafvIGVK9Rvb5KeUiMpi1Qr52uzF2/xpPXfsxzGrOGtxT3FgyMLnIqT5twrVybx/CN30uVvJiYlWPhWP7PoTZOLXYacacPh21lG7AaMhs8ZsLN5Brrnwp/gIqNhj9hCxffaZ6JzdUrhJmayYPNsVX/RO4NWz82ZvHFvn6pAdM1kEepta0VpqUpMu8jYvz1YILmsCjocN2IyDvbftxK2nXTdeCjLKvauDCTwXftoWPe0F2A9ri0n7gx/PHkchZtBanh4rzULjzT1Rxx0lyOsXXMTmzznkMJlm/1fV5cdR1wb6tuomMte9L8AEKJ5aXo4U8v6mQhZPnuVWPqpjW5NunOBc7gF9WPI7N/GzmZrYhhY95EGIkcNJkbgcFZEnydFkKRzqOnx/foq+UMAljFJZmPa5X9shRQotb9Z9uz2AgZTaeJCkGxQWc7rLcv58b1Msga+HARCamyTGRhRUqdUGqbSEavKR/56fFJXDh6rspJVJZF/iKmrJn9SiDTGKs0ZZiKyRyLPphO5pE/tk9OAW3mQIsLv4i5Zp5N5o984tTP1H1q30c4/DfvOcB0k3Ua8P1Hd8uZ2RbDxh24Czve/h7bzPTYD9J0+H6SSPYffW63xzHr5C/feXXWbOfKQHej+vVLaTolVfQR6vaXegiZTj7zisMrgK+aoukwA1zXr+U7GseAXprGF4iu3a6sVPm3fIe+yMByQBbKAUFwvTf0SBSsyivkFj0WyIWNNE06b92vpQqDtaxVtW6FsNUm4QR3XHcTPuZikFqolsNDpOct1ewROlDxI9Z2uBHuST3aCbk66LdDk0Nt98/W25Sr1xaCgNyu9j8gLvrgeuU4cqKT6d4+/gVQkFtVx4vj3UuNl+JBW4PohAnz4PyMRQsbW2SDMLiRrJMvfOsqD7+XASuJvonj41FgUR7OA7ae1Q43xn6ED5JQ/Qgh7tEPghyOxty+OOB/zfnq9i5VhBnD2aokG+kGa/KJPfKQ1mrrj+XW1gfZOKtt3f15x3/BtW1F/sXwkMi72qnurLrytIRFopWcYgN4FvXFEZELNxY1sq/BeXCo0VN0oBKWTAe8Hx5HNwqQOcs8juAqZTchDhynxrZco0QC3lyljTB5SlI/Q5lnFlwTg8dubtTVIUzXI6wyOlxVcFqiQA6CIxpaICe7exyDD+wF530RCju0Cy/3bVFiV9V5i1vIgq6nFnhBagB3uJ5ZVurA1aSae/I1fYtHD/tQ2LeTBoDPTroGpNFZyRJm3R33RNOPL0S/UW203AkxHNakcUuucU85Jb7Zx35K60yz1oW2Pepq1E7K/JCYrTIJvy2lc1wqb/B3fc0i5MZQ2PUt1p00IVdya/EpEjSEevT+S2wjpnlmoDLBCKU9S/XPbcccNhyHI3TcPPTG+JiAABcX6Yil/CyFK5E8fi7zQVS5HzsJRbnbsmnNT0PDE5am5Qn9lYMOcxVEmbFq7ux44fSqT33MmAXjkQ0B5XNsAobdzo2lASWKjvDdafQLxaN18DuncpTD/VGP9FfmfonBayWq5eOWaPeBf2rlP+pb6e/Q2JdRoTSSh6AK/c3fyoWbUWUOcweRIlrx3SXH1sqCeNP9EHI5if0Zb0sNwtvRrgbXU69nTO2ga3unOeIQxgWDDGBfexQygGXar+fN2tcu4TTuN/mb/kefmc71f8zP1yGeMrk76OuYLYEJR/qvFOSvwggW1jHUUQC5lSss3/RlyA+Vn2Co66U/93+LkgCuyLhlVh4BdjDJEBXJiwimWid60BKQWct9LBR+e8iHinq2+Qg4+W5HH/gQkiu3rCfKonc3Bk122Pg0WqSbrZF968tipt/33Yi/vgGrdXLQP/FpWKv8+XzaX29q8qLHSWSqk63llks+pzwNUC473CvjxPRYRrMaZRYFOQIsI36VBeNWgM8w3NkvTJIU\",\"base64\")).toString()),tj)});var n1e=_((aj,lj)=>{(function(t){aj&&typeof aj==\"object\"&&typeof lj<\"u\"?lj.exports=t():typeof define==\"function\"&&define.amd?define([],t):typeof window<\"u\"?window.isWindows=t():typeof global<\"u\"?global.isWindows=t():typeof self<\"u\"?self.isWindows=t():this.isWindows=t()})(function(){\"use strict\";return function(){return process&&(process.platform===\"win32\"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var a1e=_((KXt,o1e)=>{\"use strict\";cj.ifExists=ZIt;var YC=ve(\"util\"),sc=ve(\"path\"),i1e=n1e(),JIt=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,zIt={createPwshFile:!0,createCmdFile:i1e(),fs:ve(\"fs\")},XIt=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function s1e(t){let e={...zIt,...t},r=e.fs;return e.fs_={chmod:r.chmod?YC.promisify(r.chmod):async()=>{},mkdir:YC.promisify(r.mkdir),readFile:YC.promisify(r.readFile),stat:YC.promisify(r.stat),unlink:YC.promisify(r.unlink),writeFile:YC.promisify(r.writeFile)},e}async function cj(t,e,r){let o=s1e(r);await o.fs_.stat(t),await e1t(t,e,o)}function ZIt(t,e,r){return cj(t,e,r).catch(()=>{})}function $It(t,e){return e.fs_.unlink(t).catch(()=>{})}async function e1t(t,e,r){let o=await s1t(t,r);return await t1t(e,r),r1t(t,e,o,r)}function t1t(t,e){return e.fs_.mkdir(sc.dirname(t),{recursive:!0})}function r1t(t,e,r,o){let a=s1e(o),n=[{generator:l1t,extension:\"\"}];return a.createCmdFile&&n.push({generator:a1t,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:c1t,extension:\".ps1\"}),Promise.all(n.map(u=>o1t(t,e+u.extension,r,u.generator,a)))}function n1t(t,e){return $It(t,e)}function i1t(t,e){return u1t(t,e)}async function s1t(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(JIt);if(!a){let n=sc.extname(t).toLowerCase();return{program:XIt.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function o1t(t,e,r,o,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",u=[r.additionalArgs,n].filter(A=>A).join(\" \");return a=Object.assign({},a,{prog:r.program,args:u}),await n1t(e,a),await a.fs_.writeFile(e,o(t,e,a),\"utf8\"),i1t(e,a)}function a1t(t,e,r){let a=sc.relative(sc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=sc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,u,A=r.prog,p=r.args||\"\",h=uj(r.nodePath).win32;A?(u=`\"%~dp0\\\\${A}.exe\"`,a=n):(A=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",I=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return u?I+=`@IF EXIST ${u} (\\r\n  ${u} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${A} ${p} ${a} ${E}%*\\r\n)\\r\n`:I+=`@${A} ${p} ${a} ${E}%*\\r\n`,I}function l1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;o=o.split(\"\\\\\").join(\"/\");let u=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,A=r.args||\"\",p=uj(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,o=u):(a=u,A=\"\",o=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,I=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${I}if [ -x ${n} ]; then\n  exec ${n} ${A} ${o} ${h}\"$@\"\nelse\n  exec ${a} ${A} ${o} ${h}\"$@\"\nfi\n`:E+=`${I}${a} ${A} ${o} ${h}\"$@\"\nexit $?\n`,E}function c1t(t,e,r){let o=sc.relative(sc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,u;o=o.split(\"\\\\\").join(\"/\");let A=sc.isAbsolute(o)?`\"${o}\"`:`\"$basedir/${o}\"`,p=r.args||\"\",h=uj(r.nodePath),E=h.win32,I=h.posix;n?(u=`\"$basedir/${r.prog}$exe\"`,o=A):(n=A,p=\"\",o=\"\");let v=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",x=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(x+=` else {\n  $env:NODE_PATH=\"${I}\"\n}`),u?x+=`\n$ret=0\nif (Test-Path ${u}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${u} ${p} ${o} ${v}$args\n  } else {\n    & ${u} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${o} ${v}$args\n  } else {\n    & ${n} ${p} ${o} ${v}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:x+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${o} ${v}$args\n} else {\n  & ${n} ${p} ${o} ${v}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,x}function u1t(t,e){return e.fs_.chmod(t,493)}function uj(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(sc.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split(\"/\").join(\"\\\\\"),n=i1e()?e[o].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}o1e.exports=cj});var vj=_((h$t,b1e)=>{b1e.exports=ve(\"stream\")});var F1e=_((g$t,Q1e)=>{\"use strict\";function x1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function O1t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?x1e(Object(r),!0).forEach(function(o){M1t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):x1e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function M1t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function U1t(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function k1e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function _1t(t,e,r){return e&&k1e(t.prototype,e),r&&k1e(t,r),t}var H1t=ve(\"buffer\"),xQ=H1t.Buffer,q1t=ve(\"util\"),Dj=q1t.inspect,j1t=Dj&&Dj.custom||\"inspect\";function G1t(t,e,r){xQ.prototype.copy.call(t,e,r)}Q1e.exports=function(){function t(){U1t(this,t),this.head=null,this.tail=null,this.length=0}return _1t(t,[{key:\"push\",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var o=this.head,a=\"\"+o.data;o=o.next;)a+=r+o.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return xQ.alloc(0);for(var o=xQ.allocUnsafe(r>>>0),a=this.head,n=0;a;)G1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:\"consume\",value:function(r,o){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=o?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var o=xQ.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:j1t,value:function(r,o){return Dj(this,O1t({},o,{depth:0,customInspect:!1}))}}]),t}()});var Pj=_((d$t,T1e)=>{\"use strict\";function Y1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Sj,this,t)):process.nextTick(Sj,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(kQ,r):(r._writableState.errorEmitted=!0,process.nextTick(R1e,r,n)):process.nextTick(R1e,r,n):e?(process.nextTick(kQ,r),e(n)):process.nextTick(kQ,r)}),this)}function R1e(t,e){Sj(t,e),kQ(t)}function kQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function W1t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Sj(t,e){t.emit(\"error\",e)}function K1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit(\"error\",e)}T1e.exports={destroy:Y1t,undestroy:W1t,errorOrDestroy:K1t}});var Q0=_((m$t,O1e)=>{\"use strict\";var L1e={};function ac(t,e,r){r||(r=Error);function o(n,u,A){return typeof e==\"string\"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,L1e[t]=a}function N1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(\", \")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function V1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function J1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function z1t(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}ac(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);ac(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let o;typeof e==\"string\"&&V1t(e,\"not \")?(o=\"must not be\",e=e.replace(/^not /,\"\")):o=\"must be\";let a;if(J1t(t,\" argument\"))a=`The ${t} ${o} ${N1e(e,\"type\")}`;else{let n=z1t(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${o} ${N1e(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);ac(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");ac(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});ac(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");ac(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});ac(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");ac(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");ac(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");ac(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);ac(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);ac(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");O1e.exports.codes=L1e});var bj=_((y$t,M1e)=>{\"use strict\";var X1t=Q0().codes.ERR_INVALID_OPT_VALUE;function Z1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function $1t(t,e,r,o){var a=Z1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:\"highWaterMark\";throw new X1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}M1e.exports={getHighWaterMark:$1t}});var U1e=_((E$t,xj)=>{typeof Object.create==\"function\"?xj.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:xj.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var F0=_((C$t,Qj)=>{try{if(kj=ve(\"util\"),typeof kj.inherits!=\"function\")throw\"\";Qj.exports=kj.inherits}catch{Qj.exports=U1e()}var kj});var H1e=_((w$t,_1e)=>{_1e.exports=ve(\"util\").deprecate});var Tj=_((I$t,K1e)=>{\"use strict\";K1e.exports=Ri;function j1e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){S2t(e,t)}}var zC;Ri.WritableState=mv;var e2t={deprecate:H1e()},G1e=vj(),FQ=ve(\"buffer\").Buffer,t2t=global.Uint8Array||function(){};function r2t(t){return FQ.from(t)}function n2t(t){return FQ.isBuffer(t)||t instanceof t2t}var Rj=Pj(),i2t=bj(),s2t=i2t.getHighWaterMark,R0=Q0().codes,o2t=R0.ERR_INVALID_ARG_TYPE,a2t=R0.ERR_METHOD_NOT_IMPLEMENTED,l2t=R0.ERR_MULTIPLE_CALLBACK,c2t=R0.ERR_STREAM_CANNOT_PIPE,u2t=R0.ERR_STREAM_DESTROYED,A2t=R0.ERR_STREAM_NULL_VALUES,f2t=R0.ERR_STREAM_WRITE_AFTER_END,p2t=R0.ERR_UNKNOWN_ENCODING,XC=Rj.errorOrDestroy;F0()(Ri,G1e);function h2t(){}function mv(t,e,r){zC=zC||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof zC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=s2t(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){w2t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new j1e(this)}mv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(mv.prototype,\"buffer\",{get:e2t.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var QQ;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(QQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ri,Symbol.hasInstance,{value:function(e){return QQ.call(this,e)?!0:this!==Ri?!1:e&&e._writableState instanceof mv}})):QQ=function(e){return e instanceof this};function Ri(t){zC=zC||Cm();var e=this instanceof zC;if(!e&&!QQ.call(Ri,this))return new Ri(t);this._writableState=new mv(t,this,e),this.writable=!0,t&&(typeof t.write==\"function\"&&(this._write=t.write),typeof t.writev==\"function\"&&(this._writev=t.writev),typeof t.destroy==\"function\"&&(this._destroy=t.destroy),typeof t.final==\"function\"&&(this._final=t.final)),G1e.call(this)}Ri.prototype.pipe=function(){XC(this,new c2t)};function g2t(t,e){var r=new f2t;XC(t,r),process.nextTick(e,r)}function d2t(t,e,r,o){var a;return r===null?a=new A2t:typeof r!=\"string\"&&!e.objectMode&&(a=new o2t(\"chunk\",[\"string\",\"Buffer\"],r)),a?(XC(t,a),process.nextTick(o,a),!1):!0}Ri.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&n2t(t);return n&&!FQ.isBuffer(t)&&(t=r2t(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=o.defaultEncoding),typeof r!=\"function\"&&(r=h2t),o.ending?g2t(this,r):(n||d2t(this,o,t,r))&&(o.pendingcb++,a=y2t(this,o,n,t,e,r)),a};Ri.prototype.cork=function(){this._writableState.corked++};Ri.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Y1e(this,t))};Ri.prototype.setDefaultEncoding=function(e){if(typeof e==\"string\"&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new p2t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Ri.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function m2t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=FQ.from(e,r)),e}Object.defineProperty(Ri.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function y2t(t,e,r,o,a,n){if(!r){var u=m2t(e,o,a);o!==u&&(r=!0,a=\"buffer\",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Fj(t,e,!1,A,o,a,n);return p}function Fj(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new u2t(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function E2t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(dv,t,e),t._writableState.errorEmitted=!0,XC(t,o)):(a(o),t._writableState.errorEmitted=!0,XC(t,o),dv(t,e))}function C2t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function w2t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new l2t;if(C2t(r),e)E2t(t,r,o,e,a);else{var n=W1e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&Y1e(t,r),o?process.nextTick(q1e,t,r,n,a):q1e(t,r,n,a)}}function q1e(t,e,r,o){r||I2t(t,e),e.pendingcb--,o(),dv(t,e)}function I2t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function Y1e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,Fj(t,e,!0,e.length,a,\"\",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new j1e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,I=e.objectMode?1:p.length;if(Fj(t,e,!1,I,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Ri.prototype._write=function(t,e,r){r(new a2t(\"_write()\"))};Ri.prototype._writev=null;Ri.prototype.end=function(t,e,r){var o=this._writableState;return typeof t==\"function\"?(r=t,t=null,e=null):typeof e==\"function\"&&(r=e,e=null),t!=null&&this.write(t,e),o.corked&&(o.corked=1,this.uncork()),o.ending||D2t(this,o,r),this};Object.defineProperty(Ri.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function W1e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function B2t(t,e){t._final(function(r){e.pendingcb--,r&&XC(t,r),e.prefinished=!0,t.emit(\"prefinish\"),dv(t,e)})}function v2t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(B2t,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function dv(t,e){var r=W1e(e);if(r&&(v2t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function D2t(t,e,r){e.ending=!0,dv(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function S2t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Ri.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Ri.prototype.destroy=Rj.destroy;Ri.prototype._undestroy=Rj.undestroy;Ri.prototype._destroy=function(t,e){e(t)}});var Cm=_((B$t,J1e)=>{\"use strict\";var P2t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};J1e.exports=EA;var V1e=Oj(),Lj=Tj();F0()(EA,V1e);for(Nj=P2t(Lj.prototype),RQ=0;RQ<Nj.length;RQ++)TQ=Nj[RQ],EA.prototype[TQ]||(EA.prototype[TQ]=Lj.prototype[TQ]);var Nj,TQ,RQ;function EA(t){if(!(this instanceof EA))return new EA(t);V1e.call(this,t),Lj.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once(\"end\",b2t)))}Object.defineProperty(EA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(EA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(EA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function b2t(){this._writableState.ended||process.nextTick(x2t,this)}function x2t(t){t.end()}Object.defineProperty(EA.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var Z1e=_((Mj,X1e)=>{var NQ=ve(\"buffer\"),ip=NQ.Buffer;function z1e(t,e){for(var r in t)e[r]=t[r]}ip.from&&ip.alloc&&ip.allocUnsafe&&ip.allocUnsafeSlow?X1e.exports=NQ:(z1e(NQ,Mj),Mj.Buffer=ZC);function ZC(t,e,r){return ip(t,e,r)}z1e(ip,ZC);ZC.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return ip(t,e,r)};ZC.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var o=ip(t);return e!==void 0?typeof r==\"string\"?o.fill(e,r):o.fill(e):o.fill(0),o};ZC.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return ip(t)};ZC.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return NQ.SlowBuffer(t)}});var Hj=_(e2e=>{\"use strict\";var _j=Z1e().Buffer,$1e=_j.isEncoding||function(t){switch(t=\"\"+t,t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function k2t(t){if(!t)return\"utf8\";for(var e;;)switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase(),e=!0}}function Q2t(t){var e=k2t(t);if(typeof e!=\"string\"&&(_j.isEncoding===$1e||!$1e(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}e2e.StringDecoder=yv;function yv(t){this.encoding=Q2t(t);var e;switch(this.encoding){case\"utf16le\":this.text=O2t,this.end=M2t,e=4;break;case\"utf8\":this.fillLast=T2t,e=4;break;case\"base64\":this.text=U2t,this.end=_2t,e=3;break;default:this.write=H2t,this.end=q2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=_j.allocUnsafe(e)}yv.prototype.write=function(t){if(t.length===0)return\"\";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||\"\"};yv.prototype.end=L2t;yv.prototype.text=N2t;yv.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function Uj(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function F2t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=Uj(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function R2t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,\"\\uFFFD\";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,\"\\uFFFD\";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,\"\\uFFFD\"}}function T2t(t){var e=this.lastTotal-this.lastNeed,r=R2t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function N2t(t,e){var r=F2t(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString(\"utf8\",e,o)}function L2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function O2t(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function M2t(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function U2t(t,e){var r=(t.length-e)%3;return r===0?t.toString(\"base64\",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString(\"base64\",e,t.length-r))}function _2t(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function H2t(t){return t.toString(this.encoding)}function q2t(t){return t&&t.length?this.write(t):\"\"}});var LQ=_((D$t,n2e)=>{\"use strict\";var t2e=Q0().codes.ERR_STREAM_PREMATURE_CLOSE;function j2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function G2t(){}function Y2t(t){return t.setHeader&&typeof t.abort==\"function\"}function r2e(t,e,r){if(typeof e==\"function\")return r2e(t,null,e);e||(e={}),r=j2t(r||G2t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},E=function(C){r.call(t,C)},I=function(){var C;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(C=new t2e),r.call(t,C);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(C=new t2e),r.call(t,C)},v=function(){t.req.on(\"finish\",A)};return Y2t(t)?(t.on(\"complete\",A),t.on(\"abort\",I),t.req?v():t.on(\"request\",v)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",A),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",I),function(){t.removeListener(\"complete\",A),t.removeListener(\"abort\",I),t.removeListener(\"request\",v),t.req&&t.req.removeListener(\"finish\",A),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",A),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",I)}}n2e.exports=r2e});var s2e=_((S$t,i2e)=>{\"use strict\";var OQ;function T0(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var W2t=LQ(),N0=Symbol(\"lastResolve\"),wm=Symbol(\"lastReject\"),Ev=Symbol(\"error\"),MQ=Symbol(\"ended\"),Im=Symbol(\"lastPromise\"),qj=Symbol(\"handlePromise\"),Bm=Symbol(\"stream\");function L0(t,e){return{value:t,done:e}}function K2t(t){var e=t[N0];if(e!==null){var r=t[Bm].read();r!==null&&(t[Im]=null,t[N0]=null,t[wm]=null,e(L0(r,!1)))}}function V2t(t){process.nextTick(K2t,t)}function J2t(t,e){return function(r,o){t.then(function(){if(e[MQ]){r(L0(void 0,!0));return}e[qj](r,o)},o)}}var z2t=Object.getPrototypeOf(function(){}),X2t=Object.setPrototypeOf((OQ={get stream(){return this[Bm]},next:function(){var e=this,r=this[Ev];if(r!==null)return Promise.reject(r);if(this[MQ])return Promise.resolve(L0(void 0,!0));if(this[Bm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[Ev]?A(e[Ev]):u(L0(void 0,!0))})});var o=this[Im],a;if(o)a=new Promise(J2t(o,this));else{var n=this[Bm].read();if(n!==null)return Promise.resolve(L0(n,!1));a=new Promise(this[qj])}return this[Im]=a,a}},T0(OQ,Symbol.asyncIterator,function(){return this}),T0(OQ,\"return\",function(){var e=this;return new Promise(function(r,o){e[Bm].destroy(null,function(a){if(a){o(a);return}r(L0(void 0,!0))})})}),OQ),z2t),Z2t=function(e){var r,o=Object.create(X2t,(r={},T0(r,Bm,{value:e,writable:!0}),T0(r,N0,{value:null,writable:!0}),T0(r,wm,{value:null,writable:!0}),T0(r,Ev,{value:null,writable:!0}),T0(r,MQ,{value:e._readableState.endEmitted,writable:!0}),T0(r,qj,{value:function(n,u){var A=o[Bm].read();A?(o[Im]=null,o[N0]=null,o[wm]=null,n(L0(A,!1))):(o[N0]=n,o[wm]=u)},writable:!0}),r));return o[Im]=null,W2t(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=o[wm];n!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,n(a)),o[Ev]=a;return}var u=o[N0];u!==null&&(o[Im]=null,o[N0]=null,o[wm]=null,u(L0(void 0,!0))),o[MQ]=!0}),e.on(\"readable\",V2t.bind(null,o)),o};i2e.exports=Z2t});var c2e=_((P$t,l2e)=>{\"use strict\";function o2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function $2t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){o2e(n,o,a,u,A,\"next\",p)}function A(p){o2e(n,o,a,u,A,\"throw\",p)}u(void 0)})}}function a2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function eBt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?a2e(Object(r),!0).forEach(function(o){tBt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):a2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function tBt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var rBt=Q0().codes.ERR_INVALID_ARG_TYPE;function nBt(t,e,r){var o;if(e&&typeof e.next==\"function\")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new rBt(\"iterable\",[\"Iterable\"],e);var a=new t(eBt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=$2t(function*(){try{var p=yield o.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?u():n=!1}catch(I){a.destroy(I)}}),A.apply(this,arguments)}return a}l2e.exports=nBt});var Oj=_((x$t,E2e)=>{\"use strict\";E2e.exports=mn;var $C;mn.ReadableState=p2e;var b$t=ve(\"events\").EventEmitter,f2e=function(e,r){return e.listeners(r).length},wv=vj(),UQ=ve(\"buffer\").Buffer,iBt=global.Uint8Array||function(){};function sBt(t){return UQ.from(t)}function oBt(t){return UQ.isBuffer(t)||t instanceof iBt}var jj=ve(\"util\"),en;jj&&jj.debuglog?en=jj.debuglog(\"stream\"):en=function(){};var aBt=F1e(),zj=Pj(),lBt=bj(),cBt=lBt.getHighWaterMark,_Q=Q0().codes,uBt=_Q.ERR_INVALID_ARG_TYPE,ABt=_Q.ERR_STREAM_PUSH_AFTER_EOF,fBt=_Q.ERR_METHOD_NOT_IMPLEMENTED,pBt=_Q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,ew,Gj,Yj;F0()(mn,wv);var Cv=zj.errorOrDestroy,Wj=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function hBt(t,e,r){if(typeof t.prependListener==\"function\")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function p2e(t,e,r){$C=$C||Cm(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof $C),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=cBt(this,t,\"readableHighWaterMark\",r),this.buffer=new aBt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(ew||(ew=Hj().StringDecoder),this.decoder=new ew(t.encoding),this.encoding=t.encoding)}function mn(t){if($C=$C||Cm(),!(this instanceof mn))return new mn(t);var e=this instanceof $C;this._readableState=new p2e(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),wv.call(this)}Object.defineProperty(mn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});mn.prototype.destroy=zj.destroy;mn.prototype._undestroy=zj.undestroy;mn.prototype._destroy=function(t,e){e(t)};mn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=UQ.from(t,e),e=\"\"),o=!0),h2e(this,t,e,!1,o)};mn.prototype.unshift=function(t){return h2e(this,t,null,!0,!1)};function h2e(t,e,r,o,a){en(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,mBt(t,n);else{var u;if(a||(u=gBt(n,e)),u)Cv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==UQ.prototype&&(e=sBt(e)),o)n.endEmitted?Cv(t,new pBt):Kj(t,n,e,!0);else if(n.ended)Cv(t,new ABt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?Kj(t,n,e,!1):Jj(t,n)):Kj(t,n,e,!1)}else o||(n.reading=!1,Jj(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function Kj(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&HQ(t)),Jj(t,e)}function gBt(t,e){var r;return!oBt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new uBt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}mn.prototype.isPaused=function(){return this._readableState.flowing===!1};mn.prototype.setEncoding=function(t){ew||(ew=Hj().StringDecoder);var e=new ew(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o=\"\";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==\"\"&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var u2e=1073741824;function dBt(t){return t>=u2e?t=u2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function A2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=dBt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}mn.prototype.read=function(t){en(\"read\",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return en(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?Vj(this):HQ(this),null;if(t=A2e(t,e),t===0&&e.ended)return e.length===0&&Vj(this),null;var o=e.needReadable;en(\"need readable\",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,en(\"length less than watermark\",o)),e.ended||e.reading?(o=!1,en(\"reading or ended\",o)):o&&(en(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=A2e(r,e)));var a;return t>0?a=m2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&Vj(this)),a!==null&&this.emit(\"data\",a),a};function mBt(t,e){if(en(\"onEofChunk\"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?HQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,g2e(t)))}}function HQ(t){var e=t._readableState;en(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(en(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(g2e,t))}function g2e(t){var e=t._readableState;en(\"emitReadable_\",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit(\"readable\"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,Xj(t)}function Jj(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(yBt,t,e))}function yBt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(en(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}mn.prototype._read=function(t){Cv(this,new fBt(\"_read()\"))};mn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,en(\"pipe count=%d opts=%j\",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:R;o.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",u);function u(L,U){en(\"onunpipe\"),L===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function A(){en(\"onend\"),t.end()}var p=EBt(r);t.on(\"drain\",p);var h=!1;function E(){en(\"cleanup\"),t.removeListener(\"close\",x),t.removeListener(\"finish\",C),t.removeListener(\"drain\",p),t.removeListener(\"error\",v),t.removeListener(\"unpipe\",u),r.removeListener(\"end\",A),r.removeListener(\"end\",R),r.removeListener(\"data\",I),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",I);function I(L){en(\"ondata\");var U=t.write(L);en(\"dest.write\",U),U===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&y2e(o.pipes,t)!==-1)&&!h&&(en(\"false write response, pause\",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){en(\"onerror\",L),R(),t.removeListener(\"error\",v),f2e(t,\"error\")===0&&Cv(t,L)}hBt(t,\"error\",v);function x(){t.removeListener(\"finish\",C),R()}t.once(\"close\",x);function C(){en(\"onfinish\"),t.removeListener(\"close\",x),R()}t.once(\"finish\",C);function R(){en(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),o.flowing||(en(\"pipe resume\"),r.resume()),t};function EBt(t){return function(){var r=t._readableState;en(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&f2e(t,\"data\")&&(r.flowing=!0,Xj(t))}}mn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var u=y2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};mn.prototype.on=function(t,e){var r=wv.prototype.on.call(this,t,e),o=this._readableState;return t===\"data\"?(o.readableListening=this.listenerCount(\"readable\")>0,o.flowing!==!1&&this.resume()):t===\"readable\"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,en(\"on readable\",o.length,o.reading),o.length?HQ(this):o.reading||process.nextTick(CBt,this)),r};mn.prototype.addListener=mn.prototype.on;mn.prototype.removeListener=function(t,e){var r=wv.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(d2e,this),r};mn.prototype.removeAllListeners=function(t){var e=wv.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(d2e,this),e};function d2e(t){var e=t._readableState;e.readableListening=t.listenerCount(\"readable\")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount(\"data\")>0&&t.resume()}function CBt(t){en(\"readable nexttick read 0\"),t.read(0)}mn.prototype.resume=function(){var t=this._readableState;return t.flowing||(en(\"resume\"),t.flowing=!t.readableListening,wBt(this,t)),t.paused=!1,this};function wBt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(IBt,t,e))}function IBt(t,e){en(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),Xj(t),e.flowing&&!e.reading&&t.read(0)}mn.prototype.pause=function(){return en(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(en(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function Xj(t){var e=t._readableState;for(en(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}mn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on(\"end\",function(){if(en(\"wrapped end\"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on(\"data\",function(u){if(en(\"wrapped data\"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Wj.length;n++)t.on(Wj[n],this.emit.bind(this,Wj[n]));return this._read=function(u){en(\"wrapped _read\",u),o&&(o=!1,t.resume())},this};typeof Symbol==\"function\"&&(mn.prototype[Symbol.asyncIterator]=function(){return Gj===void 0&&(Gj=s2e()),Gj(this)});Object.defineProperty(mn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(mn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(mn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});mn._fromList=m2e;Object.defineProperty(mn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function m2e(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(\"\"):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function Vj(t){var e=t._readableState;en(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(BBt,e,t))}function BBt(t,e){if(en(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol==\"function\"&&(mn.from=function(t,e){return Yj===void 0&&(Yj=c2e()),Yj(mn,t,e)});function y2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var Zj=_((k$t,w2e)=>{\"use strict\";w2e.exports=sp;var qQ=Q0().codes,vBt=qQ.ERR_METHOD_NOT_IMPLEMENTED,DBt=qQ.ERR_MULTIPLE_CALLBACK,SBt=qQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,PBt=qQ.ERR_TRANSFORM_WITH_LENGTH_0,jQ=Cm();F0()(sp,jQ);function bBt(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit(\"error\",new DBt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function sp(t){if(!(this instanceof sp))return new sp(t);jQ.call(this,t),this._transformState={afterTransform:bBt.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform==\"function\"&&(this._transform=t.transform),typeof t.flush==\"function\"&&(this._flush=t.flush)),this.on(\"prefinish\",xBt)}function xBt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){C2e(t,e,r)}):C2e(this,null,null)}sp.prototype.push=function(t,e){return this._transformState.needTransform=!1,jQ.prototype.push.call(this,t,e)};sp.prototype._transform=function(t,e,r){r(new vBt(\"_transform()\"))};sp.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};sp.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};sp.prototype._destroy=function(t,e){jQ.prototype._destroy.call(this,t,function(r){e(r)})};function C2e(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new PBt;if(t._transformState.transforming)throw new SBt;return t.push(null)}});var v2e=_((Q$t,B2e)=>{\"use strict\";B2e.exports=Iv;var I2e=Zj();F0()(Iv,I2e);function Iv(t){if(!(this instanceof Iv))return new Iv(t);I2e.call(this,t)}Iv.prototype._transform=function(t,e,r){r(null,t)}});var x2e=_((F$t,b2e)=>{\"use strict\";var $j;function kBt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var P2e=Q0().codes,QBt=P2e.ERR_MISSING_ARGS,FBt=P2e.ERR_STREAM_DESTROYED;function D2e(t){if(t)throw t}function RBt(t){return t.setHeader&&typeof t.abort==\"function\"}function TBt(t,e,r,o){o=kBt(o);var a=!1;t.on(\"close\",function(){a=!0}),$j===void 0&&($j=LQ()),$j(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,RBt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();o(u||new FBt(\"pipe\"))}}}function S2e(t){t()}function NBt(t,e){return t.pipe(e)}function LBt(t){return!t.length||typeof t[t.length-1]!=\"function\"?D2e:t.pop()}function OBt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=LBt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new QBt(\"streams\");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return TBt(u,p,h,function(E){a||(a=E),E&&n.forEach(S2e),!p&&(n.forEach(S2e),o(a))})});return e.reduce(NBt)}b2e.exports=OBt});var tw=_((lc,vv)=>{var Bv=ve(\"stream\");process.env.READABLE_STREAM===\"disable\"&&Bv?(vv.exports=Bv.Readable,Object.assign(vv.exports,Bv),vv.exports.Stream=Bv):(lc=vv.exports=Oj(),lc.Stream=Bv||lc,lc.Readable=lc,lc.Writable=Tj(),lc.Duplex=Cm(),lc.Transform=Zj(),lc.PassThrough=v2e(),lc.finished=LQ(),lc.pipeline=x2e())});var F2e=_((R$t,Q2e)=>{\"use strict\";var{Buffer:lu}=ve(\"buffer\"),k2e=Symbol.for(\"BufferList\");function ni(t){if(!(this instanceof ni))return new ni(t);ni._init.call(this,t)}ni._init=function(e){Object.defineProperty(this,k2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};ni.prototype._new=function(e){return new ni(e)};ni.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};ni.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};ni.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};ni.prototype.slice=function(e,r){return typeof e==\"number\"&&e<0&&(e+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};ni.prototype.copy=function(e,r,o,a){if((typeof o!=\"number\"||o<0)&&(o=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||lu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,E=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:lu.concat(this._bufs,this.length);for(let I=0;I<this._bufs.length;I++)this._bufs[I].copy(e,h),h+=this._bufs[I].length;return e}if(p<=this._bufs[u[0]].length-E)return n?this._bufs[u[0]].copy(e,r,E,E+p):this._bufs[u[0]].slice(E,E+p);n||(e=lu.allocUnsafe(A));for(let I=u[0];I<this._bufs.length;I++){let v=this._bufs[I].length-E;if(p>v)this._bufs[I].copy(e,h,E),h+=v;else{this._bufs[I].copy(e,h,E,E+p),h+=v;break}p-=v,E&&(E=0)}return e.length>h?e.slice(0,h):e};ni.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!=\"number\"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};ni.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};ni.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};ni.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};ni.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(lu.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e==\"number\"&&(e=e.toString()),this._appendBuffer(lu.from(e));return this};ni.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};ni.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e==\"string\"&&(r=e,e=void 0),typeof t==\"function\"||Array.isArray(t))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t==\"number\"?t=lu.from([t]):typeof t==\"string\"?t=lu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=lu.from(t.buffer,t.byteOffset,t.byteLength):lu.isBuffer(t)||(t=lu.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};ni.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?ni.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:ni.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();ni.prototype._isBufferList=function(e){return e instanceof ni||ni.isBufferList(e)};ni.isBufferList=function(e){return e!=null&&e[k2e]};Q2e.exports=ni});var R2e=_((T$t,GQ)=>{\"use strict\";var eG=tw().Duplex,MBt=F0(),Dv=F2e();function Uo(t){if(!(this instanceof Uo))return new Uo(t);if(typeof t==\"function\"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on(\"pipe\",function(o){o.on(\"error\",e)}),this.on(\"unpipe\",function(o){o.removeListener(\"error\",e)}),t=null}Dv._init.call(this,t),eG.call(this)}MBt(Uo,eG);Object.assign(Uo.prototype,Dv.prototype);Uo.prototype._new=function(e){return new Uo(e)};Uo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o==\"function\"&&o()};Uo.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Uo.prototype.end=function(e){eG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Uo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Uo.prototype._isBufferList=function(e){return e instanceof Uo||e instanceof Dv||Uo.isBufferList(e)};Uo.isBufferList=Dv.isBufferList;GQ.exports=Uo;GQ.exports.BufferListStream=Uo;GQ.exports.BufferList=Dv});var nG=_(nw=>{var UBt=Buffer.alloc,_Bt=\"0000000000000000000\",HBt=\"7777777777777777777\",T2e=\"0\".charCodeAt(0),N2e=Buffer.from(\"ustar\\0\",\"binary\"),qBt=Buffer.from(\"00\",\"binary\"),jBt=Buffer.from(\"ustar \",\"binary\"),GBt=Buffer.from(\" \\0\",\"binary\"),YBt=parseInt(\"7777\",8),Sv=257,rG=263,WBt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},KBt=function(t){switch(t){case 0:return\"file\";case 1:return\"link\";case 2:return\"symlink\";case 3:return\"character-device\";case 4:return\"block-device\";case 5:return\"directory\";case 6:return\"fifo\";case 7:return\"contiguous-file\";case 72:return\"pax-header\";case 55:return\"pax-global-header\";case 27:return\"gnu-long-link-path\";case 28:case 30:return\"gnu-long-path\"}return null},VBt=function(t){switch(t){case\"file\":return 0;case\"link\":return 1;case\"symlink\":return 2;case\"character-device\":return 3;case\"block-device\":return 4;case\"directory\":return 5;case\"fifo\":return 6;case\"contiguous-file\":return 7;case\"pax-header\":return 72}return 0},L2e=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},O2e=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},O0=function(t,e){return t=t.toString(8),t.length>e?HBt.slice(0,e)+\" \":_Bt.slice(0,e-t.length)+t+\" \"};function JBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var M0=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return JBt(t);for(;e<t.length&&t[e]===32;)e++;for(var o=WBt(L2e(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},rw=function(t,e,r,o){return t.slice(e,L2e(t,0,e,e+r)).toString(o)},tG=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};nw.decodeLongPath=function(t,e){return rw(t,0,t.length,e)};nw.encodePax=function(t){var e=\"\";t.name&&(e+=tG(\" path=\"+t.name+`\n`)),t.linkname&&(e+=tG(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var o in r)e+=tG(\" \"+o+\"=\"+r[o]+`\n`);return Buffer.from(e)};nw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};nw.encode=function(t){var e=UBt(512),r=t.name,o=\"\";if(t.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;o+=o?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(O0(t.mode&YBt,6),100),e.write(O0(t.uid,6),108),e.write(O0(t.gid,6),116),e.write(O0(t.size,11),124),e.write(O0(t.mtime.getTime()/1e3|0,11),136),e[156]=T2e+VBt(t.type),t.linkname&&e.write(t.linkname,157),N2e.copy(e,Sv),qBt.copy(e,rG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(O0(t.devmajor||0,6),329),e.write(O0(t.devminor||0,6),337),o&&e.write(o,345),e.write(O0(O2e(e),6),148),e)};nw.decode=function(t,e,r){var o=t[156]===0?0:t[156]-T2e,a=rw(t,0,100,e),n=M0(t,100,8),u=M0(t,108,8),A=M0(t,116,8),p=M0(t,124,12),h=M0(t,136,12),E=KBt(o),I=t[157]===0?null:rw(t,157,100,e),v=rw(t,265,32),x=rw(t,297,32),C=M0(t,329,8),R=M0(t,337,8),L=O2e(t);if(L===8*32)return null;if(L!==M0(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(N2e.compare(t,Sv,Sv+6)===0)t[345]&&(a=rw(t,345,155,e)+\"/\"+a);else if(!(jBt.compare(t,Sv,Sv+6)===0&&GBt.compare(t,rG,rG+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return o===0&&a&&a[a.length-1]===\"/\"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:E,linkname:I,uname:v,gname:x,devmajor:C,devminor:R}}});var G2e=_((L$t,j2e)=>{var U2e=ve(\"util\"),zBt=R2e(),Pv=nG(),_2e=tw().Writable,H2e=tw().PassThrough,q2e=function(){},M2e=function(t){return t&=511,t&&512-t},XBt=function(t,e){var r=new YQ(t,e);return r.end(),r},ZBt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},YQ=function(t,e){this._parent=t,this.offset=e,H2e.call(this,{autoDestroy:!1})};U2e.inherits(YQ,H2e);YQ.prototype.destroy=function(t){this._parent.destroy(t)};var op=function(t){if(!(this instanceof op))return new op(t);_2e.call(this,t),t=t||{},this._offset=0,this._buffer=zBt(),this._missing=0,this._partial=!1,this._onparse=q2e,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=M2e(e._header.size);v?e._parse(v,u):e._parse(512,I),e._locked||o()},u=function(){e._buffer.consume(M2e(e._header.size)),e._parse(512,I),o()},A=function(){var v=e._header.size;e._paxGlobal=Pv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=Pv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},E=function(){var v=e._header.size;this._gnuLongLinkPath=Pv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},I=function(){var v=e._offset,x;try{x=e._header=Pv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(C){e.emit(\"error\",C)}if(r.consume(512),!x){e._parse(512,I),o();return}if(x.type===\"gnu-long-path\"){e._parse(x.size,h),o();return}if(x.type===\"gnu-long-link-path\"){e._parse(x.size,E),o();return}if(x.type===\"pax-global-header\"){e._parse(x.size,A),o();return}if(x.type===\"pax-header\"){e._parse(x.size,p),o();return}if(e._gnuLongPath&&(x.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(x.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=x=ZBt(x,e._pax),e._pax=null),e._locked=!0,!x.size||x.type===\"directory\"){e._parse(512,I),e.emit(\"entry\",x,XBt(e,v),a);return}e._stream=new YQ(e,v),e.emit(\"entry\",x,e._stream,a),e._parse(x.size,n),o()};this._onheader=I,this._parse(512,I)};U2e.inherits(op,_2e);op.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};op.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};op.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=q2e,this._overflow?this._write(this._overflow,void 0,t):t()}};op.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};op.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};j2e.exports=op});var W2e=_((O$t,Y2e)=>{Y2e.exports=ve(\"fs\").constants||ve(\"constants\")});var X2e=_((M$t,z2e)=>{var iw=W2e(),K2e=LM(),KQ=F0(),$Bt=Buffer.alloc,V2e=tw().Readable,sw=tw().Writable,evt=ve(\"string_decoder\").StringDecoder,WQ=nG(),tvt=parseInt(\"755\",8),rvt=parseInt(\"644\",8),J2e=$Bt(1024),sG=function(){},iG=function(t,e){e&=511,e&&t.push(J2e.slice(0,512-e))};function nvt(t){switch(t&iw.S_IFMT){case iw.S_IFBLK:return\"block-device\";case iw.S_IFCHR:return\"character-device\";case iw.S_IFDIR:return\"directory\";case iw.S_IFIFO:return\"fifo\";case iw.S_IFLNK:return\"symlink\"}return\"file\"}var VQ=function(t){sw.call(this),this.written=0,this._to=t,this._destroyed=!1};KQ(VQ,sw);VQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};VQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var JQ=function(){sw.call(this),this.linkname=\"\",this._decoder=new evt(\"utf-8\"),this._destroyed=!1};KQ(JQ,sw);JQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};JQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var bv=function(){sw.call(this),this._destroyed=!1};KQ(bv,sw);bv.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};bv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var CA=function(t){if(!(this instanceof CA))return new CA(t);V2e.call(this,t),this._drain=sG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};KQ(CA,V2e);CA.prototype.entry=function(t,e,r){if(this._stream)throw new Error(\"already piping an entry\");if(!(this._finalized||this._destroyed)){typeof e==\"function\"&&(r=e,e=null),r||(r=sG);var o=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=nvt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?tvt:rvt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e==\"string\"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return iG(o,t.size),a?process.nextTick(r):this._drain=r,new bv}if(t.type===\"symlink\"&&!t.linkname){var n=new JQ;return K2e(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new bv;var u=new VQ(this);return this._stream=u,K2e(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error(\"size mismatch\"));iG(o,t.size),o._finalizing&&o.finalize(),r()}),u}};CA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(J2e),this.push(null))};CA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.destroy&&this._stream.destroy())};CA.prototype._encode=function(t){if(!t.pax){var e=WQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};CA.prototype._encodePax=function(t){var e=WQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:\"PaxHeader\",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:\"pax-header\",linkname:t.linkname&&\"PaxHeader\",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(WQ.encode(r)),this.push(e),iG(this,e.length),r.size=t.size,r.type=t.type,this.push(WQ.encode(r))};CA.prototype._read=function(t){var e=this._drain;this._drain=sG,e()};z2e.exports=CA});var Z2e=_(oG=>{oG.extract=G2e();oG.pack=X2e()});var uBe=_((ier,cBe)=>{\"use strict\";var vm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]==\"string\"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=aBe(o.filter(a=>a!=null&&typeof a==\"object\")),this.__isFiggyPudding=!0}get(e){return fG(this,e,!0)}get[Symbol.toStringTag](){return\"FiggyPudding\"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):yvt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new vm(this.__specs,this.__opts,aBe(this.__providers).concat(e)),lBe)}};try{let t=ve(\"util\");vm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+\" \"+t.inspect(this.toJSON(),r)}}catch{}function dvt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:\"EBADKEY\"})}function fG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))dvt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=oBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=oBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default==\"function\"?o.default(t):o.default:a}}function oBe(t,e){let r;return e.__isFiggyPudding?r=fG(e,t,!1):typeof e.get==\"function\"?r=e.get(t):r=e[t],r}var lBe={has(t,e){return e in t.__specs&&fG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e==\"symbol\"||e.slice(0,2)===\"__\"||e in vm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e==\"symbol\"||e.slice(0,2)===\"__\")return t[e]=r,!0;throw new Error(\"figgyPudding options cannot be modified. Use .concat() instead.\")},deleteProperty(){throw new Error(\"figgyPudding options cannot be deleted. Use .concat() and shadow them instead.\")}};cBe.exports=mvt;function mvt(t,e){function r(...o){return new Proxy(new vm(t,e,o),lBe)}return r}function aBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function yvt(t){return Object.keys(t).map(e=>[e,t[e]])}});var pBe=_((ser,BA)=>{\"use strict\";var kv=ve(\"crypto\"),Evt=uBe(),Cvt=ve(\"stream\").Transform,ABe=[\"sha256\",\"sha384\",\"sha512\"],wvt=/^[a-z0-9+/]+(?:=?=?)$/i,Ivt=/^([^-]+)-([^?]+)([?\\S*]*)$/,Bvt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)*$/,vvt=/^[\\x21-\\x7E]+$/,ia=Evt({algorithms:{default:[\"sha512\"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>Fvt},Promise:{default:()=>Promise},sep:{default:\" \"},single:{default:!1},size:{},strict:{default:!1}}),_0=class{get isHash(){return!0}constructor(e,r){r=ia(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?Bvt:Ivt);if(!a||o&&!ABe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split(\"?\"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}toString(e){if(e=ia(e),e.strict&&!(ABe.some(o=>o===this.algorithm)&&this.digest.match(wvt)&&(this.options||[]).every(o=>o.match(vvt))))return\"\";let r=this.options&&this.options.length?`?${this.options.join(\"?\")}`:\"\";return`${this.algorithm}-${this.digest}${r}`}},Dm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ia(e);let r=e.sep||\" \";return e.strict&&(r=r.replace(/\\S+/g,\" \")),Object.keys(this).map(o=>this[o].map(a=>_0.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ia(r);let o=typeof e==\"string\"?e:xv(e,r);return IA(`${this.toString(r)} ${o}`,r)}hexDigest(){return IA(this,{single:!0}).hexDigest()}match(e,r){r=ia(r);let o=IA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ia(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};BA.exports.parse=IA;function IA(t,e){if(e=ia(e),typeof t==\"string\")return pG(t,e);if(t.algorithm&&t.digest){let r=new Dm;return r[t.algorithm]=[t],pG(xv(r,e),e)}else return pG(xv(t,e),e)}function pG(t,e){return e.single?new _0(t,e):t.trim().split(/\\s+/).reduce((r,o)=>{let a=new _0(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Dm)}BA.exports.stringify=xv;function xv(t,e){return e=ia(e),t.algorithm&&t.digest?_0.prototype.toString.call(t,e):typeof t==\"string\"?xv(IA(t,e),e):Dm.prototype.toString.call(t,e)}BA.exports.fromHex=Dvt;function Dvt(t,e,r){r=ia(r);let o=r.options&&r.options.length?`?${r.options.join(\"?\")}`:\"\";return IA(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${o}`,r)}BA.exports.fromData=Svt;function Svt(t,e){e=ia(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join(\"?\")}`:\"\";return r.reduce((a,n)=>{let u=kv.createHash(n).update(t).digest(\"base64\"),A=new _0(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new Dm)}BA.exports.fromStream=Pvt;function Pvt(t,e){e=ia(e);let r=e.Promise||Promise,o=hG(e);return new r((a,n)=>{t.pipe(o),t.on(\"error\",n),o.on(\"error\",n);let u;o.on(\"integrity\",A=>{u=A}),o.on(\"end\",()=>a(u)),o.on(\"data\",()=>{})})}BA.exports.checkData=bvt;function bvt(t,e,r){if(r=ia(r),e=IA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let o=e.pickAlgorithm(r),a=kv.createHash(o).update(t).digest(\"base64\"),n=IA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size==\"number\"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw A.code=\"EBADSIZE\",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code=\"EINTEGRITY\",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}BA.exports.checkStream=xvt;function xvt(t,e,r){r=ia(r);let o=r.Promise||Promise,a=hG(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on(\"error\",u),a.on(\"error\",u);let A;a.on(\"verified\",p=>{A=p}),a.on(\"end\",()=>n(A)),a.on(\"data\",()=>{})})}BA.exports.integrityStream=hG;function hG(t){t=ia(t);let e=t.integrity&&IA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(kv.createHash),A=0,p=new Cvt({transform(h,E,I){A+=h.length,u.forEach(v=>v.update(h,E)),I(null,h,E)}}).on(\"end\",()=>{let h=t.options&&t.options.length?`?${t.options.join(\"?\")}`:\"\",E=IA(u.map((v,x)=>`${n[x]}-${v.digest(\"base64\")}${h}`).join(\" \"),t),I=r&&E.match(e,t);if(typeof t.size==\"number\"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}.\n  Wanted: ${t.size}\n  Found: ${A}`);v.code=\"EBADSIZE\",v.found=A,v.expected=t.size,v.sri=e,p.emit(\"error\",v)}else if(t.integrity&&!I){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${E}. (${A} bytes)`);v.code=\"EINTEGRITY\",v.found=E,v.expected=a,v.algorithm=o,v.sri=e,p.emit(\"error\",v)}else p.emit(\"size\",A),p.emit(\"integrity\",E),I&&p.emit(\"verified\",I)});return p}BA.exports.create=kvt;function kvt(t){t=ia(t);let e=t.algorithms,r=t.options.length?`?${t.options.join(\"?\")}`:\"\",o=e.map(kv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest(\"base64\"),h=new _0(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let E=h.algorithm;u[E]||(u[E]=[]),u[E].push(h)}return u},new Dm)}}}var Qvt=new Set(kv.getHashes()),fBe=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>Qvt.has(t));function Fvt(t,e){return fBe.indexOf(t.toLowerCase())>=fBe.indexOf(e.toLowerCase())?t:e}});var qBe=_((lir,HBe)=>{var FDt=lL();function RDt(t){return FDt(t)?void 0:t}HBe.exports=RDt});var GBe=_((cir,jBe)=>{var TDt=Hb(),NDt=x8(),LDt=R8(),ODt=jd(),MDt=dd(),UDt=qBe(),_Dt=v_(),HDt=b8(),qDt=1,jDt=2,GDt=4,YDt=_Dt(function(t,e){var r={};if(t==null)return r;var o=!1;e=TDt(e,function(n){return n=ODt(n,t),o||(o=n.length>1),n}),MDt(t,HDt(t),r),o&&(r=NDt(r,qDt|jDt|GDt,UDt));for(var a=e.length;a--;)LDt(r,e[a]);return r});jBe.exports=YDt});St();Ye();St();var JBe=ve(\"child_process\"),zBe=$e(td());qt();var AC=new Map([]);var a2={};Vt(a2,{BaseCommand:()=>ut,WorkspaceRequiredError:()=>rr,getCli:()=>$pe,getDynamicLibs:()=>Zpe,getPluginConfiguration:()=>pC,openWorkspace:()=>fC,pluginCommands:()=>AC,runExit:()=>nk});qt();var ut=class extends nt{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new it(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};Ye();St();qt();var rr=class extends it{constructor(e,r){let o=V.relative(e,r),a=V.join(e,Ot.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ye();St();nA();Nl();k1();qt();var RAt=$e(zn());Za();var Zpe=()=>new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",RAt],[\"typanion\",Vo]]);Ye();async function fC(t,e){let{project:r,workspace:o}=await Pt.find(t,e);if(!o)throw new rr(r.cwd,e);return o}Ye();St();nA();Nl();k1();qt();var eSt=$e(zn());Za();var $8={};Vt($8,{AddCommand:()=>kh,BinCommand:()=>Qh,CacheCleanCommand:()=>Fh,ClipanionCommand:()=>Kd,ConfigCommand:()=>Lh,ConfigGetCommand:()=>Rh,ConfigSetCommand:()=>Th,ConfigUnsetCommand:()=>Nh,DedupeCommand:()=>Oh,EntryCommand:()=>mC,ExecCommand:()=>Mh,ExplainCommand:()=>Hh,ExplainPeerRequirementsCommand:()=>Uh,HelpCommand:()=>Vd,InfoCommand:()=>qh,LinkCommand:()=>Gh,NodeCommand:()=>Yh,PluginCheckCommand:()=>Wh,PluginImportCommand:()=>Jh,PluginImportSourcesCommand:()=>zh,PluginListCommand:()=>Kh,PluginRemoveCommand:()=>Xh,PluginRuntimeCommand:()=>Zh,RebuildCommand:()=>$h,RemoveCommand:()=>e0,RunCommand:()=>t0,RunIndexCommand:()=>Xd,SetResolutionCommand:()=>r0,SetVersionCommand:()=>_h,SetVersionSourcesCommand:()=>Vh,UnlinkCommand:()=>n0,UpCommand:()=>Jf,VersionCommand:()=>Jd,WhyCommand:()=>i0,WorkspaceCommand:()=>a0,WorkspacesListCommand:()=>o0,YarnCommand:()=>jh,dedupeUtils:()=>pk,default:()=>Sgt,suggestUtils:()=>zc});var kde=$e(td());Ye();Ye();Ye();qt();var _0e=$e(f2());Za();var zc={};Vt(zc,{Modifier:()=>B8,Strategy:()=>uk,Target:()=>p2,WorkspaceModifier:()=>N0e,applyModifier:()=>$ft,extractDescriptorFromPath:()=>v8,extractRangeModifier:()=>L0e,fetchDescriptorFrom:()=>D8,findProjectDescriptors:()=>U0e,getModifier:()=>h2,getSuggestedDescriptors:()=>g2,makeWorkspaceDescriptor:()=>M0e,toWorkspaceModifier:()=>O0e});Ye();Ye();St();var I8=$e(zn()),Xft=\"workspace:\",p2=(o=>(o.REGULAR=\"dependencies\",o.DEVELOPMENT=\"devDependencies\",o.PEER=\"peerDependencies\",o))(p2||{}),B8=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"\",o))(B8||{}),N0e=(o=>(o.CARET=\"^\",o.TILDE=\"~\",o.EXACT=\"*\",o))(N0e||{}),uk=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(uk||{});function h2(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var Zft=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function L0e(t,{project:e}){let r=t.match(Zft);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function $ft(t,e){let{protocol:r,source:o,params:a,selector:n}=W.parseRange(t.range);return I8.default.valid(n)&&(n=`${e}${t.range}`),W.makeDescriptor(t,W.makeRange({protocol:r,source:o,params:a,selector:n}))}function O0e(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function M0e(t,e){return W.makeDescriptor(t.anchoredDescriptor,`${Xft}${O0e(e)}`)}async function U0e(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r===\"peerDependencies\"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function v8(t,{cwd:e,workspace:r}){return await ept(async o=>{V.isAbsolute(t)||(t=V.relative(r.cwd,V.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await D8(W.makeIdent(null,\"archive\"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let u=new Qi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},E=A.bindDescriptor(n,r.anchoredLocator,h),I=W.convertDescriptorToLocator(E),v=await p.fetch(I,h),x=await Ot.find(v.prefixPath,{baseFs:v.packageFs});if(!x.name)throw new Error(\"Target path doesn't have a name\");return W.makeDescriptor(x.name,t)})}async function g2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,E]=t.range!==\"unknown\"?n||kr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,\"latest\"]:[\"unknown\",t.range]:[\"unknown\",\"latest\"];if(h!==\"unknown\")return{suggestions:[{descriptor:t,name:`Use ${W.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let I=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],x=[],C=async R=>{try{await R()}catch(L){x.push(L)}};for(let R of A){if(v.length>=p)break;switch(R){case\"keep\":await C(async()=>{I&&v.push({descriptor:I,name:`Keep ${W.prettyDescriptor(e.configuration,I)}`,reason:\"(no changes)\"})});break;case\"reuse\":await C(async()=>{for(let{descriptor:L,locators:U}of(await U0e(t,{project:e,target:a})).values()){if(U.length===1&&U[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes(\"keep\"))continue;let J=`(originally used by ${W.prettyLocator(e.configuration,U[0])}`;J+=U.length>1?` and ${U.length-1} other${U.length>2?\"s\":\"\"})`:\")\",v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:J})}});break;case\"cache\":await C(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${W.prettyDescriptor(e.configuration,L)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await C(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let U=M0e(L,u);v.push({descriptor:U,name:`Attach ${W.prettyDescriptor(e.configuration,U)}`,reason:`(local workspace at ${de.pretty(e.configuration,L.relativeCwd,de.Type.PATH)})`})});break;case\"latest\":{let L=e.configuration.get(\"enableNetwork\"),U=e.configuration.get(\"enableOfflineMode\");await C(async()=>{if(a===\"peerDependencies\")v.push({descriptor:W.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!L&&!U)v.push({descriptor:null,name:\"Resolve from latest\",reason:de.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let J=await D8(t,E,{project:e,cache:o,workspace:r,modifier:u});J&&v.push({descriptor:J,name:`Use ${W.prettyDescriptor(e.configuration,J)}`,reason:`(resolved from ${U?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:v.slice(0,p),rejections:x.slice(0,p)}}async function D8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(W.makeDescriptor(t,e)),p=new Qi,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),I={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...I,resolver:E,fetchOptions:I},x=E.bindDescriptor(A,a.anchoredLocator,v),C=await E.getCandidates(x,{},v);if(C.length===0)return null;let R=C[0],{protocol:L,source:U,params:J,selector:te}=W.parseRange(W.convertToManifestRange(R.reference));if(L===r.configuration.get(\"defaultProtocol\")&&(L=null),I8.default.valid(te)){let ae=te;if(typeof u<\"u\")te=u+te;else if(n!==!1){let me=typeof n==\"string\"?n:A.range;te=L0e(me,{project:r})+te}let fe=W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}));(await E.getCandidates(r.configuration.normalizeDependency(fe),{},v)).length!==1&&(te=ae)}return W.makeDescriptor(R,W.makeRange({protocol:L,source:U,params:J,selector:te}))}async function ept(t){return await oe.mktempPromise(async e=>{let r=Ke.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Lr(e,{configuration:r,check:!1,immutable:!1}))})}var kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.dev=ge.Boolean(\"-D,--dev\",!1,{description:\"Add a package as a dev dependency\"});this.peer=ge.Boolean(\"-P,--peer\",!1,{description:\"Add a package as a peer dependency\"});this.optional=ge.Boolean(\"-O,--optional\",!1,{description:\"Add / upgrade a package to an optional regular / peer dependency\"});this.preferDev=ge.Boolean(\"--prefer-dev\",!1,{description:\"Add / upgrade a package to a dev dependency\"});this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Reuse the specified package from other workspaces in the project\"});this.cached=ge.Boolean(\"--cached\",!1,{description:\"Reuse the highest version already used somewhere within the project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=A||r.get(\"preferReuse\"),h=h2(this,o),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(U=>typeof U<\"u\"),I=A?1/0:1,v=await Promise.all(this.packages.map(async U=>{let J=U.match(/^\\.{0,2}\\//)?await v8(U,{cwd:this.context.cwd,workspace:a}):W.tryParseDescriptor(U),te=U.match(/^(https?:|git@github)/);if(te)throw new it(`It seems you are trying to add a package using a ${de.pretty(r,`${te[0]}...`,de.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${de.pretty(r,\"yarn add\",de.Type.CODE)} ${de.pretty(r,W.makeDescriptor(W.makeIdent(null,\"my-package\"),`${te[0]}...`),de.Type.DESCRIPTOR)}`);if(!J)throw new it(`The ${de.pretty(r,U,de.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ae=tpt(a,J,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ae.map(async ce=>{let me=await g2(J,{project:o,workspace:a,cache:n,fixed:u,target:ce,modifier:h,strategies:E,maxResults:I});return{request:J,suggestedDescriptors:me,target:ce}}))})).then(U=>U.flat()),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async U=>{for(let{request:J,suggestedDescriptors:{suggestions:te,rejections:ae}}of v)if(te.filter(ce=>ce.descriptor!==null).length===0){let[ce]=ae;if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");o.configuration.get(\"enableNetwork\")?U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range`):U.reportError(27,`${W.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),U.reportSeparator(),U.reportExceptionOnce(ce)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[],L=[];for(let{suggestedDescriptors:{suggestions:U},target:J}of v){let te,ae=U.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,_0e.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:U.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=a.manifest[J].get(te.identHash);(typeof me>\"u\"||me.descriptorHash!==te.descriptorHash)&&(a.manifest[J].set(te.identHash,te),this.optional&&(J===\"dependencies\"?a.manifest.ensureDependencyMeta({...te,range:\"unknown\"}).optional=!0:J===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...te,range:\"unknown\"}).optional=!0)),typeof me>\"u\"?R.push([a,J,te,E]):L.push([a,J,me,te]))}return await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(U=>U.afterWorkspaceDependencyReplacement,L),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};kh.paths=[[\"add\"]],kh.usage=nt.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"]]});function tpt(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest[\"dependencies\"].has(e.identHash),A=t.manifest[\"devDependencies\"].has(e.identHash),p=t.manifest[\"peerDependencies\"].has(e.identHash);if((r||o)&&u)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&A)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&p)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new it(`Package \"${W.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:A?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ye();Ye();qt();var Qh=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=ge.String({required:!1})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await un.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new it(`Couldn't find a binary named \"${this.name}\" for package \"${W.prettyLocator(r,a)}\"`);let[,p]=A;return this.context.stdout.write(`${p}\n`),0}return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await un.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((E,I)=>Math.max(E,I.length),0);for(let[E,[I,v]]of A)u.reportJson({name:E,source:W.stringifyIdent(I),path:v});if(this.verbose)for(let[E,[I]]of A)u.reportInfo(null,`${E.padEnd(h,\" \")}   ${W.prettyLocator(r,I)}`);else for(let E of A.keys())u.reportInfo(null,E)})).exitCode()}};Qh.paths=[[\"bin\"]],Qh.usage=nt.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]});Ye();St();qt();var Fh=class extends ut{constructor(){super(...arguments);this.mirror=ge.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=ge.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Lr.find(r);return(await Nt.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Fh.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]],Fh.usage=nt.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]});Ye();qt();var q0e=$e(d2()),S8=ve(\"util\"),Rh=class extends ut{constructor(){super(...arguments);this.why=ge.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=ge.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(o)>\"u\")throw new it(`Couldn't find a configuration settings named \"${o}\"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=_e.convertMapsToIndexableObjects(u),p=a?(0,q0e.default)(A,a):A,h=await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();S8.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,S8.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Rh.paths=[[\"config\",\"get\"]],Rh.usage=nt.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]});Ye();qt();var Fge=$e(k8()),Rge=$e(d2()),Tge=$e(Q8()),F8=ve(\"util\"),Th=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String();this.value=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new it(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let A=this.json?JSON.parse(this.value):this.value;await(this.home?C=>Ke.updateHomeConfiguration(C):C=>Ke.updateConfiguration(o(),C))(C=>{if(n){let R=(0,Fge.default)(C);return(0,Tge.default)(R,this.name,A),R}else return{...C,[a]:A}});let E=(await Ke.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),I=_e.convertMapsToIndexableObjects(E),v=n?(0,Rge.default)(I,n):I;return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async C=>{F8.inspect.styles.name=\"cyan\",C.reportInfo(0,`Successfully set ${this.name} to ${(0,F8.inspect)(v,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Th.paths=[[\"config\",\"set\"]],Th.usage=nt.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]});Ye();qt();var Yge=$e(k8()),Wge=$e(Mge()),Kge=$e(T8()),Nh=class extends ut{constructor(){super(...arguments);this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new it(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new it(`Couldn't find a configuration settings named \"${a}\"`);let A=this.home?h=>Ke.updateHomeConfiguration(h):h=>Ke.updateConfiguration(o(),h);return(await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await A(I=>{if(!(0,Wge.default)(I,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,I;let v=n?(0,Yge.default)(I):{...I};return(0,Kge.default)(v,this.name),v}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Nh.paths=[[\"config\",\"unset\"]],Nh.usage=nt.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]});Ye();St();qt();var fk=ve(\"util\"),Lh=class extends ut{constructor(){super(...arguments);this.noDefaults=ge.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=ge.Boolean(\"-v,--verbose\",{hidden:!0});this.why=ge.Boolean(\"--why\",{hidden:!0});this.names=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins,{strict:!1}),o=await LE({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(o!==null)return o;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async A=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)A.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);A.reportSeparator()}if(this.json)for(let p of a){let h=r.settings.get(p);typeof h>\"u\"&&A.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),I=r.sources.get(p)??\"<default>\",v=I&&I[0]!==\"<\"?ue.fromPortablePath(I):I;A.reportJson({key:p,effective:E,source:v,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let I of a){if(this.noDefaults&&!r.sources.has(I))continue;let v=r.settings.get(I),x=r.sources.get(I)??\"<default>\",C=r.getSpecial(I,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:\"Description\",value:de.tuple(de.Type.MARKDOWN,{text:v.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:de.tuple(x[0]===\"<\"?de.Type.CODE:de.Type.PATH,x)}};h[I]={value:de.tuple(de.Type.CODE,I),children:R};let L=(U,J)=>{for(let[te,ae]of J)if(ae instanceof Map){let fe={};U[te]={children:fe},L(fe,ae)}else U[te]={label:te,value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(ae,p))}};C instanceof Map?L(R,C):R.Value={label:\"Value\",value:de.tuple(de.Type.NO_HINT,(0,fk.inspect)(C,p))}}a.length!==1&&(n=void 0),$s.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let A=a[0],p=(0,fk.inspect)(r.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return u.exitCode()}};Lh.paths=[[\"config\"]],Lh.usage=nt.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]});Ye();qt();Za();var pk={};Vt(pk,{Strategy:()=>m2,acceptedStrategies:()=>O0t,dedupe:()=>N8});Ye();Ye();var Vge=$e(Zo()),m2=(e=>(e.HIGHEST=\"highest\",e))(m2||{}),O0t=new Set(Object.values(m2)),M0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);_e.getSetWithDefault(u,E.identHash).add(h)}let A=new Map(_e.mapAndFilter(t.storedDescriptors.values(),p=>W.isVirtualDescriptor(p)?_e.mapAndFilter.skip:[p.descriptorHash,_e.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let I=t.originalPackages.get(E);if(typeof I>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let v=r.getResolutionDependencies(p,a),x=Object.fromEntries(await _e.allSettledSafe(Object.entries(v).map(async([te,ae])=>{let fe=A.get(ae.descriptorHash);if(typeof fe>\"u\")throw new Error(`Assertion failed: The descriptor (${ae.descriptorHash}) should have been registered`);let ce=await fe.promise;if(!ce)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[te,ce.updatedPackage]})));if(e.length&&!Vge.default.isMatch(W.stringifyIdent(p),e)||!r.shouldPersistResolution(I,a))return I;let C=u.get(p.identHash);if(typeof C>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(C.size===1)return I;let R=[...C].map(te=>{let ae=t.originalPackages.get(te);if(typeof ae>\"u\")throw new Error(`Assertion failed: The package (${te}) should have been registered`);return ae}),L=await r.getSatisfying(p,x,R,a),U=L.locators?.[0];if(typeof U>\"u\"||!L.sorted)return I;let J=t.originalPackages.get(U.locatorHash);if(typeof J>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return J}).then(async v=>{let x=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:I,updatedPackage:v,resolvedPackage:x})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function N8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new Qi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let I=M0t[e],v=await I(t,r,{resolver:A,resolveOptions:E,fetcher:p,fetchOptions:h}),x=Xs.progressViaCounter(v.length);await a.reportProgress(x);let C=0;await Promise.all(v.map(U=>U.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;C++;let{descriptor:te,currentPackage:ae,updatedPackage:fe}=J;a.reportInfo(0,`${W.prettyDescriptor(n,te)} can be deduped from ${W.prettyLocator(n,ae)} to ${W.prettyLocator(n,fe)}`),a.reportJson({descriptor:W.stringifyDescriptor(te),currentResolution:W.stringifyLocator(ae),updatedResolution:W.stringifyLocator(fe)}),t.storedResolutions.set(te.descriptorHash,fe.locatorHash)}).finally(()=>x.tick())));let R;switch(C){case 0:R=\"No packages\";break;case 1:R=\"One package\";break;default:R=`${C} packages`}let L=de.pretty(n,e,de.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${L} strategy`),C})}var Oh=class extends ut{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:Ks(m2)});this.check=ge.Boolean(\"-c,--check\",!1,{description:\"Exit with exit code 1 when duplicates are found, without persisting the dependency tree\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Nt.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await N8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Oh.paths=[[\"dedupe\"]],Oh.usage=nt.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]});Ye();qt();var Kd=class extends ut{async execute(){let{plugins:e}=await Ke.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=as.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(\" \").slice(1).join()===A.split(\" \").slice(1).join(),n=Jge()[\"@yarnpkg/builder\"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)}\n`)}};Kd.paths=[[\"--clipanion=definitions\"]];var Vd=class extends ut{async execute(){this.context.stdout.write(this.cli.usage(null))}};Vd.paths=[[\"help\"],[\"--help\"],[\"-h\"]];Ye();St();qt();var mC=class extends ut{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!W.tryParseIdent(this.leadingArgument)){let r=V.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};Ye();var Jd=class extends ut{async execute(){this.context.stdout.write(`${rn||\"<unknown>\"}\n`)}};Jd.paths=[[\"-v\"],[\"--version\"]];Ye();Ye();qt();var Mh=class extends ut{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState(),await un.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};Mh.paths=[[\"exec\"]],Mh.usage=nt.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]});Ye();qt();Za();var Uh=class extends ut{constructor(){super(...arguments);this.hash=ge.String({validator:oS(Cy(),[oI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),await _0t(this.hash,o,{stdout:this.context.stdout})}};Uh.paths=[[\"explain\",\"peer-requirements\"]],Uh.usage=nt.Usage({description:\"explain a set of peer requirements\",details:`\n      A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.\n\n      When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.\n\n      When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.\n\n      **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding set of peer requirements for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all sets of peer requirements\",\"$0 explain peer-requirements\"]]});async function _0t(t,e,r){let o=e.peerWarnings.find(n=>n.hash===t);if(typeof o>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);return(await Nt.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async n=>{let u=de.mark(e.configuration);switch(o.type){case 2:{n.reportInfo(0,`We have a problem with ${de.pretty(e.configuration,o.requested,de.Type.IDENT)}, which is provided with version ${W.prettyReference(e.configuration,o.version)}.`),n.reportInfo(0,\"It is needed by the following direct dependencies of workspaces in your project:\"),n.reportSeparator();for(let h of o.requesters.values()){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}let A=[...o.links.values()].filter(h=>!o.requesters.has(h.locatorHash));if(A.length>0){n.reportSeparator(),n.reportInfo(0,`However, those packages themselves have more dependencies listing ${W.prettyIdent(e.configuration,o.requested)} as peer dependency:`),n.reportSeparator();for(let h of A){let E=e.storedPackages.get(h.locatorHash);if(!E)throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E?.peerDependencies.get(o.requested.identHash);if(!I)throw new Error(\"Assertion failed: Expected the package to list the peer dependency\");let v=kr.satisfiesWithPrereleases(o.version,I.range)?u.Check:u.Cross;n.reportInfo(null,`  ${v} ${W.prettyLocator(e.configuration,h)} (via ${W.prettyRange(e.configuration,I.range)})`)}}let p=Array.from(o.links.values(),h=>{let E=e.storedPackages.get(h.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let I=E.peerDependencies.get(o.requested.identHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the ident to be registered\");return I.range});if(p.length>1){let h=kr.simplifyRanges(p);n.reportSeparator(),h===null?(n.reportInfo(0,\"Unfortunately, put together, we found no single range that can satisfy all those peer requirements.\"),n.reportInfo(0,`Your best option may be to try to upgrade some dependencies with ${de.pretty(e.configuration,\"yarn up\",de.Type.CODE)}, or silence the warning via ${de.pretty(e.configuration,\"logFilters\",de.Type.CODE)}.`)):n.reportInfo(0,`Put together, the final range we computed is ${de.pretty(e.configuration,h,de.Type.RANGE)}`)}}break;default:n.reportInfo(0,`The ${de.pretty(e.configuration,\"yarn explain peer-requirements\",de.Type.CODE)} command doesn't support this warning type yet.`);break}})).exitCode()}Ye();qt();Za();Ye();Ye();St();qt();var zge=$e(zn()),_h=class extends ut{constructor(){super(...arguments);this.useYarnPath=ge.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=ge.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let A=r.sources.get(\"yarnPath\");if(!A)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(V.contains(p,A))return 0}let o=()=>{if(typeof rn>\"u\")throw new it(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:o(),version:rn??\"self\"};else if(this.version===\"latest\"||this.version===\"berry\"||this.version===\"stable\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await y2(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await y2(r,\"canary\"));else if(this.version===\"classic\")a={url:\"https://classic.yarnpkg.com/latest.js\",version:\"classic\"};else if(this.version.match(/^https?:/))a={url:this.version,version:\"remote\"};else if(this.version.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.version))a={url:`file://${V.resolve(ue.toPortablePath(this.version))}`,version:\"file\"};else if(kr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(kr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(kr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await H0t(r,this.version));else throw new it(`Invalid version descriptor \"${this.version}\"`);return(await Nt.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${de.pretty(r,a.url,de.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${de.pretty(r,a.url,de.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await L8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};_h.paths=[[\"set\",\"version\"]],_h.usage=nt.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]});async function H0t(t,e){let o=(await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>kr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new it(`No matching release found for range ${de.pretty(t,e,de.Type.RANGE)}.`);return o[0]}async function y2(t,e){let r=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new it(`Tag ${de.pretty(t,e,de.Type.RANGE)} not found`);return r.latest[e]}async function L8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let te=await u();await oe.mktempPromise(async ae=>{let fe=V.join(ae,\"yarn.cjs\");await oe.writeFilePromise(fe,te);let{stdout:ce}=await Ur.execvp(process.execPath,[ue.fromPortablePath(fe),\"--version\"],{cwd:ae,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=ce.trim(),!zge.default.valid(e))throw new Error(`Invalid semver version. ${de.pretty(t,\"yarn --version\",de.Type.CODE)} returned:\n${e}`)})}let A=t.projectCwd??t.startingCwd,p=V.resolve(A,\".yarn/releases\"),h=V.resolve(p,`yarn-${e}.cjs`),E=V.relative(t.startingCwd,h),I=_e.isTaggedYarnVersion(e),v=t.get(\"yarnPath\"),x=!I,C=x||!!v||!!a;if(a===!1){if(x)throw new zt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");C=!1}else!C&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${de.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${de.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),C=!0);if(C){let te=await u();o.reportInfo(0,`Saving the new release in ${de.pretty(t,E,\"magenta\")}`),await oe.removePromise(V.dirname(h)),await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,te,{mode:493}),await Ke.updateConfiguration(A,{yarnPath:V.relative(A,h)})}else await oe.removePromise(V.dirname(h)),await Ke.updateConfiguration(A,{yarnPath:Ke.deleteProperty});let R=await Ot.tryFind(A)||new Ot;R.packageManager=`yarn@${I?e:await y2(t,\"stable\")}`;let L={};R.exportTo(L);let U=V.join(A,Ot.fileName),J=`${JSON.stringify(L,null,R.indent)}\n`;return await oe.changeFilePromise(U,J,{automaticNewlines:!0}),{bundleVersion:e}}function Xge(t){return wr[AS(t)]}var q0t=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function j0t(t){let r=`https://repo.yarnpkg.com/${_e.isTaggedYarnVersion(rn)?rn:await y2(t,\"canary\")}/packages/gatsby/content/advanced/error-codes.md`,o=await nn.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(q0t),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=Xge(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected \"${a.name}\" to be named \"${n}\"`);return[a.code,a.details]}))}var Hh=class extends ut{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:aI(Cy(),[oI(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let o=Xge(this.code),a=de.pretty(r,o,de.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await j0t(r)).get(this.code),p=typeof A<\"u\"?de.jsonOrPretty(this.json,r,de.tuple(de.Type.MARKDOWN,{text:A,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${de.jsonOrPretty(this.json,r,de.tuple(de.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:o,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let o={children:_e.mapAndFilter(Object.entries(wr),([a,n])=>Number.isNaN(Number(a))?_e.mapAndFilter.skip:{label:Wu(Number(a)),value:de.tuple(de.Type.CODE,n)})};$s.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Hh.paths=[[\"explain\"]],Hh.usage=nt.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]});Ye();St();qt();var Zge=$e(Zo()),qh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=ge.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=ge.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=ge.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=ge.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=ge.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=ge.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a&&!this.all)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add(\"cache\"),this.dependents&&u.add(\"dependents\"),this.manifest&&u.add(\"manifest\");let A=(ae,{recursive:fe})=>{let ce=ae.anchoredLocator.locatorHash,me=new Map,he=[ce];for(;he.length>0;){let Be=he.shift();if(me.has(Be))continue;let we=o.storedPackages.get(Be);if(typeof we>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(me.set(Be,we),W.isVirtualLocator(we)&&he.push(W.devirtualizeLocator(we).locatorHash),!(!fe&&Be!==ce))for(let g of we.dependencies.values()){let Ee=o.storedResolutions.get(g.descriptorHash);if(typeof Ee>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");he.push(Ee)}}return me.values()},p=({recursive:ae})=>{let fe=new Map;for(let ce of o.workspaces)for(let me of A(ce,{recursive:ae}))fe.set(me.locatorHash,me);return fe.values()},h=({all:ae,recursive:fe})=>ae&&fe?o.storedPackages.values():ae?p({recursive:fe}):A(a,{recursive:fe}),E=({all:ae,recursive:fe})=>{let ce=h({all:ae,recursive:fe}),me=this.patterns.map(we=>{let g=W.parseLocator(we),Ee=Zge.default.makeRe(W.stringifyIdent(g)),Se=W.isVirtualLocator(g),le=Se?W.devirtualizeLocator(g):g;return ne=>{let ee=W.stringifyIdent(ne);if(!Ee.test(ee))return!1;if(g.reference===\"unknown\")return!0;let Ie=W.isVirtualLocator(ne),Fe=Ie?W.devirtualizeLocator(ne):ne;return!(Se&&Ie&&g.reference!==ne.reference||le.reference!==Fe.reference)}}),he=_e.sortMap([...ce],we=>W.stringifyLocator(we));return{selection:he.filter(we=>me.length===0||me.some(g=>g(we))),sortedLookup:he}},{selection:I,sortedLookup:v}=E({all:this.all,recursive:this.recursive});if(I.length===0)throw new it(\"No package matched your request\");let x=new Map;if(this.dependents)for(let ae of v)for(let fe of ae.dependencies.values()){let ce=o.storedResolutions.get(fe.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");_e.getArrayWithDefault(x,ce).push(ae)}let C=new Map;for(let ae of v){if(!W.isVirtualLocator(ae))continue;let fe=W.devirtualizeLocator(ae);_e.getArrayWithDefault(C,fe.locatorHash).push(ae)}let R={},L={children:R},U=r.makeFetcher(),J={project:o,fetcher:U,cache:n,checksums:o.storedChecksums,report:new Qi,cacheOptions:{skipIntegrityCheck:!0}},te=[async(ae,fe,ce)=>{if(!fe.has(\"manifest\"))return;let me=await U.fetch(ae,J),he;try{he=await Ot.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}ce(\"Manifest\",{License:de.tuple(de.Type.NO_HINT,he.license),Homepage:de.tuple(de.Type.URL,he.raw.homepage??null)})},async(ae,fe,ce)=>{if(!fe.has(\"cache\"))return;let me=o.storedChecksums.get(ae.locatorHash)??null,he=n.getLocatorPath(ae,me),Be;if(he!==null)try{Be=await oe.statPromise(he)}catch{}let we=typeof Be<\"u\"?[Be.size,de.Type.SIZE]:void 0;ce(\"Cache\",{Checksum:de.tuple(de.Type.NO_HINT,me),Path:de.tuple(de.Type.PATH,he),Size:we})}];for(let ae of I){let fe=W.isVirtualLocator(ae);if(!this.virtuals&&fe)continue;let ce={},me={value:[ae,de.Type.LOCATOR],children:ce};if(R[W.stringifyLocator(ae)]=me,this.nameOnly){delete me.children;continue}let he=C.get(ae.locatorHash);typeof he<\"u\"&&(ce.Instances={label:\"Instances\",value:de.tuple(de.Type.NUMBER,he.length)}),ce.Version={label:\"Version\",value:de.tuple(de.Type.NO_HINT,ae.version)};let Be=(g,Ee)=>{let Se={};if(ce[g]=Se,Array.isArray(Ee))Se.children=Ee.map(le=>({value:le}));else{let le={};Se.children=le;for(let[ne,ee]of Object.entries(Ee))typeof ee>\"u\"||(le[ne]={label:ne,value:ee})}};if(!fe){for(let g of te)await g(ae,u,Be);await r.triggerHook(g=>g.fetchPackageInfo,ae,u,Be)}ae.bin.size>0&&!fe&&Be(\"Exported Binaries\",[...ae.bin.keys()].map(g=>de.tuple(de.Type.PATH,g)));let we=x.get(ae.locatorHash);typeof we<\"u\"&&we.length>0&&Be(\"Dependents\",we.map(g=>de.tuple(de.Type.LOCATOR,g))),ae.dependencies.size>0&&!fe&&Be(\"Dependencies\",[...ae.dependencies.values()].map(g=>{let Ee=o.storedResolutions.get(g.descriptorHash),Se=typeof Ee<\"u\"?o.storedPackages.get(Ee)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:Se})})),ae.peerDependencies.size>0&&fe&&Be(\"Peer dependencies\",[...ae.peerDependencies.values()].map(g=>{let Ee=ae.dependencies.get(g.identHash),Se=typeof Ee<\"u\"?o.storedResolutions.get(Ee.descriptorHash)??null:null,le=Se!==null?o.storedPackages.get(Se)??null:null;return de.tuple(de.Type.RESOLUTION,{descriptor:g,locator:le})}))}$s.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};qh.paths=[[\"info\"]],qh.usage=nt.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]});Ye();St();Nl();var hk=$e(td());qt();var O8=$e(zn());Za();var G0t=[{selector:t=>t===-1,name:\"nodeLinker\",value:\"node-modules\"},{selector:t=>t!==-1&&t<8,name:\"enableGlobalCache\",value:!1},{selector:t=>t!==-1&&t<8,name:\"compressionLevel\",value:\"mixed\"}],jh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.immutable=ge.Boolean(\"--immutable\",{description:\"Abort with an error exit code if the lockfile was to be modified\"});this.immutableCache=ge.Boolean(\"--immutable-cache\",{description:\"Abort with an error exit code if the cache folder was to be modified\"});this.refreshLockfile=ge.Boolean(\"--refresh-lockfile\",{description:\"Refresh the package metadata stored in the lockfile\"});this.checkCache=ge.Boolean(\"--check-cache\",{description:\"Always refetch the packages and ensure that their checksums are consistent\"});this.checkResolutions=ge.Boolean(\"--check-resolutions\",{description:\"Validates that the package resolutions are coherent\"});this.inlineBuilds=ge.Boolean(\"--inline-builds\",{description:\"Verbosely print the output of the build steps of dependencies\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.cacheFolder=ge.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=ge.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=ge.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=ge.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=ge.Boolean(\"--prefer-offline\",{hidden:!0});this.production=ge.Boolean(\"--production\",{hidden:!0});this.registry=ge.String(\"--registry\",{hidden:!0});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=ge.String(\"--network-timeout\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await LE({configuration:r,stdout:this.context.stdout},[{option:this.ignoreEngines,message:\"The --ignore-engines option is deprecated; engine checking isn't a core feature anymore\",error:!hk.default.VERCEL},{option:this.registry,message:\"The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file\"},{option:this.preferOffline,message:\"The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead\",error:!hk.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!o},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!hk.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new it(`${de.pretty(r,\"--immutable\",de.Type.CODE)} and ${de.pretty(r,\"--immutable-cache\",de.Type.CODE)} cannot be used with ${de.pretty(r,\"--mode=update-lockfile\",de.Type.CODE)}`);let u=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U=!1;await K0t(r,u)&&(L.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await W0t(r,u)&&(L.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&L.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{if(Ke.telemetry?.isNew)Ke.telemetry.commitTips(),L.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),L.reportInfo(65,`Run ${de.pretty(r,\"yarn config set --home enableTelemetry 0\",de.Type.CODE)} to disable`),L.reportSeparator();else if(Ke.telemetry?.shouldShowTips){let U=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let J=null;if(rn!==null){let ae=O8.default.prerelease(rn)?\"canary\":\"stable\",fe=U.latest[ae];O8.default.gt(fe,rn)&&(J=[ae,fe])}if(J)Ke.telemetry.commitTips(),L.reportInfo(88,`${de.applyStyle(r,`A new ${J[0]} version of Yarn is available:`,de.Style.BOLD)} ${W.prettyReference(r,J[1])}!`),L.reportInfo(88,`Upgrade now by running ${de.pretty(r,`yarn set version ${J[1]}`,de.Type.CODE)}`),L.reportSeparator();else{let te=Ke.telemetry.selectTip(U.tips);te&&(L.reportInfo(89,de.pretty(r,te.message,de.Type.MARKDOWN_INLINE)),te.url&&L.reportInfo(89,`Learn more at ${te.url}`),L.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Pt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async L=>{let U={};for(let J of G0t)J.selector(E)&&typeof r.sources.get(J.name)>\"u\"&&(r.use(\"<compat>\",{[J.name]:J.value},p.cwd,{overwrite:!0}),U[J.name]=J.value);Object.keys(U).length>0&&(await Ke.updateConfiguration(p.cwd,U),L.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),L.reportSeparator())});if(R.hasErrors())return R.exitCode()}let I=await Lr.find(r,{immutable:A,check:this.checkCache});if(!h)throw new rr(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let v=r.get(\"enableHardenedMode\");v&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${de.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??v)&&(p.lockfileNeedsRefresh=!0);let x=this.checkResolutions??v;return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:I,report:R,immutable:u,checkResolutions:x,mode:this.mode})})).exitCode()}};jh.paths=[[\"install\"],nt.Default],jh.usage=nt.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]});var Y0t=\"<<<<<<<\";async function W0t(t,e){if(!t.projectCwd)return!1;let r=V.join(t.projectCwd,dr.lockfile);if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,\"utf8\")).includes(Y0t))return!1;if(e)throw new zt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await Ur.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await Ur.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new zt(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async A=>{let p=await Ur.execvp(\"git\",[\"show\",`${A}:./${dr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new zt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Ki(p.stdout)}catch{throw new zt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(A=>!!A.__metadata);for(let A of n){if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=W.parseDescriptor(p,!0),E=t.normalizeDependency(h),I=W.stringifyDescriptor(E);I!==p&&(A[I]=A[p],delete A[p])}for(let p of Object.keys(A)){if(p===\"__metadata\")continue;let h=A[p].checksum;typeof h==\"string\"&&h.includes(\"/\")||(A[p].checksum=`${A.__metadata.cacheKey}/${h}`)}}let u=Object.assign({},...n);u.__metadata.version=`${Math.min(...n.map(A=>parseInt(A.__metadata.version??0)))}`,u.__metadata.cacheKey=\"merged\";for(let[A,p]of Object.entries(u))typeof p==\"string\"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function K0t(t,e){if(!t.projectCwd)return!1;let r=[],o=V.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await Ke.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let u=n.filter(A=>{if(!A.path)return!0;let p=V.resolve(t.projectCwd,A.path),h=v1.has(A.spec)&&V.contains(o,p);return h&&r.push(p),!h});return u.length===0?Ke.deleteProperty:u.length===n.length?n:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ye();St();qt();var Gh=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=ge.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let p of this.destinations){let h=V.resolve(this.context.cwd,ue.toPortablePath(p)),E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(o.cwd===I.cwd)throw new it(`Invalid destination '${p}'; Can't link the project to itself`);if(!v)throw new rr(I.cwd,h);if(this.all){let x=!1;for(let C of I.workspaces)C.manifest.name&&(!C.manifest.private||this.private)&&(A.push(C),x=!0);if(!x)throw new it(`No workspace found to be linked in the target project: ${p}`)}else{if(!v.manifest.name)throw new it(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(v.manifest.private&&!this.private)throw new it(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);A.push(v)}}for(let p of A){let h=W.stringifyIdent(p.anchoredLocator),E=this.relative?V.relative(o.cwd,p.cwd):p.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Gh.paths=[[\"link\"]],Gh.usage=nt.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]});qt();var Yh=class extends ut{constructor(){super(...arguments);this.args=ge.Proxy()}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Yh.paths=[[\"node\"]],Yh.usage=nt.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]});Ye();qt();var Wh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await Ke.findRcFiles(this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let u of o)if(!!u.data?.plugins)for(let A of u.data.plugins){if(!A.checksum||!A.spec.match(/^https?:/))continue;let p=await nn.get(A.spec,{configuration:r}),h=wn.makeHash(p);if(A.checksum===h)continue;let E=de.pretty(r,A.path,de.Type.PATH),I=de.pretty(r,A.spec,de.Type.URL),v=`${E} is different from the file provided by ${I}`;n.reportJson({...A,newChecksum:h}),n.reportError(0,v)}})).exitCode()}};Wh.paths=[[\"plugin\",\"check\"]],Wh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]});Ye();Ye();St();qt();var nde=ve(\"os\");Ye();St();qt();var $ge=ve(\"os\");Ye();Nl();qt();var V0t=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function zd(t,e){let r=await nn.get(V0t,{configuration:t}),o=Ki(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||kr.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var Kh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await zd(r,rn);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=\" [experimental]\"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};Kh.paths=[[\"plugin\",\"list\"]],Kh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]});var J0t=/^[0-9]+$/,z0t=process.platform===\"win32\";function ede(t){return J0t.test(t)?`pull/${t}/head`:t}var X0t=({repository:t,branch:e},r)=>[[\"git\",\"init\",ue.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",ede(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],Z0t=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",ede(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],$0t=({plugins:t,noMinify:e},r,o)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",V.resolve(o,a)])),...e?[\"--no-minify\"]:[],\"|\"],[z0t?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",ue.fromPortablePath(r),\"|\"]],Vh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=ge.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=ge.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,$ge.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{await M8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,\"Building a fresh bundle\"),u.reportSeparator();let A=await Ur.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=V.join(a,`packages/yarnpkg-cli/bundles/yarn-${A.stdout.trim()}.js`);oe.existsSync(p)||(await E2($0t(this,p,a),{configuration:r,context:this.context,target:a}),u.reportSeparator());let h=await oe.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await L8(r,null,async()=>h,{report:u});this.skipPlugins||await egt(this,E,{project:o,report:u,target:a})}})).exitCode()}};Vh.paths=[[\"set\",\"version\",\"from\",\"sources\"]],Vh.usage=nt.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]});async function E2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]===\"|\";if(u&&n.pop(),u)await Ur.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${de.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await Ur.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function M8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(V.join(o,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await E2(Z0t(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await E2(X0t(t,o),{configuration:e,context:t.context,target:o}))}async function egt(t,e,{project:r,report:o,target:a}){let n=await zd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await U8(A,t,{project:r,report:o,target:a})}Ye();Ye();St();qt();var tde=$e(zn()),rde=ve(\"vm\");var Jh=class extends ut{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Pt.find(r,this.context.cwd),u,A;if(this.name.match(/^\\.{0,2}[\\\\/]/)||ue.isAbsolute(this.name)){let p=V.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${de.pretty(r,p,de.Type.PATH)}`),u=V.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new zt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=W.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!tde.default.valid(h.reference))throw new zt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=W.stringifyIdent(h),I=await zd(r,rn);if(!Object.hasOwn(I,E)){let v=`Couldn't find a plugin named ${W.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?v+=`A plugin named ${W.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${de.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",de.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${de.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",de.Type.URL)}).`,new zt(51,v)}u=E,p=I[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):rn!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${rn}/`))}a.reportInfo(0,`Downloading ${de.pretty(r,p,\"green\")}`),A=await nn.get(p,{configuration:r})}await _8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};Jh.paths=[[\"plugin\",\"import\"]],Jh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]});async function _8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,rde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,E=V.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${de.pretty(n,h,\"magenta\")}`),await oe.mkdirPromise(V.dirname(E),{recursive:!0}),await oe.writeFilePromise(E,e);let I={path:h,spec:t};r&&(I.checksum=wn.makeHash(e)),await Ke.addPlugin(o.cwd,[I])}var tgt=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],zh=class extends ut{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<\"u\"?V.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):V.resolve(ue.toPortablePath((0,nde.tmpdir)()),\"yarnpkg-sources\",wn.makeHash(this.repository).slice(0,6));return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await Pt.find(r,this.context.cwd),A=W.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=W.stringifyIdent(A),h=await zd(r,rn);if(!Object.hasOwn(h,p))throw new zt(51,`Couldn't find a plugin named \"${p}\" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let E=p;await M8(this,{configuration:r,report:n,target:o}),await U8(E,this,{project:u,report:n,target:o})})).exitCode()}};zh.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]],zh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]});async function U8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\\//,\"\"),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await E2(tgt({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=V.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await _8(t,h,{project:o,report:a})}Ye();St();qt();var Xh=class extends ut{constructor(){super(...arguments);this.name=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=W.parseIdent(u);if(!r.plugins.has(u))throw new it(`${W.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=V.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${de.pretty(r,p,de.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await Ke.updateConfiguration(o.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let I=E.filter(v=>v.path!==p);return I.length===0?Ke.deleteProperty:I.length===E.length?E:I}})})).exitCode()}};Xh.paths=[[\"plugin\",\"remove\"]],Xh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]});Ye();qt();var Zh=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=\" [builtin]\"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};Zh.paths=[[\"plugin\",\"runtime\"]],Zh.usage=nt.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]});Ye();Ye();qt();var $h=class extends ut{constructor(){super(...arguments);this.idents=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=new Set;for(let A of this.idents)u.add(W.parseIdent(A).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new Qi}),u.size>0)for(let A of o.storedPackages.values())u.has(A.identHash)&&(o.storedBuildState.delete(A.locatorHash),o.skippedBuilds.delete(A.locatorHash));else o.storedBuildState.clear(),o.skippedBuilds.clear();return await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};$h.paths=[[\"rebuild\"]],$h.usage=nt.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]});Ye();Ye();Ye();qt();var H8=$e(Zo());Za();var e0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Apply the operation to all workspaces from the current project\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let C of this.patterns){let R=!1,L=W.parseIdent(C);for(let U of u){let J=[...U.manifest.peerDependenciesMeta.keys()];for(let te of(0,H8.default)(J,C))U.manifest.peerDependenciesMeta.delete(te),h=!0,R=!0;for(let te of A){let ae=U.manifest.getForScope(te),fe=[...ae.values()].map(ce=>W.stringifyIdent(ce));for(let ce of(0,H8.default)(fe,W.stringifyIdent(L))){let{identHash:me}=W.parseIdent(ce),he=ae.get(me);if(typeof he>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[te].delete(me),E.push([U,te,he]),h=!0,R=!0}}}R||p.push(C)}let I=p.length>1?\"Patterns\":\"Pattern\",v=p.length>1?\"don't\":\"doesn't\",x=this.all?\"any\":\"this\";if(p.length>0)throw new it(`${I} ${de.prettyList(r,p,de.Type.CODE)} ${v} match any packages referenced by ${x} workspace`);return h?(await r.triggerMultipleHooks(C=>C.afterWorkspaceDependencyRemoval,E),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};e0.paths=[[\"remove\"]],e0.usage=nt.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]});Ye();Ye();qt();var ide=ve(\"util\"),Xd=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async u=>{let A=a.manifest.scripts,p=_e.sortMap(A.keys(),I=>I),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((I,v)=>Math.max(I,v.length),0);for(let[I,v]of A.entries())u.reportInfo(null,`${I.padEnd(E,\" \")}   ${(0,ide.inspect)(v,h)}`),u.reportJson({name:I,script:v})})).exitCode()}};Xd.paths=[[\"run\"]];Ye();Ye();qt();var t0=class extends ut{constructor(){super(...arguments);this.inspect=ge.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=ge.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=ge.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=ge.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=ge.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await un.hasPackageScript(u,this.scriptName,{project:o}))return await un.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await un.getPackageAccessibleBinaries(u,{project:o});if(A.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await un.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(o.workspaces.map(async I=>I.manifest.scripts.has(this.scriptName)?I:null))).filter(I=>I!==null);if(E.length===1)return await un.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new it(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${W.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new it(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,I]of AC)for(let v of I)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new it(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new it(`Couldn't find a script named \"${this.scriptName}\".`)}}};t0.paths=[[\"run\"]],t0.usage=nt.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]});Ye();Ye();qt();var r0=class extends ut{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new rr(o.cwd,this.context.cwd);let u=W.parseDescriptor(this.descriptor,!0),A=W.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),await o.installWithNewReport({stdout:this.context.stdout},{cache:n})}};r0.paths=[[\"set\",\"resolution\"]],r0.usage=nt.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 1.5.0\"]]});Ye();St();qt();var sde=$e(Zo()),n0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of u.manifest.resolutions)h.startsWith(\"portal:\")&&A.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=V.resolve(this.context.cwd,ue.toPortablePath(p));if(_e.isPathLike(p)){let E=await Ke.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:I,workspace:v}=await Pt.find(E,h);if(!v)throw new rr(I.cwd,h);if(this.all){for(let x of I.workspaces)x.manifest.name&&A.add(W.stringifyIdent(x.anchoredLocator));if(A.size===0)throw new it(\"No workspace found to be unlinked in the target project\")}else{if(!v.manifest.name)throw new it(\"The target workspace doesn't have a name and thus cannot be unlinked\");A.add(W.stringifyIdent(v.anchoredLocator))}}else{let E=[...u.manifest.resolutions.map(({pattern:I})=>I.descriptor.fullName)];for(let I of(0,sde.default)(E,p))A.add(I)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:p})=>!A.has(p.descriptor.fullName)),await o.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};n0.paths=[[\"unlink\"]],n0.usage=nt.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]});Ye();Ye();Ye();qt();var ode=$e(f2()),q8=$e(Zo());Za();var Jf=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Offer various choices, depending on the detected upgrade paths\"});this.fixed=ge.Boolean(\"-F,--fixed\",!1,{description:\"Store dependency tags as-is instead of resolving them\"});this.exact=ge.Boolean(\"-E,--exact\",!1,{description:\"Don't use any semver modifier on the resolved range\"});this.tilde=ge.Boolean(\"-T,--tilde\",!1,{description:\"Use the `~` semver modifier on the resolved range\"});this.caret=ge.Boolean(\"-C,--caret\",!1,{description:\"Use the `^` semver modifier on the resolved range\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Resolve again ALL resolutions for those packages\"});this.mode=ge.String(\"--mode\",{description:\"Change what artifacts installs generate\",validator:Ks(pl)});this.patterns=ge.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(E=>W.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(W.parseDescriptor(E).range!==\"unknown\")throw new it(\"Ranges aren't allowed when using --recursive\");for(let I of(0,q8.default)(A,E)){let v=W.parseIdent(I);p.add(v.identHash)}}let h=u.filter(E=>p.has(E.identHash));for(let E of h)o.storedDescriptors.delete(E.descriptorHash),o.storedResolutions.delete(E.descriptorHash);return await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get(\"preferInteractive\"),p=h2(this,o),h=A?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],I=[];for(let L of this.patterns){let U=!1,J=W.parseDescriptor(L),te=W.stringifyIdent(J);for(let ae of o.workspaces)for(let fe of[\"dependencies\",\"devDependencies\"]){let me=[...ae.manifest.getForScope(fe).values()].map(Be=>W.stringifyIdent(Be)),he=te===\"*\"?me:(0,q8.default)(me,te);for(let Be of he){let we=W.parseIdent(Be),g=ae.manifest[fe].get(we.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let Ee=W.makeDescriptor(we,J.range);E.push(Promise.resolve().then(async()=>[ae,fe,g,await g2(Ee,{project:o,workspace:ae,cache:n,target:fe,fixed:u,modifier:p,strategies:h})])),U=!0}}U||I.push(L)}if(I.length>1)throw new it(`Patterns ${de.prettyList(r,I,de.Type.CODE)} don't match any packages referenced by any workspace`);if(I.length>0)throw new it(`Pattern ${de.prettyList(r,I,de.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(E),x=await AA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async L=>{for(let[,,U,{suggestions:J,rejections:te}]of v){let ae=J.filter(fe=>fe.descriptor!==null);if(ae.length===0){let[fe]=te;if(typeof fe>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let ce=this.cli.error(fe);o.configuration.get(\"enableNetwork\")?L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${ce}`):L.reportError(27,`${W.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${ce}`)}else ae.length>1&&!A&&L.reportError(27,`${W.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(x.hasErrors())return x.exitCode();let C=!1,R=[];for(let[L,U,,{suggestions:J}]of v){let te,ae=J.filter(he=>he.descriptor!==null),fe=ae[0].descriptor,ce=ae.every(he=>W.areDescriptorsEqual(he.descriptor,fe));ae.length===1||ce?te=fe:(C=!0,{answer:te}=await(0,ode.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${W.prettyWorkspace(r,L)} \\u276F ${U}?`,choices:J.map(({descriptor:he,name:Be,reason:we})=>he?{name:Be,hint:we,descriptor:he}:{name:Be,hint:we,disabled:!0}),onCancel:()=>process.exit(130),result(he){return this.find(he,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=L.manifest[U].get(te.identHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(me.descriptorHash!==te.descriptorHash)L.manifest[U].set(te.identHash,te),R.push([L,U,me,te]);else{let he=r.makeResolver(),Be={project:o,resolver:he},we=r.normalizeDependency(me),g=he.bindDescriptor(we,L.anchoredLocator,Be);o.forgetResolution(g)}}return await r.triggerMultipleHooks(L=>L.afterWorkspaceDependencyReplacement,R),C&&this.context.stdout.write(`\n`),await o.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Jf.paths=[[\"up\"]],Jf.usage=nt.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]}),Jf.schema=[cI(\"recursive\",Gu.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})];Ye();Ye();Ye();qt();var i0=class extends ut{constructor(){super(...arguments);this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=ge.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=W.parseIdent(this.package).identHash,u=this.recursive?ngt(o,n,{configuration:r,peers:this.peers}):rgt(o,n,{configuration:r,peers:this.peers});$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};i0.paths=[[\"why\"]],i0.usage=nt.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]});function rgt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.storedPackages.values(),A=>W.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let E of A.dependencies.values()){if(!o&&A.peerDependencies.has(E.identHash))continue;let I=t.storedResolutions.get(E.descriptorHash);if(!I)throw new Error(\"Assertion failed: The resolution should have been registered\");let v=t.storedPackages.get(I);if(!v)throw new Error(\"Assertion failed: The package should have been registered\");if(v.identHash!==e)continue;{let C=W.stringifyLocator(A);n[C]={value:[A,de.Type.LOCATOR],children:p}}let x=W.stringifyLocator(v);p[x]={value:[{descriptor:E,locator:v},de.Type.DEPENDENT]}}}return u}function ngt(t,e,{configuration:r,peers:o}){let a=_e.sortMap(t.workspaces,v=>W.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let x=!1;v.identHash===e&&(x=!0);for(let C of v.dependencies.values()){if(!o&&v.peerDependencies.has(C.identHash))continue;let R=t.storedResolutions.get(C.descriptorHash);if(!R)throw new Error(\"Assertion failed: The resolution should have been registered\");let L=t.storedPackages.get(R);if(!L)throw new Error(\"Assertion failed: The package should have been registered\");A(L)&&(x=!0)}return x&&u.add(v.locatorHash),x};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},E={children:h},I=(v,x,C)=>{if(!u.has(v.locatorHash))return;let R=C!==null?de.tuple(de.Type.DEPENDENT,{locator:v,descriptor:C}):de.tuple(de.Type.LOCATOR,v),L={},U={value:R,children:L},J=W.stringifyLocator(v);if(x[J]=U,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(C!==null&&t.tryWorkspaceByLocator(v))))for(let te of v.dependencies.values()){if(!o&&v.peerDependencies.has(te.identHash))continue;let ae=t.storedResolutions.get(te.descriptorHash);if(!ae)throw new Error(\"Assertion failed: The resolution should have been registered\");let fe=t.storedPackages.get(ae);if(!fe)throw new Error(\"Assertion failed: The package should have been registered\");I(fe,L,te)}};for(let v of a)I(v.anchoredPackage,h,null);return E}Ye();var Z8={};Vt(Z8,{GitFetcher:()=>w2,GitResolver:()=>I2,default:()=>vgt,gitUtils:()=>ra});Ye();St();var ra={};Vt(ra,{TreeishProtocols:()=>C2,clone:()=>X8,fetchBase:()=>bde,fetchChangedFiles:()=>xde,fetchChangedWorkspaces:()=>Igt,fetchRoot:()=>Pde,isGitUrl:()=>CC,lsRemote:()=>Sde,normalizeLocator:()=>wgt,normalizeRepoUrl:()=>yC,resolveUrl:()=>z8,splitRepoUrl:()=>s0,validateRepoUrl:()=>J8});Ye();St();qt();var Bde=$e(Cde()),vde=$e(mU()),EC=$e(ve(\"querystring\")),K8=$e(zn());function W8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function wde(t){try{return new URL(t)}catch{return}}function Egt(t){let e=W8(t,\"@\",\"#\"),r=W8(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),W8(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function Ide(t){return wde(t)||wde(Egt(t))}function yC(t,{git:e=!1}={}){if(t=t.replace(/^git\\+https:/,\"https:\"),t=t.replace(/^(?:github:|https:\\/\\/github\\.com\\/|git:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\\.git)?(#.*)?$/,\"https://github.com/$1/$2.git$3\"),t=t.replace(/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/,\"https://github.com/$1/$2.git#$3\"),e){let r=Ide(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function Dde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var Cgt=[/^ssh:/,/^git(?:\\+[^:]+)?:/,/^(?:git\\+)?https?:[^#]+\\/[^#]+(?:\\.git)(?:#.*)?$/,/^git@[^#]+\\/[^#]+\\.git(?:#.*)?$/,/^(?:github:|https:\\/\\/github\\.com\\/)?(?!\\.{1,2}\\/)([a-zA-Z._0-9-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\\.git)?(?:#.*)?$/,/^https:\\/\\/github\\.com\\/(?!\\.{1,2}\\/)([a-zA-Z0-9._-]+)\\/(?!\\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\\/tarball\\/(.+)?$/],C2=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(C2||{});function CC(t){return t?Cgt.some(e=>!!t.match(e)):!1}function s0(t){t=yC(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=EC.default.parse(o);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(C2).find(p=>Object.hasOwn(a,p)),[u,A]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(C2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(\":\"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function wgt(t){return W.makeLocator(t,yC(t.reference))}function J8(t,{configuration:e}){let r=yC(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,Bde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new zt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Sde(t,e){let r=J8(t,{configuration:e}),o=await V8(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:Dde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function z8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=s0(t),u=await Sde(r,e),A=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return EC.default.stringify({...n,commit:E})}case\"head\":{let I=u.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof I>\"u\")throw new Error(`Unknown head (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"tag\":{let I=u.get(`refs/tags/${E}`);if(typeof I>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return EC.default.stringify({...n,commit:I})}case\"semver\":{let I=kr.validRange(E);if(!I)throw new Error(`Invalid range (\"${E}\")`);let v=new Map([...u.entries()].filter(([C])=>C.startsWith(\"refs/tags/\")).map(([C,R])=>[K8.default.parse(C.slice(10)),R]).filter(C=>C[0]!==null)),x=K8.default.maxSatisfying([...v.keys()],I);if(x===null)throw new Error(`No matching range (\"${E}\")`);return EC.default.stringify({...n,commit:v.get(x)})}case null:{let I;if((I=p(\"commit\",E))!==null||(I=p(\"tag\",E))!==null||(I=p(\"head\",E))!==null)return I;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return A(h,E)}catch{return null}};return yC(`${r}#${A(o,a)}`)}async function X8(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=s0(t);if(o!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=J8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:Dde()};return await V8(\"cloning the repository\",[\"clone\",\"-c core.autocrlf=false\",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await V8(\"switching branch\",[\"checkout\",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function Pde(t){let e,r=t;do{if(e=r,await oe.existsPromise(V.join(e,\".git\")))return e;r=V.dirname(e)}while(r!==e);return null}async function bde(t,{baseRefs:e}){if(e.length===0)throw new it(\"Can't run this command with zero base refs specified.\");let r=[];for(let A of e){let{code:p}=await Ur.execvp(\"git\",[\"merge-base\",A,\"HEAD\"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new it(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:o}=await Ur.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Ur.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function xde(t,{base:e,project:r}){let o=_e.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await Ur.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Ur.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),A=u.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>V.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!V.relative(r.cwd,h).match(o)):p}async function Igt({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let r=[V.resolve(e.cwd,dr.lockfile),V.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),V.resolve(e.cwd,e.configuration.get(\"installStatePath\")),V.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await Pde(e.configuration.projectCwd);if(o==null)throw new it(\"This command can only be run on Git repositories\");let a=await bde(o,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await xde(o,{base:a.hash,project:e});return new Set(_e.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?_e.mapAndFilter.skip:r.some(p=>u.startsWith(p))?_e.mapAndFilter.skip:A}))}async function V8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Ur.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof Ur.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new zt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${de.prettyField(o,{label:\"Repository URL\",value:de.tuple(de.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,E,I]=h;E=E.toLowerCase();let v=E===\"error\"?\"Error\":`${(0,vde.default)(E)} Error`;p.reportError(1,`  ${de.prettyField(o,{label:v,value:de.tuple(de.Type.NO_HINT,I)})}`)}u?.(p)})}}var w2=class{supports(e,r){return CC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,o);let n={...r,checksums:a},u=await this.downloadHosted(e,n);if(u!==null)return u;let[A,p,h]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:A,releaseFs:p,prefixPath:W.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await X8(e.reference,r.project.configuration),a=s0(e.reference),n=V.join(o,\"package.tgz\");await un.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await _e.releaseAfterUseAsync(async()=>await Xi.convertToZip(u,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1}))}};Ye();Ye();var I2=class{supportsDescriptor(e,r){return CC(e.range)}supportsLocator(e,r){return CC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await z8(e.range,o.project.configuration);return[W.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=s0(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=s0(A.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Bgt={configuration:{changesetBaseRefs:{description:\"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.\",type:\"STRING\",isArray:!0,isNullable:!1,default:[\"master\",\"origin/master\",\"upstream/master\",\"main\",\"origin/main\",\"upstream/main\"]},changesetIgnorePatterns:{description:\"Array of glob patterns; files matching them will be ignored when fetching the changed files\",type:\"STRING\",default:[],isArray:!0},cloneConcurrency:{description:\"Maximal number of concurrent clones\",type:\"NUMBER\",default:2}},fetchers:[w2],resolvers:[I2]};var vgt=Bgt;qt();var o0=class extends ut{constructor(){super(...arguments);this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=ge.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ra.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let I=new Set,v=new Set;for(let x of Ot.hardDependencies)for(let[C,R]of h.getForScope(x)){let L=o.tryWorkspaceByDescriptor(R);L===null?o.workspacesByIdent.has(C)&&v.add(R):I.add(L)}E={workspaceDependencies:Array.from(I).map(x=>x.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(x=>W.stringifyDescriptor(x))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?W.stringifyIdent(h.name):null,...E})}})).exitCode()}};o0.paths=[[\"workspaces\",\"list\"]],o0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"});Ye();Ye();qt();var a0=class extends ut{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[W.stringifyIdent(p.anchoredLocator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new it(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};a0.paths=[[\"workspace\"]],a0.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]});var Dgt={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:kde.isCI},defaultSemverRangePrefix:{description:\"The default save prefix: '^', '~' or ''\",type:\"STRING\",values:[\"^\",\"~\",\"\"],default:\"^\"},preferReuse:{description:\"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.\",type:\"BOOLEAN\",default:!1}},commands:[Fh,Rh,Th,Nh,r0,Vh,_h,o0,Kd,Vd,mC,Jd,kh,Qh,Lh,Oh,Mh,Uh,Hh,qh,jh,Gh,n0,Yh,Wh,zh,Jh,Xh,Kh,Zh,$h,e0,Xd,t0,Jf,i0,a0]},Sgt=Dgt;var iH={};Vt(iH,{default:()=>bgt});Ye();var kt={optional:!0},eH=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:kt,zenObservable:kt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{[\"supports-color\"]:kt}}],[\"got@<11\",{dependencies:{[\"@types/responselike\"]:\"^1.0.0\",[\"@types/keyv\"]:\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{[\"@types/keyv\"]:\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{[\"vscode-jsonrpc\"]:\"^5.0.1\",[\"vscode-languageserver-protocol\"]:\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{[\"postcss-html\"]:kt,[\"postcss-jsx\"]:kt,[\"postcss-less\"]:kt,[\"postcss-markdown\"]:kt,[\"postcss-scss\"]:kt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{[\"tiny-warning\"]:\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:kt}}],[\"snowpack@>=3.3.0\",{dependencies:{[\"node-gyp\"]:\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:kt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:kt,\"vue-template-compiler\":kt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:kt,\"utf-8-validate\":kt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{[\"babel-polyfill\"]:\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{[\"cross-spawn\"]:\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{[\"prop-types\"]:\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{[\"@styled-system/should-forward-prop\"]:\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt,\"vuetify-loader\":kt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":kt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":kt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":kt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:kt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:kt,tinyliquid:kt,\"liquid-node\":kt,jade:kt,\"then-jade\":kt,dust:kt,\"dustjs-helpers\":kt,\"dustjs-linkedin\":kt,swig:kt,\"swig-templates\":kt,\"razor-tmpl\":kt,atpl:kt,liquor:kt,twig:kt,ejs:kt,eco:kt,jazz:kt,jqtpl:kt,hamljs:kt,hamlet:kt,whiskers:kt,\"haml-coffee\":kt,\"hogan.js\":kt,templayed:kt,handlebars:kt,underscore:kt,lodash:kt,pug:kt,\"then-pug\":kt,qejs:kt,walrus:kt,mustache:kt,just:kt,ect:kt,mote:kt,toffee:kt,dot:kt,\"bracket-template\":kt,ractive:kt,nunjucks:kt,htmling:kt,\"babel-core\":kt,plates:kt,\"react-dom\":kt,react:kt,\"arc-templates\":kt,vash:kt,slm:kt,marko:kt,teacup:kt,\"coffee-script\":kt,squirrelly:kt,twing:kt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":kt,vue:kt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:kt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:kt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(t=>[t,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":kt,\"webpack-command\":kt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":kt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:kt,jimp:kt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":kt,\"eslint-import-resolver-typescript\":kt,\"eslint-import-resolver-webpack\":kt,\"@typescript-eslint/parser\":kt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":kt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":kt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x <10.0.2\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.7\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:kt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:kt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{[\"vue-template-compiler\"]:\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{[\"@parcel/core\"]:\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{[\"@parcel/core\"]:kt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@<5.0.0\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:kt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:kt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:kt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":kt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}],[\"vite-plugin-vuetify@<=1.0.2\",{peerDependencies:{vue:\"^3.0.0\"}}],[\"webpack-plugin-vuetify@<=2.0.1\",{peerDependencies:{vue:\"^3.2.6\"}}]];var tH;function Qde(){return typeof tH>\"u\"&&(tH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==\",\"base64\")).toString()),tH}var rH;function Fde(){return typeof rH>\"u\"&&(rH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=\",\"base64\")).toString()),rH}var nH;function Rde(){return typeof nH>\"u\"&&(nH=ve(\"zlib\").brotliDecompressSync(Buffer.from(\"m0N6OqMDsc7bJpTqIc2FFkxFRuqnXiKdSoBaf+vf0xPiHHYG9BftHA0n3p9a1e0E1PPQYzg2lNLvEKTCECQSdIWyK3ZD55SVuTEgcSlLUN7YQb2zlM+tL1Z630Opo03mL1v26ZIk6ewxFxyBG4Pn5CpkgoGPKLcn1Wja4dsIlF4D6LFxUFW4EJFZTVHDMsHGZxB9hG7xzDfNVK3+mwqf5XMc/efucqouSyBp3UgwZxeOVOmRHney4GV5/9Gp7SzTgzRQsF+E5Eb6dm0q3RyWBKR0w1X7X6az1xdv2mJRrKRrspQrpaVIa2SIKBZji/ND2PfLafdeTr8s5SlygRennHAJJ95YTaZA8kJhIbXNz6gTiG9ohqchKEUyJfgG6Znx6YxFpuwL8zsBSEic7F27pQCii9V/+W9U16iLeQUkgVCr7By3cbutX+/pWpOdnRCFinsg4XvtVRS+XxNTNq4USlSh+oReWU5MwkAGcvtg/61YqHIyZasxmb9dEk5VeaBrw6Ys8S861mmMRHVaErDJKqVpGpgPcHLv+/99U7MlsSEEYB1I54pFmSWHFCq7c8bcd++72EnQEgPgCCCowKV8DknJ5yzlkO+9777/BzMDSABBk6DIDU4xNJWbNvfOXT2YGVCJ2sjd7BBTUTSe1+nn6seVZriCfU26SwJpo/6w55lhS1/G6ILkQvrUSpnckNLqMmWYvzPMK3zEJ8UcKZJZ4F8K+KdVv3/bW6Ya6q818PJXIpkUTpAtZwYOEuCM9N/r23X8ZxZBOwaAyD5dr15VifdoDMgZpI5jp1l1a40YAkb4l5p9xmeG/FU3aO7VvIc7Ca/PEOej2cplfOXnsi8lwW5VA8ud/fI2Wp7lrnJFa7gYGRcrkg+Nz8ggiZTlQw4w/AYgZfphSst+jaodNEbmG5nLVSnOo25/6vG3m+/msBOkA+xQ6gAKYlcljf3zOMhllO8F6F0NMwyDM4CgML7xSqs83RLY1QzaCwph4R+04fIKnVKHMfwxj1782vvHaNZzEf56DDPbXW/f18YAIipRtElGZyu2Zj8DjMSzGzKneF465Nm+RI12V+BgMqbV/lzKNBGCDCvtnxqyGXtVHgqUQyzfsWAZ1CPb5yy/lJqeakgeG+GEAohrB805AFu9eIzVWq+27rN7VUQ+ZxBGhICpJf4Rdd4D03SPEDoCWEE/st0FIZarquBC4tJrY+jRgGXL6j3GVDLN0M78iIjIEokcnGJa9IiimotBYa+oLdazuSf8+mviDfqjqzh4fJ8qG6qv74X8R20E6y8I7Gf+4fv3m16v8PZJzV/lEJk55Bvd/TFg6MFvYPI3jJ69+rk1L70NRyMMX8CIw0MsP8W/QL9o7QTrEfeutx8XpMdtob7Yb2uk/vpphtJkt4ICvoOZ1xfmIMsA2FiRnRCQMi9/bBBHefgppNdXyMTI+mArh1MsrZgwOCIgv9V4Ce/8As4bpUPOAs2kS3dDnTEEMAVLImor6amFGG0mf7xrdA/5KrjS3bLjIHcwIrcXIjAuWwhWl+bTwP9s8qOIzaQNifatyePXpjHaHGFFRJ3pvyDIW+82vnwTXE7eZonXAQIeWvytLWXBF7DfAhnSksqMCIW5J6782Qytb90lmbnoUQnHq3NYlXoMEX/ZrEmzsgohWy8P7yfHcsDFBIUUJy3jF9ntWbY5V7BUP+eGSXxy8RrdUHZ0Qbgeqk3umlgwBktcftocHAJmifHn2PbnPCehSHyBITdFsDBGqjIqDVeAvaWg6eLqZ8ttVN9gCAAThLjiL2rP2aww66dAyEAEfpWHiUoEnIl7fX+O5ADhDGFDqKqO7OlZ/NNO6Mnr4QyQpOCTa4IsdJV1n30rrJB8wfqmf5hkAckOX5GbH/TN03DTytH1/puRGHfZ4nBBuySTJQPWwxPzAOeuL0gcsQZn4AvqkwK4kJxmicBEmYQ1bdQabymm+U6PB+yaUpWAqYSM1XxWIpoUcHIylMziASsvFrAg3BagJl91buG7zqLhwR4qwfUKUNZ/TJaUVi1yGdT4K3iKrB9TuZiBZRVEHXIjMqLaujAiK80RqF7kKp9autb9Qn5qOsxpAdOFiy8qhZmLVGDBT95awG9feVpYERbBrBdCxYUDSiZVDjkF4hx1bAbC9SgnOKiaZCP6ZYnj4YMNAsqs17nVgYIUtBOzGbl95XMbd0vXcUwddkBVqTWvS7YyViS3DaUNrdRRiIBB0WLfy8N0vc4koM7c3CcElG7EACbzMN5gjVFuhYYjzjzkwt4/D5/ZnZCky8esfMM2sMcHm/8jv7OMyhU2+uEYnVkNkHdZ5jKjZVbB/Nn+beEcgaDIhTB2oZIviNoaEfcSep9ZplPyxlKvEwsqPPVY2C+b/KwErdGUK98KkoirGF/17UB/g9ylSgfILQdcCFgvipyfLpTu5S09PrFMtevcs6Q+LrwcfVc2lkWNciZ2G8n1uM15fewSCikx+6JZSikgUqzt4mn9uosPXRN+KmWffxp1bn5YwTRZRa+snMK8OWHL31H8wgZlshQTFIKE+6OQn3Pzc23REfSgu9eWXD0kWnj9W1JdCNRBj0bQCIScPdOEyXPMMWvY1+hGbnRZvF1dcw1kdg0fHlyevMfdTwIdkKOXVlMrQYE+DN+BQEGIqCjorN5IebGL3piPsurCYv3l/MBt+fQgksQxr8NCUNa5x+zIGPFr43+QN25ReJNVq5xmFgB8+0P7rhyfRmQp9+ckNiHyZl8SGPnrdh1+beRT9hPyQKWR2izzGWnpPjlXiCHTpvVMTWmzFcYl7u15bS8hBcXF26NHBdGIO4wPXErmvaVnbrWZHfpwN2PtyO1deAHKbFn84Mh7mdtauM2irftBIenee/ckYd+VltbWDm5yh0Z0RTUDhK8yCmErevmIaVCq4iK452hYEGRXekly6UAAY0Q1EhuxIb618xYmwdvZnaWVB+yKr3arkw0dWdBiyytXDtB4bdVLugzpquS2tgHTMTS39xgAR91ayZF/6q0JhIzwlwUVBRQEGXsQYNPTFZYV1XSrS9eQ5c4lKEf2HmS2RKQJUWDyJSMR64SE8M9ipcQvKSwWjMQtGmnx8K2c3zYD6CNAR4ODXePyKul2hqOi1TY9U5jtCxqJRFVuzB2EfQmp/h3sJBKdPPwo9/TsqYM31b8d9RMy9HwT/B6GzN09egkqJp89c/VHh/eIe2u6v5XRwzO2I1TqzkkofPN4CZhEP3TLq42XetYgNo19EYbu+gZ3eYgAF9IPYWARhJRXXa5HzUbk3C9j9xOmyzFiaiyadW5RHyY8/TdoAvM01O6qw+Rc3nM/2rBBGO8bTYugyIGxwVMMZJ6l70ql9nv9CCQK3icrqxMxVofWGdWqHdZCybBvq5H9fbtWh5nS02oTY9h6NNNu26tUnf73ii1IH3taRm8weQObXjZtc/96g9OqShVNQkV4s44e0hWpYnO4+CQqk3ALUBxZIe/PCaPnqS1O/s+bnOwEdhumj12rMtydhn/Bfp6wCWdt3ScR9eZFH7vi/lRir/syM1TN1Hfa4ldYkGq0vkq1xc66wlJyK3fnjRvrP8tupi/j9s7jffky3nsBde4hqr+fXTaMufmUX/rVFpB/j6J2VqHiULvzXETjOcPDf8EmGlwxo9gZPgC+UE0bwrIMD1ZY4z7s/IaG9wxS2vgrGD/gYImD7Q3ejq2qxa0G4rgG2pCfbwzvNotND6TJwZKwjf88dZrNiZ1sXLDRVWgYoLG/mPyGowSIVxzbz4E3EY2/r3fbX5r4R/LhaxhlwAABpwpWmU0ihyGeEcs894rNyUCG+OhqsZ/2U5KYDFXdq6RRS/ctpQPNPfk3iYBYOnfbKaaVCzqa6/E9PFTlND45OT0/+mZW2M0HAaNZA4kNTH7dmfK5wg5ibkIVNfuTxxe2nnI5XXdyf/yh16s8fqHXuYzKDIybhyi4PPSkBRXhIfD6mCcH8LqajVMeLgBwCjPmlkikhUe6obTbmFcgshoBAIsm0ur+M9BzmUe+9wxmVGTfm97sxH184/Nj6P225y2Pn/NsZQOXiwsA4NBJVTiN3qO2a9DbeY8AgBYvodkke9mb92xmtIHytntw+YEXplq8y3vGNHazd08iWAFgOz+w9XFjeRk9bw/mibOe5Yya56GFfCdqTy8bohv/BG9MvsMbxkweLgAwQyu7ZeFcozNKOw9zNySyGgGA03QRjtFZHXU3whPv8QZ8X6PJ1TsyBWCz2yUyAAAahED+d67+9HH4t2PRjQGiqX8iIwCrU2dnyQAqtbyeOoDWl9x9NWc7FPpeEA6P/wLjcrdL3gIANM4oExORjcGkrpiY8M1p4hUCqb06e7oPEO9slgkAJChQWnich2sWxOTPWs5U5lg0FbNRyrUFAEps39Rw2L6x9qjGxLZkXQIALaQ0h989M0Hq+VSOdWg5FBgdu12CLQBgJ7d9owrD6DOp9trE1KWPsxoBgBKPiMYo4A9o/KNZ8OZd2LSX+VWSVwFgN7ONZtygR9maKdfyCYDPNHrrcqphm3mHkmwBgMWxDV9qGGyfePtRWbm2T3IjAKCpIhmjeHTM4ueybofR8Ut3b4y7dySAxet2iQwAgCLpgRq3mix/doo76EpmrLab6OcF9regifQw1Utnd2Zb0v2A0eN/gNR0t0veAgAkWM7TuNXjcjCK3JE4oLHSnsXcNonMTADghCYTLsBntf1P53HzvGW+x2ls1OThAgA1tNJTEg4KMzHZUu0rc9tExiUAsFpZ/JGSa1zlDxfGD9tf5nEZ5TxcAKCMmQ7ZUsInMxGRah+Z2yIyNgGAEWoJm9XwW/UaUuPS25/yuxLBCgDXma1WqL4Smu7pmUbY5+n7w/ssjc1KUS4ZFwBYMXtblOE+tivlPmxXViMAMPhk2bGoUPHxc8XqKrmxXCM3cxMuCfjZ1RNMl9LjHaz0EoymXjQQ6Zsify8yuCehRraDQJIiNTCASjq8IDzp1a1hVyVY8mShJVfQiXhp43c4FDrGEh1XA/b8+nnhT2we3yWqveySlvidXS/Y+6SbLlLOZ/HnFFx0XQgZ6b6l9VfH6BtQi/leYpe3gfhyGjvg/OTZvEKxu/41Or9Kb7bY3t5FLK8Pb12RmQtZJHAj/RY5246J3KJagr6N2/uNQyPRd5k3Z7gA5eHJ8/IXa143Jzmnfu4kYTxeeDGYul7V5+zCcjsrqtIXftXldZpjOQVIFwZeLesr/AXdboxDA4UIJZpr8+fGyJ8Iw1QjdZ1x3o7d707mtzkSM+6TOZCOhfecdroaN8fIUjhm7P1uaWH335uZvAXIVUNyaX3gvWKsKWBwawEyLdXRVYuMbjUUGXwc7MUAhZCOh189KB+4cwQWICMatweueEGA4n0BjMGsTaI0kc53kPDH740e0uRwlx56dN2x+uGI4+CPWHKYEsQOvve4E/Bsj/ffuxJ20MtPHnJH9iEsOTj3zKAk7VRwSno3zUwWL5KoLg4x5DLIzp1L0EpXc5RaItCjUFnltO99wRgDfDpOTiA9M37LsSxcHVZAyMCOZd5sWs6eyFQfIsebCgenPBmf5ekeDdcbISC3ch2h43uwP/oLqfNs55F/XZzkHk9C+PvLHZTJx9dL4scVjiev7pwmDgZ4zQ17IBYA04J2q5mTABHBfqT2xVrklodhg9KYcjYruVe4NUqqFQ987NCLMRKjuSe/uYxBRuCFqT6uTKA4Xts29EryNTy89gGRZkBKtiK7zOT5LAHlddfiRP+PyOKGFUizNlsvGtot3kByxt2RL3gv7irZfuq1HdyKCj6uvl6/uTGhfo6JI/B4OY7G6YcrSQDAhr2Oi9fa/KV10XDNuPRoy2PyuudGOPeiSVx+wmWJf4xJ38d9g4VztV87SeJt3NhbcoQTEsr0JO+3PNH4+/2dBcCjyaSnKkc3qSNvdgQwndfYpDN5ns7SuEFBs3BrOsN50ygHCUuWIdYAjxMWXySm0+LroHhky+RsyORKYUBILAFDj24oXX5Xphu3DNQjdDMXQbsKVXepJvipHvvLyWD6rF2kr7aUfQR9M+2v/CMofprSpq2El9z7qCPg3cw2lHycziYWKe0s4nuv+iK9yQ/l2FnrN7GY8rbRc2hJWC06mFhwcT1wBP0GF1BUOS9XfNPTKp2C2DW7cN7phVzqwXsIiBPsQNVqIOF7aJOFCKBq2Qr8Pa0AEb2hEISgzHk/BiiQysKSLBIXnU+rIzbPD+fzBnlZshrwgxuuQd+0xfWG5OBa7tJjKR1lbcCm3r8nITF+YoxLw4U7ykThQ7vRG9ZFBVaGhI1bw7DsKMYIop/dEJrLcihGvybsQEuo3rOnhUnXfnpt2OyJlckxT8zt8ZV90APVcGZFy2JyRnZMujPoC2EcS01BtTqv6cSrt4xyxf3C3Z5vnFEsi7iDDBwU4Gkf+uoeZqNivEk4Zx34SPT2jXGXRK5stvy210mjJpsrMNeV+Omww5LcczCGvcRtmgAnZ8oCHCI64M/nrmZqCRdiLVZsYplRp/V/2cxJYtbS7u/5su1NMO7w92Mpv6LwU5NuWcDCFb0/duYQr3I8WdNg5QiWZRSiIf7b5jlgVHP0SwKgp/EllFFHXlN2tVmNFoWsKey6EOqnTjJ6TFV4eIfv431KRotjR3OlaRKSlWDE4zOJzACAhk1DkxZeDSnVHg0rQxMAiPScLJ9DHy4SWHBc2tmgzxuOSXcbNKUNYyMb4SHk7cp3aun00dxmmnWStQ4Dl88MAFAMmSIpdXyk2h1MvmHlaAIAzkHfkeVb6OiFAr3snSzsG2PsLnoqwceoW3jGI4jfdFqcu0RMBeDZargZEQ5PTsXf2pkWZ857dppmWbKWMWZymQGAWUZMLRcXlielXaUh5WgCAFfSTVkeonsWAySwii3LSrL+iswvsIB/8B6ycecHP3UUFygtQgR0c6RyzQCAhYBrWEy4a7szi3PpltpuAbybpfk+CD2Loyoey/8GRjcPzYC+l437xJiAYYU9cjNMswMLE2eNZX+UvSeHkHEJOGDazOwpf/R0VElVMb3SStfHB+mPC1NM0Ny7ycio6Vhws2fEwtCe8+zlpmUHGagEUQVvfrEg+KIlX7FT/DHjfHQ6EFlWwO33Rx/pWIll0RtH1xl9kXXHCnMI0nA5/6rjBC3otKbkl3l6LOg0THhBQuaWVBgSKv/fcwFpOQjpLicopatMb+fKEkoQqo8eDo7p4cI7uqEpcc/meu/cUGej5spBl9WsZAKxFAWG1ZyRLPK4U/bLtUbvFjU0maV4PDSd+U92EhNk0pzGsjJxrmjMoiJjXjogOvwHe0QvzdrZGv97CM8xd1z9gJLRsa6PVhskDDOPHjbofDpxMLAw9WjAHeSp1pFLa+sioIrEIg5+tMOfb6trvNVheKoR68ydc9mVwosB55oAJ04UYU70LKuOXxvGCbEPalWFFn75wX5guHPkJ8WFiHfgjH4GoZUQY2gcQ4M8Jc/BcWcqt1k9snnNgZFcU3fT5UqiOvBDBnLwalvxWbiXJDxaHZ2aKltaSh4E7YkZyw7Y7/6eTPi9HEaEB84fnjRG5XqkOoyfCvCvl8QMAMwwfq78HuGzMr34mXc7f5adKtDa3EVp9Q9lAgCU4dvxKW30h//FPaW9iy/8a4BFjZgl61i9rNN8BmFOrjG8MTGei7KprMMX3mgtcD1vEAyaLIPTBL8JjzVzsvLyMSN3jcVthAw3PDq9qjX1S4M2Ckfhx9AGVPyPFpk/N1TvXzWtR656ldgoTVL1wiK9d4mbTuzGIvC59r3r49lU614fgMMxVABQ+H93bMCP0MmTgzf2IXHoe0e3UU40G0wIf6NpIBQgtZX2Lkbr3uyCaj87moqxM2hzS2pARjnqR2d3zNZwekdnsaf64GolhoQYWVsjrpOtFUuvQH3rFBVcWOXMFdvwkPDtVEQDzIurkIwbPcvgi2c2Oov/FTCfZwioQu/Ex5uKuj9uOreWmmvqBPkJ59c7Ujt3WMtdDKdkuJelAo7uohZlzXZcqMI3RPPg6vOPV08HSCmCq8wtSNatdCMMO58ZALDR45RwNpTSA1RTansPepinCQBkMM4b3buEcXtqlADAXRwc1QaTO6A9xgZNVw2L6PKhDVB4Y+vswfbLS7tTi/CvxCoHII0IhqHURMPjV23HVx8p3XymphnBT8lTDkAaEmzjhos2myeD91b/fWXbkZx+BGcdGDWlxWo8I9q8PiUzAMALbZ1TwrSKokufqO0t9GGOJgDQ4tCcF93vshfJNwkANLCKZjWaQfc68lz2ivjwizngUx3BgVFTWoDIphzRd5YZADCyqHjJEhQm4xbmkwUKS4bCHsoCmnZtmO86eelFoTb6S2VsYOmFP/wuPkpGQ8ENQkgtxNa+UIKt9wJeKKgCbHefqCDZLziqD0wnUAAMLw+SNLYfvgBOu+E8dgqj4PPaJji55paMnakp5AsgqvsVs3Xdqogh/B+CW5TkhpAhR6DsF3TDAhkAyJ6ASLJto4QO4EWbZsM001T7H+2ow8Z0YFr6hAJXpt0NknV3zd2XT58b8/ZTA6l6hlHtgcC4Lin8hoIObYC+W3YEtb2oc67/BII+ZLWBU3OjuoOurzPPN+wHPLhjj0Ok0XF/UV/J6eQ/08IuzTClw2SS+w7c9pF3qmsbSqT+6LmPrFE8OmJXcu6izrgCRCHWQ5QOi0KfLZCREk6HLgKEk20wmoBNyzCmOQAGN50kDq2/PP2K9r45OEwBAL5WBzOpL+6D0mAdhFEyfW3vPKxOrklHWqVaykoPkuFe31P6MLYHLnJHaEboUK8/vvaiP2O35hMeWIIhuMqgfXcahP5EGxhFftGwLUaBvNlL+i/0ZesNLTAS0oFJij5QQ/OUfccOE2PweXibuFZHOC22yZTcahan4YYpzmt7acpaIQ+u0WRF5PonHf0BXop+1g4Ajk6OyVoMvIkTW6w0GCktOZIy0zlZivVnXoorcNjkBghhd0s/RxEpbiCFVBhw0I77i4qWsnZgVXSzdNsZO3FWOg0y/EIEHR9Epja676sqdkfoQkbc3QttMCNABNysQSnIHsZYYC76c76DAxeADn9S1+rlUr0e0ZpyzcZcsWKKA+yQzWy3G9W7jYHHBptkXXW7UF4tIDoRFnzBguxWTPUTLE4JQAz3ac5IBAduhaazCRphTcoGHhGGy/WsrU4EpEQstMXgbee4OVQSQdqJlsvXKQNaiTMeuh+wGdGUZ1eF+vnI1PBe9IqANU+ajyr/zrSKQt5ejjTdSjsaIEFRTqJFfuvYC2uxvTyY6pbQgCZgRJqbj7I/HSEDUstg1cggF8WCzryIL/MyGCf87hSdHdqb+D5MJZxPZPDDg1hSd1TRHAXFzQTemKVu3m3kL2GqXJt/WFhNjjCt6Co4YwYpLUKJOCesMon0p44BLWNAheUM0cVAaZ/R0vE2rngxF92TJdpWbZ3LUdW8GcMQU8DDo59nzq5d+yQiCivTAVFtA/eRBb/TrQY+ezG/g/hcBmZkVs4MsMWyZI4P6YOa0yGuRLxYtKMrwJC5IzjEfHp1Sh2IaX/BVMEuneiy44FnZ14Cox97aewFlZsRRvOaEbsrv+7OrMzbiPJngr8eMzwrl3BF4sNnyMZNkzSAxZZkm/ZUjbL9kBI4+3UMk6CfIFovheKA/HPWAANsdKEwuo+tFe8zFXkqmve6z8T0LSkefJHC+B20kIf3OzoI0cSp5fsDHB7WiXHppHn0Hi+1/04JmNX35xFs8eesmivjwTykVD3cus2gmWn6VxIzADAAM9ukCor/17hYxdky2ymCqXZWqga72a68TACAuNPwPLpqMx/gr05XOrX/K9+TwIoAXCugtXip8gi9+iJuKCIS9wGiDgPiOYbiSbKcJ/i6r+v4a08IUF2u9o4YapoCUKuOsfxNs8eUZqrCT0Sjg3cCoT4gwQWrVhwwDBGURIpOIoCSJBaeWN38c3HnKtDV/C05vU9bAPBbtm1zc4nzJD7oMu4aW8+LcMQZaAgiQ5cwNv4gWXGAbc+WczuH3PYWINKY7dpE49N3WQ8A82lQd0y8lnb6q0GMbXO9GX+/oNMIoyWObT89OH+q3Or1UP/yZexFdfskWv4a5TVbskQCfdhVmyuR75+C1hvyqG2hBEg6wYy9KrzzAbzxWNX69keRiYvNl+1u9piASe7QMgZEkdCuxyy2D0rx6L8Bk9OGas3T0KKK2WnPJOjTpH5t2uS5uqyHivV7CMbzBhz2mOEbvDf34+Q7vPOAYKM/GYcloc0TgdAgEnR3uhP+pjoe/0y62dWA3kSvgeYwny60ILDupqDbzPKQepGydj3S5uNishtAh3HlYN1ik3TwKphaV2BdRMraoBrKmaYv8sfMlcr/cIYbjg2G1rtZXSspbjTrhHeSBKPhjLO5ePWA3Bn00LXL+rPzekk366gPHGa2ckWTJtOOb2LEuVtVl1+5Civikb9WIw8LtK8R08iwqb35RXMY+JWwWdWuphltU4SUdXf7Go2GhwSmsiFd3pi+gFUwhQcc8EkHoI2tgmEWUyua6zjTpGVE/bST4AyuoZn9Zp0beccebAast22XgpGtAiBaFPLjdMlpwo/vlWcFU+1ZJ6BiugsLBtpEiPOw45TYyqw5CVHoUcmsKddUvURBhOZGGo8bLC5Gy6xM78jr+RPaxiYoOA0mupURezl9eY/zp3uOPx2Sd93neg7saNb4rzxNf1xqFGu/MBtM5XIPMWExcybsy3SmMwqa1b7AQgqc9Q+VzqKJTaCqcaN4ElNiS4Qt2V7vwrTCmkOCcSDmw7Iu1r+QymIZ8FYohZUZ8EZoYNl+MiVlV3HBE4T8GK/Pwt8RNmUvAMTheAQL4nxxU3wj11Z5m50E+srVHLlyEf/yoT4QHelpHW1N09BIwy4dp08O2vGbUKsNVPE2Jeae8R/PVk7vNkro7BMOiq8mECPpiS7VJTWQsiUpgfYBPicWn6dam0ZVEPMieO1DHbHTCq/MSL3gfsxY7fghp8aIXVyJyoL6Nm/kviZxmfIkcOIIMFhw+TKxa0WDeQcDDHyRnIgmbaSXwhyfEc5uaCDdhvxz1qS9h/CLVbHpzRVET3SCmSPerdmqSoVgToIVoYEdRQk/idPWAqZdV0MJ0w2Xb8syyVM031u1qIk+03opN8JJywCE2AhuvGT2wjbA0FTwZHe6qLuU0bu4M5YxcbFb06KQ4SBdQ5OiiB1CAAGLEPsPNArj5+FhuGHfzWwpv/aECghbMXeEysGlUlfoNnJRuvsTTKaPPa/J/vWP/v783jJ181c9i92Gv7ZictBDWkn4WFxI6e7wO7wTzolCmj103hj4Gk1Yi5iFEEC8tIOLLgSMofGK5CL4VY5YcPzt+esb5kCFMQg7OkHHwpPdv0zOKHJ1/qJWgkZpQOJMwvLeqR/H/lEsHVTEewYv04Un0IEVwOLLlOxipZZb/8sgUxwwLeVQkNhguQHeKR8FSfbM/sbCmyJbDb53ZiN/pyvwSf7r4gZ4BH7nL1N3ZSkl28qzzPsKZgDgsk+uN1v1hJebQhWLVh+Ad5xdHGN7BuxlbSYAcDw/I2dwT8LmduBcefR2Ld52Vz8AcDSUIqE8hO5zfHFDU644U9Cy+MsCjsgJdk/OZgbHa7+vXtwN3tWwpJqDVIUhJXUCs+vMdgC5chbOQVXLbO9AYdx3mpCyr8ikL4FF4dvQvrQ2mD6D1WfpQ2jnwX8SDSSAOfcHY3hMvMrdvtcGm8wmduvVNX7HL4kLEsAsEtmWLRUt3u/NoJ6B5nK13aPHnGNen1S9HuowkKRIZTEDAB1ApslKBysW2yeXyg6uHjmeYHPdw8c5mgAA4WD2VJsFY71Ib8vertx+AIDFUCtRWUZL9ikMnDSOGSr1b4bBVQzGdLPwzgWrqhyjw0OTDyKe88I/2KkaOsGjekGuRcj4coIAImemGQDgAECRlf6cWGA6hMLujgXbRyzMv8nwI86UOfjPuHi0VTkev4n+aN2KIEp8+KjFMbjcNoih8VTg/Y2DbA6wWhCd+txc1934A7zdM9qEajw6Hh7UBOgJLox7JSnhK9Mol9Wv0nH4KdbWPekwJ1pMncpwo/SkoDbHVksYsss8MlZLgqsQtpEHW/IhQxkLY7WCdaNEMLw80Yp4+FITUkHtvHs48ekw767v8PueXf3n6CnfnPUMUlibVYNyScwAwBnVErBuslLCDriqcqXZOWwXLU63rlNnAgDmXd5Idu5vvYZyt94PDzPwOAjXPftHxzb7qWeJlw2/riDW4Ti6znXhyaljDdqNwyfM57VfJBYDALU6Dvk8Sh6YumuX1Z3lp4rb8LdR1e1OqdeaTwn1pRD5y3w4L6hsGBzFb9SGv40C7c4SAQehEma4pPcxp9857DyQjdRrYFjSGSKb25LkWRw33Unavc6bZY1SIdrTV3AERI+CbE4KMVW9N2eDZGCoSNMFw75Cx6hEZ758jidpQXv6o8FxHhgPpYVVUHven9LOp5N7vELncOI/Rw9NehSqgZuKe+YxAwDdATtdxcSOTg5fvCLg+pRyv4fasHFb0LgETQDgPFnESLQR2DBy2w+oaa+cE7GruwsCgKB9HNUEg4LPmUUGomz3yBgIlCWmYyDY3I+JgcKxAicGSrLl3sSp80wGgunyKAXxoFGuODNQcNzO4hg4WZl9FpyT+74tOB1f0ZWIY1GnYzRuZtGdHyYJ8enpGjrHBAQJYP79wajWMSr5ovnVxGPzDn3xqQbnmNAgAcwokfFqHQJ5j+rTnWb4pNqJpo8Q2D+7/5S2548lq5ZRncUMANQwwyX0cjpYeYK9vaTacf4sd+k7eZoAAJahUW1UjGShXNohXHINAoAOA6NEWYwq2Ucw2tLYzUDUv5ABKQZpBk96L7Cq3PFKO7F3twksgRuYHY0dUXMgRwbac9w3l9Qs7TDPukYiqy6+9RTibIHVEslosB8VRzxnhv5L4gJDqRORymPE+/1fEhbVgf7n6F3l7XzFjl34x0+29+rENc2L0gYNDuRJYwRB7WIgsOUXu0z3ZCWu2F2biS9sdSoO77aDXnFzl2kpP1rT8gWYAnishF9FbrekuHsy3FFiivC8QTOSAH+Yze1Yn3iVmOF8kqtQUkNadsrYFLa9f6hqXb7f5sZgI3PABdCmg+VMAhgFdJLygpjuUsWvHQ7h+0id0+qC/dhIUhVBEontdqnj1td+v+RRj9JVHSo6Dhwti3Yv4rL6YUJ7sZ6VJdIyEQi5BrKciYQqYwFoavXECVrNCpUKuV3PHMad3VRRaIMkSPvoiX8Bb2qyIYOcEhkVGDVJqTBAcvK/VPYFECPd4V+EyLQEy6NUWlqUtqaNglxzrMqPNbr8hmCaIZw6fcAi+XFbhCYGPFmoOy6qW/JJ4+WelMouKoSWxM5kHhI6iSnpK3/P7H2IlhgNet0JsZ0KAb/1hWT2XqZbYK64QCdBb3G+OXcVZ2UQfPkIUmEk58gmfvzVXiHMgEykSSiBdbSd5hAl2S5+ITTdk9p6FsveqGUdbWBlDoib9nYkkaOMdVHZb32yTikRB0rHXCG4qI//w2DJXeY4OejtUQoD47Vg6seIrdv3dGt9+jsInmUMhuWyzx4fin+6PKJuyBbNRN5KpePGBVNRBoNgNDJEaL5glcUikJ0dsZ5CewRUbbNwh2FxVLSl4/Sx2kvHKS/ZB3+xZ5cIXDuoI5lwcSF8T/Vg4KL3Tg8IrlKrrL3tbNpd7Pi6wkvWAQAm4/TlNZTTnEOLcUgpr/bIoZ8aSyms9jgT/UmTs+I4fiprsEN7Pml6oEMnHzk+i1QptceZ5Z8Oc2scZe6Q0Uod6w3g5uoEvBPAXdUTVG2o40B6ouPJqs8p5KOxw2pSUq+uUiau2E+/Yl4cwijTw0DLZQulvmQ0TBRmVNcT1ozEqMkM4+kyefI1r9ZdMwwbox1KNveRw+aKcPzSd/XuwkxsbLOgdTN+J/wZ4bvVbabFJDfhA0wN0rfHUpqlKcI+zkvu00hfG/y3l3XMxl7I5n5Z7Y0J6ZBr9XRt3N+m28xc6jZUgIFVmHJsDI7cRFS14b+DFm0U1yaAPLD6dsMUTRydyIMjLMCJvJyAB4C9GeLO1YWYLSosGMXjJQ4+SAf4Oh9iDM8+WepZFRJt9UdKDkxSEiwR7fspFbYCoiEGHeblnCvRHnCenm6zamx+L0RtJoNppE5iaVsCa1KyLZEqU076lSbEnN9LIFWptd9uowwfmd2bGDWNYmCkrvSxnV/SizSY5x/AItcosWZ95KUL6USeEW2cnfkvYs/mT0XIKSDNSWIc/mohz0RP3enoVaWpfVs/vE5qh72s288EXFVvQTjE4nwmaQnC42oN06ELRzURnv4ihXkj3UfdWDYbqp87EUsQWywT4PSeuUNNmNE7P5nRpd9geTNUOVj3OrlCNKkPaLQmrsXHH8sLCUyrEYgcRF5o6Bi392C0shR316OjEIkzFNfHYUQEX9gDgkiWPsFc/3L+pw7wLLjiIuLonUJVY25YJ+8W/VqmiYFEaskclUJM3t5jApKEpwoMTCnPBg25/P9VcYPaeypAmJav8B4taC0NnYp+ud18pjBtJV+uimUjd9VcrIwkJBFhs6Z0ohVLIzExE/sCb0TrxxFlFzWBfX9Qeh23J7FuxdTm5uXvPwh1U+iqtKOOC2Mh9T4hCa3XnnI39V8lTJ1XDKZa1dDiTInfo8Jt/+GaMBb85AkwsUlACWlx2/QcFFKYGwahQBjQjgduDAqCKnYuMq3nJkmZ32WDqmkkwD3TPKWtPQQ3paNmmG7IhOVWNj+hsLbdaYgCSNtx3B24f7VwobnnKyeqWx9/z1XZ9FnwnWZ5b98oeKGrO7sdjiI29ql1R/hn1BepDWB29+d78hYu3bmHSSO806+QvB/SXFvtWLNX++DmGrSj3dm4F/x2UN8zy7GIJ+B9W12pl9K1eDeNAUkcSp9LphEVyJVfb16h00fOUj7vUbhO0h8qJXcPqUJAupCPt/h9qLNqzY6wD/kOj1SOuCdj11uvJ+nEoGTAFgdQSv1k98drtjV5xEWs/d+6upN7qrtVIZ8Pylc9Exu4RjtL4JYSKDoOXjuRPsW9M4XogQXoOurg7SJOWQmYiyCYLLhqpjmP4FawjVjp+eViIBYAmumGRNeZWBTk7o5+vmT4Mz2Pf7jh/5/hv9/7x3LJ6l/+mLz4ccebo+D/67xccrubadUPcvHjJ6tzyez9x1TmO6nSsdpmB9XRfzVkYP0DhzI0Tfsu4lh/hBy92qO1KSU061nBUjujkFxvvpBfHcMXjI1nrufT6dest22XjAFxGW/pRA4Yq1PGNz9hA9mKKCWUULzS3RAaOkuqUfTq+81RcYfiTc+WM8vBlKnmMarizs4rHe9knXNyfbhzG9OfO7i9lb+TGzNId3T5us2mqmTwaGVS46sJG5jDeZu8W835RDmfteDvkoDnTbrFKcAsNAbu8fBUhhC8rjMCmkiCdjXYa5QVgSDdoR4xKtZfBMwsLm+0KR3aV8PTM5QF7kCLLvh0GuxIVMT24pY5fCC+oNrBikSD9fR2zA7U/au+Dtw9igoELSqYmuwGo8amfXojEyBcJUFzuasePug2uUDo4AWHCZhjNWLWK4pYiiGdePk2u263R8tDXN07YQBMSvIa7e5Won0HPGnM7eUf7MbKCX8DCNIOv9P5FoGthQB5KUfV+/4iCGtYxo5tDBtGCEUp+hZl5CJFtxWgc7aUTu18SHhwY9JiN3DdsbBXs1fIshO36uarA4xXpnXwnEPd/ZyGAvrWBmUp/UPa1eps0Vi7V7e81YF8m7Sja7YasXVs00OUb6PK33HjhNQOM1ta+twSuM94M3hw/ycL7EZwmwrfFFWgUtOHUXziizLorirzm5sQo+1zfXXVbnhUfwoAW01BZ1x2W0M3j5AwdSO3X8EpPsbBkiuu1CN0/gGpDsTInpJ5dWLWcbJZP0Fpqzt8n6rx9fFic8dM0dEx9bS8+GeTO9o+f8/Zo4tGPuYpSQm56FKul9nZ8tzSQVdym05FanDFAwNdFr/WLSdeCFdB3XvbNN0Sn6J0nLAK3httVdqPh07qT7OlnrVTF1cKY4a0Pl+ifj0UeHaI/PH5FvV/6DE/mT7LXEZeE7zEF65qtLNLnmJhMsNIZ1V1ersUrOQvDLcrhNPVHv0Za0fv694MDsQETq4KeJLIw48PJg2Qjzc2UthH4P+QXnTrgOk+YW9lmAA/dwSnENw0VoKZ7oqk4QJxXOLK8mmBnlhY8d5uIzgIuHDsG1lJo8DYMsHIKTEGDpPJJ+5cgPF+Y1aoybWUUx1hvW3c7jV2EL54i1hvJZ4Bw4iCirrE1CoNvPdUQqDD7T2zj7Q8V1ifuFHBpXLWGhwyHHQHHp5Jss5JZOCncM+p2ciLnEGohXmzNtG1HpN/Bj4krR9NsrjK69b2gUKejLkXuBlhv8yCtWXmB6xYEmxtIHxucixPSIwbvkhTSqFWiUS3T2BIrMFs9fneBh7xapOf43/n8sUiJQG/fQQG1iW2ah0dyetnsdF6jXVHC4knaIJTsqkNQMn3JqIDUXJuhdsUDzxV7wiTww4KG9IHYvOO5GaguvuCAQPEdueoK0R+p43Tly6ju9NjBsTJHdMjwpAom3S9cb+DhNbR+JGWs/asyRQHwaZcimz5YudcBvzBBSmVvEuAT6+TghwlvdWj8IySNAa+CzG0Osyrk1vaieSA4caJsa/g5MHmQAm0zelAMyTjdjGvUXmLDHrhJzKdtnmizAaBUVYKLOKa0X5b1MQs/lovcQRkrqbddFCtgjekF1kM4I0Z0F/1sTr8z/QIk7+sdsoEtUiguAesAvonq6cRN2D5muU98r7arWy9BZDzu1U6D1BGG9PDl2WYHUXr0l3YSVQtAo/PktCvW9ZTKnaq0tgPp80WwOO3dyyvW1Z9O5jcoVIGbJsGADrxWPs+mcPAL1u6/OEeF273nHC74hZuE4via+tqbgDZFdOyARRT7//1osNEewhwED4/oNeWHCbchw+SpXw5JmoEAcon85lbynb9meTOCJ0Z6e6saZb9KBxwiKgdMQG+9ZMoEjPfc4NWRrsKsJ20MQUIrvPuQWZ+oYNe2oJ5zn/ag++QBjv4yWciv1ZO6boJfLJq4Hx8zp35hkLfa+ydLSonmle5xALhqX+c3tQQoJuZubEqhl8LJ9X1I3eL6V64VkXlIgBocSp6WURsM3phgPp91X890XrQXhw0NBWp0ADgxNoBgRsbXd9W9JgD9aiuzUZrZ+gKiGses9IUFsyNfk5m+inoe2+ZSqarUnh86HsEo9jXRhA04A9tQPpj/Eil0pAl8WLyNWKbp4glXf8qR3BHrkEqR3YaY23WAfhtxo2bXvsXwJHZsrlVZ0bAD8+pgAZ7PaATjbyGI3EVwI2Nl2lPOzJJnORcpKMKqw+cOdXkLWDY7YA7ouqLd56RBFTdY/BlylsaD75DSXjU6LSOOgoM/u4cwC3Z2NVkHcg4nanc8XJ67vKU54R27vKU10uGGsgR25GBNa+rJJ0UmpygKJIU8n55kpBSenf4vEco5yuW761y9zl2vI19fh+8F0guZ2zZVQs6wNu6AYADK/NiQJylY+xEUp4Ltmnt1pXDoFqhfauZLForZvUxq91WHVUsv0qDgN0sgmki5Fa6C1PFCaZs13K2hTv0/t0WeMWt/wAAigJzEj/LBifn3K4LnF07fGyxt3LZUHfsT57gboICtgixGoEAOwIXdLw3By4tx+4ArPsd2wEAVtUyufDNPlZzmdx07lPb7TTSh9rhy+MBOqAGmk4o4JRQZTpBu2468wAA9oCDuLjbAhW5mekDtZDZwwFdKxsmBLXjgRoJkNtvVHeha19UJpl+Vyv9rqeZ/5+FbgfsF/qkO4w1sK0ga0xFWOpqz6q8X7zffM/P5Cl3lStxv+5WbQPIBlO2ufkuUte+qLUw70mp+GS4fmIy1nFqv/q0+C3Olx5PWCszQ3//oVoQr0tkPFp9XyG+NDqnxLcNYK3NjDtzF+QSXuidZfg+/zXdra6WvdNKm6RcJQFXKMpldQMA3r4GR0NDdV0P+TTLc0Fq67sMBzWrFdrnjp1Fa8VQ+9wpmTaJi6ArLKLdIiasdBfyzAlcpnY928JkvX8zBnO79R8A6MWB2hM/QUBHzm3KoJeueLCgT+JvVMAceGoFOC4QW1P143ywMr4rWvmnMt4HU1FW2xJNnfG2m4scgN5QLqsLADj1XMQeDv+7tjh1wXGkfr13+iq+dwFqpTyv3i3raSH5SKSFT9HmAKRhzVlGAZTGJgUAgBIArsgK/xqi/4i3YH4FNrRsxekAbffmOgCAEwIaWyWX5qVewkWg6f4R2ZqmdelhU/l+EWZlDflo5AdxSEddYzBWUZUXvPbxwoqHu125jCAQzALNpSxu++RVb0rtNt0HLz7wt2SMcqjpZPt2pOocgB5oe25pqgS52lr/eNubqy/5Pf2NvXteUYnCnvjBMyk1ZF/S1GGb4s5XlVEm26oi5bK5AYAVsJok5gyTyo2AD+REIFPKsaysKztr0JfixStkiSJInLxijPMKRIk4mcSpBZQrCxEAiOCytkyw6i6YKNSCynnZn7bAMQ282T8AoHWANlT6ceI/C+gUqkuPmKgc9eGQ+su8eEz22nZU0HsOH2nORbxcNkGvXC7wXd0Rgt5UcZJqIouDLR5gN33HeZiNfVN+9x648kGbWdTMNzydDaPXNkfUT/h67D+nbk6HJW7oqatCU8hgXgUMHk0NL7AFVw1soYJDU6Dgta8wwaEbXkHBbukSmp2gbfn80BUgmCoL3AoO7LvQwNwLDMy1sMBMn1bPdyGBfRQQmHpe7lszP2BbMp9xgYCp+wT4ZqrvQgDzKQDw5OeE8HGS+d9MnzYtsOctHDwfY+ip7mtNyL0bShDbrnRZNa4LsYjFUJFQxVA6i1ixBsFiyJoCAOBM4uxqj51wFnHhUjv2mPu65LUJkCqrZGydCnhtb5YHABzHgJuggpuq9nyrPe3NbzHTq+bJ6ZQuEyq2T9Z0WFQlUBnWsgepWQY12Finoic49NR8JhRw0lOvmr0FVTx/zO7BA9/sk2qmJsdtpovS3NSLu1QYrd/aOwMEnQNckbV4bwvgmXrdxkWaHPUlTZqwqs1h8ERq9c07dQMAFgoZ8AJiZTNjYOfquxtXAVctBEA8FsgCULdJ4MzfClB1IQIAkKF1QRJsqjf8OtsT7l7r312tNYp13fkPALgMeXqDH68tnIvTPA642Jr4unXZDC7P0t8axXWpFaV4oiC9za33A6Qs2ROUlhjFU+2fWw84Td/DrtHkyu16giYvYsx7fIhqdLUDACmjacjxDc2HaMJvNxLUBQUrDQmkrjMPAHAOPMfCoX3LasBsORkUK1yRAXMrslGWAQuJBtTIgK0egGJ5YeHnW1a0hz2c9A5P2uN8BldTJx1jyN4RCxezoop+Bv3HePDbgzX90tQ5J2BsAFk5Co73VlfiiHwM+sHyLvcpP5qcdBxizcIsW9lK5P18AF+Kxz+jKP1Sk3NO6NgA1jzMuJU+RaJrU6+HZ8cYWCLS5KzBEaZQFQZwd6BcVjcAMNH5Z4AGZXOngIys3fRovKRqISh0e0XFOqoGFNMmUStAXxciAAAIWtxIglX1XZ5ne8KsvH9zDU5r6z8AoJVBN8VPXKCvneYQYEBbPLGZKjp09J5lqRV5KV7gG/Q+PIBXpxqltHxILsOxHToi5GdK6SoJ0x/yd7unqPmdaB01XkoLENmIV/SdbQMA0HyqvXbb1LOg6uAfu2dSNDOiKpC7CwZZWwozNqDWWeX5uwIYmWUZZgVgbNecTSzAQruRTwAATMsqqkDMmW8kqLR2TGCS3XBlJg0wa3typ9gBAGYLELFKSrHUiqvITEArZkGcmFasVpKIAE3B0Utx4MhyMd6EPgUq9GeSkMmUeljsqwoymDJB1h1M4GPNCCq+s/ONvVBd2SV4OR7P9eAVrLnD3bQlq037MnmGAMBNECSmSdRGLOTZCaBuCwY008mJkwggZnkeOcPHPyarSssrWAKA1V4iwYpBA3s6EAEAAqQo95kpiAKJpvba/6bdNLE3vf4fABhAcxD/2bKyqtqym9uoLWu8jdr6F7pNtSTVunMgp0+0MGTB8qqYDy7i/FfN3TLIp9n9y/dd6S9VK7tBEHP5/wuu8SexrKyNuqrpYtSRfNOEAo5h7IxItmrecd5Bolge/57VfztvR2seK+M+zPPh2aFQZBR3On362otut7vtsIF+hUkWMf5f9aDaKsHnAj07CFYWYvWQ4eXH//LJg7jMwzd0N70ThEH7GprT7W0XBpQtdrldZ5vJspR2bzBGT/Fx2pSE8DQXTwEApk0lR3F8XunjdCy/ndccNdetMEUVkHe9lXvGRXkAQCO9mg6RNeXg3DyQG9XLmAnk5gbZ5gpyR0GD1QWlvUNRUYU0XTiD+eAOlMYassppfQAq0R+HlyOepxeGvxCaHe8D8dFXPMO0qahclh58henRfNudZke7ORasY11nW3SackmGAEBbgy9Gsp0lHHCQzcQBq+Hzu13rhgF94sJg8e6WDgHqfBLwAZxiEUKfK7zSXThNSbS9IJatf7xGsCQeduc/ADAStN3LfxYGTlXbdnOJWljjJWrx0rJSOqEUTuArRGUGlbYn6e/Li0iYCrokBBJmBwMlCkrt9rvBNJSuCsaCFTrd2dYOAIRVUIDt+SIWOmCG7SIeWiIbK7EqqgGrdOUBACw3r6oGKnBxUwOy5WacAknIbM+C9MqGlEAaTIugUu3CPb8J5Vf4iD6D5wTxfRutuZMdY8jUEAuroqIsCm74wzM52mniau5cJ1ZrABkYCo5BT9Ehq2ukNx58j/E7PJqd7DjE+nQZCkV47Froi8cGdr/5aXauE7U1gPXtsrWlKeqwjjMP4mk68fZGs8PdtKSqhW2dQyoPHABIxx8fDbUjmxsCIli77Fi/rGIhwu15LIoNVMknURbQMYtA9/j/K92Frm0UpeX2oqlZ79/0tmyo8XR1/gMAA0JzTf6zZVFTNWc3t1Fb1ngbtfXSdqX0gFDLAu6AcFy/aiGyMrYp2l1R32DhyVrId/e+tR9eOzPNiRSZsNK3Muo/NHA7tQ1MVKtUH8dSkWPuPuJBaCHm5h3t+FeR9wDMmfJ4GJghb7KAChknHAESWGSk88WgLiqx1Go6DHukPvU5R+WrPjsgempO7S1xDVdHXx0yolQMn1w8nYWxA+HxFOwjjHMzkrkoKrfhoboNP6w8fTLjm1xluGII/VB3yveUglkGNiRy9XTWItXqB8HSZH4OKsqe5nCbYRCcZYO0MZeMnpZfIfdVASXvtjbCWmZFkga1K2DxccKq6q11QX/zOqkr3PrK9K5h6LwN5PvHljzfA9llamCfJ4Js3x+k4Gb5JjXo+HTa2E9/0ShOPdSOBKpQmHBUrWzikv0Q6xlZEGdLdG2jxj8IXdu5OGHQ6iDNwXs0yTbUnQuBSPmmKX/ghauVYkHizLIdbdRjAtUxAZPry1IvNGmWBjhsX7pyqU5/yxV/Tijy+RR0r4qABvelAIZ65tOqqdcDf63HwvIKbaIjvSIN+v4VgDwAiKZtXxMG8FfTerXwXSzO/JlINOYNKuDU1Vg4dxFYT1flmyAaahfvpTeuPTxuwyBUuKlsALbT0XmkvlItIzTv/ZqBEHgFx3RJ6TQROBFF5tkROGWL4fPtl0Y80NNYRjkxhRtwiclDnGBLn00P2fG2ljzZfluTL+FC9hxCRQMgfNHqrGM+hG+Ew5vx/252u1DtdnRu8PoPS39rJN2bU381EaU3f8X1mA8CvcfFq5WESfIJH0HKTYCIr39o7R/vZw0POZZoBg5aD4O/Ei31lDw0EzEMlBVfIKTIG/asAXsdtm3sDyrJsrBE/pCNdycRLSo0ErMeb8PdQFLDL5jSnajq6abPJkF+MpOL5XcyevjGZBr0AdGC3Ccx8wUAf6CeLpZz1yiqwyA4D8g3GTVMEHoBTuV6kGZCor+ibOOBHWLN9X/qjvX8Z45j30B5ndBPSyTuyHSAAYAoKKpErRIDFLYMmFBvjmqmscs8rMSK5nIzS2nuwB0jze4viGsb1T6Z6QcLe0zlwNY9leBPtcY26KYKVLxSm+pW3F7CCIFMNPCBYn0N0DI/4fyC0E2ZCClaq8JjdTni1Byj8IORFv/d0y85E0deAzl7AMAgxF/hAKkUYkCKdwwrlN//2zIslt79hPmLGvVBiBJzkyllszBXEbOEkZxZgzdeXW0opNzJZrmqVsCKLK5qs9yuCbASYApT60qvgSm62kofmfgsEutbmF0VzloF7xaBs0l5bMscm13s30ra4UgbScAtRbFmOFiVu3tVmTtXNYSuVfUfFYxBUOoHx87XGK0U4Y87xuBhRAysnMrkvKNJYumNRikNrgOG03em4/b6d2Q589hHTGOtd/Iqd79UxEw8UAHnThXfoppjW4Xldosu4HS5rjJEA3300r20mymewC4obqjwc1qilC8qrh++xoECtBy+X7UTa+gMMHQRH2rXvXoXdzGvMyd2V3DZauCqWMlsLOAKXcveDIArzY/jzS2DO25Zj6QB3kF/iBay56Q+fS6neUxgndEEdMmWq3hwUj/wHCxTy+u/p/jriTUiB9gdsfUmkXeveIASbqRnu4d1R7LjQME34+uYp/bNwdn2q8a778wGYLXD6kNTR5sz6gfInyHAeaznKWsOgyr/6jv6drVfrrZHMQOJgEyLpl7mNBnesYN3kkP5FdJL8vFV/PdJ6urV7JKeGr/sda6+hLCvgNR0mAAA6QYG1fiYSktdRgm4K//EIlHphs5URxJVEBaoWySqUYikxgIgWRs2ol4rtYW55kRzrmGl03lA8FJSbHLdHgCQtLz2pbOQPvGjW1Acp+ktUENLHOw/FRiolSgNAebEClYOYjVw6pjARpTUhV2ZjDA9HsIZo1eM5Q28xEorrRzbkC+tInU/BABxodcT1zdLYq88d3MAsyNVrohO49r3qJbPvvouHNnF3Rn0jZtZLZi2zN4EjFpA7AEM7RHbXYrtadfVwYBI6qU0TPjuTMFzNoxW/54O3QAyX7QeBlQ1e2WpV+wDxZsvteNGc/b/PW26AayR169nW01B/SQesaHLL2bKxK2N1//3W13aq3bthol9I7hlMYxaeI0uzJkAABV0W3q4RQYLUtLLGhBGS9Nnu2hPbVCHzlVJIBor2rZpsdiuLb0RBd737vtja4GriwR5R4OdAwgA0mjr8AdHiNhvjqEsE/cOPolDc1UphqX2RAEtBetQSVJYJ4dszEj3uWDoZ+vzg3nwH+P+vuQWD9B6hKM0gENdSZLsaoADPeSHkLhYjsEVU/dXHAS+EYAhAZytI7lxPat9AlZEAQ2APa6cMSC74wMAcIlE2gpY5CngpHlfQ88EkoaNfn7iDHH5/O/JVqFue5nlYJ9ymlcFdh4tsm5PEjXSeP2S1k1s/7InCsHvcSnOYB6zBOPAAtDWn0Lyaqa8XnbeXcXcnxJX6Q5jLeAu2sbvJXKRPrDgAga8HdJDhxpXED023bdvLsHKuuVuD//mqmsOHibPXkgYh2Ojeczu1ZNpxJfhib+vezr7S7P6+J5EqxfVYYK7FPv5zL21b1jdW5d+EmBdglcTpTC8RKl1JgBACpgemT4eQF3yTwaJOhg6Eyok6nFIIGDIJSza4UhqgUqHKACgapCCIKJJyqLyUZbscvGYYvP/59kPSFaVD8ArZXGVZZc2AOAeF/OohSkb1Evsyk8QXdhsp9ky2JQrbh3YtJRqF4UfuTBle9K7sgdVLXCB5kKjrusTlarAy0sm7dL0RXYNPcuz0qDkuIZh9cagucArON5Dg1eUYwcQX7kDIgA4CLyO6zsO8fV47o4L7frYylWpEJDObHN4b7awWtlW3i+0wvVvmznSFLbfjEmZ4GEKd28THNtlmiJsSjx4Yppmn+ER88CDD+UpfQnhoqlh8EqRE/JlaKbnRXn36zj59BHGeX7hcBX/z6QK9Wq1VxQMNcOFZ4nm1pkAAFvAdXOPc0VrUkYJKTHAKLeNEtEZPJOqBOZspZDSkGdS4LZEEg1YxSJ8DdSFixAAAJGBIOKAP8SyMjflssQLjiv27FptAGD6nulaVFFY5uI8O5/PKrriNKMDLVjibIlxYqBNLjU1N+PPQZwp63qdTEbFirNmAsf8MMLZkl1zAWfbRzg3HF44Ot4FwOjk2NLEiTsgAoB1gzPj+m5FPGu/3R3Rpymuki09WGm2ysM3i5pJuvp+wYAWbmf+xjdQYysz0EAdWfZIA90nIGYKdNMjNglp/YwmVxN8nzH46JALT7K9cjRDq/+TltsAYhhak95enmEffB+7GXLT6y+twxOy9T8uW9N3G8ATtvXcRSQ08MftGW9I+jZfOvQTte13eLOK+cadG7e6cxNS66/AIxf2EPnWmQAAPmAqTH00e4oB7ySg1MOvYuz2n/WZKOIGHaIJS2Ixplkbr940XK2t6jSIMLxZM4puTZTYG16pDQDURGyxsCqw4ZItgtEzq6rtpoTiWOMVkVa26YKKa9feSDEUrNqq/bk3YihqiLD+k0LxuGGCf6tCRxqz/0K9XPg1+8rPuT2/frd4QtKFkIRIXkBGqknIsYkW5S1HtQ+i0D3aQrmmnk1rcC9xfoI6cwahtVErYK7lKqVIvRqHdhpaUKRP/qKboXQ167rpNYfoUY1rXg5W/pvBMRzep0QU4duxwc89RDO9G6dvxx7qpCv/B6QkFD7LIvsjt360qwEAKim/0vjUSmRLVR7Z31bTtrnSmnS75F/3yn/4NQ3YoXfmuoFd2crjNJx4BoWrduSnI5nibfkAAKZ2SRwjXPEIPJyq7Pj39NPM8JYrkT/Z82eWnSwAwGL/pHZRuHR6LtGZj9QeuczOlXaYaXW6XHH1bEE8vlwdvNtgX9KVels1bNc5vYVKvbg6pUuX3uXJacV3wYDzpMnX5I3rcaSbgm+Tu7Kqd20Ak69LBOZcM3hMiFUWb/jWR3oY8SvJ5z7Xx8ZFajU9RXgTdU0AqNYBe249O15AV6JAF3IJ2wFDWpi4dkSEW7sC+4sQAABJCwoiHau26JS9rbdJZB8YwZfuNbr2AIC+rdJNykgJU5A+WNXuAUfEbOkycfCI2I6OGJf1kSYlFhNKETcUL7Ek+8pe2HALlVg+LkCsVbi0WQdduyK0OQ4P7rrHiEWqMmnK6U6vqcqy4fKHrTm4qsuQLsIUM6R8f2G94O1C9fLY9GM15b8V7Lsj2cNkrWtTtueJ4V++Rnx/1v3WpXRD381zEWhDtusIqGB0JceSmc7o/gpBurZ1N9WiRBM2i0R8QUh9psDjWBe9PnV5QAuwqFV9gQezem61L4ASoiFMeIffNI523g4KYObh55R0fAV6jDiV4henzP18XgJSqji3C1G5/oaxiDmXRJdjAmm68BXlZWo+kYPjkDZneFIJUvkzzhM/GEkLjPt2Us+q+vDMAvZz+ctoLpSE81ZeL2ovN3WW1hjHPlvE3OFgjWF6XhsOHu2UyXUAWVEdINN3JSy7pNXv0PzvapxweuVNcOOB09X9pP7TXr3CmAnnAIYAAavFFwZZjXB1jk4/FAO5alfu/V5Q8+RdIF5GGLRA9n4C6IUClBqqs9DYtXGenLLyA431tNAneFV7vgEZigoaPfvIUVBJnbQ4fyBHinhbFfEs0sueyYdq/RoAZVioVtAszTnfzqhVjvr3sDkl2jSTCd7dlcmrYnmBjPoGybEZMoWAMJxnM/hH6bSWErz2pHA+srzqTArc/M1P8dI5kG3ni8mT8/PpVoGTO4Dkvx2lCOcFXt5JhtRVFv2hOT1WU6GlJuKMSwIgb1fai8klUhTNyeMB36ZYmwnC2Pt8FjGbTUgcHrhQ0a+pXilBPTkwNtChcpX9HGC+hA8i8mO8wj+8baRepbVZPa9fq8ITWoIwFQBf+3n85o0bYF96iQR2aqpEMc6Why9QSV7Qf0xbJECufAgN/zsDRrcW2AgoQ2uy98WyuZmVMR5u8OHGJAbrJQa/42bM+7c4F8K6r4JIToLZRfW1Ohxg21Nr5FZp77gb8EW/e4xIWWlUDI64RJMnTtFkhVs0DRjHaDLaB3n+alKa4CZntMNOvCJsm9yOvhVOn0SAT0dP+0JHxGqarLGbJie4vMkT2xmKhPTYT1MkLOjXP+rNjY8XNYXBj5pc8KQmS2dk2HhT0/Dxp6YRwaOa3PCppmB4ldUerLSAP55lai+Nlhw+3hXThht25j0Fz24OPcqQQHbcTAGpvbCZ7rO1q61HjnoojeqoRf0xHNcMgyohXT8Uow5Pt15P7EOKq3cB1P7oKiyN5B23aecQdhpV3oV6D7WGs18RUwPZU6gRwXMoeUBW766RSVV2h2XSUKPokreq/8GaPRJ9FCUX+Z5M4YVfepsdeu2LcCkMLc2s9Z+IiT4cX/oqqVpJNThTbu8MU9Vwsi+v3aVNp04IVqZ7lqri5E71ToQAQKoHpik7phzcAhLU7WSQmdjd0kA4M1h2zjSQbfCHgWkondEmNu3Bh/K0KoZwm+M4NaZNGPLteZkeRsmH+k4av030ni5hCM/1NsHKrmJTpJ4oJxCm0kEJg2a7UQAALYCULEP0PI1XggRW8z8qw0zzaqwcXflopfyauAvCwO2pWzdxAyGSeyJgm0WQ3Zi7ixAAAMnVw4nc9YVLSlTt2yQS3aNGKV17AAB61mWpUlLYi/RhsbJDMOBGLpPdpmR1OWKyK9ygXDYUmrXlrghu/couZU+xIswaRY3HnuVFOlyY1ymbu9SxjfDEkbol3W4TC5oBqdumrD7l8nLNgxc1YDxeqXu19SQAaE6hG4WtdgNAC4KaKsfXTuLcpWpqc596ud340Wmb+ZGrzPrRVFM5ugkBACbAuGq5Lsa9DUzZzuxcCQFlNvYgRCcgcA0xok+M18xppjme6vLeaJ/7h+i/8p6hh2uouBECfhF0CBA76oI08YSn4gtxz/OTLnhNpVMCCCp+ZOZfVB0CBBRUbD5M3NQorx2TTw/dh0SvymCCir9Nbs6q3mxB7Y8k3GZVEZ6MKIGYLK5GAQDm0awE3nEPsSTWK6OEusi/5pJoV94zHeb9b9CeMNCJRNcjkXQzL1GCa7pEAQA3IW0jINL1Qb3FgcS+BrpX3bUHAPRNdbNXRkrItfTBsk7gOCImp8vEtUfElrXEuN7E0JOGXV+TTRdikc6VvXu0pUIlltb5E7XtWiqsviyeGh/lwL63h/9is23Db9hjHd7JAbJCMmRi0i4n0i7wspLspoHb6S4BAO6KpLthG7oTVKziIEyD/42OkLfP2OMeGaeOWKXvkoyz1nKypB2fNXP5ila2nBBG2/EBAMwNyTQSsgw6EGgP1UAKGrzeygIAwAWIKAVKZB9ETFwmeVP2LRVZpuywWIZw5LKx240i3YrPkAmia1w3w2PgHBUN6E4Yuzx5M2XZvHjlKfjYVBrrcDfF1QQcE2jrVfTmPo7kcg2EuWIsX7CpbhQAYCNGx9VVRAMGOAGc8Z55GnBWGHgIeEokeQLsqdl2leP6Km0p9EiiKKNSjGilNZGZX8A1vd4ODwBwekEp4kcpSBbtplL/b5A8dsUaXFFe0aYhpLlxrjpt95YKlbQNGaDLDm7pYDB6vyesa3dBXifVcEhJtcfjU49y4dM3RCHHxzwYKRp/mqfcJR3MckPufbRACGx5sW3dh1QIx+0LyzIziMQIMUMMLI9XARASbz0JALBuNLLcajcA4MoQFnF8LPXyJR4IS+m3Y9mjIXcNVRgUBDNbCQEATBZiWw6OwoYy6iiubi2NkdUSysW0DZSLQ5hQ+mpoLPKRLo55C9wSCF9a9r3HkXy6dloqi3xe72mrKP4OeCx04OJTW2Iiwa5KG3u7+ypCIaxirg2Dyt0oAIDKJOpjmC6QwKEY4GWRwkm8Wefo61JMq1p+hd0WBkcCV82RznMxe9K1yyO6e+ufFyEAAGJsSZQYxWlN5KI5c53aAACvCxCkBRUVix/NQRqO3dSWHCKkybliXRcRSKhZKaUDxV9Id21f3d0LtkIlV8WiuFsSbEuLqZqCKcnlKlM1XYb/zbWBBCcE13C7AiXCFbBRDEQkAQ9lkBCzRudJAKBITVy22g0AdC+a4tm+JDWGY0qeO2YgVbVUEVjvoJiBw1pPCABcLoekVheXFohyTaNMlFAG07ZQBoewoXA1BJeYtJ9Jsf05GLhD7wVaviM/9Z+OErdE7lXFFp7JV6pAXUnhjfdUyzMpAIAOvYo+6hHMIKXuloAeQYJ6PX12hd6pDQ7ovRrphKXnSqIAAOtJOYsESaQHf9xq2PnEAmsuHgAoQjrhstPC18oSNmTuE7fvChWIbx1oWrR1GvNazSK47kKEvNrqbvYn7U466iajJg+8dI1WXwSnOwi3721B6qoNA3mqHhHKzaAEADbNztzdAFAHFPc5eySshpu5i5/wDgoUTIM263ExPTSfiH6Nh38MXjn1gv7xn0ISieAQIAggvxkfYY4oXno/GWNg8okxCQDIf31HcwvY/SpQfzoccXsPhrkYLnqgUgoAIGCkeqMqBhzYwo7yBFoOiDRoKBsllaIOFkzctmkp264tUhYJRD6RYGbjAYAcoArIC4I5A5qPC4xwa3D4GzRz7C98pX2E6VvykRrnV3Poqr2iK8jhvb9eiH9TwyODTuq6Cci6q0i6O1lcYQIAnAC1ZcBUWkgVB2F5/G+nBkIyIHPemekBcmUrhwtrzhkUpmLLx5Uo+P3ZKf+Pd31/XRT8ncSKPkBXaX6ssMvUrjqlScZQ0DLpySsJvCpvzZ3AY7azAAAsFzgD5rKXW1lzEldjMy+rXb0BO+eIVVUGglBx9z9UqTqWiE1a9dfRxeFy0lKNe9cSqiYyLdBcaNRVfYLJR/1cvieci88QiWnEp0fw00nDP8X304ePjFN0jxFu7K5V3RfGP5Q3j/WbEOYNwLssLkoBAByRqfeA62sA1urnZYxL7WeriL+ibW6wIVpypD2gCze6hj0MqMgcL2zVXXUKTpkzJ8r1rLtSqufeJpHCdVxhWujtiAcARKeSKrkR8WPkEYVDo5ym6TXWiwyVKzavWNUlw/3vxiqqAVvN5uIjBCPL57ydfmzgtDXiAiGoatnlAFTdDU+9kRjKjSdhXoXsHx8sFykrQWTvRkXXsRmA/7HpYU82RMWtnE55X2Y4z4Bjg/CoG3pqu8jfir88B3bqfkzT7FMiabwmkLFXhLv91H398k2L58qfy+PAQ8bNJDBXr1uWl/jpszeAIOPDW6FfTzFKu5xkV0Nj+kEDbA+VJ1i1ZOAcRA8ZUFCXFWGn6GME9Km2HrEk5yf9Fuv+J3KeIykykGPo6iGVpKv6UkC3bGCYYvTSjNZtQhP5Wyg62N3NhEmyZJtABzTBDY0XmkHAAoxQYcFlu36/tY9jGOPO9xD6ujH0Hp6s2GX1nl+h5qC078gfuXK6a6cFyBEIxsx2YFeIL7ezrUHCpjiLMcfOgp21Xn+0jIIP3seS444FV4DZOAQuPMgrMNPzISdKIBtsokJGHfh6L1ZeX1mBQ24UtDuBqCQgaNyIvvOEeJvAKoinQ+5DnALochVbNmjnnFMMaaaMhqBOF+KlIurXcxn16xmifo1Th9TxXEb96hleCAGchvEt6YAUIAXhscZLRWf68IHPG1Ap4Vz8UhgDmECBRJ6DBEB4aEMSoHAOon4dWEasjLz3KRLjGfV0Rg5FpafNiA1y2Ycy/DJ3MkPWaKrCVh9NaY0COjcHU2lHS+NMqIcPSQFpINQFH7q7FqEiJ7zSNPBSzun1HAx5BYaOT3wfSj4FRJcVZmQrfihcVFkt1pC7TCBOB+nAKqvj6S48FN2oaHzybo9wqKuMTGdS+JLboaxNCQGAMFfcTNhRDSq4iCqTfR+PD2clExSBPk0tO0ADfcP6Q6ABTtceHq6+rB9v7/OzMzEmrwKme9oJvRcsgI0j1f6rNHZdA5Pby9WcvmrlyyLh/6G5r1fv2A/c2e6VH/uvOj6VADmDD1EiZC4qQHXNYanxJYCwf4fO+x34ICcTgvuOe55yLXQ5n0mocDtOV7Zqrc9JiyhfoYeiE51zS1Fu5HJ1U6tA6owpHjwwUe9tRwEA1MdYRYFYkc4sicuUf657BoyNyd16z7qUfwrQ1cKgK0AXRVLXEqG7dwEADIXbk0RTN/LBDsWhbYna+z/wS1LDNfEAgCWZKP5jrQWzh1bh4jStBUXVxpYs+SW7IiXGtN5bBbXXoZOVByw8Eqql6EJP3ZBzJBTgYCJ6CRw7IFADwIl2WF2Y5Cyj/uz5vQtjlIXLDW2r0+DtbicTANRnSE33p2KMVouCQJyd7X4FXLgyW3FvUCgNjLZ9b9fqu4jExpnVydhhGtTJ8AadVotstdHpjICQGmTBuJxsnVOz63dKp+Ft8+RVZ77X4YSYWHyiC0zMuFUzYHuNivDDXQzqzdbFKACAKDZPp/lGl5SpAK5w3GZMbq/9rGut/oq6uEEXURdL6iJp1G3jBQAaUWCJu1UlWqJwDRW1Jk7YK164BwDs0rLKSVV348cPqjGaZ9SZfGBvMgquiceMYrjUDpFkveceHmND+Wr/dmbVVBZd2RThOtScThxBQE3QhCgWRtq2bqSSVDUyQE1uGzRzc2UCwAZC9qkODSUI0ugyisBd7kUycRU2MHPqYZfR0G3eTitPSCH+TWd/ACGG+B2p8++t0Z9yGZpdbhqj8EJ67wDiqQ6tw3YLLYYNTCkFABigpbpRrAF3odntZ+uygPZYsYEWdJSkBVXiBQAMTF20CzqbOJzpS+4BAN2o1DAplvwRTS9zEkQoPje34gC5nr5kBe7BfaDZv/E1qOd/10zekezk/+OZ/NS+wBPf/ld1D/5X+c1vb3R1TLar6rQ0KqcMA4sqzLA1Ck3soJbk3+6xyhy9ZkcY+6nCtCoF4/2AWeU8t5jjez5qWNIU995l/R4vBvr8KGtyAACYSFdtKa2MCAcP17D63EuvaQEAxkQ3zOW6FDCYl2pQZ97RdYz4SjUxNeJrcSI1cVfV3igo47+kbttQkNPEDxy92u/Pz7/ANgS/o+WU6kN9fmcawjuEljJ3XZMCAFQBraob+jBE1aCLiqt/u+jXTNS49Mz1ZbwRwQ2D0VBys+c41sGoZgGERcT6XQBgB1wcKzqOpSWFbk0k2IPXxQMAXFSH/7BQkN3kojDWWEBhuZSI0tnvCOViAgnU6gm62rNQCx5MbG8AUgEBDQNUzIOxcf1Z+r0LY9QKHAxt0xHI6+1kAgB9C9Hc/pSTRdOKIOBMq8ikAi6wVqrIav5EG6iptYQAwFSVX29g7Vo4ZqMbmndt8jsuZxouvg/iC6/NbPggvj1fgQqE2JCfTFXMxvy8CplcgAJZHpabuinxoXciqV5mGAcqWt7f9qYrwsvPqKGOF6MAABoRVVHPTs7IxQHdHHZVvPTMlX99ZnQNgzEzuobPbTmDniVsUQDSuQsAYBuaAiXRNMtAy0OpxrZE9wT3/yVJcU08AOCVTIu7WN0yzGe9oBir6V3tRsnKOmKnG7ZLZqDmhFRYYHbq1+3cgxYrTqH+32Y86IGEYjEv9PSlSijuS+iVicJpAgI1FzifE1a75oRbRs27SfidrTAKtx7YVs+gVaXtZAKA0A2p3f2puI1W+wSBeFvt5Qq4cGix4s4SOUVM1FEIAPAqTTkV1sbZxGnaGTVx2jxbJE4vh5BR7JYyH/MZ/vPTA86OU/0kNrRU92jRJpbtNxVUhSuHzMxIF6QAABpjuPrRqn0spYxcTcBb0aB++W6sHVXerFbMjbrqyjyeKWfTiNXw2R0T/DPFmBj1rOEFAAZErWpRXdCG4mVWJU6q+8Ye54p4AGA0lNz42QUUylCYWnMKlUxD+erh4trIejhQtRQammVXNJIE/PpGjuGkOySwyUho2bXT4IfV4LYnqo+WJIAWVBguIdo2U6Eko6/6xspuR7qzCmUCQGmRwKijg5UdXPW1JVDsmpzxHDbUX4B4h1igwYsyogsJ/WOBPqn1AUQb4nnqnjc8yfyxHmLyJVQKRxoS9IcFPYwYzhDfen2sUgoAsCrEH83twCClUg24C81l0AiUODAA4TRAl3gBgAAVF1WGPs/VZz6xOMViPAAQQBUQFgRzBjQfFxgx1eCE730n4nNrDf96q/F8DI0XBaLzqTB4Q/G9cQ8+qHt4c5YdHUI8alfXZe0hQg8umgAABiJugx7UgAOm1PNc9kx6ehrY/1ANVJkDFGXvYXCieSi7nVSXajFi3i/wQlXL6VO5UayjvmOEZ8FT2KunWi5Tfwn8MX+kOJBjo4WGd4Q1Epq//2h0H8EBAZCt3dWBs6heohc3ynyhwYTUCtVO9RWB+uvQCfiqutXCaPP1iw6c7eX7T7KPLpFvfLOdiTHCAGwx6cx4Tx8QTa/JAQAGVJJRtssf3YnXlsVWw+7WmtuC2Ufjyt0sAAATEFfJXejZfnk+Et12mTxt07yPip7UEfO8fPRT0Tv3jnp5cOvq9vn82upTQkcQHxvwOuxbIXiRVmobH1DmAIrLkLNTxJtcQQs0lnq/l3u8+qzvctd+5BNTsNYIgzzIp/1HO0b9/XFpWJpHzWwj2IplCEffdjvxzZ4SyY6YgdklwmhhJvyWZCBOgaZeJDEQ3GpLIXdkHyXnSDkKOrw6eJ0smEOKpZ06cZCAbKJdeeQgzOn6tfY/thSal+xJucsV1DsVW6YvooSI0Cc3nG7m3TwnkJWKzk72o6tXryKy7hW+zWCeiGR1owAApCqQW6RPd5UIuRxQKHEPoN6aWwj/aar7FjDWdqelXWQ8eL/ar2irVjsykTexBvCAhgX0NUfSIJu0G0O0diWkpCdpM1s/Ju0gIfLLkklXre1Mp5cjLKfLP5Ilf8awxkpLFRwua8NIp1bCaYSrUJHphNueAfhsV0WVrZHY7bsAgG3YZy4/4uyxoq3pt56MhS/RvO2NijbRHfEAgOWd5SsFMP8JN9CJFHa/EqVmPYJNofhKlMUbJAIKzVei2a6jb6aMM+6bmT2EIsULJpAhFawKvISpQQGlrNbEKbTkkwNxoaVpK5yU7D9LqFralosZoqUb33b2iN3pKBMABgQTOtQ9EmeaEVwtaIbVb7WjZSu74xiftM1uQgDA5XI3giy2i/MUNNh1M+NAw4rMHi80JATEpKBVZshsR5SMchBnlyDLHeR5HPKZAC1+PXe47aJv4SRI1j7/eefwilm5QXX5WOpVCmtJtdTSTAoAIHEkb9fpwV5J7kPTGtDkk4YRMmtuLmBlBgGwxAsALKCYqI8y1AF7W+J+4sXBSu4BAI3w9kApKvoZCvoOVtBcAS8dhWC8R3TvgJDvBBO6k56+A3Y4EbjECOcNu9h9wCWDiWwMsDOCwJUxtI/aFWyuBbUnGF0H6tq77S7UsaNMAHALdK1DNZvYtb5BE1AqEShhzXSmbfzwAkgTAgC9raIOWCFu/5Lr4ASZZgF8B7DIHjtgiwiDyZOBnk5gwhsywj38hl3wflnfvCKd9H/OqO/aNrfu3QGKJYYbYCkFACAwQr0hnAgkoNzcgpMZBJASLwDQqD0smjtw8onLqS7GAwACWwAZLOYUSD5eQPW7DjSDFzhSANw+3WEXu8vYsyOcx87pxN74JikrCDyq6hwowTY6UIJxtXRlartOq4ELZQIAtWjAqKWDlRtsLe2pUHB7M/E12dv4nigL9YdisOBfsQ97ZCv9DeH+lB4IEOmK39wBMDH0gOVF4/T8HtRHJMoV//+oYda5H1canhguAKUUAABApHoBKwIBMDc3YDKDDbjECwAUOFHR1KxvYfKJA9ZsPAAggiV/RIMLmk2DXgcRinWQ8n0B8Wta58+exYT/bvizt37ejUGtDfzj8+H+OGCzi3v4wu6c643qIPIDdgboX2o7KSvAynxE4zUmAMAsMNV1wzRmsysOAgsNQG7YJQxsd8vPHtHI6wMUQOOzqXoL4/Nu4ceTfeGBBtb7/Bs9IPhS4fOhOm1/a749Y2bHHWs8e+ys1riVtqnUGK4IK9WKcJ0k0xQt2Srs/kldHKpR36DVPA+Y4JMqOFU7STctlVwLuXRW0136Uh6Va1tbbEjlure2l9F7iKW0jKXzLqvKN3lYxu07mhLFc3mMDxSfqwLTszl6+rFTMM35cffRlAo6/YMzLtasVcCkokZCWHOALt0oAICrgHB4eqabfpOYMQe0Zjz++01UXHN+OUYgtV5BVQF2Qcpn5WBnF3YCAAHN0TZXEi1UVFCTrfYmOh5wV3vedfEAwDRKW/05t7JkKI/dnEalauPZYZj8StKy9wlqYb9vUCsucEe0LbxwQ7TwJ+KWaCgJdCAaSTadiMaSUWeiGe+2LuzNrSkTAKqIdbKoPXxAp9bBXuLuaaD4QSk7UJvlbkIAwBJwcB+XvgVm5Wa2vEMZptmCzN4aaBYrILYL2guHyQ487460f5hKGJcq56cAnBHkBR6ms4X6+7pPTbE2vliBsRZfz/mPqmRtpumQNOTCUu1fFknrUgAACQjD0zNdT4XEjASgVeuTePQnzb4wWXNzRM3FgryDdEVdAEDgREQnfXY6YG1L3IRDWWfmEvEAwP723UFGLuvI3so2uZC50/jpAB2KT8DZdsCW7wAdXM9ZYPkWK5yciMACLy8Swcgu8vYvK0RIQ4lUWXLb4YCpQO6MEzZ9cmZn6TQPXHaHL+Yk93Fg21zzIaPRTSYAqA9t+typ9/iQmWEEvh1MSgVcNN2eYmU28e0dUGlCAGBO93dQAa4xhd4BGWbKOR4HO87WwYkgdBDb5jwhXK/w7BiMD5VdQnST3rzF476Vd7d/YsRwUDuXAgDoAEj1oFwF8oDOzRngxCAPpVldAMAHQhYRZD5R4JTiAYDptn1YOAKowfBm0fj4WGDJd4PN4AEpBJYjAnPYRe6yWrogeGEieRy5lf8SmJyYJhtvED7TK7aR2mQlY0Grye0JZ4rFMgGgwOLUovEKgm2F88fgEiJQkmOn63Iq7OfOr2MerzFsS6kM8GhWfKegQBIPBIhuxW/uCZg5zV4KrjGlI+10JbIV/2kncG3JrXt/raDFsIEppQAAC3Sk3uwktEAx4IoVYEHl5gQiM7gAi7oAwIIdFfXe4yxEPpFgZuMBgBwYAVSA95w5cNmYND75LrAY3CDYf/CVbwInKjzn6XJ+VHgNb9sjJ0meyVOFwIeUkQCwxQk868HEyiK6zo6dEtc2hKBg4sw/IZKo3ODn1l/CP57diO4O9PZwNMkERIBd77Jb/1jYIUzV42wXMBW277LOWfj4GqzeKSP/wsolQNDKyL6h7uipVVh8d3h85GJrZYvSTAzGig2Eb3xm5IR+FJhnIWh7sdbMCOHPIvCv83SLuTuuUYd0y70xLmZHaXAt3qUXJTvunCT2LnLoThVH/VpS1Z0JwRBiN/vQMY3VUgNEDNh+fP9YFwahiokgNrM3AEADJWbuN92xeLlIabIGNYL8+VStUpkFAIgcJVnSu+2s94+91/ppQAZnrh0QOoCYGHpcQNKHsp5boVPVFYGnBkzYE2uzVf9mHIRESTaNnOw2nmKBTUrggIAY78Z1ey7TBAtcs7fW3DZrwQqjyM1J0+mlvu9siLacfarswd0StgJAAhxcVl6ZS5pfPDbfQcje+vVX/ADQrkB00L6fZNOC/Ou0svqJk3VjJgq7mdMFADqQWhDlDNRVB1AuMV3nFgdZ2gMAeOKbKFAKJ0q0KlP5zaMF5bB5oumqg5pgbAeYSYe5IwN3rWAOhr1vze8+M2UNKTAFYHHci7WEHMByWhRZ4GgbBQdOqtF24Ew1Gg+czeXbB255bZkA4ALOsKpu8FKtgwaYRqgSzqLNzhWFAIB79izkY6xcsOUKppmzk9naE2M0DzPbfJtoZJ8PM8sbg2AcAkKN2snSzNJ0QfUwOQwqZHlzNN4sJfh+rBnijmiJ2AngN5krANwuKQ/C+ZX+ARQF3vOqT/vcNudHGrcM+lRnUhcAkFSCKD8wYaA7ILcllozXDiK5BwCcqhQOlMLGJR3tLL+iAuZpzYe7YsLwiVGyu2JinwnoIPAJCeDTB4sFHf69Z0tohJeWt4SWsPOJonUnkoC07lnJRlr3rmQkrVHKbotjAyyWCQBiwSlWDUvO5gcDWRJlpoDbhxd0khAAaPLSdwBzXO8MARwQy8zpg/oOiCjbx4EbQVS0bQ5yS5k9lYdD7ybb/Qx+Bj5x/w0rR2GauBUAEgrisvLKHPordzfKgkVgAZ2bC8jMYAEq6gIABVIWGWQ+0ZyaYjwAAHBED8HwJmh8fGywsg8BEbzXv24HFVDcXGwJrvDS0rvQEko+UbRujyQgrTsn2UjrnpOMpHWfs9vk2GgVywQAsWCaVcOSufxgIFOizCo8ux6aLWrzcXqGaE3XvKOj7knsCgCJT5Em5wCi8PF8Hg7KkLQ2bg0Rut8yehSBT0JXAEjQjEvK/fu/R/ovSlUgD6jcnAFMDPJQnNUFAHwgZJFA5BPFqRTjAYAGI3oAOmw2+YYsXDYWjS/7YLAZfECyf+ErjTye4ziU4RyeZz726W6KveMGt8cQtmqjDp33hjb/P/n9Dr5eDoJpBp0Y5ZV+mhNf8znq++D9x/uP5ZkjPuqt+crWNb8fY1ZltD43AXp4R3PXRSlbWMPqiAcm5spe1yIqniQQR7w5q7Y3jytlT+voUS/aZ3hEyGz5yDzW9QckhAEehLlHWaCz7+0jJOrRz5wR3+7suT+r14jt89TjKao9USH4RN4+AI3lhUtEzGXUta2hKysAgubXCESwYHY34r3l/7XKetdVhopivKAhi0F1q+VV/nkkdMFyH0nErIhMQscdsa4rC0SIKEguFiGGh2SRTRE/45ZaD+KtlCIRfCRpxNlWMpF7TOXfFw0rkxQnCf8zbx/oKwkn+WpAeeAAimXyRgqXgV5jStCkm9LoNNbb+poIaoASWYYDo3tBFp3vtmr7L6ErfATiiQPlAZY5Yy7qs8xWm+Q9idiVHzeuiWDKJD9FmCmLdt/hnoZ+WUzTEPVNbwsbFd+60ewvETSCiIpnq7DOHjYBVocswgD2Gdvg4CBF64YVxI9JR2GneWt/eEzuripFCjhiFz4vhcCauThgmtOxwO+Qsk9JaRv/SC4AczahpfyJBUgjuvHJq498Cgwobn7+AaCzsQ36s4BZTw8mHFNJtvrl0EgSaI5rBclZeahREj8Fo0UpEaJMjmENiK322GBq/CNWz5F2FAGNJARKC9TSxVdkIpwOA+eXBMRQubV2kL4r/PcCxPge8gvac1s0mdC2kkeP0BLhAZXNSFnlY5o2MjiBPyVb73PAhbqQnE/PpaaA+PTFtGAAKtS4jnfzJndB03HzIKPoUr1YEN5odG0kMQs75i/mVOhnkNLoQRqiaV3fitceYpzPA1jS5quh5JUWzhGJ02GMGE8sOamXEkZyki7BVE3h7eAMZGXoGyb0j03Wm7r9SnX1Gw8dBRsNzsFAhB+L6GU44RMpN5TboNYr6FmdtmATtG7bX0Zk3VAWjkZjLExXw5Z4+ShQ/JSdrXDqlFwLku/92ODNCJjd/NwJ0C9QfeS0/bzRRja4Nw2zUfNWbZqwyJbilYUASE5EF9m2cy1scodx37E64WNACheyg8zvi0RLaw4O30KPwFlXU3BqgLT2wNoGwjKQZLJ/uQD6lhpunElxCqsY3vgdHUNjldxKuiGU9WY3Ufvu3t3o0nfrHvkhN9zowYiE91OKO3a2bwgOGw5/uIS0uClwSD6RX4QTsIs2qxAzLqQUulj/1XrkDaIyNgp98JYbEEqHWtXXgpN0k+fWvPff4HtZDxUys8u+4UcHaYjx/xjsfBKHnVhiqIn19Sz/tzikgq/peOkmKK5o1L/WvR0VM581ahcLZ0J1/hyWf1VCzK9tdcAPyyOFTNCKd4NIaz1MyehYL/fRMEUDX1fn/V79ZxPSWt4keZH2myoyZGTCdt/LgRY/98ZM7r57/aK3MZ/LKjSjtuSTeMPrOGkJHdLDsi17QjBaCw/4PbKX6HOpC8nR5AziCMCNJNe3P1ij5IdPXbO7HpgR7uYQ9a8QcPawNfnTPAOE3OM4fm0EA8sDuRZ4HwCiW6copVgkPet4kRIVMCx869m9FVpH3S7b5rCVZEVcntN0zvYO2sAurxi7ylL0WNDhoV0XQRnrh6Gdt9pXCMO4txFdPx6kniQAMPRJqS0OC/W+O+/dQTF8RgEdmAW1TxsSb8SwDI4BF9vC+40aXgK4LXoe6Y+7GtGTim0HxQ8rMAOSApL/DxebT+E2SwkroAgdQAcNAKI9vFIF/efMQ4fzdw3XbxGO/yWGq+yyhUzmbpo5qDehsFFecR2l6//ZK0Sl0gXe138NJD8goK9DQyUHwdhDNnEbQRGd5qMZlrovGGS9YLTrw8T6/QFiiuP+lZrHHZfg2ZemqAxDZpMJBuZ6GhJlUIEZGN4hgdKZvp2COTvjE+O9R4oXQ1MTeNmxucOpmCg6Y5UrBML1C3rLPVQyjySPXqFsV9pqHdceOqpJrFh2fjmMG2bcZbMUVYW9VYW53ZPiekuRRnHS32Z57xcp3ytPl8sEghS4lk8Q9LUcPVYsU0rmIe11AsuuOnjtxuJNfGX79hvCw3oe5gWkVUyadi7mUlAaBX4qphlyAKK03QgXoDHv7lnf4kl9MsFdRdSjzMGZ6h3btMdVSKmIuqQ8WqzcZsfzxa5gZCOe+r01P5iNdeaUvyyrjFUHJV4p/tviOFwV2u1vXMFM+YdJHgmbMHzY3hyfjWhWfJ6lkkmT2bEs8pq+OkW4B/KhNm2BuglFxXBlI5Shbd7i1PMhBBG1biBMkt5yYM5CSx52s1PQbhX/L7Vv9J8SGhjzYtSRgOrmuSAV+F3AOjMrLNdoEdmo12HbEPVhw9Q1Cf4Sw8jOFBkNGQkNZhfah3+DKt5DtejbW5pJvxXwXx0ArhDoDUHdRIlfKCUBuYdhE61XMMi14sxYJ3nvPYbesOGsC8LmEmYt3qEA/dX0t2i+/e5dtP3b2uSX7eZxcN48nvTfd/KEXVu2ha30+a9XGJqTXWFedZOZv0D3A6b2JQ0bdG9WyrA5Ya4afD74SKGk911K3argwhlzDzucPQYd8nDZlkb/hrA1ddWyLZn/jcDWwNWrbO2NRbPKuugu+BPTIlDs8XGq5UMw0N8AqYVDg6F03e6kcHHM/VIQkNXmJSUlrJnPFSvXbSex53+V5/O3j8qzOkEp+BTmrk/vNZuoALHJwmbdyFqh+4CQhLlze6IsuJEnM1uAM4qwiu433OStQ8q+WbYQ7z/OLaY3nPGKhcz/fQYAWMxmtWxh8T8lLW6uSiEHpPDF14LSOnBNXRMd/p6h9QdCmrKdFz5OnTleFfbG/nN/JIY+noajf62eqa6mk+C+qSM6NdWpbZGnXGo7+uCjgc93oXjNoqJALu3JsyKZN578V6W9xu9sk6Aa2FfV39+q4vTbRHSdb2YfGfrGk7XR7HSMOpNXyQJkWMHlU0DqN2GAza1SQOabLMAS1UNAN4pg8aRTCjjbbVgEft5W1Qrg2kXg56VdZS2wwrrV12IXN+5SPoSATyUK3OwVnpzepVIFbmElbN86tGswxruIjmTgv7ukXgAY9tBcVQjmWyGWv7WB6lRcGyiaZqOZSTw/W+d0ePIeAGl7jlKTlzgqh6aviHK/CERumiL0LBjoJm7k4kqRf9MjAP25v5uxL78LNMdaPRsshmXhF5xFD8nqKnTIoWoIv9kPRQGA97WrMaGbmuI7WT1NSzi2LPIt4re0nKXVr7/06FqNBXUlxtNOuE2DFxWiRFfIGwm6Q2NWaDB8vO4tg3t2u3bRAiXm8vrsrHre9xYG0MXhz6i+8hZFlS+wEHQK/xQwJOSnrBkKD2eJLZ2em3LWcKHKALZrpdQ3AVNYdoPSyppFusnoQW8lQankvR2fvsY9i1a/eg1IMJXLuL5iz8VnDdLOfDyGPvGarxwDZXOcYSKAc8zkr69gHyuiC3LE5JlzTn5D5ivNgJTX7kXTwN6ibrKxrHfVjrcIX0t7kogEAhew62uGkmsj4Ohrftsz+WyRP6DHobd3Y7ZZRQQCMjyPwqtSfG2uPAU/kReIPnrks/jz9YjWUq9Od5e/E76lO6gwrO31CxEm9Zd/PW+PYL/1+M7+mF5WcsBYfldgEKu0VfWv4QKQKe2rEJIp4q/+tvIE9d8UgVenmw5FV8WqclC7ZicN2WadNCSn9SQ75/WkkhN7kt6ZDeNmiP2sIY6zgs6CtoNHr8LVP1mdy38y7vqfxKcAJoWfCpiknhIgMAQl4Pk3vKajkwPClKES0D8IU1yxQxbljaiZihILYyK5FS5igp1gfbqY+vXW8mpX4fAilcSE6sYThp1DcNAtrf3Vxp3iXmN2EQhCJLRs06mfOotE2ZYL+GuYXjNFLRbSRnxzZ3/qhfI1zogc25kPhhMobzyawxkj3sp9bUnc9C1LZzEpB0KnplJMs0tzve4s5Qti1gvMa256BARK3VAmxZ5dzSb3DbLWQrmMQzgvJGP9dj111C5aXmEMiSqHfmBAihnug9EKmDilqwZKRwfGGtVZWxndQZPie4vUf1WeGpAnx0RwrOo8s8Az+7HG39PoYMNSnWB8oF7y3kv89ksmh7qmvuESVBRraZQsuNlKBxaWWHu4Bbi/Yr5a5zvlHMYQGo4kWjXlJis2bhidC9k7Axe5gG94Ev36rkk3QTtPv37RppawG9ko6pyYYZH7Mnh4FNgq97udvCu9odktdMnQlWwU8qekqF/ehRJ9aUmRILVEbtrLZ14oEZmWGBKWlpxeivSWrBjFJ2PimDkyptzFVNkNWvXc1IdElJvb29uk3FLLJYN0PRmkb7s0orgdHkyYlqggYiabzZq2PUkR6UxLiLa0ZCGWliI5qiaZLLSE7CAzUtASJQ1oiZwDMq7gLBn/L0c5E5ZuVa6pMMwlFXvGqxxPdlWuqCjngopLYd7dh5ucTLxH+wabWJFtiXHR5GwKwXxLcb4wu2+q7VvX2TUVUINsFIsmpQC+iIgCFziNhWyj7GrrLeOrDJvPorj42nEBftn4e8vU2SWWFF+7edOL7LnzP9EE6VYVCV8xKNGyvwSNzZVZXMIuU0tskg/DktfrlSLJ37uQTPEZKnxgiZRttIaQ2IuRqbXtKeYBSVM2K2QBCUpCV98Sdz0goCQEbMnJP+vyl0TPLd71LC15jFYwZM+vOIv3+ZxszAveo6nPTXOwtCQA1fRFFgObcrioUaYR5s2pdaoRv/LN3FDjH3JcfJqD70n4kPS8pnzwmoNToFDwOlvCnY9AqAzwetrDTU4I3vj/thZRU9Z3Pc2e6xWirGdi6pENrp19KakoiAa/yduoFeA+SfpofOLeeGSCaV0MihSlDvrN7ARr9VKpFeW8X8UJ4rjQSghdK704rqvXcvvLaNb06RWe1mgnoikpgUIYZD/gIicCPUoJxnnKXAR8LT6MG+Q9tTi/5KTv0q2reVX7s0Q6xzb5O6Gfpd7ER+Sfrq3sJkv+DfJ/z+/jLQ439zJ77ueqy0cmdR944vo6jeiF0LeT15Bu5jLUoWhVKuXojHhi/M53Xc6MBewcapm/sklIgq9KfN+7gE5m4YSDOjvpqKKXYY6yJL+CKAQCKN85Mi3Rz5ZIAB4iUSiCaGrF485fRH4AZFjdPhTJhiMvGjLwFYWlq9GRr71zQ+tEvFF6c7pu+UCHfbvktm/T2P2FVyS/aNJAuL0ux85R2MZ0rivcnqSPhWJEJtFMOwQvy2ZhrJglUXNfwKv0w9YcvPqx7/isLALRH7nfMpeWUxVH7rhVfBjRHN5DgAB8OLChJuO/y21sMpkOnLwsm53Citlx113b5DnxQ5hGhTkJN2CRqMn0ODUikwAE4y6i8wvqT6GIubthlLcEeoEZUxo+I3owgiAGd6NEb1rwLhX3NNcEB4dIpdYcftsAbCkMmYIGgJ0RxZtjYxi4JAvIVyij6GrAbxYgDDcyPY4rUBAwIvkrciMYzSSrFNXB1xvWaKLqzuAzYHejaZXB1JrDrweAGRueJFmeM/Ae23omM0U1GsCl9zvEYNs5epFqLnHiZSf57+cyzr6LkKibjtrcXClEfDZ89MSk8Pxg/3nKi5nQDT1teel2TX++bNzDD+9VyIfaA/UN8VMjWTKE+ArmPGqr89WqJcGqsf5Mk5JPJQNblirI9IKxF4wNBXCnJ7FjJzh/1ggBkYxM1b4lkZCvTcx6s6n+GFRA1VCNOpmLARqu0ScjEF9E4+DAILJR4kjm7xVWlEq7W7TaWY0IKXWNkSHsrn/jafi/8ckzoF6KnQnhQ1LlKJ0xt9bVmgnL/6JoPrfx+KWtGSPtnk11CxHjzTIqEzJqzefqMGp6/Heg8aJmVz3KrzIda+igjrUaAwbDYs7RtEa3VO6uOnvqy0nVAwUVLYhDyxBOjOlV7Lsg3+roS0r119ELwYaeEk6EszbxEGzqS0olZKhGEFdLZQV1ecvo3FGcooqSUnXAig0VIypgSs8eTs17NK+/HVeMfUtL1eO0gtGwJCMyzpsCzgxL3aUPA04NzHyfr/03n2BF27K/ZtdmpaKlSX8hyDq1MbPa3wChCPaaw48p6NiD8TAMBwuvhlMeWEN/GJptOPM8NxmYVwb5JBlPQEvb35O5pwG9oG21bPLGkyfpe0zwg255va94/f9zkMANjWcOHrvyC5kywJId+6kj0HBfBBgsPDzJZtGE48aezJ0aWBoiT5yKnh4nGxQ9osLJuPiU/On5WkrlLuXWKK6SowWbxWPPnz1ZNKLhi0siA08cWJPF50/Pnxo3NFqg4s6cXmzx+QEfwzdY/mR6xIw/mZ6eTC8+PUecnkyPaBHOE+EE/sAVgJlpju6TT9u/vESfk2YN/MVlT8mJPSjyF5w9AJGzFeeSXwbn7Rn0zm7njOyPGxVe2uVO/L21+cMbE4l96LOY3+mCV49Qm0IExZCvzG72A2cPxrytLUGg8yv+DxQZmKmFtiUBbLckphYG+pVzZ9ZB7WAicrpKf3qwkT9Z+82vH/jaUOvR8OpbTw/v/piXLqINfB+WrEXviAbRPaYO3d6f9Ko3d5hPeIiqifQlfjyCfS0r8tOw9gk/UFDk/IRHKcKk/YIG/iAqqAcCqAUFhCH+QKa/paGZ+Ohp6FAgXQ6m/67KYpwOnOmbZhKf1kTiwYr44DDGZv1Bq9cvSf8tEtx+nBPzw4hFvqre9jSfFDKbh7IzTaeXtrPdTs4nuEad9Fd+eS+t2f+p++aeXnpYscPn07th7Ph6eCYcWI8Lt82ajGAmiyQxItySVxUbs2imKPdfKtgc3FGrN0rXLHXJMSlKJFmlmIVHkE1R579M0DMAveE3H2G0gCNQkHv+woO0KavmL5aY7kLiYsv34ORSJIZiL9I/Mie3I/l9VMVrLqhrki1JqwjsgBcIQr6+6buTpvVJsUFpX6Is9ijrqpQtM61qCeHXPfnOYzJNuTIbjt2sYgns65sDE+PNGHx6PHw2ylHcbvU/mPSbA9Ck3fKq654FGuyqjqULE087GvSMRwDAoocHfFdA3h3nqP+iHJrKrS9O1eEy37FF2LNR7/fVOb7RkXO65Om7tP3sHPPnH5A/JG/v0r//CX/BmZJrzKv16geXNRnkrCHqf7SP3N+/Lp2Z9rqJV78er850tz0nBSk4L3h7YimlMPfOZwAAxWr7lPZMSEmrUmhvDxdWHIHpRq+jvvZun/5eEz/d80S3+euHcYRuMZdj0/aYvnFI58zlSxuw7CS8CxxJj9TIK+xsp9LJ8V3KUjC9XW6bnlRRekd6Fjg6pKh0ZKeqa3mwSdHPkfa0BHM1FSSgSbgeaF0hME92/yx88FrMNQPwe9BNVU818WrRAABe9eTN+b2te6rGO4G77MKCR5kKKNAFa/i8/ZxXgoTfED5s+hZBryjAKS6gKSJzPIax3l4bW8d0yeATGK4OYea6Ts2gx0GXcSc0jWirkRrDuoTuvfj8prAS6xT3B04WWr9edMsPmKdknPvrwr38wLkSM9dSICBg5gwekO3heSP4TOM2Zkuub1klMXCdycrQ58JWexfEx7/p5NJJ8MdBUJqko/RdJgtMa0pwdGpB+lmsu9/yTU1DjM2Tu7UTr8i5VqYBj2X5nosYnAXtxWswDiUIjF2YFtilaLzkWXhJs6FRec9bbPkrYLyYl/JxmMe+pfCMB4EXi828MtuW4jbljfGJ8y6BG9+z3FW7uYWWTH0nLnSAVsPkBDN3DkLZUmZy9CH7qnhS5KAYgtl+peiBuPjkRMiEey1COReYEv8v39J49knNnK1RhFYbojC+Qxnqb2TvSlt6kRPdgz8frJlTgdvAfQdGI+H76bbbiHMG/KFsx13Y5YhTu8AxaNvT/MLwmj6qNjmZmpIiAhFt6D0WaZs1vl5+KMLtHk8WPmeYpamSTTktHiXFNKqDd2CJ42CzvJaF86JlAdg2woYVEXgT2e9ZCNqs5g7w4SBlCZ8oUkM4OdcVc+exHm076JzFgDrVVFYd4HWj5apXKvH3OrjMlhZ54ZeO821z44ICKWGdrxfxwnKNMIde57CRIXlInur6A2wW7ribh2j5WG6+ICWCWWONAj2wKH4bQhJb9dYRrhN9YOTuViwUBZiASoDQDyl0toa6Jv7uP5kXzj111yb6NzLQYCH+i8o8mTuSIE0Q96hlimOmj8G5pTje9S04W4pTd5+Hc6S49PRuuBkpLkRviptTfPEpphHeJTi/OLmbPtg+InMEKDrjautTDUb3c2PEyscc3InTY3cxPKceF3qswYbZx3imu0m61/rGwZf+zHeWtIh3kHT8cko+5dB97/p61otyMTlfL4ECTW42OEQJc7zItwWlGIE5jytSMTkzQFepwe1uQQMAVCuJ4BOT4la9cXECUQm4mZnrTTJLDObNzaDZqQH2lE4yezW0k5pGyV3okt0qegoJFQkibn1QUwqZPoaSpRTu+hZKJ6XY3edRLinlnt6NmpJSJnpTauBOPpN3i7/87ao3f3B5WLlUu4WN7nA2+Y19cAwiZ1Q+hRvecszuZ+r4OjfYmpkx37eu3biXeYSuOOKzceMrIHrcz/hj8mf787PvAQ+s4O9DW/uz8bwsuq0t3lsn75sXhT3yfC15b3E2DVRQda2x2Z2S9mZ/9xDuteZyfQa1q/N/T9TNvn9mAOw7NDWOlfcFSqVhIFVZIRAcboI5NChsTwgA4C0EncJDjIEIMPindhDn1Heotmn72l3sHO3QDvlAFGsC3SwHdUX9X3MGNSZ9ffso2XR735B8fbhT3vBF793ia89R4DrQ8aU4QxpvWdEQrfWzQQh6cckIAS5taRsUMrA+Z3C4EeyM+DjNaM51n8/fIvnpa0DFccLr6606wMByZfYRYIfb2gCAujFF62j9ZPB5wMgvzFu5I/DLDwLzGF0ka1bv3in8+TC5mhVdfTBWrPzlXbs6dq2uoWEuWT1XzvSsxOHLnxFCwguKnO/hTr1XB4QBbiOlCutJwnFiohLR8xeTJZk/B6HVU2rZBBFXJRD7K3NgIjxnHgjxH+46Z87kT2pdMDIJIb5TeejrLM/l7x7PW/1dtCr6HQxHZEMW0SgbY/UOWPyt62P0pcSH0s3SXGrLTeR/hD8l4Ie3I9ddr2/sIvAUjsArBNl9DeJC0E7fgmwQdNfnIbc0puzsrkRjUK72YMRqfs4E0HpIe9Cvibiai8FfvgNcrf/gJ/G3W2H1+BnJrqzJAvFnph7xV6sVzQrX1JeBO45ELP2Tg39k0/0ppMCFjsmhjxulQ3Leuj9zezSUAOzk7fttoP2wPR51+YPc2P0MIU35trMb9FwhHeQGt7uhHhqo1et36qjeS9ji9o4AoDsL2yv3eg07cz3qE1qfXvbdKSDtISg1S93ekMpr0H40z2/6MTWpNJP4p0fefzSFrMDS/Y6ZNhiP7+jbf6OT3Q0cyOrv7wsfO9Z3+/R9vFc5l9p9KFl361yVXPVVglN6JEIL7qrPJw7gCkMVQkWMyaX8Rs13uOqPyBNjrYv7S5IgAmhTnDaV0B3S7i5Z1FfzqBxfFXZWBBF5JxfczCL3fEcAMJVFpw73eodFu/+IExPguRSez4BfHq7sWq2dnnOrdyxcT+9Icn09XA6wn+MyPM/xzvbYaU69W9AAgJxkPxdcEJzL5ktEAcHdW+Bhf20Ypl+LmkluA4McKIvS7DJu8jf5naLdpKukgmjcxGaKS0+662twxGfw0XAYdjTUzN4v2Eb2+6nPZUX+FugPH4bRTdO9Q+/wQvyB2WOvJGfbOacInqOUhgbaoqxjwq/jL5ZASSjnw9si26ycPzBg3UFPMeZxOUNP0WFIzrjzc+ceCmsf08cd35U2a1qF1YqE7S2J+1U20+eUuC369OK8LQdZd5Iwnz/4RWYCNLWJW7gz0p50KeQq2gsUMjdgrvWbC6tq3bnJNUHiofIKVg3+oO10FpDFXSk7OIN/3ehoamySWRNkZWV723ipLIhPwNGyssdeIk2WefuxvEwJvKocNjlWKEkAIXdNmqVWDz57Zk1y5UtJ5NfMEJSsmx+++2C+s2pRiIfq793fbeAHRHuo4T79t4H83DMbZhxI7sOhNveY/7b5Y6s/AxkvVEzr/X6+APWmPQ4icHeo7aE88ikv/7YCaFs/qPPZHQFOf2kMrmA+xEnO06V6Zgrp5NasUOb3wbIoWHGp2CatsT2t2Q8bsNVOYUuqr3O2qBi+1KhumzOeX8u+KKivELUjPKhEzaFAyjQnkKguItsyOJyBEhU6PFfXIZWzFQwAUBtzZgLF/kppRixQWZjFqQ8bDMnhdubXlMzB/rzUoLnQw56WZG7p3UkHTe8EL8PsU5xuEbJHOAMncz64JedyZ7CdPs9V41dcmMFYqGM0xS4GsQZtVvo1Ov+FL90VOQ5uI6a6b/xCKbXHKVhKHGJipq1aHbtQkTc85IpIiw4JXWvL1biFIvPwwnfmvJ7hFU0fXvSjLY/nvJhowLwQx5C5TkvvRNsatruqbBwh4/4Pt4uwO309UfKZURgcug6Y3WgbuXs1UMw1pmRpJ122sltI5DrjJzbT+tOTfvOVyeA5rqP637vwOHX9E3cB2/Hfgb26amBvrv5xXAeAFBVh0ddHeU1TYQLHPVT0rHecfkhp75iH0g+lfxTQUyx8uEPRU1hHOlSkbMf5AQD6+V5BRLukcfGWIQ0VKcsZB4TAcmxyYHu8f5cDaw9Rd6kt1DTZ8VBMV4i6wOcSuqEHbn/SYLcDEtY0OKG3YXPAjXoX9hDcps9jrz3D7exrYPtc8vrOtot3bntwPz5aOvXq1dOI7yyiPgWqeS6P1Y+P8I/Znk8E9Zg/oHvHitq7j/jqlZE4wrDSMkSu92ikPnY7nWNIvIZ/l2cd77LiRCLoZtAVsqkcFPpwK3ncR5+2r6lTRtDNoBMGoOHOgBImtiJ4vIYRkg32cByEMTchFlaa6vC/wJR4Nbz7Duw7Z9+KCJ0KgCGO5Xb0hBEsvXCxUv3uvnP2PUuE8Ww6LK/XY7wi2bOpaH2elvNrIqX6hasriux1CgLTwu4LK7zNLBVQLxwwOPM8VnppQH/1JIAjgGbzabYSukaqnSVlyUbdQ6Lzrtpn6e6JJ0bDmukIAObQouJzo8yOI+i/TH1muyJ7aeuAq+ib5DU1juo5wsaO/XFAMS6ueJJ1JTxfo9BavRUMAFiH3dm6n525/iq7rERfqZc7/Qt179lBt1nkEV7/IG/q11lyk4ng0z4r+ttbHzMjvNJnx77m3xELqjTfqOudFp3rhRvScRX3QMpuJ1qYXi6YNl7zc7NWuUZs1GUGm5VJge0VrFcDWpJwkAEZj55k0cjH7h7jk2fHPCmLZVMCRK6kLGYNB+PefJylKsdiy0MewFLzce3M7Jr9+XhmcRnholm6+O3w726r1Qe/953Uk1+zff8XFSmnW3lV+nJTKpXIX33vBoCdv6HH5loHv4bHQYmdGYnDyOW5mM6uXmfUyV1F+V7hc9oo+RKZ6wEAAMc4dDyNMZ4IwVZBojjzUbRonk/jQQZ2z3owAAAdA9Qus8aLdjmd8VnEHWG8481rgk7B/nWUUEr27gCBCqVLJGQYIYhFIbPtYuw6ky18jKbGtdj0MZqpcMF2z/5M25lQx+Ol7WUQ69lyULu8G115T8QSpqr0p9u7Qmru0DVuuOko0tfa7QgBwHGDjlXh4dlLOyXRv1mUHr/wo8C5NsHN9RWLDNoC++NlN7gk0D04iK7t/7hoxGn29SqWaaSvSN7opyErqg6T1pPnlxFKu6GHB8PpwAEARpXJKT3MVcf7vCHhFRaiwKu3Tc4VaKMkar3WDADYES2yj5U9Ga8E2WK9bzL414WF1/KhdxU4yh/TgGj3X6UJWLnXT1E01SdHUiem1tpkxHRbl2maxny+g8ytve/ZbrY7v3fLyG5R+0MwHkocHSkelwg+G6nULxjBREdCBp01DPjoAm8st3ImexPyqLoX+ZCpqrb+m6piCa1KH97gzOOHf/6vrofZ/815yD3ZQaWS3tM/b670vQNL/X+yJUOkXoG0GRT5PfdKowVI5IrgggTSeky7UpG/4KnQLWMiaZOiPXqON3Pnf18N3i1vIOxhk+nOglMkMIHhybfchkjWRsmwaFq87qzkPJ7QlDNyBM1z986hkBqqSLgym9Wv8tjWePDwKjP+TnnA6kmeRwCnN4A0lVAKqXaWlOU1op7aCzp03lDTgfqmsSQNd94kANhBV/WjD413Q5f+60J4Qs7hF7MjSHrvS+i293qN6tCzmHlzdLCfiwFFuuGUwgCAQ1siNsx88GvblvPB9+q8yEfn7PjXgxfFjT7A8djqjEHGbUuZy2jX8hxEe1zwBCbDz7fHuY2BW1gPBgBskg+xC3aqEpl5XIIQDmcs7ezuM71pzxuEGMePzTkLFMikbWfx9Ii9MwlBUADqU/UxqCvUN+hb0AjqW4cLaB6NPoY6oIYG6sJlMGd6oCHlN58GfmuEIt5z2igw45XtWUnQShZXAgAAF6DjdoQCzAlBkSBNwZwN4IxAVwzV6AgDAFwLpsteLZcLv2V0knQhgAt4KDj588SDJDzs7gY0fDsm0ZUrdDmwUVYnQaa4ZAM+Yq4RJzN1YyMQc3Iu00Q5T7gwrY2ejsXO0MPCWU9vy9jhOAghUbCEzSL2hkuRIzcwnS6NKWGAdGaL1LbjrHPRf1ubF9WjFUvax6YreXv6aZZKPziXnzlXtNcbaek0ek3JQ01Ck7Tsn8P4C6QFPf2DtgbMDxs+qj1I41kFdpy3kX+TiT717DfDLXV9MyaDUZA4mIh90pdROkJaP5I9vPSg6HAUxNV6MN2qtSlXzGHS7cIaQpe9IXvS/3n3kGe7r0/dumlUoZc2nAbufEdB3xaR55axY+kccFUdOADAVcND2xcsPIAV4kQaXm0jAODZ7MEYGANeawYA0JTd2pM1uWww1t1wvzsV3x8bdPetB50r1Oj1xqgCOHgeOYVGgNufdMhVESTuW4e5oSt9jRFBd/UtZhVyt8IFs3mhTUAc2Rj3ArFJGWwLOnjOeOW+6pAgSN1EavSmohZptVb09BTszDW196RTBE0JBGszlzY0q1or+biPTVF4JwEAYMrXXSw4l5+VV/TXjTrplE6mhOOEvSiYTnnOuB6ulVkVA6O+a0yfKzZIum0JbHhVHrfchsx4o3RiZG9vsN6FBToxDM9eBMK716lfHm69Bp3RZOGI7n6GcDneis2IMaVTL8ZyRNhz56d6LG/1JM8jgNMMQBwR5DjE2llcli6IHmTR2UVfbaAh7mRUiDz/9hEApGLpuvpxFp12w5z+qy5opm92i3eMwT8b6bO+FvR6DGa8rn12zax3P+DEyUEFptlAn+1jAwNHe6nBZGVSJreRi1cchGWLkmkHeOG0xe2byY8OXrPat45UUEapdQKmx7M0KHiYWmf6yt7AU42/J27us/Gqjlcj9roLPmXrHnieFdNVxWOkV2Vwlcsn5dHy+yAo/qTOY0HUHw180fd/9f23N845uqV+vl2H5qljZ3I/IR1Hc1r+6dNu+pR/seJTHxXv7WLb1G2yyy4b4WNGD4iboUQ4l+QyeivIK7OJU2nJ5lqgqMHKnacpUbbBQlBDiRDR7WSAQLSdC1gO0UEEAztiTrEdIzG4ghmW6cHbpPem24NvrJn13eX3kN675c+SvDkb0dVaAADgCNWwOxMomAnuzQ4nO8c5wTwCkMHPrXOcSkbtXA0GAGwy410Bf80ZXy3MWChM0ksJF2J5IErhTIueEaVuY/eJxNadNDq4+Mup7oV6KsVCoLP8A02DTmbYaNp2LkOh6YxkGDp7HL7j2OOxWi/YiVxi7SVR1aEU0wgK6zeKIJamOyAAyBqmKA83jbZ2wv6lGybtWE4LlXEWY0N3u+O5g7KE7kgo1ez/QoQOel29adPWCm/h1Wl8uRfEx7pJ5+Izclm3ABI1dnQlDgBg46yDIdd464tJ1+s4XjUM8AoMCesURUeevQOJ7TIDAMSCwX4e4yvw4bk473crUgp3qLvk5tguQUUPG7y0/l1DzLRrKRvgJqV8opvWmDWQ+7kUHkyv298aiKYgURFi4mw0DVnrXFwDiRIM7hMbK44GI7Ykg0cHln7BpDR0N0sGUYRCri1RYG4bPbd8F0X1otBLaHCqfFEHi6ev6yMAuCzYMXvsHmaFOHXXy2k4JJlcY9KgzTsvSiZglptlagnurp8Kq8CWe6PtGrC6/n7bDebgrbi6xcdouCmc/mpVGW6B6grCyR/wl/SFBHCiB0iuhLxIvbOkLadZ91DosrOiUHsySqWhZj8CgCW6ih7HeqFD46AQsyPkcyifcZbQc9GwmgD0H+h4U/psx+4ZgLSTQwSGw8/HJWcycAbrwQCAuXw9V82I9atkUQqnOB0rovc1vE36x16u/lGVrxblUREZa62OVrRq2Vmb0Fj9l+wq+fNuf//xdz72aXgrr9HLQHnsTlcNFSE1cjDdJmfK86sagzwG3G43GABwpRiAPX8BZ4GXLC67Se0CM/Ln7RJuw8N+dmAJ787NQFMiJHPQNzZm9NTAENZlth/eCZEEA+ZorCF2WEVjszKWBcVnGvCVbtx6/zDh7FPQXEOKzjiqfzLsDoGQD54YCzJnnH1hpdcRafvCvlBQBO6L7Z6/CZixq3IqRimOnqPCdWEAwND46F1wBeDciNNipZSijT8vbGioJWxq41y0PA9Y8u4MfKky/GUNLbCQQXBSTmbmHE5UcS7LhjEEw4pwU8HOlhvuJKDdGtLk1LXDI0/8DGb/EYttmd+khTn+/nv2C6i4c3xKDavab4S2uFDdAQEAvLAnDFHc0LSkuY0oXNiylV1/jzHvawlm737K4CU4+NBzbPweogJbMV6REhroijWeS94uE3fR2AWlqgG95WdpKNkSB4roxsPpTpbS/OSEY9cH2vQk2BefEWs7gl51nQAAveNY7UwXvtvnVM7CvoxLmAjqkYXaAcnJ6tECKTLbKqjtLjMAwEs42562a4BOyTGWAN3ePxch93zoHgPVeWN8Axw+j8aNttJuf+HtpkzlBCTe3eCknc05cC7O5c5ga8OFVA2d6oRGQZtOEUFwwIEhnjsxYTDPw1U5fpPaJcO2Zczx9+9zoQ8P4cBNBS0ioFryQNji+nsgcJXramohchxBt5Qnq94lxu5aAQDAXJCTrV4YaYi7akC2XbyhLJpoX2N0TRtHL4qnwHg3kZTX7ENn/w217NHv9+HWf+7BZi/I8eSTwpDfj/vk4PIcHtWHMJceaeu2QIg7ZfEFatPCcKXgLcfBm0bwrfLSE4vkV1H9lAaUi0uFNiDayhC9hbogDzbzfnbrwvPsYqvkIc2ulNXVYABAsp+rtQmp3szDmbooHYc6PYNekMSv2xi/kqHfmPU+9a6LyNhnd3yiQ3vTGXaf3QlgE1xwTF+hq+ib2Rbqal0YAHDt/jEVf4F0IBGLmwy8DFi7Re+yHT4Y7fmxVbRAmVxTMqj8tNKzyT2YEhcGIWTX9lwcsZA+hj1BrLRzIXrhdESsoWAgsK520sT2y0jRs9nCnpOZfa2X/Bx8xsfMj3z7d0uHv3TR5ht+RjqaQRM3QSzlMYfxljEl+wpK4PYcx/dR5rer7yGPx3XPDIY5A5izC5wtXMJVnFmY/kLF1NY6M0McA4NuCm4y48EX4ORHj26tzGydnS+FmzMXkKCBPsv7UANzc0UYADD5uq7qiHU3mnRayBGYAcxyONd8se7HvrTnTYXiGw97ZtxPetJqMxeqGjz8vQveClHnhQJBVJ6lKyHRfhD4hQTWhhj/JMTphYa/+1xrZi6VMBg6Vw9LnoB5Fqpm+qnaFfsZfFp+7WbraeGPOc6t7COYp3BhCLItQ1tIH7NoQlvpvmVhQFvDcGERoRfbAdBqkOTat9ogdnXibuxDDzZDVQ5BVIW4nmoRJ6WsAs1lGONKkVFJiuFpbE97/1wFyKhuN/BtOE2OeFPZMdBl0T856Hq8uZ2CeJ3C7TiLxtQ7DOyiQ242cDNSF8ig54LixAFmp61tw8y44qnlE5i9TbI1sltGyTv78FYUuDes1Jj9G9EFHu2aM4U/97rSr9TjWOr6+coHEXovBEQx6zEJdMgkwJfsWaefF+jJGj348gbOPhE4qPzbQIXtAfe0SiDKIr5Vf556vfna5OuJ9ykDAd9LXrePb/UvBMZMn5/jX/QbkNR63uKebfK9133eTSgXTbw/U2WxMJ40c4CEbp+6GzWvILDeZFFenE722/jbBH1FVbzGSm2nxtoNgOvYAQBAaJyxL+YA+gJOExaedYJhyeqtI3Ix7RTKWmsGAETEK7W0jUGQfGwGFNT6NwEVeNGjZbxw55miKhTwVQjzXFoIVPh5xViMVcBnx2J/zo55fy7yZM0hdKtP+zo7wuOuIH4hwrRK6T5OEnYBUCptb0Io6HEuUY82DDFAwBBhp1iczyvMbH3i57Bm50EpoSeXsaWgZfEXHZlhcOKN2CqO8pw5L4RyAh0ghwaNa4sHYFiiZ93ANjdVFgfYmjCji6DC1Qa84SJbFgCArjHV/fbeDW4ROjbcUFdmk2wKEMfaYFQsyNseQkkdoGBrs4q3IrGq47rr7nahl2hXFBC9jJ19Muhjtx8jbT51xD8bcTphH48HdVf3X7zGA/szYCfljGdTF0fRdPN83a5o4FXWgwEABxnY2sb6Ba5tUTTNKeT30dwe/VRd0i/+ekf2etfPrnFoc0KStMfjlI59U4Grekddh7UBvBGDUh0AZ35OtYJGBpK1HgwA4MmA8FoMBvZNnVzq5VGlHcbH+alpm8+rbv+JgXVYjmJOcecicH41dfOJ4BvME7OQcNNXSSp+JNxC/t16PNhOLA2bwpt5XBFU7j2dmog9AYcUhKLiKdvgLCUVWZv1mD04PiND5zGDuTp+52f40K+ycKj2j1KT3xjx9YQWNJgwrr4RUk0XBIkoJyMNSuxb5DqUKBhkdOHSWp4LgDRkmB60fJaxGo+3soqPiuq0kfXCvDkVP7wJHXNIuKO4MX/2qOuexgxI3DUAACQLXMnqXHrCHQOuRwreNgk7Fz4TApPLyHOXV6+U6ipkdTUYAHAyW8Rurmsj9y2kIGcZt0QaVUnu1KK33RVjqC17tWBlopItgzUsOmeMUl7U7AsH2lURSqXDjAg52TH2dFQ5mTOg49i5nAMddwTDedDnuwDo5kr60g5obxuQmyWJTLoOlRwrkPLGEPvkUqgaXLL9ruH8O8P5t4XzqxjnH8S53AhTav2GsyaazojyiJHtdxXn3znOvy2cL1vC+QdxrqYEK7VOx5nIXHDIYEi3NAn6t0bOQk23WzF1bRMpwm07CyK9AgaxoN6YbEC8XOAm+JgCyi3npwFvNzv2d3foCNT+UI2q+8bUgRZ599RHzsX5ezd+pKZMNWFeu+g6XQTtaB3gVfqGfNpj9c4Hje9Qny2WqTcVqNr+1WkY5Vcj73dVxMVrci0XeC2mtUf7BZ9T0AiPs7lu66I1nrJ1U4Cb1wZ3WOH/8ZsO43YviwYmlIRLsm9VOwtefRLMnczeI7hUhxkAcAzEFgbaiCFgrUXJdZ8Zxyn6x9IU1NQnr2b93IpsKqym9e9uXNOGvetKpoa5rFC9bAxx6nyuHErnHWWhQqqwSZncYGZPruzQp26k0/ZWylinboPzGJfx42C01C/+Cy2vcMp7usoxSn2VfmfQZa+HvZ0NMSqN0IJk0kOANhqt+prJHDTucy4zvec8RGN2uDDDmvSMGDDNCegZXxA8F0FbLloE5wZIjtShF2LiTYW7hnii6FGnQreTWr2hijEEpYQGsi3YTXVr0tBc1wIAgEFrdVPZFyG0eMRVy3SDGFwrcQd5qjYY3wSamfaibKk7yaAFs1mtmYlW8Ya7k5BusepNoq0USLcovlm/FZl0G7umxK8POm7+LfJIipE7SxbhC5A69fpD+WxOA5/fa4vS6J8nAr3XpY87nwwIaGWCnQeXRRFci6Ffl5L1MNejNWEAwLUMEMDWNVWNcmE09R6hh/x162HgFyg+pV3QUVVqxc6AKniBNJpahzXj1ohVVRVUJtqtoDc9vBkFXhAGACjHDi4xaCKLzdnscHVeO8Ob2enailqlqFE3Gdzy8JbzilmshOxuQ2aixMq4bZiKUhm1i4VSNxo0XI76sgJPHGiOOGrBvNVMwTzGO8+tl+t31UsrCwONOtr1AwDANKOxPNMoVHNQRIMqtPVSjVE1z7UrhvSr6s5aZaDVSYpKjXVsw70F1c5W5NKlyozm8jwps+uV8MrseBWFDDViBDZIgoW46zO/oc61zApPdC4XgCcJhgv50sUSB1q5zt7Ym2rGRjOpNSfaA6eOSx1skHpIVumGW00ikU8C3949lqeOIUvPKeeklrBhSb3BvvfYFdnHilqecFf2To/dpV3auC61XA9mKmpGIA4Npk727xDE9rXNWTS77SxUBDvljKVFq6u4G2/HuPI8Fu6O+0MV+irn3rlh2pF7SOXWF2yE88V5BzB1XKwFy4ip0+768UquW38huIdcbAAOWiqkrAMAHCCOERBpGGCl9aAQaY9chBts0QwAOCyiJ9sSFGq2DdDb/+riv96xuCTaJqnF3jH61s7/4C/g30BjxyzTOZPV8VR82rM8wdReEHgpZl1/Hm/CVXqS89cqh0/wYdf3B0nVRgiPnucvWclWlgrJqpphJBnQKnczNGpsX0aonQbDDvikjL07znQLbjsM3kKBXXnesBcUIXUig4O+vpya6I7zADtoEpno5roqNOjMjTk0icTxM11wb6nS7MhJfGTgzbvcuQAADLb2/p+NIK4ePzsH95YK9IhaNB2MJB+HVcf/Ccv6XmWX5xvW1cenJz9aL38vfthXYaFNJl0FXqUVpXe8J3W4nNY1K9NgCtfeK4JibNGwbv8bqG1rP9tbDxsoNP8duEp1udO0DYPfALj1gOAzNbesDPXqDkqZ8Z/N4ihicXQJFa8LAwB2iLq5fgA=\",\"base64\")).toString()),nH}var Tde=new Map([[W.makeIdent(null,\"fsevents\").identHash,Qde],[W.makeIdent(null,\"resolve\").identHash,Fde],[W.makeIdent(null,\"typescript\").identHash,Rde]]),Pgt={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of eH)e(W.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let o=W.parseIdent(e.slice(r.length)),a=Tde.get(o.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,o)=>typeof Tde.get(t.identHash)>\"u\"?t:W.makeDescriptor(t,W.makeRange({protocol:\"patch:\",source:W.stringifyDescriptor(t),selector:`optional!builtin<compat/${W.stringifyIdent(t)}>`,params:null}))}},bgt=Pgt;var wH={};Vt(wH,{ConstraintsCheckCommand:()=>h0,ConstraintsQueryCommand:()=>f0,ConstraintsSourceCommand:()=>p0,default:()=>tdt});Ye();Ye();v2();var IC=class{constructor(e){this.project=e}createEnvironment(){let e=new wC([\"cwd\",\"ident\"]),r=new wC([\"workspace\",\"type\",\"ident\"]),o=new wC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,u=new Map;for(let A of this.project.storedPackages.values()){let p=Array.from(A.peerDependencies.values(),h=>[W.stringifyIdent(h),h.range]);n.set(A.locatorHash,{workspace:null,ident:W.stringifyIdent(A),version:A.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>A.peerDependenciesMeta.get(h)?.optional===!0))})}for(let A of this.project.storedPackages.values()){let p=n.get(A.locatorHash);p.dependencies=new Map(Array.from(A.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let I=n.get(E);if(typeof I>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[W.stringifyIdent(h),I]})),p.dependencies.delete(p.ident)}for(let A of this.project.workspaces){let p=W.stringifyIdent(A.anchoredLocator),h=A.manifest.exportTo({}),E=n.get(A.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let I=(R,L,{caller:U=Ji.getCaller()}={})=>{let J=B2(R),te=_e.getMapWithDefault(a.manifestUpdates,A.cwd),ae=_e.getMapWithDefault(te,J),fe=_e.getSetWithDefault(ae,L);U!==null&&fe.add(U)},v=R=>I(R,void 0,{caller:Ji.getCaller()}),x=R=>{_e.getArrayWithDefault(a.reportedErrors,A.cwd).push(R)},C=e.insert({cwd:A.relativeCwd,ident:p,manifest:h,pkg:E,set:I,unset:v,error:x});u.set(A,C);for(let R of Ot.allDependencies)for(let L of A.manifest[R].values()){let U=W.stringifyIdent(L),J=()=>{I([R,U],void 0,{caller:Ji.getCaller()})},te=fe=>{I([R,U],fe,{caller:Ji.getCaller()})},ae=null;if(R!==\"peerDependencies\"&&(R!==\"dependencies\"||!A.manifest.devDependencies.has(L.identHash))){let fe=A.anchoredPackage.dependencies.get(L.identHash);if(fe){if(typeof fe>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let ce=this.project.storedResolutions.get(fe.descriptorHash);if(typeof ce>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let me=n.get(ce);if(typeof me>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");ae=me}}r.insert({workspace:C,ident:U,range:L.range,type:R,resolution:ae,update:te,delete:J,error:x})}}for(let A of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(A);if(!p)continue;let h=u.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(A.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:e,dependencies:r,packages:o,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},o=await this.project.loadUserConfig();return o?.constraints?(await o.constraints(r),e.result):null}};Ye();Ye();qt();var f0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(\".\")||(u=`${u}.`),(await Nt.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let E=Array.from(Object.entries(h)),I=E.length,v=E.reduce((x,[C])=>Math.max(x,C.length),0);for(let x=0;x<I;x++){let[C,R]=E[x];p.reportInfo(null,`${$gt(x,I)}${C.padEnd(v,\" \")} = ${Zgt(R)}`)}p.reportJson(h)}})).exitCode()}};f0.paths=[[\"constraints\",\"query\"]],f0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]});function Zgt(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function $gt(t,e){let r=t===0,o=t===e-1;return r&&o?\"\":r?\"\\u250C \":o?\"\\u2514 \":\"\\u2502 \"}Ye();qt();var p0=class extends ut{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(x2(),b2)),o=await Ke.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};p0.paths=[[\"constraints\",\"source\"]],p0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]});Ye();Ye();qt();v2();var h0=class extends ut{constructor(){super(...arguments);this.fix=ge.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let a=await o.loadUserConfig(),n;if(a?.constraints)n=new IC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(x2(),b2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:I,remainingErrors:v}=gk(o,E,{fix:this.fix}),x=[];for(let[C,R]of I){let L=C.manifest.indent;C.manifest=new Ot,C.manifest.indent=L,C.manifest.load(R),x.push(C.persistManifest())}if(await Promise.all(x),!(I.size>0&&h>1)){u=Hde(v,{configuration:r}),A=!1,p=!0;for(let[,C]of v)for(let R of C)R.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${de.pretty(r,\"yarn constraints --fix\",de.Type.CODE)}`;await Nt.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return u.children=_e.sortMap(u.children,h=>h.value[1]),$s.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};h0.paths=[[\"constraints\"]],h0.usage=nt.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]});v2();var edt={configuration:{enableConstraintsChecks:{description:\"If true, constraints will run during installs\",type:\"BOOLEAN\",default:!1},constraintsPath:{description:\"The path of the constraints file.\",type:\"ABSOLUTE_PATH\",default:\"./constraints.pro\"}},commands:[f0,p0,h0],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),o;if(r?.constraints)o=new IC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(x2(),b2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=gk(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${de.pretty(t.configuration,u.anchoredLocator,de.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${de.pretty(t.configuration,\"yarn constraints\",de.Type.CODE)} for more details`)}}},tdt=edt;var IH={};Vt(IH,{CreateCommand:()=>tm,DlxCommand:()=>g0,default:()=>ndt});Ye();qt();var tm=class extends ut{constructor(){super(...arguments);this.pkg=ge.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let o=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=W.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?W.makeIdent(a.scope,`create-${a.name}`):W.makeIdent(null,`create-${a.name}`),u=W.stringifyIdent(n);return a.range!==\"unknown\"&&(u+=`@${a.range}`),this.cli.run([\"dlx\",...r,u,...this.args])}};tm.paths=[[\"create\"]];Ye();Ye();St();qt();var g0=class extends ut{constructor(){super(...arguments);this.packages=ge.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}async execute(){return Ke.telemetry=null,await oe.mktempPromise(async r=>{let o=V.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(V.join(o,\"package.json\"),`{}\n`),await oe.writeFilePromise(V.join(o,\"yarn.lock\"),\"\");let a=V.join(o,\".yarnrc.yml\"),n=await Ke.findProjectCwd(this.context.cwd),A={enableGlobalCache:!(await Ke.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Wu(68),level:de.LogLevel.Discard}]},p=n!==null?V.join(n,\".yarnrc.yml\"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Ke.updateConfiguration(o,L=>{let U=_e.toMerged(L,A);return Array.isArray(L.plugins)&&(U.plugins=L.plugins.map(J=>{let te=typeof J==\"string\"?J:J.path,ae=ue.isAbsolute(te)?te:ue.resolve(ue.fromPortablePath(n),te);return typeof J==\"string\"?ae:{path:ae,spec:J.spec}})),U})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],E=W.parseDescriptor(this.command).name,I=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:o,quiet:this.quiet});if(I!==0)return I;this.quiet||this.context.stdout.write(`\n`);let v=await Ke.find(o,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,o);if(C===null)throw new rr(x.cwd,o);await x.restoreInstallState();let R=await un.getWorkspaceAccessibleBinaries(C);return R.has(E)===!1&&R.size===1&&typeof this.packages>\"u\"&&(E=Array.from(R)[0][0]),await un.executeWorkspaceAccessibleBinary(C,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};g0.paths=[[\"dlx\"]],g0.usage=nt.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-react-app to create a new React app\",\"yarn dlx create-react-app ./my-app\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]});var rdt={commands:[tm,g0]},ndt=rdt;var DH={};Vt(DH,{ExecFetcher:()=>Q2,ExecResolver:()=>F2,default:()=>odt,execUtils:()=>Ek});Ye();Ye();St();var fA=\"exec:\";var Ek={};Vt(Ek,{loadGeneratorFile:()=>k2,makeLocator:()=>vH,makeSpec:()=>pme,parseSpec:()=>BH});Ye();St();function BH(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function pme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function vH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return W.makeLocator(t,pme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function k2(t,e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(t,{protocol:e}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.join(u.prefixPath,a);return await A.readFilePromise(p,\"utf8\")}var Q2=class{supports(e,r){return!!e.reference.startsWith(fA)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:fA});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await k2(e.reference,fA,r);return oe.mktempPromise(async a=>{let n=V.join(a,\"generator.js\");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(V.join(u,\"build\")))throw new Error(\"The script should have generated a build directory\");return await Xi.makeArchiveFromDirectory(V.join(u,\"build\"),{prefixPath:W.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await un.makeScriptEnv({project:a.project,binFolder:n}),A=V.join(e,\"runtime.js\");return await oe.mktempPromise(async p=>{let h=V.join(p,\"buildfile.log\"),E=V.join(e,\"generator\"),I=V.join(e,\"build\");await oe.mkdirPromise(E),await oe.mkdirPromise(I);let v={tempDir:ue.fromPortablePath(E),buildDir:ue.fromPortablePath(I),locator:W.stringifyLocator(r)};await oe.writeFilePromise(A,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(v)},\n            },\n            enumerable: true,\n          });\n        `);let x=u.NODE_OPTIONS||\"\",C=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;x=x.replace(C,\" \").trim(),u.NODE_OPTIONS=x;let{stdout:R,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${W.stringifyLocator(r)})\n`,prefix:W.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await Ur.pipevp(process.execPath,[\"--require\",ue.fromPortablePath(A),ue.fromPortablePath(o),W.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:L});if(U!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${de.pretty(a.project.configuration,h,de.Type.PATH)})`)})})}};Ye();Ye();var idt=2,F2=class{supportsDescriptor(e,r){return!!e.range.startsWith(fA)}supportsLocator(e,r){return!!e.reference.startsWith(fA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=BH(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await k2(W.makeRange({protocol:fA,source:a,selector:a,params:{locator:W.stringifyLocator(n)}}),fA,o.fetchOptions),A=wn.makeHash(`${idt}`,u).slice(0,6);return[vH(e,{parentLocator:n,path:a,generatorHash:A,protocol:fA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var sdt={fetchers:[Q2],resolvers:[F2]},odt=sdt;var PH={};Vt(PH,{FileFetcher:()=>L2,FileResolver:()=>O2,TarballFileFetcher:()=>M2,TarballFileResolver:()=>U2,default:()=>cdt,fileUtils:()=>rm});Ye();St();var SC=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,R2=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,Ui=\"file:\";var rm={};Vt(rm,{fetchArchiveFromLocator:()=>N2,makeArchiveFromLocator:()=>Ck,makeBufferFromLocator:()=>SH,makeLocator:()=>PC,makeSpec:()=>hme,parseSpec:()=>T2});Ye();St();function T2(t){let{params:e,selector:r}=W.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?W.parseLocator(e.locator):null,path:o}}function hme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:W.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return W.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function PC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return W.makeLocator(t,hme({parentLocator:e,path:r,hash:o,protocol:a}))}async function N2(t,e){let{parentLocator:r,path:o}=W.parseFileStyleRange(t.reference,{protocol:Ui}),a=V.isAbsolute(o)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=V.join(n.prefixPath,o);return await _e.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function Ck(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=W.parseFileStyleRange(t.reference,{protocol:e}),u=V.isAbsolute(n)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=V.join(A.prefixPath,n);return await _e.releaseAfterUseAsync(async()=>await Xi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:W.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:o}),A.releaseFs)}async function SH(t,{protocol:e,fetchOptions:r}){return(await Ck(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var L2=class{supports(e,r){return!!e.reference.startsWith(Ui)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:Ui});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return Ck(e,{protocol:Ui,fetchOptions:r})}};Ye();Ye();var adt=2,O2=class{supportsDescriptor(e,r){return e.range.match(SC)?!0:!!e.range.startsWith(Ui)}supportsLocator(e,r){return!!e.reference.startsWith(Ui)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=await SH(W.makeLocator(e,W.makeRange({protocol:Ui,source:a,selector:a,params:{locator:W.stringifyLocator(n)}})),{protocol:Ui,fetchOptions:o.fetchOptions}),A=wn.makeHash(`${adt}`,u).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:A,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ye();var M2=class{supports(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await N2(e,r);return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();Ye();var U2=class{supportsDescriptor(e,r){return R2.test(e.range)?!!(e.range.startsWith(Ui)||SC.test(e.range)):!1}supportsLocator(e,r){return R2.test(e.reference)?!!e.reference.startsWith(Ui):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return SC.test(e.range)&&(e=W.makeDescriptor(e,`${Ui}${e.range}`)),W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=T2(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let u=PC(e,{parentLocator:n,path:a,hash:\"\",protocol:Ui}),A=await N2(u,o.fetchOptions),p=wn.makeHash(A).slice(0,6);return[PC(e,{parentLocator:n,path:a,hash:p,protocol:Ui})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var ldt={fetchers:[M2,L2],resolvers:[U2,O2]},cdt=ldt;var kH={};Vt(kH,{GithubFetcher:()=>_2,default:()=>Adt,githubUtils:()=>wk});Ye();St();var wk={};Vt(wk,{invalidGithubUrlMessage:()=>mme,isGithubUrl:()=>bH,parseGithubUrl:()=>xH});var gme=$e(ve(\"querystring\")),dme=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function bH(t){return t?dme.some(e=>!!t.match(e)):!1}function xH(t){let e;for(let A of dme)if(e=t.match(A),e)break;if(!e)throw new Error(mme(t));let[,r,o,a,n=\"master\"]=e,{commit:u}=gme.default.parse(n);return n=u||n.replace(/[^:]*:/,\"\"),{auth:r,username:o,reponame:a,treeish:n}}function mme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var _2=class{supports(e,r){return!!bH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new gn(a);await Xi.extractArchiveTo(o,n,{stripComponents:1});let u=ra.splitRepoUrl(e.reference),A=V.join(a,\"package.tgz\");await un.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Xi.convertToZip(p,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=xH(e.reference);return`https://${o?`${o}@`:\"\"}github.com/${a}/${n}/archive/${u}.tar.gz`}};var udt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new _2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},Adt=udt;var QH={};Vt(QH,{TarballHttpFetcher:()=>q2,TarballHttpResolver:()=>j2,default:()=>pdt});Ye();function H2(t){let e;try{e=new URL(t)}catch{return!1}return!(e.protocol!==\"http:\"&&e.protocol!==\"https:\"||!e.pathname.match(/(\\.tar\\.gz|\\.tgz|\\/[^.]+)$/))}var q2=class{supports(e,r){return H2(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await nn.get(e.reference,{configuration:r.project.configuration});return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();Ye();var j2=class{supportsDescriptor(e,r){return H2(e.range)}supportsLocator(e,r){return H2(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[W.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var fdt={fetchers:[q2],resolvers:[j2]},pdt=fdt;var FH={};Vt(FH,{InitCommand:()=>d0,default:()=>gdt});Ye();Ye();St();qt();var d0=class extends ut{constructor(){super(...arguments);this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=ge.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=ge.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=ge.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=ge.Boolean(\"-2\",!1,{hidden:!0});this.yes=ge.Boolean(\"-y,--yes\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new it(\"Cannot use the --install flag from within a project subdirectory\");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=V.join(this.context.cwd,dr.lockfile);oe.existsSync(a)||await oe.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push(\"-p\"),this.workspace&&u.push(\"-w\"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push(\"-y\"),await oe.mktempPromise(async A=>{let{code:p}=await Ur.pipevp(\"yarn\",[\"init\",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await un.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await Pt.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ot.tryFind(this.context.cwd),n=a??new Ot,u=Object.fromEntries(r.get(\"initFields\").entries());n.load(u),n.name=n.name??W.makeIdent(r.get(\"initScope\"),this.name??V.basename(this.context.cwd)),n.packageManager=rn&&_e.isTaggedYarnVersion(rn)?`yarn@${rn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(V.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let A={};n.exportTo(A);let p=V.join(this.context.cwd,Ot.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=V.join(this.context.cwd,\"README.md\");if(oe.existsSync(E)||(await oe.writeFilePromise(E,`# ${W.stringifyIdent(n.name)}\n`),h.push(E)),!o||o.cwd===this.context.cwd){let I=V.join(this.context.cwd,dr.lockfile);oe.existsSync(I)||(await oe.writeFilePromise(I,\"\"),h.push(I));let x=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(fe=>`${fe}\n`).join(\"\"),C=V.join(this.context.cwd,\".gitignore\");oe.existsSync(C)||(await oe.writeFilePromise(C,x),h.push(C));let L=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(fe=>`${fe}\n`).join(\"\"),U=V.join(this.context.cwd,\".gitattributes\");oe.existsSync(U)||(await oe.writeFilePromise(U,L),h.push(U));let J={[\"*\"]:{endOfLine:\"lf\",insertFinalNewline:!0},[\"*.{js,json,yml}\"]:{charset:\"utf-8\",indentStyle:\"space\",indentSize:2}};_e.mergeIntoTarget(J,r.get(\"initEditorConfig\"));let te=`root = true\n`;for(let[fe,ce]of Object.entries(J)){te+=`\n[${fe}]\n`;for(let[me,he]of Object.entries(ce)){let Be=me.replace(/[A-Z]/g,we=>`_${we.toLowerCase()}`);te+=`${Be} = ${he}\n`}}let ae=V.join(this.context.cwd,\".editorconfig\");oe.existsSync(ae)||(await oe.writeFilePromise(ae,te),h.push(ae)),await this.cli.run([\"install\"],{quiet:!0}),oe.existsSync(V.join(this.context.cwd,\".git\"))||(await Ur.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await Ur.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};d0.paths=[[\"init\"]],d0.usage=nt.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]});var hdt={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[d0]},gdt=hdt;var Tq={};Vt(Tq,{SearchCommand:()=>w0,UpgradeInteractiveCommand:()=>B0,default:()=>nIt});Ye();var Eme=$e(ve(\"os\"));function bC({stdout:t}){if(Eme.default.endianness()===\"BE\")throw new Error(\"Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures\");if(!t.isTTY)throw new Error(\"Interactive commands can only be used inside a TTY environment\")}qt();var Qye=$e(zH()),XH={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},fyt=(0,Qye.default)(XH.appId,XH.apiKey).initIndex(XH.indexName),ZH=async(t,e=0)=>await fyt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var qB=[\"regular\",\"dev\",\"peer\"],w0=class extends ut{async execute(){bC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(cQ(),Bq)),{ScrollableItems:r}=await Promise.resolve().then(()=>(pQ(),fQ)),{useKeypress:o}=await Promise.resolve().then(()=>(UB(),Wwe)),{useMinistore:a}=await Promise.resolve().then(()=>(xq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{default:u}=await Promise.resolve().then(()=>$e(rIe())),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useEffect:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),x=()=>h.createElement(A,{flexDirection:\"row\"},h.createElement(A,{flexDirection:\"column\",width:48},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),C=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),L=({hit:he,active:Be})=>{let[we,g]=a(he.name,null);o({active:Be},(le,ne)=>{if(ne.name!==\"space\")return;if(!we){g(qB[0]);return}let ee=qB.indexOf(we)+1;ee===qB.length?g(null):g(qB[ee])},[we,g]);let Ee=W.parseIdent(he.name),Se=W.prettyIdent(v,Ee);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},Se)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},he.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},he.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,he.humanDownloadsLast30Days)))},U=({name:he,active:Be})=>{let[we]=a(he,null),g=W.parseIdent(he);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0},\" - \",W.prettyIdent(v,g))),qB.map(Ee=>h.createElement(A,{key:Ee,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:we===Ee}),\" \",h.createElement(p,{bold:!0},Ee)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ae=await n(({useSubmit:he})=>{let Be=a();he(Be);let we=Array.from(Be.keys()).filter(H=>Be.get(H)!==null),[g,Ee]=I(\"\"),[Se,le]=I(0),[ne,ee]=I([]),Ie=H=>{H.match(/\\t| /)||Ee(H)},Fe=async()=>{le(0);let H=await ZH(g);H.query===g&&ee(H.hits)},At=async()=>{let H=await ZH(g,Se+1);H.query===g&&H.page-1===Se&&(le(H.page),ee([...ne,...H.hits]))};return E(()=>{g?Fe():ee([])},[g]),h.createElement(A,{flexDirection:\"column\"},h.createElement(x,null),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:Ie,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(C,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:At}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(A,{flexDirection:\"row\",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(R,null)),we.length?we.map(H=>h.createElement(U,{key:H,name:H,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>\"u\")return 1;let fe=Array.from(ae.keys()).filter(he=>ae.get(he)===\"regular\"),ce=Array.from(ae.keys()).filter(he=>ae.get(he)===\"dev\"),me=Array.from(ae.keys()).filter(he=>ae.get(he)===\"peer\");return fe.length&&await this.cli.run([\"add\",...fe]),ce.length&&await this.cli.run([\"add\",\"--dev\",...ce]),me&&await this.cli.run([\"add\",\"--peer\",...me]),0}};w0.paths=[[\"search\"]],w0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]});Ye();qt();E_();var cIe=$e(zn()),lIe=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/,uIe=(t,e)=>t.length>0?[t.slice(0,e)].concat(uIe(t.slice(e),e)):[],B0=class extends ut{async execute(){bC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(aIe(),oIe)),{Pad:r}=await Promise.resolve().then(()=>(Rq(),sIe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{useMinistore:a}=await Promise.resolve().then(()=>(xq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:u,Text:A}=await Promise.resolve().then(()=>$e(ic())),{default:p,useEffect:h,useRef:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd),R=await Lr.find(v);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,U=(Ee,Se)=>{let le=upe(Ee,Se),ne=\"\";for(let ee of le)ee.added?ne+=de.pretty(v,ee.value,\"green\"):ee.removed||(ne+=ee.value);return ne},J=(Ee,Se)=>{if(Ee===Se)return Se;let le=W.parseRange(Ee),ne=W.parseRange(Se),ee=le.selector.match(lIe),Ie=ne.selector.match(lIe);if(!ee||!Ie)return U(Ee,Se);let Fe=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],At=null,H=\"\";for(let at=1;at<Fe.length;++at)At!==null||ee[at]!==Ie[at]?(At===null&&(At=Fe[at-1]),H+=de.pretty(v,Ie[at],At)):H+=Ie[at];return H},te=async(Ee,Se,le)=>{let ne=await zc.fetchDescriptorFrom(Ee,le,{project:x,cache:R,preserveModifier:Se,workspace:C});return ne!==null?ne.range:Ee.range},ae=async Ee=>{let Se=cIe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[le,ne]=await Promise.all([te(Ee,Ee.range,Se).catch(()=>null),te(Ee,Ee.range,\"latest\").catch(()=>null)]),ee=[{value:null,label:Ee.range}];return le&&le!==Ee.range?ee.push({value:le,label:J(Ee.range,le)}):ee.push({value:null,label:\"\"}),ne&&ne!==le&&ne!==Ee.range?ee.push({value:ne,label:J(Ee.range,ne)}):ee.push({value:null,label:\"\"}),ee},fe=()=>p.createElement(u,{flexDirection:\"row\"},p.createElement(u,{flexDirection:\"column\",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(u,{flexDirection:\"column\"},p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(u,{marginLeft:1},p.createElement(A,null,\"Press \",p.createElement(A,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),ce=()=>p.createElement(u,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),me=({active:Ee,descriptor:Se,suggestions:le})=>{let[ne,ee]=a(Se.descriptorHash,null),Ie=W.stringifyIdent(Se),Fe=Math.max(0,45-Ie.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},W.prettyIdent(v,Se)),p.createElement(r,{active:Ee,length:Fe})),p.createElement(e,{active:Ee,options:le,value:ne,skewer:!0,onChange:ee,sizes:[17,17,17]})))},he=({dependencies:Ee})=>{let[Se,le]=I(Ee.map(()=>null)),ne=E(!0),ee=async Ie=>{let Fe=await ae(Ie);return Fe.filter(At=>At.label!==\"\").length<=1?null:{descriptor:Ie,suggestions:Fe}};return h(()=>()=>{ne.current=!1},[]),h(()=>{let Ie=Math.trunc(L*1.75),Fe=Ee.slice(0,Ie),At=Ee.slice(Ie),H=uIe(At,L),at=Fe.map(ee).reduce(async(Re,ke)=>{await Re;let xe=await ke;xe!==null&&(!ne.current||le(He=>{let Te=He.findIndex(qe=>qe===null),Je=[...He];return Je[Te]=xe,Je}))},Promise.resolve());H.reduce((Re,ke)=>Promise.all(ke.map(xe=>Promise.resolve().then(()=>ee(xe)))).then(async xe=>{xe=xe.filter(He=>He!==null),await Re,ne.current&&le(He=>{let Te=He.findIndex(Je=>Je===null);return He.slice(0,Te).concat(xe).concat(He.slice(Te+xe.length))})}),at).then(()=>{ne.current&&le(Re=>Re.filter(ke=>ke!==null))})},[]),Se.length?p.createElement(o,{radius:L>>1,children:Se.map((Ie,Fe)=>Ie!==null?p.createElement(me,{key:Fe,active:!1,descriptor:Ie.descriptor,suggestions:Ie.suggestions}):p.createElement(A,{key:Fe},\"Loading...\"))}):p.createElement(A,null,\"No upgrades found\")},we=await n(({useSubmit:Ee})=>{Ee(a());let Se=new Map;for(let ne of x.workspaces)for(let ee of[\"dependencies\",\"devDependencies\"])for(let Ie of ne.manifest[ee].values())x.tryWorkspaceByDescriptor(Ie)===null&&(Ie.range.startsWith(\"link:\")||Se.set(Ie.descriptorHash,Ie));let le=_e.sortMap(Se.values(),ne=>W.stringifyDescriptor(ne));return p.createElement(u,{flexDirection:\"column\"},p.createElement(fe,null),p.createElement(ce,null),p.createElement(he,{dependencies:le}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof we>\"u\")return 1;let g=!1;for(let Ee of x.workspaces)for(let Se of[\"dependencies\",\"devDependencies\"]){let le=Ee.manifest[Se];for(let ne of le.values()){let ee=we.get(ne.descriptorHash);typeof ee<\"u\"&&ee!==null&&(le.set(ne.identHash,W.makeDescriptor(ne,ee)),g=!0)}}return g?await x.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};B0.paths=[[\"upgrade-interactive\"]],B0.usage=nt.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:`\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n    `,examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]});var rIt={commands:[w0,B0]},nIt=rIt;var Nq={};Vt(Nq,{LinkFetcher:()=>GB,LinkResolver:()=>YB,PortalFetcher:()=>WB,PortalResolver:()=>KB,default:()=>sIt});Ye();St();var tp=\"portal:\",rp=\"link:\";var GB=class{supports(e,r){return!!e.reference.startsWith(rp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:rp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,discardFromLookup:!0}}};Ye();St();var YB=class{supportsDescriptor(e,r){return!!e.range.startsWith(rp)}supportsLocator(e,r){return!!e.reference.startsWith(rp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(rp.length);return[W.makeLocator(e,`${rp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ye();St();var WB=class{supports(e,r){return!!e.reference.startsWith(tp)}getLocalPath(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=W.parseFileStyleRange(e.reference,{protocol:tp}),n=V.isAbsolute(a)?{packageFs:new gn(Bt.root),prefixPath:Bt.dot,localPath:Bt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,n.localPath),localPath:Bt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new gn(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot,localPath:p}:{packageFs:new _u(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:Bt.dot}}};Ye();Ye();St();var KB=class{supportsDescriptor(e,r){return!!e.range.startsWith(tp)}supportsLocator(e,r){return!!e.reference.startsWith(tp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(tp.length);return[W.makeLocator(e,`${tp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await _e.releaseAfterUseAsync(async()=>await Ot.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var iIt={fetchers:[GB,WB],resolvers:[YB,KB]},sIt=iIt;var yj={};Vt(yj,{NodeModulesLinker:()=>lv,NodeModulesMode:()=>hj,PnpLooseLinker:()=>cv,default:()=>w1t});St();Ye();St();St();var Oq=(t,e)=>`${t}@${e}`,AIe=(t,e)=>{let r=e.indexOf(\"#\"),o=r>=0?e.substring(r+1):e;return Oq(t,o)};var hIe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=fIt(t,n),p=!1,h=0;do p=Mq(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let E=VB(A);if(Mq(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${VB(A)}`);let v=gIe(A);if(v)throw new Error(`${v}, after hoisting finished:\n${VB(A)}`)}return n.debugLevel>=2&&console.log(VB(A)),pIt(A)},oIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},aIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let E;for(let I of t)E=I.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},fIe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:C,hoistedTo:R}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:I,hoistPriority:v,dependencyKind:x,hoistedFrom:new Map(C),hoistedTo:new Map(R)},U=L.dependencies.get(r);return U&&U.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},lIt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf(\"@\",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Lq=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Mq=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=hIt(u),p=lIt(u,A),h=t==u?new Map:a.fastLookupPossible?oIt(e):aIt(e),E,I=!1,v=!1,x=new Map(Array.from(p.entries()).map(([R,L])=>[R,L[0]])),C=new Map;do{let R=AIt(t,e,r,h,x,p,o,C,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(I=!0),E=!1;for(let[L,U]of p)U.length>1&&!u.dependencies.has(L)&&(x.delete(L),U.shift(),x.set(L,U[0]),E=!0)}while(E);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let L=Mq(t,[...e,R],r,C,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(I=!0),r.delete(R.locator)}return{anotherRoundNeeded:I,isGraphChanged:v}},cIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},uIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let E,I=null,v=new Set;p&&(E=`${Array.from(e).map(L=>no(L)).join(\"\\u2192\")}`);let x=r[r.length-1],R=!(o.ident===x.ident);if(p&&!R&&(I=\"- self-reference\"),R&&(R=o.dependencyKind!==1,p&&!R&&(I=\"- workspace\")),R&&o.dependencyKind===2&&(R=!cIt(o),p&&!R&&(I=\"- external soft link with unhoisted dependencies\")),R&&(R=x.dependencyKind!==1||x.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(I=x.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(I=`- cannot shadow peer: ${no(t.originalDependencies.get(o.name).locator)} at ${E}`)),R){let L=!1,U=a.get(o.name);if(L=!U||U.ident===o.ident,p&&!L&&(I=`- filled by: ${no(U.locator)} at ${E}`),L)for(let J=r.length-1;J>=1;J--){let ae=r[J].dependencies.get(o.name);if(ae&&ae.ident!==o.ident){L=!1;let fe=A.get(x);fe||(fe=new Set,A.set(x,fe)),fe.add(o.name),p&&(I=`- filled by ${no(ae.locator)} at ${r.slice(0,J).map(ce=>no(ce.locator)).join(\"\\u2192\")}`);break}}R=L}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(I=`- filled by: ${no(u.get(o.name)[0])} at ${E}`)),R){let L=!0,U=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let te=r[J];for(let ae of U){if(te.peerNames.has(ae)&&te.originalDependencies.has(ae))continue;let fe=te.dependencies.get(ae);fe&&t.dependencies.get(ae)!==fe&&(J===r.length-1?v.add(fe):(v=null,L=!1,p&&(I=`- peer dependency ${no(fe.locator)} from parent ${no(te.locator)} was not hoisted to ${E}`))),U.delete(ae)}if(!L)break}R=L}if(R&&!h)for(let L of o.hoistedDependencies.values()){let U=a.get(L.name)||t.dependencies.get(L.name);if(!U||L.ident!==U.ident){R=!1,p&&(I=`- previously hoisted dependency mismatch, needed: ${no(L.locator)}, available: ${no(U?.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:I}:{isHoistable:R?0:1,reason:I}},yQ=t=>`${t.name}@${t.locator}`,AIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],E=new Set,I=!1,v=!1,x=(U,J,te,ae,fe)=>{if(E.has(ae))return;let ce=[...J,yQ(ae)],me=[...te,yQ(ae)],he=new Map,Be=new Map;for(let le of Lq(ae)){let ne=uIt(h,r,[h,...U,ae],le,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(le,ne),ne.isHoistable===2)for(let ee of ne.dependsOn){let Ie=he.get(ee.name)||new Set;Ie.add(le.name),he.set(ee.name,Ie)}}let we=new Set,g=(le,ne,ee)=>{if(!we.has(le)){we.add(le),Be.set(le,{isHoistable:1,reason:ee});for(let Ie of he.get(le.name)||[])g(ae.dependencies.get(Ie),ne,p.debugLevel>=2?`- peer dependency ${no(le.locator)} from parent ${no(ae.locator)} was not hoisted`:\"\")}};for(let[le,ne]of Be)ne.isHoistable===1&&g(le,ne,ne.reason);let Ee=!1;for(let le of Be.keys())if(!we.has(le)){v=!0;let ne=u.get(ae);ne&&ne.has(le.name)&&(I=!0),Ee=!0,ae.dependencies.delete(le.name),ae.hoistedDependencies.set(le.name,le),ae.reasons.delete(le.name);let ee=h.dependencies.get(le.name);if(p.debugLevel>=2){let Ie=Array.from(J).concat([ae.locator]).map(At=>no(At)).join(\"\\u2192\"),Fe=h.hoistedFrom.get(le.name);Fe||(Fe=[],h.hoistedFrom.set(le.name,Fe)),Fe.push(Ie),ae.hoistedTo.set(le.name,Array.from(e).map(At=>no(At.locator)).join(\"\\u2192\"))}if(!ee)h.ident!==le.ident&&(h.dependencies.set(le.name,le),fe.add(le));else for(let Ie of le.references)ee.references.add(Ie)}if(ae.dependencyKind===2&&Ee&&(I=!0),p.check){let le=gIe(t);if(le)throw new Error(`${le}, after hoisting dependencies of ${[h,...U,ae].map(ne=>no(ne.locator)).join(\"\\u2192\")}:\n${VB(t)}`)}let Se=Lq(ae);for(let le of Se)if(we.has(le)){let ne=Be.get(le);if((a.get(le.name)===le.ident||!ae.reasons.has(le.name))&&ne.isHoistable!==0&&ae.reasons.set(le.name,ne.reason),!le.isHoistBorder&&me.indexOf(yQ(le))<0){E.add(ae);let Ie=fIe(ae,le);x([...U,ae],ce,me,Ie,R),E.delete(ae)}}},C,R=new Set(Lq(h)),L=Array.from(e).map(U=>yQ(U));do{C=R,R=new Set;for(let U of C){if(U.locator===h.locator||U.isHoistBorder)continue;let J=fIe(h,U);x([],Array.from(r),L,J,R)}}while(R.size>0);return{anotherRoundNeeded:I,isGraphChanged:v}},gIe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),I=()=>`${Array.from(o).concat([n]).map(v=>no(v.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==E||!v||v.ident!==h.ident)&&e.push(`${I()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),x=n.hoistedTo.get(h.name),C=`${v?` hoisted from ${v.join(\", \")}`:\"\"}`,R=`${x?` hoisted to ${x}`:\"\"}`,L=`${I()}${C}`;E?E.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},fIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Oq(r,a),ident:AIe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},A=new Map([[t,u]]),p=(h,E)=>{let I=A.get(h),v=!!I;if(!I){let{name:x,identName:C,reference:R,peerNames:L,hoistPriority:U,dependencyKind:J}=h,te=e.hoistingLimits.get(E.locator);I={name:x,references:new Set([R]),locator:Oq(C,R),ident:AIe(C,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:te?te.has(x):!1,hoistPriority:U||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,I)}if(E.dependencies.set(h.name,I),E.originalDependencies.set(h.name,I),v){let x=new Set,C=R=>{if(!x.has(R)){x.add(R),R.decoupled=!1;for(let L of R.dependencies.values())R.peerNames.has(L.name)||C(L)}};C(I)}else for(let x of h.dependencies)p(x,I)};for(let h of t.dependencies)p(h,u);return u},Uq=t=>t.substring(0,t.indexOf(\"@\",1)),pIt=t=>{let e={name:t.name,identName:Uq(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:E,locator:I}=a;p={name:h,identName:Uq(I),references:E,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},hIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let E of A.dependencies.values()){let I=a(E);I.hoistPriority=Math.max(I.hoistPriority,E.hoistPriority),A.peerNames.has(E.name)?I.peerDependents.add(A.ident):n(A,E)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},no=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let o=t.substring(e+1);if(o===\"workspace:.\")return\".\";if(o){let a=(o.indexOf(\"#\")>0?o.split(\"#\")[1]:o).replace(\"npm:\",\"\");return o.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`},pIe=5e4,VB=t=>{let e=0,r=(a,n,u=\"\")=>{if(e>pIe||n.has(a))return\"\";e++;let A=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<A.length;h++){let E=A[h];if(!a.peerNames.has(E.name)&&E!==a){let I=a.reasons.get(E.name),v=Uq(E.locator);p+=`${u}${h<A.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(v!==E.name?`a:${E.name}:`:\"\")+no(E.locator)+(I?` ${I}`:\"\")}\n`,p+=r(E,n,`${u}${h<A.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>pIe?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var JB=(o=>(o.WORKSPACES=\"workspaces\",o.DEPENDENCIES=\"dependencies\",o.NONE=\"none\",o))(JB||{}),dIe=\"node_modules\",v0=\"$wsroot$\";var zB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=dIt(t,e),u=null;if(a.length===0){let A=hIe(r,{hoistingLimits:o});u=yIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},gA=t=>`${t.name}@${t.reference}`,Hq=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(V.delimiter).length,u=a.split(V.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},mIe=(t,e)=>{let r=W.isVirtualLocator(t)?W.devirtualizeLocator(t):t,o=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e;return W.areLocatorsEqual(r,o)},_q=(t,e,r,o)=>{if(t.linkType!==\"SOFT\")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation);return V.contains(o,a)===null},gIt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(t.findPackageLocator(e.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,x)=>{let C=gA(v);if(p.has(C))return;p.add(C);let R=t.getPackageInformation(v);if(R){let L=x?gA(x):\"\";if(gA(v)!==L&&R.linkType===\"SOFT\"&&!v.reference.startsWith(\"link:\")&&!_q(R,v,t,o)){let U=yIe(R,v,t);(!A.get(U)||v.reference.startsWith(\"workspace:\"))&&A.set(U,v)}for(let[U,J]of R.packageDependencies)J!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,J),v))}};for(let v of u)h(v,null);let E=o.split(V.sep);for(let v of A.values()){let x=t.getPackageInformation(v),R=ue.toPortablePath(x.packageLocation.slice(0,-1)).split(V.sep).slice(E.length),L=n;for(let U of R){let J=L.children.get(U);J||(J={children:new Map},L.children.set(U,J)),L=J}L.workspaceLocator=v}let I=(v,x)=>{if(v.workspaceLocator){let C=gA(x),R=a.get(C);R||(R=new Set,a.set(C,R)),R.add(v.workspaceLocator)}for(let C of v.children.values())I(C,v.workspaceLocator||x)};for(let v of n.children.values())I(v,n.workspaceLocator);return a},dIt=(t,e)=>{let r=[],o=!1,a=new Map,n=gIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,I=(x,C)=>`${gA(C)}:${x}`,v=(x,C,R,L,U,J,te,ae)=>{let fe=I(x,R),ce=E.get(fe),me=!!ce;!me&&R.name===A.name&&R.reference===A.reference&&(ce=h,E.set(fe,h));let he=_q(C,R,t,p);if(!ce){let le=0;he?le=2:C.linkType===\"SOFT\"&&R.name.endsWith(v0)&&(le=1),ce={name:x,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:le===1?new Set:C.packagePeers,dependencyKind:le},E.set(fe,ce)}let Be;if(he?Be=2:U.linkType===\"SOFT\"?Be=1:Be=0,ce.hoistPriority=Math.max(ce.hoistPriority||0,Be),ae&&!he){let le=gA({name:L.identName,reference:L.reference}),ne=a.get(le)||new Set;a.set(le,ne),ne.add(ce.name)}let we=new Map(C.packageDependencies);if(e.project){let le=e.project.workspacesByCwd.get(ue.toPortablePath(C.packageLocation.slice(0,-1)));if(le){let ne=new Set([...Array.from(le.manifest.peerDependencies.values(),ee=>W.stringifyIdent(ee)),...Array.from(le.manifest.peerDependenciesMeta.keys())]);for(let ee of ne)we.has(ee)||(we.set(ee,J.get(ee)||null),ce.peerNames.add(ee))}}let g=gA({name:R.name.replace(v0,\"\"),reference:R.reference}),Ee=n.get(g);if(Ee)for(let le of Ee)we.set(`${le.name}${v0}`,le.reference);(C!==U||C.linkType!==\"SOFT\"||!he&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(te)))&&L.dependencies.add(ce);let Se=R!==A&&C.linkType===\"SOFT\"&&!R.name.endsWith(v0)&&!he;if(!me&&!Se){let le=new Map;for(let[ne,ee]of we)if(ee!==null){let Ie=t.getLocator(ne,ee),Fe=t.getLocator(ne.replace(v0,\"\"),ee),At=t.getPackageInformation(Fe);if(At===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let H=_q(At,Ie,t,p);if(e.validateExternalSoftLinks&&e.project&&H){At.packageDependencies.size>0&&(o=!0);for(let[He,Te]of At.packageDependencies)if(Te!==null){let Je=W.parseLocator(Array.isArray(Te)?`${Te[0]}@${Te[1]}`:`${He}@${Te}`);if(gA(Je)!==gA(Ie)){let qe=we.get(He);if(qe){let b=W.parseLocator(Array.isArray(qe)?`${qe[0]}@${qe[1]}`:`${He}@${qe}`);mIe(b,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with parent dependency ${W.prettyLocator(e.project.configuration,b)}`})}else{let b=le.get(He);if(b){let w=b.target,P=W.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${He}@${w}`);mIe(P,Je)||r.push({messageName:71,text:`Cannot link ${W.prettyIdent(e.project.configuration,W.parseIdent(Ie.name))} into ${W.prettyLocator(e.project.configuration,W.parseLocator(`${R.name}@${R.reference}`))} dependency ${W.prettyLocator(e.project.configuration,Je)} conflicts with dependency ${W.prettyLocator(e.project.configuration,P)} from sibling portal ${W.prettyIdent(e.project.configuration,W.parseIdent(b.portal.name))}`})}else le.set(He,{target:Je.reference,portal:Ie})}}}}let at=e.hoistingLimitsByCwd?.get(te),Re=H?te:V.relative(p,ue.toPortablePath(At.packageLocation))||Bt.dot,ke=e.hoistingLimitsByCwd?.get(Re);v(ne,At,Ie,ce,C,we,Re,at===\"dependencies\"||ke===\"dependencies\"||ke===\"workspaces\")}}};return v(A.name,u,A,h,u,u.packageDependencies,Bt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function yIe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function mIt(t,e,r){let o=e.getLocator(t.name.replace(v0,\"\"),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:yIe(a,t,e)}}var yIt=(t,e,r)=>{let o=new Map,a=(E,I,v)=>{let{linkType:x,target:C}=mIt(E,t,r);return{locator:gA(E),nodePath:I,target:C,linkType:x,aliases:v}},n=E=>{let[I,v]=E.split(\"/\");return v?{scope:I,name:v}:{scope:null,name:I}},u=new Set,A=(E,I,v)=>{if(u.has(E))return;u.add(E);let x=Array.from(E.references).sort().join(\"#\");for(let C of E.dependencies){let R=Array.from(C.references).sort().join(\"#\");if(C.identName===E.identName.replace(v0,\"\")&&R===x)continue;let L=Array.from(C.references).sort(),U={name:C.identName,reference:L[0]},{name:J,scope:te}=n(C.name),ae=te?[te,J]:[J],fe=V.join(I,dIe),ce=V.join(fe,...ae),me=`${v}/${U.name}`,he=a(U,v,L.slice(1)),Be=!1;if(he.linkType===\"SOFT\"&&r.project){let we=r.project.workspacesByCwd.get(he.target.slice(0,-1));Be=!!(we&&!we.manifest.name)}if(!C.name.endsWith(v0)&&!Be){let we=o.get(ce);if(we){if(we.dirList)throw new Error(`Assertion failed: ${ce} cannot merge dir node with leaf node`);{let Se=W.parseLocator(we.locator),le=W.parseLocator(he.locator);if(we.linkType!==he.linkType)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different link types ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/${W.stringifyLocator(le)}`);if(Se.identHash!==le.identHash)throw new Error(`Assertion failed: ${ce} cannot merge nodes with different idents ${we.nodePath}/${W.stringifyLocator(Se)} and ${v}/s${W.stringifyLocator(le)}`);he.aliases=[...he.aliases,...we.aliases,W.parseLocator(we.locator).reference]}}o.set(ce,he);let g=ce.split(\"/\"),Ee=g.indexOf(dIe);for(let Se=g.length-1;Ee>=0&&Se>Ee;Se--){let le=ue.toPortablePath(g.slice(0,Se).join(V.sep)),ne=g[Se],ee=o.get(le);if(!ee)o.set(le,{dirList:new Set([ne])});else if(ee.dirList){if(ee.dirList.has(ne))break;ee.dirList.add(ne)}}}A(C,he.linkType===\"SOFT\"?he.target:ce,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return o.set(h,p),A(e,h,\"\"),o};Ye();Ye();St();St();nA();Nl();var oj={};Vt(oj,{PnpInstaller:()=>mm,PnpLinker:()=>P0,UnplugCommand:()=>x0,default:()=>VIt,getPnpPath:()=>b0,jsInstallUtils:()=>yA,pnpUtils:()=>av,quotePathIfNeeded:()=>r1e});St();var t1e=ve(\"url\");Ye();Ye();St();St();var EIe={[\"DEFAULT\"]:{collapsed:!1,next:{[\"*\"]:\"DEFAULT\"}},[\"TOP_LEVEL\"]:{collapsed:!1,next:{fallbackExclusionList:\"FALLBACK_EXCLUSION_LIST\",packageRegistryData:\"PACKAGE_REGISTRY_DATA\",[\"*\"]:\"DEFAULT\"}},[\"FALLBACK_EXCLUSION_LIST\"]:{collapsed:!1,next:{[\"*\"]:\"FALLBACK_EXCLUSION_ENTRIES\"}},[\"FALLBACK_EXCLUSION_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"FALLBACK_EXCLUSION_DATA\"}},[\"FALLBACK_EXCLUSION_DATA\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_REGISTRY_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_REGISTRY_ENTRIES\"}},[\"PACKAGE_REGISTRY_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_STORE_DATA\"}},[\"PACKAGE_STORE_DATA\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_STORE_ENTRIES\"}},[\"PACKAGE_STORE_ENTRIES\"]:{collapsed:!0,next:{[\"*\"]:\"PACKAGE_INFORMATION_DATA\"}},[\"PACKAGE_INFORMATION_DATA\"]:{collapsed:!1,next:{packageDependencies:\"PACKAGE_DEPENDENCIES\",[\"*\"]:\"DEFAULT\"}},[\"PACKAGE_DEPENDENCIES\"]:{collapsed:!1,next:{[\"*\"]:\"PACKAGE_DEPENDENCY\"}},[\"PACKAGE_DEPENDENCY\"]:{collapsed:!0,next:{[\"*\"]:\"DEFAULT\"}}};function EIt(t,e,r){let o=\"\";o+=\"[\";for(let a=0,n=t.length;a<n;++a)o+=EQ(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(o+=\", \");return o+=\"]\",o}function CIt(t,e,r){let o=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,u=t.length;n<u;++n)a+=o+EQ(String(n),t[n],e,o).replace(/^ +/,\"\"),n+1<u&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function wIt(t,e,r){let o=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>\"u\"||(A!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=EQ(p,h,e,r).replace(/^ +/g,\"\"),A+=1)}return a+=\"}\",a}function IIt(t,e,r){let o=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],E=t[h];typeof E>\"u\"||(u!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=EQ(h,E,e,a).replace(/^ +/g,\"\"),u+=1)}return u!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function EQ(t,e,r,o){let{next:a}=EIe[r],n=a[t]||a[\"*\"];return CIe(e,n,o)}function CIe(t,e,r){let{collapsed:o}=EIe[e];return Array.isArray(t)?o?EIt(t,e,r):CIt(t,e,r):typeof t==\"object\"&&t!==null?o?wIt(t,e,r):IIt(t,e,r):JSON.stringify(t)}function wIe(t){return CIe(t,\"TOP_LEVEL\",\"\")}function XB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function BIt(t){let e=new Map,r=XB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>\"u\"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function vIt(t){return XB(t.fallbackPool||[],([e])=>e)}function DIt(t){let e=[];for(let[r,o]of XB(t.packageRegistry,([a])=>a===null?\"0\":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:E}]of XB(o,([I])=>I===null?\"0\":`1${I}`)){let I=[];r!==null&&n!==null&&!A.has(r)&&I.push([r,n]);for(let[C,R]of XB(A.entries(),([L])=>L))I.push([C,R]);let v=p&&p.size>0?Array.from(p):void 0,x=E||void 0;a.push([n,{packageLocation:u,packageDependencies:I,packagePeers:v,linkType:h,discardFromLookup:x}])}}return e}function ZB(t){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:BIt(t),fallbackPool:vIt(t),packageRegistryData:DIt(t)}}var vIe=$e(BIe());function DIe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,vIe.default)()].join(\"\")}function SIt(t){return JSON.stringify(t,null,2)}function PIt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function bIt(t){return[`const RAW_RUNTIME_STATE =\n`,`${PIt(wIe(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function xIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(dr.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function SIe(t){let e=ZB(t),r=bIt(e);return DIe(t.shebang,r)}function PIe(t){let e=ZB(t),r=xIt(),o=DIe(t.shebang,r);return{dataFile:SIt(e),loaderFile:o}}St();function jq(t,{basePath:e}){let r=ue.toPortablePath(e),o=V.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([I,v])=>[I,new Map(v.map(([x,C])=>{if(I===null!=(x===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let R=C.discardFromLookup??!1,L={name:I,reference:x},U=n.get(C.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=L)):n.set(C.packageLocation,{locator:L,discardFromLookup:R});let J=null;return[x,{packageDependencies:new Map(C.packageDependencies),packagePeers:new Set(C.packagePeers),linkType:C.linkType,discardFromLookup:R,get packageLocation(){return J||(J=V.join(o,C.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([I,v])=>[I,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}St();St();var np=ve(\"module\"),dm=ve(\"url\"),$q=ve(\"util\");var Mo=ve(\"url\");var QIe=$e(ve(\"assert\"));var Gq=Array.isArray,$B=JSON.stringify,ev=Object.getOwnPropertyNames,hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Yq=(t,e)=>RegExp.prototype.exec.call(t,e),Wq=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),D0=(t,...e)=>String.prototype.endsWith.apply(t,e),Kq=(t,...e)=>String.prototype.includes.apply(t,e),Vq=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),tv=(t,...e)=>String.prototype.indexOf.apply(t,e),bIe=(t,...e)=>String.prototype.replace.apply(t,e),S0=(t,...e)=>String.prototype.slice.apply(t,e),dA=(t,...e)=>String.prototype.startsWith.apply(t,e),xIe=Map,kIe=JSON.parse;function rv(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var FIe=rv(\"ERR_PACKAGE_IMPORT_NOT_DEFINED\",(t,e,r)=>`Package import specifier \"${t}\" is not defined${e?` in package ${e}package.json`:\"\"} imported from ${r}`,TypeError),Jq=rv(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),RIe=rv(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,o=!1,a=void 0)=>{let n=typeof r==\"string\"&&!o&&r.length&&!dA(r,\"./\");return e===\".\"?((0,QIe.default)(o===!1),`Invalid \"exports\" main target ${$B(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${o?\"imports\":\"exports\"}\" target ${$B(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),nv=rv(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),TIe=rv(\"ERR_PACKAGE_PATH_NOT_EXPORTED\",(t,e,r=void 0)=>e===\".\"?`No \"exports\" main defined in ${t}package.json${r?` imported from ${r}`:\"\"}`:`Package subpath '${e}' is not defined by \"exports\" in ${t}package.json${r?` imported from ${r}`:\"\"}`,Error);var wQ=ve(\"url\");function NIe(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];hm(t,a)&&(r[a]=t[a])}return r}var CQ=new xIe;function kIt(t,e,r,o){let a=CQ.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let x={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(t,x),x}let u;try{u=kIe(n)}catch(x){throw new nv(t,(r?`\"${e}\" from `:\"\")+(0,wQ.fileURLToPath)(r||e),x.message)}let{imports:A,main:p,name:h,type:E}=NIe(u,[\"imports\",\"main\",\"name\",\"type\"]),I=hm(u,\"exports\")?u.exports:void 0;(typeof A!=\"object\"||A===null)&&(A=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let v={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:I,imports:A};return CQ.set(t,v),v}function LIe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(D0(n,\"node_modules/package.json\"))break;let u=kIt((0,wQ.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL(\"../package.json\",r),r.pathname===A.pathname)break}let o=(0,wQ.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return CQ.set(o,a),a}function QIt(t,e,r){throw new FIe(t,e&&(0,Mo.fileURLToPath)(new URL(\".\",e)),(0,Mo.fileURLToPath)(r))}function FIt(t,e,r,o){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,Mo.fileURLToPath)(e)}`;throw new Jq(t,a,o&&(0,Mo.fileURLToPath)(o))}function iv(t,e,r,o,a){throw typeof e==\"object\"&&e!==null?e=$B(e,null,\"\"):e=`${e}`,new RIe((0,Mo.fileURLToPath)(new URL(\".\",r)),t,e,o,a&&(0,Mo.fileURLToPath)(a))}var OIe=/(^|\\\\|\\/)((\\.|%2e)(\\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\\\|\\/|$)/i,MIe=/\\*/g;function RIt(t,e,r,o,a,n,u,A){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&iv(r,t,o,u,a),!dA(t,\"./\")){if(u&&!dA(t,\"../\")&&!dA(t,\"/\")){let I=!1;try{new URL(t),I=!0}catch{}if(!I)return n?Wq(MIe,t,()=>e):t+e}iv(r,t,o,u,a)}Yq(OIe,S0(t,2))!==null&&iv(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,E=new URL(\".\",o).pathname;if(dA(h,E)||iv(r,t,o,u,a),e===\"\")return p;if(Yq(OIe,e)!==null){let I=n?bIe(r,\"*\",()=>e):r+e;FIt(I,o,u,a)}return n?new URL(Wq(MIe,p.href,()=>e)):new URL(e,p)}function TIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function GC(t,e,r,o,a,n,u,A){if(typeof e==\"string\")return RIt(e,r,o,t,a,n,u,A);if(Gq(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],I;try{I=GC(t,E,r,o,a,n,u,A)}catch(v){if(p=v,v.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw v}if(I!==void 0){if(I===null){p=null;continue}return I}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=ev(e);for(let h=0;h<p.length;h++){let E=p[h];if(TIt(E))throw new nv((0,Mo.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||A.has(E)){let I=e[E],v=GC(t,I,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;iv(o,e,t,u,a)}function _Ie(t,e){let r=tv(t,\"*\"),o=tv(e,\"*\"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function NIt(t,e,r){if(typeof t==\"string\"||Gq(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let o=ev(t),a=!1,n=0;for(let u=0;u<o.length;u++){let A=o[u],p=A===\"\"||A[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new nv((0,Mo.fileURLToPath)(e),r,`\"exports\" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function zq(t,e,r){throw new TIe((0,Mo.fileURLToPath)(new URL(\".\",e)),t,r&&(0,Mo.fileURLToPath)(r))}var UIe=new Set;function LIt(t,e,r){let o=(0,Mo.fileURLToPath)(e);UIe.has(o+\"|\"+t)||(UIe.add(o+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${o}${r?` imported from ${(0,Mo.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function HIe({packageJSONUrl:t,packageSubpath:e,exports:r,base:o,conditions:a}){if(NIt(r,t,o)&&(r={\".\":r}),hm(r,e)&&!Kq(e,\"*\")&&!D0(e,\"/\")){let p=r[e],h=GC(t,p,\"\",e,o,!1,!1,a);return h==null&&zq(e,t,o),h}let n=\"\",u,A=ev(r);for(let p=0;p<A.length;p++){let h=A[p],E=tv(h,\"*\");if(E!==-1&&dA(e,S0(h,0,E))){D0(e,\"/\")&&LIt(e,t,o);let I=S0(h,E+1);e.length>=h.length&&D0(e,I)&&_Ie(n,h)===1&&Vq(h,\"*\")===E&&(n=h,u=S0(e,E,e.length-I.length))}}if(n){let p=r[n],h=GC(t,p,u,n,o,!0,!1,a);return h==null&&zq(e,t,o),h}zq(e,t,o)}function qIe({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t===\"#\"||dA(t,\"#/\")||D0(t,\"/\")){let u=\"is not a valid internal imports specifier name\";throw new Jq(t,u,(0,Mo.fileURLToPath)(e))}let a,n=LIe(e,o);if(n.exists){a=(0,Mo.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(hm(u,t)&&!Kq(t,\"*\")){let A=GC(a,u[t],\"\",t,e,!1,!0,r);if(A!=null)return A}else{let A=\"\",p,h=ev(u);for(let E=0;E<h.length;E++){let I=h[E],v=tv(I,\"*\");if(v!==-1&&dA(t,S0(I,0,v))){let x=S0(I,v+1);t.length>=I.length&&D0(t,x)&&_Ie(A,I)===1&&Vq(I,\"*\")===v&&(A=I,p=S0(t,v,t.length-x.length))}}if(A){let E=u[A],I=GC(a,E,p,A,e,!0,!0,r);if(I!=null)return I}}}QIt(t,a,e)}St();var OIt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function $i(t,e,r={},o){o??=OIt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function au(t){return ue.normalize(ue.fromPortablePath(t))}var WIe=$e(GIe());function KIe(t){return MIt(),Zq[t]}var Zq;function MIt(){Zq||(Zq={\"--conditions\":[],...YIe(UIt()),...YIe(process.execArgv)})}function YIe(t){return(0,WIe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function UIt(){let t=[],e=_It(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function _It(t,e){let r=[],o=!1,a=!0;for(let n=0;n<t.length;++n){let u=t[n];if(u===\"\\\\\"&&o){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;u=t[++n]}else if(u===\" \"&&!o){a=!0;continue}else if(u==='\"'){o=!o;continue}a?(r.push(u),a=!1):r[r.length-1]+=u}return o&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}St();var[mA,gm]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),VIe=mA>19||mA===19&&gm>=2||mA===18&&gm>=13,Bzt=mA===20&&gm<6||mA===19&&gm>=3,vzt=mA>19||mA===19&&gm>=6,Dzt=mA>=21||mA===20&&gm>=10||mA===18&&gm>=19;function JIe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(e)))),VIe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function ej(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,u=/\\/$/,A=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Re of[\"react-scripts\",\"gatsby\"]){let ke=t.packageRegistry.get(Re);if(ke)for(let xe of ke.keys()){if(xe===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Re,reference:xe})}}let{ignorePattern:I,packageRegistry:v,packageLocatorsByLocations:x}=t;function C(Re,ke){return{fn:Re,args:ke,error:null,result:null}}function R(Re){let ke=process.stderr?.hasColors?.()??process.stdout.isTTY,xe=(Je,qe)=>`\\x1B[${Je}m${qe}\\x1B[0m`,He=Re.error;console.error(He?xe(\"31;1\",`\\u2716 ${Re.error?.message.replace(/\\n.*/s,\"\")}`):xe(\"33;1\",\"\\u203C Resolution\")),Re.args.length>0&&console.error();for(let Je of Re.args)console.error(`  ${xe(\"37;1\",\"In \\u2190\")} ${(0,$q.inspect)(Je,{colors:ke,compact:!0})}`);Re.result&&(console.error(),console.error(`  ${xe(\"37;1\",\"Out \\u2192\")} ${(0,$q.inspect)(Re.result,{colors:ke,compact:!0})}`));let Te=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(Te.length>0){console.error();for(let Je of Te)console.error(`  ${xe(\"38;5;244\",Je)}`)}console.error()}function L(Re,ke){if(e.allowDebug===!1)return ke;if(Number.isFinite(o)){if(o>=2)return(...xe)=>{let He=C(Re,xe);try{return He.result=ke(...xe)}catch(Te){throw He.error=Te}finally{R(He)}};if(o>=1)return(...xe)=>{try{return ke(...xe)}catch(He){let Te=C(Re,xe);throw Te.error=He,R(Te),He}}}return ke}function U(Re){let ke=g(Re);if(!ke)throw $i(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return ke}function J(Re){if(Re.name===null)return!0;for(let ke of t.dependencyTreeRoots)if(ke.name===Re.name&&ke.reference===Re.reference)return!0;return!1}let te=new Set([\"node\",\"require\",...KIe(\"--conditions\")]);function ae(Re,ke=te,xe){let He=le(V.join(Re,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(He===null)throw $i(\"INTERNAL\",`The locator that owns the \"${Re}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Te}=U(He),Je=V.join(Te,dr.manifest);if(!e.fakeFs.existsSync(Je))return null;let qe=JSON.parse(e.fakeFs.readFileSync(Je,\"utf8\"));if(qe.exports==null)return null;let b=V.contains(Te,Re);if(b===null)throw $i(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");b!==\".\"&&!A.test(b)&&(b=`./${b}`);try{let w=HIe({packageJSONUrl:(0,dm.pathToFileURL)(ue.fromPortablePath(Je)),packageSubpath:b,exports:qe.exports,base:xe?(0,dm.pathToFileURL)(ue.fromPortablePath(xe)):null,conditions:ke});return ue.toPortablePath((0,dm.fileURLToPath)(w))}catch(w){throw $i(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:au(Re),locator:He,pkgJson:qe,subpath:au(b),conditions:ke},w.code)}}function fe(Re,ke,{extensions:xe}){let He;try{ke.push(Re),He=e.fakeFs.statSync(Re)}catch{}if(He&&!He.isDirectory())return e.fakeFs.realpathSync(Re);if(He&&He.isDirectory()){let Te;try{Te=JSON.parse(e.fakeFs.readFileSync(V.join(Re,dr.manifest),\"utf8\"))}catch{}let Je;if(Te&&Te.main&&(Je=V.resolve(Re,Te.main)),Je&&Je!==Re){let qe=fe(Je,ke,{extensions:xe});if(qe!==null)return qe}}for(let Te=0,Je=xe.length;Te<Je;Te++){let qe=`${Re}${xe[Te]}`;if(ke.push(qe),e.fakeFs.existsSync(qe))return qe}if(He&&He.isDirectory())for(let Te=0,Je=xe.length;Te<Je;Te++){let qe=V.format({dir:Re,name:\"index\",ext:xe[Te]});if(ke.push(qe),e.fakeFs.existsSync(qe))return qe}return null}function ce(Re){let ke=new np.Module(Re,null);return ke.filename=Re,ke.paths=np.Module._nodeModulePaths(Re),ke}function me(Re,ke){return ke.endsWith(\"/\")&&(ke=V.join(ke,\"internal.js\")),np.Module._resolveFilename(ue.fromPortablePath(Re),ce(ue.fromPortablePath(ke)),!1,{plugnplay:!1})}function he(Re){if(I===null)return!1;let ke=V.contains(t.basePath,Re);return ke===null?!1:!!I.test(ke.replace(/\\/$/,\"\"))}let Be={std:3,resolveVirtual:1,getAllLocators:1},we=p;function g({name:Re,reference:ke}){let xe=v.get(Re);if(!xe)return null;let He=xe.get(ke);return He||null}function Ee({name:Re,reference:ke}){let xe=[];for(let[He,Te]of v)if(He!==null)for(let[Je,qe]of Te)Je===null||qe.packageDependencies.get(Re)!==ke||He===Re&&Je===ke||xe.push({name:He,reference:Je});return xe}function Se(Re,ke){let xe=new Map,He=new Set,Te=qe=>{let b=JSON.stringify(qe.name);if(He.has(b))return;He.add(b);let w=Ee(qe);for(let P of w)if(U(P).packagePeers.has(Re))Te(P);else{let F=xe.get(P.name);typeof F>\"u\"&&xe.set(P.name,F=new Set),F.add(P.reference)}};Te(ke);let Je=[];for(let qe of[...xe.keys()].sort())for(let b of[...xe.get(qe)].sort())Je.push({name:qe,reference:b});return Je}function le(Re,{resolveIgnored:ke=!1,includeDiscardFromLookup:xe=!1}={}){if(he(Re)&&!ke)return null;let He=V.relative(t.basePath,Re);He.match(n)||(He=`./${He}`),He.endsWith(\"/\")||(He=`${He}/`);do{let Te=x.get(He);if(typeof Te>\"u\"||Te.discardFromLookup&&!xe){He=He.substring(0,He.lastIndexOf(\"/\",He.length-2)+1);continue}return Te.locator}while(He!==\"\");return null}function ne(Re){try{return e.fakeFs.readFileSync(ue.toPortablePath(Re),\"utf8\")}catch(ke){if(ke.code===\"ENOENT\")return;throw ke}}function ee(Re,ke,{considerBuiltins:xe=!0}={}){if(Re.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Re===\"pnpapi\")return ue.toPortablePath(e.pnpapiResolution);if(xe&&(0,np.isBuiltin)(Re))return null;let He=au(Re),Te=ke&&au(ke);if(ke&&he(ke)&&(!V.isAbsolute(Re)||le(Re)===null)){let b=me(Re,ke);if(b===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)\n\nRequire request: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(b)}let Je,qe=Re.match(a);if(qe){if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let[,b,w]=qe,P=le(ke);if(!P){let Ne=me(Re,ke);if(Ne===!1)throw $i(\"BUILTIN_NODE_RESOLUTION_FAILED\",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).\n\nRequire path: \"${He}\"\nRequired by: ${Te}\n`,{request:He,issuer:Te});return ue.toPortablePath(Ne)}let F=U(P).packageDependencies.get(b),z=null;if(F==null&&P.name!==null){let Ne=t.fallbackExclusionList.get(P.name);if(!Ne||!Ne.has(P.reference)){for(let dt=0,jt=h.length;dt<jt;++dt){let bt=U(h[dt]).packageDependencies.get(b);if(bt!=null){r?z=bt:F=bt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let dt=t.fallbackPool.get(b);dt!=null&&(z=dt)}}}let X=null;if(F===null)if(J(P))X=$i(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${b} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b});else{let Ne=Se(b,P);Ne.every(ot=>J(ot))?X=$i(\"MISSING_PEER_DEPENDENCY\",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne}):X=$i(\"MISSING_PEER_DEPENDENCY\",`${P.name} tried to access ${b} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n\n${Ne.map(ot=>`Ancestor breaking the chain: ${ot.name}@${ot.reference}\n`).join(\"\")}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b,brokenAncestors:Ne})}else F===void 0&&(!xe&&(0,np.isBuiltin)(Re)?J(P)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${b} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${P.name} tried to access ${b}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${b} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}):J(P)?X=$i(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${b}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${Te}\n`,{request:He,issuer:Te,dependencyName:b}):X=$i(\"UNDECLARED_DEPENDENCY\",`${P.name} tried to access ${b}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${b}${b!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n`,{request:He,issuer:Te,issuerLocator:Object.assign({},P),dependencyName:b}));if(F==null){if(z===null||X===null)throw X||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Ne=X.message.replace(/\\n.*/g,\"\");X.message=Ne,!E.has(Ne)&&o!==0&&(E.add(Ne),process.emitWarning(X))}let Z=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:b,reference:F},ie=U(Z);if(!ie.packageLocation)throw $i(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${Z.name}@${Z.reference}${Z.name!==He?` (via \"${He}\")`:\"\"}\nRequired by: ${P.name}@${P.reference} (via ${Te})\n`,{request:He,issuer:Te,dependencyLocator:Object.assign({},Z)});let Pe=ie.packageLocation;w?Je=V.join(Pe,w):Je=Pe}else if(V.isAbsolute(Re))Je=V.normalize(Re);else{if(!ke)throw $i(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:He,issuer:Te});let b=V.resolve(ke);ke.match(u)?Je=V.normalize(V.join(b,Re)):Je=V.normalize(V.join(V.dirname(b),Re))}return V.normalize(Je)}function Ie(Re,ke,xe=te,He){if(n.test(Re))return ke;let Te=ae(ke,xe,He);return Te?V.normalize(Te):ke}function Fe(Re,{extensions:ke=Object.keys(np.Module._extensions)}={}){let xe=[],He=fe(Re,xe,{extensions:ke});if(He)return V.normalize(He);{JIe(xe.map(qe=>ue.fromPortablePath(qe)));let Te=au(Re),Je=le(Re);if(Je){let{packageLocation:qe}=U(Je),b=!0;try{e.fakeFs.accessSync(qe)}catch(w){if(w?.code===\"ENOENT\")b=!1;else{let P=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${P}).\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(qe)}\n`,{unqualifiedPath:Te,extensions:ke})}}if(!b){let w=qe.includes(\"/unplugged/\")?\"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).\":\"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.\";throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${Je.name}@${Je.reference}\nExpected package location: ${au(qe)}\n`,{unqualifiedPath:Te,extensions:ke})}}throw $i(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${Te}\n${xe.map(qe=>`Not found: ${au(qe)}\n`).join(\"\")}`,{unqualifiedPath:Te,extensions:ke})}}function At(Re,ke,xe){if(!ke)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let He=qIe({name:Re,base:(0,dm.pathToFileURL)(ue.fromPortablePath(ke)),conditions:xe.conditions??te,readFileSyncFn:ne});if(He instanceof URL)return Fe(ue.toPortablePath((0,dm.fileURLToPath)(He)),{extensions:xe.extensions});if(He.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return H(He,ke,xe)}function H(Re,ke,xe={}){try{if(Re.startsWith(\"#\"))return At(Re,ke,xe);let{considerBuiltins:He,extensions:Te,conditions:Je}=xe,qe=ee(Re,ke,{considerBuiltins:He});if(Re===\"pnpapi\")return qe;if(qe===null)return null;let b=()=>ke!==null?he(ke):!1,w=(!He||!(0,np.isBuiltin)(Re))&&!b()?Ie(Re,qe,Je,ke):qe;return Fe(w,{extensions:Te})}catch(He){throw Object.hasOwn(He,\"pnpCode\")&&Object.assign(He.data,{request:au(Re),issuer:ke&&au(ke)}),He}}function at(Re){let ke=V.normalize(Re),xe=mi.resolveVirtual(ke);return xe!==ke?xe:null}return{VERSIONS:Be,topLevel:we,getLocator:(Re,ke)=>Array.isArray(ke)?{name:ke[0],reference:ke[1]}:{name:Re,reference:ke},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Re=[];for(let[ke,xe]of v)for(let He of xe.keys())ke!==null&&He!==null&&Re.push({name:ke,reference:He});return Re},getPackageInformation:Re=>{let ke=g(Re);if(ke===null)return null;let xe=ue.fromPortablePath(ke.packageLocation);return{...ke,packageLocation:xe}},findPackageLocator:Re=>le(ue.toPortablePath(Re)),resolveToUnqualified:L(\"resolveToUnqualified\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=ee(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveUnqualified:L(\"resolveUnqualified\",(Re,ke)=>ue.fromPortablePath(Fe(ue.toPortablePath(Re),ke))),resolveRequest:L(\"resolveRequest\",(Re,ke,xe)=>{let He=ke!==null?ue.toPortablePath(ke):null,Te=H(ue.toPortablePath(Re),He,xe);return Te===null?null:ue.fromPortablePath(Te)}),resolveVirtual:L(\"resolveVirtual\",Re=>{let ke=at(ue.toPortablePath(Re));return ke!==null?ue.fromPortablePath(ke):null})}}St();var zIe=(t,e,r)=>{let o=ZB(t),a=jq(o,{basePath:e}),n=ue.join(e,dr.pnpCjs);return ej(a,{fakeFs:r,pnpapiResolution:n})};var rj=$e(ZIe());qt();var yA={};Vt(yA,{checkManifestCompatibility:()=>$Ie,extractBuildRequest:()=>IQ,getExtractHint:()=>nj,hasBindingGyp:()=>ij});Ye();St();function $Ie(t){return W.isPackageCompatible(t,Ji.getArchitectureSet())}function IQ(t,e,r,{configuration:o}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has(\"install\")&&e.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:t.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${W.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${W.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!o.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${W.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`)}:$Ie(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${W.prettyLocator(o,t)} The ${Ji.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var qIt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function nj(t){return t.packageFs.getExtractHint({relevantExtensions:qIt})}function ij(t){let e=V.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var av={};Vt(av,{getUnpluggedPath:()=>ov});Ye();St();function ov(t,{configuration:e}){return V.resolve(e.get(\"pnpUnpluggedFolder\"),W.slugifyLocator(t))}var jIt=new Set([W.makeIdent(null,\"open\").identHash,W.makeIdent(null,\"opn\").identHash]),P0=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let o=b0(r.project).cjs;if(!oe.existsSync(o))throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})),n={name:W.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=b0(r.project).cjs;if(!oe.existsSync(o))return null;let n=_e.getFactoryWithDefault(this.pnpCache,o,()=>_e.dynamicRequire(o,{cachingStrategy:_e.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?W.makeLocator(W.parseIdent(n.name),n.reference):null}makeInstaller(e){return new mm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},mm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new _e.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=W.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=W.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,E=!p&&e.linkType!==\"SOFT\",I,v;if(h||E){let te=A?W.devirtualizeLocator(e):e;I=this.customData.store.get(te.locatorHash),typeof I>\"u\"&&(I=await GIt(r),e.linkType===\"HARD\"&&this.customData.store.set(te.locatorHash,I)),I.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(te,e.version)}let x=h?IQ(e,I,v,{configuration:this.opts.project.configuration}):null,C=E?await this.unplugPackageIfNeeded(e,I,r,v,o):r.packageFs;if(V.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=V.resolve(C.getRealPath(),r.prefixPath),L=sj(this.opts.project.cwd,R),U=new Map,J=new Set;if(A){for(let te of e.peerDependencies.values())U.set(W.stringifyIdent(te),null),J.add(W.stringifyIdent(te));if(!u){let te=W.devirtualizeLocator(e);this.virtualTemplates.set(te.locatorHash,{location:sj(this.opts.project.cwd,mi.resolveVirtual(R)),locator:te})}}return _e.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:U,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:x}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(W.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=b0(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:E,location:I}of this.virtualTemplates.values())_e.getMapWithDefault(this.packageRegistry,W.stringifyIdent(E)).set(E.reference,{packageLocation:I,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),o=this.opts.project.workspaces.map(({anchoredLocator:E})=>({name:W.stringifyIdent(E),reference:E.reference})),a=r!==\"none\",n=[],u=new Map,A=_e.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\");if(r===\"dependencies-only\")for(let E of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(E)&&n.push({name:W.stringifyIdent(E),reference:E.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(e){let r=b0(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=SIe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=PIe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,\"ESM support for PnP uses the experimental loader API and is therefore experimental\"),await oe.changeFilePromise(r.esmLoader,(0,rj.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=V.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=V.join(a.cwd,\"node_modules\");if(o&&o.test(V.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(A.length===u.length)r.push(n);else for(let p of A)r.push(V.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<\"u\"?o.unplugged:jIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(IQ(e,r,o,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,o){let a=ov(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Uu(a,{baseFs:r.packageFs,pathUtils:V}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=V.join(a,r.prefixPath,\".ready\");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,Bt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,\"\"))})),new gn(a))}getPackageInformation(e){let r=W.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${W.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${W.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=_e.getMapWithDefault(this.packageRegistry,\"@@disk\"),o=sj(this.opts.project.cwd,e);return _e.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function sj(t,e){let r=V.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function GIt(t){let e=await Ot.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ot,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:nj(t),hasBindingGyp:ij(t)}}}Ye();Ye();qt();var e1e=$e(Zo());var x0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new it(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(x=>{let C=W.parseDescriptor(x),R=C.range!==\"unknown\"?C:W.makeDescriptor(C,\"*\");if(!kr.validRange(R.range))throw new it(`The range of the descriptor patterns must be a valid semver range (${W.prettyDescriptor(r,R)})`);return L=>{let U=W.stringifyIdent(L);return!e1e.default.isMatch(U,W.stringifyIdent(R))||L.version&&!kr.satisfiesWithPrereleases(L.version,R.range)?!1:(u.delete(x),!0)}}),p=()=>{let x=[];for(let C of o.storedPackages.values())!o.tryWorkspaceByLocator(C)&&!W.isVirtualLocator(C)&&A.some(R=>R(C))&&x.push(C);return x},h=x=>{let C=new Set,R=[],L=(U,J)=>{if(C.has(U.locatorHash))return;let te=!!o.tryWorkspaceByLocator(U);if(!(J>0&&!this.recursive&&te)&&(C.add(U.locatorHash),!o.tryWorkspaceByLocator(U)&&A.some(ae=>ae(U))&&R.push(U),!(J>0&&!this.recursive)))for(let ae of U.dependencies.values()){let fe=o.storedResolutions.get(ae.descriptorHash);if(!fe)throw new Error(\"Assertion failed: The resolution should have been registered\");let ce=o.storedPackages.get(fe);if(!ce)throw new Error(\"Assertion failed: The package should have been registered\");L(ce,J+1)}};for(let U of x)L(U.anchoredPackage,0);return R},E,I;if(this.all&&this.recursive?(E=p(),I=\"the project\"):this.all?(E=h(o.workspaces),I=\"any workspace\"):(E=h([a]),I=\"this workspace\"),u.size>1)throw new it(`Patterns ${de.prettyList(r,u,de.Type.CODE)} don't match any packages referenced by ${I}`);if(u.size>0)throw new it(`Pattern ${de.prettyList(r,u,de.Type.CODE)} doesn't match any packages referenced by ${I}`);E=_e.sortMap(E,x=>W.stringifyLocator(x));let v=await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async x=>{for(let C of E){let R=C.version??\"unknown\",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(W.makeDescriptor(C,R));L.unplugged=!0,x.reportInfo(0,`Will unpack ${W.prettyLocator(r,C)} to ${de.pretty(r,ov(C,{configuration:r}),de.Type.PATH)}`),x.reportJson({locator:W.stringifyLocator(C),version:R})}await o.topLevelWorkspace.persistManifest(),this.json||x.reportSeparator()});return v.hasErrors()?v.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};x0.paths=[[\"unplug\"]],x0.usage=nt.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]});var b0=t=>({cjs:V.join(t.cwd,dr.pnpCjs),data:V.join(t.cwd,dr.pnpData),esmLoader:V.join(t.cwd,dr.pnpEsmLoader)}),r1e=t=>/\\s/.test(t)?JSON.stringify(t):t;async function YIt(t,e,r){let o=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(o,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n;return}let u=b0(t),A=`--require ${r1e(ue.fromPortablePath(u.cjs))}`;oe.existsSync(u.esmLoader)&&(A=`${A} --experimental-loader ${(0,t1e.pathToFileURL)(ue.fromPortablePath(u.esmLoader)).href}`),oe.existsSync(u.cjs)&&(e.NODE_OPTIONS=n?`${A} ${n}`:A)}async function WIt(t,e){let r=b0(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var KIt={hooks:{populateYarnPaths:WIt,setupScriptEnvironment:YIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[P0],commands:[x0]},VIt=KIt;var u1e=$e(a1e());qt();var pj=$e(ve(\"crypto\")),A1e=$e(ve(\"fs\")),f1e=1,Si=\"node_modules\",BQ=\".bin\",p1e=\".yarn-state.yml\",A1t=1e3,hj=(o=>(o.CLASSIC=\"classic\",o.HARDLINKS_LOCAL=\"hardlinks-local\",o.HARDLINKS_GLOBAL=\"hardlinks-global\",o))(hj||{}),lv=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fj(r.project,{unrollAliases:!0}));if(a===null)throw new it(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(W.stringifyLocator(e));if(!n){let p=new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let u=n.locations.sort((p,h)=>p.split(V.sep).length-h.split(V.sep).length),A=V.join(r.project.configuration.startingCwd,Si);return u.find(p=>V.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await _e.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await fj(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=vQ(V.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return W.parseLocator(A)}makeInstaller(e){return new Aj(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},Aj=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=V.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await f1t(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!W.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,u=new Set;n.has(W.stringifyIdent(e))||n.set(W.stringifyIdent(e),e.reference);let A=e;if(W.isVirtualLocator(e)){A=W.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(W.stringifyIdent(E),null),u.add(W.stringifyIdent(E))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(A.locatorHash,h),{packageLocation:o,buildRequest:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let u=W.areIdentsEqual(a,n)?n.reference:[W.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(W.stringifyIdent(a),u)}}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let e=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),r=await fj(this.opts.project),o=this.opts.project.configuration.get(\"nmMode\");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmHoistingLimits\");try{x=_e.validateEnum(JB,v.manifest.installConfig?.hoistingLimits??x)}catch{let R=W.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${R}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(JB).join(\", \")}, using default: \"${x}\"`)}return[v.relativeCwd,x]})),n=new Map(this.opts.project.workspaces.map(v=>{let x=this.opts.project.configuration.get(\"nmSelfReferences\");return x=v.manifest.installConfig?.selfReferences??x,[v.relativeCwd,x]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,x)=>Array.isArray(x)?{name:x[0],reference:x[1]}:{name:v,reference:x},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let x=v.anchoredLocator;return{name:W.stringifyIdent(x),reference:x.reference}}),getPackageInformation:v=>{let x=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:W.makeLocator(W.parseIdent(v.name),v.reference),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return C.pnpNode},findPackageLocator:v=>{let x=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(x!==null){let C=x.anchoredLocator;return{name:W.stringifyIdent(C),reference:C.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:v=>ue.fromPortablePath(mi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=zB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:x}of p)this.opts.report.reportError(v,x);return}let E=Hq(A);await y1t(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let x=W.parseLocator(v),C=this.localStore.get(x.locatorHash);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return C.customPackageData.manifest}});let I=[];for(let[v,x]of E.entries()){if(m1e(v))continue;let C=W.parseLocator(v),R=this.localStore.get(C.locatorHash);if(typeof R>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let L=yA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});!L||I.push({buildLocations:x.locations,locator:C,buildRequest:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${de.pretty(this.opts.project.configuration,\"--preserve-symlinks\",de.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:I}}};async function f1t(t,e){let r=await Ot.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ot,o=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:yA.hasBindingGyp(e)}}}async function p1t(t,e,r,o,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${f1e}\n`,n+=`  nmMode: ${o.value}\n`;let u=Array.from(e.keys()).sort(),A=W.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of u){let I=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let v of I.locations){let x=V.contains(t.cwd,v);if(x===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    - ${JSON.stringify(x)}\n`}if(I.aliases.length>0){n+=`  aliases:\n`;for(let v of I.aliases)n+=`    - ${JSON.stringify(v)}\n`}if(E===A&&r.size>0){n+=`  bin:\n`;for(let[v,x]of r){let C=V.contains(t.cwd,v);if(C===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=`    ${JSON.stringify(C)}:\n`;for(let[R,L]of x){let U=V.relative(V.join(v,Si),L);n+=`      ${JSON.stringify(R)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=V.join(p,Si,p1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function fj(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=V.join(r,Si,p1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Ki(await oe.readFilePromise(o,\"utf8\"));if(n.__metadata.version>f1e)return null;let u=n.__metadata.nmMode||\"classic\",A=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let I=E.locations.map(x=>V.join(r,x)),v=E.bin;if(v)for(let[x,C]of Object.entries(v)){let R=V.join(r,ue.toPortablePath(x)),L=_e.getMapWithDefault(p,R);for(let[U,J]of Object.entries(C))L.set(U,ue.toPortablePath([R,Si,J].join(V.sep)))}if(A.set(h,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:E.aliases||[]}),e&&E.aliases)for(let x of E.aliases){let{scope:C,name:R}=W.parseLocator(h),L=W.makeLocator(W.makeIdent(C,R),x),U=W.stringifyLocator(L);A.set(U,{target:Bt.dot,linkType:\"HARD\",locations:I,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:h1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var WC=async(t,e)=>{if(t.split(V.sep).indexOf(Si)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=V.join(t,o.name);o.isDirectory()?(o.name!==Si||e&&e.innerLoop)&&await WC(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},l1e=4,vQ=(t,{skipPrefix:e})=>{let r=V.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(V.sep).filter(p=>p!==\"\"),a=o.indexOf(Si),n=o.slice(0,a).join(V.sep),u=V.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},h1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&V.contains(e,n.target)!==null){let A=_e.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=vQ(u,{skipPrefix:e}),h=_e.getFactoryWithDefault(r,A,o);for(let E=0;E<p.length;++E){let I=p[E];if(I!==\".\"){let v=_e.getFactoryWithDefault(h.children,I,o);h.children.set(I,v),h=v}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},gj=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,\"junction\");return}}await oe.symlinkPromise(V.relative(V.dirname(e),t),e)};async function g1e(t,e,r){let o=V.join(t,`${pj.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function h1t({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===d1e.FILE){if(n.value===\"hardlinks-global\"&&o&&r.digest){let A=V.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-A1t))if(await wn.checksumFile(A,{baseFs:oe,algorithm:\"sha1\"})!==r.digest){let I=V.join(o,`${pj.default.randomBytes(16).toString(\"hex\")}.tmp`);await oe.renamePromise(A,I);let v=await a.readFilePromise(t);await oe.writeFilePromise(I,v);try{await oe.linkPromise(I,A),r.mtimeMs=new Date().getTime(),await oe.unlinkPromise(I)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await oe.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await g1e(o,A,h),r.mtimeMs=new Date().getTime();try{await oe.linkPromise(A,e)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let u=r.mode&511;u!==420&&await oe.chmodPromise(e,u)}}var d1e=(o=>(o.FILE=\"file\",o.DIRECTORY=\"directory\",o.SYMLINK=\"symlink\",o))(d1e||{}),g1t=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(E=Bt.dot)=>{let I=V.join(e,E),v=await r.readdirPromise(I,{withFileTypes:!0}),x=new Map;for(let C of v){let R=V.join(E,C.name),L,U=V.join(I,C.name);if(C.isFile()){if(L={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let J=await wn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});L.digest=J}}else if(C.isDirectory())L={kind:\"directory\"};else if(C.isSymbolicLink())L={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(x.set(R,L),C.isDirectory()&&R!==Si){let J=await A(R);for(let[te,ae]of J)x.set(te,ae)}}return x},p;if(a.value===\"hardlinks-global\"&&o&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(E,\"utf8\"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[E,I]of p){let v=V.join(e,E),x=V.join(t,E);if(I.kind===\"directory\")await oe.mkdirPromise(x,{recursive:!0});else if(I.kind===\"file\"){let C=I.mtimeMs;await h1t({srcPath:v,dstPath:x,entry:I,nmMode:a,baseFs:r,globalHardlinksStore:o}),I.mtimeMs!==C&&(h=!0)}else I.kind===\"symlink\"&&await gj(V.resolve(V.dirname(x),I.symlinkTo),x,n)}if(a.value===\"hardlinks-global\"&&o&&h&&u){let E=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(E),await g1e(o,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function d1t(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,E,I,v,x)=>{let C=!0,R=V.join(h,E),L=new Set;if(E===Si||E.startsWith(\"@\")){let J;try{J=oe.statSync(R)}catch{}C=!!J,J?J.mtimeMs>r?(A=!0,L=new Set(oe.readdirSync(R))):L=new Set(I.children.get(E).children.keys()):A=!0;let te=e.get(h);if(te){let ae=V.join(h,Si,BQ),fe;try{fe=oe.statSync(ae)}catch{}if(!fe)A=!0;else if(fe.mtimeMs>r){A=!0;let ce=new Set(oe.readdirSync(ae)),me=new Map;n.set(h,me);for(let[he,Be]of te)ce.has(he)&&me.set(he,Be)}else n.set(h,te)}}else C=x.has(E);let U=I.children.get(E);if(C){let{linkType:J,locator:te}=U,ae={children:new Map,linkType:J,locator:te};if(v.children.set(E,ae),te){let fe=_e.getSetWithDefault(u,te);fe.add(R),u.set(te,fe)}for(let fe of U.children.keys())p(R,fe,U,ae,L)}else U.locator&&o.storedBuildState.delete(W.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:I,locator:v}=E,x={children:new Map,linkType:I,locator:v};if(a.set(h,x),v){let C=_e.getSetWithDefault(u,E.locator);C.add(h),u.set(E.locator,C)}E.children.has(Si)&&p(h,Si,E,x,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function m1e(t){let e=W.parseDescriptor(t);return W.isVirtualDescriptor(e)&&(e=W.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function m1t(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=m1e(A)?null:await o(A,p[0]),E=new Map;if(h)for(let[I,v]of h.bin){let x=V.join(p[0],v);v!==\"\"&&oe.existsSync(x)&&E.set(I,v)}a.set(A,E)}let n=new Map,u=(A,p,h)=>{let E=new Map,I=V.contains(r,A);if(h.locator&&I!==null){let v=a.get(h.locator);for(let[x,C]of v){let R=V.join(A,ue.toPortablePath(C));E.set(x,R)}for(let[x,C]of h.children){let R=V.join(A,x),L=u(R,R,C);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,x]of h.children){let C=u(V.join(A,v),p,x);for(let[R,L]of C)E.set(R,L)}return E};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var c1e=(t,e)=>{if(!t||!e)return t===e;let r=W.parseLocator(t);W.isVirtualLocator(r)&&(r=W.devirtualizeLocator(r));let o=W.parseLocator(e);return W.isVirtualLocator(o)&&(o=W.devirtualizeLocator(o)),W.areLocatorsEqual(r,o)};function dj(t){return V.join(t.get(\"globalFolder\"),\"store\")}async function y1t(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=V.join(o.cwd,Si),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:I}=d1t(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=h1e(e,{skipPrefix:o.cwd}),x=[],C=async({srcDir:Be,dstDir:we,linkType:g,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})=>{let ee=(async()=>{try{g===\"SOFT\"?(await oe.mkdirPromise(V.dirname(we),{recursive:!0}),await gj(V.resolve(Be),we,le)):await g1t(we,Be,{baseFs:r,globalHardlinksStore:Ee,nmMode:Se,windowsLinkType:le,packageChecksum:ne})}catch(Ie){throw Ie.message=`While persisting ${Be} -> ${we} ${Ie.message}`,Ie}finally{ae.tick()}})().then(()=>x.splice(x.indexOf(ee),1));x.push(ee),x.length>l1e&&await Promise.race(x)},R=async(Be,we,g)=>{let Ee=(async()=>{let Se=async(le,ne,ee)=>{try{ee.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let Ie=await oe.readdirPromise(le,{withFileTypes:!0});for(let Fe of Ie){if(!ee.innerLoop&&Fe.name===BQ)continue;let At=V.join(le,Fe.name),H=V.join(ne,Fe.name);Fe.isDirectory()?(Fe.name!==Si||ee&&ee.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await Se(At,H,{...ee,innerLoop:!0})):me.value===\"hardlinks-local\"||me.value===\"hardlinks-global\"?await oe.linkPromise(At,H):await oe.copyFilePromise(At,H,A1e.default.constants.COPYFILE_FICLONE)}}catch(Ie){throw ee.innerLoop||(Ie.message=`While cloning ${le} -> ${ne} ${Ie.message}`),Ie}finally{ee.innerLoop||ae.tick()}};await Se(Be,we,g)})().then(()=>x.splice(x.indexOf(Ee),1));x.push(Ee),x.length>l1e&&await Promise.race(x)},L=async(Be,we,g)=>{if(g)for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await L(V.join(Be,Ee),Se,le)}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!1});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:Be===A,allowSymlink:Ee})}};for(let[Be,we]of p){let g=v.get(Be);for(let[Ee,Se]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee),ne=V.join(Be,Ee);await L(ne,Se,le)}}let U=async(Be,we,g)=>{if(g){c1e(we.locator,g.locator)||await WC(Be,{contentsOnly:we.linkType===\"HARD\"});for(let[Ee,Se]of we.children){let le=g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}else{we.children.has(Si)&&await WC(V.join(Be,Si),{contentsOnly:!0});let Ee=V.basename(Be)===Si&&v.has(V.join(V.dirname(Be),V.sep));await WC(Be,{contentsOnly:we.linkType===\"HARD\",allowSymlink:Ee})}};for(let[Be,we]of v){let g=p.get(Be);for(let[Ee,Se]of we.children){if(Ee===\".\")continue;let le=g&&g.children.get(Ee);await U(V.join(Be,Ee),Se,le)}}let J=new Map,te=[];for(let[Be,we]of E)for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=v.get(Ee),ne=Ee;if(le){for(let ee of Se)if(ne=V.join(ne,ee),le=le.children.get(ee),!le)break;if(le){let ee=c1e(le.locator,Be),Ie=e.get(le.locator),Fe=Ie.target,At=ne,H=Ie.linkType;if(ee)J.has(Fe)||J.set(Fe,At);else if(Fe!==At){let at=W.parseLocator(le.locator);W.isVirtualLocator(at)&&(at=W.devirtualizeLocator(at)),te.push({srcDir:Fe,dstDir:At,linkType:H,realLocatorHash:at.locatorHash})}}}}for(let[Be,{locations:we}]of e.entries())for(let g of we){let{locationRoot:Ee,segments:Se}=vQ(g,{skipPrefix:o.cwd}),le=p.get(Ee),ne=v.get(Ee),ee=Ee,Ie=e.get(Be),Fe=W.parseLocator(Be);W.isVirtualLocator(Fe)&&(Fe=W.devirtualizeLocator(Fe));let At=Fe.locatorHash,H=Ie.target,at=g;if(H===at)continue;let Re=Ie.linkType;for(let ke of Se)ne=ne.children.get(ke);if(!le)te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});else for(let ke of Se)if(ee=V.join(ee,ke),le=le.children.get(ke),!le){te.push({srcDir:H,dstDir:at,linkType:Re,realLocatorHash:At});break}}let ae=Xs.progressViaCounter(te.length),fe=a.reportProgress(ae),ce=o.configuration.get(\"nmMode\"),me={value:ce},he=o.configuration.get(\"winLinkType\");try{let Be=me.value===\"hardlinks-global\"?`${dj(o.configuration)}/v1`:null;if(Be&&!await oe.existsPromise(Be)){await oe.mkdirpPromise(Be);for(let g=0;g<256;g++)await oe.mkdirPromise(V.join(Be,g.toString(16).padStart(2,\"0\")))}for(let g of te)(g.linkType===\"SOFT\"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await C({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:he,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(x),x.length=0;for(let g of te){let Ee=J.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==Ee&&await R(Ee,g.dstDir,{nmMode:me})}await Promise.all(x),await oe.mkdirPromise(A,{recursive:!0});let we=await m1t(e,v,o.cwd,{loadManifest:n});await E1t(h,we,o.cwd,he),await p1t(o,e,we,me,{installChangedByUser:I}),ce==\"hardlinks-global\"&&me.value==\"hardlinks-local\"&&a.reportWarningOnce(74,\"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices\")}finally{fe.stop()}}async function E1t(t,e,r,o){for(let a of t.keys()){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=V.join(a,Si,BQ);await oe.removePromise(n)}}for(let[a,n]of e){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=V.join(a,Si,BQ),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(V.join(u,p)),process.platform===\"win32\"&&await oe.removePromise(V.join(u,`${p}.cmd`)));for(let[p,h]of n){let E=A.get(p),I=V.join(u,p);E!==h&&(process.platform===\"win32\"?await(0,u1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(I),{createPwshFile:!1}):(await oe.removePromise(I),await gj(h,I,o),V.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ye();St();nA();var cv=class extends P0{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new mj(r)}},mj=class extends mm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let o=new mi({baseFs:new Jl({maxOpenFiles:80,readOnlyArchives:!0})}),a=zIe(r,this.opts.project.cwd,o),{tree:n,errors:u}=zB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:I,text:v}of u)this.opts.report.reportError(I,v);return}let A=new Map;r.fallbackPool=A;let p=(I,v)=>{let x=W.parseLocator(v.locator),C=W.stringifyIdent(x);C===I?A.set(I,x.reference):A.set(I,[C,x.reference])},h=V.join(this.opts.project.cwd,dr.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let I of E.dirList){let v=V.join(h,I),x=n.get(v);if(typeof x>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in x)p(I,x);else for(let C of x.dirList){let R=V.join(v,C),L=n.get(R);if(typeof L>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in L)p(`${I}/${C}`,L);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var C1t={hooks:{cleanGlobalArtifacts:async t=>{let e=dj(t);await oe.removePromise(e)}},configuration:{nmHoistingLimits:{description:\"Prevents packages to be hoisted past specific levels\",type:\"STRING\",values:[\"workspaces\",\"dependencies\",\"none\"],default:\"none\"},nmMode:{description:\"Defines in which measure Yarn must use hardlinks and symlinks when generated `node_modules` directories.\",type:\"STRING\",values:[\"classic\",\"hardlinks-local\",\"hardlinks-global\"],default:\"classic\"},nmSelfReferences:{description:\"Defines whether the linker should generate self-referencing symlinks for workspaces.\",type:\"BOOLEAN\",default:!0}},linkers:[lv,cv]},w1t=C1t;var dG={};Vt(dG,{NpmHttpFetcher:()=>fv,NpmRemapResolver:()=>pv,NpmSemverFetcher:()=>dl,NpmSemverResolver:()=>hv,NpmTagResolver:()=>gv,default:()=>Lvt,npmConfigUtils:()=>Zn,npmHttpUtils:()=>Zr,npmPublishUtils:()=>ow});Ye();var D1e=$e(zn());var Wn=\"npm:\";var Zr={};Vt(Zr,{AuthType:()=>I1e,customPackageError:()=>ym,del:()=>R1t,get:()=>Em,getIdentUrl:()=>DQ,getPackageMetadata:()=>JC,handleInvalidAuthenticationError:()=>k0,post:()=>Q1t,put:()=>F1t});Ye();Ye();St();var wj=$e(f2()),C1e=$e(D_()),w1e=$e(zn());var Zn={};Vt(Zn,{RegistryType:()=>y1e,getAuditRegistry:()=>I1t,getAuthConfiguration:()=>Cj,getDefaultRegistry:()=>uv,getPublishRegistry:()=>B1t,getRegistryConfiguration:()=>E1e,getScopeConfiguration:()=>Ej,getScopeRegistry:()=>KC,normalizeRegistry:()=>oc});var y1e=(o=>(o.AUDIT_REGISTRY=\"npmAuditRegistry\",o.FETCH_REGISTRY=\"npmRegistryServer\",o.PUBLISH_REGISTRY=\"npmPublishRegistry\",o))(y1e||{});function oc(t){return t.replace(/\\/$/,\"\")}function I1t({configuration:t}){return uv({configuration:t,type:\"npmAuditRegistry\"})}function B1t(t,{configuration:e}){return t.publishConfig?.registry?oc(t.publishConfig.registry):t.name?KC(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):uv({configuration:e,type:\"npmPublishRegistry\"})}function KC(t,{configuration:e,type:r=\"npmRegistryServer\"}){let o=Ej(t,{configuration:e});if(o===null)return uv({configuration:e,type:r});let a=o.get(r);return a===null?uv({configuration:e,type:r}):oc(a)}function uv({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return oc(r!==null?r:t.get(\"npmRegistryServer\"))}function E1e(t,{configuration:e}){let r=e.get(\"npmRegistries\"),o=oc(t),a=r.get(o);if(typeof a<\"u\")return a;let n=r.get(o.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}function Ej(t,{configuration:e}){if(t===null)return null;let o=e.get(\"npmScopes\").get(t);return o||null}function Cj(t,{configuration:e,ident:r}){let o=r&&Ej(r.scope,{configuration:e});return o?.get(\"npmAuthIdent\")||o?.get(\"npmAuthToken\")?o:E1e(t,{configuration:e})||e}var I1e=(a=>(a[a.NO_AUTH=0]=\"NO_AUTH\",a[a.BEST_EFFORT=1]=\"BEST_EFFORT\",a[a.CONFIGURATION=2]=\"CONFIGURATION\",a[a.ALWAYS_AUTH=3]=\"ALWAYS_AUTH\",a))(I1e||{});async function k0(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){if(PQ(t))throw new zt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new zt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await N1t(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function ym(t,e){let r=t.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${de.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function DQ(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var B1e=new Map,v1t=new Map;async function D1t(t){return await _e.getFactoryWithDefault(B1e,t,async()=>{let e=null;try{e=await oe.readJsonPromise(t)}catch{}return e})}async function S1t(t,e,{configuration:r,cached:o,registry:a,headers:n,version:u,...A}){return await _e.getFactoryWithDefault(v1t,t,async()=>await Em(DQ(e),{...A,customErrorMessage:ym,configuration:r,registry:a,ident:e,headers:{...n,[\"If-None-Match\"]:o?.etag,[\"If-Modified-Since\"]:o?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(o===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:o.metadata}}let E=P1t(JSON.parse(h.body.toString())),I={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return B1e.set(t,Promise.resolve(I)),Promise.resolve().then(async()=>{let v=`${t}-${process.pid}.tmp`;await oe.mkdirPromise(V.dirname(v),{recursive:!0}),await oe.writeJsonPromise(v,I,{compact:!0}),await oe.renamePromise(v,t)}).catch(()=>{}),{...h,body:E}}}))}async function JC(t,{cache:e,project:r,registry:o,headers:a,version:n,...u}){let{configuration:A}=r;o=Av(A,{ident:t,registry:o});let p=x1t(A,o),h=V.join(p,`${W.slugifyIdent(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await D1t(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(A.get(\"enableOfflineMode\")){let I=structuredClone(E.metadata),v=new Set;if(e){for(let C of Object.keys(I.versions)){let R=W.makeLocator(t,`npm:${C}`),L=e.getLocatorMirrorPath(R);(!L||!oe.existsSync(L))&&(delete I.versions[C],v.add(C))}let x=I[\"dist-tags\"].latest;if(v.has(x)){let C=Object.keys(E.metadata.versions).sort(w1e.default.compare),R=C.indexOf(x);for(;v.has(C[R])&&R>=0;)R-=1;R>=0?I[\"dist-tags\"].latest=C[R]:delete I[\"dist-tags\"].latest}}return I}}return await S1t(h,t,{...u,configuration:A,cached:E,registry:o,headers:a,version:n})}var v1e=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function P1t(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,(0,C1e.default)(r,v1e)]))}}var b1t=wn.makeHash(...v1e).slice(0,6);function x1t(t,e){let r=k1t(t),o=new URL(e);return V.join(r,b1t,o.hostname)}function k1t(t){return V.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function Em(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){n=Av(e,{ident:o,registry:n}),o&&o.scope&&typeof a>\"u\"&&(a=1);let A=await SQ(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await nn.get(t.charAt(0)===\"/\"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await k0(p,{registry:n,configuration:e,headers:r}),p}}async function Q1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.post(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I)||p)throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Ij(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function F1t(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){A=Av(o,{ident:n,registry:A});let E=await SQ(A,{authType:u,configuration:o,ident:n});E&&(a={...a,authorization:E}),p&&(a={...a,...VC(p)});try{return await nn.put(A+t,e,{configuration:o,headers:a,...h})}catch(I){if(!PQ(I))throw await k0(I,{attemptedAs:r,registry:A,configuration:o,headers:a}),I;p=await Ij(I,{configuration:o});let v={...a,...VC(p)};try{return await nn.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(x){throw await k0(x,{attemptedAs:r,registry:A,configuration:o,headers:a}),x}}}async function R1t(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){u=Av(r,{ident:a,registry:u});let h=await SQ(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...VC(A)});try{return await nn.del(u+t,{configuration:r,headers:o,...p})}catch(E){if(!PQ(E)||A)throw await k0(E,{attemptedAs:e,registry:u,configuration:r,headers:o}),E;A=await Ij(E,{configuration:r});let I={...o,...VC(A)};try{return await nn.del(`${u}${t}`,{configuration:r,headers:I,...p})}catch(v){throw await k0(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}function Av(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return KC(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return oc(r)}async function SQ(t,{authType:e=2,configuration:r,ident:o}){let a=Cj(t,{configuration:r,ident:o}),n=T1t(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get(\"npmAuthToken\"))return`Bearer ${a.get(\"npmAuthToken\")}`;if(a.get(\"npmAuthIdent\")){let A=a.get(\"npmAuthIdent\");return A.includes(\":\")?`Basic ${Buffer.from(A).toString(\"base64\")}`:`Basic ${A}`}if(n&&e!==1)throw new zt(33,\"No authentication configured for request\");return null}function T1t(t,e){switch(e){case 2:return t.get(\"npmAlwaysAuth\");case 1:case 3:return!0;case 0:return!1;default:throw new Error(\"Unreachable\")}}async function N1t(t,e,{configuration:r}){if(typeof e>\"u\"||typeof e.authorization>\"u\")return\"an anonymous user\";try{return(await nn.get(new URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??\"an unknown user\"}catch{return\"an unknown user\"}}async function Ij(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Nt.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,de.pretty(e,\"$1\",de.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ji.openUrl){let{openNow:u}=await(0,wj.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});u&&(await Ji.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:o}=await(0,wj.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),o}function PQ(t){if(t.originalError?.name!==\"HTTPError\")return!1;try{return(t.originalError?.response.headers[\"www-authenticate\"].split(/,\\s*/).map(r=>r.toLowerCase())).includes(\"otp\")}catch{return!1}}function VC(t){return{[\"npm-otp\"]:t}}var fv=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o,params:a}=W.parseRange(e.reference);return!(!D1e.default.valid(o)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=W.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Em(o.__archiveUrl,{customErrorMessage:ym,configuration:r.project.configuration,ident:e});return await Xi.convertToZip(a,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}};Ye();var pv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!W.tryParseDescriptor(e.range.slice(Wn.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(W.parseDescriptor(e.range.slice(Wn.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ye();Ye();var S1e=$e(zn());var dl=class{supports(e,r){if(!e.reference.startsWith(Wn))return!1;let o=new URL(e.reference);return!(!S1e.default.valid(o.pathname)||o.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await Em(dl.getLocatorUrl(e),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}catch{o=await Em(dl.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:ym,configuration:r.project.configuration,ident:e})}return await Xi.convertToZip(o,{configuration:r.project.configuration,prefixPath:W.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=KC(e.scope,{configuration:o}),n=dl.getLocatorUrl(e);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(e){let r=kr.clean(e.reference.slice(Wn.length));if(r===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${DQ(e)}/-/${e.name}-${r}.tgz`}};Ye();Ye();Ye();var Bj=$e(zn());var bQ=W.makeIdent(null,\"node-gyp\"),L1t=/\\b(node-gyp|prebuild-install)\\b/,hv=class{supportsDescriptor(e,r){return e.range.startsWith(Wn)?!!kr.validRange(e.range.slice(Wn.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Wn))return!1;let{selector:o}=W.parseRange(e.reference);return!!Bj.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=kr.validRange(e.range.slice(Wn.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);let n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project,version:Bj.default.valid(a.raw)?a.raw:void 0}),u=_e.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new kr.SemVer(h);if(a.test(E))return E}catch{}return _e.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=W.makeLocator(e,`${Wn}${h.raw}`),I=n.versions[h.raw].dist.tarball;return dl.isConventionalTarballUrl(E,I,{configuration:o.project.configuration})?E:W.bindLocator(E,{__archiveUrl:I})})}async getSatisfying(e,r,o,a){let n=kr.validRange(e.range.slice(Wn.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Wn.length)}`);return{locators:_e.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return _e.mapAndFilter.skip;let h=W.tryParseRange(p.reference,{requireProtocol:Wn});if(!h)return _e.mapAndFilter.skip;let E=new kr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:_e.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=W.parseRange(e.reference),a=kr.clean(o);if(a===null)throw new zt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await JC(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new zt(16,`Registry failed to return reference \"${a}\"`);let u=new Ot;if(u.load(n.versions[a]),!u.dependencies.has(bQ.identHash)&&!u.peerDependencies.has(bQ.identHash)){for(let A of u.scripts.values())if(A.match(L1t)){u.dependencies.set(bQ.identHash,W.makeDescriptor(bQ,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ye();Ye();var P1e=$e(zn());var gv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Wn)||!FE.test(e.range.slice(Wn.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Wn.length),n=await JC(e,{cache:o.fetchOptions?.cache,project:o.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new zt(15,'Registry returned invalid data - missing \"dist-tags\" field');let u=n[\"dist-tags\"];if(!Object.hasOwn(u,a))throw new zt(16,`Registry failed to return tag \"${a}\"`);let A=u[a],p=W.makeLocator(e,`${Wn}${A}`),h=n.versions[A].dist.tarball;return dl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[W.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){let n=[];for(let u of o){if(u.identHash!==e.identHash)continue;let A=W.tryParseRange(u.reference,{requireProtocol:Wn});if(!(!A||!P1e.default.valid(A.selector))){if(A.params?.__archiveUrl){let p=W.makeRange({protocol:Wn,selector:A.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(W.makeDescriptor(e,p),r,a);if(u.reference!==h.reference)continue}n.push(u)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var ow={};Vt(ow,{getGitHead:()=>Tvt,getPublishAccess:()=>dBe,getReadmeContent:()=>mBe,makePublishBody:()=>Rvt});Ye();Ye();St();var AG={};Vt(AG,{PackCommand:()=>U0,default:()=>gvt,packUtils:()=>wA});Ye();Ye();Ye();St();qt();var wA={};Vt(wA,{genPackList:()=>XQ,genPackStream:()=>uG,genPackageManifest:()=>iBe,hasPackScripts:()=>lG,prepareForPack:()=>cG});Ye();St();var aG=$e(Zo()),rBe=$e(Z2e()),nBe=ve(\"zlib\"),ivt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],svt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function lG(t){return!!(un.hasWorkspaceScript(t,\"prepack\")||un.hasWorkspaceScript(t,\"postpack\"))}async function cG(t,{report:e},r){await un.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let o=V.join(t.cwd,Ot.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await un.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function uG(t,e){typeof e>\"u\"&&(e=await XQ(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(V.normalize(n));for(let n of t.manifest.bin.values())r.add(V.normalize(n));let o=rBe.default.pack();process.nextTick(async()=>{for(let n of e){let u=V.normalize(n),A=V.resolve(t.cwd,u),p=V.join(\"package\",u),h=await oe.lstatPromise(A),E={name:p,mtime:new Date(vi.SAFE_TIME*1e3)},I=r.has(u)?493:420,v,x,C=new Promise((L,U)=>{v=L,x=U}),R=L=>{L?x(L):v()};if(h.isFile()){let L;u===\"package.json\"?L=Buffer.from(JSON.stringify(await iBe(t),null,2)):L=await oe.readFilePromise(A),o.entry({...E,mode:I,type:\"file\"},L,R)}else h.isSymbolicLink()?o.entry({...E,mode:I,type:\"symlink\",linkname:await oe.readlinkPromise(A)},R):R(new Error(`Unsupported file type ${h.mode} for ${ue.fromPortablePath(u)}`));await C}o.finalize()});let a=(0,nBe.createGzip)();return o.pipe(a),a}async function iBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function XQ(t){let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let I of svt)o.reject.push(I);for(let I of ivt)o.accept.push(I);o.reject.push(r.get(\"rcFilename\"));let a=I=>{if(I===null||!I.startsWith(`${t.cwd}/`))return;let v=V.relative(t.cwd,I),x=V.resolve(Bt.root,v);o.reject.push(x)};a(V.resolve(e.cwd,dr.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(I=>I.populateYarnPaths,e,I=>{a(I)});for(let I of e.workspaces){let v=V.relative(t.cwd,I.cwd);v!==\"\"&&!v.match(/^(\\.\\.)?\\//)&&o.reject.push(`/${v}`)}let n={accept:[],reject:[]},u=t.manifest.publishConfig?.main??t.manifest.main,A=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;u!=null&&n.accept.push(V.resolve(Bt.root,u)),A!=null&&n.accept.push(V.resolve(Bt.root,A)),typeof p==\"string\"&&n.accept.push(V.resolve(Bt.root,p));for(let I of h.values())n.accept.push(V.resolve(Bt.root,I));if(p instanceof Map)for(let[I,v]of p.entries())n.accept.push(V.resolve(Bt.root,I)),typeof v==\"string\"&&n.accept.push(V.resolve(Bt.root,v));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let I of t.manifest.files)sBe(n.accept,I,{cwd:Bt.root})}return await ovt(t.cwd,{hasExplicitFileList:E,globalList:o,ignoreList:n})}async function ovt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new _u(t),u=[[Bt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!eBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(A),I=!1,v=!1;if(!e||A!==Bt.root)for(let R of E)I=I||R===\".gitignore\",v=v||R===\".npmignore\";let x=v?await $2e(n,A,\".npmignore\"):I?await $2e(n,A,\".gitignore\"):null,C=x!==null?[x].concat(p):p;eBe(A,{globalList:r,ignoreLists:p})&&(C=[...p,{accept:[],reject:[\"**/*\"]}]);for(let R of E)u.push([V.resolve(A,R),C])}else(h.isFile()||h.isSymbolicLink())&&a.push(V.relative(Bt.root,A))}return a.sort()}async function $2e(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(V.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))sBe(o.reject,n,{cwd:e});return o}function avt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=V.resolve(e,t)),r&&(t=`!${t}`),t}function sBe(t,e,{cwd:r}){let o=e.trim();o===\"\"||o[0]===\"#\"||t.push(avt(o,{cwd:r}))}function eBe(t,{globalList:e,ignoreLists:r}){let o=zQ(t,e.accept);if(o!==0)return o===2;let a=zQ(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=zQ(t,n.accept);if(u!==0)return u===2;let A=zQ(t,n.reject);if(A!==0)return A===1}return!1}function zQ(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return tBe(t,o)?2:tBe(t,r)?1:0}function tBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!(aG.default.isMatch(t,r,{dot:!0,nocase:!0})||aG.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var U0=class extends ut{constructor(){super(...arguments);this.installIfNeeded=ge.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=ge.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=ge.String(\"--filename\",{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await lG(a)&&(this.installIfNeeded?await o.install({cache:await Lr.find(r),report:new Qi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<\"u\"?V.resolve(this.context.cwd,lvt(n,{workspace:a})):V.resolve(a.cwd,\"package.tgz\");return(await Nt.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await cG(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await XQ(a);for(let E of h)p.reportInfo(null,ue.fromPortablePath(E)),p.reportJson({location:ue.fromPortablePath(E)});if(!this.dryRun){let E=await uG(a,h),I=oe.createWriteStream(u);E.pipe(I),await new Promise(v=>{I.on(\"finish\",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${de.pretty(r,u,de.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};U0.paths=[[\"pack\"]],U0.usage=nt.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]});function lvt(t,{workspace:e}){let r=t.replace(\"%s\",cvt(e)).replace(\"%v\",uvt(e));return ue.toPortablePath(r)}function cvt(t){return t.manifest.name!==null?W.slugifyIdent(t.manifest.name):\"package\"}function uvt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var Avt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],fvt=\"workspace:\",pvt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of Avt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=W.parseRange(a.range);if(u.protocol===fvt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new zt(21,`${W.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;W.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector===\"*\"?A=n.manifest.version??\"0.0.0\":u.selector===\"~\"||u.selector===\"^\"?A=`${u.selector}${n.manifest.version??\"0.0.0\"}`:A=u.selector;let p=o===\"dependencies\"?W.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":o;e[h][W.stringifyIdent(a)]=A}}},hvt={hooks:{beforeWorkspacePacking:pvt},commands:[U0]},gvt=hvt;var hBe=ve(\"crypto\"),gBe=$e(pBe());async function Rvt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=W.stringifyIdent(u),h=(0,hBe.createHash)(\"sha1\").update(e).digest(\"hex\"),E=gBe.default.fromData(e).toString(),I=r??dBe(t,u),v=await mBe(t),x=await wA.genPackageManifest(t),C=`${p}-${A}.tgz`,R=new URL(`${oc(a)}/${p}/-/${C}`);return{_id:p,_attachments:{[C]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}},name:p,access:I,[\"dist-tags\"]:{[o]:A},versions:{[A]:{...x,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:E,tarball:R.toString()}}},readme:v}}async function Tvt(t){try{let{stdout:e}=await Ur.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function dBe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access==\"string\"?t.manifest.publishConfig.access:r.get(\"npmPublishAccess\")!==null?r.get(\"npmPublishAccess\"):e.scope?\"restricted\":\"public\"}async function mBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${W.stringifyIdent(r)}\n`;try{a=await oe.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var gG={npmAlwaysAuth:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"BOOLEAN\",default:!1},npmAuthIdent:{description:\"Authentication identity for the npm registry (_auth in npm and yarn v1)\",type:\"SECRET\",default:null},npmAuthToken:{description:\"Authentication token for the npm registry (_authToken in npm and yarn v1)\",type:\"SECRET\",default:null}},yBe={npmAuditRegistry:{description:\"Registry to query for audit reports\",type:\"STRING\",default:null},npmPublishRegistry:{description:\"Registry to push packages to\",type:\"STRING\",default:null},npmRegistryServer:{description:\"URL of the selected npm registry (note: npm enterprise isn't supported)\",type:\"STRING\",default:\"https://registry.yarnpkg.com\"}},Nvt={configuration:{...gG,...yBe,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG,...yBe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:oc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...gG}}}},fetchers:[fv,dl],resolvers:[pv,hv,gv]},Lvt=Nvt;var DG={};Vt(DG,{NpmAuditCommand:()=>H0,NpmInfoCommand:()=>q0,NpmLoginCommand:()=>j0,NpmLogoutCommand:()=>G0,NpmPublishCommand:()=>Y0,NpmTagAddCommand:()=>K0,NpmTagListCommand:()=>W0,NpmTagRemoveCommand:()=>V0,NpmWhoamiCommand:()=>J0,default:()=>jvt,npmAuditTypes:()=>Rv,npmAuditUtils:()=>ZQ});Ye();Ye();qt();var wG=$e(Zo());Za();var Rv={};Vt(Rv,{Environment:()=>Qv,Severity:()=>Fv});var Qv=(o=>(o.All=\"all\",o.Production=\"production\",o.Development=\"development\",o))(Qv||{}),Fv=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Fv||{});var ZQ={};Vt(ZQ,{allSeverities:()=>aw,getPackages:()=>CG,getReportTree:()=>yG,getSeverityInclusions:()=>mG,getTopLevelDependencies:()=>EG});Ye();var EBe=$e(zn());var aw=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function mG(t){if(typeof t>\"u\")return new Set(aw);let e=aw.indexOf(t),r=aw.slice(e);return new Set(r)}function yG(t){let e={},r={children:e};for(let[o,a]of _e.sortMap(Object.entries(t),n=>n[0]))for(let n of _e.sortMap(a,u=>`${u.id}`))e[`${o}/${n.id}`]={value:de.tuple(de.Type.IDENT,W.parseIdent(o)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:de.tuple(de.Type.ID,n.id)},Issue:{label:\"Issue\",value:de.tuple(de.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:de.tuple(de.Type.URL,n.url)},Severity:{label:\"Severity\",value:de.tuple(de.Type.NO_HINT,n.severity)},[\"Vulnerable Versions\"]:{label:\"Vulnerable Versions\",value:de.tuple(de.Type.RANGE,n.vulnerable_versions)},[\"Tree Versions\"]:{label:\"Tree Versions\",children:[...n.versions].sort(EBe.default.compare).map(u=>({value:de.tuple(de.Type.REFERENCE,u)}))},Dependents:{label:\"Dependents\",children:_e.sortMap(n.dependents,u=>W.stringifyLocator(u)).map(u=>({value:de.tuple(de.Type.LOCATOR,u)}))}}};return r}function EG(t,e,{all:r,environment:o}){let a=[],n=r?t.workspaces:[e],u=[\"all\",\"production\"].includes(o),A=[\"all\",\"development\"].includes(o);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!A:!u)||a.push({workspace:p,dependency:h});return a}function CG(t,e,{recursive:r}){let o=new Map,a=new Set,n=[],u=(A,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");if(W.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let v=W.stringifyIdent(E),x=_e.getMapWithDefault(o,v);_e.getArrayWithDefault(x,E.version).push(A)}if(r)for(let v of E.dependencies.values())n.push([E,v])};for(let{workspace:A,dependency:p}of e)n.push([A.anchoredLocator,p]);for(;n.length>0;){let[A,p]=n.shift();u(A,p)}return o}var H0=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Audit dependencies from all workspaces\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Audit transitive dependencies as well\"});this.environment=ge.String(\"--environment\",\"all\",{description:\"Which environments to cover\",validator:Ks(Qv)});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.noDeprecations=ge.Boolean(\"--no-deprecations\",!1,{description:\"Don't warn about deprecated packages\"});this.severity=ge.String(\"--severity\",\"info\",{description:\"Minimal severity requested for packages to be displayed\",validator:Ks(Fv)});this.excludes=ge.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=ge.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=EG(o,a,{all:this.all,environment:this.environment}),u=CG(o,n,{recursive:this.recursive}),A=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[L,U]of u)A.some(J=>wG.default.isMatch(L,J))||(p[L]=[...U.keys()]);let h=Zn.getAuditRegistry({configuration:r}),E,I=await AA.start({configuration:r,stdout:this.context.stdout},async()=>{let L=Zr.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:Zr.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([te,ae])=>{let fe=await Zr.getPackageMetadata(W.parseIdent(te),{project:o});return _e.mapAndFilter(ae,ce=>{let{deprecated:me}=fe.versions[ce];return me?[te,ce,me]:_e.mapAndFilter.skip})})),J=await L;for(let[te,ae,fe]of U.flat(1))Object.hasOwn(J,te)&&J[te].some(ce=>kr.satisfiesWithPrereleases(ae,ce.vulnerable_versions))||(J[te]??=[],J[te].push({id:`${te} (deprecation)`,title:fe.trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ae}));E=J});if(I.hasErrors())return I.exitCode();let v=mG(this.severity),x=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),C=Object.create(null);for(let[L,U]of Object.entries(E)){let J=U.filter(te=>!wG.default.isMatch(`${te.id}`,x)&&v.has(te.severity));J.length>0&&(C[L]=J.map(te=>{let ae=u.get(L);if(typeof ae>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let fe=[...ae.keys()].filter(me=>kr.satisfiesWithPrereleases(me,te.vulnerable_versions)),ce=new Map;for(let me of fe)for(let he of ae.get(me))ce.set(he.locatorHash,he);return{...te,versions:fe,dependents:[...ce.values()]}}))}let R=Object.keys(C).length>0;return R?($s.emitTree(yG(C),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async L=>{L.reportInfo(1,\"No audit suggestions\")}),R?1:0)}};H0.paths=[[\"npm\",\"audit\"]],H0.usage=nt.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${aw.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]});Ye();Ye();St();qt();var IG=$e(zn()),BG=ve(\"util\"),q0=class extends ut{constructor(){super(...arguments);this.fields=ge.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],u=!1,A=await Nt.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let ae=o.topLevelWorkspace;if(!ae.manifest.name)throw new it(`Missing ${de.pretty(r,\"name\",de.Type.CODE)} field in ${ue.fromPortablePath(V.join(ae.cwd,dr.manifest))}`);E=W.makeDescriptor(ae.manifest.name,\"unknown\")}else E=W.parseDescriptor(h);let I=Zr.getIdentUrl(E),v=vG(await Zr.get(I,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:Zr.customPackageError})),x=Object.keys(v.versions).sort(IG.default.compareLoose),R=v[\"dist-tags\"].latest||x[x.length-1],L=kr.validRange(E.range);if(L){let ae=IG.default.maxSatisfying(x,L);ae!==null?R=ae:(p.reportWarning(0,`Unmet range ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0)}else Object.hasOwn(v[\"dist-tags\"],E.range)?R=v[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${W.prettyRange(r,E.range)}; falling back to the latest version`),u=!0);let U=v.versions[R],J={...v,...U,version:R,versions:x},te;if(a!==null){te={};for(let ae of a){let fe=J[ae];if(typeof fe<\"u\")te[ae]=fe;else{p.reportWarning(1,`The ${de.pretty(r,ae,de.Type.CODE)} field doesn't exist inside ${W.prettyIdent(r,E)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),te=J;p.reportJson(te),this.json||n.push(te)}});BG.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,BG.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return A.exitCode()}};q0.paths=[[\"npm\",\"info\"]],q0.usage=nt.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]});function vG(t){if(Array.isArray(t)){let e=[];for(let r of t)r=vG(r),r&&e.push(r);return e}else if(typeof t==\"object\"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith(\"_\"))continue;let o=vG(t[r]);o&&(e[r]=o)}return e}else return t||null}Ye();Ye();qt();var CBe=$e(f2()),j0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Login to the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Login to the publish registry\"});this.alwaysAuth=ge.Boolean(\"--always-auth\",{description:\"Set the npmAlwaysAuth configuration\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Nt.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await Uvt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=await Ovt(o,u,r);return await Mvt(o,A,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};j0.paths=[[\"npm\",\"login\"]],j0.usage=nt.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]});async function $Q({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Zn.getScopeRegistry(t,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):t?Zn.getScopeRegistry(t,{configuration:r}):e?Zn.getPublishRegistry((await fC(r,o)).manifest,{configuration:r}):Zn.getDefaultRegistry({configuration:r})}async function Ovt(t,e,r){let o=`/-/user/org.couchdb.user:${encodeURIComponent(e.name)}`,a={_id:`org.couchdb.user:${e.name}`,name:e.name,password:e.password,type:\"user\",roles:[],date:new Date().toISOString()},n={attemptedAs:e.name,configuration:r,registry:t,jsonResponse:!0,authType:Zr.AuthType.NO_AUTH};try{return(await Zr.put(o,a,n)).token}catch(E){if(!(E.originalError?.name===\"HTTPError\"&&E.originalError?.response.statusCode===409))throw E}let u={...n,authType:Zr.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${e.name}:${e.password}`).toString(\"base64\")}`}},A=await Zr.get(o,u);for(let[E,I]of Object.entries(A))(!a[E]||E===\"roles\")&&(a[E]=I);let p=`${o}/-rev/${a._rev}`;return(await Zr.put(p,a,u)).token}async function Mvt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=_e.isIndexableObject(A)?A:{},h=p[u],E=_e.isIndexableObject(h)?h:{};return{...p,[u]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Ke.updateHomeConfiguration(n)}async function Uvt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${de.pretty(t,e,de.Type.URL)}`);let n=!1;if(e.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||\"\",password:t.env.YARN_INJECT_NPM_PASSWORD||\"\"};let u=await(0,CBe.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),u}Ye();Ye();qt();var lw=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),G0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Ke.find(this.context.cwd,this.context.plugins),A=W.makeIdent(this.scope??null,\"pkg\");return!Zn.getAuthConfiguration(n,{configuration:u,ident:A}).get(\"npmAuthToken\")};return(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Hvt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await wBe(\"npmScopes\",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let u=await $Q({configuration:r,cwd:this.context.cwd,publish:this.publish});await wBe(\"npmRegistries\",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};G0.paths=[[\"npm\",\"logout\"]],G0.usage=nt.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]});function _vt(t,e){let r=t[e];if(!_e.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...lw].every(n=>!o.has(n)))return!1;for(let n of lw)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of lw)delete a[n];return t[e]=a,!0}async function Hvt(){let t=e=>{let r=!1,o=_e.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))_vt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Ke.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function wBe(t,e){return await Ke.updateHomeConfiguration({[t]:r=>{let o=_e.isIndexableObject(r)?r:{};if(!Object.hasOwn(o,e))return r;let a=o[e],n=_e.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...lw].every(p=>!u.has(p)))return r;for(let p of lw)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of lw)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ye();qt();var Y0=class extends ut{constructor(){super(...arguments);this.access=ge.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=ge.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=ge.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=ge.String(\"--otp\",{description:\"The OTP token to use with the command\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);if(a.manifest.private)throw new it(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new it(\"Workspaces must have valid names and versions to be published on an external registry\");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Zn.getPublishRegistry(a.manifest,{configuration:r});return(await Nt.start({configuration:r,stdout:this.context.stdout},async h=>{if(this.tolerateRepublish)try{let E=await Zr.get(Zr.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new zt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await un.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await wA.prepareForPack(a,{report:h},async()=>{let E=await wA.genPackList(a);for(let R of E)h.reportInfo(null,R);let I=await wA.genPackStream(a,E),v=await _e.bufferStream(I),x=await ow.getGitHead(a.cwd),C=await ow.makePublishBody(a,v,{access:this.access,tag:this.tag,registry:A,gitHead:x});await Zr.put(Zr.getIdentUrl(n),C,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,\"Package archive published\")})).exitCode()}};Y0.paths=[[\"npm\",\"publish\"]],Y0.usage=nt.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]});Ye();qt();var IBe=$e(zn());Ye();St();qt();var W0=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String({required:!1})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=W.parseIdent(this.package);else{if(!a)throw new rr(o.cwd,this.context.cwd);if(!a.manifest.name)throw new it(`Missing 'name' field in ${ue.fromPortablePath(V.join(a.cwd,dr.manifest))}`);n=a.manifest.name}let u=await Tv(n,r),p={children:_e.sortMap(Object.entries(u),([h])=>h).map(([h,E])=>({value:de.tuple(de.Type.RESOLUTION,{descriptor:W.makeDescriptor(n,h),locator:W.makeLocator(n,E)})}))};return $s.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};W0.paths=[[\"npm\",\"tag\",\"list\"]],W0.usage=nt.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]});async function Tv(t,e){let r=`/-/package${Zr.getIdentUrl(t)}/dist-tags`;return Zr.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Zr.customPackageError})}var K0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseDescriptor(this.package,!0),u=n.range;if(!IBe.default.valid(u))throw new it(`The range ${de.pretty(r,n.range,de.Type.RANGE)} must be a valid semver version`);let A=Zn.getPublishRegistry(a.manifest,{configuration:r}),p=de.pretty(r,n,de.Type.IDENT),h=de.pretty(r,u,de.Type.RANGE),E=de.pretty(r,this.tag,de.Type.CODE);return(await Nt.start({configuration:r,stdout:this.context.stdout},async v=>{let x=await Tv(n,r);Object.hasOwn(x,this.tag)&&x[this.tag]===u&&v.reportWarning(0,`Tag ${E} is already set to version ${h}`);let C=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.put(C,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};K0.paths=[[\"npm\",\"tag\",\"add\"]],K0.usage=nt.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]});Ye();qt();var V0=class extends ut{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}async execute(){if(this.tag===\"latest\")throw new it(\"The 'latest' tag cannot be removed.\");let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=W.parseIdent(this.package),u=Zn.getPublishRegistry(a.manifest,{configuration:r}),A=de.pretty(r,this.tag,de.Type.CODE),p=de.pretty(r,n,de.Type.IDENT),h=await Tv(n,r);if(!Object.hasOwn(h,this.tag))throw new it(`${A} is not a tag of package ${p}`);return(await Nt.start({configuration:r,stdout:this.context.stdout},async I=>{let v=`/-/package${Zr.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Zr.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),I.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};V0.paths=[[\"npm\",\"tag\",\"remove\"]],V0.usage=nt.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]});Ye();Ye();qt();var J0=class extends ut{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Zn.getScopeRegistry(this.scope,{configuration:r,type:Zn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Zn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Zn.getPublishRegistry((await fC(r,this.context.cwd)).manifest,{configuration:r}):o=Zn.getDefaultRegistry({configuration:r}),(await Nt.start({configuration:r,stdout:this.context.stdout},async n=>{let u;try{u=await Zr.get(\"/-/whoami\",{configuration:r,registry:o,authType:Zr.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?W.makeIdent(this.scope,\"\"):void 0})}catch(A){if(A.response?.statusCode===401||A.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw A}n.reportInfo(0,u.username)})).exitCode()}};J0.paths=[[\"npm\",\"whoami\"]],J0.usage=nt.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]});var qvt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[H0,q0,j0,G0,Y0,K0,W0,V0,J0]},jvt=qvt;var FG={};Vt(FG,{PatchCommand:()=>Z0,PatchCommitCommand:()=>X0,PatchFetcher:()=>Uv,PatchResolver:()=>_v,default:()=>aDt,patchUtils:()=>Sm});Ye();Ye();St();nA();var Sm={};Vt(Sm,{applyPatchFile:()=>tF,diffFolders:()=>kG,ensureUnpatchedDescriptor:()=>SG,ensureUnpatchedLocator:()=>nF,extractPackageToDisk:()=>xG,extractPatchFlags:()=>xBe,isParentRequired:()=>bG,isPatchDescriptor:()=>rF,isPatchLocator:()=>z0,loadPatchFiles:()=>Mv,makeDescriptor:()=>iF,makeLocator:()=>PG,makePatchHash:()=>QG,parseDescriptor:()=>Lv,parseLocator:()=>Ov,parsePatchFile:()=>Nv,unpatchDescriptor:()=>iDt,unpatchLocator:()=>sDt});Ye();St();Ye();St();var Gvt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function cw(t){return V.relative(Bt.root,V.resolve(Bt.root,ue.toPortablePath(t)))}function Yvt(t){let e=t.trim().match(Gvt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var Wvt=420,Kvt=493;var BBe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),Vvt=t=>({header:Yvt(t),parts:[]}),Jvt={[\"@\"]:\"header\",[\"-\"]:\"deletion\",[\"+\"]:\"insertion\",[\" \"]:\"context\",[\"\\\\\"]:\"pragma\",undefined:\"context\"};function zvt(t){let e=[],r=BBe(),o=\"parsing header\",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=BBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o===\"parsing header\")if(h.startsWith(\"@@\"))o=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&A();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=Jvt[h[0]]||null;switch(E){case\"header\":u(),a=Vvt(h);break;case null:o=\"parsing header\",A(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:_e.assertNever(E);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)Zvt(h);return e}function Xvt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:I,beforeHash:v,afterHash:x,fromPath:C,toPath:R,hunks:L}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":L&&L.length>0?\"patch\":\"mode change\",J=null;switch(U){case\"rename\":{if(!E||!I)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:o,fromPath:cw(E),toPath:cw(I)}),J=I}break;case\"file deletion\":{let te=a||C;if(!te)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(p),hash:v})}break;case\"file creation\":{let te=n||R;if(!te)throw new Error(\"Bad parse state: no path given for file creation\");e.push({type:\"file creation\",semverExclusivity:o,hunk:L&&L[0]||null,path:cw(te),mode:eF(h),hash:x})}break;case\"patch\":case\"mode change\":J=R||n;break;default:_e.assertNever(U);break}J&&u&&A&&u!==A&&e.push({type:\"mode change\",semverExclusivity:o,path:cw(J),oldMode:eF(u),newMode:eF(A)}),J&&L&&L.length&&e.push({type:\"patch\",semverExclusivity:o,path:cw(J),hunks:L,beforeHash:v,afterHash:x})}if(e.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return e}function eF(t){let e=parseInt(t,8)&511;if(e!==Wvt&&e!==Kvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Nv(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),Xvt(zvt(e))}function Zvt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:_e.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ye();St();var uw=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function Aw(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function tF(t,{baseFs:e=new Tn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!kr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await Aw(e,V.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case\"rename\":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await Aw(e,V.dirname(a.fromPath),async()=>{await Aw(e,V.dirname(a.toPath),async()=>{await Aw(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case\"file creation\":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(`\n`)+(a.hunk.parts[0].noNewlineAtEndOfFile?\"\":`\n`):\"\";await e.mkdirpPromise(V.dirname(a.path),{chmod:493,utimes:[vi.SAFE_TIME,vi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,vi.SAFE_TIME,vi.SAFE_TIME)}break;case\"patch\":await Aw(e,a.path,async()=>{await tDt(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let u=(await e.statPromise(a.path)).mode;if(vBe(a.newMode)!==vBe(u))continue;await Aw(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:_e.assertNever(a);break}}function vBe(t){return(t&64)>0}function DBe(t){return t.replace(/\\s+$/,\"\")}function eDt(t,e){return DBe(t)===DBe(e)}async function tDt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,\"utf8\")).split(/\\n/),A=[],p=0,h=0;for(let I of t){let v=Math.max(h,I.header.patched.start+p),x=Math.max(0,v-h),C=Math.max(0,u.length-v-I.header.original.length),R=Math.max(x,C),L=0,U=0,J=null;for(;L<=R;){if(L<=x&&(U=v-L,J=SBe(I,u,U),J!==null)){L=-L;break}if(L<=C&&(U=v+L,J=SBe(I,u,U),J!==null))break;L+=1}if(J===null)throw new uw(t.indexOf(I),I);A.push(J),p+=L,h=U+I.header.original.length}if(o)return;let E=0;for(let I of A)for(let v of I)switch(v.type){case\"splice\":{let x=v.index+E;u.splice(x,v.numToDelete,...v.linesToInsert),E+=v.linesToInsert.length-v.numToDelete}break;case\"pop\":u.pop();break;case\"push\":u.push(v.line);break;default:_e.assertNever(v);break}await r.writeFilePromise(e,u.join(`\n`),{mode:a})}function SBe(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let u=e[r];if(u==null||!eDt(u,n))return null;r+=1}a.type===\"deletion\"&&(o.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:\"push\",line:\"\"}))}break;case\"insertion\":o.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:\"pop\"});break;default:_e.assertNever(a.type);break}return o}var nDt=/^builtin<([^>]+)>$/;function fw(t,e){let{protocol:r,source:o,selector:a,params:n}=W.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(o===null)throw new Error(\"Patch locators must explicitly define their source\");let u=a?a.split(/&/).map(E=>ue.toPortablePath(E)):[],A=n&&typeof n.locator==\"string\"?W.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function rF(t){return t.range.startsWith(\"patch:\")}function z0(t){return t.reference.startsWith(\"patch:\")}function Lv(t){let{sourceItem:e,...r}=fw(t.range,W.parseDescriptor);return{...r,sourceDescriptor:e}}function Ov(t){let{sourceItem:e,...r}=fw(t.reference,W.parseLocator);return{...r,sourceLocator:e}}function iDt(t){let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function sDt(t){let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function SG(t){if(!rF(t))return t;let{sourceItem:e}=fw(t.range,W.parseDescriptor);return e}function nF(t){if(!z0(t))return t;let{sourceItem:e}=fw(t.reference,W.parseLocator);return e}function PBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:W.stringifyLocator(t)}:{},A=typeof o<\"u\"?{version:o}:{},p=typeof a<\"u\"?{hash:a}:{};return W.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...A,...p,...u}})}function iF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return W.makeDescriptor(t,PBe({parentLocator:e,sourceItem:r,patchPaths:o},W.stringifyDescriptor))}function PG(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return W.makeLocator(t,PBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},W.stringifyLocator))}function bBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let u=a.match(nDt);return u!==null?o(u[1]):a.startsWith(\"~/\")?r(a.slice(2)):V.isAbsolute(a)?t(a):e(a)}function xBe(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function bG(t){return bBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function Mv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new gn(Bt.root),prefixPath:V.relative(Bt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await _e.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=xBe(u),p=await bBe({onAbsolute:async h=>await oe.readFilePromise(h,\"utf8\"),onRelative:async h=>{if(a===null)throw new Error(\"Assertion failed: The parent locator should have been fetched\");return await a.packageFs.readFilePromise(V.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await oe.readFilePromise(V.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source==\"string\"&&(u.source=u.source.replace(/\\r\\n?/g,`\n`));return n}async function xG(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=nF(t),n=r.storedChecksums,u=new Qi,A=await oe.mktempPromise(),p=V.join(A,\"source\"),h=V.join(A,\"user\"),E=V.join(A,\".yarn-patch.json\"),I=r.configuration.makeFetcher(),v=[];try{let x,C;if(t.locatorHash===a.locatorHash){let R=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u});v.push(()=>R.releaseFs?.()),x=R,C=R}else x=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>x.releaseFs?.()),C=await I.fetch(t,{cache:e,project:r,fetcher:I,checksums:n,report:u}),v.push(()=>C.releaseFs?.());await Promise.all([oe.copyPromise(p,x.prefixPath,{baseFs:x.packageFs}),oe.copyPromise(h,C.prefixPath,{baseFs:C.packageFs}),oe.writeJsonPromise(E,{locator:W.stringifyLocator(t),version:o.version})])}finally{for(let x of v)x()}return oe.detachTemp(A),h}async function kG(t,e){let r=ue.fromPortablePath(t).replace(/\\\\/g,\"/\"),o=ue.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await Ur.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,o],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let u=r.startsWith(\"/\")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${_e.escapeRegExp(`/${u(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${_e.escapeRegExp(`/${u(o)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(_e.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(_e.escapeRegExp(`${o}/`),\"g\"),\"\")}function QG(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Nv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!kr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return wn.makeHash(`${3}`,...r).slice(0,6)}Ye();function kBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case\"context\":r.reportInfo(null,`  ${de.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${de.pretty(e,a,de.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${de.pretty(e,a,de.Type.ADDED)}`);break;default:_e.assertNever(o.type)}}var Uv=class{supports(e,r){return!!z0(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${W.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:W.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Ov(e),A=await Mv(o,u,r),p=await oe.mktempPromise(),h=V.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),I=W.getIdentVendorPath(e),v=new zi(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await _e.releaseAfterUseAsync(async()=>{await v.copyPromise(I,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),v.saveAndClose();for(let{source:x,optional:C}of A){if(x===null)continue;let R=new zi(h,{level:r.project.configuration.get(\"compressionLevel\")}),L=new gn(V.resolve(Bt.root,I),{baseFs:R});try{await tF(Nv(x),{baseFs:L,version:n})}catch(U){if(!(U instanceof uw))throw U;let J=r.project.configuration.get(\"enableInlineHunks\"),te=!J&&!C?\" (set enableInlineHunks for details)\":\"\",ae=`${W.prettyLocator(r.project.configuration,e)}: ${U.message}${te}`,fe=ce=>{!J||kBe(U.hunk,{configuration:r.project.configuration,report:ce})};if(R.discardAndClose(),C){r.report.reportWarningOnce(66,ae,{reportExtra:fe});continue}else throw new zt(66,ae,fe)}R.saveAndClose()}return new zi(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ye();var _v=class{supportsDescriptor(e,r){return!!rF(e)}supportsLocator(e,r){return!!z0(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=Lv(e);return a.every(n=>!bG(n))?e:W.bindDescriptor(e,{locator:W.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=Lv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=Lv(e),u=await Mv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=QG(u,A.version);return[PG(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Ov(e);return{...await r.resolver.resolve(o,r),...e}}};Ye();St();qt();var X0=class extends ut{constructor(){super(...arguments);this.save=ge.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=V.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=V.join(n,\"../source\"),A=V.join(n,\"../.yarn-patch.json\");if(!oe.existsSync(u))throw new it(\"The argument folder didn't get created by 'yarn patch'\");let p=await kG(u,n),h=await oe.readJsonPromise(A),E=W.parseLocator(h.locator,!0);if(!o.storedPackages.has(E.locatorHash))throw new it(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let I=r.get(\"patchFolder\"),v=V.join(I,`${W.slugifyLocator(E)}.patch`);await oe.mkdirPromise(I,{recursive:!0}),await oe.writeFilePromise(v,p);let x=[],C=new Map;for(let R of o.storedPackages.values()){if(W.isVirtualLocator(R))continue;let L=R.dependencies.get(E.identHash);if(!L)continue;let U=W.ensureDevirtualizedDescriptor(L),J=SG(U),te=o.storedResolutions.get(J.descriptorHash);if(!te)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!o.storedPackages.get(te))throw new Error(\"Assertion failed: Expected the package to have been registered\");let fe=o.tryWorkspaceByLocator(R);if(fe)x.push(fe);else{let ce=o.originalPackages.get(R.locatorHash);if(!ce)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let me=ce.dependencies.get(L.identHash);if(!me)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");C.set(me.descriptorHash,me)}}for(let R of x)for(let L of Ot.hardDependencies){let U=R.manifest[L].get(E.identHash);if(!U)continue;let J=iF(U,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});R.manifest[L].set(U.identHash,J)}for(let R of C.values()){let L=iF(R,{parentLocator:null,sourceDescriptor:W.convertLocatorToDescriptor(E),patchPaths:[V.join(dr.home,V.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:W.stringifyIdent(L),description:R.range}},reference:L.range})}await o.persist()}};X0.paths=[[\"patch-commit\"]],X0.usage=nt.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"});Ye();St();qt();var Z0=class extends ut{constructor(){super(...arguments);this.update=ge.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let u=W.parseLocator(this.package);if(u.reference===\"unknown\"){let A=_e.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?_e.mapAndFilter.skip:W.isVirtualLocator(p)?_e.mapAndFilter.skip:z0(p)!==this.update?_e.mapAndFilter.skip:p);if(A.length===0)throw new it(\"No package found in the project for the given locator\");if(A.length>1)throw new it(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${A.map(p=>`\n- ${W.prettyLocator(r,p)}`).join(\"\")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new it(\"No package found in the project for the given locator\");await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=nF(u),h=await xG(u,{cache:n,project:o});A.reportJson({locator:W.stringifyLocator(p),path:ue.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";A.reportInfo(0,`Package ${W.prettyLocator(r,p)} got extracted with success${E}!`),A.reportInfo(0,`You can now edit the following folder: ${de.pretty(r,ue.fromPortablePath(h),\"magenta\")}`),A.reportInfo(0,`Once you are done run ${de.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${ue.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};Z0.paths=[[\"patch\"]],Z0.usage=nt.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"});var oDt={configuration:{enableInlineHunks:{description:\"If true, the installs will print unmatched patch hunks\",type:\"BOOLEAN\",default:!1},patchFolder:{description:\"Folder where the patch files must be written\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/patches\"}},commands:[X0,Z0],fetchers:[Uv],resolvers:[_v]},aDt=oDt;var NG={};Vt(NG,{PnpmLinker:()=>Hv,default:()=>fDt});Ye();St();qt();var Hv=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>\"u\")throw new it(`Couldn't find ${W.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new it(`The project in ${de.pretty(r.project.configuration,`${r.project.cwd}/package.json`,de.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let u=e,A=e;do{A=u,u=V.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new RG(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},RG=class{constructor(e){this.opts=e;this.asyncActions=new _e.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=SD(oe,{indexPath:V.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,o);case\"HARD\":return this.installPackageHard(e,r,o)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,o){let a=V.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?V.join(a,dr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,o){let a=lDt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,W.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=W.isVirtualLocator(e)?W.devirtualizeLocator(e):e,p={manifest:await Ot.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ot,misc:{hasBindingGyp:yA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),E=yA.extractBuildRequest(e,p,h,{configuration:this.opts.project.configuration});return{packageLocation:n,buildRequest:E}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\"||!QBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await cDt(a),A=new Map(u),p=[n],h=(I,v)=>{let x=v;QBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),x=W.devirtualizeLocator(v));let C=this.customData.pathsByLocator.get(x.locatorHash);if(typeof C>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${W.stringifyLocator(v)})`);let R=W.stringifyIdent(I),L=V.join(a,R),U=V.relative(V.dirname(L),C.packageLocation),J=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await oe.readlinkPromise(L)===U)return;await oe.removePromise(L)}await oe.mkdirpPromise(V.dirname(L)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await oe.symlinkPromise(C.packageLocation,L,\"junction\"):await oe.symlinkPromise(U,L)}))},E=!1;for(let[I,v]of r)I.identHash===e.identHash&&(E=!0),h(I,v);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(W.convertLocatorToDescriptor(e),e),p.push(uDt(a,A)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let e=RBe(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=V.contains(e,o);if(a===null)continue;let[n]=a.split(V.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(V.join(e,o))}))}return await this.asyncActions.wait(),await TG(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await TG(FBe(this.opts.project)),{customData:this.customData}}};function FBe(t){return V.join(t.cwd,dr.nodeModules)}function RBe(t){return V.join(FBe(t),\".store\")}function lDt(t,{project:e}){let r=W.slugifyLocator(t),o=RBe(e),a=V.join(o,r,\"package\"),n=V.join(o,r,dr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function QBe(t,{project:e}){return!W.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function cDt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!==\"ENOENT\")throw o}try{for(let o of r)if(!o.name.startsWith(\".\"))if(o.name.startsWith(\"@\")){let a=await oe.readdirPromise(V.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!==\"ENOENT\")throw o}return e}async function uDt(t,e){let r=[],o=new Set;for(let a of e.keys()){r.push(oe.removePromise(V.join(t,a)));let n=W.tryParseIdent(a)?.scope;n&&o.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...o].map(a=>TG(V.join(t,a)))))}async function TG(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\")throw e}}var ADt={linkers:[Hv]},fDt=ADt;var qG={};Vt(qG,{StageCommand:()=>$0,default:()=>BDt,stageUtils:()=>oF});Ye();St();qt();Ye();St();var oF={};Vt(oF,{ActionType:()=>LG,checkConsensus:()=>sF,expandDirectory:()=>UG,findConsensus:()=>_G,findVcsRoot:()=>OG,genCommitMessage:()=>HG,getCommitPrefix:()=>TBe,isYarnFile:()=>MG});St();var LG=(n=>(n[n.CREATE=0]=\"CREATE\",n[n.DELETE=1]=\"DELETE\",n[n.ADD=2]=\"ADD\",n[n.REMOVE=3]=\"REMOVE\",n[n.MODIFY=4]=\"MODIFY\",n))(LG||{});async function OG(t,{marker:e}){do if(!oe.existsSync(V.join(t,e)))t=V.dirname(t);else return t;while(t!==\"/\");return null}function MG(t,{roots:e,names:r}){if(r.has(V.basename(t)))return!0;do if(!e.has(t))t=V.dirname(t);else return!0;while(t!==\"/\");return!1}function UG(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=V.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function sF(t,e){let r=0,o=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:o+=1);return r>=o}function _G(t){let e=sF(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=sF(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),o=sF(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function TBe(t){return t.useComponent?\"chore(yarn): \":\"\"}var pDt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function HG(t,e){let r=TBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=pDt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+=\"s\");let p=[u];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),o.push(`${A} ${h}`)}return`${r}${o.join(\", \")}`}var hDt=\"Commit generated via `yarn stage`\",gDt=11;async function NBe(t){let{code:e,stdout:r}=await Ur.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function dDt(t,e){let r=[],o=e.filter(h=>V.basename(h.path)===\"package.json\");for(let{action:h,path:E}of o){let I=V.relative(t,E);if(h===4){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x),R=await Ot.fromFile(E),L=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...C.dependencies,...C.devDependencies]);for(let[J,te]of U){let ae=W.stringifyIdent(te),fe=L.get(J);fe?fe.range!==te.range&&r.push([4,`${ae} to ${fe.range}`]):r.push([3,ae])}for(let[J,te]of L)U.has(J)||r.push([2,W.stringifyIdent(te)])}else if(h===0){let v=await Ot.fromFile(E);v.name?r.push([0,W.stringifyIdent(v.name)]):r.push([0,\"a package\"])}else if(h===1){let v=await NBe(t),{stdout:x}=await Ur.execvp(\"git\",[\"show\",`${v}:${I}`],{cwd:t,strict:!0}),C=await Ot.fromText(x);C.name?r.push([1,W.stringifyIdent(C.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await Ur.execvp(\"git\",[\"log\",`-${gDt}`,\"--pretty=format:%s\"],{cwd:t}),u=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],A=_G(u);return HG(A,r)}var mDt={[0]:[\" A \",\"?? \"],[4]:[\" M \"],[1]:[\" D \"]},yDt={[0]:[\"A  \"],[4]:[\"M  \"],[1]:[\"D  \"]},LBe={async findRoot(t){return await OG(t,{marker:\".git\"})},async filterChanges(t,e,r,o){let{stdout:a}=await Ur.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),u=o?.staged?yDt:mDt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=V.resolve(t,p.slice(3));if(!o?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return UG(E).map(I=>({action:0,path:I}));{let v=[0,4,1].find(x=>u[x].includes(h));return v!==void 0?[{action:v,path:E}]:[]}})).filter(p=>MG(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await dDt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Ur.execvp(\"git\",[\"add\",\"-N\",\"--\",...o],{cwd:t,strict:!0}),await Ur.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${hDt}\n`,\"--\",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Ur.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var EDt=[LBe],$0=class extends ut{constructor(){super(...arguments);this.commit=ge.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=ge.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=ge.Boolean(\"-u,--update\",!1,{hidden:!0})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),{driver:a,root:n}=await CDt(o.cwd),u=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(I=>I.populateYarnPaths,o,I=>{u.push(I)});let A=new Set;for(let I of u)for(let v of wDt(n,I))A.add(v);let p=new Set([r.get(\"rcFilename\"),dr.lockfile,dr.manifest]),h=await a.filterChanges(n,A,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let I of h)this.context.stdout.write(`${ue.fromPortablePath(I.path)}\n`);else if(this.reset){let I=await a.filterChanges(n,A,p,{staged:!0});I.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,I)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};$0.paths=[[\"stage\"]],$0.usage=nt.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]});async function CDt(t){let e=null,r=null;for(let o of EDt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new it(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function wDt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=V.resolve(V.dirname(e),oe.readlinkSync(e));else break}return r}var IDt={commands:[$0]},BDt=IDt;var jG={};Vt(jG,{default:()=>QDt});Ye();Ye();St();var UBe=$e(zn());Ye();var OBe=$e(zH()),vDt=\"e8e1bd300d860104bb8c58453ffa1eb4\",DDt=\"OFCNCOG2CU\",MBe=async(t,e)=>{let r=W.stringifyIdent(t),a=SDt(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},SDt=t=>(0,OBe.default)(DDt,vDt,{requester:{async send(r){try{let o=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var _Be=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,PDt=async(t,e,r,o)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??oe.existsSync(V.join(a.cwd,\"tsconfig.json\"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new Qi};if(!await MBe(r,n))return;let E=_Be(r),I=W.parseRange(r.range).selector;if(!kr.validRange(I)){let L=n.normalizeDependency(r),U=await A.getCandidates(L,{},p);I=W.parseRange(U[0].reference).selector}let v=UBe.default.coerce(I);if(v===null)return;let x=`${zc.Modifier.CARET}${v.major}`,C=W.makeDescriptor(W.makeIdent(\"types\",E),x),R=_e.mapAndFind(a.workspaces,L=>{let U=L.manifest.dependencies.get(r.identHash)?.descriptorHash,J=L.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&J!==r.descriptorHash)return _e.mapAndFind.skip;let te=[];for(let ae of Ot.allDependencies){let fe=L.manifest[ae].get(C.identHash);typeof fe>\"u\"||te.push([ae,fe])}return te.length===0?_e.mapAndFind.skip:te});if(typeof R<\"u\")for(let[L,U]of R)t.manifest[L].set(U.identHash,U);else{try{let L=n.normalizeDependency(C);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[zc.Target.DEVELOPMENT].set(C.identHash,C)}},bDt=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:o}=t,{configuration:a}=o;if(!(a.get(\"tsEnableAutoTypes\")??oe.existsSync(V.join(o.cwd,\"tsconfig.json\"))))return;let u=_Be(r),A=W.makeIdent(\"types\",u);for(let p of Ot.allDependencies)typeof t.manifest[p].get(A.identHash)>\"u\"||t.manifest[p].delete(A.identHash)},xDt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},kDt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:PDt,afterWorkspaceDependencyRemoval:bDt,beforeWorkspacePacking:xDt}},QDt=kDt;var VG={};Vt(VG,{VersionApplyCommand:()=>eg,VersionCheckCommand:()=>tg,VersionCommand:()=>rg,default:()=>zDt,versionUtils:()=>dw});Ye();Ye();qt();var dw={};Vt(dw,{Decision:()=>hw,applyPrerelease:()=>WBe,applyReleases:()=>KG,applyStrategy:()=>lF,clearVersionFiles:()=>GG,getUndecidedDependentWorkspaces:()=>jv,getUndecidedWorkspaces:()=>aF,openVersionFile:()=>gw,requireMoreDecisions:()=>KDt,resolveVersionFiles:()=>qv,suggestStrategy:()=>WG,updateVersionFiles:()=>YG,validateReleaseDecision:()=>pw});Ye();St();Nl();qt();var YBe=$e(GBe()),vA=$e(zn()),WDt=/^(>=|[~^]|)(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$/,hw=(u=>(u.UNDECIDED=\"undecided\",u.DECLINE=\"decline\",u.MAJOR=\"major\",u.MINOR=\"minor\",u.PATCH=\"patch\",u.PRERELEASE=\"prerelease\",u))(hw||{});function pw(t){let e=vA.default.valid(t);return e||_e.validateEnum((0,YBe.default)(hw,\"UNDECIDED\"),t)}async function qv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let I=W.parseIdent(h),v=t.tryWorkspaceByIdent(I);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${V.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${W.prettyLocator(t.configuration,v.anchoredLocator)})`);let x=v.manifest.raw.stableVersion??v.manifest.version,C=r.get(v),R=lF(x,pw(E));if(R===null)throw new Error(`Assertion failed: Expected ${x} to support being bumped via strategy ${E}`);let L=typeof C<\"u\"?vA.default.gt(R,C)?R:C:R;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,WBe(u,{current:n.manifest.version,prerelease:e})]))),r}async function GG(t){let e=t.configuration.get(\"deferredVersionFolder\");!oe.existsSync(e)||await oe.removePromise(e)}async function YG(t,e){let r=new Set(e),o=t.configuration.get(\"deferredVersionFolder\");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(\".yml\"))continue;let u=V.join(o,n),A=await oe.readFilePromise(u,\"utf8\"),p=Ki(A),h=p?.releases;if(!!h){for(let E of Object.keys(h)){let I=W.parseIdent(E),v=t.tryWorkspaceByIdent(I);(v===null||r.has(v))&&delete p.releases[E]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function gw(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new it(\"This command can only be run from within a Yarn project\");let o=await ra.fetchRoot(r.projectCwd),a=o!==null?await ra.fetchBase(o,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=o!==null?await ra.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get(\"deferredVersionFolder\"),A=n.filter(x=>V.contains(u,x)!==null);if(A.length>1)throw new it(`Your current branch contains multiple versioning files; this isn't supported:\n- ${A.map(x=>ue.fromPortablePath(x)).join(`\n- `)}`);let p=new Set(_e.mapAndFilter(n,x=>{let C=t.tryWorkspaceByFilePath(x);return C===null?_e.mapAndFilter.skip:C}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:V.join(u,`${wn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=oe.existsSync(h)?await oe.readFilePromise(h,\"utf8\"):\"{}\",I=Ki(E),v=new Map;for(let x of I.declined||[]){let C=W.parseIdent(x),R=t.getWorkspaceByIdent(C);v.set(R,\"decline\")}for(let[x,C]of Object.entries(I.releases||{})){let R=W.parseIdent(x),L=t.getWorkspaceByIdent(R);v.set(L,pw(C))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(x=>x.manifest.version!==null)),releases:v,async saveAll(){let x={},C=[],R=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let U=W.stringifyIdent(L.anchoredLocator),J=v.get(L);J===\"decline\"?C.push(U):typeof J<\"u\"?x[U]=pw(J):p.has(L)&&R.push(U)}await oe.mkdirPromise(V.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(x).length>0?x:void 0,declined:C.length>0?C:void 0,undecided:R.length>0?R:void 0})))}}}function KDt(t){return aF(t).size>0||jv(t).length>0}function aF(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function jv(t,{include:e=new Set}={}){let r=[],o=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u===\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(_e.mapAndFilter([...t.releases],([n,u])=>u!==\"decline\"?_e.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Ot.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function WG(t,e){let r=vA.default.clean(e);for(let o of Object.values(hw))if(o!==\"undecided\"&&o!==\"decline\"&&vA.default.inc(t,o)===r)return o;return null}function lF(t,e){if(vA.default.valid(e))return e;if(t===null)throw new it(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!vA.default.valid(t))throw new it(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=vA.default.inc(t,e);if(r===null)throw new it(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function KG(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Ot.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;_e.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,vA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?W.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${W.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>\"u\"))for(let[h,E,I]of p){let v=h.manifest[E].get(I);if(typeof v>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let x=v.range,C=!1;if(x.startsWith(Xn.protocol)&&(x=x.slice(Xn.protocol.length),C=!0,x===a.relativeCwd))continue;let R=x.match(WDt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${x} (in ${W.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${R[1]}${n}`;C&&(L=`${Xn.protocol}${L}`);let U=W.makeDescriptor(v,L);h.manifest[E].set(I,U)}}}var VDt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function WBe(t,{current:e,prerelease:r}){let o=new vA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\\./g);for(let p of A){let h=VDt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():u=!1;else{let E=u?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(\".\")}`}var eg=class extends ut{constructor(){super(...arguments);this.all=ge.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=ge.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=ge.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);if(!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=await Nt.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await qv(o,{prerelease:p}),E=new Map;if(this.all)E=h;else{let I=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of I){let x=h.get(v);typeof x<\"u\"&&E.set(v,x)}}if(E.size===0){let I=h.size>0?\" Did you want to add --all?\":\"\";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${I}`);return}KG(o,E,{report:A}),this.dryRun||(p||(this.all?await GG(o):await YG(o,[...E.keys()])),A.reportSeparator())});return this.dryRun||u.hasErrors()?u.exitCode():await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};eg.paths=[[\"version\",\"apply\"]],eg.usage=nt.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%d\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]});Ye();St();qt();var cF=$e(zn());var tg=class extends ut{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){bC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(cQ(),Bq)),{ScrollableItems:o}=await Promise.resolve().then(()=>(pQ(),fQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Dq(),Vwe)),{useListInput:n}=await Promise.resolve().then(()=>(AQ(),Jwe)),{renderForm:u}=await Promise.resolve().then(()=>(mQ(),dQ)),{Box:A,Text:p}=await Promise.resolve().then(()=>$e(ic())),{default:h,useCallback:E,useState:I}=await Promise.resolve().then(()=>$e(on())),v=await Ke.find(this.context.cwd,this.context.plugins),{project:x,workspace:C}=await Pt.find(v,this.context.cwd);if(!C)throw new rr(x.cwd,this.context.cwd);await x.restoreInstallState();let R=await gw(x);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new it(\"This command can only be run on Git repositories\");let L=()=>h.createElement(A,{flexDirection:\"row\",paddingBottom:1},h.createElement(A,{flexDirection:\"column\",width:60},h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(A,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(A,{flexDirection:\"column\"},h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(A,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:me,active:he,decision:Be,setDecision:we})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${W.prettyLocator(v,me.anchoredLocator)})`);if(cF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let Ee=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Be,Ee,{active:he,minus:\"left\",plus:\"right\",set:we});let Se=Be===\"undecided\"?h.createElement(p,{color:\"yellow\"},g):Be===\"decline\"?h.createElement(p,{color:\"green\"},g):h.createElement(p,null,h.createElement(p,{color:\"magenta\"},g),\" \\u2192 \",h.createElement(p,{color:\"green\"},cF.default.valid(Be)?Be:cF.default.inc(g,Be)));return h.createElement(A,{flexDirection:\"column\"},h.createElement(A,null,h.createElement(p,null,W.prettyLocator(v,me.anchoredLocator),\" - \",Se)),h.createElement(A,null,Ee.map(le=>h.createElement(A,{key:le,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:le===Be}),\" \",le)))))},J=me=>{let he=new Set(R.releaseRoots),Be=new Map([...me].filter(([we])=>he.has(we)));for(;;){let we=jv({project:R.project,releases:Be}),g=!1;if(we.length>0){for(let[Ee]of we)if(!he.has(Ee)){he.add(Ee),g=!0;let Se=me.get(Ee);typeof Se<\"u\"&&Be.set(Ee,Se)}}if(!g)break}return{relevantWorkspaces:he,relevantReleases:Be}},te=()=>{let[me,he]=I(()=>new Map(R.releases)),Be=E((we,g)=>{let Ee=new Map(me);g!==\"undecided\"?Ee.set(we,g):Ee.delete(we);let{relevantReleases:Se}=J(Ee);he(Se)},[me,he]);return[me,Be]},ae=({workspaces:me,releases:he})=>{let Be=[];Be.push(`${me.size} total`);let we=0,g=0;for(let Ee of me){let Se=he.get(Ee);typeof Se>\"u\"?g+=1:Se!==\"decline\"&&(we+=1)}return Be.push(`${we} release${we===1?\"\":\"s\"}`),Be.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Be.join(\", \"))},ce=await u(({useSubmit:me})=>{let[he,Be]=te();me(he);let{relevantWorkspaces:we}=J(he),g=new Set([...we].filter(ne=>!R.releaseRoots.has(ne))),[Ee,Se]=I(0),le=E(ne=>{switch(ne){case a.BEFORE:Se(Ee-1);break;case a.AFTER:Se(Ee+1);break}},[Ee,Se]);return h.createElement(A,{flexDirection:\"column\"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(A,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:\"grey\"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:R.releaseRoots,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===0,radius:1,size:2,onFocusRequest:le},[...R.releaseRoots].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(A,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:g,releases:he})):null,h.createElement(A,{marginTop:1,flexDirection:\"column\"},h.createElement(o,{active:Ee%2===1,radius:2,size:2,onFocusRequest:le},[...g].map(ne=>h.createElement(U,{key:ne.cwd,workspace:ne,decision:he.get(ne)||\"undecided\",setDecision:ee=>Be(ne,ee)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ce>\"u\")return 1;R.releases.clear();for(let[me,he]of ce)R.releases.set(me,he);await R.saveAll()}async executeStandard(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Nt.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await gw(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new it(\"This command can only be run on Git repositories\");if(u.reportInfo(0,`Your PR was started right after ${de.pretty(r,A.baseHash.slice(0,7),\"yellow\")} ${de.pretty(r,A.baseTitle,\"magenta\")}`),A.changedFiles.size>0){u.reportInfo(0,\"You have changed the following files since then:\"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${de.pretty(r,ue.fromPortablePath(A.root),\"gray\")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,E=aF(A);if(E.size>0){p||u.reportSeparator();for(let v of E)u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let I=jv(A);for(let[v,x]of I)h||u.reportSeparator(),u.reportError(0,`${W.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${W.prettyWorkspace(r,x)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),u.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};tg.paths=[[\"version\",\"check\"]],tg.usage=nt.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]});Ye();qt();var uF=$e(zn());var rg=class extends ut{constructor(){super(...arguments);this.deferred=ge.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=ge.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=ge.String()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new rr(o.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=uF.default.valid(this.strategy),A=this.strategy===\"decline\",p;if(u)if(a.manifest.version!==null){let E=WG(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!A){if(E===null)throw new it(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!uF.default.valid(E))throw new it(`Can't bump the version (${E}) if it's not valid semver`)}p=pw(this.strategy)}if(!n){let I=(await qv(o)).get(a);if(typeof I<\"u\"&&p!==\"decline\"){let v=lF(a.manifest.version,p);if(uF.default.lt(v,I))throw new it(`Can't bump the version to one that would be lower than the current deferred one (${I})`)}}let h=await gw(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};rg.paths=[[\"version\"]],rg.usage=nt.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]});var JDt={configuration:{deferredVersionFolder:{description:\"Folder where are stored the versioning files\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/versions\"},preferDeferredVersions:{description:\"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set\",type:\"BOOLEAN\",default:!1}},commands:[eg,tg,rg]},zDt=JDt;var JG={};Vt(JG,{WorkspacesFocusCommand:()=>ng,WorkspacesForeachCommand:()=>ap,default:()=>$Dt});Ye();Ye();qt();var ng=class extends ut{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=ge.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=ge.Rest()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Lr.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new rr(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(A=>o.getWorkspaceByIdent(W.parseIdent(A))));for(let A of u)for(let p of this.production?[\"dependencies\"]:Ot.hardDependencies)for(let h of A.manifest.getForScope(p).values()){let E=o.tryWorkspaceByDescriptor(h);E!==null&&u.add(E)}for(let A of o.workspaces)u.has(A)?this.production&&A.manifest.devDependencies.clear():(A.manifest.installConfig=A.manifest.installConfig||{},A.manifest.installConfig.selfReferences=!1,A.manifest.dependencies.clear(),A.manifest.devDependencies.clear(),A.manifest.peerDependencies.clear(),A.manifest.scripts.clear());return await o.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};ng.paths=[[\"workspaces\",\"focus\"]],ng.usage=nt.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"});Ye();Ye();Ye();qt();var mw=$e(Zo()),VBe=$e(id());Za();var ap=class extends ut{constructor(){super(...arguments);this.from=ge.Array(\"--from\",{description:\"An array of glob pattern idents or paths from which to base any recursion\"});this.all=ge.Boolean(\"-A,--all\",{description:\"Run the command on all workspaces of a project\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Run the command on the current workspace and all of its recursive dependencies\"});this.worktree=ge.Boolean(\"-W,--worktree\",{description:\"Run the command on all workspaces of the current worktree\"});this.verbose=ge.Counter(\"-v,--verbose\",{description:\"Increase level of logging verbosity up to 2 times\"});this.parallel=ge.Boolean(\"-p,--parallel\",!1,{description:\"Run the commands in parallel\"});this.interlaced=ge.Boolean(\"-i,--interlaced\",!1,{description:\"Print the output of commands in real-time instead of buffering it\"});this.jobs=ge.String(\"-j,--jobs\",{description:\"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`\",validator:TT([Ks([\"unlimited\"]),aI(RT(),[LT(),NT(1)])])});this.topological=ge.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=ge.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=ge.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=ge.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=ge.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=ge.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=ge.String();this.args=ge.Proxy()}async execute(){let r=await Ke.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!this.all&&!a)throw new rr(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new it(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let A=we=>{!this.dryRun||this.context.stdout.write(`${we}\n`)},p=()=>{let we=this.from.map(g=>mw.default.matcher(g));return o.workspaces.filter(g=>{let Ee=W.stringifyIdent(g.anchoredLocator),Se=g.relativeCwd;return we.some(le=>le(Ee)||le(Se))})},h=[];if(this.since?(A(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await ra.fetchChangedWorkspaces({ref:this.since,project:o}))):this.from?(A(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(A(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(A(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(A(\"Option --all is set; selecting all workspaces\"),h=[...o.workspaces]),this.dryRun&&!this.all){for(let we of h)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);h.length>0&&A(\"\")}let E;if(this.recursive?this.since?(A(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependents()]).flat())):(A(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(A(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(we=>[...we.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let we of E)A(`\n- ${we.relativeCwd}\n  ${W.prettyLocator(r,we.anchoredLocator)}`);let I=[],v=!1;if(u?.includes(\":\")){for(let we of o.workspaces)if(we.manifest.scripts.has(u)&&(v=!v,v===!1))break}for(let we of h){if(u&&!we.manifest.scripts.has(u)&&!v&&!(await un.getWorkspaceAccessibleBinaries(we)).has(u)){A(`Excluding ${we.relativeCwd} because it doesn't have a \"${u}\" script`);continue}if(!(u===r.env.npm_lifecycle_event&&we.cwd===a.cwd)){if(this.include.length>0&&!mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.include)&&!mw.default.isMatch(we.relativeCwd,this.include)){A(`Excluding ${we.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(mw.default.isMatch(W.stringifyIdent(we.anchoredLocator),this.exclude)||mw.default.isMatch(we.relativeCwd,this.exclude))){A(`Excluding ${we.relativeCwd} because it matches the --include filter`);continue}if(this.publicOnly&&we.manifest.private===!0){A(`Excluding ${we.relativeCwd} because it's a private workspace and --no-private was set`);continue}I.push(we)}}if(this.dryRun)return 0;let x=this.verbose??(this.context.stdout.isTTY?1/0:0),C=x>0,R=x>1,L=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ji.availableParallelism()/2):1,U=L===1?!1:this.parallel,J=U?this.interlaced:!0,te=(0,VBe.default)(L),ae=new Map,fe=new Set,ce=0,me=null,he=!1,Be=await Nt.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async we=>{let g=async(Ee,{commandIndex:Se})=>{if(he)return-1;!U&&R&&Se>1&&we.reportSeparator();let le=XDt(Ee,{configuration:r,label:C,commandIndex:Se}),[ne,ee]=KBe(we,{prefix:le,interlaced:J}),[Ie,Fe]=KBe(we,{prefix:le,interlaced:J});try{R&&we.reportInfo(null,`${le?`${le} `:\"\"}Process started`);let At=Date.now(),H=await this.cli.run([this.commandName,...this.args],{cwd:Ee.cwd,stdout:ne,stderr:Ie})||0;ne.end(),Ie.end(),await ee,await Fe;let at=Date.now();if(R){let Re=r.get(\"enableTimers\")?`, completed in ${de.pretty(r,at-At,de.Type.DURATION)}`:\"\";we.reportInfo(null,`${le?`${le} `:\"\"}Process exited (exit code ${H})${Re}`)}return H===130&&(he=!0,me=H),H}catch(At){throw ne.end(),Ie.end(),await ee,await Fe,At}};for(let Ee of I)ae.set(Ee.anchoredLocator.locatorHash,Ee);for(;ae.size>0&&!we.hasErrors();){let Ee=[];for(let[ne,ee]of ae){if(fe.has(ee.anchoredDescriptor.descriptorHash))continue;let Ie=!0;if(this.topological||this.topologicalDev){let Fe=this.topologicalDev?new Map([...ee.manifest.dependencies,...ee.manifest.devDependencies]):ee.manifest.dependencies;for(let At of Fe.values()){let H=o.tryWorkspaceByDescriptor(At);if(Ie=H===null||!ae.has(H.anchoredLocator.locatorHash),!Ie)break}}if(!!Ie&&(fe.add(ee.anchoredDescriptor.descriptorHash),Ee.push(te(async()=>{let Fe=await g(ee,{commandIndex:++ce});return ae.delete(ne),fe.delete(ee.anchoredDescriptor.descriptorHash),Fe})),!U))break}if(Ee.length===0){let ne=Array.from(ae.values()).map(ee=>W.prettyLocator(r,ee.anchoredLocator)).join(\", \");we.reportError(3,`Dependency cycle detected (${ne})`);return}let le=(await Promise.all(Ee)).find(ne=>ne!==0);me===null&&(me=typeof le<\"u\"?1:me),(this.topological||this.topologicalDev)&&typeof le<\"u\"&&we.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return me!==null?me:Be.exitCode()}};ap.paths=[[\"workspaces\",\"foreach\"]],ap.usage=nt.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]}),ap.schema=[cI(\"all\",Gu.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),OT([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})];function KBe(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new _e.DefaultStream;a.pipe(o,{end:!1}),a.on(\"finish\",()=>{o.end()});let n=new Promise(A=>{o.on(\"finish\",()=>{A(a.active)})});if(r)return[a,n];let u=new _e.BufferStream;return u.pipe(a,{end:!1}),u.on(\"finish\",()=>{a.end()}),[u,n]}function XDt(t,{configuration:e,commandIndex:r,label:o}){if(!o)return null;let n=`[${W.stringifyIdent(t.anchoredLocator)}]:`,u=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],A=u[r%u.length];return de.pretty(e,n,A)}var ZDt={commands:[ng,ap]},$Dt=ZDt;var pC=()=>({modules:new Map([[\"@yarnpkg/cli\",a2],[\"@yarnpkg/core\",o2],[\"@yarnpkg/fslib\",Vw],[\"@yarnpkg/libzip\",x1],[\"@yarnpkg/parsers\",rI],[\"@yarnpkg/shell\",T1],[\"clipanion\",hI],[\"semver\",eSt],[\"typanion\",Vo],[\"@yarnpkg/plugin-essentials\",$8],[\"@yarnpkg/plugin-compat\",iH],[\"@yarnpkg/plugin-constraints\",wH],[\"@yarnpkg/plugin-dlx\",IH],[\"@yarnpkg/plugin-exec\",DH],[\"@yarnpkg/plugin-file\",PH],[\"@yarnpkg/plugin-git\",Z8],[\"@yarnpkg/plugin-github\",kH],[\"@yarnpkg/plugin-http\",QH],[\"@yarnpkg/plugin-init\",FH],[\"@yarnpkg/plugin-interactive-tools\",Tq],[\"@yarnpkg/plugin-link\",Nq],[\"@yarnpkg/plugin-nm\",yj],[\"@yarnpkg/plugin-npm\",dG],[\"@yarnpkg/plugin-npm-cli\",DG],[\"@yarnpkg/plugin-pack\",AG],[\"@yarnpkg/plugin-patch\",FG],[\"@yarnpkg/plugin-pnp\",oj],[\"@yarnpkg/plugin-pnpm\",NG],[\"@yarnpkg/plugin-stage\",qG],[\"@yarnpkg/plugin-typescript\",jG],[\"@yarnpkg/plugin-version\",VG],[\"@yarnpkg/plugin-workspace-tools\",JG]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function XBe({cwd:t,pluginConfiguration:e}){let r=new as({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:rn??\"<unknown>\"});return Object.assign(r,{defaultContext:{...as.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function tSt(t){if(_e.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,o=\">=18.12.0\";if(kr.satisfiesWithPrereleases(r,o))return!0;let a=new it(`This tool requires a Node version compatible with ${o} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return as.defaultContext.stdout.write(t.error(a)),!1}async function ZBe({selfPath:t,pluginConfiguration:e}){return await Ke.find(ue.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function rSt(t,e,{yarnPath:r}){if(!oe.existsSync(r))return t.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let o={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,JBe.execFileSync)(process.execPath,[ue.fromPortablePath(r),...e],o)}catch(a){return a.status??1}return 0}function nSt(t,e){let r=null,o=e;return e.length>=2&&e[0]===\"--cwd\"?(r=ue.toPortablePath(e[1]),o=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=ue.toPortablePath(e[0].slice(6)),o=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=ue.toPortablePath(e[e.length-1]),o=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?V.resolve(r):V.cwd(),o}function iSt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||zBe.isCI||!process.stdout.isTTY)return;Ke.telemetry=new uC(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let o=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())AC.has(a.match(o)?.[1]??\"\")&&Ke.telemetry?.reportPluginName(a);t.binaryVersion&&Ke.telemetry.reportVersion(t.binaryVersion)}function $Be(t,{configuration:e}){for(let r of e.plugins.values())for(let o of r.commands||[])t.register(o)}async function sSt(t,e,{selfPath:r,pluginConfiguration:o}){if(!tSt(t))return 1;let a=await ZBe({selfPath:r,pluginConfiguration:o}),n=a.get(\"yarnPath\"),u=a.get(\"ignorePath\");if(n&&!u)return rSt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let A=nSt(t,e);iSt(t,{configuration:a}),$Be(t,{configuration:a});let p=t.process(A,t.defaultContext);return p.help||Ke.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function $pe({cwd:t=V.cwd(),pluginConfiguration:e=pC()}={}){let r=XBe({cwd:t,pluginConfiguration:e}),o=await ZBe({pluginConfiguration:e,selfPath:null});return $Be(r,{configuration:o}),r}async function nk(t,{cwd:e=V.cwd(),selfPath:r,pluginConfiguration:o}){let a=XBe({cwd:e,pluginConfiguration:o});try{process.exitCode=await sSt(a,t,{selfPath:r,pluginConfiguration:o})}catch(n){as.defaultContext.stdout.write(a.error(n)),process.exitCode=1}finally{await oe.rmtempPromise()}}nk(process.argv.slice(2),{cwd:V.cwd(),selfPath:ue.toPortablePath(ue.resolve(process.argv[1])),pluginConfiguration:pC()});})();\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/*!\n * buildToken\n * Builds OAuth token prefix (helper function)\n *\n * @name buildToken\n * @function\n * @param {GitUrl} obj The parsed Git url object.\n * @return {String} token prefix\n */\n/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * is-windows <https://github.com/jonschlinkert/is-windows>\n *\n * Copyright © 2015-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/** @license React v0.18.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v0.24.0\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n"
  },
  {
    "path": ".yarn/versions/026177fe.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/028828e2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/06e5749f.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/0726b528.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/072aebc8.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/07c322cc.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/09d6af27.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/0a9221c4.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/0aafb6de.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/105b2055.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/12875928.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1366a905.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/13ce8bab.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/144b1230.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/15c76034.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/173dde9b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1a44c65b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1aa27f56.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1ccf07c6.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1df68f61.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/1fad65fc.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/2199c3df.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/22e7ecc3.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/23758213.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/23da8025.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/24584391.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/25f00f22.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/272ca396.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/29fe0987.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/2a247815.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/2a5c447d.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/2a69f5af.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/2ceb5677.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n"
  },
  {
    "path": ".yarn/versions/2e8dddaa.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/329ad4cc.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/33308e54.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/33caf697.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/371922cb.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3777636b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/389436a2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3a3f723c.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/3b579a11.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3bb83c60.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3bff13d2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3cb89724.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/3ead9d18.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/4053ebae.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/411f782e.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/42b588ef.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/44068586.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/46f8ffda.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/basic-example\"\n"
  },
  {
    "path": ".yarn/versions/47346a15.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/4c1ff198.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/4c9680f4.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/4e3bceb6.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/4f99b94c.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/515392f0.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/51d09e1d.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/51fd1e43.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/56419efb.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/57f03ec9.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/5a2242bb.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/5bc0e0a1.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/5d063d27.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/5e0d43a5.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/6157a043.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/61b56588.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/62c5b924.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/63370d4e.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/6629957d.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/66376ce5.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/6bc94a3b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/6f725cb4.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/6fbd3750.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/6ff24e83.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/72b07268.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/72ea0816.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/735cc783.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/73f711f2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/760e996e.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/77fd690d.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/7802d627.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/78525628.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/7970dbd4.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/7a76f789.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/7a985e40.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n  - \"@builder.io/eslint-plugin-mitosis\"\n  - \"@builder.io/mitosis-fiddle\"\n"
  },
  {
    "path": ".yarn/versions/804757be.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n"
  },
  {
    "path": ".yarn/versions/81d9e719.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/85f914ea.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/88302145.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/89184b6e.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/8afacd42.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/9288f7b9.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/92f5ae87.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/94fb767f.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/9513e6ed.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/9a0abe50.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/a26ef46f.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/a727eb3e.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/a7426113.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/a7d5432d.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/ab01aaa4.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/ac5e5b17.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/aee7c6a5.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/afee0844.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/b2276c4b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/b2be75f1.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/b918a4e2.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/b9512246.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/bf62388f.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/bf6edf5d.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c0b2fa52.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c1093761.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/c143ff23.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c21adc6a.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c281843c.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c2d75ce2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c4fd8fbc.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/c62b27f7.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c6e4f64b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/todo-example\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/c7ca329d.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/c9e3ca8b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/cb259f51.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/cc461ac8.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/cc9ed5cd.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/cf48d14d.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/cf4b5981.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/cf7ae630.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/d03a50ed.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/db85d6c2.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e0705211.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e0755694.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e11beb4b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e3ecba3b.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n"
  },
  {
    "path": ".yarn/versions/e4749842.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e5d3ce94.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e89e1791.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/e9ce1193.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/ec777010.yml",
    "content": ""
  },
  {
    "path": ".yarn/versions/ed8e0a45.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/edc58eba.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/ef410112.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/f1210054.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/f34f5b8e.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/f52489af.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/f75f1951.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/f8d96db9.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/fb17c565.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis-cli\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/fb202c06.yml",
    "content": "undecided:\n  - \"@builder.io/mitosis-repo\"\n  - \"@builder.io/mitosis\"\n"
  },
  {
    "path": ".yarn/versions/fb99b1b3.yml",
    "content": ""
  },
  {
    "path": ".yarnrc.yml",
    "content": "compressionLevel: mixed\n\nenableGlobalCache: true\n\nnmHoistingLimits: workspaces\n\nnodeLinker: node-modules\n\nyarnPath: .yarn/releases/yarn-4.1.1.cjs\n"
  },
  {
    "path": "CODEOWNERS",
    "content": "* @samijaber\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Local Development\n\nWelcome ⚡️!! If you've found a bug, or have an idea to add a feature we'd love to hear from you. It may save time to first ping the group on [Mitosis' Discord channel](https://discord.gg/yxjk5vn6pn) to talk through any ideas or any issues that may be a bug.\n\n## Project Structure\n\nMitosis is structured as a mono-repo using Yarn (v3) Workspaces and Nx. The packages\nlive under `packages/` and `examples/`:\n\n- `core` (`@builder.io/mitosis`): contains the Mitosis engine\n- `cli` (`@builder.io/mitosis-cli`): contains the Mitosis CLI, and _depends_ on `core`\n- `site`: contains the Mitosis site hosted at mitosis.builder.io\n- `eslint-plugin` (`@builder.io/eslint-plugin-mitosis`): contains the Mitosis eslint rules to enforce valid Mitosis component syntax. Yet to be released.\n\n## Installation\n\nFirst, you should run `yarn` in the root of the project to install all the dependencies.\n\nFor all packages, the below steps to develop locally are the same:\n\n```bash\n# run local development server\nyarn start\n\n# run unit tests\nyarn test\n```\n\n## Submitting Issues And Writing Tests\n\nWe need your help! If you found a bug, it's best to [create an issue](https://github.com/BuilderIO/mitosis/issues/new/choose) and follow the template we've created for you. Afterwards, create a [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) that replicates the issue using a test.\n\n## Developing for Core & Testing\n\nIn `core`, we use vitest snapshots & integration tests for test coverage. If you are solving a problem that is reproducible by a fiddle in [mitosis.builder.io/playground](/playground), we highly recommend the following flow:\n\n### Snapshot test\n\n- copy your fiddle component into a file in `packages/core/src/__tests__/data`. See [packages/core/src/**tests**/data/basic.raw.tsx](/packages/core/src/__tests__/data/basic.raw.tsx) as an example.\n- add that test to the [test generator](/packages/core/src/__tests__/test-generator.ts), most likely in `BASIC_TESTS`.\n- run `yarn g:nx test:watch` in the `packages/core` directory to run the snapshot tests in watch mode\n\nPS: don't worry about failing imports in the raw test TSX files. These are not an issue, since the files are standalone and don't actually belong to a cohesive project.\n\n### Integration test\n\n- copy your fiddle component into a `.lite.tsx` Mitosis component in the [e2e app](/e2e/e2e-app/src/components)\n- name your file the same as your component to resolve it for Angular\n- add your component to the [e2e-app component paths](/e2e/e2e-app/src/component-paths.ts)\n- add your component to the [homepage](/e2e/e2e-app/src/homepage.lite.tsx) with a `<Show when={state.pathToUse.startsWith('/your-component-path')}>`\n- add an integration test in [e2e/e2e-app/tests](/e2e/e2e-app/tests) that makes sure your component works as expected\n- this integration test will run against every server that exists in [e2e/](/e2e/).\n- run `yarn ci:build` to build all packages\n- run `yarn ci:e2e` to run the integration tests against all servers\n\n#### Create new e2e project for another target\n\nIf you want to create a new project inside `e2e`. You should name the folder `e2e-XXX` where `XXX` should be replaced with the target.\nMake sure that you change the `name` inside `package.json` of this project to `@builder.io/e2e-XXX`. Additionally, you need to add `private: true` to `package.json` to avoid publishing the project.\n\n### Test your changes\n\nFrom there, you can keep iterating until the snapshots look as expected, and the integration tests pass!\n\n### Preparing your PR\n\nBefore submitting your PR, please make sure to format the codebase and update all snapshots:\n\n- format the codebase: from the root, run `yarn fmt:prettier`.\n- update all snapshots (in core & CLI): from the root, run `yarn test:update`. This will run a Nx command that will update all the snapshots in the `core` and `cli` packages. while making sure all required dependencies are built beforehand. If there are some difference between the generated snapshots in your local environment and GitHub Action you are able to download the correct snapshots via 'Summary' in the pipeline run. Wait until the job `test-update` is done, scroll to the bottom and download `snapshots-updates`. You should be able to copy&past the snapshots to `packages/core/src/__tests__/__snapshots__`.\n- add Changeset entry: from the root, run `yarn g:changeset` and follow the CLI instructions.\n\n#### Changeset format\n\nHere's the changeset format we like to follow (this is mostly relvant for the core package):\n\n```\n[GENERATORS_IMPACTED] TYPE: DESCRIPTION\n```\n\nExamples:\n\n```\n[React,Vue,Solid] Bug: Fix style bindings not applying.\n[Angular] Feature: Add support for ngFor bindings.\n[All] Feature: store state types.\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Builder.io, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.MD",
    "content": "<br>\n<br>\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F44413839f214431290930e447572b843\">\n    <img width=\"400\" alt=\"Mitosis logo\" src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F570f689e59824cb78cf5773350ab4144\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  Write components once, compile to every framework\n</p>\n\n<br>\n\n<p align=\"center\">\n  <a href=\"https://github.com/prettier/prettier\"><img alt=\"code style: prettier\" src=\"https://img.shields.io/badge/code_style-prettier-ff69b4.svg\" /></a>\n  <a href=\"https://github.com/BuilderIO/mitosis/pulls\"><img alt=\"PRs Welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" /></a>\n  <a href=\"https://github.com/BuilderIO/mitosis/blob/main/LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/github/license/BuilderIO/mitosis\" /></a>\n  <a href=\"https://www.npmjs.com/package/@builder.io/mitosis\"><img alt=\"Types\" src=\"https://img.shields.io/npm/types/@builder.io/mitosis\" /></a>\n  <a href=\"https://www.npmjs.com/package/@builder.io/mitosis\" rel=\"nofollow\"><img src=\"https://img.shields.io/npm/v/@builder.io/mitosis.svg?sanitize=true\"></a>\n</p>\n\n## Overview\n\n[Mitosis](https://mitosis.builder.io/docs/overview/) provides a unified development experience across all frameworks, enabling you to build components in a single codebase and compile them to React, Vue, Angular, Svelte, Solid, Alpine, Qwik, and more.\n\nUsing Mitosis, you can:\n\n- Maintain a consistent design system across multiple frameworks ([example](https://github.com/db-ux-design-system/core-web))\n- Sync your [design systems from Figma to code](https://mitosis.builder.io/docs/figma/) and publish them to npm across frameworks\n- Avoid the [pitfalls of web components](https://mitosis.builder.io/docs/overview/) by compiling to native framework code\n\n_PS: We are actively looking for folks interested in becoming contributors to Mitosis. If interested, look at our list of [good first issues](https://github.com/BuilderIO/mitosis/contribute) or reach out on our [Discord](https://discord.gg/yxjk5vn6pn)_\n\n![Gif example of devloping with Mitosis](https://cdn.builder.io/api/v1/file/assets%2FYJIGb4i01jvw0SRdL5Bt%2F868af1e6d9fd4923b18ecd1d892f3a6e)\n\n## Quickstart\n\nTo create a new Mitosis project from scratch, run the following `create` command:\n\n```bash\nnpm create @builder.io/mitosis@latest\n```\n\nOnce completed, make sure to read the `README.md` generated in your new project. It will explain the structure of your project, and provide a walkthrough on how to build/test your components.\n\nRead the full [getting started docs](https://mitosis.builder.io/docs/quickstart/) for more.\n\n### Integration with Figma\n\nTo make generating Mitosis components easier, as well as to keep your design system in code in sync with your design system in Figma, Mitosis integrates with Figma.\n\nLearn more about our [Figma integration](https://mitosis.builder.io/docs/figma).\n\n![Demo of using Mitosis with Figma](https://cdn.builder.io/api/v1/file/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fde65b7d174354c0baf189ee4e652a31b)\n\n## Resources\n\n- [Documentation](https://mitosis.builder.io/docs)\n- [Playground](https://mitosis.builder.io/playground)\n- [Figma integration](https://mitosis.builder.io/docs/figma/)\n- [Mitosis Discord](https://discord.gg/yxjk5vn6pn)\n\n## Contribute\n\nInterested in contribute? Head over to the [CONTRIBUTING](CONTRIBUTING.md) docs and see how you can get setup & started!\n\nOnce you're ready, checkout our [issues](https://github.com/BuilderIO/mitosis/contribute) page and grab your first issue!\n\n<br>\n<br>\n<p align=\"center\">\n   <a href=\"https://www.builder.io/m/developers\">\n      <picture>\n         <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://user-images.githubusercontent.com/844291/230786554-eb225eeb-2f6b-4286-b8c2-535b1131744a.png\">\n         <img width=\"250\" alt=\"Made with love by Builder.io\" src=\"https://user-images.githubusercontent.com/844291/230786555-a58479e4-75f3-4222-a6eb-74c5af953eac.png\">\n       </picture>\n   </a>\n</p>\n"
  },
  {
    "path": "developer/generators.md",
    "content": "# Generators\n\nWant to contribute a new generator? Take a look at this Loom where we add the Stencil generator in about 40mins! https://www.loom.com/share/3e8bf7e667314a829a0b5d4b61c58cc0\n\nGenerators are made up of 2 main functions: `componentTo<framework>` and `blockTo<framework>`, where `<framework>` is the target framework.\n\n## `componentTo<framework>`\n\nis responsible for converting an entire JSON mitosis component to a component in the target framework (as a string)\n\nThese are the main operations in order:\n\n- `preJsonPlugins`: stuff that runs before we do anything\n- Everything we need: like `getProps` will always be here. (What else?)\n- `postJsonPlugins`: stuff that runs after we’ve done the manipulations that we need, or grabbed the data from the component\n- Create the initial string for the component\n- `PreCodePlugins`: options.plugins pre\n- Formatting with prettier\n- `PostCodePlugins`: options.plugins post\n\n**ORDER matters**: Functions that grab `json` or `component` often mutate it, causing side effects.\n\nGeneral structure of a generator:\n\nVisually, it looks exactly like a component of the target framework. Each part (imports, name, styles, render body, lifecycle methods) is injected using the Mitosis JSON data, such that it is valid code for that framework.\n\n## `blockTo<framework>`\n\nThis is code that handles each individual DOM node within the overall component.\n\nCompile-away-components: Show, For, etc.\n\n- These are special Mitosis components that are replaced with the appropriate target-specific logic at compile-time\n\n### Helpers\n\n#### Styling\n\n**collectClassString**\n\nGrabs all the styles and figures out what class-names to provide to the component\n\n**collectCss**\n\nGrabs all the `css=` data into a style object and removes it (SIDE EFFECT) from the mitosis JSON\n\n#### State\n\n**getStateObjectFromString**\n\nGrabs all state data and formats it appropriately for the target framework\n"
  },
  {
    "path": "docs/README.md",
    "content": "Docs have moved to [mitosis.builder.io](https://mitosis.builder.io/docs)\n"
  },
  {
    "path": "docs/cli.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/cli/)\n"
  },
  {
    "path": "docs/components.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/components/)\n"
  },
  {
    "path": "docs/configuration.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/configuration/)\n"
  },
  {
    "path": "docs/context.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/context/)\n"
  },
  {
    "path": "docs/customizability.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/customization/)\n"
  },
  {
    "path": "docs/feature-matrix-draft.md",
    "content": "## Feature matrix\n\nSymbols:\n\n- ✅ implemented\n- 🏗 in-progress/partially implemented\n- ❌ not implemented\n\nCurrent support:\n\n| **Scope** | React |\n| --------- | :---: |\n| _HTML_    |\n| JSX       |\n| _CSS_     |\n| style()   |\n| _JS_      |\n| State     |\n"
  },
  {
    "path": "docs/gotchas.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/gotchas/)\n"
  },
  {
    "path": "docs/hooks.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/hooks/)\n"
  },
  {
    "path": "docs/project-structure.md",
    "content": "This doc has moved to [mitosis.builder.io](https://mitosis.builder.io/docs/project-structure/)\n"
  },
  {
    "path": "docs/test-status.md",
    "content": "## E2E test status\n\n| Target  | Single Component   | Multiple Components |\n| ------- | ------------------ | ------------------- |\n| alpine  | :white_check_mark: | :white_check_mark:  |\n| angular | :white_check_mark: | :white_check_mark:  |\n| qwik    | :white_check_mark: | :white_check_mark:  |\n| react   | :white_check_mark: | :white_check_mark:  |\n| solid   | :white_check_mark: | :white_check_mark:  |\n| svelte  | :white_check_mark: | :white_check_mark:  |\n| vue2    | :white_check_mark: | :white_check_mark:  |\n| vue3    | :white_check_mark: | :white_check_mark:  |\n\n_NOTE: this matrix is programmatically generated and should not be manually edited._\n"
  },
  {
    "path": "e2e/e2e-alpine/README.md",
    "content": "# e2e-alpine\n"
  },
  {
    "path": "e2e/e2e-alpine/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" href=\"/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Alpine.js app</title>\n  </head>\n\n  <body>\n    <div id=\"app\">{{> homepage }}</div>\n    <script type=\"module\" src=\"/src/main.ts\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-alpine/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-alpine\",\n  \"private\": true,\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"yarn run check && vite build\",\n    \"check\": \"echo 'TODO: Alpine.js check script.'\",\n    \"dev\": \"vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"alpinejs\": \"^3.10.5\",\n    \"rimraf\": \"^3.0.2\",\n    \"vite\": \"^3.2.2\",\n    \"vite-plugin-handlebars\": \"^1.6.0\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-alpine/src/main.ts",
    "content": "import { E2eApp } from '@builder.io/e2e-app/alpine';\nimport Alpine from 'alpinejs';\n\nwindow.Alpine = Alpine;\n\nconsole.log('hello', E2eApp);\n\nAlpine.data('e2e-app', E2eApp);\n\ndocument.getElementById('app')!.innerHTML = E2eApp;\n\nAlpine.start();\n"
  },
  {
    "path": "e2e/e2e-alpine/vite.config.ts",
    "content": "import { resolve } from 'path';\nimport { defineConfig } from 'vite';\nimport handlebars from 'vite-plugin-handlebars';\n\nconst dir = resolve(__dirname, 'node_modules', '@builder.io', 'e2e-app', 'output', 'alpine', 'src');\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [\n    handlebars({\n      partialDirectory: dir,\n    }),\n  ],\n});\n"
  },
  {
    "path": "e2e/e2e-angular/.browserslistrc",
    "content": "# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.\n# For additional information regarding the format and rule options, please see:\n# https://github.com/browserslist/browserslist#queries\n\n# For the full list of supported browsers by the Angular framework, please see:\n# https://angular.io/guide/browser-support\n\n# You can see what browsers were selected by your queries by running:\n#   npx browserslist\n\nlast 1 Chrome version\nlast 1 Firefox version\nlast 2 Edge major versions\nlast 2 Safari major versions\nlast 2 iOS major versions\nFirefox ESR\n"
  },
  {
    "path": "e2e/e2e-angular/.gitignore",
    "content": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# Compiled output\n/dist\n/tmp\n/out-tsc\n/bazel-out\n\n# Node\n/node_modules\nnpm-debug.log\nyarn-error.log\n\n# Miscellaneous\n/.angular/cache\n.sass-cache/\n/connect.lock\n/coverage\n/libpeerconnection.log\ntestem.log\n/typings\n\n# System files\n.DS_Store\nThumbs.db\n\n# Mitosis input, copied in from elsewhere\nsrc\n# Mitosis output\nangular_src/app/lib\n\n# Output likely to come from future Mitosis\nmitosis-component-list.ts\n"
  },
  {
    "path": "e2e/e2e-angular/README.md",
    "content": "# E2E test harness for Angular\n\nTo recompile and run just this set of E2E tests, you can run these commands at\nthe project root:\n\n```bash\nyarn workspace @builder.io/e2e-angular run build\nyarn workspace @builder.io/e2e-angular run e2e\n```\n"
  },
  {
    "path": "e2e/e2e-angular/angular.json",
    "content": "{\n  \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n  \"version\": 1,\n  \"newProjectRoot\": \"projects\",\n  \"projects\": {\n    \"e2e-angular\": {\n      \"projectType\": \"application\",\n      \"schematics\": {},\n      \"root\": \"\",\n      \"sourceRoot\": \"angular_src\",\n      \"prefix\": \"app\",\n      \"architect\": {\n        \"build\": {\n          \"builder\": \"@angular-devkit/build-angular:browser\",\n          \"options\": {\n            \"outputPath\": \"dist/e2e-angular\",\n            \"index\": \"angular_src/index.html\",\n            \"main\": \"angular_src/main.ts\",\n            \"polyfills\": \"angular_src/polyfills.ts\",\n            \"tsConfig\": \"tsconfig.app.json\",\n            \"assets\": [\"angular_src/favicon.ico\", \"angular_src/assets\"],\n            \"styles\": [\"angular_src/styles.css\"],\n            \"scripts\": []\n          },\n          \"configurations\": {\n            \"production\": {\n              \"budgets\": [\n                {\n                  \"type\": \"initial\",\n                  \"maximumWarning\": \"500kb\",\n                  \"maximumError\": \"1mb\"\n                },\n                {\n                  \"type\": \"anyComponentStyle\",\n                  \"maximumWarning\": \"2kb\",\n                  \"maximumError\": \"4kb\"\n                }\n              ],\n              \"fileReplacements\": [\n                {\n                  \"replace\": \"angular_src/environments/environment.ts\",\n                  \"with\": \"angular_src/environments/environment.prod.ts\"\n                }\n              ],\n              \"outputHashing\": \"all\"\n            },\n            \"development\": {\n              \"buildOptimizer\": false,\n              \"optimization\": false,\n              \"vendorChunk\": true,\n              \"extractLicenses\": false,\n              \"sourceMap\": true,\n              \"namedChunks\": true\n            }\n          },\n          \"defaultConfiguration\": \"production\"\n        },\n        \"serve\": {\n          \"builder\": \"@angular-devkit/build-angular:dev-server\",\n          \"configurations\": {\n            \"production\": {\n              \"browserTarget\": \"e2e-angular:build:production\"\n            },\n            \"development\": {\n              \"browserTarget\": \"e2e-angular:build:development\"\n            }\n          },\n          \"defaultConfiguration\": \"development\"\n        },\n        \"extract-i18n\": {\n          \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n          \"options\": {\n            \"browserTarget\": \"e2e-angular:build\"\n          }\n        }\n      }\n    }\n  },\n  \"cli\": {\n    \"analytics\": false\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/app/app.component.html",
    "content": "<homepage [pathname]=\"pathname\"></homepage>\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/app/app.component.ts",
    "content": "import { Component } from '@angular/core';\nimport { Homepage } from './src/homepage';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  standalone: true,\n  imports: [Homepage],\n})\nexport class AppComponent {\n  pathname = window.location.pathname;\n}\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "e2e/e2e-angular/angular_src/environments/environment.prod.ts",
    "content": "export const environment = {\n  production: true,\n};\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/environments/environment.ts",
    "content": "// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n  production: false,\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error';  // Included with Angular CLI.\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>E2eAngular</title>\n    <base href=\"/\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"favicon.ico\" />\n  </head>\n  <body>\n    <app-root></app-root>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/main.ts",
    "content": "import { enableProdMode } from '@angular/core';\nimport { bootstrapApplication } from '@angular/platform-browser';\nimport { AppComponent } from './app/app.component';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n  enableProdMode();\n}\n\nbootstrapApplication(AppComponent).catch((err) => console.error(err));\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/polyfills.ts",
    "content": "/***************************************************************************************************\n * Zone JS is required by default for Angular itself.\n */\nimport 'zone.js'; // Included with Angular CLI.\n"
  },
  {
    "path": "e2e/e2e-angular/angular_src/styles.css",
    "content": "/* You can add global styles to this file, and also import other style files */\n"
  },
  {
    "path": "e2e/e2e-angular/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-angular\",\n  \"scripts\": {\n    \"build\": \"yarn run copy-build && ng build && cpy dist/e2e-angular/index.html . --rename=404.html\",\n    \"clean\": \"rimraf src dist\",\n    \"copy-build\": \"cpy ../e2e-app/output/angular/src angular_src/app\",\n    \"ng\": \"ng\",\n    \"serve\": \"http-server dist/e2e-angular\",\n    \"start\": \"yarn run copy-build && ng serve\",\n    \"watch\": \"yarn run copy-build && ng build --watch --configuration development\"\n  },\n  \"private\": true,\n  \"dependencies\": {\n    \"@angular/animations\": \"^18.2.13\",\n    \"@angular/common\": \"^18.2.13\",\n    \"@angular/compiler\": \"^18.2.13\",\n    \"@angular/core\": \"^18.2.13\",\n    \"@angular/forms\": \"^18.2.13\",\n    \"@angular/platform-browser\": \"^18.2.13\",\n    \"@angular/platform-browser-dynamic\": \"^18.2.13\",\n    \"@builder.io/e2e-app\": \"workspace:*\",\n    \"@builder.io/mitosis-cli\": \"workspace:*\",\n    \"http-server\": \"^14.1.1\",\n    \"rxjs\": \"~7.8.2\",\n    \"tslib\": \"^2.8.1\",\n    \"zone.js\": \"~0.15.0\"\n  },\n  \"devDependencies\": {\n    \"@angular-devkit/build-angular\": \"^18.2.13\",\n    \"@angular/cli\": \"~18.2.13\",\n    \"@angular/compiler-cli\": \"^18.2.13\",\n    \"cpy-cli\": \"5.0.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"5.4.5\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-angular/tsconfig.app.json",
    "content": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"./out-tsc/app\",\n    \"types\": []\n  },\n  \"files\": [\"angular_src/main.ts\", \"angular_src/polyfills.ts\"],\n  \"include\": [\"angular_src/**/*.d.ts\"],\n  \"exclude\": [\"angular_src/**/global.d.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-angular/tsconfig.json",
    "content": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n  \"compileOnSave\": false,\n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"outDir\": \"./dist/out-tsc\",\n    \"forceConsistentCasingInFileNames\": true,\n    \"strict\": true,\n    \"strictPropertyInitialization\": false,\n    \"noImplicitOverride\": true,\n    \"noPropertyAccessFromIndexSignature\": true,\n    \"noImplicitReturns\": true,\n    \"noImplicitAny\": false,\n    \"noFallthroughCasesInSwitch\": true,\n    \"sourceMap\": true,\n    \"declaration\": false,\n    \"downlevelIteration\": true,\n    \"strictNullChecks\": false,\n    \"experimentalDecorators\": true,\n    \"moduleResolution\": \"node\",\n    \"importHelpers\": true,\n    \"target\": \"es2020\",\n    \"module\": \"es2020\",\n    \"lib\": [\"es2020\", \"dom\"]\n  },\n  \"angularCompilerOptions\": {\n    \"enableI18nLegacyMessageIdFormat\": false,\n    \"strictInjectionParameters\": true,\n    \"strictInputAccessModifiers\": true,\n    \"strictTemplates\": true\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/.gitignore",
    "content": "playwright-results.json\ne2e-test-status.*\n\noutput/**/src\noutput/stencil/components.d.ts"
  },
  {
    "path": "e2e/e2e-app/README.md",
    "content": "# E2E App and Specification\n\nThis package contains a set of Mitosis which form a small working application,\nand Playwright specs for that application.\n\nTo the extent mitosis works correctly, the app will pass the same set of tests\nregardless of which target framework is used.\n"
  },
  {
    "path": "e2e/e2e-app/allow-failures.json",
    "content": "[{ \"caseName\": \"02-two-components\", \"target\": \"e2e-qwik\" }]\n"
  },
  {
    "path": "e2e/e2e-app/e2e-output.ts",
    "content": "import { readFile, writeFile } from 'fs/promises';\n\nconst prettier = require('prettier');\n\nexport interface Entry {\n  caseName: string;\n  target: string;\n  ok: boolean;\n}\n\nconst friendlyCaseNames: Record<string, string> = {\n  '01-one-component': 'Single Component',\n  '02-two-components': 'Multiple Components',\n};\n\nexport async function emitTable(allResults: Entry[]) {\n  const cols: string[] = [];\n  const rows: string[] = [];\n  const result: string[][] = [];\n  const output: string[] = [];\n\n  function axisIndex(arr: string[], value: string): number {\n    let x = arr.indexOf(value);\n    if (x < 0) {\n      x = arr.push(value) - 1;\n    }\n    return x;\n  }\n\n  for (const e of allResults) {\n    const col = axisIndex(cols, e.caseName);\n    const row = axisIndex(rows, e.target);\n    if (result.length <= row) result.push([]);\n    const rowData = result[row];\n    while (rowData.length <= col) rowData.push('');\n    result[row][col] = e.ok ? ':white_check_mark:' : ':x:';\n  }\n\n  output.push(\n    'Target | ' +\n      cols.map((caseId) => friendlyCaseNames[caseId] || caseId.replace(/-/g, ' ')).join(' | '),\n  );\n  output.push('-|-'.repeat(cols.length));\n\n  for (const index in rows) {\n    const targetName = rows[index].replace('e2e-', '');\n    output.push(targetName + ' | ' + result[index].join(' | '));\n  }\n\n  const formattedTable = prettier.format(output.join('\\n'), { parser: 'markdown' });\n  await writeFile('./e2e-test-status.md', formattedTable, 'utf8');\n\n  // Write it in to the README\n  const outputFile = '../../docs/test-status.md';\n  const currentReadme = await readFile(outputFile, 'utf-8');\n\n  const before = currentReadme.match(/.*## E2E test status/gms)![0];\n  const after = currentReadme.match(/## Contribute.*/gms)![0];\n  const newReadme = `${before}\n\n${formattedTable}\n_NOTE: this matrix is programmatically generated and should not be manually edited._\n\n${after}`;\n\n  await writeFile(outputFile, newReadme, 'utf-8');\n  // cut before/after the heading and next heading\n  // write with this inserted\n\n  // CI can look at whether this changed the README, and fail the PR if so.\n}\n\n// Useful to test this module alone:\n\n// emitTable([\n//   { caseName: '01-one-component', target: 'e2e-angular', ok: true },\n//   { caseName: '01-one-component', target: 'e2e-qwik', ok: true },\n//   { caseName: '01-one-component', target: 'e2e-react', ok: true },\n//   { caseName: '01-one-component', target: 'e2e-vue3', ok: true },\n//   { caseName: '02-two-components', target: 'e2e-angular', ok: true },\n//   { caseName: '02-two-components', target: 'e2e-qwik', ok: false },\n//   { caseName: '02-two-components', target: 'e2e-vue2', ok: true },\n//   { caseName: '02-two-components', target: 'e2e-vue3', ok: true },\n//   { caseName: '03-something', target: 'e2e-angular', ok: true },\n//   { caseName: '03-something', target: 'e2e-qwik', ok: false },\n//   { caseName: '03-something', target: 'e2e-vue3', ok: true },\n//   { caseName: '04-another-example', target: 'e2e-solid', ok: true },\n//   { caseName: '04-another-example', target: 'e2e-svelte', ok: true },\n// ]);\n"
  },
  {
    "path": "e2e/e2e-app/e2e.ts",
    "content": "// Mitosis E2E orchestration script\n\nimport { spawn } from 'child_process';\nimport { readFile, writeFile } from 'fs/promises';\nimport { resolve } from 'path';\nimport syncDirectory from 'sync-directory';\n\nimport { emitTable, Entry } from './e2e-output';\n\n// Update this array when adding new cases.\n\nconst cases = [\n  '01-one-component',\n  '02-two-components',\n  // '03-types'\n];\n\n// Update this array when Mitosis adds new targets\n\nconst packages = [\n  '@builder.io/e2e-alpine',\n  '@builder.io/e2e-app-qwik-output',\n  '@builder.io/e2e-app-vue3-output',\n  '@builder.io/e2e-angular',\n  '@builder.io/e2e-qwik',\n  '@builder.io/e2e-react',\n  '@builder.io/e2e-solid',\n  '@builder.io/e2e-svelte',\n  '@builder.io/e2e-vue2',\n  '@builder.io/e2e-vue3',\n];\n\n// To keep the E2E code minimal, the case and target names are currently treated\n// as string (untyped) data. Since only a (hopefully near 0) list of\n// allow-to-fail cases is stored, it seems a reasonable tradeoff.\n\nasync function yarn(...args) {\n  return new Promise((res, reject) => {\n    let child = spawn('yarn', args, {\n      cwd: resolve(__dirname, '../..'),\n      shell: true,\n      stdio: 'inherit',\n    });\n\n    child.on('error', reject);\n    child.on('exit', (code) => (code === 0 ? res(0) : reject(code)));\n  });\n}\n\nasync function nxRunMany(target: string, projects: string[]) {\n  return new Promise((res, reject) => {\n    let child = spawn(`nx run-many --target ${target} --parallel 4 --projects ${projects.join()}`, {\n      cwd: resolve(__dirname, '../..'),\n      shell: true,\n      stdio: 'inherit',\n    });\n\n    child.on('error', reject);\n    child.on('exit', (code) => (code === 0 ? res(0) : reject(code)));\n  });\n}\n\nfunction allOk(specs: Entry[]) {\n  return specs.every((s) => s.ok);\n}\n\nasync function readSummary(caseName: string): Promise<Entry[]> {\n  const json = await readFile('./playwright-results.json', 'utf-8');\n  const results = JSON.parse(json);\n  return results.suites[0].suites.map((y) => ({\n    caseName,\n    target: y.title,\n    ok: allOk(y.specs),\n  }));\n}\n\nasync function detectFailures(allResults: any[]) {\n  // Look for any failures, except those explicity allowed. A failure would be\n  // allowed so that the case and progress can be merged, even where Mitosis\n  // doesn't have complete support across all targets yet.\n\n  const allowFailuresJson = await readFile('./allow-failures.json', 'utf-8');\n  const allowFailures: Entry[] = JSON.parse(allowFailuresJson);\n\n  const didntPass = allResults.filter((e) => !e.ok);\n  const regressions = didntPass.filter(\n    (dp) => !allowFailures.find((af) => dp.caseName == af.caseName && dp.target == af.target),\n  );\n\n  if (regressions.length > 0) {\n    console.error('E2E regressions, these formerly passed!', regressions);\n    throw new Error('E2E regressions: ' + regressions.length);\n  }\n}\n\nasync function main() {\n  const allResults: Entry[] = [];\n\n  // Build one case at a time, so we only need one build env per target.\n  for (const c of cases) {\n    console.log('--------------------------------- E2E case:', c);\n\n    // Copy the case source into src; see\n    // https://github.com/BuilderIO/mitosis/issues/494\n    syncDirectory(resolve('cases', c), resolve('src'), {\n      deleteOrphaned: true,\n      exclude: ['.gitkeep'],\n    });\n\n    // Clean the output - don't want Vite or other tools to leave behind\n    // previous app on failure.\n    await nxRunMany('clean', packages);\n\n    // Mitosis all targets - with a workaround to tolerate failure, until:\n    // https://github.com/BuilderIO/mitosis/issues/510\n    await yarn('workspace', '@builder.io/e2e-app', 'run', 'run-mitosis-separately');\n\n    // Build the libraries and host apps in the normal way.\n    // Ideally we could use Yarn Workspace, but it lacks a partial-success-OK flag.\n    // await yarn('workspaces', 'foreach', '-pt', '--include', '*/e2e-*', '--verbose', 'run', 'build');\n\n    try {\n      await nxRunMany('build', packages);\n    } catch (e) {\n      console.log('Build Failed', 'proceeding with E2E');\n    }\n\n    // Invoke Playwright to test them all.\n    try {\n      await yarn('workspace', '@builder.io/e2e-app', 'run', 'playwright');\n    } catch (e) {\n      console.log('Playwright failed, proceeding anyway');\n    }\n\n    allResults.push(...(await readSummary(c)));\n  }\n\n  // console.log('E2E results', allResults);\n\n  console.log('Writing E2E status');\n  await writeFile('./e2e-test-status.json', JSON.stringify(allResults, undefined, 2), 'utf8');\n\n  console.log('Updating README with E2E status');\n  await emitTable(allResults);\n\n  await detectFailures(allResults);\n}\n\nmain()\n  .then(() => {\n    process.exit(0);\n  })\n  .catch((err) => {\n    console.error(err);\n    process.exit(1);\n  });\n"
  },
  {
    "path": "e2e/e2e-app/mitosis.config.cjs",
    "content": "/**\n * @type {import('@builder.io/mitosis').MitosisConfig}\n */\nmodule.exports = {\n  files: 'src/**',\n  targets: [\n    'alpine',\n    'angular',\n    'customElement',\n    'html',\n    'qwik',\n    'react',\n    'reactNative',\n    'solid',\n    'stencil',\n    'svelte',\n    'vue',\n    'webcomponent',\n  ],\n  commonOptions: {\n    typescript: true,\n    explicitBuildFileExtensions: {\n      '.md': /.*(docs\\.lite\\.tsx)$/g,\n    },\n    plugins: [\n      () => ({\n        code: {\n          post: (code, json) => {\n            if (json.meta?.useMetadata?.docs) {\n              return (\n                `# ${json.name} - ${json.pluginData?.target}\\n\\n` +\n                `${JSON.stringify(json.meta?.useMetadata?.docs)}\\n\\n` +\n                'This is the content:\\n' +\n                '````\\n' +\n                code +\n                '\\n````'\n              );\n            }\n\n            return code;\n          },\n        },\n      }),\n    ],\n  },\n  options: {\n    angular: {\n      api: 'signals',\n    },\n    react: { transpiler: { format: 'esm', languages: ['ts'] } },\n    stencil: {\n      prefix: 'e2e',\n    },\n    solid: { transpiler: { languages: ['ts'] } },\n    vue: {\n      transpiler: { format: 'esm' },\n      asyncComponentImports: true,\n      api: 'composition',\n    },\n    qwik: {},\n    svelte: {},\n  },\n};\n"
  },
  {
    "path": "e2e/e2e-app/output/qwik/.gitignore",
    "content": "lib/\ntypes/\n\n\n"
  },
  {
    "path": "e2e/e2e-app/output/qwik/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-app-qwik\",\n  \"type\": \"module\",\n  \"private\": true,\n  \"main\": \"./lib/index.qwik.cjs\",\n  \"module\": \"./lib/index.qwik.mjs\",\n  \"qwik\": \"./lib/index.qwik.mjs\",\n  \"types\": \"./types/index.d.ts\",\n  \"files\": [\n    \"README.md\",\n    \"package.json\",\n    \"types\",\n    \"lib\"\n  ],\n  \"exports\": {\n    \".\": {\n      \"import\": \"./lib/index.qwik.mjs\",\n      \"require\": \"./lib/index.qwik.cjs\"\n    }\n  },\n  \"scripts\": {\n    \"typecheck\": \"tsc --noEmit\",\n    \"build\": \"tsc && vite build --mode lib\",\n    \"release:patch\": \"yarn run build && npm version patch && npm publish\",\n    \"release:minor\": \"yarn run build && npm version minor && npm publish\",\n    \"release:dev\": \"yarn run build && npm version prerelease && npm publish --tag dev\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\",\n    \"@builder.io/qwik\": \"^1.5.5\",\n    \"@types/node\": \"latest\",\n    \"typescript\": \"^5.3.2\",\n    \"undici\": \"^6.18.2\",\n    \"vite\": \"^3.2.2\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/qwik/project.json",
    "content": "{\n  \"$schema\": \"./node_modules/nx/schemas/project-schema.json\",\n  \"name\": \"@builder.io/e2e-app-qwik\",\n  \"implicitDependencies\": [\"@builder.io/e2e-app\"],\n  \"targets\": {\n    \"build\": {\n      \"outputs\": [\"{projectRoot}/lib\", \"{projectRoot}/types\"]\n    }\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/qwik/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,\n    \"jsx\": \"react-jsx\" /* Specify what JSX code is generated. */,\n    \"jsxImportSource\": \"@builder.io/qwik\" /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */,\n    /* Modules */\n    \"module\": \"ES2020\" /* Specify what module code is generated. */,\n    // \"rootDir\": \"./\",                                  /* Specify the root folder within your source files. */\n    \"moduleResolution\": \"node\" /* Specify how TypeScript looks up a file from a given module specifier. */,\n    \"paths\": {} /* Specify a set of entries that re-map imports to additional lookup locations. */,\n    \"allowJs\": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */,\n    \"checkJs\": false /* Enable error reporting in type-checked JavaScript files. */,\n    \"declaration\": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */,\n    \"outDir\": \"./dist\" /* Specify an output folder for all emitted files. */,\n    \"declarationDir\": \"./types\" /* Specify the output directory for generated declaration files. */,\n    \"esModuleInterop\": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */,\n    \"forceConsistentCasingInFileNames\": true /* Ensure that casing is correct in imports. */,\n    \"strict\": true /* Enable all strict type-checking options. */,\n    \"noImplicitAny\": false /* Enable error reporting for expressions and declarations with an implied `any` type.. */,\n    \"skipLibCheck\": true /* Skip type checking all .d.ts files. */,\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"types.d.ts\", \"types-hack.d.ts\", \"src\"]\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/qwik/vite.config.ts",
    "content": "import { qwikVite } from '@builder.io/qwik/optimizer';\nimport { resolve } from 'path';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig(() => {\n  return {\n    build: {\n      lib: {\n        entry: resolve(__dirname, 'src/index.ts'),\n        target: 'es2020',\n        formats: ['es', 'cjs'],\n        fileName: (format) => `index.qwik.${format === 'es' ? 'mjs' : 'cjs'}`,\n      },\n    },\n    plugins: [qwikVite()],\n  };\n});\n"
  },
  {
    "path": "e2e/e2e-app/output/stencil/index.html",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0\"\n    />\n    <title>Stencil Component Starter</title>\n\n    <script type=\"module\" src=\"/build/e2e-stencil.esm.js\"></script>\n    <script nomodule src=\"/build/e2e-stencil.js\"></script>\n  </head>\n  <body>\n    <e2e-homepage></e2e-homepage>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-app/output/stencil/index.ts",
    "content": "/**\n * @fileoverview entry point for your component library\n *\n * This is the entry point for your component library. Use this file to export utilities,\n * constants or data structure that accompany your components.\n *\n * DO NOT use this file to export your components. Instead, use the recommended approaches\n * to consume components of this package as outlined in the `README.md`.\n */\n\nexport type * from './components.d.ts';\n"
  },
  {
    "path": "e2e/e2e-app/output/vue/package.json",
    "content": "{\n  \"name\": \"@e2e-app/vue\",\n  \"private\": true,\n  \"main\": \"./dist/index.js\",\n  \"module\": \"./dist/index.js\",\n  \"type\": \"module\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    },\n    \"./vue3\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\"\n    },\n    \"./vue3/css\": \"./dist/style.css\"\n  },\n  \"scripts\": {\n    \"add-debug\": \"bash ./scripts/add-debug.sh\",\n    \"remove-debug\": \"bash ./scripts/remove-debug.sh\",\n    \"build\": \"vite build\",\n    \"type-check\": \"vue-tsc --noEmit\"\n  },\n  \"dependencies\": {\n    \"vue\": \"^3.5.13\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\",\n    \"@types/node\": \"^16.11.47\",\n    \"@vitejs/plugin-vue\": \"^5.2.0\",\n    \"@vue/tsconfig\": \"^0.7.0\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^6.2.1\",\n    \"vue-tsc\": \"^2.2.8\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/vue/project.json",
    "content": "{\n  \"name\": \"@e2e-app/vue\",\n  \"implicitDependencies\": [\"@builder.io/e2e-app\"]\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/vue/tsconfig.config.json",
    "content": "{\n  \"extends\": \"@vue/tsconfig/tsconfig.json\",\n  \"include\": [\"vite.config.*\", \"vitest.config.*\", \"cypress.config.*\"],\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"noImplicitAny\": false,\n    \"types\": [\"node\"]\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/vue/tsconfig.json",
    "content": "{\n  \"extends\": \"@vue/tsconfig/tsconfig.json\",\n  \"include\": [\"env.d.ts\", \"src/**/*\", \"src/**/*.vue\"],\n  \"compilerOptions\": {\n    \"noImplicitAny\": false,\n    \"baseUrl\": \".\"\n  },\n\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.config.json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "e2e/e2e-app/output/vue/vite.config.ts",
    "content": "import vue from '@vitejs/plugin-vue';\nimport { resolve } from 'path';\nimport { defineConfig } from 'vite';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [vue()],\n  build: {\n    lib: {\n      entry: resolve(__dirname, 'src/index.ts'),\n      fileName: 'index',\n      formats: ['cjs', 'es'],\n    },\n    rollupOptions: {\n      // make sure to externalize deps that shouldn't be bundled\n      // into your library\n      external: ['vue'],\n      output: {\n        // Provide global variables to use in the UMD build\n        // for externalized deps\n        globals: {\n          vue: 'Vue',\n        },\n      },\n    },\n  },\n});\n"
  },
  {
    "path": "e2e/e2e-app/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-app\",\n  \"description\": \"App for verifying Mitosis works, including Playwright specification\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"start\": \"watch 'yarn build' ./src\",\n    \"build\": \"mitosis build\",\n    \"e2e-old\": \"ts-node --project tsconfig.node.json e2e\",\n    \"e2e\": \"playwright test\",\n    \"e2e:ui\": \"npx playwright test --ui\",\n    \"install:playwright\": \"playwright install chromium --with-deps\",\n    \"report\": \"playwright show-report\"\n  },\n  \"dependencies\": {\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"@builder.io/mitosis-cli\": \"workspace:*\",\n    \"@playwright/test\": \"^1.48.0\",\n    \"watch\": \"^1.0.2\"\n  },\n  \"devDependencies\": {\n    \"@stencil/core\": \"^4.7.0\",\n    \"@types/node\": \"^20.12.13\",\n    \"concurrently\": \"^7.3.0\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"solid-js\": \"^1.4.5\",\n    \"solid-styled-components\": \"^0.28.4\",\n    \"sync-directory\": \"^5.1.7\",\n    \"ts-node\": \"^10.9.1\",\n    \"typescript\": \"^5.3.2\",\n    \"vue\": \"~2.6\"\n  },\n  \"exports\": {\n    \"./svelte\": \"./output/svelte/src/homepage.svelte\",\n    \"./*\": \"./output/*/src/index.ts\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/playwright.config.ts",
    "content": "import type { PlaywrightTestConfig } from '@playwright/test';\nimport { devices } from '@playwright/test';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { PackageName } from './src/testConfig';\n\nexport const targets: { packageName: PackageName; port: number }[] = (\n  [\n    // { packageName: 'e2e-alpine' },\n    { packageName: 'e2e-angular' },\n    { packageName: 'e2e-qwik' },\n    { packageName: 'e2e-react' },\n    { packageName: 'e2e-solid' },\n    { packageName: 'e2e-stencil' },\n    { packageName: 'e2e-svelte' },\n    { packageName: 'e2e-vue3' },\n  ] as const\n).map(({ packageName }, i) => {\n  const port = 1234 + i;\n\n  return {\n    port,\n    packageName,\n  };\n});\n\nconst getDirName = () => {\n  try {\n    const __filename = fileURLToPath(import.meta.url);\n    const __dirname = path.dirname(__filename);\n    return __dirname;\n  } catch (error) {\n    return '.';\n  }\n};\n\n/**\n * See https://playwright.dev/docs/test-configuration.\n */\nconst testConfig: PlaywrightTestConfig = {\n  testDir: getDirName() + '/tests',\n\n  /* Maximum time one test can run for. */\n  timeout: 20 * 1000,\n  expect: {\n    /**\n     * Maximum time expect() should wait for the condition to be met.\n     * For example in `await expect(locator).toHaveText();`\n     */\n    timeout: 5000,\n  },\n  /* Run tests in files in parallel */\n  fullyParallel: true,\n  /* Fail the build on CI if you accidentally left test.only in the source code. */\n  forbidOnly: !!process.env.CI,\n  /* Retry on CI only */\n  retries: process.env.CI ? 2 : 0,\n  /* Opt out of parallel tests on CI. */\n  workers: process.env.CI ? 1 : undefined,\n\n  /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n  reporter: [\n    ['list'],\n    ['html', { open: 'never' }],\n    ['json', { outputFile: 'playwright-results.json' }],\n  ],\n\n  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */\n  use: {\n    /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */\n    actionTimeout: 3 * 1000,\n\n    /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */\n    trace: 'on',\n    screenshot: 'on',\n\n    /* Base URL to use in actions like `await page.goto('/')`. */\n    baseURL: `http://localhost`,\n  },\n\n  /* Configure projects for major browsers */\n  projects: targets.map(({ packageName, port }) => ({\n    name: packageName,\n    use: {\n      ...devices['Desktop Chrome'],\n      baseURL: `http://localhost:${port}`,\n      /**\n       * This provides the package name to the test as a variable to check which exact server the test is running.\n       */\n      packageName,\n    },\n  })),\n\n  /* Folder for test artifacts such as screenshots, videos, traces, etc. */\n  // outputDir: 'test-results/',\n\n  webServer: targets.map(({ packageName, port }) => ({\n    command: `yarn workspace @builder.io/${packageName} run serve --port=${port}`,\n    port: port,\n    reuseExistingServer: false,\n  })),\n};\n\nexport default testConfig;\n"
  },
  {
    "path": "e2e/e2e-app/project.json",
    "content": "{\n  \"$schema\": \"./node_modules/nx/schemas/project-schema.json\",\n  \"name\": \"@builder.io/e2e-app\",\n  \"targets\": {\n    \"build\": {\n      \"executor\": \"nx:run-commands\",\n      \"options\": {\n        \"cwd\": \"./e2e/e2e-app\",\n        \"command\": \"yarn build\"\n      },\n      \"outputs\": [\n        \"{projectRoot}/output/react/src\",\n        \"{projectRoot}/output/qwik/src\",\n        \"{projectRoot}/output/stencil/src\",\n        \"{projectRoot}/output/solid/src\",\n        \"{projectRoot}/output/svelte/src\",\n        \"{projectRoot}/output/vue/packages/_vue2/src\",\n        \"{projectRoot}/output/vue/packages/_vue3/src\"\n      ]\n    },\n    \"e2e\": {\n      \"dependsOn\": [\"install:playwright\"]\n    }\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-app/results.json",
    "content": "{\n  \"config\": {\n    \"forbidOnly\": false,\n    \"fullyParallel\": true,\n    \"globalSetup\": null,\n    \"globalTeardown\": null,\n    \"globalTimeout\": 0,\n    \"grep\": {},\n    \"grepInvert\": null,\n    \"maxFailures\": 0,\n    \"metadata\": {},\n    \"preserveOutput\": \"always\",\n    \"projects\": [\n      {\n        \"outputDir\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app/test-results\",\n        \"repeatEach\": 1,\n        \"retries\": 0,\n        \"name\": \"chromium\",\n        \"testDir\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app/tests\",\n        \"testIgnore\": [],\n        \"testMatch\": [\"**/?(*.)@(spec|test).*\"],\n        \"timeout\": 20000\n      }\n    ],\n    \"reporter\": [\n      [\"list\", null],\n      [\n        \"html\",\n        {\n          \"open\": \"never\"\n        }\n      ],\n      [\n        \"json\",\n        {\n          \"outputFile\": \"results.json\"\n        }\n      ]\n    ],\n    \"reportSlowTests\": {\n      \"max\": 5,\n      \"threshold\": 15000\n    },\n    \"rootDir\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app/tests\",\n    \"quiet\": false,\n    \"shard\": null,\n    \"updateSnapshots\": \"missing\",\n    \"version\": \"1.24.0\",\n    \"workers\": 8,\n    \"webServer\": null,\n    \"_webServers\": [\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-angular run serve --port 7506\",\n        \"port\": 7506,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-qwik run serve --port 7507\",\n        \"port\": 7507,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-react run serve --port 7502\",\n        \"port\": 7502,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-solid run serve --port 7501\",\n        \"port\": 7501,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-svelte run serve --port 7504\",\n        \"port\": 7504,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-vue2 run serve --port 7505\",\n        \"port\": 7505,\n        \"reuseExistingServer\": false\n      },\n      {\n        \"command\": \"yarn workspace @builder.io/e2e-vue3 run serve --port 7503\",\n        \"port\": 7503,\n        \"reuseExistingServer\": false\n      }\n    ],\n    \"_globalOutputDir\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app\",\n    \"_configDir\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app\",\n    \"_testGroupsCount\": 7\n  },\n  \"suites\": [\n    {\n      \"title\": \"example.spec.ts\",\n      \"file\": \"example.spec.ts\",\n      \"line\": 0,\n      \"column\": 0,\n      \"specs\": [],\n      \"suites\": [\n        {\n          \"title\": \"e2e-angular\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 0,\n                      \"status\": \"passed\",\n                      \"duration\": 1517,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-qwik\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": false,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 1,\n                      \"status\": \"failed\",\n                      \"duration\": 6628,\n                      \"error\": {\n                        \"message\": \"\\u001b[2mexpect(\\u001b[22m\\u001b[31mreceived\\u001b[39m\\u001b[2m).\\u001b[22mtoHaveCount\\u001b[2m(\\u001b[22m\\u001b[32mexpected\\u001b[39m\\u001b[2m) // deep equality\\u001b[22m\\n\\nExpected: \\u001b[32m3\\u001b[39m\\nReceived: \\u001b[31m2\\u001b[39m\\nCall log:\\n  \\u001b[2m- expect.toHaveCount with timeout 5000ms\\u001b[22m\\n\\u001b[2m  - waiting for selector \\\"li\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\",\n                        \"stack\": \"Error: \\u001b[2mexpect(\\u001b[22m\\u001b[31mreceived\\u001b[39m\\u001b[2m).\\u001b[22mtoHaveCount\\u001b[2m(\\u001b[22m\\u001b[32mexpected\\u001b[39m\\u001b[2m) // deep equality\\u001b[22m\\n\\nExpected: \\u001b[32m3\\u001b[39m\\nReceived: \\u001b[31m2\\u001b[39m\\nCall log:\\n  \\u001b[2m- expect.toHaveCount with timeout 5000ms\\u001b[22m\\n\\u001b[2m  - waiting for selector \\\"li\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\u001b[2m  -   selector resolved to 2 elements\\u001b[22m\\n\\u001b[2m  -   unexpected value \\\"2\\\"\\u001b[22m\\n\\n    at /Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app/tests/example.spec.ts:18:40\"\n                      },\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": [],\n                      \"errorLocation\": {\n                        \"file\": \"/Users/kcordes/projects/Qwik/mitosis/e2e/e2e-app/tests/example.spec.ts\",\n                        \"column\": 40,\n                        \"line\": 18\n                      }\n                    }\n                  ],\n                  \"status\": \"unexpected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-react\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 2,\n                      \"status\": \"passed\",\n                      \"duration\": 907,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-solid\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 3,\n                      \"status\": \"passed\",\n                      \"duration\": 1638,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-svelte\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 4,\n                      \"status\": \"passed\",\n                      \"duration\": 2253,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-vue2\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 5,\n                      \"status\": \"passed\",\n                      \"duration\": 1536,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        },\n        {\n          \"title\": \"e2e-vue3\",\n          \"file\": \"example.spec.ts\",\n          \"line\": 6,\n          \"column\": 8,\n          \"specs\": [\n            {\n              \"title\": \"todo list add\",\n              \"ok\": true,\n              \"tags\": [],\n              \"tests\": [\n                {\n                  \"timeout\": 20000,\n                  \"annotations\": [],\n                  \"expectedStatus\": \"passed\",\n                  \"projectName\": \"chromium\",\n                  \"results\": [\n                    {\n                      \"workerIndex\": 6,\n                      \"status\": \"passed\",\n                      \"duration\": 1651,\n                      \"stdout\": [],\n                      \"stderr\": [],\n                      \"retry\": 0,\n                      \"attachments\": []\n                    }\n                  ],\n                  \"status\": \"expected\"\n                }\n              ],\n              \"file\": \"example.spec.ts\",\n              \"line\": 7,\n              \"column\": 5\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"errors\": []\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/component-paths.ts",
    "content": "export const COMPONENT_PATHS = [\n  '/default-props/',\n  '/one-component/',\n  '/two-components/',\n  '/types/',\n  '/show-for-component/',\n  '/special-tags/',\n  '/signals/',\n  '/disabled-input/',\n  '/component-on-update/',\n  '/component-with-outside-types/',\n];\n"
  },
  {
    "path": "e2e/e2e-app/src/components/component-on-update.lite.tsx",
    "content": "import { onMount, onUpdate, useRef, useStore } from '@builder.io/mitosis';\n\ntype Store = { initial: boolean; counter: number; label?: string; handleClick: () => void };\n\nexport default function ComponentOnUpdate(props: any) {\n  const _ref = useRef<HTMLDivElement | null>(null);\n\n  const state = useStore<Store>({\n    initial: false,\n    counter: 0,\n    label: undefined,\n    handleClick: () => {\n      state.counter = state.counter + 1;\n    },\n  });\n\n  onMount(() => {\n    state.initial = true;\n  });\n\n  onUpdate(() => {\n    if (_ref && !state.initial) {\n      state.initial = true;\n    }\n  }, [_ref, state.initial]);\n\n  onUpdate(() => {\n    console.log(state.counter, state.label, state.initial);\n  });\n\n  onUpdate(() => {\n    if (state.initial) {\n      state.label = 'Label';\n    }\n  }, [state.initial]);\n\n  onUpdate(() => {\n    if (_ref && state.label) {\n      _ref.setAttribute('aria-label', `${state.label}: ${state.counter}`);\n    }\n  }, [_ref, state.counter, state.label]);\n\n  return (\n    <div ref={_ref} data-testid=\"container\">\n      Hello {state.counter}\n      <button data-testid=\"button\" onClick={() => state.handleClick()}>\n        Increase\n      </button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/default-props/use-default-props.lite.tsx",
    "content": "import { useDefaultProps, useStore } from '@builder.io/mitosis';\n\nuseDefaultProps({ foo: 'abc', bar: 'foo' });\n\ntype DefaultPropsType = {\n  foo?: string;\n  bar?: string;\n};\n\nexport default function DefaultProps(props: DefaultPropsType) {\n  const state = useStore({\n    getProps: () => {\n      return JSON.stringify({ foo: props.foo, bar: props.bar });\n    },\n  });\n\n  return <div data-testid=\"default-props\">{state.getProps()}</div>;\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/disabled-input/disabled-input.lite.tsx",
    "content": "import NativeInput from './native-input.lite';\nimport SimpleInput from './simple-input.lite';\n\nexport default function DisabledInput() {\n  return (\n    <div>\n      <SimpleInput testId=\"simple-input-disabled\" disabled={true} />\n      <SimpleInput testId=\"simple-input-enabled\" disabled={false} />\n      <NativeInput testId=\"native-input-disabled\" disabled={true} />\n      <NativeInput testId=\"native-input-enabled\" disabled={false} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/disabled-input/native-input.lite.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nexport type DisabledProps = {\n  testId: string;\n  disabled?: boolean;\n};\nuseMetadata({\n  angular: { nativeAttributes: ['disabled'] },\n});\n\nexport default function NativeInput(props: DisabledProps) {\n  return (\n    <div>\n      <input data-testid={props.testId} disabled={props.disabled} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/disabled-input/simple-input.lite.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nexport type DisabledProps = {\n  testId: string;\n  disabled?: boolean;\n};\nuseMetadata({});\n\nexport default function SimpleInput(props: DisabledProps) {\n  return (\n    <div>\n      <input data-testid={props.testId} disabled={props.disabled} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/explicit.docs.lite.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nimport ComponentWithTypes from './component-with-types.lite';\n\nuseMetadata({\n  docs: {\n    name: 'This is the name',\n  },\n});\n\nexport default function AbcButton(props: any) {\n  return <ComponentWithTypes name={props.name}></ComponentWithTypes>;\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/nested/item-list.lite.tsx",
    "content": "export interface ItemListProps {\n  list: string[];\n}\n\nexport default function ItemList(props: ItemListProps) {\n  return (\n    <ul class=\"shadow-md rounded\">\n      {props.list.map((item) => (\n        <li\n          class=\"border-gray-200 border-b\"\n          css={{\n            padding: '10px',\n          }}\n        >\n          {item}\n        </li>\n      ))}\n    </ul>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/nested/nested-parent.lite.tsx",
    "content": "import { useMetadata, useStore } from '@builder.io/mitosis';\n\nimport ItemList from './item-list.lite';\n\nuseMetadata({\n  qwik: {\n    mutable: ['state.list'],\n  },\n});\n\nexport interface State {\n  list: string[];\n  newItemName: string;\n  setItemName: any;\n  addItem: any;\n}\n\nexport default function NestedParent(props: any) {\n  const state = useStore<State>({\n    list: ['hello', 'world'],\n    newItemName: 'New item',\n\n    setItemName(event: any) {\n      state.newItemName = (event.target as any).value;\n    },\n\n    addItem() {\n      state.list = [...state.list, state.newItemName];\n    },\n  });\n\n  return (\n    <div\n      css={{\n        padding: '10px',\n      }}\n    >\n      <link href=\"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css\" rel=\"stylesheet\" />\n\n      <input\n        class=\"shadow-md rounded w-full px-4 py-2\"\n        value={state.newItemName}\n        onChange={(event) => state.setItemName(event)}\n      />\n\n      <button\n        class=\"bg-blue-500 rounded w-full text-white font-bold py-2 px-4\"\n        css={{\n          margin: '10px 0',\n        }}\n        onClick={() => state.addItem()}\n      >\n        Add list item\n      </button>\n\n      <ItemList list={state.list}></ItemList>\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/one-component.lite.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport interface State {\n  list: string[];\n  newItemName: string;\n  setItemName: any;\n  addItem: any;\n}\n\nexport default function OneComponent(props: any) {\n  const state = useStore<State>({\n    list: ['hello', 'world'],\n    newItemName: 'New item',\n\n    setItemName(event: any) {\n      state.newItemName = (event.target as any).value;\n    },\n\n    addItem() {\n      state.list = [...state.list, state.newItemName];\n    },\n  });\n\n  return (\n    <div\n      css={{\n        padding: '10px',\n      }}\n    >\n      <link href=\"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css\" rel=\"stylesheet\" />\n\n      <input\n        class=\"shadow-md rounded w-full px-4 py-2\"\n        value={state.newItemName}\n        onChange={(event) => state.setItemName(event)}\n      />\n\n      <button\n        class=\"bg-blue-500 rounded w-full text-white font-bold py-2 px-4\"\n        css={{\n          margin: '10px 0',\n        }}\n        onClick={() => state.addItem()}\n      >\n        Add list item\n      </button>\n\n      <ul class=\"shadow-md rounded\">\n        {state.list.map((item) => (\n          <li\n            class=\"border-gray-200 border-b\"\n            css={{\n              padding: '10px',\n            }}\n          >\n            {item}\n          </li>\n        ))}\n      </ul>\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/show-for-component.lite.tsx",
    "content": "import { For, Show, useStore } from '@builder.io/mitosis';\n\nexport default function ShowForComponent() {\n  const state = useStore({\n    numbers: [1, 2, 3],\n    vowels: ['a', 'e', 'i', 'o', 'u'],\n  });\n\n  return (\n    <div>\n      <Show\n        when={state.numbers}\n        else={<For each={state.vowels}>{(vowel) => <h1>vowel :{vowel}</h1>}</For>}\n      >\n        <For each={state.numbers}>{(number) => <h1>number :{number}</h1>}</For>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/signals/signal-item-list.lite.tsx",
    "content": "import { onMount, Signal, useStore } from '@builder.io/mitosis';\n\ninterface ItemListProps {\n  list: Signal<string[]>;\n}\n\nexport default function SignalItemList(props: ItemListProps) {\n  const state = useStore({\n    someFn() {\n      console.log(props.list, props.list.value[0]);\n      props.list.value[0] = 'hello';\n    },\n  });\n\n  onMount(() => {\n    console.log(props.list, props.list.value[0]);\n  });\n\n  return (\n    <ul class=\"shadow-md rounded\">\n      {props.list.value.map((item) => (\n        <li\n          class=\"border-gray-200 border-b\"\n          css={{\n            padding: '10px',\n          }}\n        >\n          {item}\n          <button onClick={state.someFn}>Click me</button>\n        </li>\n      ))}\n    </ul>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/signals/signal-parent.lite.tsx",
    "content": "import { onMount, useState, useStore } from '@builder.io/mitosis';\nimport SignalItemList from './signal-item-list.lite';\n\nexport default function SignalParent() {\n  const [n] = useState(['123'], { reactive: true });\n\n  const state = useStore({\n    someFn() {\n      console.log(n, n.value);\n      n.value[0] = '123';\n    },\n  });\n\n  onMount(() => {\n    console.log(n, n.value);\n  });\n\n  return (\n    <div>\n      <SignalItemList list={n} />\n      <span>{n.value}</span>\n      <button onClick={state.someFn}>Click me</button>\n      <div title={n.value.toString()} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/special-tags.lite.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function SpecialTags() {\n  const state = useStore({\n    get scriptStr(): string {\n      return `console.log('hello from script tag.')`;\n    },\n    styleStr: '.wrap { background-color: rgb(255, 0, 0); }',\n  });\n  return (\n    <div>\n      <template>\n        <div>Template Tag Div</div>\n      </template>\n      <style data-testid=\"wrap-style\" innerHTML={state.styleStr} />\n      <div className=\"wrap\">red content</div>\n      <script data-testid=\"special-script\" innerHTML={state.scriptStr} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/types/component-with-inside-types.lite.tsx",
    "content": "export type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: 'Sami',\n};\n\nexport default function ComponentWithInsideTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/types/component-with-outside-types.lite.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport type { OutsideProps, OutsideState } from './data';\n\nexport default function ComponentWithOutsideTypes(props: OutsideProps) {\n  const state = useStore<OutsideState>({\n    _text: undefined,\n    handleClick: () => {\n      if (props.onGetClicked) {\n        props.onGetClicked();\n      }\n      if (props.onEnter) {\n        props.onEnter();\n        state._text = 'After';\n      }\n    },\n  });\n\n  return <button onClick={() => state.handleClick()}>{state._text ?? props.text}</button>;\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/components/types/data.ts",
    "content": "export type OutsideProps = {\n  text: string;\n  onGetClicked?: () => void;\n  onEnter?: () => void;\n\n  // any type is a workaround for qwik\n  onGetClicked$?: any;\n  onEnter$?: any;\n};\n\nexport type OutsideState = {\n  _text?: string;\n  handleClick: () => void;\n};\n"
  },
  {
    "path": "e2e/e2e-app/src/homepage.lite.tsx",
    "content": "import { For, onMount, Show, useStore } from '@builder.io/mitosis';\nimport { COMPONENT_PATHS } from './component-paths';\nimport ComponentOnUpdate from './components/component-on-update.lite';\nimport DefaultProps from './components/default-props/use-default-props.lite';\nimport DisabledInput from './components/disabled-input/disabled-input.lite';\nimport NestedParent from './components/nested/nested-parent.lite';\nimport OneComponent from './components/one-component.lite';\nimport ShowForComponent from './components/show-for-component.lite';\nimport SignalParent from './components/signals/signal-parent.lite';\nimport SpecialTags from './components/special-tags.lite';\nimport ComponentWithInsideTypes from './components/types/component-with-inside-types.lite';\nimport ComponentWithOutsideTypes from './components/types/component-with-outside-types.lite';\n\nexport default function Homepage(props: { pathname?: string }) {\n  const state = useStore({\n    pathToUse: '',\n    log: () => {\n      console.log('logging');\n    },\n  });\n\n  onMount(() => {\n    state.pathToUse = props.pathname || window.location.pathname;\n  });\n\n  return (\n    <div>\n      <div>All tests:</div>\n      <ul>\n        <For each={COMPONENT_PATHS}>\n          {(x) => (\n            <li>\n              <a href={x}>{x}</a>\n            </li>\n          )}\n        </For>\n      </ul>\n\n      <Show when={state.pathToUse}>\n        <div>Current Test Component: {state.pathToUse}</div>\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/one-component')}>\n        <OneComponent />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/two-component')}>\n        <NestedParent />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/default-props')}>\n        <DefaultProps bar=\"xyz\" />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/types')}>\n        <ComponentWithInsideTypes name=\"Lorem ipsum\" />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/show-for-component')}>\n        <ShowForComponent />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/special-tags')}>\n        <SpecialTags />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/signals')}>\n        <SignalParent />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/disabled-input')}>\n        <DisabledInput />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/component-on-update')}>\n        <ComponentOnUpdate />\n      </Show>\n\n      <Show when={state.pathToUse.startsWith('/component-with-outside-types')}>\n        <ComponentWithOutsideTypes\n          text=\"Before\"\n          onGetClicked={() => state.log()}\n          onEnter={() => state.log()}\n        />\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "e2e/e2e-app/src/index.ts",
    "content": "export { default as E2eApp } from './homepage.lite';\n"
  },
  {
    "path": "e2e/e2e-app/src/testConfig.ts",
    "content": "export type PackageName =\n  | 'e2e-alpine'\n  | 'e2e-angular'\n  | 'e2e-qwik'\n  | 'e2e-react'\n  | 'e2e-stencil'\n  | 'e2e-solid'\n  | 'e2e-svelte'\n  | 'e2e-vue3';\n"
  },
  {
    "path": "e2e/e2e-app/tests/main.spec.ts",
    "content": "import { expect, Locator, test as playwrightTest } from '@playwright/test';\nimport { PackageName } from '../src/testConfig';\n\nconst test = playwrightTest.extend<{ packageName: PackageName | 'DEFAULT' }>({\n  // this is provided by `playwright.config.ts`\n  packageName: ['DEFAULT', { option: true }],\n});\n\ntest.describe('e2e', () => {\n  test('default props', async ({ page, packageName }) => {\n    // TODO: Some targets don't support `defaultProps` :(\n    if (['e2e-qwik', 'e2e-solid'].includes(packageName)) {\n      test.skip();\n    }\n\n    await page.goto('/default-props/');\n    const text = await page.getByTestId('default-props').textContent();\n\n    expect(text?.includes('abc')).toBeTruthy();\n    expect(text?.includes('xyz')).toBeTruthy();\n  });\n  test('todo list add', async ({ page }) => {\n    await page.goto('/one-component/');\n\n    // await expect(page.locator('li')).toHaveCount(2);\n\n    await page.locator('input').click();\n\n    await page.locator('input').fill('Test Items One');\n\n    await page.locator('text=Add list item').click(); // Add button\n\n    // await expect(page.locator('li')).toHaveCount(3);\n  });\n  test('todo list add - multi component', async ({ page }) => {\n    await page.goto('/two-components/');\n\n    // await expect(page.locator('li')).toHaveCount(2);\n\n    await page.locator('input').click();\n\n    await page.locator('input').fill('Test Items One');\n\n    await page.locator('text=Add list item').click(); // Add button\n\n    // await expect(page.locator('li')).toHaveCount(3);\n  });\n  test('show-for component test', async ({ page, packageName }) => {\n    await page.goto('/show-for-component/');\n\n    let textLocator = 'text=number :';\n    if (['e2e-angular'].includes(packageName)) {\n      // angular adds extra whitespace\n      textLocator += ' ';\n    }\n\n    await expect(page.locator(`${textLocator}1`)).toBeVisible();\n    await expect(page.locator(`${textLocator}2`)).toBeVisible();\n    await expect(page.locator(`${textLocator}3`)).toBeVisible();\n  });\n\n  test.describe('special HTML tags', () => {\n    test('template tag', async ({ page, packageName }) => {\n      await page.goto('/special-tags/');\n\n      await expect(page.locator('template')).toBeDefined();\n    });\n\n    test('script tag', async ({ page, packageName }) => {\n      if (\n        ['e2e-solid', 'e2e-react', 'e2e-angular', 'e2e-qwik', 'e2e-stencil', 'e2e-svelte'].includes(\n          packageName,\n        )\n      ) {\n        test.skip();\n      }\n\n      const consoleMsg: string[] = [];\n      page.on('console', (msg) => consoleMsg.push(msg.text()));\n\n      await page.goto('/special-tags/');\n      await expect(consoleMsg.includes('hello from script tag.')).toBe(true);\n    });\n\n    test('style tag', async ({ page, packageName }) => {\n      if (['e2e-angular'].includes(packageName)) {\n        test.skip();\n      }\n\n      await page.goto('/special-tags/');\n\n      const div = page.locator('.wrap');\n      await expect(div).toHaveCSS('background-color', 'rgb(255, 0, 0)');\n    });\n  });\n\n  test('simple input disabled', async ({ page, packageName }) => {\n    await page.goto('/disabled-input/');\n\n    const disabled = page.getByTestId('simple-input-disabled');\n    await expect(disabled).toBeDisabled();\n\n    const enabled = page.getByTestId('simple-input-enabled');\n    if (['e2e-angular'].includes(packageName)) {\n      // this is the exception for angular it will generate [attr.disabled]\n      // which will be a string, so it is always true\n      await expect(disabled).toBeDisabled();\n    } else {\n      await expect(enabled).toBeEditable();\n    }\n\n    const nativeDisabled = page.getByTestId('native-input-disabled');\n    await expect(nativeDisabled).toBeDisabled();\n\n    const nativeEnabled = page.getByTestId('native-input-enabled');\n    await expect(nativeEnabled).toBeEditable();\n  });\n\n  test('on update', async ({ page, packageName }) => {\n    if (['e2e-solid'].includes(packageName)) {\n      // Angular: We need to split onUpdate to ngOnChanges and for useRef into ngAfterContentChecked\n      test.skip();\n    }\n\n    await page.goto('/component-on-update/');\n\n    const container = page.getByTestId('container');\n    const button = page.getByTestId('button');\n    const labelBefore = await container.getAttribute('aria-label');\n    expect(labelBefore).toEqual('Label: 0');\n\n    await button.click();\n    const labelAfter = await container.getAttribute('aria-label');\n    expect(labelAfter).toEqual('Label: 1');\n  });\n\n  test('component with outside types', async ({ page, packageName }) => {\n    if (['e2e-qwik'].includes(packageName)) {\n      // Qwik: Events are not working as properties\n      test.skip();\n    }\n    await page.goto('/component-with-outside-types/');\n\n    const button: Locator = page.locator('button');\n    await expect(button).toContainText('Before');\n    await button.click();\n    await expect(button).toContainText('After');\n  });\n});\n"
  },
  {
    "path": "e2e/e2e-app/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"strict\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"jsx\": \"preserve\",\n    \"moduleResolution\": \"node\",\n    \"module\": \"ESNext\",\n    \"jsxImportSource\": \"@builder.io/mitosis\",\n    \"skipLibCheck\": true,\n    \"outDir\": \"dist\",\n    \"declaration\": true,\n    \"allowJs\": true\n  },\n  \"include\": [\"src\", \"tests\", \"./playwright.config.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-app/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"CommonJS\",\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true\n  },\n  \"include\": [\"e2e.ts\", \"e2e-output.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/.eslintignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "e2e/e2e-qwikcity/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    es2021: true,\n    node: true,\n  },\n  extends: [\n    'eslint:recommended',\n    'plugin:@typescript-eslint/recommended',\n    'plugin:qwik/recommended',\n  ],\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    tsconfigRootDir: __dirname,\n    project: ['./tsconfig.json'],\n    ecmaVersion: 2021,\n    sourceType: 'module',\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: ['@typescript-eslint'],\n  rules: {\n    '@typescript-eslint/no-explicit-any': 'off',\n    '@typescript-eslint/explicit-module-boundary-types': 'off',\n    '@typescript-eslint/no-inferrable-types': 'off',\n    '@typescript-eslint/no-non-null-assertion': 'off',\n    '@typescript-eslint/no-empty-interface': 'off',\n    '@typescript-eslint/no-namespace': 'off',\n    '@typescript-eslint/no-empty-function': 'off',\n    '@typescript-eslint/no-this-alias': 'off',\n    '@typescript-eslint/ban-types': 'off',\n    '@typescript-eslint/ban-ts-comment': 'off',\n    'prefer-spread': 'off',\n    'no-case-declarations': 'off',\n    'no-console': 'off',\n    '@typescript-eslint/no-unused-vars': ['error'],\n    '@typescript-eslint/consistent-type-imports': 'warn',\n  },\n};\n"
  },
  {
    "path": "e2e/e2e-qwikcity/.gitignore",
    "content": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n\n# Cache\n.cache\n.mf\n.rollup.cache\ntsconfig.tsbuildinfo\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# Editor\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# Yarn\n.yarn/*\n!.yarn/releases\n"
  },
  {
    "path": "e2e/e2e-qwikcity/.prettierignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "e2e/e2e-qwikcity/.vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\"dbaeumer.vscode-eslint\", \"unifiedjs.vscode-mdx\"],\n  \"unwantedRecommendations\": []\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/README.md",
    "content": "# Qwik City App ⚡️\n\n- [Qwik Docs](https://qwik.builder.io/)\n- [Discord](https://qwik.builder.io/chat)\n- [Qwik GitHub](https://github.com/BuilderIO/qwik)\n- [@QwikDev](https://twitter.com/QwikDev)\n- [Vite](https://vitejs.dev/)\n\n---\n\n## Project Structure\n\nThis project is using Qwik with [QwikCity](https://qwik.builder.io/qwikcity/overview/). QwikCity is just a extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.\n\nInside your project, you'll see the following directory structure:\n\n```\n├── public/\n│   └── ...\n└── src/\n    ├── components/\n    │   └── ...\n    └── routes/\n        └── ...\n```\n\n- `src/routes`: Provides the directory based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.builder.io/qwikcity/routing/overview/) for more info.\n\n- `src/components`: Recommended directory for components.\n\n- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info.\n\n## Add Integrations and deployment\n\nUse the `npm run qwik add` command to add additional integrations. Some examples of integrations include: Cloudflare, Netlify or Express server, and the [Static Site Generator (SSG)](https://qwik.builder.io/qwikcity/guides/static-site-generation/).\n\n```shell\nnpm run qwik add # or `yarn qwik add`\n```\n\n## Development\n\nDevelopment mode uses [Vite's development server](https://vitejs.dev/). During development, the `dev` command will server-side render (SSR) the output.\n\n```shell\nnpm start # or `yarn start`\n```\n\n> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build.\n\n## Preview\n\nThe preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to locally preview a production build, and it should not be used as a production server.\n\n```shell\nnpm run preview # or `yarn preview`\n```\n\n## Production\n\nThe production build will generate client and server modules by running both client and server build commands. Additionally, the build command will use Typescript to run a type check on the source code.\n\n```shell\nnpm run build # or `yarn build`\n```\n"
  },
  {
    "path": "e2e/e2e-qwikcity/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-qwik\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"qwik build\",\n    \"build.client\": \"vite build\",\n    \"build.preview\": \"vite build --ssr src/entry.preview.tsx\",\n    \"build.types\": \"tsc --incremental --noEmit\",\n    \"deploy\": \"echo 'Run \\\"npm run qwik add\\\" to install a server adapter'\",\n    \"dev\": \"vite --mode ssr\",\n    \"dev.debug\": \"node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force\",\n    \"fmt\": \"prettier --write .\",\n    \"fmt.check\": \"prettier --check .\",\n    \"lint\": \"eslint \\\"src/**/*.ts*\\\"\",\n    \"preview\": \"qwik build preview && vite preview --open\",\n    \"start\": \"vite --open --mode ssr\",\n    \"serve\": \"yarn start\"\n  },\n  \"dependencies\": {\n    \"@builder.io/e2e-app-qwik\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/qwik\": \"^1.5.5\",\n    \"@builder.io/qwik-city\": \"^1.5.5\",\n    \"@types/eslint\": \"8.21.1\",\n    \"@types/node\": \"^18.14.0\",\n    \"@types/node-fetch\": \"latest\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.13.1\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"eslint\": \"8.35.0\",\n    \"eslint-plugin-qwik\": \"0.21.0\",\n    \"node-fetch\": \"3.3.0\",\n    \"prettier\": \"2.8.4\",\n    \"typescript\": \"^5.3.2\",\n    \"undici\": \"5.20.0\",\n    \"vite\": \"4.1.4\",\n    \"vite-tsconfig-paths\": \"3.5.0\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/project.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-qwik\",\n  \"implicitDependencies\": [\"@builder.io/e2e-app-qwik\", \"!@e2e-app/vue\"]\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/public/manifest.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/web-manifest-combined.json\",\n  \"name\": \"qwik-project-name\",\n  \"short_name\": \"Welcome to Qwik\",\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#fff\",\n  \"description\": \"A Qwik project app.\"\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/public/robots.txt",
    "content": ""
  },
  {
    "path": "e2e/e2e-qwikcity/src/components/header/header.css",
    "content": "header {\n  display: flex;\n  background: white;\n  border-bottom: 10px solid var(--qwik-dark-purple);\n}\n\nheader .logo a {\n  display: inline-block;\n  padding: 10px 10px 7px 20px;\n}\n\nheader ul {\n  margin: 0;\n  padding: 3px 10px 0 0;\n  list-style: none;\n  flex: 1;\n  text-align: right;\n}\n\nheader li {\n  display: inline-block;\n  margin: 0;\n  padding: 0;\n}\n\nheader li a {\n  display: inline-block;\n  padding: 15px 10px;\n  text-decoration: none;\n}\n\nheader li a:hover {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/components/header/header.tsx",
    "content": "import { component$, useStylesScoped$ } from '@builder.io/qwik';\nimport { QwikLogo } from '../icons/qwik';\nimport styles from './header.css?inline';\n\nexport default component$(() => {\n  useStylesScoped$(styles);\n\n  return (\n    <header>\n      <div class=\"logo\">\n        <a href=\"https://qwik.builder.io/\" target=\"_blank\" title=\"qwik\" rel=\"noopener\">\n          <QwikLogo />\n        </a>\n      </div>\n      <ul>\n        <li>\n          <a\n            href=\"https://qwik.builder.io/docs/components/overview/\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Docs\n          </a>\n        </li>\n        <li>\n          <a\n            href=\"https://qwik.builder.io/examples/introduction/hello-world/\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Examples\n          </a>\n        </li>\n        <li>\n          <a\n            href=\"https://qwik.builder.io/tutorial/welcome/overview/\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Tutorials\n          </a>\n        </li>\n      </ul>\n    </header>\n  );\n});\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/components/icons/qwik.tsx",
    "content": "export const QwikLogo = () => (\n  <svg width=\"100\" height=\"35\" viewBox=\"0 0 167 53\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M81.9545 46.5859H75.5513V35.4045C73.4363 36.8579 71.0496 37.5749 68.4884 37.5749C65.0151 37.5749 62.4344 36.6253 60.8239 34.6487C59.2134 32.6915 58.3984 29.2034 58.3984 24.2231C58.3984 19.1266 59.3492 15.5997 61.2702 13.5456C63.23 11.4721 66.3734 10.4644 70.7004 10.4644C74.7946 10.4644 78.5201 11.0264 81.9545 12.131V46.5859ZM75.5513 16.278C74.096 15.8323 72.4661 15.6191 70.7004 15.6191C68.5272 15.6191 66.9749 16.1811 66.1017 17.3244C65.2479 18.4871 64.7823 20.6962 64.7823 23.9712C64.7823 27.0524 65.1897 29.1065 66.0435 30.2304C66.8973 31.335 68.3719 31.897 70.5452 31.897C73.3781 31.897 75.5513 30.7343 75.5513 29.2809V16.278Z\"\n      fill=\"black\"\n    />\n    <path\n      d=\"M91.133 11.1426C93.4033 17.4406 95.3242 23.7386 96.993 30.0948C99.205 23.5836 101.087 17.2856 102.542 11.1426H108.15C110.265 17.4406 112.031 23.7386 113.447 30.0948C115.97 23.196 117.949 16.8787 119.404 11.1426H125.71C123.033 20.173 120.064 28.777 116.785 36.8966H109.256C108.402 32.3039 107.044 26.7617 105.22 20.1536C104.056 25.2889 102.445 30.8893 100.33 36.8966H92.8018C90.2793 27.5174 87.5434 18.9522 84.6328 11.1426H91.133Z\"\n      fill=\"black\"\n    />\n    <path\n      d=\"M132.832 7.55758C129.999 7.55758 129.203 6.85996 129.203 3.97257C129.203 1.39523 130.018 0.794495 132.832 0.794495C135.665 0.794495 136.46 1.39523 136.46 3.97257C136.46 6.85996 135.665 7.55758 132.832 7.55758ZM129.649 11.1426H136.053V36.8966H129.649V11.1426Z\"\n      fill=\"black\"\n    />\n    <path\n      d=\"M166.303 11.1426C161.763 17.5956 158.581 21.5295 156.815 22.9441C158.27 23.8937 162.17 28.8933 167.002 36.916H159.628C153.613 27.7887 150.742 23.8549 149.325 23.2542V36.916H142.922V0H149.325V23.2348C150.78 22.169 153.963 18.1382 158.872 11.1426H166.303Z\"\n      fill=\"black\"\n    />\n    <path\n      d=\"M40.973 52.5351L32.0861 43.6985L31.9503 43.7179V43.621L13.0511 24.9595L17.708 20.4637L14.9721 4.76715L1.99103 20.8513C-0.220992 23.0798 -0.628467 26.7036 0.962635 29.3778L9.07337 42.8265C10.3152 44.9 12.566 46.1402 14.9915 46.1208L19.0081 46.082L40.973 52.5351Z\"\n      fill=\"#18B6F6\"\n    />\n    <path\n      d=\"M45.8232 20.5411L44.038 17.2468L43.1066 15.5609L42.738 14.902L42.6992 14.9408L37.8094 6.47238C36.587 4.34075 34.2974 3.02301 31.8137 3.04239L27.5255 3.15865L14.7384 3.19741C12.313 3.21679 10.101 4.49577 8.87853 6.56927L1.09766 21.9945L15.0101 4.72831L33.2496 24.7656L30.0091 28.0406L31.9495 43.7178L31.9689 43.679V43.7178H31.9301L31.9689 43.7565L33.4824 45.2293L40.8364 52.4187C41.1469 52.7094 41.6514 52.3606 41.4379 51.9924L36.8975 43.0589L44.8142 28.4282L45.0664 28.1375C45.1634 28.0212 45.2604 27.905 45.3381 27.7887C46.8904 25.6764 47.1038 22.8472 45.8232 20.5411Z\"\n      fill=\"#AC7EF4\"\n    />\n    <path\n      d=\"M33.3076 24.6882L15.0099 4.74774L17.61 20.3668L12.9531 24.882L31.9105 43.6985L30.203 28.0794L33.3076 24.6882Z\"\n      fill=\"white\"\n    />\n  </svg>\n);\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/components/router-head/router-head.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { useDocumentHead, useLocation } from '@builder.io/qwik-city';\n\n/**\n * The RouterHead component is placed inside of the document `<head>` element.\n */\nexport const RouterHead = component$(() => {\n  const head = useDocumentHead();\n  const loc = useLocation();\n\n  return (\n    <>\n      <title>{head.title}</title>\n\n      <link rel=\"canonical\" href={loc.url.href} />\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n      <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />\n\n      {head.meta.map((m) => (\n        <meta {...m} />\n      ))}\n\n      {head.links.map((l) => (\n        <link {...l} />\n      ))}\n\n      {head.styles.map((s) => (\n        <style {...s.props} dangerouslySetInnerHTML={s.style} />\n      ))}\n    </>\n  );\n});\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/entry.dev.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * Development entry point using only client-side modules:\n * - Do not use this mode in production!\n * - No SSR\n * - No portion of the application is pre-rendered on the server.\n * - All of the application is running eagerly in the browser.\n * - More code is transferred to the browser than in SSR mode.\n * - Optimizer/Serialization/Deserialization code is not exercised!\n */\nimport { render, type RenderOptions } from '@builder.io/qwik';\nimport Root from './root';\n\nexport default function (opts: RenderOptions) {\n  return render(document, <Root />, opts);\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/entry.preview.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the bundle entry point for `npm run preview`.\n * That is, serving your app built in production mode.\n *\n * Feel free to modify this file, but don't remove it!\n *\n * Learn more about Vite's preview command:\n * - https://vitejs.dev/config/preview-options.html#preview-options\n *\n */\nimport { createQwikCity } from '@builder.io/qwik-city/middleware/node';\nimport qwikCityPlan from '@qwik-city-plan';\nimport render from './entry.ssr';\n\n/**\n * The default export is the QwikCity adapter used by Vite preview.\n */\nexport default createQwikCity({ render, qwikCityPlan });\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/entry.ssr.tsx",
    "content": "/**\n * WHAT IS THIS FILE?\n *\n * SSR entry point, in all cases the application is render outside the browser, this\n * entry point will be the common one.\n *\n * - Server (express, cloudflare...)\n * - npm run start\n * - npm run preview\n * - npm run build\n *\n */\nimport { renderToStream, type RenderToStreamOptions } from '@builder.io/qwik/server';\nimport { manifest } from '@qwik-client-manifest';\nimport Root from './root';\n\nexport default function (opts: RenderToStreamOptions) {\n  return renderToStream(<Root />, {\n    manifest,\n    ...opts,\n    // Use container attributes to set attributes on the html tag.\n    containerAttributes: {\n      lang: 'en-us',\n      ...opts.containerAttributes,\n    },\n  });\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/global.css",
    "content": "/**\n * WHAT IS THIS FILE?\n *\n * Globally applied styles. No matter which components are in the page or matching route,\n * the styles in here will be applied to the Document, without any sort of CSS scoping.\n *\n */\n\n:root {\n  --qwik-dark-blue: #006ce9;\n  --qwik-light-blue: #18b6f6;\n  --qwik-light-purple: #ac7ff4;\n  --qwik-dark-purple: #713fc2;\n}\n\nbody {\n  background-color: #fafafa;\n  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;\n  padding: 20px 20px 40px 20px;\n}\n\nmain {\n  max-width: 760px;\n  margin: 0 auto;\n  background-color: white;\n  border-radius: 5px;\n  box-shadow: 0px 0px 130px -50px var(--qwik-light-purple);\n  overflow: hidden;\n}\n\nh1,\nh2 {\n  margin: 0 0 5px 0;\n}\n\n.lightning {\n  filter: hue-rotate(180deg);\n}\n\nsection {\n  padding: 20px;\n  border-bottom: 10px solid var(--qwik-dark-blue);\n}\n\nul {\n  list-style-type: square;\n  margin: 5px 0 30px 0;\n  padding-left: 25px;\n}\n\nli {\n  padding: 8px 0;\n}\n\nli::marker {\n  color: var(--qwik-light-blue);\n}\n\na,\na:visited {\n  color: var(--qwik-dark-blue);\n}\n\na:hover {\n  text-decoration: none;\n}\n\ntable.commands {\n  margin: 0 0 30px 0;\n}\n\n.commands td {\n  padding: 5px;\n}\n\n.commands td:first-child {\n  white-space: nowrap;\n  padding-right: 20px;\n}\n\ncode {\n  font-family: Menlo, Monaco, Courier New, monospace;\n  font-size: 0.9em;\n  background-color: rgb(224, 224, 224);\n  padding: 2px 4px;\n  border-radius: 3px;\n  border-bottom: 2px solid #bfbfbf;\n}\n\nfooter {\n  padding: 15px;\n  text-align: center;\n  font-size: 0.8em;\n}\n\nfooter a {\n  text-decoration: none;\n}\n\nfooter a:hover {\n  text-decoration: underline;\n}\n\na.mindblow,\na.todolist {\n  margin: 10px auto;\n  display: block;\n  background: var(--qwik-dark-purple);\n  padding: 10px 20px 14px;\n  border-radius: 10px;\n  border: 0;\n  color: white;\n  text-decoration: none;\n  font-size: 20px;\n  width: fit-content;\n  box-shadow: inset 0px -4px 0px black;\n  cursor: url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='48' viewport='0 0 100 100' style='fill:black;font-size:24px;'><text y='50%'>🤯</text></svg>\")\n      16 0,\n    auto; /*!emojicursor.app*/\n}\n\na.mindblow:hover,\na.todolist:hover {\n  box-shadow: inset 0px 4px 0px white;\n  padding: 14px 20px 10px;\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/root.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { QwikCityProvider, RouterOutlet, ServiceWorkerRegister } from '@builder.io/qwik-city';\nimport { RouterHead } from './components/router-head/router-head';\n\nimport './global.css';\n\nexport default component$(() => {\n  /**\n   * The root of a QwikCity site always start with the <QwikCityProvider> component,\n   * immediately followed by the document's <head> and <body>.\n   *\n   * Dont remove the `<head>` and `<body>` elements.\n   */\n\n  return (\n    <QwikCityProvider>\n      <head>\n        <meta charSet=\"utf-8\" />\n        <link rel=\"manifest\" href=\"/manifest.json\" />\n        <RouterHead />\n      </head>\n      <body lang=\"en\">\n        <RouterOutlet />\n        <ServiceWorkerRegister />\n      </body>\n    </QwikCityProvider>\n  );\n});\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/routes/[...index]/index.tsx",
    "content": "import { E2eApp } from '@builder.io/e2e-app-qwik';\nimport { component$ } from '@builder.io/qwik';\nimport { useLocation } from '@builder.io/qwik-city';\n\nexport interface MainProps {\n  url: string;\n}\nexport default component$(() => {\n  const { url } = useLocation();\n\n  return <E2eApp pathname={url.pathname} />;\n});\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/routes/layout.tsx",
    "content": "import { component$, Slot } from '@builder.io/qwik';\nimport { routeLoader$ } from '@builder.io/qwik-city';\n\nimport Header from '../components/header/header';\n\nexport const useServerTimeLoader = routeLoader$(() => {\n  return {\n    date: new Date().toISOString(),\n  };\n});\n\nexport default component$(() => {\n  const serverTime = useServerTimeLoader();\n  return (\n    <>\n      <main>\n        <Header />\n        <section>\n          <Slot />\n        </section>\n      </main>\n      <footer>\n        <a href=\"https://www.builder.io/\" target=\"_blank\">\n          Made with ♡ by Builder.io\n          <div>{serverTime.value.date}</div>\n        </a>\n      </footer>\n    </>\n  );\n});\n"
  },
  {
    "path": "e2e/e2e-qwikcity/src/routes/service-worker.ts",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * The service-worker.ts file is used to have state of the art prefetching.\n * https://qwik.builder.io/qwikcity/prefetching/overview/\n *\n * Qwik uses a service worker to speed up your site and reduce latency, ie, not used in the traditional way of offline.\n * You can also use this file to add more functionality that runs in the service worker.\n */\nimport { setupServiceWorker } from '@builder.io/qwik-city/service-worker';\n\nsetupServiceWorker();\n\naddEventListener('install', () => self.skipWaiting());\n\naddEventListener('activate', () => self.clients.claim());\n\ndeclare const self: ServiceWorkerGlobalScope;\n"
  },
  {
    "path": "e2e/e2e-qwikcity/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2020\",\n    \"lib\": [\"es2020\", \"DOM\", \"WebWorker\", \"DOM.Iterable\"],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@builder.io/qwik\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"incremental\": true,\n    \"isolatedModules\": true,\n    \"outDir\": \"tmp\",\n    \"noEmit\": true,\n    \"types\": [\"node\", \"vite/client\"],\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"files\": [\"./.eslintrc.cjs\"],\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "e2e/e2e-qwikcity/vite.config.ts",
    "content": "import { qwikCity } from '@builder.io/qwik-city/vite';\nimport { qwikVite } from '@builder.io/qwik/optimizer';\nimport { defineConfig } from 'vite';\nimport tsconfigPaths from 'vite-tsconfig-paths';\n\nexport default defineConfig(() => {\n  return {\n    plugins: [qwikCity(), qwikVite(), tsconfigPaths()],\n    preview: {\n      headers: {\n        'Cache-Control': 'public, max-age=600',\n      },\n    },\n  };\n});\n"
  },
  {
    "path": "e2e/e2e-react/.gitignore",
    "content": "dist-ssr\n"
  },
  {
    "path": "e2e/e2e-react/README.md",
    "content": "# E2E test harness for React\n\n\"Yarn workspaces\" uses its understanding of the build graph in a limited way, so\nto recompile and run just this set of E2E tests, you can run these commands at\nthe project root:\n\n```bash\nyarn workspace @builder.io/e2e-app run build\nyarn workspace @builder.io/e2e-react run build\nyarn workspace @builder.io/e2e-react run e2e\n```\n"
  },
  {
    "path": "e2e/e2e-react/index.html",
    "content": "<!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>Vite App</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-react/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-react\",\n  \"private\": true,\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"tsc && vite build\",\n    \"dev\": \"vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^18.0.14\",\n    \"@types/react-dom\": \"^18.0.5\",\n    \"@vitejs/plugin-react\": \"^1.3.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-react/project.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-react\",\n  \"targets\": {\n    \"build\": {\n      \"executor\": \"nx:run-commands\",\n      \"options\": {\n        \"cwd\": \"./e2e/e2e-react\",\n        \"command\": \"yarn build\"\n      },\n      \"inputs\": [\"{workspaceRoot}/e2e/e2e-app/output/react/src\"],\n      \"outputs\": [\"{projectRoot}/dist\"]\n    }\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-react/src/App.tsx",
    "content": "// Mitosis output for not yet include .d.ts, so ignore the types when importing.\n// Trigger nx remote cache: 3\n// @ts-ignore\nimport { E2eApp } from '@builder.io/e2e-app/react';\n\nfunction App() {\n  return <E2eApp pathname={window.location.pathname} />;\n}\n\nexport default App;\n"
  },
  {
    "path": "e2e/e2e-react/src/main.tsx",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n);\n"
  },
  {
    "path": "e2e/e2e-react/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "e2e/e2e-react/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ESNext\"],\n    \"allowJs\": false,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\"\n  },\n  \"include\": [\"src\", \"src/**/*.tsx\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "e2e/e2e-react/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-react/vite.config.ts",
    "content": "import react from '@vitejs/plugin-react';\nimport { defineConfig } from 'vite';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react()],\n});\n"
  },
  {
    "path": "e2e/e2e-solid/.gitignore",
    "content": "# Leftover in some developer workspaces\nsolid_src\n"
  },
  {
    "path": "e2e/e2e-solid/README.md",
    "content": "# E2E test harness for Solid\n\n\"Yarn workspaces\" uses its understanding of the build graph in a limited way, so\nto recompile and run just this set of E2E tests, you can run these commands at\nthe project root:\n\n```bash\nyarn workspace @builder.io/e2e-app run build\nyarn workspace @builder.io/e2e-solid run build\nyarn workspace @builder.io/e2e-solid run e2e\n```\n"
  },
  {
    "path": "e2e/e2e-solid/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <link rel=\"shortcut icon\" type=\"image/ico\" href=\"/src/assets/favicon.ico\" />\n    <title>Solid App</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"root\"></div>\n\n    <script src=\"/src/index.tsx\" type=\"module\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-solid/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-solid\",\n  \"private\": true,\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"vite build\",\n    \"dev\": \"vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\",\n    \"solid-js\": \"^1.4.5\",\n    \"solid-styled-components\": \"^0.28.4\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^3.0.2\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\",\n    \"vite-plugin-solid\": \"^2.2.6\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-solid/src/App.tsx",
    "content": "// @ts-ignore\nimport { E2eApp } from '@builder.io/e2e-app/solid';\nimport type { Component } from 'solid-js';\n\nconst App: Component = () => {\n  return <E2eApp />;\n};\n\nexport default App;\n"
  },
  {
    "path": "e2e/e2e-solid/src/index.tsx",
    "content": "/* @refresh reload */\nimport { render } from 'solid-js/web';\n\nimport App from './App';\n\nrender(() => <App />, document.getElementById('root') as HTMLElement);\n"
  },
  {
    "path": "e2e/e2e-solid/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"node\",\n    \"allowSyntheticDefaultImports\": true,\n    \"esModuleInterop\": true,\n    \"jsx\": \"preserve\",\n    \"jsxImportSource\": \"solid-js\",\n    \"types\": [\"vite/client\"],\n    \"noEmit\": true,\n    \"isolatedModules\": true\n  },\n  \"include\": [\"src/**/*.ts\", \"src/**/*.d.ts\", \"src/**/*.tsx\"]\n}\n"
  },
  {
    "path": "e2e/e2e-solid/vite.config.ts",
    "content": "import { defineConfig } from 'vite';\nimport solidPlugin from 'vite-plugin-solid';\n\nexport default defineConfig({\n  plugins: [solidPlugin()],\n  build: {\n    target: 'esnext',\n    polyfillDynamicImport: false,\n  },\n});\n"
  },
  {
    "path": "e2e/e2e-stencil/.editorconfig",
    "content": "# http://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "e2e/e2e-stencil/.gitignore",
    "content": "dist/\nwww/\nloader/\n\n*~\n*.sw[mnpcod]\n*.log\n*.lock\n*.tmp\n*.tmp.*\nlog.txt\n*.sublime-project\n*.sublime-workspace\n\n.stencil/\n.idea/\n.vscode/\n.sass-cache/\n.versions/\nnode_modules/\n$RECYCLE.BIN/\n\n.DS_Store\nThumbs.db\nUserInterfaceState.xcuserstate\n.env\n"
  },
  {
    "path": "e2e/e2e-stencil/.prettierrc.json",
    "content": "{\n  \"arrowParens\": \"avoid\",\n  \"bracketSpacing\": true,\n  \"jsxBracketSameLine\": false,\n  \"jsxSingleQuote\": false,\n  \"quoteProps\": \"consistent\",\n  \"printWidth\": 180,\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"all\",\n  \"useTabs\": false\n}\n"
  },
  {
    "path": "e2e/e2e-stencil/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "e2e/e2e-stencil/components.d.ts",
    "content": "/* eslint-disable */\n/* tslint:disable */\n/**\n * This is an autogenerated file created by the Stencil compiler.\n * It contains typing information for all components that exist in this project.\n */\nexport namespace Components {}\ndeclare global {\n  interface HTMLElementTagNameMap {}\n}\ndeclare namespace LocalJSX {\n  interface IntrinsicElements {}\n}\nexport { LocalJSX as JSX };\ndeclare module '@stencil/core' {\n  export namespace JSX {\n    interface IntrinsicElements {}\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-stencil/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-stencil\",\n  \"description\": \"Stencil Component Starter\",\n  \"main\": \"dist/index.cjs.js\",\n  \"module\": \"dist/index.js\",\n  \"types\": \"dist/types/index.d.ts\",\n  \"collection\": \"dist/collection/collection-manifest.json\",\n  \"collection:main\": \"dist/collection/index.js\",\n  \"unpkg\": \"dist/e2e-stencil/e2e-stencil.esm.js\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/e2e-stencil/e2e-stencil.esm.js\",\n      \"require\": \"./dist/e2e-stencil/e2e-stencil.cjs.js\"\n    },\n    \"./my-component\": {\n      \"import\": \"./dist/components/my-component.js\",\n      \"types\": \"./dist/components/my-component.d.ts\"\n    },\n    \"./loader\": {\n      \"import\": \"./loader/index.js\",\n      \"require\": \"./loader/index.cjs\",\n      \"types\": \"./loader/index.d.ts\"\n    }\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/ionic-team/stencil-component-starter.git\"\n  },\n  \"files\": [\n    \"dist/\",\n    \"loader/\"\n  ],\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"stencil build\",\n    \"serve\": \"stencil build --watch --serve --no-open\"\n  },\n  \"devDependencies\": {\n    \"@stencil/core\": \"^4.7.0\",\n    \"@types/node\": \"^16.18.11\",\n    \"rimraf\": \"^3.0.2\"\n  },\n  \"license\": \"MIT\",\n  \"private\": true\n}\n"
  },
  {
    "path": "e2e/e2e-stencil/stencil.config.ts",
    "content": "import { Config } from '@stencil/core';\n\nexport const config: Config = {\n  namespace: 'e2e-stencil',\n  srcDir: '../e2e-app/output/stencil',\n  excludeUnusedDependencies: true,\n  outputTargets: [\n    {\n      type: 'dist',\n      esmLoaderPath: '../loader',\n    },\n    {\n      type: 'dist-custom-elements',\n      customElementsExportBehavior: 'auto-define-custom-elements',\n      externalRuntime: false,\n    },\n    {\n      type: 'docs-readme',\n    },\n    {\n      type: 'www',\n      serviceWorker: null, // disable service workers\n    },\n  ],\n  testing: {\n    browserHeadless: 'new',\n  },\n};\n"
  },
  {
    "path": "e2e/e2e-stencil/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"allowUnreachableCode\": false,\n    \"declaration\": false,\n    \"experimentalDecorators\": true,\n    \"lib\": [\"dom\", \"es2017\"],\n    \"moduleResolution\": \"node\",\n    \"module\": \"esnext\",\n    \"target\": \"es2017\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"jsx\": \"react\",\n    \"jsxFactory\": \"h\"\n  },\n  \"include\": [\"../e2e-app/output/stencil\"],\n  \"exclude\": [\"node_modules\", \"../e2e-app/output/stencil/src/index.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-svelte/.gitignore",
    "content": "dist-ssr\n"
  },
  {
    "path": "e2e/e2e-svelte/README.md",
    "content": "# E2E test harness for Svelte\n\n\"Yarn workspaces\" uses its understanding of the build graph in a limited way, so\nto recompile and run just this set of E2E tests, you can run these commands at\nthe project root:\n\n```bash\nyarn workspace @builder.io/e2e-app run build\nyarn workspace @builder.io/e2e-svelte run build\nyarn workspace @builder.io/e2e-svelte run e2e\n```\n"
  },
  {
    "path": "e2e/e2e-svelte/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" href=\"/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Svelte + TS + Vite App</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"/src/main.ts\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-svelte/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-svelte\",\n  \"private\": true,\n  \"scripts\": {\n    \"clean\": \"rimraf dist\",\n    \"build\": \"yarn run check && vite build\",\n    \"check\": \"svelte-check --tsconfig ./tsconfig.json\",\n    \"dev\": \"vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@builder.io/e2e-app\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"@sveltejs/vite-plugin-svelte\": \"^1.0.0-next.49\",\n    \"@tsconfig/svelte\": \"^3.0.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"svelte\": \"^3.48.0\",\n    \"svelte-check\": \"^2.8.0\",\n    \"svelte-preprocess\": \"^5.0.3\",\n    \"tslib\": \"^2.4.0\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-svelte/src/App.svelte",
    "content": "<script lang=\"ts\">\n  // @ts-ignore\n  import E2eApp from '@builder.io/e2e-app/svelte';\n</script>\n\n<E2eApp />\n"
  },
  {
    "path": "e2e/e2e-svelte/src/main.ts",
    "content": "import App from './App.svelte';\n\nconst app = new App({\n  target: document.getElementById('app'),\n});\n\nexport default app;\n"
  },
  {
    "path": "e2e/e2e-svelte/src/vite-env.d.ts",
    "content": "/// <reference types=\"svelte\" />\n/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "e2e/e2e-svelte/svelte.config.mjs",
    "content": "import sveltePreprocess from 'svelte-preprocess';\n\nexport default {\n  // Consult https://github.com/sveltejs/svelte-preprocess\n  // for more information about preprocessors\n  preprocess: sveltePreprocess(),\n};\n"
  },
  {
    "path": "e2e/e2e-svelte/tsconfig.json",
    "content": "{\n  \"extends\": \"@tsconfig/svelte/tsconfig.json\",\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"useDefineForClassFields\": true,\n    \"module\": \"esnext\",\n    \"resolveJsonModule\": true,\n    \"baseUrl\": \".\",\n    /**\n     * Typecheck JS in `.svelte` and `.js` files by default.\n     * Disable checkJs if you'd like to use dynamic types in JS.\n     * Note that setting allowJs false does not prevent the use\n     * of JS in `.svelte` files.\n     */\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"isolatedModules\": true\n  },\n  \"include\": [\"src/**/*.d.ts\", \"src/**/*.ts\", \"src/**/*.js\", \"src/**/*.svelte\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "e2e/e2e-svelte/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-svelte/vite.config.ts",
    "content": "import { svelte } from '@sveltejs/vite-plugin-svelte';\nimport { defineConfig } from 'vite';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [svelte()],\n});\n"
  },
  {
    "path": "e2e/e2e-vue3/.gitignore",
    "content": "# Leftover from a previous version on some devs' workspaces\nvue_src\nsrc/components\n"
  },
  {
    "path": "e2e/e2e-vue3/README.md",
    "content": "# E2E test harness for Vue 3\n\n\"Yarn workspaces\" uses its understanding of the build graph in a limited way, so\nto recompile and run just this set of E2E tests, you can run these commands at\nthe project root:\n\n```bash\nyarn workspace @builder.io/e2e-app run build\nyarn workspace @builder.io/e2e-vue3 run build\nyarn workspace @builder.io/e2e-vue3 run e2e\n```\n\nThis test harness copies the source output from the e2e-app project, because\nthat project emits Vue source code, rather than the compiled format suitable for\nconsumption via node_modules. While it is surely possible to consume .vue files\nfrom node_modules, that isn't idiomatic and simple attempt yield\npartially-broken components.\n"
  },
  {
    "path": "e2e/e2e-vue3/index.html",
    "content": "<!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>Vite App</title>\n  </head>\n  <body>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"/src/main.ts\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "e2e/e2e-vue3/package.json",
    "content": "{\n  \"name\": \"@builder.io/e2e-vue3\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"vue-tsc --noEmit && vite build\",\n    \"dev\": \"vue-tsc --noEmit && vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@e2e-app/vue\": \"workspace:*\",\n    \"vue\": \"^3.2.37\"\n  },\n  \"devDependencies\": {\n    \"@vitejs/plugin-vue\": \"^2.3.3\",\n    \"@vue/devtools\": \"^6.5.0\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\",\n    \"vue-tsc\": \"^1.8.22\"\n  }\n}\n"
  },
  {
    "path": "e2e/e2e-vue3/src/App.vue",
    "content": "<script setup>\nimport { E2eApp } from '@e2e-app/vue/vue3';\n</script>\n\n<template>\n  <E2eApp></E2eApp>\n</template>\n"
  },
  {
    "path": "e2e/e2e-vue3/src/assets/.gitkeep",
    "content": ""
  },
  {
    "path": "e2e/e2e-vue3/src/env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n\ndeclare module '*.vue' {\n  import type { DefineComponent } from 'vue';\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types\n  const component: DefineComponent<{}, {}, any>;\n  export default component;\n}\n"
  },
  {
    "path": "e2e/e2e-vue3/src/main.ts",
    "content": "import { createApp } from 'vue';\nimport App from './App.vue';\n\ncreateApp(App).mount('#app');\n"
  },
  {
    "path": "e2e/e2e-vue3/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"useDefineForClassFields\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    \"allowJs\": true,\n    \"sourceMap\": true,\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"esModuleInterop\": true,\n    \"lib\": [\"esnext\", \"dom\"],\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"src/**/*.ts\", \"src/**/*.d.ts\", \"src/**/*.tsx\", \"src/**/*.vue\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "e2e/e2e-vue3/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "e2e/e2e-vue3/vite.config.ts",
    "content": "import vue from '@vitejs/plugin-vue';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  plugins: [vue()],\n  server: {\n    host: 'localhost',\n    strictPort: true,\n  },\n  resolve: {\n    // Vue 3 monorepo workaround:\n    // https://github.com/vitejs/vite/issues/2446\n    dedupe: ['vue'],\n  },\n});\n"
  },
  {
    "path": "examples/basic/.eslintignore",
    "content": "node_modules\noutput/\n"
  },
  {
    "path": "examples/basic/.eslintrc.js",
    "content": "module.exports = {\n  env: {\n    browser: true,\n    es2021: true,\n  },\n  extends: [\n    'eslint:recommended',\n    'plugin:@typescript-eslint/recommended',\n    'plugin:@builder.io/mitosis/recommended',\n  ],\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    ecmaFeatures: {\n      jsx: true,\n    },\n    ecmaVersion: 'latest',\n    sourceType: 'module',\n  },\n  plugins: ['@typescript-eslint', '@builder.io/mitosis'],\n};\n"
  },
  {
    "path": "examples/basic/.gitignore",
    "content": "output"
  },
  {
    "path": "examples/basic/.prettierignore",
    "content": "node_modules\noutput\n"
  },
  {
    "path": "examples/basic/.prettierrc",
    "content": "{\n  \"semi\": true,\n  \"singleQuote\": true\n}\n"
  },
  {
    "path": "examples/basic/README.md",
    "content": "# Example Mitosis project\n\n### Setup\n\n```bash\n# install\nyarn install\n\n# build\nyarn run build\n\n# run dev server that watches for changes\nyarn run start\n\n# test\nyarn run test\n```\n\n### Project structure\n\nHere are some key things to look at:\n\n- `src` contains your Mitosis source code\n- `output` contains per-target output of the project\n  - You will notice `.lite.tsx` files _in_ your output. Those are a human-readable Mitosis components. Think of them as a reference point for you to debug more easily, since the actual JS output is minified and thus difficult to read.\n- `mitosis.config.js` contains general and per-target configuration. It is used by `mitosis build`.\n- `overrides` contains a per-target folder that mimicks the structure of `src`, and will completely swap out any files with identical names. Example: since we have defined `overrides/react-native/src/functions/is-react-native.ts`, it will override `src/functions/is-react-native.ts` in `output/react-native/src/functions/is-react-native.js`\n"
  },
  {
    "path": "examples/basic/mitosis.config.js",
    "content": "const seedrandom = require('seedrandom');\nconst rng = seedrandom('vue-sdk-seed');\n\nconst getSeededId = () => {\n  const rngVal = rng();\n  return Number(String(rngVal).split('.')[1]).toString(36);\n};\n\nmodule.exports = {\n  files: 'src/**',\n  targets: ['reactNative', 'vue'],\n  options: {\n    vue: {\n      cssNamespace: getSeededId,\n    },\n  },\n};\n"
  },
  {
    "path": "examples/basic/overrides/react-native/src/blocks/image.tsx",
    "content": "import { Image as ReactImage, View } from 'react-native';\n\n// Subset of Image props, many are irrelevant for native (such as altText, etc)\nexport interface ImageProps {\n  image: string;\n  backgroundSize?: 'cover' | 'contain';\n  backgroundPosition?: string;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n}\n\nexport default function Image(props: ImageProps) {\n  return props.aspectRatio ? (\n    <View style={{ position: 'relative' }}>\n      <ReactImage\n        resizeMode={props.backgroundSize || 'contain'}\n        style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0 }}\n        source={{ uri: props.image }}\n      />\n      <View\n        style={{\n          width: '100%',\n          paddingTop: props.aspectRatio * 100 + '%',\n        }}\n      />\n    </View>\n  ) : (\n    <ReactImage\n      resizeMode={props.backgroundSize || 'contain'}\n      style={{\n        position: 'relative',\n        ...(props.width ? { width: props.width } : {}),\n        ...(props.height ? { height: props.height } : {}),\n      }}\n      source={{ uri: props.image }}\n    />\n  );\n}\n"
  },
  {
    "path": "examples/basic/overrides/react-native/src/components/error-boundary.tsx",
    "content": "import React from 'react';\nimport { Text } from 'react-native';\n\n// Still has to be a class component :(\n// https://reactjs.org/docs/error-boundaries.html#introducing-error-boundaries\nexport default class ErrorBoundary extends React.Component<any, any> {\n  constructor(props) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(error) {\n    return { hasError: true };\n  }\n\n  componentDidCatch(error, errorInfo) {\n    console.error('Error rendering', error, errorInfo);\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return <Text style={{ color: 'gray' }}>Error rendering block</Text>;\n    }\n\n    return this.props.children;\n  }\n}\n"
  },
  {
    "path": "examples/basic/overrides/react-native/src/functions/is-react-native.ts",
    "content": "export function isReactNative(): boolean {\n  return true;\n}\n"
  },
  {
    "path": "examples/basic/overrides/react-native/src/index-helpers/top-of-file.ts",
    "content": "// example of overriding a no-op file to provide framework-specific functionality\n// in this case, providing a polyfill for URL in react-native environments.\nimport 'react-native-url-polyfill/auto';\n"
  },
  {
    "path": "examples/basic/overrides/vue/src/components/error-boundary.vue",
    "content": "<script>\nexport default {\n  name: 'ErrorBoundary',\n  data: () => ({\n    error: false,\n  }),\n  errorCaptured(err, vm, info) {\n    console.error('Error in Builder.io block:', error);\n    this.error = true;\n  },\n  render(h) {\n    return this.error\n      ? h('p', 'Builder.io render error')\n      : this.$slots.default[0];\n  },\n};\n</script>\n"
  },
  {
    "path": "examples/basic/package.json",
    "content": "{\n  \"name\": \"@builder.io/basic-example\",\n  \"private\": true,\n  \"scripts\": {\n    \"mitosis\": \"mitosis build\",\n    \"build\": \"yarn run mitosis\",\n    \"start\": \"watch 'yarn run mitosis' ./src ./overrides\"\n  },\n  \"dependencies\": {\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"@builder.io/mitosis-cli\": \"workspace:*\",\n    \"node-fetch\": \"^2.6.1\",\n    \"seedrandom\": \"^3.0.5\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/eslint-plugin-mitosis\": \"workspace:*\",\n    \"@types/node-fetch\": \"^2.5.12\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.13.1\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"eslint\": \"^8.17.0\",\n    \"prettier\": \"^2.5.0\",\n    \"typescript\": \"^5.3.2\",\n    \"watch\": \"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "examples/basic/src/blocks/button.lite.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <Show\n      when={props.link}\n      else={<span {...props.attributes}>{props.text}</span>}\n    >\n      <a\n        {...props.attributes}\n        role=\"button\"\n        href={props.link}\n        target={props.openLinkInNewTab ? '_blank' : undefined}\n      >\n        {props.text}\n      </a>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "examples/basic/src/blocks/image.lite.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport interface ImageProps {\n  classProp?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string;\n  srcset?: string;\n  aspectRatio?: number;\n  children?: any;\n  fitContent?: boolean;\n}\n\nexport default function Image(props: ImageProps) {\n  return (\n    <div css={{ position: 'relative' }}>\n      <picture>\n        <img\n          loading=\"lazy\"\n          alt={props.altText}\n          aria-role={props.altText ? 'presentation' : undefined}\n          css={{\n            opacity: '1',\n            transition: 'opacity 0.2s ease-in-out',\n            position: 'absolute',\n            height: '100%',\n            width: '100%',\n            top: '0px',\n            left: '0px',\n          }}\n          style={{\n            objectPosition: props.backgroundSize || 'center',\n            objectFit: (props.backgroundSize as any) || 'cover',\n          }}\n          class={'class-image' + (props.classProp ? ' ' + props.classProp : '')}\n          src={props.image}\n          // TODO: memoize on image on client\n          srcset={props.srcset}\n          sizes={props.sizes}\n        />\n        <source srcSet={props.srcset} />\n      </picture>\n      {props.aspectRatio && (\n        <div\n          style={{\n            paddingTop: props.aspectRatio * 100 + '%',\n          }}\n          css={{\n            width: '100%',\n            pointerEvents: 'none',\n            fontSize: '0',\n          }}\n        >\n          {' '}\n        </div>\n      )}\n\n      <Show when={!props.fitContent}>\n        <div\n          css={{\n            display: 'flex',\n            flexDirection: 'column',\n            alignItems: 'stretch',\n            position: 'absolute',\n            top: '0',\n            left: '0',\n            width: '100%',\n            height: '100%',\n          }}\n        >\n          {props.children}\n        </div>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "examples/basic/src/components/error-boundary.lite.tsx",
    "content": "export default function ErrorBoundary(props: any) {\n  // Noop component to allow implementing per framework\n  return props.children;\n}\n"
  },
  {
    "path": "examples/basic/src/functions/is-browser.ts",
    "content": "export function isBrowser(): boolean {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n"
  },
  {
    "path": "examples/basic/src/functions/is-react-native.ts",
    "content": "export function isReactNative(): boolean {\n  return false;\n}\n"
  },
  {
    "path": "examples/basic/src/functions/track.ts",
    "content": "import { isBrowser } from './is-browser';\nimport { isReactNative } from './is-react-native';\n\nexport function track(event: string, properties: Record<string, any>) {\n  if (!(isBrowser() || isReactNative())) {\n    return;\n  }\n\n  return fetch(`http://example.com/api/track`, {\n    method: 'POST',\n    body: JSON.stringify({ events: [{ type: event, data: properties }] }),\n    headers: {\n      'content-type': 'application/json',\n    },\n    mode: 'cors',\n  });\n}\n"
  },
  {
    "path": "examples/basic/src/index-helpers/blocks-exports.ts",
    "content": "export { default as Button } from '../blocks/button.lite';\nexport { default as Image } from '../blocks/image.lite';\n"
  },
  {
    "path": "examples/basic/src/index-helpers/top-of-file.ts",
    "content": "// no-op\n// this file exists in case a target needs to add logic to the top of the index file in an\n// override.\nexport default undefined;\n"
  },
  {
    "path": "examples/basic/src/index.ts",
    "content": "import('./index-helpers/top-of-file');\n\nexport * from './index-helpers/blocks-exports';\n\nexport * from './functions/track';\n"
  },
  {
    "path": "examples/basic/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"target\": \"es5\",\n    \"jsx\": \"preserve\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"jsxImportSource\": \"@builder.io/mitosis\"\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "examples/metdata/.eslintrc.js",
    "content": "module.exports = {\n  env: {\n    browser: true,\n  },\n  plugins: [\"@builder.io/mitosis\"],\n  parser: \"@typescript-eslint/parser\",\n  extends: [],\n  parserOptions: {\n    ecmaVersion: 2018,\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  rules: {\n    \"@builder.io/mitosis/no-conditional-render\": \"warn\",\n  },\n};\n"
  },
  {
    "path": "examples/metdata/.gitignore",
    "content": "output"
  },
  {
    "path": "examples/metdata/README.md",
    "content": "# Metadata example for Mitosis\n\nThis is an example to showcase the ``useMetadata`` hook. You can use this to set predefined configuration parameters for each component. Or you can add additional parameters to use them in a plugin.\n"
  },
  {
    "path": "examples/metdata/mitosis.config.js",
    "content": "const metadataPlugin = () => ({\n  code: {\n    pre: (code, json) => {\n      if (json.meta.useMetadata) {\n        return `\n          /**\n          useMetadata:\n          ${JSON.stringify(json.meta.useMetadata)}\n          */\n          \n          ${code}`;\n      }\n\n      return code;\n    },\n  },\n});\n\nmodule.exports = {\n  files: 'src/**',\n  commonOptions: {\n    plugins: [metadataPlugin],\n  },\n  targets: [\n    'react',\n    // still unsupported\n    // 'qwik',\n    // 'builder',\n    'vue',\n    'html',\n    // TO-DO: fix error causing svelte output not to work\n    // 'svelte',\n    'solid',\n    'angular',\n    'webcomponent',\n  ],\n};\n"
  },
  {
    "path": "examples/metdata/package.json",
    "content": "{\n  \"name\": \"@builder.io/metadata-example\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"mitosis build\",\n    \"lint\": \"eslint\"\n  },\n  \"exports\": {\n    \"./react/*\": \"./dist/react/src/*\",\n    \"./qwik/*\": \"./dist/qwik/src/*\",\n    \"./vue/*\": \"./dist/vue/src/*\",\n    \"./svelte/*\": \"./dist/svelte/src/*\",\n    \"./angular/*\": \"./dist/angular/src/*\",\n    \"./html/*\": \"./dist/html/src/*\",\n    \"./solid/*\": \"./dist/solid/src/*\"\n  },\n  \"dependencies\": {\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"@builder.io/mitosis-cli\": \"workspace:*\",\n    \"eslint\": \"^7.21.0\"\n  }\n}\n"
  },
  {
    "path": "examples/metdata/src/components/data.ts",
    "content": "import { ComponentMetadata } from '@builder.io/mitosis';\nimport { customMetaData } from '../shared/data';\n\nexport const metadata: ComponentMetadata = {\n  regularKey: 'abc',\n  'some-key': customMetaData,\n  react: {\n    forwardRef: 'xxx',\n  },\n  vue: {\n    customKey: 'yyy',\n  },\n};\n"
  },
  {
    "path": "examples/metdata/src/components/metadata.lite.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nimport { metadata } from './data';\n\nuseMetadata({ ...metadata });\n\nexport default function MetadataExample() {\n  return <div>Metadata</div>;\n}\n"
  },
  {
    "path": "examples/metdata/src/shared/data.ts",
    "content": "import { CustomMetadata } from './model';\n\nexport const customMetaData: CustomMetadata = {\n  a: 'custom',\n  b: 1,\n  c: {\n    d: 'nested',\n  },\n};\n\n\n"
  },
  {
    "path": "examples/metdata/src/shared/model.ts",
    "content": "export type CustomMetadata = {\n  a: string;\n  b: number;\n  c: Object;\n};\n"
  },
  {
    "path": "examples/metdata/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    \"moduleResolution\": \"node\",\n    \"jsxImportSource\": \"@builder.io/mitosis\"\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "examples/todo/.eslintrc.js",
    "content": "module.exports = {\n  env: {\n    browser: true,\n  },\n  plugins: [\"@builder.io/mitosis\"],\n  parser: \"@typescript-eslint/parser\",\n  extends: [],\n  parserOptions: {\n    ecmaVersion: 2018,\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  rules: {\n    \"@builder.io/mitosis/no-conditional-render\": \"warn\",\n  },\n};\n"
  },
  {
    "path": "examples/todo/.gitignore",
    "content": "output"
  },
  {
    "path": "examples/todo/README.md",
    "content": "# TODO example in Mitosis\n"
  },
  {
    "path": "examples/todo/mitosis.config.js",
    "content": "module.exports = {\n  files: 'src/**',\n  targets: [\n    'react',\n    // still unsupported\n    // 'qwik',\n    // 'builder',\n    'vue',\n    'html',\n    // TO-DO: fix error causing svelte output not to work\n    // 'svelte',\n    'solid',\n    'angular',\n    'webcomponent',\n  ],\n};\n"
  },
  {
    "path": "examples/todo/package.json",
    "content": "{\n  \"name\": \"@builder.io/todo-example\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"mitosis build\",\n    \"lint\": \"eslint\"\n  },\n  \"exports\": {\n    \"./react/*\": \"./dist/react/src/*\",\n    \"./qwik/*\": \"./dist/qwik/src/*\",\n    \"./vue/*\": \"./dist/vue/src/*\",\n    \"./svelte/*\": \"./dist/svelte/src/*\",\n    \"./angular/*\": \"./dist/angular/src/*\",\n    \"./html/*\": \"./dist/html/src/*\",\n    \"./solid/*\": \"./dist/solid/src/*\"\n  },\n  \"dependencies\": {\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"@builder.io/mitosis-cli\": \"workspace:*\",\n    \"eslint\": \"^7.21.0\"\n  }\n}\n"
  },
  {
    "path": "examples/todo/src/components/header.svelte",
    "content": "<script>\n  export let name = '';\n</script>\n\n<template>\n  <h1>\n    <slot />\n    {name}\n  </h1>\n</template>\n"
  },
  {
    "path": "examples/todo/src/components/todo.lite.tsx",
    "content": "import { Show, useStore } from '@builder.io/mitosis';\nimport type { Todo as TodoType } from '../shared/todos-state';\nimport todosState from '../shared/todos-state';\n\nexport type TodoProps = {\n  todo: TodoType;\n};\n\nexport default function Todo(props: TodoProps) {\n  const state = useStore({\n    editing: false,\n    toggle() {\n      const newBool: boolean = !props.todo.completed;\n      props.todo.completed = newBool;\n    },\n  });\n\n  return (\n    <li class={`${props.todo.completed ? 'completed' : ''} ${state.editing ? 'editing' : ''}`}>\n      <div class=\"view\">\n        <input\n          class=\"toggle\"\n          type=\"checkbox\"\n          checked={props.todo.completed}\n          onClick={() => {\n            state.toggle();\n          }}\n        />\n        <label\n          onDblClick={() => {\n            state.editing = true;\n          }}\n        >\n          {props.todo.text}\n        </label>\n        <button\n          class=\"destroy\"\n          onClick={() => {\n            todosState.todos.splice(todosState.todos.indexOf(props.todo));\n          }}\n        ></button>\n      </div>\n      <Show when={state.editing}>\n        <input\n          class=\"edit\"\n          value={props.todo.text}\n          onBlur={() => {\n            state.editing = false;\n          }}\n          onKeyUp={(event) => {\n            props.todo.text = event.target.value;\n          }}\n        />\n      </Show>\n    </li>\n  );\n}\n"
  },
  {
    "path": "examples/todo/src/components/todos.lite.tsx",
    "content": "import { For, Show, createContext } from '@builder.io/mitosis';\nimport todosState from '../shared/todos-state';\nimport Header from './header.svelte';\nimport Todo from './todo.lite';\n\nexport type TodosProps = {};\n\nexport default function Todos(props: TodosProps) {\n  createContext(todosState);\n\n  return (\n    <section class=\"main\">\n      <Header name={'World'}>Hello</Header>\n      <Show when={todosState.todos.length}>\n        <input\n          class=\"toggle-all\"\n          type=\"checkbox\"\n          checked={todosState.allCompleted}\n          onClick={() => {\n            const newValue = !todosState.allCompleted;\n            for (const todoItem of todosState.todos) {\n              todoItem.completed = newValue;\n            }\n          }}\n        />\n      </Show>\n      <ul class=\"todo-list\">\n        <For each={todosState.todos}>{(todo) => <Todo todo={todo} />}</For>\n      </ul>\n    </section>\n  );\n}\n"
  },
  {
    "path": "examples/todo/src/shared/todos-state.ts",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\nexport type Todo = {\n  completed: boolean;\n  text: string;\n};\n\nuseMetadata({\n  type: 'service',\n});\n\nexport default {\n  todos: [] as Todo[],\n  addTodo(text: string) {\n    this.todos.push({\n      completed: false,\n      text,\n    });\n  },\n  get allCompleted() {\n    return this.todos.filter((item) => item.completed).length === this.todos.length;\n  },\n};\n"
  },
  {
    "path": "examples/todo/src/typings.d.ts",
    "content": "declare module '*.svelte' {\n  const SvelteComponent: any;\n  export default SvelteComponent;\n}\n"
  },
  {
    "path": "examples/todo/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    \"moduleResolution\": \"node\",\n    \"jsxImportSource\": \"@builder.io/mitosis\"\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "nx.json",
    "content": "{\n  \"$schema\": \"./node_modules/nx/schemas/nx-schema.json\",\n  \"tasksRunnerOptions\": {\n    \"default\": {\n      \"runner\": \"nx-cloud\",\n      \"options\": {\n        \"cacheableOperations\": [\"build\"],\n        \"cacheDirectory\": \".nx-cache\",\n        \"accessToken\": \"NDQ2ODdhYzgtYzQxZi00MzViLTlmY2ItZTZhYzA3YWI2YzNlfHJlYWQ=\"\n      }\n    }\n  },\n  \"namedInputs\": {\n    \"default\": [\"{projectRoot}/**/*\"],\n    \"production\": [\"default\"]\n  },\n  \"targetDefaults\": {\n    \"dev\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \"serve\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \"typecheck\": {\n      \"dependsOn\": [\"^build\"]\n    },\n    \"build\": {\n      \"dependsOn\": [\"^build\", \"prebuild\"],\n      \"outputs\": [\"{projectRoot}/dist\"]\n    },\n    /**\n      We need to build packages before running tests because some of the tests \n      (like the Signal ones in core) rely on the project being built.\n    */\n    \"test:watch\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \"test:watch:update\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \"test\": {\n      \"dependsOn\": [\"build\"]\n    },\n    \"test:update\": {\n      \"dependsOn\": [\"build\"]\n    }\n  },\n  \"defaultBase\": \"main\"\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@builder.io/mitosis-repo\",\n  \"workspaces\": [\n    \"packages/*\",\n    \"e2e/*\",\n    \"e2e/e2e-app/output/*\",\n    \"examples/**/*\"\n  ],\n  \"private\": true,\n  \"engines\": {\n    \"node\": \">=16\"\n  },\n  \"scripts\": {\n    \"g:changeset\": \"yarn changeset\",\n    \"g:nx\": \"cd $INIT_CWD && nx\",\n    \"ci:release\": \"yarn ci:build:release && yarn workspace @builder.io/mitosis-cli fix-core-version && yarn changeset publish\",\n    \"ci:build:release\": \"nx run-many --skip-nx-cache --target build -p @builder.io/mitosis @builder.io/mitosis-cli @builder.io/eslint-plugin-mitosis @builder.io/create-mitosis\",\n    \"ci:build\": \"nx run-many --target build --exclude \\\"@builder.io/e2e-alpine\\\"\",\n    \"ci:lint\": \"yarn run lint:prettier && yarn run lint:eslint\",\n    \"ci:test\": \"nx run-many --target test\",\n    \"ci:e2e\": \"nx e2e @builder.io/e2e-app\",\n    \"test:update\": \"nx run-many -t test:update\",\n    \"fmt\": \"run-s \\\"fmt:*\\\"\",\n    \"fmt:eslint\": \"yarn lint:eslint --fix\",\n    \"fmt:prettier\": \"yarn lint:prettier --write\",\n    \"lint\": \"run-p -c \\\"lint:*\\\"\",\n    \"lint:eslint\": \"eslint --cache \\\"packages/**/*.ts{,x}\\\"\",\n    \"lint:prettier\": \"yarn run prettier --check\",\n    \"prettier\": \"prettier --cache --loglevel warn \\\"{packages,docs,e2e}/**/*.{js,jsx,ts,tsx,json,md,html}\\\"\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/BuilderIO/mitosis\"\n  },\n  \"devDependencies\": {\n    \"@changesets/cli\": \"^2.27.1\",\n    \"@nrwl/nx-cloud\": \"15.0.2\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.13.1\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"esbuild\": \"0.19.10\",\n    \"esbuild-register\": \"3.3.2\",\n    \"eslint\": \"^7.11.0\",\n    \"eslint-plugin-unused-imports\": \"^2.0.0\",\n    \"execa\": \"6.1.0\",\n    \"npm-run-all\": \"^4.1.5\",\n    \"nx\": \"^19.0.8\",\n    \"nx-cloud\": \"^19.0.0\",\n    \"prettier\": \"^2.3.2\",\n    \"prettier-plugin-organize-imports\": \"^3.2.2\",\n    \"rimraf\": \"5.0.5\",\n    \"typescript\": \"^5.3.2\"\n  },\n  \"packageManager\": \"yarn@4.1.1\",\n  \"resolutions\": {\n    \"@sveltejs/package@1.0.0-next.1\": \"patch:@sveltejs/package@npm:1.0.0-next.1#.yarn/patches/@sveltejs-package-npm-1.0.0-next.1-2fd015530b.patch\",\n    \"prettier\": \"^2.8.7\",\n    \"vite\": \"4.5.0\"\n  },\n  \"dependenciesMeta\": {\n    \"nx\": {\n      \"built\": false\n    },\n    \"nx-cloud\": {\n      \"built\": false\n    }\n  }\n}\n"
  },
  {
    "path": "packages/cli/.gitignore",
    "content": ".DS_Store\nnode_modules\nnpm-debug.log\ncoverage\n.nyc_output\ndist\n.vscode\n"
  },
  {
    "path": "packages/cli/.npmrc",
    "content": "# avoid accidentally using npm\n# https://github.com/yarnpkg/yarn/issues/4895#issuecomment-545644733\nengine-strict=true\n"
  },
  {
    "path": "packages/cli/.yarnrc.yml",
    "content": "npmPublishAccess: \"public\""
  },
  {
    "path": "packages/cli/CHANGELOG.md",
    "content": "# @builder.io/mitosis-cli\n\n## 0.13.0\n\n### Patch Changes\n\n- Updated dependencies [720e30b]\n  - @builder.io/mitosis@0.13.0\n\n## 0.12.1\n\n### Patch Changes\n\n- Updated dependencies [072c095]\n  - @builder.io/mitosis@0.12.1\n\n## 0.12.0\n\n### Minor Changes\n\n- 2bd0070: feat: Builder Text node is no longer stripped away by default when converting to Mitosis\n\n### Patch Changes\n\n- Updated dependencies [2bd0070]\n  - @builder.io/mitosis@0.12.0\n\n## 0.11.6\n\n### Patch Changes\n\n- 314b396: Builder: improve accuracy of invalid binding detection\n- f442a8c: fix: support for builder custom component with a colon in their name\n- Updated dependencies [314b396]\n- Updated dependencies [f442a8c]\n  - @builder.io/mitosis@0.11.6\n\n## 0.11.5\n\n### Patch Changes\n\n- 7ca7290: remove Circular References for `componentToBuilder` generator\n- 22ba7c0: Correct the conversion of MitosisJSX `For` component to Builder JSON `repeat.collection`\n- Updated dependencies [7ca7290]\n- Updated dependencies [22ba7c0]\n  - @builder.io/mitosis@0.11.5\n\n## 0.11.4\n\n### Patch Changes\n\n- Updated dependencies [b405755]\n  - @builder.io/mitosis@0.11.4\n\n## 0.11.3\n\n### Patch Changes\n\n- Updated dependencies [95cf7e0]\n  - @builder.io/mitosis@0.11.3\n\n## 0.11.2\n\n### Patch Changes\n\n- Updated dependencies [9d47e1a]\n  - @builder.io/mitosis@0.11.2\n\n## 0.11.1\n\n### Patch Changes\n\n- Updated dependencies [9052eb6]\n  - @builder.io/mitosis@0.11.1\n\n## 0.11.0\n\n### Minor Changes\n\n- 3baeefe: [cli] add `cosmiconfig` to load different configs:\n\n  - `mitosis.config.js`\n  - `mitosis.config.ts`\n  - `mitosis.config.mjs`\n  - `mitosis.config.cjs`\n  - `mitosis.config.json`\n\n### Patch Changes\n\n- 843814f: fix: do not generate empty expressions with slots\n- Updated dependencies [843814f]\n- Updated dependencies [3ac5f63]\n  - @builder.io/mitosis@0.11.0\n\n## 0.10.0\n\n### Patch Changes\n\n- Updated dependencies [dee8a62]\n  - @builder.io/mitosis@0.10.0\n\n## 0.9.5\n\n### Patch Changes\n\n- Updated dependencies [df7c51b]\n  - @builder.io/mitosis@0.9.5\n\n## 0.9.4\n\n### Patch Changes\n\n- Updated dependencies [dc3de1e]\n  - @builder.io/mitosis@0.9.4\n\n## 0.9.3\n\n### Patch Changes\n\n- Updated dependencies [ada6d73]\n- Updated dependencies [de198af]\n- Updated dependencies [1eb4d28]\n  - @builder.io/mitosis@0.9.3\n\n## 0.9.2\n\n### Patch Changes\n\n- Updated dependencies [d3502a7]\n  - @builder.io/mitosis@0.9.2\n\n## 0.9.1\n\n### Patch Changes\n\n- Updated dependencies [329e754]\n  - @builder.io/mitosis@0.9.1\n\n## 0.9.0\n\n### Patch Changes\n\n- a65e72b: JSX generator properly escapes single character > and <\n- Updated dependencies [8ad66fd]\n- Updated dependencies [a65e72b]\n  - @builder.io/mitosis@0.9.0\n\n## 0.8.0\n\n### Patch Changes\n\n- Updated dependencies [0fe1fdb]\n  - @builder.io/mitosis@0.8.0\n\n## 0.7.6\n\n### Patch Changes\n\n- Updated dependencies [cb7be32]\n  - @builder.io/mitosis@0.7.6\n\n## 0.7.5\n\n### Patch Changes\n\n- Updated dependencies [5dd61e2]\n- Updated dependencies [0a49334]\n  - @builder.io/mitosis@0.7.5\n\n## 0.7.4\n\n### Patch Changes\n\n- Updated dependencies [559cf86]\n  - @builder.io/mitosis@0.7.4\n\n## 0.7.3\n\n### Patch Changes\n\n- Updated dependencies [8d94333]\n- Updated dependencies [2ad4262]\n  - @builder.io/mitosis@0.7.3\n\n## 0.7.2\n\n### Patch Changes\n\n- Updated dependencies [f87bd64]\n  - @builder.io/mitosis@0.7.2\n\n## 0.7.1\n\n### Patch Changes\n\n- Updated dependencies [3d44b65]\n  - @builder.io/mitosis@0.7.1\n\n## 0.7.0\n\n### Patch Changes\n\n- Updated dependencies [de31a91]\n- Updated dependencies [d5f3eea]\n  - @builder.io/mitosis@0.7.0\n\n## 0.6.8\n\n### Patch Changes\n\n- Updated dependencies [db70010]\n  - @builder.io/mitosis@0.6.8\n\n## 0.6.7\n\n### Patch Changes\n\n- Updated dependencies [781ad7b]\n  - @builder.io/mitosis@0.6.7\n\n## 0.6.6\n\n### Patch Changes\n\n- Updated dependencies [997f673]\n  - @builder.io/mitosis@0.6.6\n\n## 0.6.5\n\n### Patch Changes\n\n- Updated dependencies [3a6216e]\n  - @builder.io/mitosis@0.6.5\n\n## 0.6.4\n\n### Patch Changes\n\n- Updated dependencies [8e9e3c3]\n  - @builder.io/mitosis@0.6.4\n\n## 0.6.3\n\n### Patch Changes\n\n- Updated dependencies [05257f2]\n  - @builder.io/mitosis@0.6.3\n\n## 0.6.2\n\n### Patch Changes\n\n- Updated dependencies [0b55dc3]\n  - @builder.io/mitosis@0.6.2\n\n## 0.6.1\n\n### Patch Changes\n\n- Updated dependencies [74b1a19]\n- Updated dependencies [74b1a19]\n  - @builder.io/mitosis@0.6.1\n\n## 0.6.0\n\n### Patch Changes\n\n- Updated dependencies [93575b5]\n  - @builder.io/mitosis@0.6.0\n\n## 0.5.38\n\n### Patch Changes\n\n- Updated dependencies [469394f]\n  - @builder.io/mitosis@0.5.38\n\n## 0.5.37\n\n### Patch Changes\n\n- Updated dependencies [f208f94]\n  - @builder.io/mitosis@0.5.37\n\n## 0.5.36\n\n### Patch Changes\n\n- Updated dependencies [a68bd42]\n- Updated dependencies [b91dfa7]\n  - @builder.io/mitosis@0.5.36\n\n## 0.5.35\n\n### Patch Changes\n\n- Updated dependencies [b6a01ab]\n  - @builder.io/mitosis@0.5.35\n\n## 0.5.34\n\n### Patch Changes\n\n- Updated dependencies [cf666ff]\n  - @builder.io/mitosis@0.5.34\n\n## 0.5.33\n\n### Patch Changes\n\n- Updated dependencies [50976fa]\n  - @builder.io/mitosis@0.5.33\n\n## 0.5.32\n\n### Patch Changes\n\n- Updated dependencies [a38e5bb]\n  - @builder.io/mitosis@0.5.32\n\n## 0.5.31\n\n### Patch Changes\n\n- Updated dependencies [d24889d]\n  - @builder.io/mitosis@0.5.31\n\n## 0.5.30\n\n### Patch Changes\n\n- Updated dependencies [0c493b2]\n  - @builder.io/mitosis@0.5.30\n\n## 0.5.29\n\n### Patch Changes\n\n- Updated dependencies [1d74164]\n  - @builder.io/mitosis@0.5.29\n\n## 0.5.28\n\n### Patch Changes\n\n- Updated dependencies [b63279f]\n  - @builder.io/mitosis@0.5.28\n\n## 0.5.27\n\n### Patch Changes\n\n- 92ad2c6: Misc: stop using `fs-extra-promise` dependency\n- Updated dependencies [92ad2c6]\n  - @builder.io/mitosis@0.5.27\n\n## 0.5.26\n\n### Patch Changes\n\n- Updated dependencies [57bdffe]\n  - @builder.io/mitosis@0.5.26\n\n## 0.5.25\n\n### Patch Changes\n\n- Updated dependencies [af43f50]\n- Updated dependencies [20ad8dc]\n  - @builder.io/mitosis@0.5.25\n\n## 0.5.24\n\n### Patch Changes\n\n- 995eb95: [All] Add new `explicitBuildFileExtensions` to `MitosisConfig`. This allows users to manage the extension of some components explicitly. This is very useful for plugins:\n\n  ```ts\n    /**\n     * Can be used for cli builds. Preserves explicit filename extensions when regex matches, e.g.:\n     * {\n     *   explicitBuildFileExtension: {\n     *     \".ts\":/*.figma.lite.tsx/g,\n     *     \".md\":/*.docs.lite.tsx/g\n     *   }\n     * }\n     */\n    explicitBuildFileExtensions?: Record<string, RegExp>;\n\n  ```\n\n  [All] Add new `pluginData` object to `MitosisComponent` which will be filled during build via cli. Users get some additional information to use them for plugins:\n\n  ```ts\n    /**\n     * This data is filled inside cli to provide more data for plugins\n     */\n  pluginData?: {\n      target?: Target;\n      path?: string;\n      outputDir?: string;\n      outputFilePath?: string;\n  };\n  ```\n\n- 341f281: [All] add additional `build` type for [Plugin](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/types/plugins.ts) to allow users to run plugins before/after cli build process\n- Updated dependencies [995eb95]\n- Updated dependencies [341f281]\n- Updated dependencies [b387d21]\n  - @builder.io/mitosis@0.5.24\n\n## 0.5.23\n\n### Patch Changes\n\n- Updated dependencies [772d6f5]\n  - @builder.io/mitosis@0.5.23\n\n## 0.5.22\n\n### Patch Changes\n\n- Updated dependencies [d52fe59]\n  - @builder.io/mitosis@0.5.22\n\n## 0.5.21\n\n### Patch Changes\n\n- Updated dependencies [73a55a3]\n- Updated dependencies [10a168d]\n  - @builder.io/mitosis@0.5.21\n\n## 0.5.20\n\n### Patch Changes\n\n- Updated dependencies [7ae4a01]\n  - @builder.io/mitosis@0.5.20\n\n## 0.5.19\n\n### Patch Changes\n\n- Updated dependencies [e9cfef0]\n  - @builder.io/mitosis@0.5.19\n\n## 0.5.18\n\n### Patch Changes\n\n- Updated dependencies [697c307]\n- Updated dependencies [6f6db62]\n- Updated dependencies [e90df53]\n  - @builder.io/mitosis@0.5.18\n\n## 0.5.17\n\n### Patch Changes\n\n- Updated dependencies [e430a68]\n- Updated dependencies [b5ddfa3]\n- Updated dependencies [068be0d]\n  - @builder.io/mitosis@0.5.17\n\n## 0.5.16\n\n### Patch Changes\n\n- Updated dependencies [3ab462a]\n  - @builder.io/mitosis@0.5.16\n\n## 0.5.15\n\n### Patch Changes\n\n- Updated dependencies [a0ad5ab]\n  - @builder.io/mitosis@0.5.15\n\n## 0.5.14\n\n### Patch Changes\n\n- Updated dependencies [39af4d6]\n  - @builder.io/mitosis@0.5.14\n\n## 0.5.13\n\n### Patch Changes\n\n- Updated dependencies [c7d2f8c]\n  - @builder.io/mitosis@0.5.13\n\n## 0.5.12\n\n### Patch Changes\n\n- Updated dependencies [5e2cf3c]\n  - @builder.io/mitosis@0.5.12\n\n## 0.5.11\n\n### Patch Changes\n\n- Updated dependencies [db9dbf9]\n  - @builder.io/mitosis@0.5.11\n\n## 0.5.10\n\n### Patch Changes\n\n- Updated dependencies [499b4b7]\n  - @builder.io/mitosis@0.5.10\n\n## 0.5.9\n\n### Patch Changes\n\n- Updated dependencies [8c2be87]\n  - @builder.io/mitosis@0.5.9\n\n## 0.5.8\n\n### Patch Changes\n\n- Updated dependencies [8d823a1]\n  - @builder.io/mitosis@0.5.8\n\n## 0.5.7\n\n### Patch Changes\n\n- Updated dependencies [7a099d2]\n  - @builder.io/mitosis@0.5.7\n\n## 0.5.6\n\n### Patch Changes\n\n- Updated dependencies [0aa642a]\n  - @builder.io/mitosis@0.5.6\n\n## 0.5.5\n\n### Patch Changes\n\n- Updated dependencies [56c6347]\n  - @builder.io/mitosis@0.5.5\n\n## 0.5.4\n\n### Patch Changes\n\n- Updated dependencies [d13e693]\n  - @builder.io/mitosis@0.5.4\n\n## 0.5.3\n\n### Patch Changes\n\n- Updated dependencies [82c79fd]\n  - @builder.io/mitosis@0.5.3\n\n## 0.5.2\n\n### Patch Changes\n\n- Updated dependencies [dad8e2f]\n  - @builder.io/mitosis@0.5.2\n\n## 0.5.1\n\n### Patch Changes\n\n- Updated dependencies [dbd5a50]\n  - @builder.io/mitosis@0.5.1\n\n## 0.5.0\n\n### Patch Changes\n\n- Updated dependencies [7e2c95f]\n- Updated dependencies [4171a19]\n- Updated dependencies [d59d328]\n  - @builder.io/mitosis@0.5.0\n\n## 0.4.7\n\n### Patch Changes\n\n- Updated dependencies [068efab]\n  - @builder.io/mitosis@0.4.7\n\n## 0.4.6\n\n### Patch Changes\n\n- Updated dependencies [a7fd87f]\n- Updated dependencies [a7fd87f]\n  - @builder.io/mitosis@0.4.6\n\n## 0.4.5\n\n### Patch Changes\n\n- Updated dependencies [428b3ab]\n  - @builder.io/mitosis@0.4.5\n\n## 0.4.4\n\n### Patch Changes\n\n- Updated dependencies [ad7e576]\n- Updated dependencies [52dc749]\n  - @builder.io/mitosis@0.4.4\n\n## 0.4.3\n\n### Patch Changes\n\n- Updated dependencies [1bf28ea]\n- Updated dependencies [814d171]\n- Updated dependencies [531c15c]\n- Updated dependencies [84038d5]\n  - @builder.io/mitosis@0.4.3\n\n## 0.4.2\n\n### Patch Changes\n\n- Updated dependencies [c29e3ca]\n  - @builder.io/mitosis@0.4.2\n\n## 0.4.1\n\n### Patch Changes\n\n- Updated dependencies [1943604]\n- Updated dependencies [d446881]\n  - @builder.io/mitosis@0.4.1\n\n## 0.4.0\n\n### Patch Changes\n\n- Updated dependencies [7d8f4ff]\n  - @builder.io/mitosis@0.4.0\n\n## 0.3.22\n\n### Patch Changes\n\n- Updated dependencies [f19a00f]\n  - @builder.io/mitosis@0.3.22\n\n## 0.3.21\n\n### Patch Changes\n\n- Updated dependencies [45de754]\n- Updated dependencies [03f1f58]\n- Updated dependencies [45de754]\n  - @builder.io/mitosis@0.3.21\n\n## 0.3.20\n\n### Patch Changes\n\n- Updated dependencies [34bbd34]\n  - @builder.io/mitosis@0.3.20\n\n## 0.3.19\n\n### Patch Changes\n\n- Updated dependencies [3f5fff1]\n- Updated dependencies [4c662df]\n  - @builder.io/mitosis@0.3.19\n\n## 0.3.18\n\n### Patch Changes\n\n- Updated dependencies [952b3f5]\n  - @builder.io/mitosis@0.3.18\n\n## 0.3.17\n\n### Patch Changes\n\n- Updated dependencies [48f5481]\n  - @builder.io/mitosis@0.3.17\n\n## 0.3.16\n\n### Patch Changes\n\n- Updated dependencies [9abf0ac]\n  - @builder.io/mitosis@0.3.16\n\n## 0.3.15\n\n### Patch Changes\n\n- Updated dependencies [383f69f]\n  - @builder.io/mitosis@0.3.15\n\n## 0.3.14\n\n### Patch Changes\n\n- Updated dependencies [9a1d59b]\n  - @builder.io/mitosis@0.3.14\n\n## 0.3.13\n\n### Patch Changes\n\n- Updated dependencies [f86e2ec]\n  - @builder.io/mitosis@0.3.13\n\n## 0.3.12\n\n### Patch Changes\n\n- Updated dependencies [3a04558]\n  - @builder.io/mitosis@0.3.12\n\n## 0.3.11\n\n### Patch Changes\n\n- Updated dependencies [59a92da]\n  - @builder.io/mitosis@0.3.11\n\n## 0.3.10\n\n### Patch Changes\n\n- Updated dependencies [8548feb]\n- Updated dependencies [f83b8f4]\n  - @builder.io/mitosis@0.3.10\n\n## 0.3.9\n\n### Patch Changes\n\n- Updated dependencies [9705329]\n  - @builder.io/mitosis@0.3.9\n\n## 0.3.8\n\n### Patch Changes\n\n- Updated dependencies [495a937]\n  - @builder.io/mitosis@0.3.8\n\n## 0.3.7\n\n### Patch Changes\n\n- Updated dependencies [413cdc2]\n  - @builder.io/mitosis@0.3.7\n\n## 0.3.6\n\n### Patch Changes\n\n- Updated dependencies [2c1b162]\n  - @builder.io/mitosis@0.3.6\n\n## 0.3.5\n\n### Patch Changes\n\n- Updated dependencies [14a9a90]\n  - @builder.io/mitosis@0.3.5\n\n## 0.3.4\n\n### Patch Changes\n\n- Updated dependencies [42287fe]\n  - @builder.io/mitosis@0.3.4\n\n## 0.3.3\n\n### Patch Changes\n\n- Updated dependencies [027e9cc]\n  - @builder.io/mitosis@0.3.3\n\n## 0.3.2\n\n### Patch Changes\n\n- 78f6a64: Misc: remove unused dependencies.\n- Updated dependencies [78f6a64]\n  - @builder.io/mitosis@0.3.2\n\n## 0.3.1\n\n### Patch Changes\n\n- Updated dependencies [c8b7883]\n  - @builder.io/mitosis@0.3.1\n\n## 0.3.0\n\n### Patch Changes\n\n- Updated dependencies [c249052]\n  - @builder.io/mitosis@0.3.0\n\n## 0.2.10\n\n### Patch Changes\n\n- 90b3b02: Support for custom generators / targets\n- Updated dependencies [90b3b02]\n  - @builder.io/mitosis@0.2.10\n\n## 0.2.9\n\n### Patch Changes\n\n- Updated dependencies [a5d47bd]\n  - @builder.io/mitosis@0.2.9\n\n## 0.2.8\n\n### Patch Changes\n\n- Updated dependencies [18b9210]\n  - @builder.io/mitosis@0.2.8\n\n## 0.2.7\n\n### Patch Changes\n\n- Updated dependencies [1dbdf32]\n  - @builder.io/mitosis@0.2.7\n\n## 0.2.6\n\n### Patch Changes\n\n- Updated dependencies [389018d]\n- Updated dependencies [c7f2759]\n  - @builder.io/mitosis@0.2.6\n\n## 0.2.5\n\n### Patch Changes\n\n- 2e56b76: Fix: Qwik methods using computed variables\n- Updated dependencies [2e56b76]\n  - @builder.io/mitosis@0.2.5\n\n## 0.2.4\n\n### Patch Changes\n\n- Updated dependencies [cee502f]\n  - @builder.io/mitosis@0.2.4\n\n## 0.2.3\n\n### Patch Changes\n\n- Updated dependencies [2867f44]\n  - @builder.io/mitosis@0.2.3\n\n## 0.2.2\n\n### Patch Changes\n\n- Updated dependencies [18e890c]\n  - @builder.io/mitosis@0.2.2\n\n## 0.2.1\n\n### Patch Changes\n\n- Updated dependencies [5ef7920]\n  - @builder.io/mitosis@0.2.1\n\n## 0.2.0\n\n### Minor Changes\n\n- 0a39722: 💣 Breaking Change: Angular generator: all components are now exported as a `default` export instead of a named export.\n\n### Patch Changes\n\n- 0a39722: Feat: remove all explicit `.js` import extensions when `explicitImportFileExtension` config is `false`\n- 0a39722: Feat: update angular generator to support dynamic components, context and more\n- Updated dependencies [0a39722]\n- Updated dependencies [0a39722]\n- Updated dependencies [0a39722]\n- Updated dependencies [0a39722]\n  - @builder.io/mitosis@0.2.0\n\n## 0.1.7\n\n### Patch Changes\n\n- Updated dependencies [ba5e3b4]\n  - @builder.io/mitosis@0.1.7\n\n## 0.1.6\n\n### Patch Changes\n\n- Updated dependencies [5738855]\n  - @builder.io/mitosis@0.1.6\n\n## 0.1.5\n\n### Patch Changes\n\n- Updated dependencies [6688702]\n  - @builder.io/mitosis@0.1.5\n\n## 0.1.4\n\n### Patch Changes\n\n- Updated dependencies [20efa15]\n  - @builder.io/mitosis@0.1.4\n\n## 0.1.3\n\n### Patch Changes\n\n- Updated dependencies [9944a68]\n  - @builder.io/mitosis@0.1.3\n\n## 0.1.2\n\n### Patch Changes\n\n- Updated dependencies [83b9bb8]\n  - @builder.io/mitosis@0.1.2\n\n## 0.1.1\n\n### Patch Changes\n\n- Updated dependencies [9d6e019]\n- Updated dependencies [9d6e019]\n  - @builder.io/mitosis@0.1.1\n\n## 0.1.0\n\n### Minor Changes\n\n- 5dfd7cd: Breaking Change: remove vue2 and vue3 generators, keeping only the default vue generator (which generates vue3).\n\n### Patch Changes\n\n- Updated dependencies [5dfd7cd]\n  - @builder.io/mitosis@0.1.0\n\n## 0.0.147\n\n### Patch Changes\n\n- Updated dependencies [4e49454]\n  - @builder.io/mitosis@0.0.147\n\n## 0.0.146\n\n### Patch Changes\n\n- Updated dependencies [35becd6]\n- Updated dependencies [f64d9b0]\n- Updated dependencies [35becd6]\n  - @builder.io/mitosis@0.0.146\n\n## 0.0.145\n\n### Patch Changes\n\n- Updated dependencies [9720fb6]\n  - @builder.io/mitosis@0.0.145\n\n## 0.0.144\n\n### Patch Changes\n\n- Updated dependencies [e4f0019]\n  - @builder.io/mitosis@0.0.144\n\n## 0.0.143\n\n### Patch Changes\n\n- e913d91: fix release\n\n## 0.0.142\n\n### Patch Changes\n\n- Updated dependencies [a4f8311]\n  - @builder.io/mitosis@0.0.142\n"
  },
  {
    "path": "packages/cli/bin/mitosis",
    "content": "#!/usr/bin/env node\n\n/* tslint:disable */\n// check if we're running in dev mode\nvar devMode = require('fs').existsSync(`${__dirname}/../src`)\n// or want to \"force\" running the compiled version with --compiled-build\nvar wantsCompiled = process.argv.indexOf('--compiled-build') >= 0\n\nvar argv = process.argv\n\nif (wantsCompiled || !devMode) {\n  // this runs from the compiled javascript source\n  require(`${__dirname}/../dist/cli`).run(argv)\n} else {\n  // this runs from the typescript source (for dev only)\n  // hook into ts-node so we can run typescript on the fly\n  require('ts-node').register({ project: `${__dirname}/../tsconfig.json` })\n  // run the CLI with the current process arguments\n  require(`${__dirname}/../src/cli`).run(argv)\n}\n"
  },
  {
    "path": "packages/cli/docs/commands.md",
    "content": "# Command Reference for mitosis\n\nTODO: Add your command reference here\n"
  },
  {
    "path": "packages/cli/docs/plugins.md",
    "content": "# Plugin guide for mitosis\n\nPlugins allow you to add features to mitosis, such as commands and\nextensions to the `toolbox` object that provides the majority of the functionality\nused by mitosis.\n\nCreating a mitosis plugin is easy. Just create a repo with two folders:\n\n```\ncommands/\nextensions/\n```\n\nA command is a file that looks something like this:\n\n```js\n// commands/foo.js\n\nmodule.exports = {\n  run: (toolbox) => {\n    const { print, filesystem } = toolbox;\n\n    const desktopDirectories = filesystem.subdirectories(`~/Desktop`);\n    print.info(desktopDirectories);\n  },\n};\n```\n\nAn extension lets you add additional features to the `toolbox`.\n\n```js\n// extensions/bar-extension.js\n\nmodule.exports = (toolbox) => {\n  const { print } = toolbox;\n\n  toolbox.bar = () => {\n    print.info('Bar!');\n  };\n};\n```\n\nThis is then accessible in your plugin's commands as `toolbox.bar`.\n\n# Loading a plugin\n\nTo load a particular plugin (which has to start with `mitosis-*`),\ninstall it to your project using `npm install --save-dev mitosis-PLUGINNAME`,\nand mitosis will pick it up automatically.\n"
  },
  {
    "path": "packages/cli/package.json",
    "content": "{\n  \"name\": \"@builder.io/mitosis-cli\",\n  \"version\": \"0.13.0\",\n  \"description\": \"mitosis CLI\",\n  \"types\": \"build/types/types.d.ts\",\n  \"bin\": {\n    \"mitosis\": \"bin/mitosis\"\n  },\n  \"scripts\": {\n    \"format\": \"prettier --loglevel warn --write \\\"**/*.{js,ts,tsx,json}\\\"\",\n    \"clean-build\": \"yarn compile --clean\",\n    \"compile\": \"tsc --build --pretty tsconfig.build.json\",\n    \"tsc-alias\": \"tsc-alias -p tsconfig.build.json --verbose\",\n    \"start\": \"concurrently --kill-others \\\"tsc --watch\\\" \\\"yarn tsc-alias --watch\\\"\",\n    \"build\": \"yarn format && yarn clean-build && yarn compile && yarn tsc-alias\",\n    \"fix-core-version\": \"./scripts/fix-core-version.sh\",\n    \"test:watch\": \"vitest\",\n    \"test:watch:update\": \"yarn test:watch --update\",\n    \"test\": \"yarn test:watch run\",\n    \"test:update\": \"yarn test --update\"\n  },\n  \"files\": [\n    \"dist\",\n    \"bin\"\n  ],\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"cosmiconfig\": \"9.0.0\",\n    \"debug\": \"^4.3.4\",\n    \"dedent\": \"^0.7.0\",\n    \"esbuild\": \"^0.12.16\",\n    \"fast-glob\": \"^3.2.11\",\n    \"fp-ts\": \"^2.12.2\",\n    \"fs-extra\": \"^9.1.0\",\n    \"gluegun\": \"latest\",\n    \"lodash\": \"^4.17.21\",\n    \"prettier\": \"^2.6.1\",\n    \"ts-morph\": \"^19.0.0\"\n  },\n  \"devDependencies\": {\n    \"@types/debug\": \"^4.1.7\",\n    \"@types/fs-extra\": \"^9.0.13\",\n    \"@types/lodash\": \"^4.14.180\",\n    \"@types/node\": \"^12.7.11\",\n    \"concurrently\": \"^8.2.2\",\n    \"ts-node\": \"^8.4.1\",\n    \"tsc-alias\": \"^1.8.8\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\",\n    \"vitest\": \"^0.34.6\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/BuilderIO/mitosis\"\n  },\n  \"homepage\": \"https://github.com/BuilderIO/mitosis\"\n}\n"
  },
  {
    "path": "packages/cli/readme.md",
    "content": "# Mitosis CLI\n\nA CLI for Mitosis.\n\n## Installation\n\n```bash\nnpm install -g @builder.io/mitosis-cli\n```\n\n## Usage\n\n```bash\nmitosis compile --to=<format> < <input-file>\ncat my-file.tsx | mitosis compile -t=<format>\nmitosis compile -t=<format> <input-file>\n```\n\nCheck the output from `mitosis compile --help`.\n\n**Examples**\n\n```bash\nmitosis compile -t react component.tsx\nmitosis compile -t react < component.tsx\ncat component.tsx | mitosis compile -t html -\nmitosis compile -t react --out-dir build -- src/**/*.tsx\n```\n\n## Options\n\nSupported formats for `--to` are:\n\n- `reactNative`\n- `solid`\n- `vue`\n- `react`\n- `template`\n- `html`\n- `customElement`\n- `mitosis`\n- `builder`\n- `swift`\n- `svelte`\n- `liquid`\n- `angular`\n\nSupported formats for `--from` are:\n\n- `mitosis`\n- `builder`\n- `liquid`\n\n## Cook book\n\nHere are some recipes for standard tasks\n\n### Validate how Builder will transform Mitosis\n\n```bash\ncat components/postscript.lite.tsx |\n  mitosis compile -t builder - |\n  mitosis compile -f builder -t mitosis\n```\n\n### Run mitosis on file system change\n\nUse a tool like [entr](https://github.com/eradman/entr) or [guard](https://github.com/guard/guard)\n\n```\nfind . -name '*lite.tsx' | entr make /_\n```\n\n## Known issues\n\n- Running `mitosis` from the root of this repository breaks due to some\n  dynamic babel configuration look up\n- Files that are created as the result of `--out-dir=<dir>` maintain the original\n  file extension of the input file, which doesn't make any sense in the case of\n  an html output.\n- `--out=<file>` does not support concatenating multiple files together.\n"
  },
  {
    "path": "packages/cli/scripts/fix-core-version.sh",
    "content": "# !/bin/bash\n\n# This script is used to update the version of @builderio/mitosis in the CLI package dependencies\n# Workaround for https://github.com/changesets/changesets/issues/432\n\nVERSION_NUMBER=$(jq -r '.version' ../core/package.json)\n\necho \"Updating package.json to use version $VERSION_NUMBER of @builder.io/mitosis\"\njq --arg VERSION_NUMBER $VERSION_NUMBER '.dependencies.\"@builder.io/mitosis\" = $VERSION_NUMBER' package.json >temp.json && mv temp.json package.json\n"
  },
  {
    "path": "packages/cli/src/__tests__/build/build.test.ts",
    "content": "import { resolve } from 'path';\nimport { expect, test } from 'vitest';\nimport { buildCommand } from '../../commands/build';\nimport { DEFAULT_TEST_TIMEOUT } from '../utils';\n\nconst fileEndings: string[] = ['cjs', 'ts', 'json'];\nconst targets: string[] = ['angular', 'react', 'vue'];\n\nfileEndings.forEach((ending) => {\n  test(\n    `test config ${ending}`,\n    async () => {\n      const filepath = resolve(__dirname, `mitosis.config.${ending}`);\n      const config = await buildCommand({ configRelPath: filepath, options: {}, testConfig: true });\n      config.targets.forEach((target: string) => {\n        expect(targets.includes(target)).toBeTruthy();\n      });\n    },\n    { timeout: DEFAULT_TEST_TIMEOUT },\n  );\n});\n"
  },
  {
    "path": "packages/cli/src/__tests__/build/mitosis.config.cjs",
    "content": "/**\n * @type {import('@mitosis/types').MitosisConfig}\n */\nmodule.exports = {\n  files: 'src/**',\n  targets: ['angular', 'react', 'vue'],\n  commonOptions: {\n    typescript: true,\n  },\n  options: {\n    angular: {},\n    react: {},\n    vue: {\n      api: 'composition',\n    },\n  },\n};\n"
  },
  {
    "path": "packages/cli/src/__tests__/build/mitosis.config.json",
    "content": "{\n  \"files\": \"src/**\",\n  \"targets\": [\"angular\", \"react\", \"vue\"],\n  \"commonOptions\": {\n    \"typescript\": true\n  },\n  \"options\": {\n    \"angular\": {},\n    \"react\": {},\n    \"vue\": {\n      \"api\": \"composition\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/__tests__/build/mitosis.config.ts",
    "content": "import { MitosisConfig } from '@builder.io/mitosis';\n\nconst config: MitosisConfig = {\n  files: 'src/**',\n  targets: ['angular', 'react', 'vue'],\n  commonOptions: {\n    typescript: true,\n  },\n  options: {\n    angular: {},\n    react: {},\n    vue: {\n      api: 'composition',\n    },\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/cli/src/__tests__/compile/__snapshots__/compile.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`--builder-components keeps builder components 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Columns\n      stackColumnsAt=\\\\\"tablet\\\\\"\n      data-builder-groupLocked=\\\\\"true\\\\\"\n      space={36}\n      reverseColumnsWhenStacked={false}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        position: \\\\\"relative\\\\\",\n        flexShrink: \\\\\"0\\\\\",\n        boxSizing: \\\\\"border-box\\\\\",\n        marginTop: \\\\\"2.34375px\\\\\",\n        paddingLeft: \\\\\"0px\\\\\",\n        paddingRight: \\\\\"0px\\\\\",\n      }}\n    >\n      <Column>\n        <Image\n          image=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=998&height=1000\\\\\"\n          backgroundPosition=\\\\\"center\\\\\"\n          backgroundSize=\\\\\"cover\\\\\"\n          srcset=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=376&height=1000 376w\\\\\"\n          sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n          aspectRatio={0.7004048582995948}\n          lazy\n          height={749}\n          width={998}\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            position: \\\\\"relative\\\\\",\n            textAlign: \\\\\"center\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            height: \\\\\"auto\\\\\",\n          }}\n        />\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            position: \\\\\"relative\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            boxSizing: \\\\\"border-box\\\\\",\n            marginTop: \\\\\"9px\\\\\",\n            marginBottom: \\\\\"auto\\\\\",\n            paddingBottom: \\\\\"17px\\\\\",\n            paddingTop: \\\\\"17px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              paddingBottom: \\\\\"49px\\\\\",\n            },\n          }}\n        >\n          <Text\n            text=\\\\\"<p>Something Great to Say</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"-1.65625px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"24px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                marginTop: \\\\\"1.34375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"25px\\\\\",\n              },\n            }}\n          />\n          <Text\n            text=\\\\\"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"14.59375px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"15px\\\\\",\n              color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"15px\\\\\",\n              },\n            }}\n          />\n        </div>\n      </Column>\n      <Column>\n        <Image\n          image=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=998&height=1000\\\\\"\n          backgroundPosition=\\\\\"center\\\\\"\n          backgroundSize=\\\\\"cover\\\\\"\n          srcset=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=376&height=1000 376w\\\\\"\n          sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n          aspectRatio={0.7004048582995948}\n          lazy\n          height={665}\n          width={998}\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            position: \\\\\"relative\\\\\",\n            textAlign: \\\\\"center\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            height: \\\\\"auto\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"699px\\\\\",\n            },\n          }}\n        />\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            position: \\\\\"relative\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            boxSizing: \\\\\"border-box\\\\\",\n            marginTop: \\\\\"9px\\\\\",\n            marginBottom: \\\\\"auto\\\\\",\n            paddingBottom: \\\\\"17px\\\\\",\n            paddingTop: \\\\\"17px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              paddingBottom: \\\\\"49px\\\\\",\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"92px\\\\\",\n            },\n            \\\\\"@media (max-width: 640px)\\\\\": {\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"128px\\\\\",\n            },\n          }}\n        >\n          <Text\n            text=\\\\\"<p>Something Great to Say</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"-1.65625px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"24px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                marginTop: \\\\\"1.34375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"25px\\\\\",\n              },\n            }}\n          />\n          <Text\n            text=\\\\\"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"14.59375px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"15px\\\\\",\n              color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"15px\\\\\",\n              },\n            }}\n          />\n        </div>\n      </Column>\n      <Column>\n        <Image\n          image=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=998&height=1000\\\\\"\n          backgroundPosition=\\\\\"center\\\\\"\n          backgroundSize=\\\\\"cover\\\\\"\n          srcset=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=376&height=1000 376w\\\\\"\n          sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n          aspectRatio={0.7004048582995948}\n          lazy\n          height={685}\n          width={998}\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            position: \\\\\"relative\\\\\",\n            textAlign: \\\\\"center\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            height: \\\\\"auto\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"699px\\\\\",\n            },\n            \\\\\"@media (max-width: 640px)\\\\\": {\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"447px\\\\\",\n            },\n          }}\n        />\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            position: \\\\\"relative\\\\\",\n            flexShrink: \\\\\"0\\\\\",\n            boxSizing: \\\\\"border-box\\\\\",\n            marginTop: \\\\\"9px\\\\\",\n            marginBottom: \\\\\"auto\\\\\",\n            paddingBottom: \\\\\"17px\\\\\",\n            paddingTop: \\\\\"17px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              paddingBottom: \\\\\"49px\\\\\",\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"92px\\\\\",\n            },\n            \\\\\"@media (max-width: 640px)\\\\\": {\n              contentVisibility: \\\\\"auto\\\\\",\n              containIntrinsicSize: \\\\\"128px\\\\\",\n            },\n          }}\n        >\n          <Text\n            text=\\\\\"<p>Something Great to Say</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"-1.65625px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"24px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                marginTop: \\\\\"1.34375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"25px\\\\\",\n              },\n            }}\n          />\n          <Text\n            text=\\\\\"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\\\\\"\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              position: \\\\\"relative\\\\\",\n              marginTop: \\\\\"14.59375px\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              fontSize: \\\\\"15px\\\\\",\n              color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                textAlign: \\\\\"center\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                fontSize: \\\\\"15px\\\\\",\n              },\n            }}\n          />\n        </div>\n      </Column>\n    </Columns>\n  );\n}\n\nexport default MyComponent;\n\n\"\n`;\n\nexports[`strips out builder components by default 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div\n      stackColumnsAt=\\\\\"tablet\\\\\"\n      data-builder-groupLocked=\\\\\"true\\\\\"\n      space={36}\n      reverseColumnsWhenStacked={false}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        position: \\\\\"relative\\\\\",\n        flexShrink: \\\\\"0\\\\\",\n        boxSizing: \\\\\"border-box\\\\\",\n        marginTop: \\\\\"2.34375px\\\\\",\n        paddingLeft: \\\\\"0px\\\\\",\n        paddingRight: \\\\\"0px\\\\\",\n      }}\n    >\n      <div\n        css={{\n          gap: \\\\\"20px\\\\\",\n          display: \\\\\"flex\\\\\",\n          \\\\\"@media (max-width: 991px)\\\\\": {\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            gap: \\\\\"0px\\\\\",\n          },\n        }}\n      >\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            width: \\\\\"33%\\\\\",\n            marginLeft: \\\\\"0px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              width: \\\\\"100%\\\\\",\n              marginLeft: 0,\n            },\n          }}\n        >\n          <img\n            loading=\\\\\"lazy\\\\\"\n            sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n            srcSet=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=376&height=1000 376w\\\\\"\n            css={{\n              aspectRatio: \\\\\"1.43\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n              width: \\\\\"100%\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n            }}\n          />\n          <div\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              position: \\\\\"relative\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              boxSizing: \\\\\"border-box\\\\\",\n              marginTop: \\\\\"9px\\\\\",\n              marginBottom: \\\\\"auto\\\\\",\n              paddingBottom: \\\\\"17px\\\\\",\n              paddingTop: \\\\\"17px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                paddingBottom: \\\\\"49px\\\\\",\n              },\n            }}\n          >\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"-1.65625px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"24px\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  marginTop: \\\\\"1.34375px\\\\\",\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"25px\\\\\",\n                },\n              }}\n            >\n              <p>Something Great to Say</p>\n            </div>\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"14.59375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"15px\\\\\",\n                color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"15px\\\\\",\n                },\n              }}\n            >\n              <p>\n                Some more great things to elaborate on that wonderful things you\n                have to tell your audience\n              </p>\n            </div>\n          </div>\n        </div>\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            width: \\\\\"33%\\\\\",\n            marginLeft: \\\\\"20px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              width: \\\\\"100%\\\\\",\n              marginLeft: 0,\n            },\n          }}\n        >\n          <img\n            loading=\\\\\"lazy\\\\\"\n            sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n            srcSet=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=376&height=1000 376w\\\\\"\n            css={{\n              aspectRatio: \\\\\"1.43\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n              width: \\\\\"100%\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"699px\\\\\",\n              },\n            }}\n          />\n          <div\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              position: \\\\\"relative\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              boxSizing: \\\\\"border-box\\\\\",\n              marginTop: \\\\\"9px\\\\\",\n              marginBottom: \\\\\"auto\\\\\",\n              paddingBottom: \\\\\"17px\\\\\",\n              paddingTop: \\\\\"17px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                paddingBottom: \\\\\"49px\\\\\",\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"92px\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"128px\\\\\",\n              },\n            }}\n          >\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"-1.65625px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"24px\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  marginTop: \\\\\"1.34375px\\\\\",\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"25px\\\\\",\n                },\n              }}\n            >\n              <p>Something Great to Say</p>\n            </div>\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"14.59375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"15px\\\\\",\n                color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"15px\\\\\",\n                },\n              }}\n            >\n              <p>\n                Some more great things to elaborate on that wonderful things you\n                have to tell your audience\n              </p>\n            </div>\n          </div>\n        </div>\n        <div\n          css={{\n            display: \\\\\"flex\\\\\",\n            flexDirection: \\\\\"column\\\\\",\n            alignItems: \\\\\"stretch\\\\\",\n            lineHeight: \\\\\"normal\\\\\",\n            width: \\\\\"33%\\\\\",\n            marginLeft: \\\\\"20px\\\\\",\n            \\\\\"@media (max-width: 991px)\\\\\": {\n              width: \\\\\"100%\\\\\",\n              marginLeft: 0,\n            },\n          }}\n        >\n          <img\n            loading=\\\\\"lazy\\\\\"\n            sizes=\\\\\"(max-width: 638px) 100vw, 27vw\\\\\"\n            srcSet=\\\\\"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=376&height=1000 376w\\\\\"\n            css={{\n              aspectRatio: \\\\\"1.43\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n              width: \\\\\"100%\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              textAlign: \\\\\"center\\\\\",\n              lineHeight: \\\\\"normal\\\\\",\n              height: \\\\\"auto\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"699px\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"447px\\\\\",\n              },\n            }}\n          />\n          <div\n            css={{\n              display: \\\\\"flex\\\\\",\n              flexDirection: \\\\\"column\\\\\",\n              alignItems: \\\\\"stretch\\\\\",\n              position: \\\\\"relative\\\\\",\n              flexShrink: \\\\\"0\\\\\",\n              boxSizing: \\\\\"border-box\\\\\",\n              marginTop: \\\\\"9px\\\\\",\n              marginBottom: \\\\\"auto\\\\\",\n              paddingBottom: \\\\\"17px\\\\\",\n              paddingTop: \\\\\"17px\\\\\",\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                paddingBottom: \\\\\"49px\\\\\",\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"92px\\\\\",\n              },\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                contentVisibility: \\\\\"auto\\\\\",\n                containIntrinsicSize: \\\\\"128px\\\\\",\n              },\n            }}\n          >\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"-1.65625px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"24px\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  marginTop: \\\\\"1.34375px\\\\\",\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"25px\\\\\",\n                },\n              }}\n            >\n              <p>Something Great to Say</p>\n            </div>\n            <div\n              css={{\n                display: \\\\\"flex\\\\\",\n                flexDirection: \\\\\"column\\\\\",\n                alignItems: \\\\\"stretch\\\\\",\n                flexShrink: \\\\\"0\\\\\",\n                position: \\\\\"relative\\\\\",\n                marginTop: \\\\\"14.59375px\\\\\",\n                textAlign: \\\\\"center\\\\\",\n                lineHeight: \\\\\"normal\\\\\",\n                height: \\\\\"auto\\\\\",\n                fontSize: \\\\\"15px\\\\\",\n                color: \\\\\"rgba(86, 86, 86, 1)\\\\\",\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  textAlign: \\\\\"center\\\\\",\n                },\n                \\\\\"@media (max-width: 640px)\\\\\": {\n                  fontSize: \\\\\"15px\\\\\",\n                },\n              }}\n            >\n              <p>\n                Some more great things to elaborate on that wonderful things you\n                have to tell your audience\n              </p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\n\"\n`;\n"
  },
  {
    "path": "packages/cli/src/__tests__/compile/compile.test.ts",
    "content": "import * as path from 'path';\nimport { expect, test } from 'vitest';\nimport { DEFAULT_TEST_TIMEOUT, cli } from '../utils';\n\n// TODO refactor commands/compile.ts to not have side effects (like calling\n// process.exit) so that this can be unit tested instead.\ntest(\n  'strips out builder components by default',\n  async () => {\n    const filepath = path.resolve(__dirname, 'data/triptych.builder.json');\n\n    const output = await cli(`compile --from=builder --to=react \"${filepath}\"`);\n\n    expect(output).toMatchSnapshot();\n    expect(output).toContain('function MyComponent(props) {');\n    expect(output).not.toContain('<Columns');\n    expect(output).not.toContain('<Column');\n    expect(output).not.toContain('<Image');\n    expect(output).toContain('<img');\n  },\n  { timeout: DEFAULT_TEST_TIMEOUT },\n);\n\ntest(\n  '--builder-components keeps builder components',\n  async () => {\n    const filepath = path.resolve(__dirname, 'data/triptych.builder.json');\n\n    const output = await cli(\n      `compile --builder-components --from=builder --to=react \"${filepath}\"`,\n    );\n\n    expect(output).toMatchSnapshot();\n    expect(output).toContain('function MyComponent(props) {');\n    expect(output).toContain('<Columns');\n    expect(output).toContain('<Column');\n    expect(output).toContain('<Image');\n    expect(output).not.toContain('<img');\n  },\n  { timeout: DEFAULT_TEST_TIMEOUT },\n);\n"
  },
  {
    "path": "packages/cli/src/__tests__/compile/data/triptych.builder.json",
    "content": "{\n  \"data\": {\n    \"title\": \"Triptych three column layout template\",\n    \"hidden\": \"hello\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-c205527e6ea84f648137eda08d445917\",\n        \"groupLocked\": true,\n        \"component\": {\n          \"name\": \"Columns\",\n          \"options\": {\n            \"columns\": [\n              {\n                \"blocks\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"id\": \"builder-7a687b4e9e71437d97f4f4567b5a405f\",\n                    \"component\": {\n                      \"name\": \"Image\",\n                      \"options\": {\n                        \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=998&height=1000\",\n                        \"backgroundPosition\": \"center\",\n                        \"backgroundSize\": \"cover\",\n                        \"aspectRatio\": 0.7004048582995948,\n                        \"lazy\": true,\n                        \"srcset\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F8e096f01b00343dca3952d645f7ae024?width=376&height=1000 376w\",\n                        \"sizes\": \"(max-width: 638px) 100vw, 27vw\",\n                        \"height\": 749,\n                        \"width\": 998\n                      }\n                    },\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"flexShrink\": \"0\",\n                        \"position\": \"relative\",\n                        \"textAlign\": \"center\",\n                        \"lineHeight\": \"normal\",\n                        \"height\": \"auto\"\n                      }\n                    }\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Centered Box\",\n                    \"id\": \"builder-a657a370dd6b4975835f19fe81db9028\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Title\",\n                        \"id\": \"builder-e0369e6217b94644b2ca95c5e7f9df9e\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Something Great to Say</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"-1.65625px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"24px\"\n                          },\n                          \"medium\": {\n                            \"marginTop\": \"1.34375px\",\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"25px\"\n                          }\n                        }\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Subtitle\",\n                        \"id\": \"builder-33f700bc894a4975bb34606268ec0b7f\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"14.59375px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"15px\",\n                            \"color\": \"rgba(86, 86, 86, 1)\"\n                          },\n                          \"medium\": {\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"15px\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"position\": \"relative\",\n                        \"flexShrink\": \"0\",\n                        \"boxSizing\": \"border-box\",\n                        \"marginTop\": \"9px\",\n                        \"marginBottom\": \"auto\",\n                        \"paddingBottom\": \"17px\",\n                        \"paddingTop\": \"17px\"\n                      },\n                      \"medium\": {\n                        \"paddingBottom\": \"49px\"\n                      }\n                    }\n                  }\n                ]\n              },\n              {\n                \"blocks\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"id\": \"builder-306706b011774f2ea07bb4d8ea26bd47\",\n                    \"component\": {\n                      \"name\": \"Image\",\n                      \"options\": {\n                        \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=998&height=1000\",\n                        \"backgroundPosition\": \"center\",\n                        \"backgroundSize\": \"cover\",\n                        \"aspectRatio\": 0.7004048582995948,\n                        \"lazy\": true,\n                        \"srcset\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F70c33c597e9946e9a79ab99ad9a999d3?width=376&height=1000 376w\",\n                        \"sizes\": \"(max-width: 638px) 100vw, 27vw\",\n                        \"height\": 665,\n                        \"width\": 998\n                      }\n                    },\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"flexShrink\": \"0\",\n                        \"position\": \"relative\",\n                        \"textAlign\": \"center\",\n                        \"lineHeight\": \"normal\",\n                        \"height\": \"auto\"\n                      },\n                      \"medium\": {\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"699px\"\n                      }\n                    }\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Centered Box\",\n                    \"id\": \"builder-0dfa11ddca824dc38f1cdafe10dbbf7b\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Title\",\n                        \"id\": \"builder-399e99cdaf164ec989e69f78f405e48f\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Something Great to Say</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"-1.65625px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"24px\"\n                          },\n                          \"medium\": {\n                            \"marginTop\": \"1.34375px\",\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"25px\"\n                          }\n                        }\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Subtitle\",\n                        \"id\": \"builder-7e06f73598864f728c37a63526fc993b\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"14.59375px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"15px\",\n                            \"color\": \"rgba(86, 86, 86, 1)\"\n                          },\n                          \"medium\": {\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"15px\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"position\": \"relative\",\n                        \"flexShrink\": \"0\",\n                        \"boxSizing\": \"border-box\",\n                        \"marginTop\": \"9px\",\n                        \"marginBottom\": \"auto\",\n                        \"paddingBottom\": \"17px\",\n                        \"paddingTop\": \"17px\"\n                      },\n                      \"medium\": {\n                        \"paddingBottom\": \"49px\",\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"92px\"\n                      },\n                      \"small\": {\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"128px\"\n                      }\n                    }\n                  }\n                ]\n              },\n              {\n                \"blocks\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"id\": \"builder-9ef154861ab5443d96aedce939ddf521\",\n                    \"component\": {\n                      \"name\": \"Image\",\n                      \"options\": {\n                        \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=998&height=1000\",\n                        \"backgroundPosition\": \"center\",\n                        \"backgroundSize\": \"cover\",\n                        \"aspectRatio\": 0.7004048582995948,\n                        \"lazy\": true,\n                        \"srcset\": \"https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=100&height=1000 100w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=200&height=1000 200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=400&height=1000 400w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=800&height=1000 800w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1200&height=1000 1200w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=1600&height=1000 1600w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=2000&height=1000 2000w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=998&height=1000 998w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=638&height=1000 638w, https://cdn.builder.io/api/v1/image/assets%2FagZ9n5CUKRfbL9t6CaJOyVSK4Es2%2F226d855cb0ee46e4a2c7baa6990c1118?width=376&height=1000 376w\",\n                        \"sizes\": \"(max-width: 638px) 100vw, 27vw\",\n                        \"height\": 685,\n                        \"width\": 998\n                      }\n                    },\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"flexShrink\": \"0\",\n                        \"position\": \"relative\",\n                        \"textAlign\": \"center\",\n                        \"lineHeight\": \"normal\",\n                        \"height\": \"auto\"\n                      },\n                      \"medium\": {\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"699px\"\n                      },\n                      \"small\": {\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"447px\"\n                      }\n                    }\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Centered Box\",\n                    \"id\": \"builder-31a8fe351a2f4ac0abff9dea2b0a9d65\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Title\",\n                        \"id\": \"builder-cd3a8932d54549979d32352c4d6d5809\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Something Great to Say</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"-1.65625px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"24px\"\n                          },\n                          \"medium\": {\n                            \"marginTop\": \"1.34375px\",\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"25px\"\n                          }\n                        }\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"layerName\": \"Subtitle\",\n                        \"id\": \"builder-634fcbb6974e4897b6b387f80974dc55\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": {\n                            \"text\": \"<p>Some more great things to elaborate on that wonderful things you have to tell your audience</p>\"\n                          }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"alignItems\": \"stretch\",\n                            \"flexShrink\": \"0\",\n                            \"position\": \"relative\",\n                            \"marginTop\": \"14.59375px\",\n                            \"textAlign\": \"center\",\n                            \"lineHeight\": \"normal\",\n                            \"height\": \"auto\",\n                            \"fontSize\": \"15px\",\n                            \"color\": \"rgba(86, 86, 86, 1)\"\n                          },\n                          \"medium\": {\n                            \"textAlign\": \"center\"\n                          },\n                          \"small\": {\n                            \"fontSize\": \"15px\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"display\": \"flex\",\n                        \"flexDirection\": \"column\",\n                        \"alignItems\": \"stretch\",\n                        \"position\": \"relative\",\n                        \"flexShrink\": \"0\",\n                        \"boxSizing\": \"border-box\",\n                        \"marginTop\": \"9px\",\n                        \"marginBottom\": \"auto\",\n                        \"paddingBottom\": \"17px\",\n                        \"paddingTop\": \"17px\"\n                      },\n                      \"medium\": {\n                        \"paddingBottom\": \"49px\",\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"92px\"\n                      },\n                      \"small\": {\n                        \"contentVisibility\": \"auto\",\n                        \"containIntrinsicSize\": \"128px\"\n                      }\n                    }\n                  }\n                ]\n              }\n            ],\n            \"space\": 36,\n            \"stackColumnsAt\": \"tablet\",\n            \"reverseColumnsWhenStacked\": false\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"alignItems\": \"stretch\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"2.34375px\",\n            \"paddingLeft\": \"0px\",\n            \"paddingRight\": \"0px\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/cli/src/__tests__/others/version.test.ts",
    "content": "import { expect, test } from 'vitest';\nimport { DEFAULT_TEST_TIMEOUT, cli } from '../utils';\n\nconst { version } = require('../../../package.json');\n\ntest(\n  'outputs version',\n  async () => {\n    const output = await cli('--version');\n    expect(output).toContain(version);\n  },\n  { timeout: DEFAULT_TEST_TIMEOUT },\n);\n\ntest(\n  'outputs help',\n  async () => {\n    const output = await cli('--help');\n    expect(output).toContain(version);\n  },\n  { timeout: DEFAULT_TEST_TIMEOUT },\n);\n"
  },
  {
    "path": "packages/cli/src/__tests__/plugins.test.ts",
    "content": "import { componentToVue, MitosisPlugin, OutputFiles, TargetContext } from '@builder.io/mitosis';\nimport { describe, expect, test } from 'vitest';\nimport { runBuildPlugins, sortPlugins } from '../build/build';\n\nconst beforeBuild = (c) => {\n  console.log(`beforeBuild ${JSON.stringify(c)}`);\n};\nconst afterbuild = (c, f) => {\n  console.log(`afterbuild ${JSON.stringify(c)} ${JSON.stringify(f)}`);\n};\nconst beforeBuildSecond = (c) => {\n  console.log(`beforeBuildSecond ${JSON.stringify(c)}`);\n};\nconst afterbuildSecond = (c, f) => {\n  console.log(`afterbuildSecond ${JSON.stringify(c)} ${JSON.stringify(f)}`);\n};\nconst beforeBuildNo = (c) => {\n  console.log(`beforeBuildNo ${JSON.stringify(c)}`);\n};\nconst afterbuildNo = (c, f) => {\n  console.log(`afterbuildNo ${JSON.stringify(c)} ${JSON.stringify(f)}`);\n};\n\nconst testPlugins: MitosisPlugin[] = [\n  () => ({\n    name: 'no-order',\n    build: {\n      pre: beforeBuildNo,\n      post: afterbuildNo,\n    },\n  }),\n  () => ({\n    name: 'second',\n    order: 2,\n    build: {\n      pre: beforeBuildSecond,\n      post: afterbuildSecond,\n    },\n  }),\n  () => ({\n    name: 'first',\n    order: 1,\n    build: {\n      pre: beforeBuild,\n      post: afterbuild,\n    },\n  }),\n];\n\ndescribe('mitosis plugin test', () => {\n  test('formatHook test mixPlugin', () => {\n    const plugins = sortPlugins([...testPlugins]).map((plugin) => plugin());\n    expect(plugins).toEqual([\n      {\n        name: 'no-order',\n        build: {\n          pre: beforeBuildNo,\n          post: afterbuildNo,\n        },\n      },\n      {\n        name: 'first',\n        order: 1,\n        build: {\n          pre: beforeBuild,\n          post: afterbuild,\n        },\n      },\n      {\n        name: 'second',\n        order: 2,\n        build: {\n          pre: beforeBuildSecond,\n          post: afterbuildSecond,\n        },\n      },\n    ]);\n  });\n  test('runHook test', async () => {\n    const _log = console.log;\n    const logs = [];\n    console.log = (str) => {\n      logs.push(str);\n    };\n    const c: TargetContext = {\n      target: 'vue',\n      generator: () => componentToVue(),\n      outputPath: '',\n    };\n    const f: {\n      componentFiles: OutputFiles[];\n      nonComponentFiles: OutputFiles[];\n    } = {\n      componentFiles: [{ outputDir: '', outputFilePath: '' }],\n      nonComponentFiles: [{ outputDir: '', outputFilePath: '' }],\n    };\n    await runBuildPlugins('pre', testPlugins)(c as TargetContext);\n    const preResult = [\n      `beforeBuildNo {\"target\":\"vue\",\"outputPath\":\"\"}`,\n      'beforeBuildSecond {\"target\":\"vue\",\"outputPath\":\"\"}',\n      'beforeBuild {\"target\":\"vue\",\"outputPath\":\"\"}',\n    ];\n    expect(logs).toEqual(preResult);\n    await runBuildPlugins('post', testPlugins)(c, f);\n\n    expect(logs).toEqual([\n      ...preResult,\n      'afterbuildNo {\"target\":\"vue\",\"outputPath\":\"\"} {\"componentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}],\"nonComponentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}]}',\n      'afterbuildSecond {\"target\":\"vue\",\"outputPath\":\"\"} {\"componentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}],\"nonComponentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}]}',\n      'afterbuild {\"target\":\"vue\",\"outputPath\":\"\"} {\"componentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}],\"nonComponentFiles\":[{\"outputDir\":\"\",\"outputFilePath\":\"\"}]}',\n    ]);\n    console.log = _log;\n  });\n});\n"
  },
  {
    "path": "packages/cli/src/__tests__/utils.ts",
    "content": "import { filesystem, system } from 'gluegun';\n\nexport const cli = async (cmd: string) => {\n  const root = filesystem.path(__dirname, '..', '..');\n  const mitosisCliScript = filesystem.path(root, 'bin', 'mitosis');\n  const shcmd = `node \"${mitosisCliScript}\" ${cmd}`;\n  console.debug(`Running: ${shcmd}`);\n  return system.run(shcmd);\n};\n\nexport const DEFAULT_TEST_TIMEOUT = 20000;\n"
  },
  {
    "path": "packages/cli/src/build/build.ts",
    "content": "import {\n  BaseTranspilerOptions,\n  MitosisComponent,\n  MitosisConfig,\n  MitosisPlugin,\n  OutputFiles,\n  ParseMitosisOptions,\n  Target,\n  TargetContext,\n  checkIsMitosisComponentFilePath,\n  checkIsSvelteComponentFilePath,\n  checkShouldOutputTypeScript,\n  createTypescriptProject,\n  mapSignalTypeInTSFile,\n  parseJsx,\n  parseSvelte,\n  removeMitosisImport,\n  renameComponentFile,\n  targets,\n} from '@builder.io/mitosis';\nimport debug from 'debug';\nimport { flow, pipe } from 'fp-ts/lib/function';\nimport { outputFile, pathExists, pathExistsSync, readFile, remove } from 'fs-extra';\nimport { clone, kebabCase } from 'lodash';\nimport { generateContextFile } from './helpers/context';\nimport { getFiles } from './helpers/files';\nimport { getOverrideFile } from './helpers/overrides';\nimport { transformImports, transpile, transpileIfNecessary } from './helpers/transpile';\n\nconst cwd = process.cwd();\n\n/**\n * This provides the default path for a target's contents, both in the input and output directories.\n */\nconst getDefaultTargetPath = ({ target }: { target: Target }): string => {\n  switch (target) {\n    default:\n      return kebabCase(target);\n  }\n};\n\nconst getTargetPath = (options: MitosisConfig, target: Target): string => {\n  if (options.getTargetPath) {\n    const targetPath = options.getTargetPath({ target });\n    if (targetPath) {\n      return targetPath;\n    }\n  }\n\n  return getDefaultTargetPath({ target });\n};\n\nexport const sortPlugins = (plugins?: MitosisPlugin[]): MitosisPlugin[] => {\n  if (!plugins) return [];\n\n  return plugins.sort((a: MitosisPlugin, b: MitosisPlugin) => (a().order || 0) - (b().order || 0));\n};\n\nconst DEFAULT_CONFIG = {\n  targets: [],\n  dest: 'output',\n  files: 'src/*',\n  overridesDir: 'overrides',\n  getTargetPath: getDefaultTargetPath,\n  options: {},\n} satisfies Partial<MitosisConfig>;\n\nconst getOptions = (config?: MitosisConfig): MitosisConfig => {\n  const newConfig: MitosisConfig = {\n    ...DEFAULT_CONFIG,\n    ...config,\n    options: {\n      ...DEFAULT_CONFIG.options,\n      ...config?.options,\n    },\n    generators: Object.assign(targets, config?.generators),\n  };\n\n  for (const target of newConfig.targets || []) {\n    /**\n     * Apply common options to all targets\n     */\n    if (newConfig.commonOptions) {\n      newConfig.options[target] = {\n        ...newConfig.commonOptions,\n        ...newConfig.options[target],\n        plugins: [\n          ...(newConfig.commonOptions?.plugins || []),\n          ...(newConfig.options[target]?.plugins || []),\n        ],\n      } as any;\n    }\n    const targetConfig: any = newConfig.options[target];\n    const plugins: MitosisPlugin[] | undefined = targetConfig?.plugins;\n    newConfig.options[target] = { ...targetConfig, plugins: sortPlugins(plugins) };\n  }\n\n  return newConfig;\n};\n\nasync function clean(options: MitosisConfig, target: Target) {\n  const targetPath = getTargetPath(options, target);\n  const outputPattern = `${options.dest}/${targetPath}/${options.files}`;\n  const oldFiles = getFiles({ files: outputPattern, exclude: options.exclude });\n\n  const newFilenames = getFiles({ files: options.files, exclude: options.exclude })\n    .map((path) =>\n      checkIsMitosisComponentFilePath(path)\n        ? renameComponentFile({ target, path, options })\n        : path.endsWith('.js') || path.endsWith('.ts')\n        ? getNonComponentOutputFileName({ target, path, options })\n        : undefined,\n    )\n    .filter((x): x is string => Boolean(x));\n\n  await Promise.all(\n    oldFiles.map(async (oldFile) => {\n      const fileExists = newFilenames.some((newFile) => oldFile.endsWith(newFile));\n\n      /**\n       * We only remove files that were removed from the input files.\n       * Modified files will be overwritten, and new files will be created.\n       */\n      if (!fileExists) {\n        await remove(oldFile);\n      }\n    }),\n  );\n}\n\ntype ParsedMitosisJson = {\n  path: string;\n  typescriptMitosisJson: MitosisComponent;\n  javascriptMitosisJson: MitosisComponent;\n};\n\nconst getRequiredParsers = (\n  options: MitosisConfig,\n): { javascript: boolean; typescript: boolean } => {\n  const targetsOptions = Object.values(options.options);\n\n  const targetsRequiringTypeScript = targetsOptions.filter(\n    (option: BaseTranspilerOptions) => option.typescript,\n  ).length;\n  const needsTypeScript = targetsRequiringTypeScript > 0;\n\n  /**\n   * We use 2 ways to check if the user requires a JS output:\n   * - either there are fewer `options[target].typescript === true` than there are items in `targets`\n   * - either there are fewer `options[target].typescript === true` than there are items in `options.options`\n   *\n   * The reason for checking in multiple ways is if there is a mismatch between the number of targets in the `targets`\n   * array compared to the configurations in `options.options`.\n   */\n  const needsJavaScript =\n    options.targets.length > targetsRequiringTypeScript ||\n    targetsOptions.length > targetsRequiringTypeScript;\n\n  return {\n    typescript: needsTypeScript,\n    javascript: needsJavaScript,\n  };\n};\n\nconst parseJsxComponent = async ({\n  options,\n  path,\n  file,\n  tsProject,\n}: {\n  options: MitosisConfig;\n  path: string;\n  file: string;\n  tsProject: ParseMitosisOptions['tsProject'];\n}) => {\n  const requiredParses = getRequiredParsers(options);\n  let typescriptMitosisJson: ParsedMitosisJson['typescriptMitosisJson'];\n  let javascriptMitosisJson: ParsedMitosisJson['javascriptMitosisJson'];\n\n  const jsxArgs: ParseMitosisOptions = {\n    ...options.parserOptions?.jsx,\n    tsProject,\n    filePath: path,\n    typescript: false,\n  };\n  if (requiredParses.typescript && requiredParses.javascript) {\n    typescriptMitosisJson = options.parser\n      ? await options.parser(file, path)\n      : parseJsx(file, { ...jsxArgs, typescript: true });\n    javascriptMitosisJson = options.parser\n      ? await options.parser(file, path)\n      : parseJsx(file, { ...jsxArgs, typescript: false });\n  } else {\n    const singleParse = options.parser\n      ? await options.parser(file, path)\n      : parseJsx(file, { ...jsxArgs, typescript: requiredParses.typescript });\n\n    // technically only one of these will be used, but we set both to simplify things types-wise.\n    typescriptMitosisJson = singleParse;\n    javascriptMitosisJson = singleParse;\n  }\n\n  const output: ParsedMitosisJson = {\n    path,\n    typescriptMitosisJson,\n    javascriptMitosisJson,\n  };\n  return output;\n};\n\nconst parseSvelteComponent = async ({ path, file }: { path: string; file: string }) => {\n  const json = await parseSvelte(file, path);\n\n  const output: ParsedMitosisJson = {\n    path,\n    typescriptMitosisJson: json,\n    javascriptMitosisJson: json,\n  };\n\n  return output;\n};\n\nconst findTsConfigFile = (options: MitosisConfig) => {\n  const optionPath = options.parserOptions?.jsx?.tsConfigFilePath;\n\n  if (optionPath && pathExistsSync(optionPath)) {\n    return optionPath;\n  }\n\n  const defaultPath = [cwd, 'tsconfig.json'].join('/');\n\n  if (pathExistsSync(defaultPath)) {\n    return defaultPath;\n  }\n\n  return undefined;\n};\n\nconst getMitosisComponentJSONs = async (options: MitosisConfig): Promise<ParsedMitosisJson[]> => {\n  const paths = getFiles({ files: options.files, exclude: options.exclude }).filter(\n    checkIsMitosisComponentFilePath,\n  );\n\n  const tsConfigFilePath = findTsConfigFile(options);\n\n  const tsProject = tsConfigFilePath ? createTypescriptProject(tsConfigFilePath) : undefined;\n\n  return Promise.all(\n    paths.map(async (path) => {\n      try {\n        const file = await readFile(path, 'utf8');\n        if (checkIsSvelteComponentFilePath(path)) {\n          return await parseSvelteComponent({ path, file });\n        } else {\n          return await parseJsxComponent({ options, path, file, tsProject });\n        }\n      } catch (err) {\n        console.error('Could not parse file:', path);\n        throw err;\n      }\n    }),\n  );\n};\n\ninterface TargetContextWithConfig extends TargetContext {\n  options: MitosisConfig;\n}\n\nconst getTargetContexts = (options: MitosisConfig) =>\n  options.targets.map(\n    (target): TargetContext => ({\n      target,\n      generator: options.generators?.[target] as any,\n      outputPath: getTargetPath(options, target),\n    }),\n  );\n\nconst buildAndOutputNonComponentFiles = async (targetContext: TargetContextWithConfig) => {\n  const files = await buildNonComponentFiles(targetContext);\n  return await outputNonComponentFiles({ ...targetContext, files });\n};\n\nexport function runBuildPlugins(type: 'pre' | 'post', plugins: MitosisPlugin[]) {\n  const debugTarget = debug(`mitosis:plugin:build:${type}`);\n\n  return async (\n    targetContext: TargetContext,\n    files?: {\n      componentFiles: OutputFiles[];\n      nonComponentFiles: OutputFiles[];\n    },\n  ) => {\n    for (let pluginFn of plugins) {\n      const plugin = pluginFn();\n      if (!plugin.build || !plugin.build[type]) continue;\n      debugTarget(`before run ${plugin.name ?? 'build'} ${type} plugin...`);\n      await plugin.build[type]?.(targetContext, files);\n      debugTarget(`run ${plugin.name ?? 'build'} ${type}  plugin done`);\n    }\n  };\n}\n\nexport async function build(config?: MitosisConfig) {\n  // merge default options\n  const options = getOptions(config);\n\n  // get all mitosis component JSONs\n  const mitosisComponents = await getMitosisComponentJSONs(options);\n\n  const targetContexts: TargetContext[] = getTargetContexts(options);\n\n  await Promise.all(\n    targetContexts.map(async (targetContext) => {\n      const plugins: MitosisPlugin[] = options?.options[targetContext.target]?.plugins ?? [];\n      await runBuildPlugins('pre', plugins)(targetContext);\n      // clean output directory\n      await clean(options, targetContext.target);\n      // clone mitosis JSONs for each target, so we can modify them in each generator without affecting future runs.\n      // each generator also clones the JSON before manipulating it, but this is an extra safety measure.\n      const files = clone(mitosisComponents);\n\n      const x = await Promise.all([\n        buildAndOutputNonComponentFiles({ ...targetContext, options }),\n        buildAndOutputComponentFiles({ ...targetContext, options, files }),\n      ]);\n\n      console.info(\n        `Mitosis: ${targetContext.target}: generated ${x[1].length} components, ${x[0].length} regular files.`,\n      );\n      await runBuildPlugins('post', plugins)(targetContext, {\n        componentFiles: x[1],\n        nonComponentFiles: x[0],\n      });\n    }),\n  );\n\n  console.info('Mitosis: generation completed.');\n}\n\n/**\n * Transpiles and outputs Mitosis component files.\n */\nasync function buildAndOutputComponentFiles({\n  target,\n  files,\n  options,\n  generator,\n  outputPath,\n}: TargetContextWithConfig & { files: ParsedMitosisJson[] }): Promise<OutputFiles[]> {\n  const debugTarget = debug(`mitosis:${target}`);\n  const shouldOutputTypescript = checkShouldOutputTypeScript({ options, target });\n\n  const output = files.map(async ({ path, typescriptMitosisJson, javascriptMitosisJson }) => {\n    const outputFilePath = renameComponentFile({ target, path, options });\n\n    /**\n     * Try to find override file.\n     * NOTE: we use the default `getTargetPath` even if a user-provided alternative is given. That's because the\n     * user-provided alternative is only for the output path, not the override input path.\n     */\n\n    const overrideFilePath = `${options.overridesDir}/${getDefaultTargetPath({ target })}`;\n    const overrideFile = await getOverrideFile({\n      filename: outputFilePath,\n      path: overrideFilePath,\n      target,\n    });\n    const outputDir = `${options.dest}/${outputPath}`;\n\n    debugTarget(`transpiling ${path}...`);\n    let transpiled = '';\n\n    if (overrideFile) {\n      debugTarget(`override exists for ${path}: ${!!overrideFile}`);\n    }\n    try {\n      const component: MitosisComponent = shouldOutputTypescript\n        ? typescriptMitosisJson\n        : javascriptMitosisJson;\n\n      /**\n       * This will allow plugins to work additional data\n       */\n      component.pluginData = { outputFilePath, outputDir, path, target };\n\n      transpiled = overrideFile ?? generator(options.options[target])({ path, component });\n      debugTarget(`Success: transpiled ${path}. Output length: ${transpiled.length}`);\n    } catch (error) {\n      debugTarget(`Failure: transpiled ${path}.`);\n      debugTarget(error);\n      throw error;\n    }\n\n    transpiled = transformImports({ target, options })(transpiled);\n\n    await outputFile(`${outputDir}/${outputFilePath}`, transpiled);\n    return { outputDir, outputFilePath };\n  });\n  return await Promise.all(output);\n}\n\nconst getNonComponentFileExtension = flow(checkShouldOutputTypeScript, (shouldOutputTypeScript) =>\n  shouldOutputTypeScript ? '.ts' : '.js',\n);\n\nconst getNonComponentOutputFileName = ({\n  target,\n  options,\n  path,\n}: {\n  path: string;\n  target: Target;\n  options: MitosisConfig;\n}) => path.replace(/\\.tsx?$/, getNonComponentFileExtension({ target, options }));\n\n/**\n * Outputs non-component files to the destination directory, without modifying them.\n */\nconst outputNonComponentFiles = async ({\n  files,\n  options,\n  outputPath,\n  target,\n}: TargetContext & {\n  files: { path: string; output: string }[];\n  options: MitosisConfig;\n}): Promise<OutputFiles[]> => {\n  const outputDir = `${options.dest}/${outputPath}`;\n  return await Promise.all(\n    files.map(async ({ path, output }) => {\n      const outputFilePath = getNonComponentOutputFileName({ options, path, target });\n      await outputFile(`${outputDir}/${outputFilePath}`, output);\n      return { outputDir, outputFilePath };\n    }),\n  );\n};\n\nasync function buildContextFile({\n  target,\n  options,\n  path,\n}: TargetContextWithConfig & { path: string }) {\n  let output = (await generateContextFile({ path, options, target })) || '';\n\n  // transpile to JS if necessary\n  if (!checkShouldOutputTypeScript({ target, options })) {\n    output = await transpile({\n      path,\n      target,\n      content: output,\n      options,\n    });\n  }\n\n  // we remove the `.lite` extension from the path for Context files.\n  path = path.replace('.lite.ts', '.ts');\n\n  return {\n    path,\n    output,\n  };\n}\n\n/**\n * Transpiles all non-component files, including Context files.\n */\nasync function buildNonComponentFiles(args: TargetContextWithConfig) {\n  const { target, options } = args;\n  const nonComponentFiles = getFiles({ files: options.files, exclude: options.exclude }).filter(\n    (file) => file.endsWith('.ts') || file.endsWith('.js'),\n  );\n\n  return await Promise.all(\n    nonComponentFiles.map(async (path): Promise<{ path: string; output: string }> => {\n      /**\n       * Try to find override file.\n       * NOTE: we use the default `getTargetPath` even if a user-provided alternative is given. That's because the\n       * user-provided alternative is only for the output path, not the override input path.\n       */\n      const overrideFilePath = `${options.overridesDir}/${getDefaultTargetPath({\n        target,\n      })}/${path}`;\n\n      const overrideFile = (await pathExists(overrideFilePath))\n        ? await readFile(overrideFilePath, 'utf8')\n        : null;\n\n      if (overrideFile) {\n        const output = pipe(\n          await transpileIfNecessary({ path, target, content: overrideFile, options }),\n          transformImports({ target, options }),\n        );\n\n        return { output, path };\n      }\n\n      const isContextFile = path.endsWith('.context.lite.ts');\n      if (isContextFile) {\n        return buildContextFile({ ...args, path });\n      }\n\n      const file = await readFile(path, 'utf8');\n\n      const output = pipe(\n        await transpileIfNecessary({ path, target, options, content: file }),\n        transformImports({ target, options }),\n        (code) => mapSignalTypeInTSFile({ code, target }),\n        removeMitosisImport,\n      );\n\n      return { output, path };\n    }),\n  );\n}\n\nif (require.main === module) {\n  build().catch(console.error);\n}\n"
  },
  {
    "path": "packages/cli/src/build/helpers/context.ts",
    "content": "import {\n  MitosisConfig,\n  Target,\n  checkShouldOutputTypeScript,\n  contextToAngular,\n  contextToQwik,\n  contextToReact,\n  contextToSolid,\n  contextToSvelte,\n  contextToVue,\n  parseContext,\n} from '@builder.io/mitosis';\nimport { readFile } from 'fs-extra';\nimport { camelCase, last, upperFirst } from 'lodash';\n\nexport const generateContextFile = async ({\n  path,\n  options,\n  target,\n}: {\n  path: string;\n  options: MitosisConfig;\n  target: Target;\n}) => {\n  // 'foo/bar/my-thing.context.ts' -> 'MyThing'\n  const name = upperFirst(camelCase(last(path.split('/'))?.split('.')[0]));\n  const context = parseContext(await readFile(path, 'utf8'), { name });\n  if (!context) {\n    console.warn('Could not parse context from file', path);\n  } else {\n    switch (target) {\n      case 'svelte':\n        return contextToSvelte(options.options.svelte || {})({ context });\n      case 'vue':\n        return contextToVue(options.options[target] || {})({ context });\n      case 'solid':\n        return contextToSolid()({ context });\n      case 'preact':\n        return contextToReact({\n          preact: true,\n          typescript: checkShouldOutputTypeScript({ options, target }),\n        })({\n          context,\n        });\n      case 'react':\n      case 'reactNative':\n      case 'rsc':\n        return contextToReact({ typescript: checkShouldOutputTypeScript({ options, target }) })({\n          context,\n        });\n      case 'qwik':\n        return contextToQwik()({ context });\n      case 'angular':\n        return contextToAngular()({ context });\n      default:\n        console.warn('Context files are not supported for this target. Outputting no-op');\n        return `// No op\n          export default {};\n        `;\n    }\n  }\n};\n"
  },
  {
    "path": "packages/cli/src/build/helpers/files.ts",
    "content": "import glob from 'fast-glob';\n\n/**\n * get all files that match `files` glob, and filter out those that match `exclude` glob.\n *\n */\nexport const getFiles = ({\n  files,\n  exclude,\n}: {\n  files: string | string[] | undefined;\n  exclude: string[] | undefined;\n}): string[] => {\n  return files ? glob.sync(files, { ignore: exclude, onlyFiles: true, cwd: process.cwd() }) : [];\n};\n"
  },
  {
    "path": "packages/cli/src/build/helpers/get-simple-id.ts",
    "content": "export function getSimpleId() {\n  return Number(String(Math.random()).split('.')[1]).toString(36);\n}\n"
  },
  {
    "path": "packages/cli/src/build/helpers/nullable.ts",
    "content": "export type Nullable<T> = T | null | undefined;\n\nexport const checkIsDefined = <T>(maybeT: Nullable<T>): maybeT is T =>\n  maybeT !== null && maybeT !== undefined;\n"
  },
  {
    "path": "packages/cli/src/build/helpers/overrides.ts",
    "content": "import { Target } from '@builder.io/mitosis';\nimport { pathExists, readFile } from 'fs-extra';\n\nconst getOverrideFilenames = ({\n  filename,\n  target,\n}: {\n  filename: string;\n  target: Target;\n}): string[] => {\n  switch (target) {\n    case 'alpine':\n    case 'angular':\n    case 'customElement':\n    case 'html':\n    case 'liquid':\n    case 'lit':\n    case 'marko':\n    case 'mitosis':\n    case 'stencil':\n    case 'svelte':\n    case 'swift':\n    case 'template':\n    case 'webcomponent':\n    case 'vue':\n      return [filename];\n\n    // For all JSX targets, we want to be flexible and allow any possible extension\n    case 'react':\n    case 'reactNative':\n    case 'rsc':\n    case 'preact':\n    case 'solid':\n    case 'qwik': {\n      // strip 'tsx', 'ts', 'jsx', 'js' from filename\n      const filenameStrippedFromExtensions = filename.replace(/(\\.jsx?|\\.tsx?)$/, '');\n\n      const EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js'];\n      const filePaths: string[] = EXTENSIONS.map((ext) => filenameStrippedFromExtensions + ext);\n\n      return filePaths;\n    }\n\n    default:\n      return [filename];\n  }\n};\nexport const getOverrideFile = async ({\n  path,\n  filename,\n  target,\n}: {\n  path: string;\n  filename: string;\n  target: Target;\n}): Promise<string | null> => {\n  const filePaths = getOverrideFilenames({ filename, target }).map((filename) =>\n    [path, filename].join('/'),\n  );\n\n  const foundFilePath = (\n    await Promise.all(\n      filePaths.map(async (filePath) => ({ filePath, exists: await pathExists(filePath) })),\n    )\n  ).find(({ exists }) => exists);\n\n  if (foundFilePath) {\n    return readFile(foundFilePath.filePath, 'utf8');\n  } else {\n    return null;\n  }\n};\n"
  },
  {
    "path": "packages/cli/src/build/helpers/transpile.ts",
    "content": "import {\n  checkIsLiteComponentFilePath,\n  checkShouldOutputTypeScript,\n  MitosisConfig,\n  renameComponentImport,\n  renameImport,\n  Target,\n} from '@builder.io/mitosis';\nimport * as esbuild from 'esbuild';\n\n/**\n * Remove `.lite` or `.svelte` extensions from imports without having to load a slow parser like babel\n * E.g.\n *\n * convert `import { foo } from './block.lite';` -> `import { foo } from './block';`\n *\n * convert `import { foo } from './block.svelte';` -> `import { foo } from './block';`\n */\nexport const transformImports =\n  ({ target, options }: { target: Target; options: MitosisConfig }) =>\n  (code: string) => {\n    // we start by replacing all `context.lite` imports with `context`\n    // This Context replace is only needed for non-mitosis components, i.e. plain `.js`/`.ts` files.\n    // Mitosis components have logic that transform context import paths correctly.\n    code = code.replace(/\\.context\\.lite(.js|.ts)?(['\"])/g, `.context.js$2`);\n\n    // afterwards, we replace all component imports with the correct file extension\n    code = renameComponentImport({\n      importPath: code,\n      target: target,\n      explicitImportFileExtension: options.options?.[target]?.explicitImportFileExtension || false,\n    });\n\n    // if we really need to update the file extensions as well from .js to something else we do it here\n    code = renameImport({\n      importPath: code,\n      target: target,\n      explicitImportFileExtension: options.options?.[target]?.explicitImportFileExtension || false,\n    });\n    return code;\n  };\n\n/**\n * Runs `esbuild` on a file, and performs some additional transformations.\n */\nexport const transpile = async ({\n  path,\n  content,\n  target,\n  options,\n}: {\n  path: string;\n  content: string;\n  target: Target;\n  options: MitosisConfig;\n}): Promise<string> => {\n  try {\n    const transpilerOptions = options.options[target]?.transpiler;\n    const format = transpilerOptions?.format || 'esm';\n\n    const output = await esbuild.transform(content, {\n      format: format,\n      /**\n       * Collisions occur between TSX and TS Generic syntax. We want to only provide this loader config if the file is\n       * a mitosis `.lite.tsx` file.\n       */\n      loader: checkIsLiteComponentFilePath(path) ? 'tsx' : 'ts',\n      target: 'es6',\n    });\n\n    if (output.warnings.length) {\n      console.warn(`Warnings found in file: ${path}`, output.warnings);\n    }\n\n    return output.code;\n  } catch (e) {\n    console.error(`Error found in file: ${path}`);\n    throw e;\n  }\n};\n\nexport const transpileIfNecessary = async ({\n  content,\n  options,\n  path,\n  target,\n}: {\n  path: string;\n  content: string;\n  target: Target;\n  options: MitosisConfig;\n}): Promise<string> =>\n  checkShouldOutputTypeScript({ target, options })\n    ? content\n    : await transpile({ path, target, options, content });\n"
  },
  {
    "path": "packages/cli/src/cli.ts",
    "content": "import { build } from 'gluegun';\nimport { Toolbox } from 'gluegun/build/types/domain/toolbox';\nimport { getToolboxInfo } from './helpers/get-toolbox-info';\n\nconst help = (toolbox: Toolbox) => toolbox.print.info(getToolboxInfo(toolbox));\n\n/**\n * Create the cli and kick it off\n */\nasync function run(argv: any) {\n  // create a CLI runtime\n  const cli = build()\n    .brand('mitosis')\n    .src(__dirname)\n    .plugins('./node_modules', { matching: 'mitosis-*', hidden: true })\n    .help(help) // provides default for help, h, --help, -h\n    .version() // provides default for version, v, --version, -v\n    // enable the following method if you'd like to skip loading one of these core extensions\n    // this can improve performance if they're not necessary for your project:\n    .exclude([])\n    .create();\n  // and run it\n  const toolbox = await cli.run(argv);\n\n  // send it back (for testing, mostly)\n  return toolbox;\n}\n\nmodule.exports = { run };\n"
  },
  {
    "path": "packages/cli/src/commands/build.ts",
    "content": "import { MitosisConfig, Target } from '@builder.io/mitosis';\nimport { GluegunCommand, GluegunParameters } from 'gluegun';\nimport { build } from '../build/build';\nimport { getMitosisConfig } from '../helpers/get-mitosis-config';\n\nconst getTargets = (mitosisConfig: MitosisConfig, cliOpts: GluegunParameters['options']) => {\n  const targetsFromCli: Target[] = (cliOpts.targets || '').split(',');\n  const excludeTargetsMap: Record<Target, true> = (cliOpts.excludeTargets || '')\n    .split(',')\n    .reduce((accu, t) => {\n      accu[t] = true;\n      return accu;\n    }, {});\n\n  const targets = Array.from(new Set([...mitosisConfig.targets, ...targetsFromCli])).filter(\n    (t) => t && !excludeTargetsMap[t],\n  );\n  return targets;\n};\n\nexport const buildCommand = async ({\n  configRelPath,\n  testConfig,\n  options,\n}: {\n  configRelPath: string;\n  options: any;\n  testConfig?: boolean;\n}): Promise<any> => {\n  const config = await getMitosisConfig(configRelPath);\n  if (!config) {\n    throw new Error(`No config file found for Mitosis.`);\n  } else if (testConfig) {\n    return config;\n  }\n  const targets = getTargets(config, options);\n  await build({\n    ...config,\n    targets,\n  });\n};\n\nconst command: GluegunCommand = {\n  name: 'build',\n  alias: 'b',\n  run: async (toolbox) => {\n    const { parameters } = toolbox;\n    const options = parameters.options;\n    const configRelPath = options.config ?? options.c;\n    await buildCommand({ configRelPath, options });\n  },\n};\n\nmodule.exports = command;\n"
  },
  {
    "path": "packages/cli/src/commands/compile.ts",
    "content": "import {\n  GeneratorOptions,\n  MitosisComponent,\n  MitosisPlugin,\n  Target,\n  builderContentToMitosisComponent,\n  compileAwayBuilderComponents,\n  parseJsx,\n  parseSvelte,\n  targets,\n} from '@builder.io/mitosis';\nimport { GluegunCommand } from 'gluegun';\nimport { join } from 'path';\nimport { getMitosisConfig } from '../helpers/get-mitosis-config';\nimport { UnionToIntersection } from '../types';\n\ntype GeneratorOpts = GeneratorOptions[Target];\n\ntype AllGeneratorOption = UnionToIntersection<GeneratorOpts>;\n// The only purpose this really serves is to ensure I provide a flag API\n// for ever generator's option.\ntype AllGeneratorOptionKeys = keyof AllGeneratorOption;\n\nconst command: GluegunCommand = {\n  name: 'compile',\n  alias: 'c',\n  run: async (toolbox) => {\n    const { parameters, strings, filesystem, print } = toolbox;\n    const opts = parameters.options;\n\n    if (opts.l ?? opts.list ?? false) {\n      return listTargets();\n    }\n\n    // config file\n    const configRelPath = opts.config ?? opts.c;\n    // Flags and aliases\n    const from_ = strings.camelCase(opts.f ?? opts.from ?? 'mitosis');\n    const to = strings.camelCase(opts.t ?? opts.to);\n    let out = opts.o ?? opts.out;\n    const force = opts.force ?? false;\n    const dryRun = opts.dryRun ?? opts.n ?? false;\n    const outDir = opts.outDir;\n\n    const header = opts.header;\n\n    const plugins: MitosisPlugin[] = [];\n\n    if (!opts.builderComponents) {\n      plugins.push(compileAwayBuilderComponents());\n    }\n\n    const mitosisConfig = await getMitosisConfig(configRelPath);\n    const generatorOptions = mitosisConfig?.options?.[to as keyof GeneratorOptions];\n\n    const generatorOpts = {\n      ...generatorOptions,\n      prettier: opts.prettier ?? true,\n      plugins: [...plugins, ...(generatorOptions?.plugins || [])],\n      format: opts.format,\n      prefix: opts.prefix,\n      includeIds: opts.includeIds,\n      stylesType: opts.styles,\n      stateType: opts.state,\n      type: opts.type,\n      api: opts.api,\n      cssNamespace: opts.cssNamespace,\n    } as any as Partial<{ [K in AllGeneratorOptionKeys]: any }>;\n\n    // Positional Args\n    const paths = parameters.array || [];\n\n    // Flag configuration state\n    const isStdin = parameters.first === '-' || paths.length === 0;\n\n    // Input validations\n\n    // Validate that \"--to\" is supported\n    if (!isTarget(to)) {\n      console.error(`no matching output target for \"${to}\"`);\n      process.exit(1);\n    }\n\n    const generator = targets[to];\n\n    if (out && paths.length > 1) {\n      console.error(`--out doesn't support multiple input files, did you mean --outDir?`);\n      process.exit(1);\n    }\n\n    async function* readFiles() {\n      if (isStdin) {\n        const data = await readStdin();\n        yield { data };\n      }\n      for (const path of paths) {\n        if (filesystem.exists(path) !== 'file') {\n          print.error(`\"${path}\" is not a file`);\n          process.exit(1);\n        }\n        const data = filesystem.read(path);\n        yield { path, data };\n      }\n    }\n\n    for await (const { data, path } of readFiles()) {\n      let output: any;\n\n      if (outDir) {\n        out = join(outDir, path!);\n      }\n\n      // Validate that \"--out\" file doesn't already exist\n      if (force === false && out && filesystem.exists(out) === 'file') {\n        print.error(`${out} already exists. Use --force if you want to overwrite existing files.`);\n        process.exit(1);\n      }\n\n      try {\n        let json: MitosisComponent;\n\n        switch (from_) {\n          case 'mitosis':\n            json = parseJsx(data!, { typescript: generatorOpts.typescript });\n            break;\n\n          case 'builder':\n            json = builderContentToMitosisComponent(JSON.parse(data!));\n            break;\n\n          case 'svelte':\n            json = await parseSvelte(data!);\n            break;\n          default:\n            print.error(`${from_} is not a valid input type`);\n            process.exit(1);\n        }\n\n        // TODO validate generator options\n        output = generator(generatorOpts as any)({ component: json, path });\n      } catch (e) {\n        print.divider();\n        print.info(`Path: ${path}`);\n        print.divider();\n        print.info('Error:');\n        print.error(e);\n        process.exit(1);\n      }\n\n      const isJSON = typeof output === 'object';\n\n      if (!isJSON) {\n        output = header ? `${header}\\n${output}` : output;\n      }\n\n      if (!out) {\n        if (isJSON) {\n          console.log(JSON.stringify(output, null, 2));\n          return;\n        }\n        console.log(output);\n        return;\n      }\n\n      print.info(out);\n\n      if (!dryRun) {\n        filesystem.write(out, output);\n      }\n    }\n  },\n};\n\nmodule.exports = command;\n\n/**\n * List all targets (args to --to). This could be moved to it's own command at\n * some point depending on the desired API.\n */\nfunction listTargets() {\n  for (const prop of Object.keys(targets)) {\n    console.log(prop);\n  }\n  return;\n}\n\nfunction isTarget(term: string): term is Target {\n  return typeof targets[term as keyof typeof targets] !== 'undefined';\n}\n\nasync function readStdin() {\n  const chunks: Buffer[] = [];\n\n  await new Promise((res) =>\n    process.stdin\n      .on('data', (data) => {\n        return chunks.push(data);\n      })\n      .on('end', () => {\n        return res(true);\n      }),\n  );\n\n  return Buffer.concat(chunks).toString('utf-8');\n}\n"
  },
  {
    "path": "packages/cli/src/commands/new.ts",
    "content": "import { GluegunCommand } from 'gluegun';\n\nconst command: GluegunCommand = {\n  name: 'new',\n  alias: 'n',\n  description: 'mitosis new [options]',\n  async run(toolbox) {\n    const sys = toolbox.system;\n    const pkg = toolbox.packageManager;\n    const print = toolbox.print;\n\n    async function exec(cmd: any, opts?: any) {\n      try {\n        const result = await sys.exec(cmd, opts);\n        result.stdout && print.info(result.stdout);\n      } catch (e: any) {\n        print.error(`Command failed with exit code ${e.exitCode}: ${e.command}`);\n        e.stdout && print.error(e.stdout);\n        e.stderr && print.error(e.stderr);\n        process.exit(1);\n      }\n    }\n\n    // npm init\n    const spinner = print.spin({});\n\n    spinner.start('Creating new project');\n\n    await exec('npm init -y');\n\n    spinner.succeed('Wrote package.json');\n\n    spinner.start('Installing packages');\n\n    await pkg.add(['@builder.io/mitosis', '@builder.io/mitosis-cli', 'typescript'], {\n      dev: true,\n      force: 'npm',\n    });\n\n    spinner.succeed('Installed packages');\n\n    toolbox.template.generate({\n      template: 'tsconfig.json.ejs',\n      target: 'tsconfig.json',\n    });\n\n    spinner.succeed('Wrote tsconfig.json');\n\n    toolbox.template.generate({\n      template: 'mitosis.config.js.ejs',\n      target: 'mitosis.config.js',\n    });\n\n    spinner.succeed('Wrote mitosis.config.js ');\n\n    toolbox.template.generate({\n      template: 'component.lite.tsx.ejs',\n      target: 'src/component.lite.tsx',\n    });\n\n    spinner.succeed('Wrote src/component.lite.tsx');\n\n    spinner.stopAndPersist({ text: 'Done!' });\n\n    return;\n  },\n};\n\nexport default command;\n"
  },
  {
    "path": "packages/cli/src/extensions/cli-extension.ts",
    "content": "import { GluegunToolbox } from 'gluegun';\n\n// add your CLI-specific functionality here, which will then be accessible\n// to your commands\nmodule.exports = (toolbox: GluegunToolbox) => {\n  toolbox.foo = () => {\n    toolbox.print.info('called foo extension');\n  };\n\n  // enable this if you want to read configuration in from\n  // the current folder's package.json (in a \"mitosis\" property),\n  // mitosis.config.json, etc.\n  // toolbox.config = {\n  //   ...toolbox.config,\n  //   ...toolbox.config.loadConfig(\"mitosis\", process.cwd())\n  // }\n};\n"
  },
  {
    "path": "packages/cli/src/helpers/get-mitosis-config.ts",
    "content": "import { MitosisConfig } from '@builder.io/mitosis';\n\nimport { cosmiconfig, CosmiconfigResult } from 'cosmiconfig';\nimport { basename, extname, resolve } from 'path';\n\nfunction getFilenameWithoutExtension(filePath: string): string {\n  const fileName = basename(filePath);\n  const fileExtension = extname(fileName);\n  return fileName.replace(fileExtension, '');\n}\n\n/**\n * @param relPath { string } the relative path from pwd to config-file\n */\nexport async function getMitosisConfig(relPath?: string): Promise<MitosisConfig | null> {\n  const moduleName = relPath ? getFilenameWithoutExtension(relPath) : 'mitosis.config';\n\n  const explorerSync = cosmiconfig(moduleName, {\n    searchPlaces: [\n      'package.json',\n      `${moduleName}.json`,\n      `${moduleName}.yaml`,\n      `${moduleName}.yml`,\n      `${moduleName}.js`,\n      `${moduleName}.ts`,\n      `${moduleName}.mjs`,\n      `${moduleName}.cjs`,\n      `.config/${moduleName}.json`,\n      `.config/${moduleName}.yaml`,\n      `.config/${moduleName}.yml`,\n      `.config/${moduleName}.js`,\n      `.config/${moduleName}.ts`,\n      `.config/${moduleName}.mjs`,\n      `.config/${moduleName}.cjs`,\n    ],\n  });\n\n  let configResult: CosmiconfigResult;\n\n  if (relPath) {\n    const path = resolve(process.cwd(), relPath);\n    configResult = await explorerSync.load(path);\n  } else {\n    configResult = await explorerSync.search();\n  }\n\n  if (configResult && !configResult.isEmpty) {\n    return configResult.config;\n  }\n\n  return null;\n}\n"
  },
  {
    "path": "packages/cli/src/helpers/get-toolbox-info.ts",
    "content": "import { Toolbox } from 'gluegun/build/types/domain/toolbox';\n\nexport const getToolboxInfo = (toolbox: Toolbox): string => {\n  return `\nmitosis command line component processor [version ${toolbox.meta.version()}]\n\nUSAGE\n\tmitosis compile --to=<format> [options] [files]\n\tmitosis compile -t=<format> [options] [files]\n\n\tIf no [input-files] are specified or when [files] is \"-\", input\n\tis read from standard input.\n\nEXAMPLES\n\tmitosis compile -t react component.tsx\n\tmitosis compile -t react < component.tsx\n\tcat component.tsx | mitosis compile -t html -\n\tmitosis compile -t react --out-dir build -- src/**/*.tsx\n\nOPTIONS\n\t--to=<format>, -t=<format>\n\t\tSpecify output format. <format> can be one of:\n\t\t\n\t\t- alpine\n                - angular\n                - builder\n                - customComponent\n                - html\n                - liquid\n                - lit\n                - marko\n                - mitosis\n                - preact\n                - qwik\n                - react\n                - reactNative\n                - rsc\n                - solid\n                - stencil\n                - svelte\n                - swift\n                - template\n                - vue\n\t--from=<format>, -f=<format>\n\t\tSpecify input format. <format> can be one of:\t\t\n\t\t- mitosis\n\t\t- builder\n\t\t- svelte\n\t--list, -l\n\t\tList available output formats.\n\t--config=<file>, -c=<file>\n\t\tSpecify config file. Defaults to 'mitosis.config.js'.\nOUTPUT OPTIONS\n\t--out=<file>, -o=<file>\n\t\tEmit output to a single file\n\t--out-dir=<dir>\n\t\tRedirect output structure to <dir>. Files written to <dir> preserve\n\t\ttheir structure relative to the current directory.\n\n\t\tFor example, given a directory structure like\n\n\t\t└── src\n\t\t   ├── a.tsx\n\t\t   ├── b.tsx\n\t\t   └── c.tsx\n\n\t\tThe command \"mitosis compile -t react --out-dir lib -- src/*.tsx\" would\n\t\tproduce a structure like:\n\n\t\t├── src\n\t\t│  ├── a.tsx\n\t\t│  ├── b.tsx\n\t\t│  └── c.tsx\n\t\t└── lib\n\t\t   └── src\n\t\t      ├── a.tsx\n\t\t      ├── b.tsx\n\t\t      └── c.tsx\n\n\t--dry-run, -n\n\t\tPerform a trial run with no changes made.\n\t--force\n\t\tOverwrite existing files.\n\t--header=<string>\n\t\tAdd a preamble to the document. Useful if you want to include a\n\t\tlicense or an import statement. Header will be ignored if the\n\t\toutput is JSON.\n\t--builder-components\n\t\tCompiled output should will include builder components where\n\t\tavailable. Useful if you're outputing mitosis that will run\n\t\tin Builder.\n\nGENERATOR OPTIONS\n\t--format=<format>\n\t--prefix=<prefix>\n\t--includeIds=<include_ids>\n\t--styles=<library_or_method>\n\t--state=<library_or_method>\n`.trim();\n};\n"
  },
  {
    "path": "packages/cli/src/types.ts",
    "content": "export type UnionToIntersection<Union> =\n  // This basically just runs the next extends clause in a loop. The second\n  // extends clause pulls each member of the union out, and because\n  // they're implied to be a valid contract, they're merged into an\n  // intersection.\n  (Union extends any ? (_: Union) => any : never) extends (_: infer Intersection) => any\n    ? Intersection\n    : never;\n"
  },
  {
    "path": "packages/cli/src/typings.d.ts",
    "content": "declare module 'de-indent';\n"
  },
  {
    "path": "packages/cli/tsconfig.build.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"exclude\": [\"src/**/*.raw.tsx\", \"src/**/*.test.ts\", \"src/**/*.snap\"]\n}\n"
  },
  {
    "path": "packages/cli/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"jsx\": \"preserve\",\n    \"resolveJsonModule\": true,\n    \"sourceMap\": false,\n    \"inlineSourceMap\": true,\n    \"outDir\": \"dist\",\n    \"strict\": true,\n    \"noImplicitAny\": false,\n    \"target\": \"es5\",\n    \"declaration\": true,\n    \"declarationDir\": \"dist/types\",\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"skipLibCheck\": true,\n    \"skipDefaultLibCheck\": true,\n    \"rootDir\": \"./src\",\n    \"jsxImportSource\": \"@builder.io/mitosis\"\n  },\n  \"include\": [\"src/**/*\"]\n}\n"
  },
  {
    "path": "packages/cli/vite.config.ts",
    "content": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    include: ['**/*.test.ts'],\n  },\n});\n"
  },
  {
    "path": "packages/core/.npmrc",
    "content": "# avoid accidentally using npm\n# https://github.com/yarnpkg/yarn/issues/4895#issuecomment-545644733\nengine-strict=true\n"
  },
  {
    "path": "packages/core/.yarnrc.yml",
    "content": "npmPublishAccess: \"public\""
  },
  {
    "path": "packages/core/CHANGELOG.md",
    "content": "# Change Log\n\n## 0.13.0\n\n### Minor Changes\n\n- 720e30b: add symbol name serialization to enable symbols to work well with editor-ai\n\n## 0.12.1\n\n### Patch Changes\n\n- 072c095: [angular]:\n\n  Fix minor issues for `api=signals`:\n\n  - Missing `OnDestroy` import\n  - `onMount` hook will be `AfterViewInit` instead of `OnInit`\n  - HTML template uses prettiers [html-whitespace-sensitivity](https://github.com/angular/angular/issues/37635#issuecomment-2298369500) to avoid spaces around content\n\n## 0.12.0\n\n### Minor Changes\n\n- 2bd0070: feat: Builder Text node is no longer stripped away by default when converting to Mitosis\n\n## 0.11.6\n\n### Patch Changes\n\n- 314b396: Builder: improve accuracy of invalid binding detection\n- f442a8c: fix: support for builder custom component with a colon in their name\n\n## 0.11.5\n\n### Patch Changes\n\n- 7ca7290: remove Circular References for `componentToBuilder` generator\n- 22ba7c0: Correct the conversion of MitosisJSX `For` component to Builder JSON `repeat.collection`\n\n## 0.11.4\n\n### Patch Changes\n\n- b405755: fix issue where bindings' responsiveStyles keys (when destructured) aren't well accessed.\n\n## 0.11.3\n\n### Patch Changes\n\n- 95cf7e0: Angular: generator handles self closing tags with components properly\n\n## 0.11.2\n\n### Patch Changes\n\n- 9d47e1a: feat: add `layerLocked` and `groupLocked` attribute support for builder json\n\n## 0.11.1\n\n### Patch Changes\n\n- 9052eb6: [React Native] Fix: import `StyleSheet` from React Native when styles are used\n\n## 0.11.0\n\n### Minor Changes\n\n- 3ac5f63: [Angular] revamp of the angular signals generator\n\n  ### New\n\n  - Support for template strings inside templates (converted to computed values)\n  - Support for spread values inside templates (converted to computed values)\n  - Support for TS `as X` expressions inside templates (converted to computed values)\n  - `export default class` component support using `defaultExportComponents` option\n  - Support dynamic component rendering (`ngComponentOutlet`)\n  - Dependent signals initialization via `onInit`\n  - `onMount` hook code to run only in the browser after view initialization\n  - `ngSkipHydration` support using `useMetadata`\n  - Helper utilities to set attributes and events on elements from arbitrary spread props\n  - Fully typed component inputs\n  - Dual-mode `computed()` handling:\n    - In a `For` context with index and forName, uses plain functions\n    - Otherwise, uses Angular’s `computed`\n  - Binding functions when passed as props\n\n  ### Fixes\n\n  - Functions erroneously passed as `fn()` in callable expressions\n  - Callable-expression arguments not updating `state.x` or `props.x` to `x()`\n\n### Patch Changes\n\n- 843814f: fix: do not generate empty expressions with slots\n\n## 0.10.0\n\n### Minor Changes\n\n- dee8a62: add flag for serializing and parsing deeply nested nodes\n\n## 0.9.5\n\n### Patch Changes\n\n- df7c51b: Addresses issue in the swift string format generator\n\n## 0.9.4\n\n### Patch Changes\n\n- dc3de1e: Update experimental swift output\n\n## 0.9.3\n\n### Patch Changes\n\n- ada6d73: [all]: update jsx-runtime.d.ts\n- de198af: expressions in action bindings are converted to call expressions\n- 1eb4d28: Builder: Symbol information is preserved\n\n## 0.9.2\n\n### Patch Changes\n\n- d3502a7: [React] Feat: add `styleTagsPlacement` option to react options that dictates where the style tags should get injected\n\n## 0.9.1\n\n### Patch Changes\n\n- 329e754: Correctly handle Fragments in Builder (\"Core:Fragment\" component name not \"Fragment\")\n\n## 0.9.0\n\n### Minor Changes\n\n- 8ad66fd: [angular]: Angular v17.2+ uses [signals](https://angular.dev/guide/signals) as a new feature.\n  This allows the generator to match better with other targets (`onUpdate` becomes [`effect`](https://angular.dev/guide/signals#effects)).\n\n  This PR will rewrite the complete Angular generator to match all new features for Angular.\n\n  You can access the new Angular generator by using the `api=\"signals\"` inside your mitosis config e.g.:\n\n  ```js\n  /**\n   * @type {import('@builder.io/mitosis'.MitosisConfig)}\n   */\n  module.exports = {\n    files: 'src/**',\n    targets: ['angular', 'react', 'vue'],\n    options: {\n      angular: {\n        api: 'signals',\n      },\n      react: {},\n      vue: {},\n    },\n  };\n  ```\n\n  Furthermore, this PR will fix some issues with the angular output by using Babel instead of search and replace. Additionally, we use [`@if`](https://angular.dev/api/core/@if) etc. to provide a better output.\n\n  Some features are not yet implemented for signals api:\n\n  - Spread props - `<div {...rest}>{children}</div>`\n  - Dynamic components:\n\n    ```tsx\n    export default function MyComponent(props) {\n      const [obj, setObj] = useState(FooComponent);\n\n      return <obj>{props.children}</obj>;\n    }\n    ```\n\n  There are some new metadata properties for Angular if you use the signals api:\n\n  ```tsx\n  useMetadata({\n    angular: {\n      signals: {\n        writeable: ['disabled'],\n        required: ['label'],\n      },\n    },\n  });\n  ```\n\n  - `writeable` will use `model()` to enable two-way binding for the property.\n  - `required` will convert the `input` to a `required` input.\n\n### Patch Changes\n\n- a65e72b: JSX generator properly escapes single character > and <\n\n## 0.8.0\n\n### Minor Changes\n\n- 0fe1fdb: Builder: add escapeInvalidCode flag, drop invalid bindings\n\n## 0.7.6\n\n### Patch Changes\n\n- cb7be32: [all] export `types.ts` to enable `@type` comment for JS like this: `/** @type {import('@builder.io/mitosis').ToReactOptions} */`\n\n## 0.7.5\n\n### Patch Changes\n\n- 5dd61e2: [Vue] Fix: use $tagName from Builder JSON when available\n- 0a49334: [stencil] Fix issue for `EventEmitter` using Parameters as type instead of ReturnType\n\n## 0.7.4\n\n### Patch Changes\n\n- 559cf86: Don't output JSX attributes for Mitosis generator that are invalid (e.g. start with @ or :)\n\n## 0.7.3\n\n### Patch Changes\n\n- 8d94333: [Svelte] Bug: Fixed handling for key attribute due to its unique syntax and absence in the standard props\n- 2ad4262: [stencil]: Fix issue with `@Event` props not using [`EventEmitter`](https://stenciljs.com/docs/events#event-decorator)\n\n## 0.7.2\n\n### Patch Changes\n\n- f87bd64: [Angular] Use tagName to generate\n\n## 0.7.1\n\n### Patch Changes\n\n- 3d44b65: Properly encode \"<\", \">\", and other chars in text in Mitosis JSX output\n\n## 0.7.0\n\n### Minor Changes\n\n- de31a91: [stencil]: Improve props\n\n  - Fix issue with props starting with `on` converted to \"wrong\" `@Events` - Stencil adds `on` automatically to events\n  - Remove `children` prop from `@Prop` - Stencil uses `<slot>` for children\n  - Add [`PropOptions`](https://stenciljs.com/docs/properties#prop-options) to `ToStencilOptions` and `StencilMetadata`. You can use it like this:\n\n  ```tsx\n  import { useMetadata } from '@builder.io/mitosis';\n\n  useMetadata({\n      stencil: {\n          propOptions: {\n              className: {\n                  attribute: 'classname',\n                  mutable: false,\n                  reflect: false,\n              },\n          },\n      },\n  });\n\n  export default function MyBasicComponent(props: {className:string}) {\n      ...\n  }\n  ```\n\n### Patch Changes\n\n- d5f3eea: JSX Parser: remove standalone null expressions\n\n## 0.6.8\n\n### Patch Changes\n\n- db70010: Builder: generator does not generate duplicate option mappings\n\n## 0.6.7\n\n### Patch Changes\n\n- 781ad7b: [react]: Changed `defaultProps` generation for react, because defaultProps for function components is deprecated\n\n## 0.6.6\n\n### Patch Changes\n\n- 997f673: [stencil] add dependency handling for onUpdate hook\n\n## 0.6.5\n\n### Patch Changes\n\n- 3a6216e: [Builder]: Remove broken emoji from text\n\n## 0.6.4\n\n### Patch Changes\n\n- 8e9e3c3: [All] Normalize name of mitosis node before assigning it to className\n\n## 0.6.3\n\n### Patch Changes\n\n- 05257f2: [Builder]: parser does not strip falsey style values\n\n## 0.6.2\n\n### Patch Changes\n\n- 0b55dc3: [Builder]: bound call expression styles are preserved in generator\n\n## 0.6.1\n\n### Patch Changes\n\n- 74b1a19: Angular: support to change the change detection strategy to `OnPush` using `useMetadata`\n\n  ```ts\n  useMetadata({\n    angular: {\n      changeDetection: 'OnPush',\n    },\n  });\n  ```\n\n- 74b1a19: Angular: support to bypass sanitization of innerHTML by default, this can be overriden in `useMetadata`\n\n  ```ts\n  useMetadata({\n    angular: {\n      sanitizeInnerHTML: true, // doesn't use the sanitizer.bypassSecurityTrustHtml\n    },\n  });\n  ```\n\n## 0.6.0\n\n### Minor Changes\n\n- 93575b5: Normalize name to create valid className\n\n## 0.5.38\n\n### Patch Changes\n\n- 469394f: Builder: include Column widths in generator\n\n## 0.5.37\n\n### Patch Changes\n\n- f208f94: Builder: unsupported bound styles are removed to avoid crashes\n\n## 0.5.36\n\n### Patch Changes\n\n- a68bd42: [All] Bug: Fix arrow function expressions in non-on properties\n- b91dfa7: Builder: bound style string literals are not removed\n\n## 0.5.35\n\n### Patch Changes\n\n- b6a01ab: Fix: properly handle innerHTML properties in react codegen\n\n## 0.5.34\n\n### Patch Changes\n\n- cf666ff: check for null string\n\n## 0.5.33\n\n### Patch Changes\n\n- 50976fa: parseJsx accounts for JSX fragments when generating slots\n\n## 0.5.32\n\n### Patch Changes\n\n- a38e5bb: Builder: dynamic styles are mapped to bindings when generating\n\n## 0.5.31\n\n### Patch Changes\n\n- d24889d: [angular,stencil] Fix attribute-passing in options\n\n## 0.5.30\n\n### Patch Changes\n\n- 0c493b2: [Builder] Fix null check issue with localized values\n\n## 0.5.29\n\n### Patch Changes\n\n- 1d74164: adds support to Builder parser and generator for inline localized content\n\n## 0.5.28\n\n### Patch Changes\n\n- b63279f: [angular, stencil]: Add `attributePassing` to enable passing attributes like `data-*`, `aria-*` or `class` to correct child.\n\n  There is a wired behaviour for Angular and Stencil (without shadow DOM), where attributes are rendered on parent elements like this:\n\n  **Input**\n\n  ```angular2html\n  <!-- Angular -->\n  <my-component class=\"cool\" data-nice=\"true\" aria-label=\"wow\"></my-component>\n  ```\n\n  **Output**\n\n  ```html\n  <!-- DOM -->\n  <my-component class=\"cool\" data-nice=\"true\" aria-label=\"wow\">\n    <button class=\"my-component\">My Component</button>\n  </my-component>\n  ```\n\n  In general, we want to pass those attributes down to the rendered child, like this:\n\n  ```html\n  <!-- DOM -->\n  <my-component>\n    <button class=\"my-component cool\" data-nice=\"true\" aria-label=\"wow\">My Component</button>\n  </my-component>\n  ```\n\n  We provide 2 ways to enable this attribute passing:\n\n  **Metadata**\n\n  ```tsx\n  // my-component.lite.tsx\n  useMetadata({\n    attributePassing: {\n      enabled: true,\n      // customRef: \"_myRef\";\n    },\n  });\n  ```\n\n  **Config**\n\n  ```js\n  // mitosis.config.cjs\n  module.exports = {\n    // ... other settings\n    attributePassing: {\n      enabled: true,\n      // customRef: \"_myRef\";\n    },\n  };\n  ```\n\n  If you enable the `attributePassing` we add a new `ref` to the root element named `_root` to interact with the DOM element. If you wish to control the name of the ref, because you already have a `useRef` on your root element, you can use the `customRef` property to select it.\n\n## 0.5.27\n\n### Patch Changes\n\n- 92ad2c6: Misc: stop using `fs-extra-promise` dependency\n\n## 0.5.26\n\n### Patch Changes\n\n- 57bdffe: [angular] fix issue with definite assignment (!) for props with defaultProps\n\n## 0.5.25\n\n### Patch Changes\n\n- af43f50: [All] Refactored `useMetadata` hook to enable import resolution instead of simple `JSON5` parsing.\n\n  You could use a normal JS `Object` and import it inside your `*.lite.tsx` file like this:\n\n  ```ts\n  // data.ts\n\n  export const myMetadata: Record<string, string | number> = {\n    a: 'b',\n    c: 1,\n  };\n  ```\n\n  ```tsx\n  // my-button.lite.tsx\n  import { useMetadata } from '@builder.io/mitosis';\n  import { myMetadata } from './data.ts';\n\n  useMetadata({\n    x: 'y',\n    my: myMetadata,\n  });\n\n  export default function MyButton() {\n    return <button></button>;\n  }\n  ```\n\n- 20ad8dc: [angular]: Fix issue with events forced to become `toLowerCase()`.\n\n  Based on [choosing-event-names](https://angular.dev/guide/components/outputs#choosing-event-names) custom events are camelCase.\n  [DOM events](https://www.w3schools.com/jsref/dom_obj_event.asp) are always lower-cased for Angular components.\n\n  Checkout [event-handlers.ts](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/helpers/event-handlers.ts) for a list of all events that are automatically lower-cased. Everything else will be treated as a custom event and therefore camelCased.\n\n  If you need some other event to be lower-cased you can use `useMetadata.angular.nativeEvents`:\n\n  ```tsx\n  import { useMetadata } from '@builder.io/mitosis';\n\n  useMetadata({\n    angular: {\n      nativeEvents: ['onNativeEvent'],\n    },\n  });\n\n  export default function MyComponent(props) {\n    return (\n      <div>\n        <input onNativeEvent={(event) => console.log(event)} />\n        Hello!\n      </div>\n    );\n  }\n  ```\n\n## 0.5.24\n\n### Patch Changes\n\n- 995eb95: [All] Add new `explicitBuildFileExtensions` to `MitosisConfig`. This allows users to manage the extension of some components explicitly. This is very useful for plugins:\n\n  ```ts\n    /**\n     * Can be used for cli builds. Preserves explicit filename extensions when regex matches, e.g.:\n     * {\n     *   explicitBuildFileExtension: {\n     *     \".ts\":/*.figma.lite.tsx/g,\n     *     \".md\":/*.docs.lite.tsx/g\n     *   }\n     * }\n     */\n    explicitBuildFileExtensions?: Record<string, RegExp>;\n\n  ```\n\n  [All] Add new `pluginData` object to `MitosisComponent` which will be filled during build via cli. Users get some additional information to use them for plugins:\n\n  ```ts\n    /**\n     * This data is filled inside cli to provide more data for plugins\n     */\n  pluginData?: {\n      target?: Target;\n      path?: string;\n      outputDir?: string;\n      outputFilePath?: string;\n  };\n  ```\n\n- 341f281: [All] add additional `build` type for [Plugin](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/types/plugins.ts) to allow users to run plugins before/after cli build process\n- b387d21: [React, Angular] fix: issue with `state` inside `key` attribute in `Fragment`.\n\n  Example:\n\n  `<Fragment key={state.xxx + \"abc\"}...` was generated in React with `state.xxx` and in Angular without `this.`.\n\n## 0.5.23\n\n### Patch Changes\n\n- 772d6f5: Angular selector support in code generation\n\n## 0.5.22\n\n### Patch Changes\n\n- d52fe59: [Builder]: bound media query styles are not converted to strings\n\n## 0.5.21\n\n### Patch Changes\n\n- 73a55a3: [Builder]: Do not set width binding on Column if value is undefined\n- 10a168d: [Builder] preserve bound media query styles when converting to Mitosis\n\n## 0.5.20\n\n### Patch Changes\n\n- 7ae4a01: Fix: Solid fragments rendering by removing all props\n\n## 0.5.19\n\n### Patch Changes\n\n- e9cfef0: [All] Fix: scope renaming of state methods to not include shadow variables\n  [Angular]: Update `state.*` -> `this.*` transform to new AST transform approach\n\n## 0.5.18\n\n### Patch Changes\n\n- 697c307: do not crash with comment before method in store\n- 6f6db62: [React] Refactor how `react` handles mitosis `Fragment`.\n\n  Using `import { Fragment } from '@builder.io/mitosis';\n` and `<Fragment key={option}>` in mitosis, generates an empty fragment in `react` target: `<>`. With this improvement the generated output will be `<React.Fragment key={`key-${option}`}>`. This will help to avoid issues with same keys e.g. inside for loops.\n\n- e90df53: [Solid] Fix: handle Fragment with `key` prop\n\n## 0.5.17\n\n### Patch Changes\n\n- e430a68: [CICD] regenerate test snapshots on fail to download them into local environment\n- b5ddfa3: [Vue] fix: ref wasn't imported when using `useRef` hook without using `useState`\n\n  [Vue] fix: Composition api always use `ref()` wihtout any class -> we don't need this., but we always use `.value`\n\n  [Vue] fix: `ref` could be `null` for `useRef` see: https://vuejs.org/guide/essentials/template-refs.html#accessing-the-refs\n\n  [All] fix: replace `this.` expression in `useState` with `state.` to resolve correct `stripStateAndPropsRefs()` function inside all generators\n\n- 068be0d: [Angular, Lit, Stencil, HTML] fix: remove mapping onChange to input event\n\n## 0.5.16\n\n### Patch Changes\n\n- 3ab462a: [Stencil] feat: add e2e test for stencil\n\n## 0.5.15\n\n### Patch Changes\n\n- a0ad5ab: [Builder]: Fix: use scope.rename to rename identifiers in For loop\n\n## 0.5.14\n\n### Patch Changes\n\n- 39af4d6: [Builder] Fix: do not rename vars within For that are shadowing the loop's index\n\n## 0.5.13\n\n### Patch Changes\n\n- c7d2f8c: [All] fix: support async event handlers\n\n## 0.5.12\n\n### Patch Changes\n\n- 5e2cf3c: respect async with anonymous arrow function in state\n\n## 0.5.11\n\n### Patch Changes\n\n- db9dbf9: [All] fix: parsers/generate for loops\n\n## 0.5.10\n\n### Patch Changes\n\n- 499b4b7: [Mitosis] feat: add returnArray option\n\n## 0.5.9\n\n### Patch Changes\n\n- 8c2be87: Fix multi line bindings from Mitosis to Builder\n\n## 0.5.8\n\n### Patch Changes\n\n- 8d823a1: [Builder] Fix: support Show.else property\n\n## 0.5.7\n\n### Patch Changes\n\n- 7a099d2: [Builder,Mitosis] Feature: add Slots support.\n\n## 0.5.6\n\n### Patch Changes\n\n- 0aa642a: [All]: Fix: accessing `useState()` getter/setter within `useTarget()`\n\n## 0.5.5\n\n### Patch Changes\n\n- 56c6347: [Mitosis] Feature: add `nativeConditionals` and `nativeLoops` for `legacy` mode\n\n## 0.5.4\n\n### Patch Changes\n\n- d13e693: [LIT] Bug: Passing wrong object for transforming ref(Element ref) result in breakage\n\n## 0.5.3\n\n### Patch Changes\n\n- 82c79fd: [React] Fix: Inline `onInit` hook when generating RSC components.\n\n## 0.5.2\n\n### Patch Changes\n\n- dad8e2f: Fix: do not consolidate class and className for Mitosis components\n\n## 0.5.1\n\n### Patch Changes\n\n- dbd5a50: [React-Native] Feature: add `sanitizeReactNative` flag responsible for sanitizing styles. Defaults to `false`.\n\n## 0.5.0\n\n### Minor Changes\n\n- 4171a19: [Stencil] feat: refactor stencil generator to work with stencil v4\n\n  [Stencil,Angular] fix: issue with nested components for frameworks (stencil, angular) with custom elements via [`getChildComponents`](../packages/core/src/helpers/get-child-components.ts)\n\n### Patch Changes\n\n- 7e2c95f: [Angular] fix: issue with angular events not transformed to lower-case\n- d59d328: [Angular, React, Vue] fix: issue with functions inside `useStore` missing ReturnType<...> when using `typescript: true` in config\n\n## 0.4.7\n\n### Patch Changes\n\n- 068efab: [Angular, React, Vue] feat: add typescript support for `useStore`\n\n## 0.4.6\n\n### Patch Changes\n\n- a7fd87f: [All] Fix: Property handle escaped text in JSXString nodes.\n- a7fd87f: [Builder] Feature: Parse and serialize PersonalizedContainer in a JSX/LLM friendly way (like Columns)\n\n## 0.4.5\n\n### Patch Changes\n\n- 428b3ab: chore: update internal structure for generators and add more information for options and metadata\n\n## 0.4.4\n\n### Patch Changes\n\n- ad7e576: [Builder]: fix Text node crash with bindings\n- 52dc749: [Builder]: preserve global CSS when converting from/to Builder JSON.\n\n## 0.4.3\n\n### Patch Changes\n\n- 1bf28ea: Builder: fix: ensure component name suffix\n- 814d171: Angular: Feature: custom template selectors using metadata hook.\n- 531c15c: fix: check string value in `isUpperCase`\n- 84038d5: Angular: Feat: support destructuring of props or state objects with attributes as well as event listeners directly inside an HTML element\n\n## 0.4.2\n\n### Patch Changes\n\n- c29e3ca: fix index in for loops between mitosis<->builder\n\n## 0.4.1\n\n### Patch Changes\n\n- 1943604: state parser supports string literal keys\n- d446881: Angular: Fix: `useObjectWrapper` logic to correctly handle spread and objects as arguments\n\n## 0.4.0\n\n### Minor Changes\n\n- 7d8f4ff: Correct support bindings netween Builder and Mitosis, including useStore() hook\n\n## 0.3.22\n\n### Patch Changes\n\n- f19a00f: Angular: Fix: `ViewContainerRef` import when importing for dynamic components\n\n## 0.3.21\n\n### Patch Changes\n\n- 45de754: Angular: fix: add typed argument `changes: SimpleChanges` to `ngOnChanges` lifecycle hook\n- 03f1f58: Angular: Fix: reactivity of `mergedInputs` (used in Dynamic components)\n- 45de754: Angular: Fix: set initial value of `inputs` for `*ngComponentOutlet`to`{}`instead of`null`.\n\n## 0.3.20\n\n### Patch Changes\n\n- 34bbd34: Fix: remove duplicated `Pressable` import in React Native\n\n## 0.3.19\n\n### Patch Changes\n\n- 3f5fff1: Solid: stop mapping `for` to `htmlFor`\n- 4c662df: Angular: Fix: state initialization sequence. Initialize states in `ngOnInit` first, followed by bindings that depend upon them.\n\n## 0.3.18\n\n### Patch Changes\n\n- 952b3f5: - React Native generator: add support for generating React Native components (`Image`, `TouchableOpacity`, `Button`)\n\n## 0.3.17\n\n### Patch Changes\n\n- 48f5481: fix: angular state initialization referencing other states or props\n\n## 0.3.16\n\n### Patch Changes\n\n- 9abf0ac: Feat: `trackBy` for angular (can be used when the child used inside <For> has a `key` attribute in mitosis)\n\n## 0.3.15\n\n### Patch Changes\n\n- 383f69f: feat: support more complex RN styling with twrnc\n\n## 0.3.14\n\n### Patch Changes\n\n- 9a1d59b: Feat: Implement `onInit` hook for React and Solid, React now uses `useRef` calling `onInit` inline so we run the code before mount\n\n## 0.3.13\n\n### Patch Changes\n\n- f86e2ec: Fix: Angular generator to run `onMount` and `onUpdate` hooks on the client side only and use `onInit` hook to run both on CSR and SSR\n\n## 0.3.12\n\n### Patch Changes\n\n- 3a04558: bump `neotraverse` to fix webpack compat issues\n\n## 0.3.11\n\n### Patch Changes\n\n- 59a92da: Replaces `traverse` dependency with the smaller `neotraverse`\n\n## 0.3.10\n\n### Patch Changes\n\n- 8548feb: - Fix: [Solid] change style default to `style-tag` instead of `solid-styled-components`.\n  - Fix: [Solid] remove `jsx` attribute from `<style>` tags in `style-tag`.\n- f83b8f4: Adds two new styling options for the react-native generator: twrnc and native-wind\n\n## 0.3.9\n\n### Patch Changes\n\n- 9705329: Fix: remove deprecated dependencies: `vue` and `@babel/plugin-proposal-class-properties`\n\n## 0.3.8\n\n### Patch Changes\n\n- 495a937: add `fetchpriority` to `img` attributes in `jsx-runtime.d.ts`\n\n## 0.3.7\n\n### Patch Changes\n\n- 413cdc2: fix: fix ref issue when transforming mitosis code into solid.js code\n\n## 0.3.6\n\n### Patch Changes\n\n- 2c1b162: Support complex conditional cases\n\n## 0.3.5\n\n### Patch Changes\n\n- 14a9a90: Feat: Angular generator: add `state` config with options `'class-properties'` (new, puts all template code in class properties) and `'inline-with-wrappers'` (existing default, wraps problematic JS expressions within template)\n\n## 0.3.4\n\n### Patch Changes\n\n- 42287fe: chore: Fix typo in CSS property name of Builder compiled-away `Image` component.\n\n## 0.3.3\n\n### Patch Changes\n\n- 027e9cc: Feature: Add metadata to component mappers in Builder generator\n\n## 0.3.2\n\n### Patch Changes\n\n- 78f6a64: Misc: remove unused dependencies.\n\n## 0.3.1\n\n### Patch Changes\n\n- c8b7883: Fix: parse slots into `MitosisNode` `slots` property.\n\n## 0.3.0\n\n### Minor Changes\n\n- c249052: Feat: `visuallyIgnoreHostElement` option for angular to ignore angular components as elements in the DOM\n\n## 0.2.10\n\n### Patch Changes\n\n- 90b3b02: Support for custom generators / targets\n\n## 0.2.9\n\n### Patch Changes\n\n- a5d47bd: Fix: `events` to pass as inputs in dynamic components and pass properties too\n\n## 0.2.8\n\n### Patch Changes\n\n- 18b9210: Feature: Vue: add `casing` option (defaults to `pascal`)\n\n## 0.2.7\n\n### Patch Changes\n\n- 1dbdf32: add `includeMeta` option to Builder generator\n\n## 0.2.6\n\n### Patch Changes\n\n- 389018d: support else statements in Angular generator with negation\n- c7f2759: Fix: named slots generation for Vue, Qwik and Svelte.\n\n## 0.2.5\n\n### Patch Changes\n\n- 2e56b76: Fix: Qwik methods using computed variables\n\n## 0.2.4\n\n### Patch Changes\n\n- cee502f: feat: React Native: add support for `onClick` event handlers using `Pressable`\n\n## 0.2.3\n\n### Patch Changes\n\n- 2867f44: fix: React generator: include `Fragment`s that only contain text content.\n\n## 0.2.2\n\n### Patch Changes\n\n- 18e890c: fix: `processCodeBlockInTemplate` for compatibility with ngComponentOutlet and bindings\n\n## 0.2.1\n\n### Patch Changes\n\n- 5ef7920: fix: apply svelte styling during ssr\n\n## 0.2.0\n\n### Minor Changes\n\n- 0a39722: 💣 Breaking Change: Angular generator: all components are now exported as a `default` export instead of a named export.\n\n### Patch Changes\n\n- 0a39722: Fix: reduce false positive props found in `getProps`\n- 0a39722: Feat: remove all explicit `.js` import extensions when `explicitImportFileExtension` config is `false`\n- 0a39722: Feat: update angular generator to support dynamic components, context and more\n\n## 0.1.7\n\n### Patch Changes\n\n- ba5e3b4: fix: solidjs `onUpdate` memoization\n\n## 0.1.6\n\n### Patch Changes\n\n- 5738855: fix: solidjs `createMemo` for onUpdate deps, and for getters in state\n\n## 0.1.5\n\n### Patch Changes\n\n- 6688702: Fix: React shorthand for boolean properties set to `true`\n\n## 0.1.4\n\n### Patch Changes\n\n- 20efa15: feat: add slots property for nodes. add support for it in react generator.\n\n## 0.1.3\n\n### Patch Changes\n\n- 9944a68: Fix: improve imports so mitosis can be built in browser easily\n\n## 0.1.2\n\n### Patch Changes\n\n- 83b9bb8: fix: include styles for img elements in `compileAwayBuilderComponents` plugin\n\n## 0.1.1\n\n### Patch Changes\n\n- 9d6e019: Fix: simplify React true bindings.\n- 9d6e019: Fix: Builder->Mitosis single node slot\n\n## 0.1.0\n\n### Minor Changes\n\n- 5dfd7cd: Breaking Change: remove vue2 and vue3 generators, keeping only the default vue generator (which generates vue3).\n\n## 0.0.147\n\n### Patch Changes\n\n- 4e49454: Fix: Builder JSON to Mitosis JSON slot generation\n\n## 0.0.146\n\n### Patch Changes\n\n- 35becd6: Fix: remove all empty text nodes in JSX parser\n- f64d9b0: fix: Vue composition API watch deps\n- 35becd6: fix: remove redundant {' '} in React generator\n\n## 0.0.145\n\n### Patch Changes\n\n- 9720fb6: Fix: Svelte reactivity in onUpdate dependencies\n\n## 0.0.144\n\n### Patch Changes\n\n- e4f0019: [fix] `preventDefault` in Qwik\n\n## 0.0.142\n\n### Patch Changes\n\n- a4f8311: moved Vue \\_classStringToObject logic behind an option\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\n"
  },
  {
    "path": "packages/core/jsx-runtime.d.ts",
    "content": "/**\n * Based on JSX types for Solid, Inferno, Surplus, and React\n *\n * https://github.com/ryansolid/solid/blob/master/packages/solid/src/rendering/jsx.ts\n * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts\n * https://github.com/infernojs/inferno/blob/master/packages/inferno/src/core/types.ts\n * https://github.com/adamhaile/surplus/blob/master/index.d.ts\n */\n\nexport declare namespace JSX {\n  type CSS = Partial<CSSStyleDeclaration> & {\n    [key: string]: Partial<CSSStyleDeclaration> | string;\n  };\n\n  type Element =\n    | Node\n    | ArrayElement\n    | FunctionElement\n    | string\n    | number\n    | boolean\n    | null\n    | undefined;\n\n  interface ArrayElement extends Array<Element> {}\n  interface FunctionElement {\n    (): Element;\n  }\n\n  interface ElementClass {\n    render(props: any): Element;\n  }\n\n  type LibraryManagedAttributes<Component, Props> = Props;\n\n  // Let TS know the name of the `children` property in order for it to be able to type check them.\n  // https://github.com/Microsoft/TypeScript/issues/18357\n  interface ElementChildrenAttribute {\n    children: {};\n  }\n\n  interface EventHandler<T, E extends Event> {\n    (e: E & { currentTarget: T; target: T }): void;\n  }\n\n  interface BoundEventHandler<T, E extends Event> {\n    0: (data: any, e: E & { currentTarget: T; target: T }) => void;\n    1: any;\n  }\n\n  type EventHandlerUnion<T, E extends Event> = EventHandler<T, E> | BoundEventHandler<T, E>;\n\n  // Intrinsic attributes enable us to define certain keys as attributes on an element, while\n  // at the same time hiding them from the element's `props`.\n  // https://github.com/Microsoft/TypeScript/issues/5478\n  interface IntrinsicAttributes {\n    key?: string | number;\n    ref?: HTMLElement | ((e: HTMLElement) => void);\n  }\n\n  // https://github.com/ryansolid/babel-plugin-jsx-dom-expressions#special-binding\n  interface CustomAttributes<T> {\n    ref?: T | ((el: T) => void);\n    classList?: { [k: string]: boolean | undefined };\n    className?: string;\n    on?: { [key: string]: EventHandler<T, CustomEvent> };\n    onCapture?: { [key: string]: EventHandler<T, CustomEvent> };\n\n    $name?: string;\n    $id?: string;\n  }\n\n  // https://github.com/ryansolid/babel-plugin-jsx-dom-expressions#oneventname\n  interface DOMAttributes<T> extends CustomAttributes<T> {\n    children?: Element | Element[] | string | undefined | false;\n    innerHTML?: string;\n    innerText?: string;\n    textContent?: string;\n\n    // Clipboard Events\n    onCopy?: EventHandlerUnion<T, ClipboardEvent>;\n    onCut?: EventHandlerUnion<T, ClipboardEvent>;\n    onPaste?: EventHandlerUnion<T, ClipboardEvent>;\n\n    // Composition Events\n    onCompositionEnd?: EventHandlerUnion<T, CompositionEvent>;\n    onCompositionStart?: EventHandlerUnion<T, CompositionEvent>;\n    onCompositionUpdate?: EventHandlerUnion<T, CompositionEvent>;\n\n    // Focus Events\n    onFocus?: EventHandlerUnion<T, FocusEvent>;\n    onBlur?: EventHandlerUnion<T, FocusEvent>;\n\n    // Form Events\n    onChange?: EventHandlerUnion<T, Event>;\n    onInput?: EventHandlerUnion<T, InputEvent>;\n    onReset?: EventHandlerUnion<T, Event>;\n    onSubmit?: EventHandlerUnion<T, Event & { submitter: HTMLElement }>;\n\n    // Image Events\n    onLoad?: EventHandlerUnion<T, Event>;\n    onError?: EventHandlerUnion<T, Event>; // also a Media Event\n\n    // Keyboard Events\n    onKeyDown?: EventHandlerUnion<T, KeyboardEvent>;\n    onKeyPress?: EventHandlerUnion<T, KeyboardEvent>;\n    onKeyUp?: EventHandlerUnion<T, KeyboardEvent>;\n\n    // Pointer Events\n    onGotPointerCapture?: EventHandlerUnion<T, PointerEvent>;\n    onLostPointerCapture?: EventHandlerUnion<T, PointerEvent>;\n    onPointerCancel?: EventHandlerUnion<T, PointerEvent>;\n    onPointerDown?: EventHandlerUnion<T, PointerEvent>;\n    onPointerEnter?: EventHandlerUnion<T, PointerEvent>;\n    onPointerLeave?: EventHandlerUnion<T, PointerEvent>;\n    onPointerMove?: EventHandlerUnion<T, PointerEvent>;\n    onPointerOver?: EventHandlerUnion<T, PointerEvent>;\n    onPointerOut?: EventHandlerUnion<T, PointerEvent>;\n    onPointerUp?: EventHandlerUnion<T, PointerEvent>;\n\n    // Media Events\n    onAbort?: EventHandlerUnion<T, Event>;\n    onCanPlay?: EventHandlerUnion<T, Event>;\n    onCanPlayThrough?: EventHandlerUnion<T, Event>;\n    onDurationChange?: EventHandlerUnion<T, Event>;\n    onEmptied?: EventHandlerUnion<T, Event>;\n    onEncrypted?: EventHandlerUnion<T, Event>;\n    onEnded?: EventHandlerUnion<T, Event>;\n    onLoadedData?: EventHandlerUnion<T, Event>;\n    onLoadedMetadata?: EventHandlerUnion<T, Event>;\n    onLoadStart?: EventHandlerUnion<T, Event>;\n    onPause?: EventHandlerUnion<T, Event>;\n    onPlay?: EventHandlerUnion<T, Event>;\n    onPlaying?: EventHandlerUnion<T, Event>;\n    onProgress?: EventHandlerUnion<T, Event>;\n    onRateChange?: EventHandlerUnion<T, Event>;\n    onSeeked?: EventHandlerUnion<T, Event>;\n    onSeeking?: EventHandlerUnion<T, Event>;\n    onStalled?: EventHandlerUnion<T, Event>;\n    onSuspend?: EventHandlerUnion<T, Event>;\n    onTimeUpdate?: EventHandlerUnion<T, Event>;\n    onVolumeChange?: EventHandlerUnion<T, Event>;\n    onWaiting?: EventHandlerUnion<T, Event>;\n\n    // MouseEvents\n    onClick?: EventHandlerUnion<T, MouseEvent>;\n    onContextMenu?: EventHandlerUnion<T, MouseEvent>;\n    onDblClick?: EventHandlerUnion<T, MouseEvent>;\n    onDrag?: EventHandlerUnion<T, DragEvent>;\n    onDragEnd?: EventHandlerUnion<T, DragEvent>;\n    onDragEnter?: EventHandlerUnion<T, DragEvent>;\n    onDragExit?: EventHandlerUnion<T, DragEvent>;\n    onDragLeave?: EventHandlerUnion<T, DragEvent>;\n    onDragOver?: EventHandlerUnion<T, DragEvent>;\n    onDragStart?: EventHandlerUnion<T, DragEvent>;\n    onDrop?: EventHandlerUnion<T, DragEvent>;\n    onMouseDown?: EventHandlerUnion<T, MouseEvent>;\n    onMouseEnter?: EventHandlerUnion<T, MouseEvent>;\n    onMouseLeave?: EventHandlerUnion<T, MouseEvent>;\n    onMouseMove?: EventHandlerUnion<T, MouseEvent>;\n    onMouseOut?: EventHandlerUnion<T, MouseEvent>;\n    onMouseOver?: EventHandlerUnion<T, MouseEvent>;\n    onMouseUp?: EventHandlerUnion<T, MouseEvent>;\n\n    // Selection Events\n    onSelect?: EventHandlerUnion<T, UIEvent>;\n\n    // Touch Events\n    onTouchCancel?: EventHandlerUnion<T, TouchEvent>;\n    onTouchEnd?: EventHandlerUnion<T, TouchEvent>;\n    onTouchMove?: EventHandlerUnion<T, TouchEvent>;\n    onTouchStart?: EventHandlerUnion<T, TouchEvent>;\n\n    // UI Events\n    onScroll?: EventHandlerUnion<T, UIEvent>;\n\n    // Wheel Events\n    onWheel?: EventHandlerUnion<T, WheelEvent>;\n\n    // Animation Events\n    onAnimationStart?: EventHandlerUnion<T, AnimationEvent>;\n    onAnimationEnd?: EventHandlerUnion<T, AnimationEvent>;\n    onAnimationIteration?: EventHandlerUnion<T, AnimationEvent>;\n\n    // Transition Events\n    onTransitionEnd?: EventHandlerUnion<T, TransitionEvent>;\n  }\n\n  // See CSS 3 CSS-wide keywords https://www.w3.org/TR/css3-values/#common-keywords\n  // See CSS 3 Explicit Defaulting https://www.w3.org/TR/css-cascade-3/#defaulting-keywords\n  // \"all CSS properties can accept these values\"\n  type CSSWideKeyword = 'initial' | 'inherit' | 'unset';\n\n  // See CSS 3 <percentage> type https://drafts.csswg.org/css-values-3/#percentages\n  type CSSPercentage = string;\n\n  // See CSS 3 <length> type https://drafts.csswg.org/css-values-3/#lengths\n  type CSSLength = number | string;\n\n  type HTMLAutocapitalize = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';\n\n  type HTMLDir = 'ltr' | 'rtl' | 'auto';\n\n  type HTMLFormEncType = 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\n\n  type HTMLFormMethod = 'post' | 'get' | 'dialog';\n\n  type HTMLCrossorigin = 'anonymous' | 'use-credentials' | '';\n\n  type HTMLReferrerPolicy =\n    | 'no-referrer'\n    | 'no-referrer-when-downgrade'\n    | 'origin'\n    | 'origin-when-cross-origin'\n    | 'same-origin'\n    | 'strict-origin'\n    | 'strict-origin-when-cross-origin'\n    | 'unsafe-url';\n\n  type HTMLIframeSandbox =\n    | 'allow-downloads-without-user-activation'\n    | 'allow-forms'\n    | 'allow-modals'\n    | 'allow-orientation-lock'\n    | 'allow-pointer-lock'\n    | 'allow-popups'\n    | 'allow-popups-to-escape-sandbox'\n    | 'allow-presentation'\n    | 'allow-same-origin'\n    | 'allow-scripts'\n    | 'allow-storage-access-by-user-activation'\n    | 'allow-top-navigation'\n    | 'allow-top-navigation-by-user-activation';\n\n  type HTMLLinkAs =\n    | 'audio'\n    | 'document'\n    | 'embed'\n    | 'fetch'\n    | 'font'\n    | 'image'\n    | 'object'\n    | 'script'\n    | 'style'\n    | 'track'\n    | 'video'\n    | 'worker';\n\n  interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes<T> {\n    // Special attributes\n    key?: string | boolean | number;\n\n    // Standard HTML Attributes\n    accessKey?: string;\n    class?: string;\n    contenteditable?: boolean | 'inherit';\n    contextmenu?: string;\n    dir?: HTMLDir;\n    draggable?: boolean;\n    hidden?: boolean;\n    id?: string;\n    lang?: string;\n    spellcheck?: boolean;\n    style?: CSS;\n    css?: CSS | { [key: string]: CSS | undefined };\n    tabindex?: number | string;\n    title?: string;\n    translate?: 'yes' | 'no';\n\n    // RDFa Attributes\n    about?: string;\n    datatype?: string;\n    inlist?: any;\n    prefix?: string;\n    property?: string;\n    resource?: string;\n    typeof?: string;\n    vocab?: string;\n\n    // Non-standard Attributes\n    autocapitalize?: HTMLAutocapitalize;\n    color?: string;\n    itemprop?: string;\n    itemscope?: boolean;\n    itemtype?: string;\n    itemid?: string;\n    itemref?: string;\n\n    // others\n    align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch' | 'left' | 'right';\n    part?: string;\n    exportparts?: string;\n    inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n\n    // camelcase\n    contentEditable?: boolean | 'inherit';\n    contextMenu?: string;\n    tabIndex?: number | string;\n    autoCapitalize?: HTMLAutocapitalize;\n    itemProp?: string;\n    itemScope?: boolean;\n    itemType?: string;\n    itemId?: string;\n    itemRef?: string;\n    exportParts?: string;\n    inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';\n\n    // WAI-ARIA\n    role?: AriaRole | undefined;\n  }\n\n  // HTML Elements\n\n  interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {\n    download?: any;\n    href?: string;\n    hreflang?: string;\n    media?: string;\n    ping?: string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    rel?: string;\n    target?: string;\n    type?: string;\n\n    // camelcase\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface AudioHTMLAttributes<T> extends MediaHTMLAttributes<T> {}\n\n  interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {\n    alt?: string;\n    coords?: string;\n    download?: any;\n    href?: string;\n    hreflang?: string;\n    ping?: string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    rel?: string;\n    shape?: 'rect' | 'circle' | 'poly' | 'default';\n    target?: string;\n\n    // camelcase\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface BaseHTMLAttributes<T> extends HTMLAttributes<T> {\n    href?: string;\n    target?: string;\n  }\n\n  interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {\n    cite?: string;\n  }\n\n  interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {\n    autofocus?: boolean;\n    disabled?: boolean;\n    form?: string;\n    formaction?: string;\n    formenctype?: HTMLFormEncType;\n    formmethod?: HTMLFormMethod;\n    formnovalidate?: boolean;\n    formtarget?: string;\n    name?: string;\n    type?: 'submit' | 'reset' | 'button';\n    value?: string;\n\n    // camelcase\n    formAction?: string;\n    formEnctype?: HTMLFormEncType;\n    formMethod?: HTMLFormMethod;\n    formNoValidate?: boolean;\n    formTarget?: string;\n  }\n\n  interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {\n    width?: number | string;\n    height?: number | string;\n  }\n\n  interface ColHTMLAttributes<T> extends HTMLAttributes<T> {\n    span?: number | string;\n    width?: number | string;\n  }\n\n  interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {\n    span?: number | string;\n  }\n\n  interface DataHTMLAttributes<T> extends HTMLAttributes<T> {\n    value?: string | string[] | number;\n  }\n\n  interface DetailsHtmlAttributes<T> extends HTMLAttributes<T> {\n    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/name) */\n    name?: string;\n    /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/open) */\n    open?: boolean;\n  }\n\n  interface DialogHtmlAttributes<T> extends HTMLAttributes<T> {\n    open?: boolean;\n  }\n\n  interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {\n    height?: number | string;\n    src?: string;\n    type?: string;\n    width?: number | string;\n  }\n\n  interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {\n    disabled?: boolean;\n    form?: string;\n    name?: string;\n  }\n\n  interface FormHTMLAttributes<T> extends HTMLAttributes<T> {\n    acceptcharset?: string;\n    action?: string;\n    autocomplete?: string;\n    encoding?: HTMLFormEncType;\n    enctype?: HTMLFormEncType;\n    method?: HTMLFormMethod;\n    name?: string;\n    novalidate?: boolean;\n    target?: string;\n\n    // camelcase\n    acceptCharset?: string;\n    noValidate?: boolean;\n  }\n\n  interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {\n    allow?: string;\n    allowfullscreen?: boolean;\n    height?: number | string;\n    name?: string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    sandbox?: HTMLIframeSandbox;\n    src?: string;\n    srcdoc?: string;\n    width?: number | string;\n\n    // camelcase\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {\n    loading?: string;\n    fetchpriority?: string;\n    role?: string;\n    alt?: string;\n    crossorigin?: HTMLCrossorigin;\n    decoding?: 'sync' | 'async' | 'auto';\n    height?: number | string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    sizes?: string;\n    src?: string;\n    srcset?: string;\n    width?: number | string;\n\n    // camelcase\n    crossOrigin?: HTMLCrossorigin;\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface InputHTMLAttributes<T> extends HTMLAttributes<T> {\n    accept?: string;\n    alt?: string;\n    autocomplete?: string;\n    autofocus?: boolean;\n    capture?: boolean | string;\n    checked?: boolean;\n    crossorigin?: HTMLCrossorigin;\n    disabled?: boolean;\n    form?: string;\n    formaction?: string;\n    formenctype?: HTMLFormEncType;\n    formmethod?: HTMLFormMethod;\n    formnovalidate?: boolean;\n    formtarget?: string;\n    height?: number | string;\n    list?: string;\n    max?: number | string;\n    maxlength?: number | string;\n    min?: number | string;\n    minlength?: number | string;\n    multiple?: boolean;\n    name?: string;\n    pattern?: string;\n    placeholder?: string;\n    readonly?: boolean;\n    required?: boolean;\n    size?: number | string;\n    src?: string;\n    step?: number | string;\n    type?: string;\n    value?: string | string[] | number;\n    width?: number | string;\n\n    // camelcase\n    crossOrigin?: HTMLCrossorigin;\n    formAction?: string;\n    autoComplete?: string;\n    autoFocus?: boolean;\n    formEnctype?: HTMLFormEncType;\n    formMethod?: HTMLFormMethod;\n    formNoValidate?: boolean;\n    formTarget?: string;\n    maxLength?: number | string;\n    minLength?: number | string;\n    readOnly?: boolean;\n  }\n\n  interface InsHTMLAttributes<T> extends HTMLAttributes<T> {\n    cite?: string;\n    dateTime?: string;\n  }\n\n  interface KeygenHTMLAttributes<T> extends HTMLAttributes<T> {\n    autofocus?: boolean;\n    challenge?: string;\n    disabled?: boolean;\n    form?: string;\n    keytype?: string;\n    keyparams?: string;\n    name?: string;\n  }\n\n  interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {\n    htmlFor?: string;\n    for?: string;\n    form?: string;\n  }\n\n  interface LiHTMLAttributes<T> extends HTMLAttributes<T> {\n    value?: number | string;\n  }\n\n  interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {\n    as?: HTMLLinkAs;\n    crossorigin?: HTMLCrossorigin;\n    disabled?: boolean;\n    href?: string;\n    hreflang?: string;\n    integrity?: string;\n    media?: string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    rel?: string;\n    sizes?: string;\n    type?: string;\n\n    // camelcase\n    crossOrigin?: HTMLCrossorigin;\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface MapHTMLAttributes<T> extends HTMLAttributes<T> {\n    name?: string;\n  }\n\n  interface MediaHTMLAttributes<T> extends HTMLAttributes<T> {\n    autoplay?: boolean;\n    controls?: boolean;\n    crossorigin?: HTMLCrossorigin;\n    loop?: boolean;\n    mediagroup?: string;\n    muted?: boolean;\n    preload?: 'none' | 'metadata' | 'auto' | '';\n    src?: string;\n\n    // camelcase\n    crossOrigin?: HTMLCrossorigin;\n    mediaGroup?: string;\n  }\n\n  interface MenuHTMLAttributes<T> extends HTMLAttributes<T> {\n    label?: string;\n    type?: 'context' | 'toolbar';\n  }\n\n  interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {\n    charset?: string;\n    content?: string;\n    httpequiv?: string;\n    name?: string;\n\n    // camelcase\n    httpEquiv?: string;\n  }\n\n  interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {\n    form?: string;\n    high?: number | string;\n    low?: number | string;\n    max?: number | string;\n    min?: number | string;\n    optimum?: number | string;\n    value?: string | string[] | number;\n  }\n\n  interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {\n    cite?: string;\n  }\n\n  interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {\n    data?: string;\n    form?: string;\n    height?: number | string;\n    name?: string;\n    type?: string;\n    usemap?: string;\n    width?: number | string;\n\n    //camelcase\n    useMap?: string;\n  }\n\n  interface OlHTMLAttributes<T> extends HTMLAttributes<T> {\n    reversed?: boolean;\n    start?: number | string;\n    type?: '1' | 'a' | 'A' | 'i' | 'I';\n  }\n\n  interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {\n    disabled?: boolean;\n    label?: string;\n  }\n\n  interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {\n    disabled?: boolean;\n    label?: string;\n    selected?: boolean;\n    value?: string | string[] | number;\n  }\n\n  interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {\n    form?: string;\n    htmlFor?: string;\n    for?: string;\n    name?: string;\n  }\n\n  interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {\n    name?: string;\n    value?: string | string[] | number;\n  }\n\n  interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {\n    max?: number | string;\n    value?: string | string[] | number;\n  }\n\n  interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {\n    async?: boolean;\n    charset?: string;\n    crossorigin?: HTMLCrossorigin;\n    defer?: boolean;\n    integrity?: string;\n    nomodule?: boolean;\n    nonce?: string;\n    referrerpolicy?: HTMLReferrerPolicy;\n    src?: string;\n    type?: string;\n\n    // camelcase\n    crossOrigin?: HTMLCrossorigin;\n    noModule?: boolean;\n    referrerPolicy?: HTMLReferrerPolicy;\n  }\n\n  interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {\n    autocomplete?: string;\n    autofocus?: boolean;\n    disabled?: boolean;\n    form?: string;\n    multiple?: boolean;\n    name?: string;\n    required?: boolean;\n    size?: number | string;\n    value?: string | string[] | number;\n  }\n\n  interface HTMLSlotElementAttributes<T = HTMLSlotElement> extends HTMLAttributes<T> {\n    name?: string;\n  }\n\n  interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {\n    media?: string;\n    sizes?: string;\n    src?: string;\n    srcset?: string;\n    type?: string;\n  }\n\n  interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {\n    media?: string;\n    nonce?: string;\n    scoped?: boolean;\n    type?: string;\n  }\n\n  interface TdHTMLAttributes<T> extends HTMLAttributes<T> {\n    colspan?: number | string;\n    headers?: string;\n    rowspan?: number | string;\n\n    // camelcase\n    colSpan?: number | string;\n    rowSpan?: number | string;\n  }\n\n  interface TextareaHTMLAttributes<T> extends HTMLAttributes<T> {\n    autocomplete?: string;\n    autofocus?: boolean;\n    cols?: number | string;\n    dirname?: string;\n    disabled?: boolean;\n    form?: string;\n    maxlength?: number | string;\n    minlength?: number | string;\n    name?: string;\n    placeholder?: string;\n    readonly?: boolean;\n    required?: boolean;\n    rows?: number | string;\n    value?: string | string[] | number;\n    wrap?: 'hard' | 'soft' | 'off';\n\n    // camelcase\n    maxLength?: number | string;\n    minLength?: number | string;\n    readOnly?: boolean;\n  }\n\n  interface ThHTMLAttributes<T> extends HTMLAttributes<T> {\n    colspan?: number | string;\n    headers?: string;\n    rowspan?: number | string;\n\n    // camelcase\n    colSpan?: number | string;\n    rowSpan?: number | string;\n  }\n\n  interface TimeHTMLAttributes<T> extends HTMLAttributes<T> {\n    datetime?: string;\n    dateTime?: string;\n  }\n\n  interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {\n    default?: boolean;\n    kind?: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';\n    label?: string;\n    src?: string;\n    srclang?: string;\n  }\n\n  interface VideoHTMLAttributes<T> extends MediaHTMLAttributes<T> {\n    height?: number | string;\n    playsinline?: boolean;\n    poster?: string;\n    width?: number | string;\n  }\n\n  // SVG Elements\n\n  type SVGPreserveAspectRatio =\n    | 'none'\n    | 'xMinYMin'\n    | 'xMidYMin'\n    | 'xMaxYMin'\n    | 'xMinYMid'\n    | 'xMidYMid'\n    | 'xMaxYMid'\n    | 'xMinYMax'\n    | 'xMidYMax'\n    | 'xMaxYMax'\n    | 'xMinYMin meet'\n    | 'xMidYMin meet'\n    | 'xMaxYMin meet'\n    | 'xMinYMid meet'\n    | 'xMidYMid meet'\n    | 'xMaxYMid meet'\n    | 'xMinYMax meet'\n    | 'xMidYMax meet'\n    | 'xMaxYMax meet'\n    | 'xMinYMin slice'\n    | 'xMidYMin slice'\n    | 'xMaxYMin slice'\n    | 'xMinYMid slice'\n    | 'xMidYMid slice'\n    | 'xMaxYMid slice'\n    | 'xMinYMax slice'\n    | 'xMidYMax slice'\n    | 'xMaxYMax slice';\n\n  type ImagePreserveAspectRatio =\n    | SVGPreserveAspectRatio\n    | 'defer none'\n    | 'defer xMinYMin'\n    | 'defer xMidYMin'\n    | 'defer xMaxYMin'\n    | 'defer xMinYMid'\n    | 'defer xMidYMid'\n    | 'defer xMaxYMid'\n    | 'defer xMinYMax'\n    | 'defer xMidYMax'\n    | 'defer xMaxYMax'\n    | 'defer xMinYMin meet'\n    | 'defer xMidYMin meet'\n    | 'defer xMaxYMin meet'\n    | 'defer xMinYMid meet'\n    | 'defer xMidYMid meet'\n    | 'defer xMaxYMid meet'\n    | 'defer xMinYMax meet'\n    | 'defer xMidYMax meet'\n    | 'defer xMaxYMax meet'\n    | 'defer xMinYMin slice'\n    | 'defer xMidYMin slice'\n    | 'defer xMaxYMin slice'\n    | 'defer xMinYMid slice'\n    | 'defer xMidYMid slice'\n    | 'defer xMaxYMid slice'\n    | 'defer xMinYMax slice'\n    | 'defer xMidYMax slice'\n    | 'defer xMaxYMax slice';\n\n  type SVGUnits = 'userSpaceOnUse' | 'objectBoundingBox';\n\n  interface CoreSVGAttributes<T> extends AriaAttributes, DOMAttributes<T> {\n    id?: string;\n    lang?: string;\n    tabIndex?: number | string;\n    tabindex?: number | string;\n\n    // Other HTML properties supported by SVG elements in browsers\n    role?: AriaRole | undefined;\n  }\n\n  interface StylableSVGAttributes {\n    class?: string;\n    style?: CSS;\n  }\n\n  interface TransformableSVGAttributes {\n    transform?: string;\n  }\n\n  // Fix when namespaces introduced\n  // interface XLinkSVGAttributes {\n  //   xlinkActuate?: string;\n  //   xlinkArcrole?: string;\n  //   xlinkHref?: string;\n  //   xlinkRole?: string;\n  //   xlinkShow?: string;\n  //   xlinkTitle?: string;\n  //   xlinkType?: string;\n  // }\n\n  interface ConditionalProcessingSVGAttributes {\n    requiredExtensions?: string;\n    requiredFeatures?: string;\n    systemLanguage?: string;\n  }\n\n  interface ExternalResourceSVGAttributes {\n    externalResourcesRequired?: 'true' | 'false';\n  }\n\n  interface AnimationTimingSVGAttributes {\n    begin?: string;\n    dur?: string;\n    end?: string;\n    min?: string;\n    max?: string;\n    restart?: 'always' | 'whenNotActive' | 'never';\n    repeatCount?: number | 'indefinite';\n    repeatDur?: string;\n    fill?: 'freeze' | 'remove';\n  }\n\n  interface AnimationValueSVGAttributes {\n    calcMode?: 'discrete' | 'linear' | 'paced' | 'spline';\n    values?: string;\n    keyTimes?: string;\n    keySplines?: string;\n    from?: number | string;\n    to?: number | string;\n    by?: number | string;\n  }\n\n  interface AnimationAdditionSVGAttributes {\n    attributeName?: string;\n    additive?: 'replace' | 'sum';\n    accumulate?: 'none' | 'sum';\n  }\n\n  interface AnimationAttributeTargetSVGAttributes {\n    attributeName?: string;\n    attributeType?: 'CSS' | 'XML' | 'auto';\n  }\n\n  interface PresentationSVGAttributes {\n    'alignment-baseline'?:\n      | 'auto'\n      | 'baseline'\n      | 'before-edge'\n      | 'text-before-edge'\n      | 'middle'\n      | 'central'\n      | 'after-edge'\n      | 'text-after-edge'\n      | 'ideographic'\n      | 'alphabetic'\n      | 'hanging'\n      | 'mathematical'\n      | 'inherit';\n    'baseline-shift'?: number | string;\n    clip?: string;\n    'clip-path'?: string;\n    'clip-rule'?: 'nonzero' | 'evenodd' | 'inherit';\n    color?: string;\n    'color-interpolation'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';\n    'color-interpolation-filters'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit';\n    'color-profile'?: string;\n    'color-rendering'?: 'auto' | 'optimizeSpeed' | 'optimizeQuality' | 'inherit';\n    cursor?: string;\n    direction?: 'ltr' | 'rtl' | 'inherit';\n    display?: string;\n    'dominant-baseline'?:\n      | 'auto'\n      | 'text-bottom'\n      | 'alphabetic'\n      | 'ideographic'\n      | 'middle'\n      | 'central'\n      | 'mathematical'\n      | 'hanging'\n      | 'text-top'\n      | 'inherit';\n    'enable-background'?: string;\n    fill?: string;\n    'fill-opacity'?: number | string | 'inherit';\n    'fill-rule'?: 'nonzero' | 'evenodd' | 'inherit';\n    filter?: string;\n    'flood-color'?: string;\n    'flood-opacity'?: number | string | 'inherit';\n    'font-family'?: string;\n    'font-size'?: string;\n    'font-size-adjust'?: number | string;\n    'font-stretch'?: string;\n    'font-style'?: 'normal' | 'italic' | 'oblique' | 'inherit';\n    'font-variant'?: string;\n    'font-weight'?: number | string;\n    'glyph-orientation-horizontal'?: string;\n    'glyph-orientation-vertical'?: string;\n    'image-rendering'?: 'auto' | 'optimizeQuality' | 'optimizeSpeed' | 'inherit';\n    kerning?: string;\n    'letter-spacing'?: number | string;\n    'lighting-color'?: string;\n    'marker-end'?: string;\n    'marker-mid'?: string;\n    'marker-start'?: string;\n    mask?: string;\n    opacity?: number | string | 'inherit';\n    overflow?: 'visible' | 'hidden' | 'scroll' | 'auto' | 'inherit';\n    'pointer-events'?:\n      | 'bounding-box'\n      | 'visiblePainted'\n      | 'visibleFill'\n      | 'visibleStroke'\n      | 'visible'\n      | 'painted'\n      | 'color'\n      | 'fill'\n      | 'stroke'\n      | 'all'\n      | 'none'\n      | 'inherit';\n    'shape-rendering'?: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision' | 'inherit';\n    'stop-color'?: string;\n    'stop-opacity'?: number | string | 'inherit';\n    stroke?: string;\n    'stroke-dasharray'?: string;\n    'stroke-dashoffset'?: number | string;\n    'stroke-linecap'?: 'butt' | 'round' | 'square' | 'inherit';\n    'stroke-linejoin'?: 'arcs' | 'bevel' | 'miter' | 'miter-clip' | 'round' | 'inherit';\n    'stroke-miterlimit'?: number | string | 'inherit';\n    'stroke-opacity'?: number | string | 'inherit';\n    'stroke-width'?: number | string;\n    'text-anchor'?: 'start' | 'middle' | 'end' | 'inherit';\n    'text-decoration'?: 'none' | 'underline' | 'overline' | 'line-through' | 'blink' | 'inherit';\n    'text-rendering'?:\n      | 'auto'\n      | 'optimizeSpeed'\n      | 'optimizeLegibility'\n      | 'geometricPrecision'\n      | 'inherit';\n    'unicode-bidi'?: string;\n    visibility?: 'visible' | 'hidden' | 'collapse' | 'inherit';\n    'word-spacing'?: number | string;\n    'writing-mode'?: 'lr-tb' | 'rl-tb' | 'tb-rl' | 'lr' | 'rl' | 'tb' | 'inherit';\n  }\n\n  interface AnimationElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      ExternalResourceSVGAttributes,\n      ConditionalProcessingSVGAttributes {}\n\n  interface ContainerElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      Pick<\n        PresentationSVGAttributes,\n        | 'clip-path'\n        | 'mask'\n        | 'cursor'\n        | 'opacity'\n        | 'filter'\n        | 'enable-background'\n        | 'color-interpolation'\n        | 'color-rendering'\n      > {}\n\n  interface FilterPrimitiveElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      Pick<PresentationSVGAttributes, 'color-interpolation-filters'> {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    result?: string;\n  }\n\n  interface SingleInputFilterSVGAttributes {\n    in?: string;\n  }\n\n  interface DoubleInputFilterSVGAttributes {\n    in?: string;\n    in2?: string;\n  }\n\n  interface FitToViewBoxSVGAttributes {\n    viewBox?: string;\n    preserveAspectRatio?: SVGPreserveAspectRatio;\n  }\n\n  interface GradientElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes {\n    gradientUnits?: SVGUnits;\n    gradientTransform?: string;\n    spreadMethod?: 'pad' | 'reflect' | 'repeat';\n  }\n\n  interface GraphicsElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      Pick<\n        PresentationSVGAttributes,\n        | 'clip-rule'\n        | 'mask'\n        | 'pointer-events'\n        | 'cursor'\n        | 'opacity'\n        | 'filter'\n        | 'display'\n        | 'visibility'\n        | 'color-interpolation'\n        | 'color-rendering'\n      > {}\n\n  interface LightSourceElementSVGAttributes<T> extends CoreSVGAttributes<T> {}\n\n  interface NewViewportSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {\n    viewBox?: string;\n  }\n\n  interface ShapeElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      Pick<\n        PresentationSVGAttributes,\n        | 'color'\n        | 'fill'\n        | 'fill-rule'\n        | 'fill-opacity'\n        | 'stroke'\n        | 'stroke-width'\n        | 'stroke-linecap'\n        | 'stroke-linejoin'\n        | 'stroke-miterlimit'\n        | 'stroke-dasharray'\n        | 'stroke-dashoffset'\n        | 'stroke-opacity'\n        | 'shape-rendering'\n      > {}\n\n  interface TextContentElementSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      Pick<\n        PresentationSVGAttributes,\n        | 'font-family'\n        | 'font-style'\n        | 'font-variant'\n        | 'font-weight'\n        | 'font-stretch'\n        | 'font-size'\n        | 'font-size-adjust'\n        | 'kerning'\n        | 'letter-spacing'\n        | 'word-spacing'\n        | 'text-decoration'\n        | 'glyph-orientation-horizontal'\n        | 'glyph-orientation-vertical'\n        | 'direction'\n        | 'unicode-bidi'\n        | 'text-anchor'\n        | 'dominant-baseline'\n        | 'color'\n        | 'fill'\n        | 'fill-rule'\n        | 'fill-opacity'\n        | 'stroke'\n        | 'stroke-width'\n        | 'stroke-linecap'\n        | 'stroke-linejoin'\n        | 'stroke-miterlimit'\n        | 'stroke-dasharray'\n        | 'stroke-dashoffset'\n        | 'stroke-opacity'\n      > {}\n\n  interface ZoomAndPanSVGAttributes {\n    zoomAndPan?: 'disable' | 'magnify';\n  }\n\n  interface AnimateSVGAttributes<T>\n    extends AnimationElementSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      AnimationAttributeTargetSVGAttributes,\n      AnimationTimingSVGAttributes,\n      AnimationValueSVGAttributes,\n      AnimationAdditionSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color-interpolation' | 'color-rendering'> {}\n\n  interface AnimateMotionSVGAttributes<T>\n    extends AnimationElementSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      AnimationTimingSVGAttributes,\n      AnimationValueSVGAttributes,\n      AnimationAdditionSVGAttributes {\n    path?: string;\n    keyPoints?: string;\n    rotate?: number | string | 'auto' | 'auto-reverse';\n    origin?: 'default';\n  }\n\n  interface AnimateTransformSVGAttributes<T>\n    extends AnimationElementSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      AnimationAttributeTargetSVGAttributes,\n      AnimationTimingSVGAttributes,\n      AnimationValueSVGAttributes,\n      AnimationAdditionSVGAttributes {\n    type?: 'translate' | 'scale' | 'rotate' | 'skewX' | 'skewY';\n  }\n\n  interface CircleSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes {\n    cx?: number | string;\n    cy?: number | string;\n    r?: number | string;\n  }\n\n  interface ClipPathSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'clip-path'> {\n    clipPathUnits?: SVGUnits;\n  }\n\n  interface DefsSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes {}\n\n  interface DescSVGAttributes<T> extends CoreSVGAttributes<T>, StylableSVGAttributes {}\n\n  interface EllipseSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes {\n    cx?: number | string;\n    cy?: number | string;\n    rx?: number | string;\n    ry?: number | string;\n  }\n\n  interface FeBlendSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      DoubleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    mode?: 'normal' | 'multiply' | 'screen' | 'darken' | 'lighten';\n  }\n\n  interface FeColorMatrixSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    type?: 'matrix' | 'saturate' | 'hueRotate' | 'luminanceToAlpha';\n    values?: string;\n  }\n\n  interface FeComponentTransferSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {}\n\n  interface FeCompositeSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      DoubleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    operator?: 'over' | 'in' | 'out' | 'atop' | 'xor' | 'arithmetic';\n    k1?: number | string;\n    k2?: number | string;\n    k3?: number | string;\n    k4?: number | string;\n  }\n\n  interface FeConvolveMatrixSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    order?: number | string;\n    kernelMatrix?: string;\n    divisor?: number | string;\n    bias?: number | string;\n    targetX?: number | string;\n    targetY?: number | string;\n    edgeMode?: 'duplicate' | 'wrap' | 'none';\n    kernelUnitLength?: number | string;\n    preserveAlpha?: 'true' | 'false';\n  }\n\n  interface FeDiffuseLightingSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color' | 'lighting-color'> {\n    surfaceScale?: number | string;\n    diffuseConstant?: number | string;\n    kernelUnitLength?: number | string;\n  }\n\n  interface FeDisplacementMapSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      DoubleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    scale?: number | string;\n    xChannelSelector?: 'R' | 'G' | 'B' | 'A';\n    yChannelSelector?: 'R' | 'G' | 'B' | 'A';\n  }\n\n  interface FeDistantLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {\n    azimuth?: number | string;\n    elevation?: number | string;\n  }\n\n  interface FeFloodSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      StylableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color' | 'flood-color' | 'flood-opacity'> {}\n\n  interface FeFuncSVGAttributes<T> extends CoreSVGAttributes<T> {\n    type?: 'identity' | 'table' | 'discrete' | 'linear' | 'gamma';\n    tableValues?: string;\n    slope?: number | string;\n    intercept?: number | string;\n    amplitude?: number | string;\n    exponent?: number | string;\n    offset?: number | string;\n  }\n\n  interface FeGaussianBlurSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    stdDeviation?: number | string;\n  }\n\n  interface FeImageSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes {\n    preserveAspectRatio: SVGPreserveAspectRatio;\n  }\n\n  interface FeMergeSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      StylableSVGAttributes {}\n\n  interface FeMergeNodeSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      SingleInputFilterSVGAttributes {}\n\n  interface FeMorphologySVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    operator?: 'erode' | 'dilate';\n    radius?: number | string;\n  }\n\n  interface FeOffsetSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {\n    dx?: number | string;\n    dy?: number | string;\n  }\n\n  interface FePointLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {\n    x?: number | string;\n    y?: number | string;\n    z?: number | string;\n  }\n\n  interface FeSpecularLightingSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color' | 'lighting-color'> {\n    surfaceScale?: string;\n    specularConstant?: string;\n    specularExponent?: string;\n    kernelUnitLength?: number | string;\n  }\n\n  interface FeSpotLightSVGAttributes<T> extends LightSourceElementSVGAttributes<T> {\n    x?: number | string;\n    y?: number | string;\n    z?: number | string;\n    pointsAtX?: number | string;\n    pointsAtY?: number | string;\n    pointsAtZ?: number | string;\n    specularExponent?: number | string;\n    limitingConeAngle?: number | string;\n  }\n\n  interface FeTileSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      SingleInputFilterSVGAttributes,\n      StylableSVGAttributes {}\n\n  interface FeTurbulanceSVGAttributes<T>\n    extends FilterPrimitiveElementSVGAttributes<T>,\n      StylableSVGAttributes {\n    baseFrequency?: number | string;\n    numOctaves?: number | string;\n    seed?: number | string;\n    stitchTiles?: 'stitch' | 'noStitch';\n    type?: 'fractalNoise' | 'turbulence';\n  }\n\n  interface FilterSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes {\n    filterUnits?: SVGUnits;\n    primitiveUnits?: SVGUnits;\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    filterRes?: number | string;\n  }\n\n  interface ForeignObjectSVGAttributes<T>\n    extends NewViewportSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'display' | 'visibility'> {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n  }\n\n  interface GSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'display' | 'visibility'> {}\n\n  interface ImageSVGAttributes<T>\n    extends NewViewportSVGAttributes<T>,\n      GraphicsElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      // XLinkSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color-profile' | 'image-rendering'> {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    preserveAspectRatio?: ImagePreserveAspectRatio;\n  }\n\n  interface LineSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {\n    x1?: number | string;\n    y1?: number | string;\n    x2?: number | string;\n    y2?: number | string;\n  }\n\n  interface LinearGradientSVGAttributes<T> extends GradientElementSVGAttributes<T> {\n    x1?: number | string;\n    x2?: number | string;\n    y1?: number | string;\n    y2?: number | string;\n  }\n\n  interface MarkerSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      FitToViewBoxSVGAttributes,\n      Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {\n    markerUnits?: 'strokeWidth' | 'userSpaceOnUse';\n    refX?: number | string;\n    refY?: number | string;\n    markerWidth?: number | string;\n    markerHeight?: number | string;\n    orient?: string;\n  }\n\n  interface MaskSVGAttributes<T>\n    extends Omit<ContainerElementSVGAttributes<T>, 'opacity' | 'filter'>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes {\n    maskUnits?: SVGUnits;\n    maskContentUnits?: SVGUnits;\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n  }\n\n  interface MetadataSVGAttributes<T> extends CoreSVGAttributes<T> {}\n\n  interface PathSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {\n    d?: string;\n    pathLength?: number | string;\n  }\n\n  interface PatternSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      FitToViewBoxSVGAttributes,\n      Pick<PresentationSVGAttributes, 'overflow' | 'clip'> {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    patternUnits?: SVGUnits;\n    patternContentUnits?: SVGUnits;\n    patternTransform?: string;\n  }\n\n  interface PolygonSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {\n    points?: string;\n  }\n\n  interface PolylineSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'marker-start' | 'marker-mid' | 'marker-end'> {\n    points?: string;\n  }\n\n  interface RadialGradientSVGAttributes<T> extends GradientElementSVGAttributes<T> {\n    cx?: number | string;\n    cy?: number | string;\n    r?: number | string;\n    fx?: number | string;\n    fy?: number | string;\n  }\n\n  interface RectSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ShapeElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    rx?: number | string;\n    ry?: number | string;\n  }\n\n  interface StopSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      StylableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'color' | 'stop-color' | 'stop-opacity'> {\n    offset?: number | string;\n  }\n\n  interface SvgSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      NewViewportSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      FitToViewBoxSVGAttributes,\n      ZoomAndPanSVGAttributes,\n      Pick<PresentationSVGAttributes, 'display' | 'visibility'> {\n    xmlns?: string;\n    version?: string;\n    'base-profile'?: string;\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    contentScriptType?: string;\n    contentStyleType?: string;\n  }\n\n  interface SwitchSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'display' | 'visibility'> {}\n\n  interface SymbolSVGAttributes<T>\n    extends ContainerElementSVGAttributes<T>,\n      NewViewportSVGAttributes<T>,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      FitToViewBoxSVGAttributes {}\n\n  interface TextSVGAttributes<T>\n    extends TextContentElementSVGAttributes<T>,\n      GraphicsElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes,\n      Pick<PresentationSVGAttributes, 'writing-mode' | 'text-rendering'> {\n    x?: number | string;\n    y?: number | string;\n    dx?: number | string;\n    dy?: number | string;\n    rotate?: number | string;\n    textLength?: number | string;\n    lengthAdjust?: 'spacing' | 'spacingAndGlyphs';\n  }\n\n  interface TextPathSVGAttributes<T>\n    extends TextContentElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      Pick<\n        PresentationSVGAttributes,\n        'alignment-baseline' | 'baseline-shift' | 'display' | 'visibility'\n      > {\n    startOffset?: number | string;\n    method?: 'align' | 'stretch';\n    spacing?: 'auto' | 'exact';\n  }\n\n  interface TSpanSVGAttributes<T>\n    extends TextContentElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      Pick<\n        PresentationSVGAttributes,\n        'alignment-baseline' | 'baseline-shift' | 'display' | 'visibility'\n      > {\n    x?: number | string;\n    y?: number | string;\n    dx?: number | string;\n    dy?: number | string;\n    rotate?: number | string;\n    textLength?: number | string;\n    lengthAdjust?: 'spacing' | 'spacingAndGlyphs';\n  }\n\n  interface UseSVGAttributes<T>\n    extends GraphicsElementSVGAttributes<T>,\n      ConditionalProcessingSVGAttributes,\n      // XLinkSVGAttributes,\n      ExternalResourceSVGAttributes,\n      StylableSVGAttributes,\n      TransformableSVGAttributes {\n    x?: number | string;\n    y?: number | string;\n    width?: number | string;\n    height?: number | string;\n    fill?: number | string;\n  }\n\n  interface ViewSVGAttributes<T>\n    extends CoreSVGAttributes<T>,\n      ExternalResourceSVGAttributes,\n      FitToViewBoxSVGAttributes,\n      ZoomAndPanSVGAttributes {\n    viewTarget?: string;\n  }\n\n  interface IntrinsicElements {\n    // HTML\n    a: AnchorHTMLAttributes<HTMLAnchorElement>;\n    abbr: HTMLAttributes<HTMLElement>;\n    address: HTMLAttributes<HTMLElement>;\n    area: AreaHTMLAttributes<HTMLAreaElement>;\n    article: HTMLAttributes<HTMLElement>;\n    aside: HTMLAttributes<HTMLElement>;\n    audio: AudioHTMLAttributes<HTMLAudioElement>;\n    b: HTMLAttributes<HTMLElement>;\n    base: BaseHTMLAttributes<HTMLBaseElement>;\n    bdi: HTMLAttributes<HTMLElement>;\n    bdo: HTMLAttributes<HTMLElement>;\n    big: HTMLAttributes<HTMLElement>;\n    blockquote: BlockquoteHTMLAttributes<HTMLElement>;\n    body: HTMLAttributes<HTMLBodyElement>;\n    br: HTMLAttributes<HTMLBRElement>;\n    button: ButtonHTMLAttributes<HTMLButtonElement>;\n    canvas: CanvasHTMLAttributes<HTMLCanvasElement>;\n    caption: HTMLAttributes<HTMLElement>;\n    cite: HTMLAttributes<HTMLElement>;\n    code: HTMLAttributes<HTMLElement>;\n    col: ColHTMLAttributes<HTMLTableColElement>;\n    colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;\n    data: DataHTMLAttributes<HTMLElement>;\n    datalist: HTMLAttributes<HTMLDataListElement>;\n    dd: HTMLAttributes<HTMLElement>;\n    del: HTMLAttributes<HTMLElement>;\n    details: DetailsHtmlAttributes<HTMLElement>;\n    dfn: HTMLAttributes<HTMLElement>;\n    dialog: DialogHtmlAttributes<HTMLElement>;\n    div: HTMLAttributes<HTMLDivElement>;\n    dl: HTMLAttributes<HTMLDListElement>;\n    dt: HTMLAttributes<HTMLElement>;\n    em: HTMLAttributes<HTMLElement>;\n    embed: EmbedHTMLAttributes<HTMLEmbedElement>;\n    fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>;\n    figcaption: HTMLAttributes<HTMLElement>;\n    figure: HTMLAttributes<HTMLElement>;\n    footer: HTMLAttributes<HTMLElement>;\n    form: FormHTMLAttributes<HTMLFormElement>;\n    h1: HTMLAttributes<HTMLHeadingElement>;\n    h2: HTMLAttributes<HTMLHeadingElement>;\n    h3: HTMLAttributes<HTMLHeadingElement>;\n    h4: HTMLAttributes<HTMLHeadingElement>;\n    h5: HTMLAttributes<HTMLHeadingElement>;\n    h6: HTMLAttributes<HTMLHeadingElement>;\n    head: HTMLAttributes<HTMLHeadElement>;\n    header: HTMLAttributes<HTMLElement>;\n    hgroup: HTMLAttributes<HTMLElement>;\n    hr: HTMLAttributes<HTMLHRElement>;\n    html: HTMLAttributes<HTMLHtmlElement>;\n    i: HTMLAttributes<HTMLElement>;\n    iframe: IframeHTMLAttributes<HTMLIFrameElement>;\n    img: ImgHTMLAttributes<HTMLImageElement>;\n    input: InputHTMLAttributes<HTMLInputElement>;\n    ins: InsHTMLAttributes<HTMLModElement>;\n    kbd: HTMLAttributes<HTMLElement>;\n    keygen: KeygenHTMLAttributes<HTMLElement>;\n    label: LabelHTMLAttributes<HTMLLabelElement>;\n    legend: HTMLAttributes<HTMLLegendElement>;\n    li: LiHTMLAttributes<HTMLLIElement>;\n    link: LinkHTMLAttributes<HTMLLinkElement>;\n    main: HTMLAttributes<HTMLElement>;\n    map: MapHTMLAttributes<HTMLMapElement>;\n    mark: HTMLAttributes<HTMLElement>;\n    menu: MenuHTMLAttributes<HTMLElement>;\n    menuitem: HTMLAttributes<HTMLElement>;\n    meta: MetaHTMLAttributes<HTMLMetaElement>;\n    meter: MeterHTMLAttributes<HTMLElement>;\n    nav: HTMLAttributes<HTMLElement>;\n    noindex: HTMLAttributes<HTMLElement>;\n    noscript: HTMLAttributes<HTMLElement>;\n    object: ObjectHTMLAttributes<HTMLObjectElement>;\n    ol: OlHTMLAttributes<HTMLOListElement>;\n    optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>;\n    option: OptionHTMLAttributes<HTMLOptionElement>;\n    output: OutputHTMLAttributes<HTMLElement>;\n    p: HTMLAttributes<HTMLParagraphElement>;\n    param: ParamHTMLAttributes<HTMLParamElement>;\n    picture: HTMLAttributes<HTMLElement>;\n    pre: HTMLAttributes<HTMLPreElement>;\n    progress: ProgressHTMLAttributes<HTMLProgressElement>;\n    q: QuoteHTMLAttributes<HTMLQuoteElement>;\n    rp: HTMLAttributes<HTMLElement>;\n    rt: HTMLAttributes<HTMLElement>;\n    ruby: HTMLAttributes<HTMLElement>;\n    s: HTMLAttributes<HTMLElement>;\n    samp: HTMLAttributes<HTMLElement>;\n    script: ScriptHTMLAttributes<HTMLElement>;\n    section: HTMLAttributes<HTMLElement>;\n    select: SelectHTMLAttributes<HTMLSelectElement>;\n    slot: HTMLSlotElementAttributes;\n    small: HTMLAttributes<HTMLElement>;\n    source: SourceHTMLAttributes<HTMLSourceElement>;\n    span: HTMLAttributes<HTMLSpanElement>;\n    strong: HTMLAttributes<HTMLElement>;\n    style: StyleHTMLAttributes<HTMLStyleElement>;\n    sub: HTMLAttributes<HTMLElement>;\n    summary: HTMLAttributes<HTMLElement>;\n    sup: HTMLAttributes<HTMLElement>;\n    table: HTMLAttributes<HTMLTableElement>;\n    tbody: HTMLAttributes<HTMLTableSectionElement>;\n    td: TdHTMLAttributes<HTMLTableDataCellElement>;\n    textarea: TextareaHTMLAttributes<HTMLTextAreaElement>;\n    tfoot: HTMLAttributes<HTMLTableSectionElement>;\n    th: ThHTMLAttributes<HTMLTableHeaderCellElement>;\n    thead: HTMLAttributes<HTMLTableSectionElement>;\n    time: TimeHTMLAttributes<HTMLElement>;\n    title: HTMLAttributes<HTMLTitleElement>;\n    tr: HTMLAttributes<HTMLTableRowElement>;\n    track: TrackHTMLAttributes<HTMLTrackElement>;\n    u: HTMLAttributes<HTMLElement>;\n    ul: HTMLAttributes<HTMLUListElement>;\n    var: HTMLAttributes<HTMLElement>;\n    video: VideoHTMLAttributes<HTMLVideoElement>;\n    wbr: HTMLAttributes<HTMLElement>;\n    template: HTMLAttributes<HTMLTemplateElement>;\n\n    // SVG\n    svg: SvgSVGAttributes<SVGSVGElement>;\n\n    animate: AnimateSVGAttributes<SVGAnimateElement>;\n    animateMotion: AnimateMotionSVGAttributes<SVGAnimateMotionElement>;\n    animateTransform: AnimateTransformSVGAttributes<SVGAnimateTransformElement>;\n    circle: CircleSVGAttributes<SVGCircleElement>;\n    clipPath: ClipPathSVGAttributes<SVGClipPathElement>;\n    defs: DefsSVGAttributes<SVGDefsElement>;\n    desc: DescSVGAttributes<SVGDescElement>;\n    ellipse: EllipseSVGAttributes<SVGEllipseElement>;\n    feBlend: FeBlendSVGAttributes<SVGFEBlendElement>;\n    feColorMatrix: FeColorMatrixSVGAttributes<SVGFEColorMatrixElement>;\n    feComponentTransfer: FeComponentTransferSVGAttributes<SVGFEComponentTransferElement>;\n    feComposite: FeCompositeSVGAttributes<SVGFECompositeElement>;\n    feConvolveMatrix: FeConvolveMatrixSVGAttributes<SVGFEConvolveMatrixElement>;\n    feDiffuseLighting: FeDiffuseLightingSVGAttributes<SVGFEDiffuseLightingElement>;\n    feDisplacementMap: FeDisplacementMapSVGAttributes<SVGFEDisplacementMapElement>;\n    feDistantLight: FeDistantLightSVGAttributes<SVGFEDistantLightElement>;\n    feFlood: FeFloodSVGAttributes<SVGFEFloodElement>;\n    feFuncA: FeFuncSVGAttributes<SVGFEFuncAElement>;\n    feFuncB: FeFuncSVGAttributes<SVGFEFuncBElement>;\n    feFuncG: FeFuncSVGAttributes<SVGFEFuncGElement>;\n    feFuncR: FeFuncSVGAttributes<SVGFEFuncRElement>;\n    feGaussianBlur: FeGaussianBlurSVGAttributes<SVGFEGaussianBlurElement>;\n    feImage: FeImageSVGAttributes<SVGFEImageElement>;\n    feMerge: FeMergeSVGAttributes<SVGFEMergeElement>;\n    feMergeNode: FeMergeNodeSVGAttributes<SVGFEMergeNodeElement>;\n    feMorphology: FeMorphologySVGAttributes<SVGFEMorphologyElement>;\n    feOffset: FeOffsetSVGAttributes<SVGFEOffsetElement>;\n    fePointLight: FePointLightSVGAttributes<SVGFEPointLightElement>;\n    feSpecularLighting: FeSpecularLightingSVGAttributes<SVGFESpecularLightingElement>;\n    feSpotLight: FeSpotLightSVGAttributes<SVGFESpotLightElement>;\n    feTile: FeTileSVGAttributes<SVGFETileElement>;\n    feTurbulence: FeTurbulanceSVGAttributes<SVGFETurbulenceElement>;\n    filter: FilterSVGAttributes<SVGFilterElement>;\n    foreignObject: ForeignObjectSVGAttributes<SVGForeignObjectElement>;\n    g: GSVGAttributes<SVGGElement>;\n    image: ImageSVGAttributes<SVGImageElement>;\n    line: LineSVGAttributes<SVGLineElement>;\n    linearGradient: LinearGradientSVGAttributes<SVGLinearGradientElement>;\n    marker: MarkerSVGAttributes<SVGMarkerElement>;\n    mask: MaskSVGAttributes<SVGMaskElement>;\n    metadata: MetadataSVGAttributes<SVGMetadataElement>;\n    path: PathSVGAttributes<SVGPathElement>;\n    pattern: PatternSVGAttributes<SVGPatternElement>;\n    polygon: PolygonSVGAttributes<SVGPolygonElement>;\n    polyline: PolylineSVGAttributes<SVGPolylineElement>;\n    radialGradient: RadialGradientSVGAttributes<SVGRadialGradientElement>;\n    rect: RectSVGAttributes<SVGRectElement>;\n    stop: StopSVGAttributes<SVGStopElement>;\n    switch: SwitchSVGAttributes<SVGSwitchElement>;\n    symbol: SymbolSVGAttributes<SVGSymbolElement>;\n    text: TextSVGAttributes<SVGTextElement>;\n    textPath: TextPathSVGAttributes<SVGTextPathElement>;\n    tspan: TSpanSVGAttributes<SVGTSpanElement>;\n    use: UseSVGAttributes<SVGUseElement>;\n    view: ViewSVGAttributes<SVGViewElement>;\n  }\n\n  type AriaRole =\n    | 'alert'\n    | 'alertdialog'\n    | 'application'\n    | 'article'\n    | 'banner'\n    | 'button'\n    | 'cell'\n    | 'checkbox'\n    | 'columnheader'\n    | 'combobox'\n    | 'complementary'\n    | 'contentinfo'\n    | 'definition'\n    | 'dialog'\n    | 'directory'\n    | 'document'\n    | 'feed'\n    | 'figure'\n    | 'form'\n    | 'grid'\n    | 'gridcell'\n    | 'group'\n    | 'heading'\n    | 'img'\n    | 'link'\n    | 'list'\n    | 'listbox'\n    | 'listitem'\n    | 'log'\n    | 'main'\n    | 'marquee'\n    | 'math'\n    | 'menu'\n    | 'menubar'\n    | 'menuitem'\n    | 'menuitemcheckbox'\n    | 'menuitemradio'\n    | 'navigation'\n    | 'none'\n    | 'note'\n    | 'option'\n    | 'presentation'\n    | 'progressbar'\n    | 'radio'\n    | 'radiogroup'\n    | 'region'\n    | 'row'\n    | 'rowgroup'\n    | 'rowheader'\n    | 'scrollbar'\n    | 'search'\n    | 'searchbox'\n    | 'separator'\n    | 'slider'\n    | 'spinbutton'\n    | 'status'\n    | 'switch'\n    | 'tab'\n    | 'table'\n    | 'tablist'\n    | 'tabpanel'\n    | 'term'\n    | 'textbox'\n    | 'timer'\n    | 'toolbar'\n    | 'tooltip'\n    | 'tree'\n    | 'treegrid'\n    | 'treeitem'\n    | (string & {});\n\n  type Booleanish = boolean | 'true' | 'false';\n\n  interface AriaAttributes {\n    /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */\n    'aria-activedescendant'?: string | undefined;\n    /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */\n    'aria-atomic'?: Booleanish | undefined;\n    /**\n     * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be\n     * presented if they are made.\n     */\n    'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both' | undefined;\n    /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */\n    'aria-busy'?: Booleanish | undefined;\n    /**\n     * Indicates the current \"checked\" state of checkboxes, radio buttons, and other widgets.\n     * @see aria-pressed @see aria-selected.\n     */\n    'aria-checked'?: boolean | 'false' | 'mixed' | 'true' | undefined;\n    /**\n     * Defines the total number of columns in a table, grid, or treegrid.\n     * @see aria-colindex.\n     */\n    'aria-colcount'?: number | undefined;\n    /**\n     * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.\n     * @see aria-colcount @see aria-colspan.\n     */\n    'aria-colindex'?: number | undefined;\n    /**\n     * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.\n     * @see aria-colindex @see aria-rowspan.\n     */\n    'aria-colspan'?: number | undefined;\n    /**\n     * Identifies the element (or elements) whose contents or presence are controlled by the current element.\n     * @see aria-owns.\n     */\n    'aria-controls'?: string | undefined;\n    /** Indicates the element that represents the current item within a container or set of related elements. */\n    'aria-current'?:\n      | boolean\n      | 'false'\n      | 'true'\n      | 'page'\n      | 'step'\n      | 'location'\n      | 'date'\n      | 'time'\n      | undefined;\n    /**\n     * Identifies the element (or elements) that describes the object.\n     * @see aria-labelledby\n     */\n    'aria-describedby'?: string | undefined;\n    /**\n     * Identifies the element that provides a detailed, extended description for the object.\n     * @see aria-describedby.\n     */\n    'aria-details'?: string | undefined;\n    /**\n     * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.\n     * @see aria-hidden @see aria-readonly.\n     */\n    'aria-disabled'?: Booleanish | undefined;\n    /**\n     * Indicates what functions can be performed when a dragged object is released on the drop target.\n     * @deprecated in ARIA 1.1\n     */\n    'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined;\n    /**\n     * Identifies the element that provides an error message for the object.\n     * @see aria-invalid @see aria-describedby.\n     */\n    'aria-errormessage'?: string | undefined;\n    /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */\n    'aria-expanded'?: Booleanish | undefined;\n    /**\n     * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,\n     * allows assistive technology to override the general default of reading in document source order.\n     */\n    'aria-flowto'?: string | undefined;\n    /**\n     * Indicates an element's \"grabbed\" state in a drag-and-drop operation.\n     * @deprecated in ARIA 1.1\n     */\n    'aria-grabbed'?: Booleanish | undefined;\n    /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */\n    'aria-haspopup'?:\n      | boolean\n      | 'false'\n      | 'true'\n      | 'menu'\n      | 'listbox'\n      | 'tree'\n      | 'grid'\n      | 'dialog'\n      | undefined;\n    /**\n     * Indicates whether the element is exposed to an accessibility API.\n     * @see aria-disabled.\n     */\n    'aria-hidden'?: Booleanish | undefined;\n    /**\n     * Indicates the entered value does not conform to the format expected by the application.\n     * @see aria-errormessage.\n     */\n    'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined;\n    /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */\n    'aria-keyshortcuts'?: string | undefined;\n    /**\n     * Defines a string value that labels the current element.\n     * @see aria-labelledby.\n     */\n    'aria-label'?: string | undefined;\n    /**\n     * Identifies the element (or elements) that labels the current element.\n     * @see aria-describedby.\n     */\n    'aria-labelledby'?: string | undefined;\n    /** Defines the hierarchical level of an element within a structure. */\n    'aria-level'?: number | undefined;\n    /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */\n    'aria-live'?: 'off' | 'assertive' | 'polite' | undefined;\n    /** Indicates whether an element is modal when displayed. */\n    'aria-modal'?: Booleanish | undefined;\n    /** Indicates whether a text box accepts multiple lines of input or only a single line. */\n    'aria-multiline'?: Booleanish | undefined;\n    /** Indicates that the user may select more than one item from the current selectable descendants. */\n    'aria-multiselectable'?: Booleanish | undefined;\n    /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */\n    'aria-orientation'?: 'horizontal' | 'vertical' | undefined;\n    /**\n     * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship\n     * between DOM elements where the DOM hierarchy cannot be used to represent the relationship.\n     * @see aria-controls.\n     */\n    'aria-owns'?: string | undefined;\n    /**\n     * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.\n     * A hint could be a sample value or a brief description of the expected format.\n     */\n    'aria-placeholder'?: string | undefined;\n    /**\n     * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.\n     * @see aria-setsize.\n     */\n    'aria-posinset'?: number | undefined;\n    /**\n     * Indicates the current \"pressed\" state of toggle buttons.\n     * @see aria-checked @see aria-selected.\n     */\n    'aria-pressed'?: boolean | 'false' | 'mixed' | 'true' | undefined;\n    /**\n     * Indicates that the element is not editable, but is otherwise operable.\n     * @see aria-disabled.\n     */\n    'aria-readonly'?: Booleanish | undefined;\n    /**\n     * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.\n     * @see aria-atomic.\n     */\n    'aria-relevant'?:\n      | 'additions'\n      | 'additions removals'\n      | 'additions text'\n      | 'all'\n      | 'removals'\n      | 'removals additions'\n      | 'removals text'\n      | 'text'\n      | 'text additions'\n      | 'text removals'\n      | undefined;\n    /** Indicates that user input is required on the element before a form may be submitted. */\n    'aria-required'?: Booleanish | undefined;\n    /** Defines a human-readable, author-localized description for the role of an element. */\n    'aria-roledescription'?: string | undefined;\n    /**\n     * Defines the total number of rows in a table, grid, or treegrid.\n     * @see aria-rowindex.\n     */\n    'aria-rowcount'?: number | undefined;\n    /**\n     * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.\n     * @see aria-rowcount @see aria-rowspan.\n     */\n    'aria-rowindex'?: number | undefined;\n    /**\n     * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.\n     * @see aria-rowindex @see aria-colspan.\n     */\n    'aria-rowspan'?: number | undefined;\n    /**\n     * Indicates the current \"selected\" state of various widgets.\n     * @see aria-checked @see aria-pressed.\n     */\n    'aria-selected'?: Booleanish | undefined;\n    /**\n     * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.\n     * @see aria-posinset.\n     */\n    'aria-setsize'?: number | undefined;\n    /** Indicates if items in a table or grid are sorted in ascending or descending order. */\n    'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other' | undefined;\n    /** Defines the maximum allowed value for a range widget. */\n    'aria-valuemax'?: number | undefined;\n    /** Defines the minimum allowed value for a range widget. */\n    'aria-valuemin'?: number | undefined;\n    /**\n     * Defines the current value for a range widget.\n     * @see aria-valuetext.\n     */\n    'aria-valuenow'?: number | undefined;\n    /** Defines the human readable text alternative of aria-valuenow for a range widget. */\n    'aria-valuetext'?: string | undefined;\n  }\n}\n\nexport {};\n"
  },
  {
    "path": "packages/core/package.json",
    "content": "{\n  \"name\": \"@builder.io/mitosis\",\n  \"description\": \"Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io\",\n  \"keywords\": [\n    \"jsx\",\n    \"compiler\",\n    \"no-code\",\n    \"builder.io\",\n    \"figma\",\n    \"react\",\n    \"vue\",\n    \"solid\",\n    \"liquid\",\n    \"shopify\",\n    \"builder\",\n    \"wysiwyg\",\n    \"drag-drop\",\n    \"mitosis\",\n    \"angular\"\n  ],\n  \"author\": {\n    \"name\": \"Builder.io\",\n    \"url\": \"https://www.builder.io\"\n  },\n  \"version\": \"0.13.0\",\n  \"homepage\": \"https://github.com/BuilderIO/mitosis\",\n  \"main\": \"./dist/src/index.js\",\n  \"exports\": {\n    \".\": \"./dist/src/index.js\",\n    \"./lib/*\": \"./dist/src/*\",\n    \"./jsx-runtime\": \"./jsx-runtime.d.ts\",\n    \"./types\": \"./dist/src/index.d.ts\"\n  },\n  \"types\": \"./dist/src/index.d.ts\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/BuilderIO/mitosis\"\n  },\n  \"scripts\": {\n    \"test:watch\": \"vitest\",\n    \"test:watch:update\": \"yarn test:watch --update\",\n    \"test\": \"yarn test:watch run\",\n    \"test:update\": \"yarn test --update\",\n    \"tsc\": \"tsc --build tsconfig.build.json\",\n    \"tsc-alias\": \"tsc-alias -p tsconfig.build.json\",\n    \"rmrf\": \"rimraf ./dist\",\n    \"build\": \"yarn rmrf && yarn tsc && yarn tsc-alias\",\n    \"start\": \"yarn rmrf && concurrently --kill-others \\\"yarn tsc --watch\\\" \\\"yarn tsc-alias --watch\\\"\"\n  },\n  \"files\": [\n    \"dist\",\n    \"jsx-runtime.d.ts\",\n    \"!**/*.tsbuildinfo\"\n  ],\n  \"dependencies\": {\n    \"@angular/compiler\": \"^11.2.11\",\n    \"@babel/core\": \"7.14.5\",\n    \"@babel/generator\": \"^7.14.3\",\n    \"@babel/plugin-syntax-decorators\": \"^7.12.1\",\n    \"@babel/plugin-syntax-typescript\": \"^7.20.0\",\n    \"@babel/plugin-transform-react-jsx\": \"^7.13.12\",\n    \"@babel/preset-typescript\": \"^7.13.0\",\n    \"@builder.io/sdk\": \"^2.1.1\",\n    \"astring\": \"^1.8.6\",\n    \"csstype\": \"^3.0.4\",\n    \"fp-ts\": \"^2.11.10\",\n    \"hash-sum\": \"^2.0.0\",\n    \"json5\": \"^2.1.3\",\n    \"lodash\": \"^4.17.20\",\n    \"neotraverse\": \"^0.6.15\",\n    \"object-hash\": \"^2.0.3\",\n    \"prettier\": \">=2.0.0 <3.0.0\",\n    \"prettier-plugin-organize-imports\": \"^3.2.3\",\n    \"prettier-plugin-svelte\": \"^2.10.0\",\n    \"svelte\": \"^3.30.0\",\n    \"svelte-preprocess\": \"^5.0.3\",\n    \"ts-morph\": \"^19.0.0\",\n    \"typescript\": \"^5.3.2\"\n  },\n  \"devDependencies\": {\n    \"@babel/preset-env\": \"^7.6.0\",\n    \"@rollup/plugin-node-resolve\": \"^11.2.1\",\n    \"@rollup/plugin-virtual\": \"^2.1.0\",\n    \"@tootallnate/once\": \"^1.1.2\",\n    \"@types/babel__core\": \"7.1.14\",\n    \"@types/dedent\": \"^0.7.0\",\n    \"@types/estree\": \"^1.0.2\",\n    \"@types/hash-sum\": \"^1.0.0\",\n    \"@types/json5\": \"0.0.30\",\n    \"@types/lodash\": \"^4.14.165\",\n    \"@types/node\": \"^15.12.0\",\n    \"@types/object-hash\": \"^1.3.4\",\n    \"@types/prettier\": \"^2.1.5\",\n    \"@types/rollup__plugin-virtual\": \"^2.0.1\",\n    \"concurrently\": \"^8.2.2\",\n    \"rimraf\": \"^5.0.5\",\n    \"rollup\": \"^2.70.1\",\n    \"strip-ansi\": \"^6.0.1\",\n    \"tsc-alias\": \"^1.8.8\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^4.5.0\",\n    \"vite-tsconfig-paths\": \"^3.5.0\",\n    \"vitest\": \"^0.34.6\"\n  }\n}\n"
  },
  {
    "path": "packages/core/project.json",
    "content": "{\n  \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n  \"name\": \"@builder.io/mitosis\",\n  \"targets\": {\n    \"test:watch\": {\n      /**\n      We need to build the core before running tests because some of the tests \n      (like the Signal ones) rely on the core being built.\n      */\n      \"dependsOn\": [\"build\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/scripts/remove-stableVersion.sh",
    "content": "#!/bin/bash\n\n# Remove `stableVersion` before relreasing, as it's buggy.\n# https://github.com/yarnpkg/berry/issues/3868\necho \"$(jq 'del(.stableVersion)' package.json)\" >package.json\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/alpine.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Alpine.js > jsx > Javascript Test > Advanced 1`] = `\n\"<main x-data=\\\\\"myBasicForShowComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <div>\n      <span x-html=\\\\\"i\\\\\"></span>\n      :\n      <span x-html=\\\\\"person\\\\\"></span>\n    </div>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span><span x-html=\\\\\"person\\\\\"></span></span>\n  </template>\n  <template x-for=\\\\\"undefined in names\\\\\">\n    <br />\n  </template>\n  <template\n    x-for=\\\\\"_ in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <pre><span x-html=\\\\\"ee\\\\\"></span></pre>\n  </template>\n  <template\n    x-for=\\\\\"undefined in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <p><span x-html=\\\\\"index\\\\\"></span></p>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </span>\n  </template>\n  <template\n    x-for=\\\\\"person in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"count\\\\\"></span>\n    </span>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"i\\\\\"></span>\n    </span>\n  </template>\n  <template\n    x-for=\\\\\"person in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </span>\n  </template>\n</main>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForShowComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicRefComponent()\\\\\">\n  <template x-if=\\\\\"showInput\\\\\">\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        x-ref=\\\\\"inputRef\\\\\"\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:blur=\\\\\"onBlur()\\\\\"\n        x-on:change=\\\\\"name = $event.target.value\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" x-ref=\\\\\"inputNoArgRef\\\\\">Choose a car:</label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </div>\n  </template>\n\n  Hello\n\n  <span x-html=\\\\\"lowerCaseName()\\\\\"></span>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        this.$refs.inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  <input\n    x-bind:value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n    x-on:change=\\\\\"name = myEvent.target.value\\\\\"\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic 2`] = `\n\"<div x-data=\\\\\"myBasicForShowComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <template x-if=\\\\\"person === name\\\\\">\n      <input\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:change=\\\\\"name = $event.target.value + ' and ' + person\\\\\"\n      />\n\n      Hello\n      <span x-html=\\\\\"person\\\\\"></span>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForShowComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic Context 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"myService.method('hello') + name\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input x-on:change=\\\\\"onChange()\\\\\" />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n\n      init() {\n        const bye = myService.method(\\\\\"hi\\\\\");\n        console.log(bye);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<div x-data=\\\\\"myBasicOnMountUpdateComponent()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOnMountUpdateComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n\n      init() {\n        this.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<div x-data=\\\\\"myBasicOutputsComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOutputsComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        props.onMessageChange(this.name);\n        props.onEvent(props.message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div x-data=\\\\\"myBasicOutputsComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOutputsComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        props.onMessageChange(this.name);\n        props.onEvent(props.message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicAttribute 1`] = `\n\"<input\n  autocapitalize=\\\\\"on\\\\\"\n  autocomplete=\\\\\"on\\\\\"\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:spellcheck=\\\\\"true\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<div x-data=\\\\\"myBooleanAttribute()\\\\\">\n  <template x-if=\\\\\"children\\\\\">\n    <span x-html=\\\\\"children\\\\\"></span>\n    <span x-html=\\\\\"type\\\\\"></span>\n  </template>\n  <MyBooleanAttributeComponent\n    x-bind:toggle=\\\\\"true\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    x-bind:toggle=\\\\\"true\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent x-bind:list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBooleanAttribute\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<div x-data=\\\\\"myBasicChildComponent()\\\\\">\n  <MyBasicComponent x-bind:id=\\\\\"dev\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      x-bind:hi=\\\\\"name\\\\\"\n      x-bind:bye=\\\\\"dev\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      x-on:message-change=\\\\\"name = name\\\\\"\n      x-on:event=\\\\\"log('Test')\\\\\"\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicChildComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message) {\n        console.log(message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicFor 1`] = `\n\"<div x-data=\\\\\"myBasicForComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <div>\n      <input\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:change=\\\\\"name = $event.target.value + ' and ' + person\\\\\"\n      />\n\n      Hello\n      <span x-html=\\\\\"person\\\\\"></span>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n\n      init() {\n        console.log(\\\\\"onMount code\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicRefComponent()\\\\\">\n  <template x-if=\\\\\"showInput\\\\\">\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        x-ref=\\\\\"inputRef\\\\\"\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:blur=\\\\\"onBlur()\\\\\"\n        x-on:change=\\\\\"name = $event.target.value\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" x-ref=\\\\\"inputNoArgRef\\\\\">Choose a car:</label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </div>\n  </template>\n\n  Hello\n\n  <span x-html=\\\\\"lowerCaseName()\\\\\"></span>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        this.$refs.inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<div x-data=\\\\\"myBasicRefAssignmentComponent()\\\\\">\n  <button x-on:click=\\\\\"await handlerClick(evt)\\\\\">Click</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefAssignmentComponent\\\\\", () => ({\n      handlerClick: function handlerClick(event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", holdValueRef);\n        holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<div x-data=\\\\\"myPreviousComponent()\\\\\">\n  <h1>\n    Now:\n    <span x-html=\\\\\"count\\\\\"></span>\n    , before:\n    <span x-html=\\\\\"prevCount\\\\\"></span>\n  </h1>\n  <button x-on:click=\\\\\"count += 1\\\\\">Increment</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myPreviousComponent\\\\\", () => ({\n      count: 0,\n\n      init() {\n        this.$watch(\\\\\"count\\\\\", (value, oldValue) => {\n          prevCount = this.count;\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Button 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Columns 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n<div class=\\\\\"builder-columns div\\\\\" x-data=\\\\\"column()\\\\\">\n  <template x-for=\\\\\"column in columns\\\\\">\n    <div class=\\\\\"builder-column div-2\\\\\">\n      <span x-html=\\\\\"column.content\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"column\\\\\", () => ({\n      getColumns() {\n        return props.columns || [];\n      },\n\n      getGutterSize() {\n        return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n      },\n\n      getWidth(index) {\n        const columns = this.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n\n      getColumnCssWidth(index) {\n        const columns = this.getColumns();\n        const gutterSize = this.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<div x-data=\\\\\"contentSlotCode()\\\\\">\n  <slot x-bind:name=\\\\\"slotTesting\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"contentSlotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"<template x-if=\\\\\"slotReference\\\\\">\n  <div\n    x-bind:name=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n    x-bind:title=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n    x-bind=\\\\\"attributes\\\\\"\n    x-on:click=\\\\\"show()\\\\\"\n    x-bind:class=\\\\\"cls\\\\\"\n  >\n    <template x-if=\\\\\"showContent && slotContent\\\\\">\n      <slot name=\\\\\"content\\\\\"><span x-html=\\\\\"content\\\\\"></span></slot>\n    </template>\n    <div><hr /></div>\n    <div><span x-html=\\\\\"children\\\\\"></span></div>\n  </div>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"contentSlotJsxCode\\\\\", () => ({\n      name: \\\\\"king\\\\\",\n      showContent: false,\n\n      get cls() {\n        return props.slotContent && props.children\n          ? \\`\\${this.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n\n      show() {\n        props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > CustomCode 1`] = `\n\"<div\n  x-data=\\\\\"customCode()\\\\\"\n  x-ref=\\\\\"elem\\\\\"\n  x-bind:class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n  x-bind:innerHTML=\\\\\"code\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"customCode\\\\\", () => ({\n      scriptsInserted: [],\n      scriptsRun: [],\n\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (this.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              this.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (this.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                this.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n\n      init() {\n        this.findAndRunScripts();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Embed 1`] = `\n\"<div\n  x-data=\\\\\"customCode()\\\\\"\n  x-ref=\\\\\"elem\\\\\"\n  x-bind:class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n  x-bind:innerHTML=\\\\\"code\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"customCode\\\\\", () => ({\n      scriptsInserted: [],\n      scriptsRun: [],\n\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (this.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              this.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (this.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                this.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n\n      init() {\n        this.findAndRunScripts();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Form 1`] = `\n\"<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\n<form\n  x-data=\\\\\"formComponent()\\\\\"\n  x-bind:validate=\\\\\"validate\\\\\"\n  x-ref=\\\\\"formRef\\\\\"\n  x-bind:action=\\\\\"!sendWithJs && action\\\\\"\n  x-bind:method=\\\\\"method\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-on:submit=\\\\\"onSubmit($event)\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n>\n  <template x-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n    <template x-for=\\\\\"block in builderBlock?.children\\\\\">\n      <BuilderBlockComponent\n        x-bind:key=\\\\\"block.id\\\\\"\n        x-bind:block=\\\\\"block\\\\\"\n        x-bind:index=\\\\\"index\\\\\"\n      ></BuilderBlockComponent>\n    </template>\n  </template>\n  <template x-if=\\\\\"submissionState === 'error'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      x-bind:blocks=\\\\\"errorMessage\\\\\"\n    ></BuilderBlocks>\n  </template>\n  <template x-if=\\\\\"submissionState === 'sending'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      x-bind:blocks=\\\\\"sendingMessage\\\\\"\n    ></BuilderBlocks>\n  </template>\n  <template x-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n    <pre\n      class=\\\\\"builder-form-error-text pre\\\\\"\n    ><span x-html=\\\\\"JSON.stringify(responseData, null, 2)\\\\\"></span></pre>\n  </template>\n  <template x-if=\\\\\"submissionState === 'success'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"successMessage\\\\\"\n      x-bind:blocks=\\\\\"successMessage\\\\\"\n    ></BuilderBlocks>\n  </template>\n</form>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"formComponent\\\\\", () => ({\n      formState: \\\\\"unsubmitted\\\\\",\n      responseData: null,\n      formErrorMessage: \\\\\"\\\\\",\n\n      get submissionState() {\n        return (Builder.isEditing && props.previewState) || this.formState;\n      },\n\n      onSubmit(event) {\n        const sendWithJs =\n          props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n        if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n          event.preventDefault();\n        } else if (sendWithJs) {\n          if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n            event.preventDefault();\n            return;\n          }\n\n          event.preventDefault();\n          const el = event.currentTarget;\n          const headers = props.customHeaders || {};\n          let body;\n          const formData = new FormData(el); // TODO: maybe support null\n\n          const formPairs = Array.from(\n            event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n          )\n            .filter((el) => !!el.name)\n            .map((el) => {\n              let value;\n              const key = el.name;\n\n              if (el instanceof HTMLInputElement) {\n                if (el.type === \\\\\"radio\\\\\") {\n                  if (el.checked) {\n                    value = el.name;\n                    return {\n                      key,\n                      value,\n                    };\n                  }\n                } else if (el.type === \\\\\"checkbox\\\\\") {\n                  value = el.checked;\n                } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                  const num = el.valueAsNumber;\n\n                  if (!isNaN(num)) {\n                    value = num;\n                  }\n                } else if (el.type === \\\\\"file\\\\\") {\n                  // TODO: one vs multiple files\n                  value = el.files;\n                } else {\n                  value = el.value;\n                }\n              } else {\n                value = el.value;\n              }\n\n              return {\n                key,\n                value,\n              };\n            });\n          let contentType = props.contentType;\n\n          if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n\n          Array.from(formPairs).forEach(({ value }) => {\n            if (\n              value instanceof File ||\n              (Array.isArray(value) && value[0] instanceof File) ||\n              value instanceof FileList\n            ) {\n              contentType = \\\\\"multipart/form-data\\\\\";\n            }\n          }); // TODO: send as urlEncoded or multipart by default\n          // because of ease of use and reliability in browser API\n          // for encoding the form?\n\n          if (contentType !== \\\\\"application/json\\\\\") {\n            body = formData;\n          } else {\n            // Json\n            const json = {};\n            Array.from(formPairs).forEach(({ value, key }) => {\n              set(json, key, value);\n            });\n            body = JSON.stringify(json);\n          }\n\n          if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n            if (\n              /* Zapier doesn't allow content-type header to be sent from browsers */\n              !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n            ) {\n              headers[\\\\\"content-type\\\\\"] = contentType;\n            }\n          }\n\n          const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n            detail: {\n              body,\n            },\n          });\n\n          if (this.$refs.formRef) {\n            this.$refs.formRef.dispatchEvent(presubmitEvent);\n\n            if (presubmitEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.formState = \\\\\"sending\\\\\";\n          const formUrl = \\`\\${\n            builder.env === \\\\\"dev\\\\\"\n              ? \\\\\"http://localhost:5000\\\\\"\n              : \\\\\"https://builder.io\\\\\"\n          }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n            props.sendSubmissionsToEmail || \\\\\"\\\\\"\n          )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n          fetch(\n            props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n            /* TODO: throw error if no action URL */\n            {\n              body,\n              headers,\n              method: props.method || \\\\\"post\\\\\",\n            }\n          ).then(\n            async (res) => {\n              let body;\n              const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n              if (\n                contentType &&\n                contentType.indexOf(\\\\\"application/json\\\\\") !== -1\n              ) {\n                body = await res.json();\n              } else {\n                body = await res.text();\n              }\n\n              if (!res.ok && props.errorMessagePath) {\n                /* TODO: allow supplying an error formatter function */\n                let message = get(body, props.errorMessagePath);\n\n                if (message) {\n                  if (typeof message !== \\\\\"string\\\\\") {\n                    /* TODO: ideally convert json to yaml so it woul dbe like\n                 error: - email has been taken */\n                    message = JSON.stringify(message);\n                  }\n\n                  this.formErrorMessage = message;\n                }\n              }\n\n              this.responseData = body;\n              this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n              if (res.ok) {\n                const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                  detail: {\n                    res,\n                    body,\n                  },\n                });\n\n                if (this.$refs.formRef) {\n                  this.$refs.formRef.dispatchEvent(submitSuccessEvent);\n\n                  if (submitSuccessEvent.defaultPrevented) {\n                    return;\n                  }\n                  /* TODO: option to turn this on/off? */\n\n                  if (props.resetFormOnSubmit !== false) {\n                    this.$refs.formRef.reset();\n                  }\n                }\n                /* TODO: client side route event first that can be preventDefaulted */\n\n                if (props.successUrl) {\n                  if (this.$refs.formRef) {\n                    const event = new CustomEvent(\\\\\"route\\\\\", {\n                      detail: {\n                        url: props.successUrl,\n                      },\n                    });\n                    this.$refs.formRef.dispatchEvent(event);\n\n                    if (!event.defaultPrevented) {\n                      location.href = props.successUrl;\n                    }\n                  } else {\n                    location.href = props.successUrl;\n                  }\n                }\n              }\n            },\n            (err) => {\n              const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n                detail: {\n                  error: err,\n                },\n              });\n\n              if (this.$refs.formRef) {\n                this.$refs.formRef.dispatchEvent(submitErrorEvent);\n\n                if (submitErrorEvent.defaultPrevented) {\n                  return;\n                }\n              }\n\n              this.responseData = err;\n              this.formState = \\\\\"error\\\\\";\n            }\n          );\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Image 1`] = `\n\"<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n<div x-data=\\\\\"image()\\\\\">\n  <picture x-ref=\\\\\"pictureRef\\\\\">\n    <template x-if=\\\\\"!useLazyLoading() || load\\\\\">\n      <img\n        x-bind:alt=\\\\\"altText\\\\\"\n        x-bind:aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n        x-bind:class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n        x-bind:src=\\\\\"image\\\\\"\n        x-on:load=\\\\\"setLoaded()\\\\\"\n        x-bind:srcset=\\\\\"srcset\\\\\"\n        x-bind:sizes=\\\\\"sizes\\\\\"\n      />\n    </template>\n    <source x-bind:srcset=\\\\\"srcset\\\\\" />\n  </picture>\n  <span x-html=\\\\\"children\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"image\\\\\", () => ({\n      scrollListener: null,\n      imageLoaded: false,\n\n      setLoaded() {\n        this.imageLoaded = true;\n      },\n\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!props.lazy && this.isBrowser();\n      },\n\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n\n      init() {\n        if (this.useLazyLoading()) {\n          // throttled scroll capture listener\n          const listener = () => {\n            if (pictureRef) {\n              const rect = pictureRef.getBoundingClientRect();\n              const buffer = window.innerHeight / 2;\n\n              if (rect.top < window.innerHeight + buffer) {\n                this.load = true;\n                this.scrollListener = null;\n                window.removeEventListener(\\\\\"scroll\\\\\", listener);\n              }\n            }\n          };\n\n          this.scrollListener = listener;\n          window.addEventListener(\\\\\"scroll\\\\\", listener, {\n            capture: true,\n            passive: true,\n          });\n          listener();\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Image State 1`] = `\n\"<div x-data=\\\\\"imgStateComponent()\\\\\">\n  <template x-for=\\\\\"item in images\\\\\">\n    <div>\n      <img class=\\\\\"custom-class\\\\\" x-bind:src=\\\\\"item\\\\\" x-bind:key=\\\\\"itemIndex\\\\\" />\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"imgStateComponent\\\\\", () => ({\n      canShow: true,\n      images: [\\\\\"http://example.com/qwik.png\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Img 1`] = `\n\"<img\n  x-data=\\\\\"imgComponent()\\\\\"\n  x-bind:style=\\\\\"{\n  objectFit: backgroundSize || 'cover',\n  objectPosition: backgroundPosition || 'center'\n}\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && imgSrc || 'default-key'\\\\\"\n  x-bind:alt=\\\\\"altText\\\\\"\n  x-bind:src=\\\\\"imgSrc\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"imgComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Input 1`] = `\n\"<input\n  x-data=\\\\\"formInputComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n  x-bind:placeholder=\\\\\"placeholder\\\\\"\n  x-bind:type=\\\\\"type\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n  x-bind:required=\\\\\"required\\\\\"\n  x-on:change=\\\\\"onChange?.($event.target.value)\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"formInputComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > InputParent 1`] = `\n\"<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  x-data=\\\\\"stepper()\\\\\"\n  x-on:change=\\\\\"handleChange(value)\\\\\"\n></FormInputComponent>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stepper\\\\\", () => ({\n      handleChange(value) {\n        console.log(value);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > NestedStore 1`] = `\n\"<div x-data=\\\\\"nestedStore()\\\\\" x-bind:id=\\\\\"_id\\\\\">\n  Test\n\n  <p x-bind:id=\\\\\"_messageId\\\\\">Message</p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedStore\\\\\", () => ({\n      _id: \\\\\"abc\\\\\",\n      _messageId: this._id + \\\\\"-message\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > RawText 1`] = `\n\"<span\n  x-data=\\\\\"rawText()\\\\\"\n  x-bind:class=\\\\\"attributes?.class || attributes?.className\\\\\"\n  x-bind:innerHTML=\\\\\"text || ''\\\\\"\n></span>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"rawText\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Section 1`] = `\n\"<section\n  x-data=\\\\\"sectionComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:style=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n  maxWidth: maxWidth\n} : undefined\\\\\"\n>\n  <span x-html=\\\\\"children\\\\\"></span>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"sectionComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Section 2`] = `\n\"<template x-if=\\\\\"max\\\\\">\n  <template x-for=\\\\\"item in items\\\\\">\n    <section\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:style=\\\\\"{\n  maxWidth: item + max\n}\\\\\"\n    >\n      <span x-html=\\\\\"children\\\\\"></span>\n    </section>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"sectionStateComponent\\\\\", () => ({\n      max: 42,\n      items: [42],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Select 1`] = `\n\"<select\n  x-data=\\\\\"selectComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n>\n  <template x-for=\\\\\"option in options\\\\\">\n    <option x-bind:value=\\\\\"option.value\\\\\" x-bind:data-index=\\\\\"index\\\\\">\n      <span x-html=\\\\\"option.name || option.value\\\\\"></span>\n    </option>\n  </template>\n</select>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"selectComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > SlotDefault 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > SlotHtml 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <ContentSlotCode>\n    <slot x-bind:testing=\\\\\"<div>Hello</div>\\\\\"></slot>\n  </ContentSlotCode>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > SlotJsx 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <ContentSlotCode x-bind:slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > SlotNamed 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Stamped.io 1`] = `\n\"<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n<div x-data=\\\\\"smileReviews()\\\\\" x-bind:data-user=\\\\\"name\\\\\">\n  <button x-on:click=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n  <template x-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button\\\\\"\n      x-on:click=\\\\\"ev.preventDefault();\nshowReviewPrompt = false\\\\\"\n    >\n      Submit\n    </button>\n  </template>\n  <template x-for=\\\\\"review in reviews\\\\\">\n    <div class=\\\\\"review\\\\\" x-bind:key=\\\\\"review.id\\\\\">\n      <img class=\\\\\"img\\\\\" x-bind:src=\\\\\"review.avatar\\\\\" />\n      <div x-bind:class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n        <div>\n          N:\n          <span x-html=\\\\\"index\\\\\"></span>\n        </div>\n        <div><span x-html=\\\\\"review.author\\\\\"></span></div>\n        <div><span x-html=\\\\\"review.reviewMessage\\\\\"></span></div>\n      </div>\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"smileReviews\\\\\", () => ({\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n\n      init() {\n        fetch(\n          \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n            props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n          }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n        )\n          .then((res) => res.json())\n          .then((data) => {\n            this.reviews = data.data;\n          });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > StoreComment 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      foo: true,\n\n      bar() {},\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"foo(errors)\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      errors: {},\n\n      foo(errors) {\n        return errors;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > StoreWithState 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"bar()\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      foo: false,\n\n      bar() {\n        return this.foo;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" x-data=\\\\\"submitButton()\\\\\" x-bind=\\\\\"attributes\\\\\">\n  <span x-html=\\\\\"text\\\\\"></span>\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"submitButton\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Text 1`] = `\n\"<div  x-data=\\\\\"text()\\\\\"  x-bind:contentEditable=\\\\\"allowEditingText || undefined\\\\\"  x-bind:data-name=\\\\\"{\n  test: name || 'any name'\n}\\\\\"  x-bind:innerHTML=\\\\\"text || content || name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\\\\\" ></div><script>\n          document.addEventListener('alpine:init', () => {\n  Alpine.data('text', () => ({\n    name: 'Decadef20'\n  }));\n});\n        </script>\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Textarea 1`] = `\n\"<textarea\n  x-data=\\\\\"textarea()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:placeholder=\\\\\"placeholder\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n></textarea>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"textarea\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<div x-data=\\\\\"useValueAndFnFromStore()\\\\\" x-effect=\\\\\"onUpdate\\\\\">Test</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"useValueAndFnFromStore\\\\\", () => ({\n      _id: \\\\\"abc\\\\\",\n      _active: false,\n\n      _do(id) {\n        this._active = !!id;\n\n        if (props.onChange) {\n          props.onChange(this._active);\n        }\n      },\n\n      onUpdate() {\n        if (this._do) {\n          this._do(this._id);\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > Video 1`] = `\n\"<video\n  preload=\\\\\"none\\\\\"\n  x-data=\\\\\"video()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:style=\\\\\"{\n  width: '100%',\n  height: '100%',\n  ...attributes?.style,\n  objectFit: fit,\n  objectPosition: position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n}\\\\\"\n  x-bind:key=\\\\\"video || 'no-src'\\\\\"\n  x-bind:poster=\\\\\"posterImage\\\\\"\n  x-bind:autoplay=\\\\\"autoPlay\\\\\"\n  x-bind:muted=\\\\\"muted\\\\\"\n  x-bind:controls=\\\\\"controls\\\\\"\n  x-bind:loop=\\\\\"loop\\\\\"\n></video>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"video\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"steve\\\\\",\n\n      setName(value) {\n        this.name = value;\n      },\n\n      updateNameWithArrowFn(value) {\n        this.name = value;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicForFragment 1`] = `\n\"<div x-data=\\\\\"basicForFragment()\\\\\">\n  <template x-for=\\\\\"option in ['a', 'b', 'c']\\\\\">\n    <div x-bind:key=\\\\\"\\`key-\\${option}\\`\\\\\">\n      <div><span x-html=\\\\\"option\\\\\"></span></div>\n    </div>\n  </template>\n  <template x-for=\\\\\"option in ['a', 'b', 'c']\\\\\">\n    <div x-bind:key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\">\n      <div><span x-html=\\\\\"option\\\\\"></span></div>\n    </div>\n  </template>\n  <select>\n    <template x-for=\\\\\"option in ['d', 'e', 'f']\\\\\">\n      <option x-bind:key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\" x-bind:value=\\\\\"option\\\\\">\n        <span x-html=\\\\\"option\\\\\"></span>\n      </option>\n    </template>\n  </select>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicForFragment\\\\\", () => ({\n      id: \\\\\"xyz\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter x-data=\\\\\"myBasicForNoTagRefComponent()\\\\\">\n  Hello\n  <state.tag><span x-html=\\\\\"name\\\\\"></span></state.tag>\n  <template x-for=\\\\\"action in actions\\\\\">\n    <state.TagName>\n      <action.icon></action.icon>\n      <span><span x-html=\\\\\"action.text\\\\\"></span></span>\n    </state.TagName>\n  </template>\n</state.TagNameGetter>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForNoTagRefComponent\\\\\", () => ({\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicForwardRefComponent()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-ref=\\\\\"inputRef\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForwardRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicForwardRefComponent()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-ref=\\\\\"inputRef\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForwardRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<div x-data=\\\\\"myBasicOnUpdateReturnComponent()\\\\\">\n  Hello!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOnUpdateReturnComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        this.$watch(\\\\\"name\\\\\", (value, oldValue) => {\n          const controller = new AbortController();\n          const signal = controller.signal;\n          fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n            signal,\n          })\n            .then((response) => response.json())\n            .then((data) => {\n              this.name = data.name;\n            });\n          return () => {\n            if (!signal.aborted) {\n              controller.abort();\n            }\n          };\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button x-data=\\\\\"basicRefAttributePassingComponent()\\\\\" x-ref=\\\\\"buttonRef\\\\\">\n  Attribute Passing\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicRefAttributePassingComponent\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div x-data=\\\\\"basicRefAttributePassingCustomRefComponent()\\\\\">\n  <button x-ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicRefAttributePassingCustomRefComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > class + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > className + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > className 1`] = `\n\"<div x-data=\\\\\"classNameCode()\\\\\">\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div x-bind:class=\\\\\"bindings\\\\\">With binding</div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"classNameCode\\\\\", () => ({\n      bindings: \\\\\"a binding\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > classState 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div\n  x-data=\\\\\"myBasicComponent()\\\\\"\n  x-bind:class=\\\\\"classState + ' div'\\\\\"\n  x-bind:style=\\\\\"styleState\\\\\"\n>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div x-data=\\\\\"myBasicComponent()\\\\\" x-bind:class=\\\\\"className\\\\\">\n  <span x-html=\\\\\"children\\\\\"></span>\n  <span x-html=\\\\\"type\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div x-data=\\\\\"complexMetaRaw()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"complexMetaRaw\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > componentWithContext 1`] = `\n\"<div x-data=\\\\\"componentWithContext()\\\\\">\n  <div><span x-html=\\\\\"foo.value\\\\\"></span></div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithContext\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<div x-data=\\\\\"componentWithContext()\\\\\">\n  <div><span x-html=\\\\\"foo.value\\\\\"></span></div>\n  <div>other</div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithContext\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > contentState 1`] = `\n\"<div x-data=\\\\\"renderContent()\\\\\">setting context</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > defaultProps 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\" x-on:click=\\\\\"onClick()\\\\\">\n      <span x-html=\\\\\"buttonText\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\" x-on:click=\\\\\"onClick($event)\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<div x-data=\\\\\"componentWithTypes()\\\\\">\n  Hello\n  <span x-html=\\\\\"name || DEFAULT_VALUES.name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithTypes\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"eventInputAndChange()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:input=\\\\\"name = $event.target.value\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"eventInputAndChange\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > eventProps 1`] = `\n\"<button x-data=\\\\\"eventPropsComponent()\\\\\" x-on:click=\\\\\"handleClick()\\\\\">Test</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"eventPropsComponent\\\\\", () => ({\n      handleClick() {\n        if (props.onGetVoid) {\n          props.onGetVoid();\n        }\n\n        if (props.onEnter) {\n          console.log(props.onEnter());\n        }\n\n        if (props.onPass) {\n          props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > expressionState 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"refToUse\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      refToUse: !(props.componentRef instanceof Function)\n        ? props.componentRef\n        : null,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button\n  x-data=\\\\\"figmaButton()\\\\\"\n  x-bind:data-icon=\\\\\"icon\\\\\"\n  x-bind:data-disabled=\\\\\"interactiveState\\\\\"\n  x-bind:data-width=\\\\\"width\\\\\"\n  x-bind:data-size=\\\\\"size\\\\\"\n>\n  <span x-html=\\\\\"label\\\\\"></span>\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"figmaButton\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > functionProps 1`] = `\n\"<p\n  x-data=\\\\\"myBasicComponent()\\\\\"\n  x-bind:f=\\\\\"() => x\\\\\"\n  x-bind:f1=\\\\\"x => x\\\\\"\n  x-bind:f2=\\\\\"x => {}\\\\\"\n  x-bind:f3=\\\\\"function () {\n  return x;\n}\\\\\"\n  x-bind:f4=\\\\\"function (x) {\n  return x;\n}\\\\\"\n  x-bind:f5=\\\\\"function (x) {\n  return;\n}\\\\\"\n  x-bind:f6=\\\\\"function () {\n  return;\n}\\\\\"\n  x-bind:f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n></p>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > getterState 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <p><span x-html=\\\\\"foo2\\\\\"></span></p>\n  <p><span x-html=\\\\\"bar\\\\\"></span></p>\n  <p><span x-html=\\\\\"baz(1)\\\\\"></span></p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({\n      get foo2() {\n        return props.foo + \\\\\"foo\\\\\";\n      },\n\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n\n      baz(i) {\n        return i + this.foo2.length;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > import types 1`] = `\n\"<RenderBlock\n  x-data=\\\\\"renderContent()\\\\\"\n  x-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n></RenderBlock>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({\n      getRenderContentProps(block, index) {\n        return {\n          block: block,\n          index: index,\n        };\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > layerName 1`] = `\n\"<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n<section x-data=\\\\\"myLayerNameComponent()\\\\\">\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myLayerNameComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<div x-data=\\\\\"multipleOnUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"multipleOnUpdate\\\\\", () => ({\n      onUpdate() {\n        console.log(\\\\\"Runs on every update/rerender\\\\\");\n        console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div x-data=\\\\\"multipleOnUpdateWithDeps()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"multipleOnUpdateWithDeps\\\\\", () => ({\n      a: \\\\\"a\\\\\",\n      b: \\\\\"b\\\\\",\n      c: \\\\\"c\\\\\",\n      d: \\\\\"d\\\\\",\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"c\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"d\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"attrs\\\\\" x-bind=\\\\\"props\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > nestedShow 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">\n  <template x-if=\\\\\"!conditionB\\\\\">\n    <div>if condition A and condition B</div>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedShow\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > nestedStyles 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n<div class=\\\\\"div\\\\\" x-data=\\\\\"nestedStyles()\\\\\">Hello world</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedStyles\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n<section x-data=\\\\\"myNormalizedLayerNamesComponent()\\\\\">\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myNormalizedLayerNamesComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\" x-data=\\\\\"embed()\\\\\" x-ref=\\\\\"elem\\\\\"><div>Test</div></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"embed\\\\\", () => ({\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n\n      init() {\n        elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<div x-data=\\\\\"onInit()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInit\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onInit 1`] = `\n\"<div x-data=\\\\\"onInit()\\\\\">\n  Default name defined by parent\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInit\\\\\", () => ({\n      name: \\\\\"\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onInitPlain 1`] = `\n\"<div x-data=\\\\\"onInitPlain()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInitPlain\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onMount 1`] = `\n\"<div x-data=\\\\\"comp()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"comp\\\\\", () => ({\n      init() {\n        console.log(\\\\\"Runs on mount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<div x-data=\\\\\"comp()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"comp\\\\\", () => ({\n      init() {\n        const onMountHook_0 = () => {\n          console.log(\\\\\"Runs on mount\\\\\");\n        };\n\n        onMountHook_0();\n\n        const onMountHook_1 = () => {\n          console.log(\\\\\"Another one runs on Mount\\\\\");\n        };\n\n        onMountHook_1();\n\n        const onMountHook_2 = () => {\n          console.log(\\\\\"SSR runs on Mount\\\\\");\n        };\n\n        onMountHook_2();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onUpdate 1`] = `\n\"<div x-data=\\\\\"onUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdate\\\\\", () => ({\n      onUpdate() {\n        console.log(\\\\\"Runs on every update/rerender\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<div x-data=\\\\\"onUpdateWithDeps()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdateWithDeps\\\\\", () => ({\n      a: \\\\\"a\\\\\",\n      b: \\\\\"b\\\\\",\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a,\n            this.b,\n            props.size\n          );\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a,\n            this.b,\n            props.size\n          );\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > preserveTyping 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > propsDestructure 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"children\\\\\"></span>\n  <span x-html=\\\\\"type\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"Decadef20\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > propsInterface 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > propsType 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<div x-data=\\\\\"onUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdate\\\\\", () => ({\n      foo: function foo(params) {},\n      bar: function bar() {},\n      zoo: function zoo() {\n        const params = {\n          cb: this.bar,\n        };\n      },\n\n      onUpdate() {\n        this.foo({\n          someOption: this.bar,\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > renderBlock 1`] = `\n\"<template x-if=\\\\\"shouldWrap\\\\\">\n  <template x-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n    <state.tag x-bind=\\\\\"attributes\\\\\" x-bind=\\\\\"actions\\\\\"></state.tag>\n  </template>\n  <template x-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n    <template x-for=\\\\\"data in repeatItemData\\\\\">\n      <RenderRepeatedBlock\n        x-bind:key=\\\\\"index\\\\\"\n        x-bind:repeatContext=\\\\\"data.context\\\\\"\n        x-bind:block=\\\\\"data.block\\\\\"\n      ></RenderRepeatedBlock>\n    </template>\n  </template>\n  <template x-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n    <state.tag x-bind=\\\\\"attributes\\\\\" x-bind=\\\\\"actions\\\\\">\n      <state.renderComponentTag\n        x-bind=\\\\\"renderComponentProps\\\\\"\n      ></state.renderComponentTag>\n      <template x-for=\\\\\"child in childrenWithoutParentComponent\\\\\">\n        <RenderBlock\n          x-bind:key=\\\\\"'render-block-' + child.id\\\\\"\n          x-bind:block=\\\\\"child\\\\\"\n          x-bind:context=\\\\\"childrenContext\\\\\"\n        ></RenderBlock>\n      </template>\n      <template x-for=\\\\\"child in childrenWithoutParentComponent\\\\\">\n        <BlockStyles\n          x-bind:key=\\\\\"'block-style-' + child.id\\\\\"\n          x-bind:block=\\\\\"child\\\\\"\n          x-bind:context=\\\\\"childrenContext\\\\\"\n        ></BlockStyles>\n      </template>\n    </state.tag>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderBlock\\\\\", () => ({\n      get component() {\n        const componentName = getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n\n      get tag() {\n        return getBlockTag(this.useBlock);\n      },\n\n      get useBlock() {\n        return this.repeatItemData\n          ? props.block\n          : getProcessedBlock({\n              block: props.block,\n              state: props.context.state,\n              context: props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n\n      get actions() {\n        return getBlockActions({\n          block: this.useBlock,\n          state: props.context.state,\n          context: props.context.context,\n        });\n      },\n\n      get attributes() {\n        const blockProperties = getBlockProperties(this.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: this.useBlock,\n                  context: props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n\n      get shouldWrap() {\n        return !this.component?.noWrap;\n      },\n\n      get renderComponentProps() {\n        return {\n          blockChildren: this.useChildren,\n          componentRef: this.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(this.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(this.shouldWrap\n              ? {}\n              : {\n                  attributes: { ...this.attributes, ...this.actions },\n                }),\n            customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: this.childrenContext,\n        };\n      },\n\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return this.componentInfo?.canHaveChildren ? this.useBlock.children : [];\n        return this.useBlock.children ?? [];\n      },\n\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !this.component?.component && !this.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n      },\n\n      get repeatItemData() {\n        /**\n         * we don't use \\`this.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: props.context.state,\n          context: props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray = itemsArray.map((item, index) => ({\n          context: {\n            ...props.context,\n            state: {\n              ...props.context.state,\n              $index: index,\n              $item: item,\n              [itemNameToUse]: item,\n              [\\`$\\${itemNameToUse}Index\\`]: index,\n            },\n          },\n          block: blockWithoutRepeat,\n        }));\n        return repeatArray;\n      },\n\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: this.useBlock,\n          context: props.context,\n          blockStyles: this.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n\n      get childrenContext() {\n        return {\n          apiKey: props.context.apiKey,\n          state: props.context.state,\n          content: props.context.content,\n          context: props.context.context,\n          registeredComponents: props.context.registeredComponents,\n          inheritedStyles: this.inheritedTextStyles,\n        };\n      },\n\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > renderContentExample 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n<div class=\\\\\"div\\\\\" x-data=\\\\\"renderContent()\\\\\" x-on:click=\\\\\"trackClick(content.id)\\\\\">\n  <RenderBlocks x-bind:blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({\n      init() {\n        sendComponentsToVisualEditor(props.customComponents);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > rootShow 1`] = `\n\"<template x-if=\\\\\"foo === 'bar'\\\\\">\n  <div>Bar</div>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderStyles\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > self-referencing component 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <span x-html=\\\\\"name\\\\\"></span>\n  <template x-if=\\\\\"name === 'Batman'\\\\\">\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <span x-html=\\\\\"name\\\\\"></span>\n  <span x-html=\\\\\"children\\\\\"></span>\n  <template x-if=\\\\\"name === 'Batman'\\\\\">\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > setState 1`] = `\n\"<div x-data=\\\\\"setState()\\\\\"><button x-on:click=\\\\\"someFn()\\\\\">Click me</button></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"setState\\\\\", () => ({\n      n: [\\\\\"123\\\\\"],\n\n      someFn() {\n        this.n[0] = \\\\\"123\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > showExpressions 1`] = `\n\"<div x-data=\\\\\"showWithOtherValues()\\\\\">\n  <template x-if=\\\\\"conditionA\\\\\">Content0</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentB</template>\n  <template x-if=\\\\\"conditionA\\\\\">\n    <span x-html=\\\\\"undefined\\\\\"></span>\n  </template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentC</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentD</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentE</template>\n  <template x-if=\\\\\"conditionA\\\\\">hello</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentF</template>\n  <template x-if=\\\\\"conditionA\\\\\">123</template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">4mb</template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">\n    <template x-if=\\\\\"conditionB === 'Complete'\\\\\">20mb</template>\n  </template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">\n    <template x-if=\\\\\"conditionB === 'Complete'\\\\\">\n      <div>complete</div>\n    </template>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showWithOtherValues\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > showWithFor 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">\n  <template x-for=\\\\\"item in items\\\\\">\n    <div x-bind:key=\\\\\"idx\\\\\"><span x-html=\\\\\"item\\\\\"></span></div>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedShow\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<div x-data=\\\\\"showWithOtherValues()\\\\\">\n  <template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentB</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentC</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentD</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentE</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentF</template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showWithOtherValues\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > showWithRootText 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showRootText\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"id\\\\\"></span>\n  <span x-html=\\\\\"foo.value.bar.baz\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > spreadAttrs 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"attrs\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"nested\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > spreadProps 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"props\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > store-async-function 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      arrowFunction: async function arrowFunction() {\n        return Promise.resolve();\n      },\n      namedFunction: async function namedFunction() {\n        return Promise.resolve();\n      },\n      fetchUsers: async function fetchUsers() {\n        return Promise.resolve();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > string-literal-store 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      foo: 123,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<div\n  class=\\\\\"builder-column div\\\\\"\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:style=\\\\\"{\n  width: '100%'\n}\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<div\n  x-data=\\\\\"stylePropClassAndCss()\\\\\"\n  x-bind:style=\\\\\"attributes.style\\\\\"\n  x-bind:class=\\\\\"attributes.class + ' div'\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stylePropClassAndCss\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > subComponent 1`] = `\n\"<Foo x-data=\\\\\"subComponent()\\\\\"></Foo>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"subComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > svgComponent 1`] = `\n\"<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  x-data=\\\\\"svgComponent()\\\\\"\n  x-bind:viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n  x-bind:width=\\\\\"42\\\\\"\n  x-bind:height=\\\\\"42\\\\\"\n>\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        x-bind:stdDeviation=\\\\\"7\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"svgComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > typeDependency 1`] = `\n\"<div x-data=\\\\\"typeDependency()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeDependency\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<div x-data=\\\\\"typeExternalProps()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeExternalProps\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<div x-data=\\\\\"typeExternalStore()\\\\\">\n  Hello\n  <span x-html=\\\\\"_name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeExternalStore\\\\\", () => ({\n      _name: \\\\\"test\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<div x-data=\\\\\"typeGetterStore()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeGetterStore\\\\\", () => ({\n      name: \\\\\"test\\\\\",\n\n      getName() {\n        if (this.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return this.name;\n      },\n\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > use-style 1`] = `\n\"<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n<button type=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n<button type=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > useTarget 1`] = `\n\"<div x-data=\\\\\"useTargetComponent()\\\\\"><span x-html=\\\\\"name\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"useTargetComponent\\\\\", () => ({\n      get name() {\n        const prefix = \\\\\"a\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n\n      init() {\n        console.log(this.foo);\n        this.foo = \\\\\"bar\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Javascript Test > webComponent 1`] = `\n\"<swiper-container\n  slides-per-view=\\\\\"3\\\\\"\n  navigation=\\\\\"true\\\\\"\n  pagination=\\\\\"true\\\\\"\n  x-data=\\\\\"myBasicWebComponent()\\\\\"\n>\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicWebComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Remove Internal mitosis package 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n  ! I can run in React, Qwik, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Advanced 1`] = `\n\"<main x-data=\\\\\"myBasicForShowComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <div>\n      <span x-html=\\\\\"i\\\\\"></span>\n      :\n      <span x-html=\\\\\"person\\\\\"></span>\n    </div>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span><span x-html=\\\\\"person\\\\\"></span></span>\n  </template>\n  <template x-for=\\\\\"undefined in names\\\\\">\n    <br />\n  </template>\n  <template\n    x-for=\\\\\"_ in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <pre><span x-html=\\\\\"ee\\\\\"></span></pre>\n  </template>\n  <template\n    x-for=\\\\\"undefined in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <p><span x-html=\\\\\"index\\\\\"></span></p>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </span>\n  </template>\n  <template\n    x-for=\\\\\"person in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"count\\\\\"></span>\n    </span>\n  </template>\n  <template x-for=\\\\\"person in names\\\\\">\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"i\\\\\"></span>\n    </span>\n  </template>\n  <template\n    x-for=\\\\\"person in Array.from({\n  length: 10\n})\\\\\"\n  >\n    <span>\n      <span x-html=\\\\\"person\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </span>\n  </template>\n</main>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForShowComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicRefComponent()\\\\\">\n  <template x-if=\\\\\"showInput\\\\\">\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        x-ref=\\\\\"inputRef\\\\\"\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:blur=\\\\\"onBlur()\\\\\"\n        x-on:change=\\\\\"name = $event.target.value\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" x-ref=\\\\\"inputNoArgRef\\\\\">Choose a car:</label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </div>\n  </template>\n\n  Hello\n\n  <span x-html=\\\\\"lowerCaseName()\\\\\"></span>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        this.$refs.inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  <input\n    x-bind:value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n    x-on:change=\\\\\"name = myEvent.target.value\\\\\"\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic 2`] = `\n\"<div x-data=\\\\\"myBasicForShowComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <template x-if=\\\\\"person === name\\\\\">\n      <input\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:change=\\\\\"name = $event.target.value + ' and ' + person\\\\\"\n      />\n\n      Hello\n      <span x-html=\\\\\"person\\\\\"></span>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForShowComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic Context 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"myService.method('hello') + name\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input x-on:change=\\\\\"onChange()\\\\\" />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n\n      init() {\n        const bye = myService.method(\\\\\"hi\\\\\");\n        console.log(bye);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<div x-data=\\\\\"myBasicOnMountUpdateComponent()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOnMountUpdateComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n\n      init() {\n        this.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<div x-data=\\\\\"myBasicOutputsComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOutputsComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        props.onMessageChange(this.name);\n        props.onEvent(props.message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div x-data=\\\\\"myBasicOutputsComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOutputsComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        props.onMessageChange(this.name);\n        props.onEvent(props.message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<input\n  autocapitalize=\\\\\"on\\\\\"\n  autocomplete=\\\\\"on\\\\\"\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:spellcheck=\\\\\"true\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<div x-data=\\\\\"myBooleanAttribute()\\\\\">\n  <template x-if=\\\\\"children\\\\\">\n    <span x-html=\\\\\"children\\\\\"></span>\n    <span x-html=\\\\\"type\\\\\"></span>\n  </template>\n  <MyBooleanAttributeComponent\n    x-bind:toggle=\\\\\"true\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    x-bind:toggle=\\\\\"true\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent x-bind:list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBooleanAttribute\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<div x-data=\\\\\"myBasicChildComponent()\\\\\">\n  <MyBasicComponent x-bind:id=\\\\\"dev\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      x-bind:hi=\\\\\"name\\\\\"\n      x-bind:bye=\\\\\"dev\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      x-on:message-change=\\\\\"name = name\\\\\"\n      x-on:event=\\\\\"log('Test')\\\\\"\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicChildComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message: string) {\n        console.log(message);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicFor 1`] = `\n\"<div x-data=\\\\\"myBasicForComponent()\\\\\">\n  <template x-for=\\\\\"person in names\\\\\">\n    <div>\n      <input\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:change=\\\\\"name = $event.target.value + ' and ' + person\\\\\"\n      />\n\n      Hello\n      <span x-html=\\\\\"person\\\\\"></span>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n\n      init() {\n        console.log(\\\\\"onMount code\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicRefComponent()\\\\\">\n  <template x-if=\\\\\"showInput\\\\\">\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        x-ref=\\\\\"inputRef\\\\\"\n        x-bind:value=\\\\\"name\\\\\"\n        x-on:blur=\\\\\"onBlur()\\\\\"\n        x-on:change=\\\\\"name = $event.target.value\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" x-ref=\\\\\"inputNoArgRef\\\\\">Choose a car:</label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </div>\n  </template>\n\n  Hello\n\n  <span x-html=\\\\\"lowerCaseName()\\\\\"></span>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        this.$refs.inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<div x-data=\\\\\"myBasicRefAssignmentComponent()\\\\\">\n  <button x-on:click=\\\\\"await handlerClick(evt)\\\\\">Click</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicRefAssignmentComponent\\\\\", () => ({\n      handlerClick: function handlerClick(event: Event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", holdValueRef);\n        holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<div x-data=\\\\\"myPreviousComponent()\\\\\">\n  <h1>\n    Now:\n    <span x-html=\\\\\"count\\\\\"></span>\n    , before:\n    <span x-html=\\\\\"prevCount\\\\\"></span>\n  </h1>\n  <button x-on:click=\\\\\"count += 1\\\\\">Increment</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myPreviousComponent\\\\\", () => ({\n      count: 0,\n\n      init() {\n        this.$watch(\\\\\"count\\\\\", (value, oldValue) => {\n          prevCount = this.count;\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Button 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Columns 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n<div class=\\\\\"builder-columns div\\\\\" x-data=\\\\\"column()\\\\\">\n  <template x-for=\\\\\"column in columns\\\\\">\n    <div class=\\\\\"builder-column div-2\\\\\">\n      <span x-html=\\\\\"column.content\\\\\"></span>\n      <span x-html=\\\\\"index\\\\\"></span>\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"column\\\\\", () => ({\n      getColumns() {\n        return props.columns || [];\n      },\n\n      getGutterSize() {\n        return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n      },\n\n      getWidth(index: number) {\n        const columns = this.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n\n      getColumnCssWidth(index: number) {\n        const columns = this.getColumns();\n        const gutterSize = this.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<div x-data=\\\\\"contentSlotCode()\\\\\">\n  <slot x-bind:name=\\\\\"slotTesting\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"contentSlotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"<template x-if=\\\\\"slotReference\\\\\">\n  <div\n    x-bind:name=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n    x-bind:title=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n    x-bind=\\\\\"attributes\\\\\"\n    x-on:click=\\\\\"show()\\\\\"\n    x-bind:class=\\\\\"cls\\\\\"\n  >\n    <template x-if=\\\\\"showContent && slotContent\\\\\">\n      <slot name=\\\\\"content\\\\\"><span x-html=\\\\\"content\\\\\"></span></slot>\n    </template>\n    <div><hr /></div>\n    <div><span x-html=\\\\\"children\\\\\"></span></div>\n  </div>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"contentSlotJsxCode\\\\\", () => ({\n      name: \\\\\"king\\\\\",\n      showContent: false,\n\n      get cls() {\n        return props.slotContent && props.children\n          ? \\`\\${this.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n\n      show() {\n        props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > CustomCode 1`] = `\n\"<div\n  x-data=\\\\\"customCode()\\\\\"\n  x-ref=\\\\\"elem\\\\\"\n  x-bind:class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n  x-bind:innerHTML=\\\\\"code\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"customCode\\\\\", () => ({\n      scriptsInserted: [],\n      scriptsRun: [],\n\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (this.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              this.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (this.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                this.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n\n      init() {\n        this.findAndRunScripts();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Embed 1`] = `\n\"<div\n  x-data=\\\\\"customCode()\\\\\"\n  x-ref=\\\\\"elem\\\\\"\n  x-bind:class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n  x-bind:innerHTML=\\\\\"code\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"customCode\\\\\", () => ({\n      scriptsInserted: [],\n      scriptsRun: [],\n\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (this.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              this.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (this.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                this.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n\n      init() {\n        this.findAndRunScripts();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Form 1`] = `\n\"<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\n<form\n  x-data=\\\\\"formComponent()\\\\\"\n  x-bind:validate=\\\\\"validate\\\\\"\n  x-ref=\\\\\"formRef\\\\\"\n  x-bind:action=\\\\\"!sendWithJs && action\\\\\"\n  x-bind:method=\\\\\"method\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-on:submit=\\\\\"onSubmit($event)\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n>\n  <template x-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n    <template x-for=\\\\\"block in builderBlock?.children\\\\\">\n      <BuilderBlockComponent\n        x-bind:key=\\\\\"block.id\\\\\"\n        x-bind:block=\\\\\"block\\\\\"\n        x-bind:index=\\\\\"index\\\\\"\n      ></BuilderBlockComponent>\n    </template>\n  </template>\n  <template x-if=\\\\\"submissionState === 'error'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      x-bind:blocks=\\\\\"errorMessage!\\\\\"\n    ></BuilderBlocks>\n  </template>\n  <template x-if=\\\\\"submissionState === 'sending'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      x-bind:blocks=\\\\\"sendingMessage!\\\\\"\n    ></BuilderBlocks>\n  </template>\n  <template x-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n    <pre\n      class=\\\\\"builder-form-error-text pre\\\\\"\n    ><span x-html=\\\\\"JSON.stringify(responseData, null, 2)\\\\\"></span></pre>\n  </template>\n  <template x-if=\\\\\"submissionState === 'success'\\\\\">\n    <BuilderBlocks\n      dataPath=\\\\\"successMessage\\\\\"\n      x-bind:blocks=\\\\\"successMessage!\\\\\"\n    ></BuilderBlocks>\n  </template>\n</form>\n<script>\n            document.addEventListener('alpine:init', () => {\n    Alpine.data('formComponent', () => ({\n      formState: 'unsubmitted',\n      responseData: null,\n      formErrorMessage: '',\n\n      get submissionState() {\n        return Builder.isEditing && props.previewState || this.formState;\n      },\n\n      onSubmit(event: Event & {\n        currentTarget: HTMLFormElement;\n      }) {\n        const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === 'email';\n\n        if (props.sendSubmissionsTo === 'zapier') {\n          event.preventDefault();\n        } else if (sendWithJs) {\n          if (!(props.action || props.sendSubmissionsTo === 'email')) {\n            event.preventDefault();\n            return;\n          }\n\n          event.preventDefault();\n          const el = event.currentTarget;\n          const headers = props.customHeaders || {};\n          let body: any;\n          const formData = new FormData(el); // TODO: maybe support null\n\n          const formPairs: {\n            key: string;\n            value: File | boolean | number | string | FileList;\n          }[] = Array.from(event.currentTarget.querySelectorAll('input,select,textarea')).filter(el => !!(el as HTMLInputElement).name).map(el => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === 'radio') {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value\n                  };\n                }\n              } else if (el.type === 'checkbox') {\n                value = el.checked;\n              } else if (el.type === 'number' || el.type === 'range') {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === 'file') {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value\n            };\n          });\n          let contentType = props.contentType;\n\n          if (props.sendSubmissionsTo === 'email') {\n            contentType = 'multipart/form-data';\n          }\n\n          Array.from(formPairs).forEach(({\n            value\n          }) => {\n            if (value instanceof File || Array.isArray(value) && value[0] instanceof File || value instanceof FileList) {\n              contentType = 'multipart/form-data';\n            }\n          }); // TODO: send as urlEncoded or multipart by default\n          // because of ease of use and reliability in browser API\n          // for encoding the form?\n\n          if (contentType !== 'application/json') {\n            body = formData;\n          } else {\n            // Json\n            const json = {};\n            Array.from(formPairs).forEach(({\n              value,\n              key\n            }) => {\n              set(json, key, value);\n            });\n            body = JSON.stringify(json);\n          }\n\n          if (contentType && contentType !== 'multipart/form-data') {\n            if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes('zapier.com'))) {\n              headers['content-type'] = contentType;\n            }\n          }\n\n          const presubmitEvent = new CustomEvent('presubmit', {\n            detail: {\n              body\n            }\n          });\n\n          if (this.$refs.formRef) {\n            this.$refs.formRef.dispatchEvent(presubmitEvent);\n\n            if (presubmitEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.formState = 'sending';\n          const formUrl = \\`\\${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(props.sendSubmissionsToEmail || '')}&name=\\${encodeURIComponent(props.name || '')}\\`;\n          fetch(props.sendSubmissionsTo === 'email' ? formUrl : props.action!\n          /* TODO: throw error if no action URL */\n          , {\n            body,\n            headers,\n            method: props.method || 'post'\n          }).then(async res => {\n            let body;\n            const contentType = res.headers.get('content-type');\n\n            if (contentType && contentType.indexOf('application/json') !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== 'string') {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n                   error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                this.formErrorMessage = message;\n              }\n            }\n\n            this.responseData = body;\n            this.formState = res.ok ? 'success' : 'error';\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent('submit:success', {\n                detail: {\n                  res,\n                  body\n                }\n              });\n\n              if (this.$refs.formRef) {\n                this.$refs.formRef.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n\n                if (props.resetFormOnSubmit !== false) {\n                  this.$refs.formRef.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n\n              if (props.successUrl) {\n                if (this.$refs.formRef) {\n                  const event = new CustomEvent('route', {\n                    detail: {\n                      url: props.successUrl\n                    }\n                  });\n                  this.$refs.formRef.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          }, err => {\n            const submitErrorEvent = new CustomEvent('submit:error', {\n              detail: {\n                error: err\n              }\n            });\n\n            if (this.$refs.formRef) {\n              this.$refs.formRef.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            this.responseData = err;\n            this.formState = 'error';\n          });\n        }\n      }\n\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Image 1`] = `\n\"<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n<div x-data=\\\\\"image()\\\\\">\n  <picture x-ref=\\\\\"pictureRef\\\\\">\n    <template x-if=\\\\\"!useLazyLoading() || load\\\\\">\n      <img\n        x-bind:alt=\\\\\"altText\\\\\"\n        x-bind:aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n        x-bind:class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n        x-bind:src=\\\\\"image\\\\\"\n        x-on:load=\\\\\"setLoaded()\\\\\"\n        x-bind:srcset=\\\\\"srcset\\\\\"\n        x-bind:sizes=\\\\\"sizes\\\\\"\n      />\n    </template>\n    <source x-bind:srcset=\\\\\"srcset\\\\\" />\n  </picture>\n  <span x-html=\\\\\"children\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"image\\\\\", () => ({\n      scrollListener: null,\n      imageLoaded: false,\n\n      setLoaded() {\n        this.imageLoaded = true;\n      },\n\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!props.lazy && this.isBrowser();\n      },\n\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n\n      init() {\n        if (this.useLazyLoading()) {\n          // throttled scroll capture listener\n          const listener = () => {\n            if (pictureRef) {\n              const rect = pictureRef.getBoundingClientRect();\n              const buffer = window.innerHeight / 2;\n\n              if (rect.top < window.innerHeight + buffer) {\n                this.load = true;\n                this.scrollListener = null;\n                window.removeEventListener(\\\\\"scroll\\\\\", listener);\n              }\n            }\n          };\n\n          this.scrollListener = listener;\n          window.addEventListener(\\\\\"scroll\\\\\", listener, {\n            capture: true,\n            passive: true,\n          });\n          listener();\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Image State 1`] = `\n\"<div x-data=\\\\\"imgStateComponent()\\\\\">\n  <template x-for=\\\\\"item in images\\\\\">\n    <div>\n      <img class=\\\\\"custom-class\\\\\" x-bind:src=\\\\\"item\\\\\" x-bind:key=\\\\\"itemIndex\\\\\" />\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"imgStateComponent\\\\\", () => ({\n      canShow: true,\n      images: [\\\\\"http://example.com/qwik.png\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Img 1`] = `\n\"<img\n  x-data=\\\\\"imgComponent()\\\\\"\n  x-bind:style=\\\\\"{\n  objectFit: backgroundSize || 'cover',\n  objectPosition: backgroundPosition || 'center'\n}\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && imgSrc || 'default-key'\\\\\"\n  x-bind:alt=\\\\\"altText\\\\\"\n  x-bind:src=\\\\\"imgSrc\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"imgComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Input 1`] = `\n\"<input\n  x-data=\\\\\"formInputComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n  x-bind:placeholder=\\\\\"placeholder\\\\\"\n  x-bind:type=\\\\\"type\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n  x-bind:required=\\\\\"required\\\\\"\n  x-on:change=\\\\\"onChange?.($event.target.value)\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"formInputComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > InputParent 1`] = `\n\"<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  x-data=\\\\\"stepper()\\\\\"\n  x-on:change=\\\\\"handleChange(value)\\\\\"\n></FormInputComponent>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stepper\\\\\", () => ({\n      handleChange(value: string) {\n        console.log(value);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > NestedStore 1`] = `\n\"<div x-data=\\\\\"nestedStore()\\\\\" x-bind:id=\\\\\"_id\\\\\">\n  Test\n\n  <p x-bind:id=\\\\\"_messageId\\\\\">Message</p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedStore\\\\\", () => ({\n      _id: \\\\\"abc\\\\\",\n      _messageId: this._id + \\\\\"-message\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > RawText 1`] = `\n\"<span\n  x-data=\\\\\"rawText()\\\\\"\n  x-bind:class=\\\\\"attributes?.class || attributes?.className\\\\\"\n  x-bind:innerHTML=\\\\\"text || ''\\\\\"\n></span>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"rawText\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Section 1`] = `\n\"<section\n  x-data=\\\\\"sectionComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:style=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n  maxWidth: maxWidth\n} : undefined\\\\\"\n>\n  <span x-html=\\\\\"children\\\\\"></span>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"sectionComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Section 2`] = `\n\"<template x-if=\\\\\"max\\\\\">\n  <template x-for=\\\\\"item in items\\\\\">\n    <section\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:style=\\\\\"{\n  maxWidth: item + max\n}\\\\\"\n    >\n      <span x-html=\\\\\"children\\\\\"></span>\n    </section>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"sectionStateComponent\\\\\", () => ({\n      max: 42,\n      items: [42],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Select 1`] = `\n\"<select\n  x-data=\\\\\"selectComponent()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n>\n  <template x-for=\\\\\"option in options\\\\\">\n    <option x-bind:value=\\\\\"option.value\\\\\" x-bind:data-index=\\\\\"index\\\\\">\n      <span x-html=\\\\\"option.name || option.value\\\\\"></span>\n    </option>\n  </template>\n</select>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"selectComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > SlotDefault 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > SlotHtml 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <ContentSlotCode>\n    <slot x-bind:testing=\\\\\"<div>Hello</div>\\\\\"></slot>\n  </ContentSlotCode>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > SlotJsx 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <ContentSlotCode x-bind:slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > SlotNamed 1`] = `\n\"<div x-data=\\\\\"slotCode()\\\\\">\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"slotCode\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Stamped.io 1`] = `\n\"<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n<div x-data=\\\\\"smileReviews()\\\\\" x-bind:data-user=\\\\\"name\\\\\">\n  <button x-on:click=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n  <template x-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button\\\\\"\n      x-on:click=\\\\\"ev.preventDefault();\nshowReviewPrompt = false\\\\\"\n    >\n      Submit\n    </button>\n  </template>\n  <template x-for=\\\\\"review in reviews\\\\\">\n    <div class=\\\\\"review\\\\\" x-bind:key=\\\\\"review.id\\\\\">\n      <img class=\\\\\"img\\\\\" x-bind:src=\\\\\"review.avatar\\\\\" />\n      <div x-bind:class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n        <div>\n          N:\n          <span x-html=\\\\\"index\\\\\"></span>\n        </div>\n        <div><span x-html=\\\\\"review.author\\\\\"></span></div>\n        <div><span x-html=\\\\\"review.reviewMessage\\\\\"></span></div>\n      </div>\n    </div>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"smileReviews\\\\\", () => ({\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n\n      init() {\n        fetch(\n          \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n            props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n          }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n        )\n          .then((res) => res.json())\n          .then((data) => {\n            this.reviews = data.data;\n          });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > StoreComment 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      foo: true,\n\n      bar() {},\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"foo(errors)\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      errors: {},\n\n      foo(errors) {\n        return errors;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > StoreWithState 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"bar()\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      foo: false,\n\n      bar() {\n        return this.foo;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" x-data=\\\\\"submitButton()\\\\\" x-bind=\\\\\"attributes\\\\\">\n  <span x-html=\\\\\"text\\\\\"></span>\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"submitButton\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Text 1`] = `\n\"<div  x-data=\\\\\"text()\\\\\"  x-bind:contentEditable=\\\\\"allowEditingText || undefined\\\\\"  x-bind:data-name=\\\\\"{\n  test: name || 'any name'\n}\\\\\"  x-bind:innerHTML=\\\\\"text || content || name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\\\\\" ></div><script>\n          document.addEventListener('alpine:init', () => {\n  Alpine.data('text', () => ({\n    name: 'Decadef20'\n  }));\n});\n        </script>\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Textarea 1`] = `\n\"<textarea\n  x-data=\\\\\"textarea()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:placeholder=\\\\\"placeholder\\\\\"\n  x-bind:name=\\\\\"name\\\\\"\n  x-bind:value=\\\\\"value\\\\\"\n  x-bind:defaultValue=\\\\\"defaultValue\\\\\"\n></textarea>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"textarea\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<div x-data=\\\\\"useValueAndFnFromStore()\\\\\" x-effect=\\\\\"onUpdate\\\\\">Test</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"useValueAndFnFromStore\\\\\", () => ({\n      _id: \\\\\"abc\\\\\",\n      _active: false,\n\n      _do(id?: string) {\n        this._active = !!id;\n\n        if (props.onChange) {\n          props.onChange(this._active);\n        }\n      },\n\n      onUpdate() {\n        if (this._do) {\n          this._do(this._id);\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > Video 1`] = `\n\"<video\n  preload=\\\\\"none\\\\\"\n  x-data=\\\\\"video()\\\\\"\n  x-bind=\\\\\"attributes\\\\\"\n  x-bind:style=\\\\\"{\n  width: '100%',\n  height: '100%',\n  ...attributes?.style,\n  objectFit: fit,\n  objectPosition: position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n}\\\\\"\n  x-bind:key=\\\\\"video || 'no-src'\\\\\"\n  x-bind:poster=\\\\\"posterImage\\\\\"\n  x-bind:autoplay=\\\\\"autoPlay\\\\\"\n  x-bind:muted=\\\\\"muted\\\\\"\n  x-bind:controls=\\\\\"controls\\\\\"\n  x-bind:loop=\\\\\"loop\\\\\"\n></video>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"video\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"steve\\\\\",\n\n      setName(value) {\n        this.name = value;\n      },\n\n      updateNameWithArrowFn(value) {\n        this.name = value;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicForFragment 1`] = `\n\"<div x-data=\\\\\"basicForFragment()\\\\\">\n  <template x-for=\\\\\"option in ['a', 'b', 'c']\\\\\">\n    <div x-bind:key=\\\\\"\\`key-\\${option}\\`\\\\\">\n      <div><span x-html=\\\\\"option\\\\\"></span></div>\n    </div>\n  </template>\n  <template x-for=\\\\\"option in ['a', 'b', 'c']\\\\\">\n    <div x-bind:key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\">\n      <div><span x-html=\\\\\"option\\\\\"></span></div>\n    </div>\n  </template>\n  <select>\n    <template x-for=\\\\\"option in ['d', 'e', 'f']\\\\\">\n      <option x-bind:key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\" x-bind:value=\\\\\"option\\\\\">\n        <span x-html=\\\\\"option\\\\\"></span>\n      </option>\n    </template>\n  </select>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicForFragment\\\\\", () => ({\n      id: \\\\\"xyz\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter x-data=\\\\\"myBasicForNoTagRefComponent()\\\\\">\n  Hello\n  <state.tag><span x-html=\\\\\"name\\\\\"></span></state.tag>\n  <template x-for=\\\\\"action in actions\\\\\">\n    <state.TagName>\n      <action.icon></action.icon>\n      <span><span x-html=\\\\\"action.text\\\\\"></span></span>\n    </state.TagName>\n  </template>\n</state.TagNameGetter>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForNoTagRefComponent\\\\\", () => ({\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicForwardRefComponent()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-ref=\\\\\"inputRef\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForwardRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"myBasicForwardRefComponent()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-ref=\\\\\"inputRef\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicForwardRefComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<div x-data=\\\\\"myBasicOnUpdateReturnComponent()\\\\\">\n  Hello!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicOnUpdateReturnComponent\\\\\", () => ({\n      name: \\\\\"PatrickJS\\\\\",\n\n      init() {\n        this.$watch(\\\\\"name\\\\\", (value, oldValue) => {\n          const controller = new AbortController();\n          const signal = controller.signal;\n          fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n            signal,\n          })\n            .then((response) => response.json())\n            .then((data) => {\n              this.name = data.name;\n            });\n          return () => {\n            if (!signal.aborted) {\n              controller.abort();\n            }\n          };\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button x-data=\\\\\"basicRefAttributePassingComponent()\\\\\" x-ref=\\\\\"buttonRef\\\\\">\n  Attribute Passing\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicRefAttributePassingComponent\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div x-data=\\\\\"basicRefAttributePassingCustomRefComponent()\\\\\">\n  <button x-ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"basicRefAttributePassingCustomRefComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > class + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > className + css 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > className 1`] = `\n\"<div x-data=\\\\\"classNameCode()\\\\\">\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div x-bind:class=\\\\\"bindings\\\\\">With binding</div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"classNameCode\\\\\", () => ({\n      bindings: \\\\\"a binding\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > classState 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div\n  x-data=\\\\\"myBasicComponent()\\\\\"\n  x-bind:class=\\\\\"classState + ' div'\\\\\"\n  x-bind:style=\\\\\"styleState\\\\\"\n>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div x-data=\\\\\"myBasicComponent()\\\\\" x-bind:class=\\\\\"className\\\\\">\n  <span x-html=\\\\\"children\\\\\"></span>\n  <span x-html=\\\\\"type\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div x-data=\\\\\"complexMetaRaw()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"complexMetaRaw\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > componentWithContext 1`] = `\n\"<div x-data=\\\\\"componentWithContext()\\\\\">\n  <div><span x-html=\\\\\"foo.value\\\\\"></span></div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithContext\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<div x-data=\\\\\"componentWithContext()\\\\\">\n  <div><span x-html=\\\\\"foo.value\\\\\"></span></div>\n  <div>other</div>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithContext\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > contentState 1`] = `\n\"<div x-data=\\\\\"renderContent()\\\\\">setting context</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > defaultProps 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\" x-on:click=\\\\\"onClick()\\\\\">\n      <span x-html=\\\\\"buttonText\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\" x-on:click=\\\\\"onClick($event)\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<div x-data=\\\\\"componentWithTypes()\\\\\">\n  Hello\n  <span x-html=\\\\\"name || DEFAULT_VALUES.name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"componentWithTypes\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<style>\n  .input {\n    color: red;\n  }\n</style>\n<div x-data=\\\\\"eventInputAndChange()\\\\\">\n  <input\n    class=\\\\\"input\\\\\"\n    x-bind:value=\\\\\"name\\\\\"\n    x-on:input=\\\\\"name = $event.target.value\\\\\"\n    x-on:change=\\\\\"name = $event.target.value\\\\\"\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"eventInputAndChange\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > eventProps 1`] = `\n\"<button x-data=\\\\\"eventPropsComponent()\\\\\" x-on:click=\\\\\"handleClick()\\\\\">Test</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"eventPropsComponent\\\\\", () => ({\n      handleClick() {\n        if (props.onGetVoid) {\n          props.onGetVoid();\n        }\n\n        if (props.onEnter) {\n          console.log(props.onEnter());\n        }\n\n        if (props.onPass) {\n          props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > expressionState 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"refToUse\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      refToUse: !(props.componentRef instanceof Function)\n        ? props.componentRef\n        : null,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button\n  x-data=\\\\\"figmaButton()\\\\\"\n  x-bind:data-icon=\\\\\"icon\\\\\"\n  x-bind:data-disabled=\\\\\"interactiveState\\\\\"\n  x-bind:data-width=\\\\\"width\\\\\"\n  x-bind:data-size=\\\\\"size\\\\\"\n>\n  <span x-html=\\\\\"label\\\\\"></span>\n</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"figmaButton\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > functionProps 1`] = `\n\"<p\n  x-data=\\\\\"myBasicComponent()\\\\\"\n  x-bind:f=\\\\\"() => x\\\\\"\n  x-bind:f1=\\\\\"x => x\\\\\"\n  x-bind:f2=\\\\\"x => {}\\\\\"\n  x-bind:f3=\\\\\"function () {\n  return x;\n}\\\\\"\n  x-bind:f4=\\\\\"function (x) {\n  return x;\n}\\\\\"\n  x-bind:f5=\\\\\"function (x) {\n  return;\n}\\\\\"\n  x-bind:f6=\\\\\"function () {\n  return;\n}\\\\\"\n  x-bind:f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n></p>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > getterState 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <p><span x-html=\\\\\"foo2\\\\\"></span></p>\n  <p><span x-html=\\\\\"bar\\\\\"></span></p>\n  <p><span x-html=\\\\\"baz(1)\\\\\"></span></p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({\n      get foo2() {\n        return props.foo + \\\\\"foo\\\\\";\n      },\n\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n\n      baz(i: number) {\n        return i + this.foo2.length;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > import types 1`] = `\n\"<RenderBlock\n  x-data=\\\\\"renderContent()\\\\\"\n  x-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n></RenderBlock>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({\n      getRenderContentProps(block, index) {\n        return {\n          block: block,\n          index: index,\n        };\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > layerName 1`] = `\n\"<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n<section x-data=\\\\\"myLayerNameComponent()\\\\\">\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myLayerNameComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<div x-data=\\\\\"multipleOnUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"multipleOnUpdate\\\\\", () => ({\n      onUpdate() {\n        console.log(\\\\\"Runs on every update/rerender\\\\\");\n        console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div x-data=\\\\\"multipleOnUpdateWithDeps()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"multipleOnUpdateWithDeps\\\\\", () => ({\n      a: \\\\\"a\\\\\",\n      b: \\\\\"b\\\\\",\n      c: \\\\\"c\\\\\",\n      d: \\\\\"d\\\\\",\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"c\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n        this.$watch(\\\\\"d\\\\\", (value, oldValue) => {\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n          if (this.a === \\\\\"a\\\\\") {\n            this.a = \\\\\"b\\\\\";\n          }\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"attrs\\\\\" x-bind=\\\\\"props\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > nestedShow 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">\n  <template x-if=\\\\\"!conditionB\\\\\">\n    <div>if condition A and condition B</div>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedShow\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > nestedStyles 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n<div class=\\\\\"div\\\\\" x-data=\\\\\"nestedStyles()\\\\\">Hello world</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedStyles\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n<section x-data=\\\\\"myNormalizedLayerNamesComponent()\\\\\">\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myNormalizedLayerNamesComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\" x-data=\\\\\"embed()\\\\\" x-ref=\\\\\"elem\\\\\"><div>Test</div></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"embed\\\\\", () => ({\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n\n      init() {\n        elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<div x-data=\\\\\"onInit()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInit\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onInit 1`] = `\n\"<div x-data=\\\\\"onInit()\\\\\">\n  Default name defined by parent\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInit\\\\\", () => ({\n      name: \\\\\"\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onInitPlain 1`] = `\n\"<div x-data=\\\\\"onInitPlain()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onInitPlain\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onMount 1`] = `\n\"<div x-data=\\\\\"comp()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"comp\\\\\", () => ({\n      init() {\n        console.log(\\\\\"Runs on mount\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<div x-data=\\\\\"comp()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"comp\\\\\", () => ({\n      init() {\n        const onMountHook_0 = () => {\n          console.log(\\\\\"Runs on mount\\\\\");\n        };\n\n        onMountHook_0();\n\n        const onMountHook_1 = () => {\n          console.log(\\\\\"Another one runs on Mount\\\\\");\n        };\n\n        onMountHook_1();\n\n        const onMountHook_2 = () => {\n          console.log(\\\\\"SSR runs on Mount\\\\\");\n        };\n\n        onMountHook_2();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onUpdate 1`] = `\n\"<div x-data=\\\\\"onUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdate\\\\\", () => ({\n      onUpdate() {\n        console.log(\\\\\"Runs on every update/rerender\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<div x-data=\\\\\"onUpdateWithDeps()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdateWithDeps\\\\\", () => ({\n      a: \\\\\"a\\\\\",\n      b: \\\\\"b\\\\\",\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a,\n            this.b,\n            props.size\n          );\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a,\n            this.b,\n            props.size\n          );\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > preserveTyping 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > propsDestructure 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"children\\\\\"></span>\n  <span x-html=\\\\\"type\\\\\"></span>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({\n      name: \\\\\"Decadef20\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > propsInterface 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > propsType 1`] = `\n\"<div x-data=\\\\\"myBasicComponent()\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <span x-html=\\\\\"name\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<div x-data=\\\\\"onUpdate()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"onUpdate\\\\\", () => ({\n      foo: function foo(params) {},\n      bar: function bar() {},\n      zoo: function zoo() {\n        const params = {\n          cb: this.bar,\n        };\n      },\n\n      onUpdate() {\n        this.foo({\n          someOption: this.bar,\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > renderBlock 1`] = `\n\"<template x-if=\\\\\"shouldWrap\\\\\">\n  <template x-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n    <state.tag x-bind=\\\\\"attributes\\\\\" x-bind=\\\\\"actions\\\\\"></state.tag>\n  </template>\n  <template x-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n    <template x-for=\\\\\"data in repeatItemData\\\\\">\n      <RenderRepeatedBlock\n        x-bind:key=\\\\\"index\\\\\"\n        x-bind:repeatContext=\\\\\"data.context\\\\\"\n        x-bind:block=\\\\\"data.block\\\\\"\n      ></RenderRepeatedBlock>\n    </template>\n  </template>\n  <template x-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n    <state.tag x-bind=\\\\\"attributes\\\\\" x-bind=\\\\\"actions\\\\\">\n      <state.renderComponentTag\n        x-bind=\\\\\"renderComponentProps\\\\\"\n      ></state.renderComponentTag>\n      <template x-for=\\\\\"child in childrenWithoutParentComponent\\\\\">\n        <RenderBlock\n          x-bind:key=\\\\\"'render-block-' + child.id\\\\\"\n          x-bind:block=\\\\\"child\\\\\"\n          x-bind:context=\\\\\"childrenContext\\\\\"\n        ></RenderBlock>\n      </template>\n      <template x-for=\\\\\"child in childrenWithoutParentComponent\\\\\">\n        <BlockStyles\n          x-bind:key=\\\\\"'block-style-' + child.id\\\\\"\n          x-bind:block=\\\\\"child\\\\\"\n          x-bind:context=\\\\\"childrenContext\\\\\"\n        ></BlockStyles>\n      </template>\n    </state.tag>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderBlock\\\\\", () => ({\n      get component() {\n        const componentName = getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n\n      get tag() {\n        return getBlockTag(this.useBlock);\n      },\n\n      get useBlock() {\n        return this.repeatItemData\n          ? props.block\n          : getProcessedBlock({\n              block: props.block,\n              state: props.context.state,\n              context: props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n\n      get actions() {\n        return getBlockActions({\n          block: this.useBlock,\n          state: props.context.state,\n          context: props.context.context,\n        });\n      },\n\n      get attributes() {\n        const blockProperties = getBlockProperties(this.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: this.useBlock,\n                  context: props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n\n      get shouldWrap() {\n        return !this.component?.noWrap;\n      },\n\n      get renderComponentProps() {\n        return {\n          blockChildren: this.useChildren,\n          componentRef: this.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(this.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(this.shouldWrap\n              ? {}\n              : {\n                  attributes: { ...this.attributes, ...this.actions },\n                }),\n            customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: this.childrenContext,\n        };\n      },\n\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return this.componentInfo?.canHaveChildren ? this.useBlock.children : [];\n        return this.useBlock.children ?? [];\n      },\n\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !this.component?.component && !this.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n      },\n\n      get repeatItemData() {\n        /**\n         * we don't use \\`this.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: props.context.state,\n          context: props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray =\n          itemsArray.map <\n          RepeatData >\n          ((item, index) => ({\n            context: {\n              ...props.context,\n              state: {\n                ...props.context.state,\n                $index: index,\n                $item: item,\n                [itemNameToUse]: item,\n                [\\`$\\${itemNameToUse}Index\\`]: index,\n              },\n            },\n            block: blockWithoutRepeat,\n          }));\n        return repeatArray;\n      },\n\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: this.useBlock,\n          context: props.context,\n          blockStyles: this.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n\n      get childrenContext() {\n        return {\n          apiKey: props.context.apiKey,\n          state: props.context.state,\n          content: props.context.content,\n          context: props.context.context,\n          registeredComponents: props.context.registeredComponents,\n          inheritedStyles: this.inheritedTextStyles,\n        };\n      },\n\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > renderContentExample 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n<div class=\\\\\"div\\\\\" x-data=\\\\\"renderContent()\\\\\" x-on:click=\\\\\"trackClick(content.id)\\\\\">\n  <RenderBlocks x-bind:blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderContent\\\\\", () => ({\n      init() {\n        sendComponentsToVisualEditor(props.customComponents);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<div x-data=\\\\\"button()\\\\\">\n  <template x-if=\\\\\"link\\\\\">\n    <a\n      x-bind=\\\\\"attributes\\\\\"\n      x-bind:href=\\\\\"link\\\\\"\n      x-bind:target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n    >\n      <span x-html=\\\\\"text\\\\\"></span>\n    </a>\n  </template>\n  <template x-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" x-bind=\\\\\"attributes\\\\\">\n      <span x-html=\\\\\"text\\\\\"></span>\n    </button>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"button\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > rootShow 1`] = `\n\"<template x-if=\\\\\"foo === 'bar'\\\\\">\n  <div>Bar</div>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"renderStyles\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > self-referencing component 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <span x-html=\\\\\"name\\\\\"></span>\n  <template x-if=\\\\\"name === 'Batman'\\\\\">\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <span x-html=\\\\\"name\\\\\"></span>\n  <span x-html=\\\\\"children\\\\\"></span>\n  <template x-if=\\\\\"name === 'Batman'\\\\\">\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > setState 1`] = `\n\"<div x-data=\\\\\"setState()\\\\\"><button x-on:click=\\\\\"someFn()\\\\\">Click me</button></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"setState\\\\\", () => ({\n      n: [\\\\\"123\\\\\"],\n\n      someFn() {\n        this.n[0] = \\\\\"123\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > showExpressions 1`] = `\n\"<div x-data=\\\\\"showWithOtherValues()\\\\\">\n  <template x-if=\\\\\"conditionA\\\\\">Content0</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentB</template>\n  <template x-if=\\\\\"conditionA\\\\\">\n    <span x-html=\\\\\"undefined\\\\\"></span>\n  </template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentC</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentD</template>\n  <template x-if=\\\\\"conditionA\\\\\"></template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentE</template>\n  <template x-if=\\\\\"conditionA\\\\\">hello</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentF</template>\n  <template x-if=\\\\\"conditionA\\\\\">123</template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">4mb</template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">\n    <template x-if=\\\\\"conditionB === 'Complete'\\\\\">20mb</template>\n  </template>\n  <template x-if=\\\\\"conditionA === 'Default'\\\\\">\n    <template x-if=\\\\\"conditionB === 'Complete'\\\\\">\n      <div>complete</div>\n    </template>\n  </template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showWithOtherValues\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > showWithFor 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">\n  <template x-for=\\\\\"item in items\\\\\">\n    <div x-bind:key=\\\\\"idx\\\\\"><span x-html=\\\\\"item\\\\\"></span></div>\n  </template>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"nestedShow\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<div x-data=\\\\\"showWithOtherValues()\\\\\">\n  <template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentB</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentC</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentD</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentE</template>\n  <template x-if=\\\\\"conditionA\\\\\">ContentF</template>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showWithOtherValues\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > showWithRootText 1`] = `\n\"<template x-if=\\\\\"conditionA\\\\\">ContentA</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"showRootText\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<div class=\\\\\"test div\\\\\" x-data=\\\\\"myBasicComponent()\\\\\">\n  <span x-html=\\\\\"id\\\\\"></span>\n  <span x-html=\\\\\"foo.bar.baz\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"attrs\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"nested\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > spreadProps 1`] = `\n\"<input x-data=\\\\\"myBasicComponent()\\\\\" x-bind=\\\\\"props\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > store-async-function 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      arrowFunction: async function arrowFunction() {\n        return Promise.resolve();\n      },\n      namedFunction: async function namedFunction() {\n        return Promise.resolve();\n      },\n      fetchUsers: async function fetchUsers() {\n        return Promise.resolve();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > string-literal-store 1`] = `\n\"<div x-data=\\\\\"stringLiteralStore()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stringLiteralStore\\\\\", () => ({\n      foo: 123,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<div\n  class=\\\\\"builder-column div\\\\\"\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:style=\\\\\"{\n  width: '100%'\n}\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<div\n  x-data=\\\\\"stylePropClassAndCss()\\\\\"\n  x-bind:style=\\\\\"attributes.style\\\\\"\n  x-bind:class=\\\\\"attributes.class + ' div'\\\\\"\n></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"stylePropClassAndCss\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > subComponent 1`] = `\n\"<Foo x-data=\\\\\"subComponent()\\\\\"></Foo>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"subComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > svgComponent 1`] = `\n\"<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  x-data=\\\\\"svgComponent()\\\\\"\n  x-bind:viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n  x-bind:width=\\\\\"42\\\\\"\n  x-bind:height=\\\\\"42\\\\\"\n>\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        x-bind:stdDeviation=\\\\\"7\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"svgComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > typeDependency 1`] = `\n\"<div x-data=\\\\\"typeDependency()\\\\\"><span x-html=\\\\\"foo\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeDependency\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<div x-data=\\\\\"typeExternalProps()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeExternalProps\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<div x-data=\\\\\"typeExternalStore()\\\\\">\n  Hello\n  <span x-html=\\\\\"_name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeExternalStore\\\\\", () => ({\n      _name: \\\\\"test\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<div x-data=\\\\\"typeGetterStore()\\\\\">\n  Hello\n  <span x-html=\\\\\"name\\\\\"></span>\n  !\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"typeGetterStore\\\\\", () => ({\n      name: \\\\\"test\\\\\",\n\n      getName() {\n        if (this.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return this.name;\n      },\n\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > use-style 1`] = `\n\"<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n<button type=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n<button type=\\\\\"button\\\\\" x-data=\\\\\"myComponent()\\\\\">Button</button>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > useTarget 1`] = `\n\"<div x-data=\\\\\"useTargetComponent()\\\\\"><span x-html=\\\\\"name\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"useTargetComponent\\\\\", () => ({\n      get name() {\n        const prefix = \\\\\"a\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n\n      init() {\n        console.log(this.foo);\n        this.foo = \\\\\"bar\\\\\";\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > jsx > Typescript Test > webComponent 1`] = `\n\"<swiper-container\n  slides-per-view=\\\\\"3\\\\\"\n  navigation=\\\\\"true\\\\\"\n  pagination=\\\\\"true\\\\\"\n  x-data=\\\\\"myBasicWebComponent()\\\\\"\n>\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myBasicWebComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > basic 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input x-on:change=\\\\\"name = $event.target.value\\\\\" x-bind:value=\\\\\"name\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > bindGroup 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Plain'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Spinach'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Rice'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Beans'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Cheese'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <p>\n    Tortilla:\n    <span x-html=\\\\\"tortilla\\\\\"></span>\n  </p>\n  <p>\n    Fillings:\n    <span x-html=\\\\\"fillings\\\\\"></span>\n  </p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      tortilla: \\\\\"Plain\\\\\",\n      fillings: [],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > bindProperty 1`] = `\n\"<input x-data=\\\\\"myComponent()\\\\\" x-bind:value=\\\\\"value\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      value: \\\\\"hello\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > classDirective 1`] = `\n\"<input\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      focus: true,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > context 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"activeTab\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      activeTab: 0,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > each 1`] = `\n\"<ul x-data=\\\\\"myComponent()\\\\\">\n  <template x-for=\\\\\"num in numbers\\\\\">\n    <li><span x-html=\\\\\"num\\\\\"></span></li>\n  </template>\n</ul>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > eventHandlers 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <button x-on:click=\\\\\"log('hi')\\\\\">Log</button>\n  <button x-on:click=\\\\\"log($event)\\\\\">Log</button>\n  <button x-on:click=\\\\\"log($event)\\\\\">Log</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > html 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\" x-bind:innerHTML=\\\\\"html\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      html: \\\\\"<b>bold</b>\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > ifElse 1`] = `\n\"<template x-if=\\\\\"show\\\\\">\n  <button x-on:click=\\\\\"toggle($event)\\\\\">Hide</button>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      show: true,\n      toggle: function toggle() {\n        this.show = !this.show;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > imports 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <button type=\\\\\"button\\\\\" x-bind:disabled=\\\\\"disabled\\\\\"><slot></slot></button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      disabled: false,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n\n      onUpdate() {\n        console.log(\\\\\"onAfterUpdate\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > reactive 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input x-bind:value=\\\\\"name\\\\\" />\n\n  Lowercase:\n  <span x-html=\\\\\"lowercaseName\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n\n      get lowercaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input type=\\\\\"number\\\\\" x-on:change=\\\\\"a = $event.target.value\\\\\" x-bind:value=\\\\\"a\\\\\" />\n  <input type=\\\\\"number\\\\\" x-on:change=\\\\\"b = $event.target.value\\\\\" x-bind:value=\\\\\"b\\\\\" />\n\n  Result:\n  <span x-html=\\\\\"result\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        this.result = a_ * b_;\n      },\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          this.calculateResult(this.a, this.b);\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          this.calculateResult(this.a, this.b);\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > slots 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > style 1`] = `\n\"<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n<input class=\\\\\"form-input\\\\\" x-data=\\\\\"myComponent()\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Javascript Test > textExpressions 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  normal:\n\n  <span x-html=\\\\\"a + b\\\\\"></span>\n  <br />\n\n  conditional\n\n  <span x-html=\\\\\"a > 2 ? 'hello' : 'bye'\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      a: 5,\n      b: 12,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > basic 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input x-on:change=\\\\\"name = $event.target.value\\\\\" x-bind:value=\\\\\"name\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > bindGroup 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Plain'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    x-bind:checked=\\\\\"tortilla === 'Spinach'\\\\\"\n    x-on:change=\\\\\"tortilla = $event.target.value\\\\\"\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Rice'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Beans'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Cheese'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    x-bind:checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n    x-on:change=\\\\\"fillings = $event.target.value\\\\\"\n  />\n  <p>\n    Tortilla:\n    <span x-html=\\\\\"tortilla\\\\\"></span>\n  </p>\n  <p>\n    Fillings:\n    <span x-html=\\\\\"fillings\\\\\"></span>\n  </p>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      tortilla: \\\\\"Plain\\\\\",\n      fillings: [],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > bindProperty 1`] = `\n\"<input x-data=\\\\\"myComponent()\\\\\" x-bind:value=\\\\\"value\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      value: \\\\\"hello\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > classDirective 1`] = `\n\"<input\n  x-data=\\\\\"myComponent()\\\\\"\n  x-bind:class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n/>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      focus: true,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > context 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\"><span x-html=\\\\\"activeTab\\\\\"></span></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      activeTab: 0,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > each 1`] = `\n\"<ul x-data=\\\\\"myComponent()\\\\\">\n  <template x-for=\\\\\"num in numbers\\\\\">\n    <li><span x-html=\\\\\"num\\\\\"></span></li>\n  </template>\n</ul>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"],\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > eventHandlers 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <button x-on:click=\\\\\"log('hi')\\\\\">Log</button>\n  <button x-on:click=\\\\\"log($event)\\\\\">Log</button>\n  <button x-on:click=\\\\\"log($event)\\\\\">Log</button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > html 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\" x-bind:innerHTML=\\\\\"html\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      html: \\\\\"<b>bold</b>\\\\\",\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > ifElse 1`] = `\n\"<template x-if=\\\\\"show\\\\\">\n  <button x-on:click=\\\\\"toggle($event)\\\\\">Hide</button>\n</template>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      show: true,\n      toggle: function toggle() {\n        this.show = !this.show;\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > imports 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <button type=\\\\\"button\\\\\" x-bind:disabled=\\\\\"disabled\\\\\"><slot></slot></button>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      disabled: false,\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\" x-effect=\\\\\"onUpdate\\\\\"></div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      init() {\n        console.log(\\\\\"onMount\\\\\");\n      },\n\n      onUpdate() {\n        console.log(\\\\\"onAfterUpdate\\\\\");\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > reactive 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input x-bind:value=\\\\\"name\\\\\" />\n\n  Lowercase:\n  <span x-html=\\\\\"lowercaseName\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      name: \\\\\"Steve\\\\\",\n\n      get lowercaseName() {\n        return this.name.toLowerCase();\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <input type=\\\\\"number\\\\\" x-on:change=\\\\\"a = $event.target.value\\\\\" x-bind:value=\\\\\"a\\\\\" />\n  <input type=\\\\\"number\\\\\" x-on:change=\\\\\"b = $event.target.value\\\\\" x-bind:value=\\\\\"b\\\\\" />\n\n  Result:\n  <span x-html=\\\\\"result\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        this.result = a_ * b_;\n      },\n\n      init() {\n        this.$watch(\\\\\"a\\\\\", (value, oldValue) => {\n          this.calculateResult(this.a, this.b);\n        });\n        this.$watch(\\\\\"b\\\\\", (value, oldValue) => {\n          this.calculateResult(this.a, this.b);\n        });\n      },\n    }));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > slots 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > style 1`] = `\n\"<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n<input class=\\\\\"form-input\\\\\" x-data=\\\\\"myComponent()\\\\\" />\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({}));\n  });\n</script>\n\"\n`;\n\nexports[`Alpine.js > svelte > Typescript Test > textExpressions 1`] = `\n\"<div x-data=\\\\\"myComponent()\\\\\">\n  normal:\n\n  <span x-html=\\\\\"a + b\\\\\"></span>\n  <br />\n\n  conditional\n\n  <span x-html=\\\\\"a > 2 ? 'hello' : 'bye'\\\\\"></span>\n</div>\n<script>\n  document.addEventListener(\\\\\"alpine:init\\\\\", () => {\n    Alpine.data(\\\\\"myComponent\\\\\", () => ({\n      a: 5,\n      b: 12,\n    }));\n  });\n</script>\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.import.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy;\n  @Input() altText;\n  @Input() _class;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes;\n  @Input() maxWidth;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() accessHere;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyComp from \\\\\"./my-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.lite\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.lite\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Javascript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Remove Internal mitosis package 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() accessHere!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyComp from \\\\\"./my-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.lite\\\\\";\nimport RenderComponent from \\\\\"./render-component.lite\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.lite\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.lite\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > jsx > Typescript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport Button from \\\\\"./Button.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Javascript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport Button from \\\\\"./Button.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Preserve Imports and File Extensions > svelte > Typescript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.mapper.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport MyBooleanAttributeComponentModule from \\\\\"./basic-boolean-attribute-component.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponentModule from \\\\\"./basic-onMount-update.raw/angular\\\\\";\nimport MyBasicOutputsComponentModule from \\\\\"./basic-outputs.raw/angular\\\\\";\nimport MyBasicComponentModule from \\\\\"./basic.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponentModule,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake/angular\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy;\n  @Input() altText;\n  @Input() _class;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponentModule from \\\\\"./input.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes;\n  @Input() maxWidth;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCodeModule from \\\\\"./content-slot-jsx.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCodeModule from \\\\\"./content-slot-jsx.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n  bootstrap: [SomeOtherComponent],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() accessHere;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyCompModule from \\\\\"./my-component.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.lite\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport RenderBlockModule from \\\\\"./builder-render-block.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n  bootstrap: [SomeOtherComponent],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStylesModule } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStylesModule from \\\\\"./block-styles.lite/angular\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.lite\\\\\";\nimport RenderComponent from \\\\\"./render-component.lite\\\\\";\nimport RenderRepeatedBlockModule from \\\\\"./render-repeated-block.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.lite\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocksModule from \\\\\"@dummy/RenderBlocks.lite.tsx/angular\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent]\n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FooModule from \\\\\"./foo-sub-component.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Javascript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Remove Internal mitosis package 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponentModule from \\\\\"./basic-boolean-attribute-component.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponentModule from \\\\\"./basic-onMount-update.raw/angular\\\\\";\nimport MyBasicOutputsComponentModule from \\\\\"./basic-outputs.raw/angular\\\\\";\nimport MyBasicComponentModule from \\\\\"./basic.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponentModule,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake/angular\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponentModule from \\\\\"./input.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCodeModule from \\\\\"./content-slot-jsx.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCodeModule from \\\\\"./content-slot-jsx.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n  bootstrap: [SomeOtherComponent],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() accessHere!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyCompModule from \\\\\"./my-component.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.lite\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n  bootstrap: [SomeOtherComponent],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlockModule, {\n  RenderBlockModuleProps,\n} from \\\\\"./builder-render-block.raw/angular\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n  bootstrap: [SomeOtherComponent],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n  bootstrap: [SomeOtherComponent],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n  bootstrap: [SomeOtherComponent],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n  bootstrap: [SomeOtherComponent],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStylesModule } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStylesModule from \\\\\"./block-styles.lite/angular\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.lite\\\\\";\nimport { RenderComponentProps } from \\\\\"./render-component.lite\\\\\";\nimport RenderComponent from \\\\\"./render-component.lite\\\\\";\nimport RenderRepeatedBlockModule from \\\\\"./render-repeated-block.lite/angular\\\\\";\nimport { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.lite\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocksModule from \\\\\"@dummy/RenderBlocks.lite.tsx/angular\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n  bootstrap: [SomeOtherComponent],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n  bootstrap: [SomeOtherComponent],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n  bootstrap: [SomeOtherComponent],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  bootstrap: [SomeOtherComponent]\n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n  bootstrap: [SomeOtherComponent],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FooModule from \\\\\"./foo-sub-component.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport { Foo } from \\\\\"./foo-type\\\\\";\nimport { Foo as Foo2 } from \\\\\"./type-export.lite\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n  bootstrap: [SomeOtherComponent],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > jsx > Typescript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ButtonModule from \\\\\"./Button.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Javascript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ButtonModule from \\\\\"./Button.lite/angular\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with Import Mapper Tests > svelte > Typescript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n  bootstrap: [SomeOtherComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.signals.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular signals > jsx > Javascript Test > Advanced 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<main>\n    @for (person of names();track i;let i = $index) {\n    <div>{{i}} : {{person}}</div>\n    } @for (person of names();track i;let i = $index) {\n    <span>{{person}}</span>\n    } @for (_ of names();track i;let i = $index) {\n    <br />\n    } @for (_ of Array.from({ length: 10 });track ee;let ee = $index) {\n    <pre>{{ee}}</pre>\n    } @for (_ of Array.from({ length: 10 });track i;let i = $index) {\n    <p>{{index}}</p>\n    } @for (person of names();track index;let index = $index) {\n    <span>{{person}} {{index}}</span>\n    } @for (person of Array.from({ length: 10 });track count;let count = $index)\n    {\n    <span>{{person}} {{count}}</span>\n    } @for (person of names();track i;let i = $index) {\n    <span>{{person}} {{i}}</span>\n    } @for (person of Array.from({ length: 10 });track index;let index = $index)\n    {\n    <span>{{person}} {{index}}</span>\n    }\n  </main> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForShowComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(showInput()){\n    <ng-container\n      ><input\n        class=\\\\\"input\\\\\"\n        #inputRef\n        [attr.value]=\\\\\"name()\\\\\"\n        (blur)=\\\\\"onBlur()\\\\\"\n        (change)=\\\\\"name.set($event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select></ng-container\n    >\n    } Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  showInput: InputSignal<any> = input<any>();\n\n  inputRef = viewChild<ElementRef>(\\\\\"inputRef\\\\\");\n  inputNoArgRef = viewChild<ElementRef>(\\\\\"inputNoArgRef\\\\\");\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onBlur() {\n    // Maintain focus\n    this.inputRef()?.nativeElement.focus();\n  }\n  lowerCaseName() {\n    return this.name().toLowerCase();\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.inputRef();\n          this.inputNoArgRef();\n          // ---\n\n          console.log(\\\\\"Received an update\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    <input\n      [attr.value]=\\\\\"DEFAULT_VALUES.name || name()\\\\\"\n      (change)=\\\\\"name.set(myEvent.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  protected readonly DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = signal(\\\\\"Steve\\\\\");\n  age = signal(1);\n  sports = signal([\\\\\"\\\\\"]);\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic 2`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (person of names();track i;let i = $index) { @if(person === name()){\n    <input\n      [attr.value]=\\\\\"name()\\\\\"\n      (change)=\\\\\"{\n          name.set($event.target.value + ' and ' + person);\n        }\\\\\"\n    />\n\n    Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid! } }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForShowComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic Context 1`] = `\n\"import { Component, effect, signal, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    {{myService.method('hello') + name()}} Hello! I can run in React, Vue,\n    Solid, or Liquid!\n\n    <input (change)=\\\\\"onChange()\\\\\" />\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements AfterViewInit {\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOnMountUpdateComponent implements AfterViewInit {\n  bye: InputSignal<any> = input<any>();\n  hi: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n\n  ngOnInit() {\n    this.name.set(\\\\\"PatrickJS onInit\\\\\" + this.hi());\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name.set(\\\\\"PatrickJS onMount\\\\\" + this.bye());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import {\n  Component,\n  output,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOutputsComponent implements AfterViewInit {\n  message: InputSignal<any> = input<any>();\n  messageChange = output();\n  event = output();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.messageChange.emit(this.name());\n      this.event.emit(this.message());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport {\n  Component,\n  output,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOutputsComponent implements AfterViewInit {\n  message: InputSignal<any> = input<any>();\n  messageChange = output();\n  event = output();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.messageChange.emit(this.name());\n      this.event.emit(this.message());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input\n    autocapitalize=\\\\\"on\\\\\"\n    autocomplete=\\\\\"on\\\\\"\n    [attr.spellcheck]=\\\\\"true\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { MyBooleanAttributeComponent } from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyBooleanAttributeComponent],\n  template: \\`<div>\n    @if(children()){\n    <ng-content></ng-content>\n    {{type()}} }\n    <my-boolean-attribute-component\n      [toggle]=\\\\\"true\\\\\"\n    ></my-boolean-attribute-component>\n    <my-boolean-attribute-component\n      [toggle]=\\\\\"true\\\\\"\n    ></my-boolean-attribute-component>\n    <my-boolean-attribute-component\n      [list]=\\\\\"null\\\\\"\n    ></my-boolean-attribute-component>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBooleanAttribute {\n  type: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { MyBasicOnMountUpdateComponent } from \\\\\"./basic-onMount-update.raw\\\\\";\nimport { MyBasicOutputsComponent } from \\\\\"./basic-outputs.raw\\\\\";\nimport { MyBasicComponent } from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  standalone: true,\n  imports: [\n    CommonModule,\n    MyBasicComponent,\n    MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent,\n  ],\n  template: \\`<div>\n    <my-basic-component [id]=\\\\\"dev()\\\\\"></my-basic-component>\n    <div>\n      <my-basic-on-mount-update-component\n        [hi]=\\\\\"name()\\\\\"\n        [bye]=\\\\\"dev()\\\\\"\n      ></my-basic-on-mount-update-component>\n      <my-basic-outputs-component\n        message=\\\\\"Test\\\\\"\n        (messageChange)=\\\\\"name.set($event)\\\\\"\n        (event)=\\\\\"log('Test')\\\\\"\n      ></my-basic-outputs-component>\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicChildComponent {\n  name = signal(\\\\\"Steve\\\\\");\n  dev = signal(\\\\\"PatrickJS\\\\\");\n\n  log(message) {\n    console.log(message);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicFor 1`] = `\n\"import { Component, effect, signal, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (person of names();track i;let i = $index) {\n    <ng-container\n      ><input\n        [attr.value]=\\\\\"name()\\\\\"\n        (change)=\\\\\"{\n          name.set($event.target.value + ' and ' + person);\n        }\\\\\"\n      />\n\n      Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n      Liquid!\n    </ng-container>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForComponent implements AfterViewInit {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicRef 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(showInput()){\n    <ng-container\n      ><input\n        class=\\\\\"input\\\\\"\n        #inputRef\n        [attr.value]=\\\\\"name()\\\\\"\n        (blur)=\\\\\"onBlur()\\\\\"\n        (change)=\\\\\"name.set($event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select></ng-container\n    >\n    } Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  showInput: InputSignal<any> = input<any>();\n\n  inputRef = viewChild<ElementRef>(\\\\\"inputRef\\\\\");\n  inputNoArgRef = viewChild<ElementRef>(\\\\\"inputNoArgRef\\\\\");\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onBlur() {\n    // Maintain focus\n    this.inputRef()?.nativeElement?.focus();\n  }\n  lowerCaseName() {\n    return this.name().toLowerCase();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicRefAssignmentComponent {\n  handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <h1>Now: {{count()}} , before: {{prevCount}}</h1>\n    <button (click)=\\\\\"count.set(1)\\\\\">Increment</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyPreviousComponent {\n  count = signal(0);\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.count();\n          // ---\n\n          this._prevCount = this.count();\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Button 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1>{{text()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<any> = input<any>();\n  attributes: InputSignal<any> = input<any>();\n  openLinkInNewTab: InputSignal<any> = input<any>();\n  text: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Columns 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"builder-columns div\\\\\">\n    @for (column of columns();track index;let index = $index) {\n    <div class=\\\\\"builder-column div-2\\\\\">{{column.content}} {{index}}</div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n\\`,\n})\nexport class Column {\n  columns: InputSignal<any> = input<any>();\n  space: InputSignal<any> = input<any>();\n\n  getColumns() {\n    return this.columns() || [];\n  }\n  getGutterSize() {\n    return typeof this.space() === \\\\\"number\\\\\" ? this.space() || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content select=\\\\\"[testing]\\\\\"> </ng-content>\n    <div><hr /></div>\n    <div><ng-content> </ng-content></div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ContentSlotCode {\n  slotTesting: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(slotReference()){\n    <div\n      [attr.name]=\\\\\"slotContent() ? 'name1' : 'name2'\\\\\"\n      [attr.title]=\\\\\"slotContent() ? 'title1' : 'title2'\\\\\"\n      #elRef0\n      (click)=\\\\\"show()\\\\\"\n      [class]=\\\\\"cls()\\\\\"\n    >\n      @if(showContent() && slotContent()){\n      <ng-content select=\\\\\"[content]\\\\\"> {{content()}} </ng-content>\n      }\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ContentSlotJsxCode implements OnDestroy {\n  slotContent: InputSignal<any> = input<any>(defaultProps[\\\\\"slotContent\\\\\"]);\n  slotReference: InputSignal<any> = input<any>(defaultProps[\\\\\"slotReference\\\\\"]);\n  attributes: InputSignal<any> = input<any>();\n  content: InputSignal<any> = input<any>(defaultProps[\\\\\"content\\\\\"]);\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  name = signal(\\\\\"king\\\\\");\n  showContent = signal(false);\n  _listenerFns = new Map();\n\n  cls = computed(() => {\n    return this.slotContent() && this.children()\n      ? \\`\\${this.name()}-content\\`\n      : \\\\\"\\\\\";\n  });\n  show() {\n    this.slotContent() ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > CustomCode 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    #elem\n    [class]=\\\\\"'builder-custom-code' + (replaceNodes() ? ' replace-nodes' : '')\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class CustomCode implements AfterViewInit {\n  replaceNodes: InputSignal<any> = input<any>();\n  code: InputSignal<any> = input<any>();\n\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  scriptsInserted = signal([]);\n  scriptsRun = signal([]);\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem()?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem()?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Embed 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    #elem\n    [class]=\\\\\"'builder-custom-code' + (replaceNodes() ? ' replace-nodes' : '')\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class CustomCode implements AfterViewInit {\n  replaceNodes: InputSignal<any> = input<any>();\n  code: InputSignal<any> = input<any>();\n\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  scriptsInserted = signal([]);\n  scriptsRun = signal([]);\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem()?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem()?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Form 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, BuilderBlockComponent, BuilderBlocks],\n  template: \\`<form\n    [attr.validate]=\\\\\"validate()\\\\\"\n    #formRef\n    [attr.action]=\\\\\"!sendWithJs() && action()\\\\\"\n    [attr.method]=\\\\\"method()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    (submit)=\\\\\"onSubmit($event)\\\\\"\n    #elRef0\n  >\n    @if(builderBlock() && builderBlock().children){ @for (block of\n    builderBlock()?.children;track trackByBlock0(index, block);let index =\n    $index) {\n    <builder-block-component\n      [block]=\\\\\"block\\\\\"\n      [index]=\\\\\"index\\\\\"\n    ></builder-block-component>\n    } } @if(submissionState() === 'error'){\n    <builder-blocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      [blocks]=\\\\\"errorMessage()\\\\\"\n    ></builder-blocks>\n    } @if(submissionState() === 'sending'){\n    <builder-blocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      [blocks]=\\\\\"sendingMessage()\\\\\"\n    ></builder-blocks>\n    } @if(submissionState() === 'error' && responseData()){\n    <pre class=\\\\\"builder-form-error-text pre\\\\\">\n        {{JSON.stringify(responseData(), null, 2)}}</pre\n    >\n    } @if(submissionState() === 'success'){\n    <builder-blocks\n      dataPath=\\\\\"successMessage\\\\\"\n      [blocks]=\\\\\"successMessage()\\\\\"\n    ></builder-blocks>\n    }\n  </form> \\`,\n  styles: \\`:host { display: contents; }\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n\\`,\n})\nexport class FormComponent implements OnDestroy {\n  previewState: InputSignal<any> = input<any>();\n  sendWithJs: InputSignal<any> = input<any>();\n  sendSubmissionsTo: InputSignal<any> = input<any>();\n  action: InputSignal<any> = input<any>();\n  customHeaders: InputSignal<any> = input<any>();\n  contentType: InputSignal<any> = input<any>();\n  sendSubmissionsToEmail: InputSignal<any> = input<any>();\n  name: InputSignal<any> = input<any>();\n  method: InputSignal<any> = input<any>();\n  errorMessagePath: InputSignal<any> = input<any>();\n  resetFormOnSubmit: InputSignal<any> = input<any>();\n  successUrl: InputSignal<any> = input<any>();\n  validate: InputSignal<any> = input<any>();\n  attributes: InputSignal<any> = input<any>();\n  builderBlock: InputSignal<any> = input<any>();\n  errorMessage: InputSignal<any> = input<any>();\n  sendingMessage: InputSignal<any> = input<any>();\n  successMessage: InputSignal<any> = input<any>();\n\n  formRef = viewChild<ElementRef>(\\\\\"formRef\\\\\");\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  formState = signal(\\\\\"unsubmitted\\\\\");\n  responseData = signal(null);\n  formErrorMessage = signal(\\\\\"\\\\\");\n  _listenerFns = new Map();\n\n  submissionState = computed(() => {\n    return (Builder.isEditing && this.previewState()) || this.formState();\n  });\n  onSubmit(event) {\n    const sendWithJs =\n      this.sendWithJs() || this.sendSubmissionsTo() === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo() === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action() || this.sendSubmissionsTo() === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders() || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType();\n\n      if (this.sendSubmissionsTo() === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action()?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef()?.nativeElement) {\n        this.formRef()?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState.set(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail() || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name() || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo() === \\\\\"email\\\\\" ? formUrl : this.action(),\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method() || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath()) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath());\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage.set(message);\n            }\n          }\n\n          this.responseData.set(body);\n          this.formState.set(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef()?.nativeElement) {\n              this.formRef()?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit() !== false) {\n                this.formRef()?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl()) {\n              if (this.formRef()?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl(),\n                  },\n                });\n                this.formRef()?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl();\n                }\n              } else {\n                location.href = this.successUrl();\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef()?.nativeElement) {\n            this.formRef()?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData.set(err);\n          this.formState.set(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index: number, block: any) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Image 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <picture #pictureRef\n      >@if(!useLazyLoading() || load()){\n      <img\n        [attr.alt]=\\\\\"altText()\\\\\"\n        [attr.aria-role]=\\\\\"altText() ? 'presentation' : undefined\\\\\"\n        [class]=\\\\\"'builder-image' + (_class() ? ' ' + _class() : '') + ' img'\\\\\"\n        [attr.src]=\\\\\"image()\\\\\"\n        (load)=\\\\\"setLoaded()\\\\\"\n        [attr.srcset]=\\\\\"srcset()\\\\\"\n        [attr.sizes]=\\\\\"sizes()\\\\\" />\n      }\n      <source [attr.srcset]=\\\\\"srcset()\\\\\"\n    /></picture>\n    <ng-content></ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n\\`,\n})\nexport class Image implements AfterViewInit, OnDestroy {\n  lazy: InputSignal<any> = input<any>();\n  altText: InputSignal<any> = input<any>();\n  _class: InputSignal<any> = input<any>();\n  image: InputSignal<any> = input<any>();\n  srcset: InputSignal<any> = input<any>();\n  sizes: InputSignal<any> = input<any>();\n\n  pictureRef = viewChild<ElementRef>(\\\\\"pictureRef\\\\\");\n\n  scrollListener = signal(null);\n  imageLoaded = signal(false);\n  load = signal(false);\n\n  setLoaded() {\n    this.imageLoaded.set(true);\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy() && this.isBrowser();\n  }\n  isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef()?.nativeElement) {\n            const rect =\n              this.pictureRef()?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load.set(true);\n              this.scrollListener.set(null);\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener.set(listener);\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener()) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Image State 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (item of images();track itemIndex;let itemIndex = $index) {\n    <ng-container><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ImgStateComponent {\n  canShow = signal(true);\n  images = signal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Img 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<img\n    [ngStyle]=\\\\\"{\n          objectFit: backgroundSize() || 'cover',\n          objectPosition: backgroundPosition() || 'center'\n        }\\\\\"\n    #elRef0\n    [attr.alt]=\\\\\"altText()\\\\\"\n    [attr.src]=\\\\\"imgSrc()\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ImgComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  backgroundSize: InputSignal<any> = input<any>();\n  backgroundPosition: InputSignal<any> = input<any>();\n  attributes: InputSignal<any> = input<any>();\n  imgSrc: InputSignal<any> = input<any>();\n  altText: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Input 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input\n    #elRef0\n    [attr.placeholder]=\\\\\"placeholder()\\\\\"\n    [attr.type]=\\\\\"type()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n    [attr.required]=\\\\\"required()\\\\\"\n    (change)=\\\\\"change()?.($event.target.value)\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class FormInputComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  attributes: InputSignal<any> = input<any>();\n  defaultValue: InputSignal<any> = input<any>();\n  placeholder: InputSignal<any> = input<any>();\n  type: InputSignal<any> = input<any>();\n  name: InputSignal<any> = input<any>();\n  value: InputSignal<any> = input<any>();\n  required: InputSignal<any> = input<any>();\n  change = output();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > InputParent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FormInputComponent } from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  standalone: true,\n  imports: [CommonModule, FormInputComponent],\n  template: \\`<form-input-component\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    (change)=\\\\\"handleChange($event)\\\\\"\n  ></form-input-component> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > NestedStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [attr.id]=\\\\\"_id()\\\\\">\n    Test\n\n    <p [attr.id]=\\\\\"_messageId()\\\\\">Message</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedStore {\n  _id = signal(\\\\\"abc\\\\\");\n  _messageId = signal(this._id() + \\\\\"-message\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > RawText 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<span\n    [class]=\\\\\"attributes()?.class || attributes()?.className\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text() || '')\\\\\"\n  ></span> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RawText {\n  attributes: InputSignal<any> = input<any>();\n  text: InputSignal<any> = input<any>();\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Section 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section\n    #elRef0\n    [ngStyle]=\\\\\"maxWidth() && typeof maxWidth() === 'number' ? {\n          maxWidth: maxWidth()\n        } : undefined\\\\\"\n  >\n    <ng-content></ng-content>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SectionComponent implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  maxWidth: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Section 2`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(max()){ @for (item of items();track i;let i = $index) {\n    <section\n      #elRef0\n      [ngStyle]=\\\\\"{\n          maxWidth: item + max()\n        }\\\\\"\n    >\n      <ng-content></ng-content>\n    </section>\n    } } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SectionStateComponent implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  max = signal(42);\n  items = signal([42]);\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Select 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<select\n    #elRef0\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n  >\n    @for (option of options();track index;let index = $index) {\n    <option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n      {{option.name || option.value}}\n    </option>\n    }\n  </select> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SelectComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  attributes: InputSignal<any> = input<any>();\n  value: InputSignal<any> = input<any>();\n  defaultValue: InputSignal<any> = input<any>();\n  name: InputSignal<any> = input<any>();\n  options: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content>\n      <div class=\\\\\"default-slot\\\\\">Default content</div>\n    </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n  template: \\`<div>\n    <content-slot-code><ng-content> </ng-content></content-slot-code>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n  template: \\`<div>\n    <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content select=\\\\\"[my-awesome-slot]\\\\\"> </ng-content>\n    <ng-content select=\\\\\"[top]\\\\\"> </ng-content>\n    <ng-content select=\\\\\"[left]\\\\\"> Default left </ng-content>\n    <ng-content> Default Child </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Stamped.io 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [attr.data-user]=\\\\\"name()\\\\\">\n    <button (click)=\\\\\"showReviewPrompt.set(true)\\\\\">Write a review</button>\n    @if(showReviewPrompt() || 'asdf'){\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button\\\\\"\n      (click)=\\\\\"{\n          ev.preventDefault();\n          showReviewPrompt.set(false);\n        }\\\\\"\n    >\n      Submit\n    </button>\n    } @for (review of reviews();track trackByReview0(index, review);let index =\n    $index) {\n    <div $name=\\\\\"Review\\\\\" class=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n      <div [class]=\\\\\"showReviewPrompt() ? 'bg-primary' : 'bg-secondary'\\\\\">\n        <div>N: {{index}}</div>\n        <div>{{review.author}}</div>\n        <div>{{review.reviewMessage}}</div>\n      </div>\n    </div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n\\`,\n})\nexport class SmileReviews implements AfterViewInit {\n  apiKey: InputSignal<any> = input<any>();\n  productId: InputSignal<any> = input<any>();\n\n  reviews = signal([]);\n  name = signal(\\\\\"test\\\\\");\n  showReviewPrompt = signal(false);\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index: number, review: any) {\n    return review.id;\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey() || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId() || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews.set(data.data);\n        });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > StoreComment 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{foo()}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class StringLiteralStore {\n  foo = signal(true);\n\n  bar() {}\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{foo(errors())}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  errors = signal({});\n\n  foo(errors) {\n    return errors;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{bar()}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  foo = signal(false);\n\n  bar() {\n    return this.foo();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Submit 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"submit\\\\\" #elRef0>{{text()}}</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SubmitButton implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  text: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Text 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n    [attr.data-name]=\\\\\"{\n          test: name() || 'any name'\n        }\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text() || content() || name() || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Text {\n  text: InputSignal<any> = input<any>();\n  content: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"Decadef20\\\\\");\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Textarea 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<textarea\n    #elRef0\n    [attr.placeholder]=\\\\\"placeholder()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n  ></textarea> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Textarea implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  placeholder: InputSignal<any> = input<any>();\n  name: InputSignal<any> = input<any>();\n  value: InputSignal<any> = input<any>();\n  defaultValue: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { Component, output, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Test</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class UseValueAndFnFromStore {\n  change = output();\n\n  _id = signal(\\\\\"abc\\\\\");\n  _active = signal(false);\n\n  _do(id) {\n    this._active.set(!!id);\n\n    if (this.change) {\n      this.change.emit(this._active());\n    }\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          if (this._do.bind(this)) {\n            this._do(this._id());\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > Video 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<video\n    preload=\\\\\"none\\\\\"\n    #elRef0\n    [ngStyle]=\\\\\"objSpread_style_hq5qrw()\\\\\"\n    [attr.poster]=\\\\\"posterImage()\\\\\"\n    [attr.autoplay]=\\\\\"autoPlay()\\\\\"\n    [attr.muted]=\\\\\"muted()\\\\\"\n    [attr.controls]=\\\\\"controls()\\\\\"\n    [attr.loop]=\\\\\"loop()\\\\\"\n  ></video> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Video implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  fit: InputSignal<any> = input<any>();\n  position: InputSignal<any> = input<any>();\n  video: InputSignal<any> = input<any>();\n  posterImage: InputSignal<any> = input<any>();\n  autoPlay: InputSignal<any> = input<any>();\n  muted: InputSignal<any> = input<any>();\n  controls: InputSignal<any> = input<any>();\n  loop: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  objSpread_style_hq5qrw = computed(() => {\n    return {\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes()?.style,\n      objectFit: this.fit(),\n      objectPosition: this.position(),\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    };\n  });\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > allSpread 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div #elRef0>\n    Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n    frameworks!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  accessHere: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  attrsUsingUseState = signal({\n    hello: \\\\\"world\\\\\",\n  });\n  properties = signal({\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  });\n  specifics = signal({\n    someSpecificState: \\\\\"specific\\\\\",\n  });\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(\n            this.elRef0()?.nativeElement,\n            this.attrsUsingUseState()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.properties());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, {\n            someOtherAttrs: this.accessHere(),\n            someStateAttrs: this.specifics(),\n          });\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0()?.nativeElement,\n        this.attrsUsingUseState()\n      );\n      this.setAttributes(this.elRef0()?.nativeElement, this.properties());\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef0()?.nativeElement, {\n        someOtherAttrs: this.accessHere(),\n        someStateAttrs: this.specifics(),\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"steve\\\\\");\n\n  setName(value) {\n    this.name.set(value);\n  }\n  updateNameWithArrowFn(value) {\n    this.name.set(value);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (option of ['a', 'b', 'c'];track trackByOption0(i, option);let i =\n    $index) {\n    <ng-container\n      ><div>{{option}}</div></ng-container\n    >\n    } @for (option of ['a', 'b', 'c'];track trackByOption1(i, option);let i =\n    $index) {\n    <ng-container\n      ><div>{{option}}</div></ng-container\n    >\n    }\n\n    <select>\n      @for (option of ['d', 'e', 'f'];track trackByOption2(i, option);let i =\n      $index) {\n      <option [attr.value]=\\\\\"option\\\\\">{{option}}</option>\n      }\n    </select>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicForFragment {\n  id = signal(\\\\\"xyz\\\\\");\n\n  trackByOption0(_: number, option: any) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_: number, option: any) {\n    return \\`\\${this.id()}-\\${option}\\`;\n  }\n  trackByOption2(_: number, option: any) {\n    return \\`\\${this.id()}-\\${option}\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #iconTemplate></ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForNoTagRefComponent {\n  myContent = signal<any[]>([]);\n  tagnamegetterTemplateRef = viewChild<TemplateRef<any>>(\n    \\\\\"tagnamegetterTemplate\\\\\"\n  );\n  tagTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagTemplate\\\\\");\n  tagnameTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagnameTemplate\\\\\");\n  iconTemplateRef = viewChild<TemplateRef<any>>(\\\\\"iconTemplate\\\\\");\n\n  actions: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"VincentW\\\\\");\n  TagName = signal(\\\\\"div\\\\\");\n  tag = signal(\\\\\"span\\\\\");\n\n  TagNameGetter = computed(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.tagnamegetterTemplateRef())\n        .rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagTemplateRef()).rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagnameTemplateRef())\n        .rootNodes,\n      this.viewContainer.createEmbeddedView(this.iconTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { Component, viewChild, ElementRef, input, effect, signal, InputSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'my-basic-forward-ref-component',standalone: true,imports: [CommonModule],template: \\`<div\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef()\n            [attr.value]=\\\\\"name()\\\\\"\n            (change)=\\\\\"name.set($event.target.value)\\\\\"\n        /></div>\n\\`,styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`\n})\nexport class MyBasicForwardRefComponent  {\n\n\n\n  inputRef: InputSignal<any> = input<any>()\n\n\n  props.inputRef = viewChild<ElementRef>(\\\\\"props.inputRef\\\\\")\n\n\n   name= signal('PatrickJS')\n\n\n\n\n  constructor() {\n  }\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          import { Component, viewChild, ElementRef, input, effect, signal, InputSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'my-basic-forward-ref-component',standalone: true,imports: [CommonModule],template: \\`<div\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef()\n            [attr.value]=\\\\\"name()\\\\\"\n            (change)=\\\\\"name.set($event.target.value)\\\\\"\n        /></div>\n\\`,styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`\n})\nexport class MyBasicForwardRefComponent  {\n\n\n\n  inputRef: InputSignal<any> = input<any>()\n\n\n  props.inputRef = viewChild<ElementRef>(\\\\\"props.inputRef\\\\\")\n\n\n   name= signal('PatrickJS')\n\n\n\n\n  constructor() {\n  }\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello! {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOnUpdateReturnComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.name();\n          // ---\n\n          const controller = new AbortController();\n          const signal = controller.signal;\n          fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n            signal,\n          })\n            .then((response) => response.json())\n            .then((data) => {\n              this.name.set(data.name);\n            });\n          return () => {\n            if (!signal.aborted) {\n              controller.abort();\n            }\n          };\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicRefAttributePassingComponent implements AfterViewInit {\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n  _root = viewChild<ElementRef>(\\\\\"_root\\\\\");\n\n  constructor() {}\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const element: HTMLElement | null = this._root()?.nativeElement;\n      this.enableAttributePassing(\n        element,\n        \\\\\"basic-ref-attribute-passing-component\\\\\"\n      );\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicRefAttributePassingCustomRefComponent\n  implements AfterViewInit\n{\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n\n  constructor() {}\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const element: HTMLElement | null = this.buttonRef()?.nativeElement;\n      this.enableAttributePassing(\n        element,\n        \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport {\n  Component,\n  input,\n  effect,\n  ChangeDetectionStrategy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{count()}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  count: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { MyComp } from \\\\\"./my-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComp],\n  template: \\`<div>\n    <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </my-comp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > class + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > className + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > className 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div [class]=\\\\\"bindings()\\\\\">With binding</div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ClassNameCode {\n  bindings = signal(\\\\\"a binding\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > classState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [class]=\\\\\"classState() + ' div'\\\\\" [ngStyle]=\\\\\"styleState()\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  classState = signal(\\\\\"testClassName\\\\\");\n  styleState = signal({\n    color: \\\\\"red\\\\\",\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [class]=\\\\\"className()\\\\\">\n    <ng-content></ng-content> {{type()}} Hello! I can run in React, Vue, Solid,\n    or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  className: InputSignal<any> = input<any>();\n  type: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComplexMetaRaw {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    ><ng-container>{{foo.value}}</ng-container></ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithContext {\n  content: InputSignal<any> = input<any>();\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    ><ng-container>{{foo.value}}</ng-container>\n    <div>other</div></ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithContext {\n  content: InputSignal<any> = input<any>();\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > contentState 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>setting context</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderContent {\n  content: InputSignal<any> = input<any>();\n  customComponents: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<span>My selector shouldn't be my-component!</span> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > defaultProps 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1 (click)=\\\\\"click()\\\\\">{{buttonText()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<any> = input<any>(defaultProps[\\\\\"link\\\\\"]);\n  attributes: InputSignal<any> = input<any>();\n  openLinkInNewTab: InputSignal<any> = input<any>(\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"]\n  );\n  text: InputSignal<any> = input<any>(defaultProps[\\\\\"text\\\\\"]);\n  buttonText: InputSignal<any> = input<any>();\n  click = output();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1 (click)=\\\\\"click($event)\\\\\">{{text()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<any> = input<any>(defaultProps[\\\\\"link\\\\\"]);\n  attributes: InputSignal<any> = input<any>();\n  openLinkInNewTab: InputSignal<any> = input<any>(\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"]\n  );\n  text: InputSignal<any> = input<any>(defaultProps[\\\\\"text\\\\\"]);\n  click = output();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name() || DEFAULT_VALUES.name}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithTypes {\n  protected readonly DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content></ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              obj().Component;\n        inputs: dynamicProps_37i2pk();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  myContent = signal<any[]>([]);\n  objTemplateRef = viewChild<TemplateRef<any>>(\\\\\"objTemplate\\\\\");\n\n  attributes: InputSignal<any> = input<any>();\n  something: InputSignal<any> = input<any>();\n\n  obj = signal({\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  });\n\n  dynamicProps_37i2pk = computed(() => {\n    return {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes(),\n      ...this.something(),\n    };\n  });\n  onClick() {\n    console.log(\\\\\"hello\\\\\");\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.objTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #componentTemplate> hello </ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              Component();\n        inputs: dynamicProps_37i2pk();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  myContent = signal<any[]>([]);\n  componentTemplateRef = viewChild<TemplateRef<any>>(\\\\\"componentTemplate\\\\\");\n\n  attributes: InputSignal<any> = input<any>();\n  something: InputSignal<any> = input<any>();\n\n  Component = signal(HelloComponent);\n\n  dynamicProps_37i2pk = computed(() => {\n    return {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes(),\n      ...this.something(),\n    };\n  });\n  onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.componentTemplateRef())\n        .rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      class=\\\\\"input\\\\\"\n      [attr.value]=\\\\\"name()\\\\\"\n      (input)=\\\\\"name.set($event.target.value)\\\\\"\n      (change)=\\\\\"name.set($event.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class EventInputAndChange {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > eventProps 1`] = `\n\"import { Component, output, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class EventPropsComponent {\n  getVoid = output();\n  enter = output();\n  pass = output();\n\n  handleClick() {\n    if (this.getVoid) {\n      this.getVoid.emit();\n    }\n\n    if (this.enter) {\n      console.log(this.enter.emit());\n    }\n\n    if (this.pass) {\n      this.pass.emit(\\\\\"test\\\\\");\n    }\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > expressionState 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{refToUse()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  componentRef: InputSignal<any> = input<any>();\n\n  refToUse = signal(undefined);\n\n  constructor() {}\n\n  ngOnInit() {\n    this.refToUse.set(\n      !(this.componentRef() instanceof Function) ? this.componentRef() : null\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button\n    [attr.data-icon]=\\\\\"icon()\\\\\"\n    [attr.data-disabled]=\\\\\"interactiveState()\\\\\"\n    [attr.data-width]=\\\\\"width()\\\\\"\n    [attr.data-size]=\\\\\"size()\\\\\"\n  >\n    {{label()}}\n  </button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class FigmaButton {\n  icon: InputSignal<any> = input<any>();\n  interactiveState: InputSignal<any> = input<any>();\n  width: InputSignal<any> = input<any>();\n  size: InputSignal<any> = input<any>();\n  label: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > functionProps 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<p\n    [attr.f]=\\\\\"() => x\\\\\"\n    [attr.f1]=\\\\\"x => x\\\\\"\n    [attr.f2]=\\\\\"x => {}\\\\\"\n    [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n    [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n    [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n    [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n    [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > getterState 1`] = `\n\"import { Component, input, effect, computed, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <p>{{foo2()}}</p>\n    <p>{{bar()}}</p>\n    <p>{{baz(1)}}</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button {\n  foo: InputSignal<any> = input<any>();\n\n  foo2 = computed(() => {\n    return this.foo() + \\\\\"foo\\\\\";\n  });\n  bar = computed(() => {\n    return \\\\\"bar\\\\\";\n  });\n  baz(i) {\n    return i + this.foo2().length;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > import types 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { RenderBlock } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderBlock],\n  template: \\`<render-block></render-block> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderContent {\n  renderContentProps: InputSignal<any> = input<any>();\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > importRaw 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Testing which imports get excluded!</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyImportComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > layerName 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section>\n    <div $name=\\\\\"🌟layer-name\\\\\" class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\n        .layer-name {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyLayerNameComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MultipleOnUpdate {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MultipleOnUpdateWithDeps {\n  a = signal(\\\\\"a\\\\\");\n  b = signal(\\\\\"b\\\\\");\n  c = signal(\\\\\"c\\\\\");\n  d = signal(\\\\\"d\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.a();\n          this.b();\n          // ---\n\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a(), this.b());\n\n          if (this.a() === \\\\\"a\\\\\") {\n            this.a.set(\\\\\"b\\\\\");\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.c();\n          this.d();\n          // ---\n\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c(), this.d());\n\n          if (this.a() === \\\\\"a\\\\\") {\n            this.a.set(\\\\\"b\\\\\");\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  effect,\n  signal,\n  OnDestroy,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  attrs = signal({\n    hello: \\\\\"world\\\\\",\n  });\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attrs());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attrs());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input [disabled]=\\\\\"disabled()\\\\\" />\n\n    Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't be\n    visible in the DOM.\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > nestedShow 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ @if(!conditionB()){\n    <div>if condition A and condition B</div>\n    }@else{\n    <div>else-condition-B</div>\n    } }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedShow {\n  conditionA: InputSignal<any> = input<any>();\n  conditionB: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n\\`,\n})\nexport class NestedStyles {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section>\n    <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n    <div $name=\\\\\"---\\\\\">Dashes</div>\n    <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n    <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n    <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n    <div $name=\\\\\"0\\\\\" class=\\\\\"css-0\\\\\">Single Number</div>\n    <div $name=\\\\\"123\\\\\" class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div $name=\\\\\"name123\\\\\" class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div $name=\\\\\"456name\\\\\" class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div $name=\\\\\"name-789\\\\\" class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div $name=\\\\\"🚀\\\\\">Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n\\`,\n})\nexport class MyNormalizedLayerNamesComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onEvent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Embed implements AfterViewInit {\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem()?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { Component, effect, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInit implements AfterViewInit {\n  constructor() {}\n\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onInit 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Default name defined by parent {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInit {\n  name: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"\\\\\");\n\n  constructor() {}\n\n  ngOnInit() {\n    this.name.set(defaultValues.name || this.name());\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInitPlain {\n  constructor() {}\n\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onMount 1`] = `\n\"import { Component, effect, OnDestroy, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Comp implements AfterViewInit, OnDestroy {\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { Component, effect, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Comp implements AfterViewInit {\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onUpdate 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdate {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdateWithDeps {\n  size: InputSignal<any> = input<any>();\n\n  a = signal(\\\\\"a\\\\\");\n  b = signal(\\\\\"b\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.a();\n          this.b();\n          this.size();\n          // ---\n\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a(),\n            this.b(),\n            this.size()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      [attr.value]=\\\\\"name()\\\\\"\n      (change)=\\\\\"name.set($event.target.value)\\\\\"\n      (changeOrSomething)=\\\\\"name.set($event.target.value)\\\\\"\n      (fakenative)=\\\\\"name.set($event.target.value)\\\\\"\n      (animationend)=\\\\\"name.set($event.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > prettierInline 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <span class=\\\\\"dolorum atque aspernatur\\\\\"\n      >Est molestiae sunt facilis qui rem.</span\n    >\n    <div class=\\\\\"voluptatem architecto at\\\\\">\n      Architecto rerum architecto incidunt sint.\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class PrettierInline {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content></ng-content> {{type()}} Hello! I can run in React, Vue, Solid,\n    or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  type: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"Decadef20\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > propsInterface 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > propsType 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdate {\n  foo(params) {}\n  bar() {}\n  zoo() {\n    const params = {\n      cb: this.bar.bind(this),\n    };\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.foo({\n            someOption: this.bar.bind(this),\n          });\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > renderBlock 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { BlockStyles } from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport { RenderRepeatedBlock } from \\\\\"./render-repeated-block.lite\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderRepeatedBlock, RenderBlock, BlockStyles],\n  template: \\`<ng-template #rendercomponenttagTemplate></ng-template\n    >@if(shouldWrap()){ @if(isEmptyHtmlElement(tag())){\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              tag();\n        inputs: dynamicProps_ya7n4j();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } @if(!isEmptyHtmlElement(tag()) && repeatItemData()){ @for (data of\n    repeatItemData();track trackByData0(index, data);let index = $index) {\n    <render-repeated-block\n      [repeatContext]=\\\\\"data.context\\\\\"\n      [block]=\\\\\"data.block\\\\\"\n    ></render-repeated-block>\n    } } @if(!isEmptyHtmlElement(tag()) && !repeatItemData()){\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              tag();\n        inputs: dynamicProps_ya7n4j();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } }@else{\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              renderComponentTag();\n        inputs: dynamicProps_emn6k5();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderBlock {\n  protected readonly isEmptyHtmlElement = isEmptyHtmlElement;\n\n  myContent = signal<any[]>([]);\n  rendercomponenttagTemplateRef = viewChild<TemplateRef<any>>(\n    \\\\\"rendercomponenttagTemplate\\\\\"\n  );\n  tagTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagTemplate\\\\\");\n\n  block: InputSignal<any> = input<any>();\n  context: InputSignal<any> = input<any>();\n\n  component = computed(() => {\n    const componentName = getProcessedBlock({\n      block: this.block(),\n      state: this.context().state,\n      context: this.context().context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context().registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n  tag = computed(() => {\n    return getBlockTag(this.useBlock());\n  });\n  useBlock = computed(() => {\n    return this.repeatItemData()\n      ? this.block()\n      : getProcessedBlock({\n          block: this.block(),\n          state: this.context().state,\n          context: this.context().context,\n          shouldEvaluateBindings: true,\n        });\n  });\n  actions = computed(() => {\n    return getBlockActions({\n      block: this.useBlock(),\n      state: this.context().state,\n      context: this.context().context,\n    });\n  });\n  attributes = computed(() => {\n    const blockProperties = getBlockProperties(this.useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock(),\n              context: this.context(),\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n  shouldWrap = computed(() => {\n    return !this.component()?.noWrap;\n  });\n  renderComponentProps = computed(() => {\n    return {\n      blockChildren: this.useChildren(),\n      componentRef: this.component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap()\n          ? {}\n          : {\n              attributes: { ...this.attributes(), ...this.actions() },\n            }),\n        customBreakpoints: this.childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext(),\n    };\n  });\n  useChildren = computed(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock().children ?? [];\n  });\n  childrenWithoutParentComponent = computed(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component()?.component && !this.repeatItemData();\n    return shouldRenderChildrenOutsideRef ? this.useChildren() : [];\n  });\n  repeatItemData = computed(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block();\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context().state,\n      context: this.context().context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context(),\n        state: {\n          ...this.context().state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n  inheritedTextStyles = computed(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock(),\n      context: this.context(),\n      blockStyles: this.attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n  childrenContext = computed(() => {\n    return {\n      apiKey: this.context().apiKey,\n      state: this.context().state,\n      content: this.context().content,\n      context: this.context().context,\n      registeredComponents: this.context().registeredComponents,\n      inheritedStyles: this.inheritedTextStyles(),\n    };\n  });\n  renderComponentTag = computed(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n  dynamicProps_ya7n4j = computed(() => {\n    return { ...this.attributes(), ...this.actions() };\n  });\n  dynamicProps_emn6k5 = computed(() => {\n    return { ...this.renderComponentProps() };\n  });\n  trackByData0(index: number, data: any) {\n    return index;\n  }\n  trackByChild1(_: number, child: any) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_: number, child: any) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(\n        this.rendercomponenttagTemplateRef()\n      ).rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > renderContentExample 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport { RenderBlocks } from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderBlocks],\n  template: \\`<div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content().id)\\\\\">\n    <render-blocks [blocks]=\\\\\"content().blocks\\\\\"></render-blocks>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n\\`,\n})\nexport class RenderContent implements AfterViewInit {\n  protected readonly trackClick = trackClick;\n\n  customComponents: InputSignal<any> = input<any>();\n  content: InputSignal<any> = input<any>();\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.content();\n          // ---\n\n          dispatchNewContentToVisualEditor(this.content());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    >@if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1>{{text()}}</button>\n    }</ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<any> = input<any>();\n  attributes: InputSignal<any> = input<any>();\n  openLinkInNewTab: InputSignal<any> = input<any>();\n  text: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > rootShow 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(foo() === 'bar'){\n    <div>Bar</div>\n    }@else{\n    <div>Foo</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderStyles {\n  foo: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [innerHTML]=\\\\\"html()\\\\\"></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  html: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n  template: \\`<div>\n    {{name()}} @if(name() === 'Batman'){\n    <my-component name=\\\\\"Bruce Wayne\\\\\"></my-component>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n  template: \\`<div>\n    {{name()}}\n    <ng-content></ng-content>\n    @if(name() === 'Batman'){\n    <my-component name=\\\\\"Bruce\\\\\"><div>Wayne</div></my-component>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > setState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SetState {\n  n = signal([\\\\\"123\\\\\"]);\n\n  someFn() {\n    this.n.update((n) => {\n      n[0] = \\\\\"123\\\\\";\n      return n;\n    });\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > showExpressions 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(conditionA()){ Content0 }@else{ ContentA } @if(conditionA()){ ContentA }\n    @if(conditionA()){ }@else{ ContentA } @if(conditionA()){ ContentB }@else{\n    {{undefined}} } @if(conditionA()){ {{undefined}} }@else{ ContentB }\n    @if(conditionA()){ ContentC } @if(conditionA()){ }@else{ ContentC }\n    @if(conditionA()){ ContentD } @if(conditionA()){ }@else{ ContentD }\n    @if(conditionA()){ ContentE }@else{ hello } @if(conditionA()){ hello }@else{\n    ContentE } @if(conditionA()){ ContentF }@else{ 123 } @if(conditionA()){ 123\n    }@else{ ContentF } @if(conditionA() === 'Default'){ 4mb }@else{\n    @if(conditionB() === 'Complete'){ 20mb }@else{ 9mb } } @if(conditionA() ===\n    'Default'){ @if(conditionB() === 'Complete'){ 20mb }@else{ 9mb } }@else{ 4mb\n    } @if(conditionA() === 'Default'){ @if(conditionB() === 'Complete'){\n    <div>complete</div>\n    }@else{ 9mb } }@else{ @if(conditionC() === 'Complete'){ dff }@else{\n    <div>complete else</div>\n    } }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowWithOtherValues {\n  conditionA: InputSignal<any> = input<any>();\n  conditionB: InputSignal<any> = input<any>();\n  conditionC: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > showWithFor 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ @for (item of items();track trackByItem0(idx,\n    item);let idx = $index) {\n    <div>{{item}}</div>\n    } }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedShow {\n  conditionA: InputSignal<any> = input<any>();\n  items: InputSignal<any> = input<any>();\n\n  trackByItem0(idx: number, item: any) {\n    return idx;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(conditionA()){ ContentA } @if(conditionA()){ ContentB }@else{\n    {{undefined}} } @if(conditionA()){ ContentC } @if(conditionA()){ ContentD }\n    @if(conditionA()){ ContentE }@else{ hello } @if(conditionA()){ ContentF\n    }@else{ 123 }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowWithOtherValues {\n  conditionA: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ ContentA }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowRootText {\n  conditionA: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  model,\n  output,\n  input,\n  effect,\n  signal,\n  InputSignal,\n  ModelSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button\n    [attr.aria-label]=\\\\\"label()\\\\\"\n    #buttonRef\n    [attr.disabled]=\\\\\"disabled()\\\\\"\n    (click)=\\\\\"handleOutput()\\\\\"\n  >\n    {{testInput()}}\n  </button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SignalsTestComponent {\n  testInput: InputSignal<any> = input<any>(defaultProps[\\\\\"testInput\\\\\"]);\n  label: InputSignal<any> = input.required<any>(defaultProps[\\\\\"label\\\\\"]);\n  disabled: ModelSignal<any> = model<any>();\n  testOutput = output();\n\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n\n  _counter = signal(0);\n  _innerText = signal(\\\\\"a\\\\\");\n\n  handleOutput() {\n    this._counter.update((_counter) => {\n      _counter++;\n      return _counter;\n    });\n\n    this._innerText.set(\\\\\"b\\\\\");\n\n    console.log(this.testInput(), this._counter());\n\n    if (this.testOutput) {\n      this.testOutput.emit();\n    }\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this._counter();\n          this.buttonRef();\n          // ---\n\n          console.log(this._counter(), this.buttonRef()?.nativeElement);\n          this.buttonRef()?.nativeElement?.setAttribute(\n            \\\\\"data-counter\\\\\",\n            this._counter().toString()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">{{id()}} {{foo().value.bar.baz}}</div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  id: InputSignal<any> = input<any>();\n  foo: InputSignal<any> = input<any>();\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.id();\n          // ---\n\n          console.log(\\\\\"props.id changed\\\\\", this.id());\n          console.log(\n            \\\\\"props.foo.value.bar.baz changed\\\\\",\n            this.foo().value.bar.baz\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  effect,\n  signal,\n  OnDestroy,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, attrs);\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, attrs);\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  nested: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.nested());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.nested());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > spreadProps 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > stateInit 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <div>{{asfas()}}</div>\n    <div>{{someCompute()}}</div>\n    <div>{{someOtherVal()}}</div>\n    <div>{{sf()}}</div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  val: InputSignal<any> = input<any>();\n\n  asfas = signal(\\\\\"asga\\\\\");\n  someCompute = signal(this.add(1, 2));\n  someOtherVal = signal(undefined);\n  sf = signal(undefined);\n\n  add(a, b) {\n    return a + b;\n  }\n  subtract() {\n    return this.someCompute() - this.someOtherVal();\n  }\n\n  constructor() {}\n\n  ngOnInit() {\n    this.sf.set(this.add(this.val(), 34));\n    this.someOtherVal.set(this.val());\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Comp],\n  template: \\`<Comp [val]=\\\\\"objSpread_val_yy75n1()\\\\\">{{val()}}</Comp> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  value: InputSignal<any> = input<any>();\n\n  val = signal(undefined);\n\n  objSpread_val_yy75n1 = computed(() => {\n    return { ...this.val() };\n  });\n\n  constructor() {}\n\n  ngOnInit() {\n    this.val.set(this.value());\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > store-async-function 1`] = `\n\"import { Component, effect } from '@angular/core';\n      import { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n      @Component({\n        selector: 'string-literal-store',standalone: true,imports: [CommonModule],template: \\`<div></div>\n\\`,styles: \\`:host { display: contents; }\\`\n      })\n      export class StringLiteralStore  {\n\n\n\n\n\n\n\n\n\n\n\n        async function arrowFunction() {\nreturn Promise.resolve();\n}\nasync function namedFunction() {\nreturn Promise.resolve();\n}\nasync function fetchUsers() {\nreturn Promise.resolve();\n}\n\n\n        constructor() {\n        }\n\n\n\n\n\n\n\n\n\n\n\n      }\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{foo()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class StringLiteralStore {\n  foo = signal(123);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { Component, effect, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',standalone: true,imports: [CommonModule],template: \\`<div>{{'foo-bar'}}</div>\n\\`,styles: \\`:host { display: contents; }\\`\n})\nexport class StringLiteralStore  {\n\n\n\n\n\n\n\n\n\n   foo-bar= signal(123)\n\n\n\n\n  constructor() {\n  }\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    class=\\\\\"builder-column div\\\\\"\n    [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [ngStyle]=\\\\\"attributes().style\\\\\"\n    [class]=\\\\\"attributes().class + ' div'\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class StylePropClassAndCss {\n  attributes: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > subComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Foo } from \\\\\"./foo-sub-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Foo],\n  template: \\`<foo></foo> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SubComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > svgComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    [attr.width]=\\\\\"42\\\\\"\n    [attr.height]=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          [attr.stdDeviation]=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SvgComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (item of items();track trackByItem0(i, item);let i = $index) {\n    <div>{{item}}</div>\n    } @for (item of items();track trackByItem1(i, item);let i = $index) {\n    <div>{{item}}</div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  items = signal([1, 2, 3]);\n\n  trackByItem0(_: number, item: any) {\n    return item;\n  }\n  trackByItem1(_: number, item: any) {\n    return item;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > typeDependency 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{foo()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeDependency {\n  foo: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeExternalProps {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{_name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeExternalStore {\n  _name = signal(\\\\\"test\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { Component, effect, signal, computed } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeGetterStore {\n  name = signal(\\\\\"test\\\\\");\n\n  test = computed(() => {\n    return \\\\\"test\\\\\";\n  });\n  getName() {\n    if (this.name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > use-style 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Comp],\n  template: \\`<div>\n    <Comp\n      [val1]=\\\\\"objSpread_val1_i10b3b()\\\\\"\n      [val2]=\\\\\"objSpread_val2_dcdfhf()\\\\\"\n      [val3]=\\\\\"objSpread_val3_2cisei()\\\\\"\n      [val4]=\\\\\"objSpread_val4_wb8314()\\\\\"\n      [val5]=\\\\\"objSpread_val5_1ruo5o()\\\\\"\n      [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n    ></Comp>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  spreadAttrs: InputSignal<any> = input<any>();\n\n  attributes = signal({\n    id: 1,\n  });\n  attributes2 = signal({\n    id2: 1,\n  });\n  something = signal({\n    id3: 1,\n  });\n\n  objSpread_val1_i10b3b = computed(() => {\n    return { ...this.attributes2() };\n  });\n  objSpread_val2_dcdfhf = computed(() => {\n    return { ...this.attributes(), ...this.attributes2() };\n  });\n  objSpread_val3_2cisei = computed(() => {\n    return { ...this.something(), anything: \\\\\"hello\\\\\", hello: \\\\\"world\\\\\" };\n  });\n  objSpread_val4_wb8314 = computed(() => {\n    return {\n      ...this.attributes(),\n      ...this.something(),\n      anything: [1, 2, 3],\n      hello: \\\\\"hello\\\\\",\n      ...this.attributes2(),\n    };\n  });\n  objSpread_val5_1ruo5o = computed(() => {\n    return {\n      ...this.attributes(),\n      ...this.something(),\n      anything: [1, 2, 3],\n      anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n      hello: \\\\\"hello\\\\\",\n      ...this.spreadAttrs(),\n    };\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > useTarget 1`] = `\n\"import {\n  Component,\n  effect,\n  signal,\n  computed,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class UseTargetComponent implements AfterViewInit {\n  lastName = signal(\\\\\"bar\\\\\");\n  foo = signal(\\\\\"bar\\\\\");\n\n  name = computed(() => {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo());\n      this.foo.set(\\\\\"bar\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Javascript Test > webComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<swiper-container\n    slides-per-view=\\\\\"3\\\\\"\n    navigation=\\\\\"true\\\\\"\n    pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide>\n    <swiper-slide>Slide 2</swiper-slide>\n    <swiper-slide>Slide 3</swiper-slide></swiper-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicWebComponent {\n  constructor() {}\n\n  ngOnInit() {\n    register();\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Remove Internal mitosis package 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello {{name()}} ! I can run in React, Qwik, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Advanced 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<main>\n    @for (person of names();track i;let i = $index) {\n    <div>{{i}} : {{person}}</div>\n    } @for (person of names();track i;let i = $index) {\n    <span>{{person}}</span>\n    } @for (_ of names();track i;let i = $index) {\n    <br />\n    } @for (_ of Array.from({ length: 10 });track ee;let ee = $index) {\n    <pre>{{ee}}</pre>\n    } @for (_ of Array.from({ length: 10 });track i;let i = $index) {\n    <p>{{index}}</p>\n    } @for (person of names();track index;let index = $index) {\n    <span>{{person}} {{index}}</span>\n    } @for (person of Array.from({ length: 10 });track count;let count = $index)\n    {\n    <span>{{person}} {{count}}</span>\n    } @for (person of names();track i;let i = $index) {\n    <span>{{person}} {{i}}</span>\n    } @for (person of Array.from({ length: 10 });track index;let index = $index)\n    {\n    <span>{{person}} {{index}}</span>\n    }\n  </main> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForShowComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(showInput()){\n    <ng-container\n      ><input\n        class=\\\\\"input\\\\\"\n        #inputRef\n        [attr.value]=\\\\\"name()\\\\\"\n        (blur)=\\\\\"onBlur()\\\\\"\n        (change)=\\\\\"name.set($event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select></ng-container\n    >\n    } Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  showInput: InputSignal<Props[\\\\\"showInput\\\\\"]> = input<Props[\\\\\"showInput\\\\\"]>();\n\n  inputRef = viewChild<ElementRef>(\\\\\"inputRef\\\\\");\n  inputNoArgRef = viewChild<ElementRef>(\\\\\"inputNoArgRef\\\\\");\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onBlur() {\n    // Maintain focus\n    this.inputRef()?.nativeElement.focus();\n  }\n  lowerCaseName() {\n    return this.name().toLowerCase();\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.inputRef();\n          this.inputNoArgRef();\n          // ---\n\n          console.log(\\\\\"Received an update\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    <input\n      [attr.value]=\\\\\"DEFAULT_VALUES.name || name()\\\\\"\n      (change)=\\\\\"name.set(myEvent.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  protected readonly DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = signal(\\\\\"Steve\\\\\");\n  age = signal<number>(1);\n  sports = signal<Array<string>>([\\\\\"\\\\\"]);\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic 2`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (person of names();track i;let i = $index) { @if(person === name()){\n    <input\n      [attr.value]=\\\\\"name()\\\\\"\n      (change)=\\\\\"{\n          name.set($event.target.value + ' and ' + person);\n        }\\\\\"\n    />\n\n    Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid! } }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForShowComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic Context 1`] = `\n\"import { Component, effect, signal, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    {{myService.method('hello') + name()}} Hello! I can run in React, Vue,\n    Solid, or Liquid!\n\n    <input (change)=\\\\\"onChange()\\\\\" />\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements AfterViewInit {\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOnMountUpdateComponent implements AfterViewInit {\n  bye: InputSignal<Props[\\\\\"bye\\\\\"]> = input<Props[\\\\\"bye\\\\\"]>();\n  hi: InputSignal<Props[\\\\\"hi\\\\\"]> = input<Props[\\\\\"hi\\\\\"]>();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n\n  ngOnInit() {\n    this.name.set(\\\\\"PatrickJS onInit\\\\\" + this.hi());\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name.set(\\\\\"PatrickJS onMount\\\\\" + this.bye());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import {\n  Component,\n  output,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOutputsComponent implements AfterViewInit {\n  message: InputSignal<any> = input<any>();\n  messageChange = output();\n  event = output();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.messageChange.emit(this.name());\n      this.event.emit(this.message());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport {\n  Component,\n  output,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOutputsComponent implements AfterViewInit {\n  message: InputSignal<any> = input<any>();\n  messageChange = output();\n  event = output();\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.messageChange.emit(this.name());\n      this.event.emit(this.message());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input\n    autocapitalize=\\\\\"on\\\\\"\n    autocomplete=\\\\\"on\\\\\"\n    [attr.spellcheck]=\\\\\"true\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport { MyBooleanAttributeComponent } from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyBooleanAttributeComponent],\n  template: \\`<div>\n    @if(children()){\n    <ng-content></ng-content>\n    {{type()}} }\n    <my-boolean-attribute-component\n      [toggle]=\\\\\"true\\\\\"\n    ></my-boolean-attribute-component>\n    <my-boolean-attribute-component\n      [toggle]=\\\\\"true\\\\\"\n    ></my-boolean-attribute-component>\n    <my-boolean-attribute-component\n      [list]=\\\\\"null\\\\\"\n    ></my-boolean-attribute-component>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBooleanAttribute {\n  type: InputSignal<Props[\\\\\"type\\\\\"]> = input<Props[\\\\\"type\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { MyBasicOnMountUpdateComponent } from \\\\\"./basic-onMount-update.raw\\\\\";\nimport { MyBasicOutputsComponent } from \\\\\"./basic-outputs.raw\\\\\";\nimport { MyBasicComponent } from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  standalone: true,\n  imports: [\n    CommonModule,\n    MyBasicComponent,\n    MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent,\n  ],\n  template: \\`<div>\n    <my-basic-component [id]=\\\\\"dev()\\\\\"></my-basic-component>\n    <div>\n      <my-basic-on-mount-update-component\n        [hi]=\\\\\"name()\\\\\"\n        [bye]=\\\\\"dev()\\\\\"\n      ></my-basic-on-mount-update-component>\n      <my-basic-outputs-component\n        message=\\\\\"Test\\\\\"\n        (messageChange)=\\\\\"name.set($event)\\\\\"\n        (event)=\\\\\"log('Test')\\\\\"\n      ></my-basic-outputs-component>\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicChildComponent {\n  name = signal(\\\\\"Steve\\\\\");\n  dev = signal(\\\\\"PatrickJS\\\\\");\n\n  log(message: string) {\n    console.log(message);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicFor 1`] = `\n\"import { Component, effect, signal, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (person of names();track i;let i = $index) {\n    <ng-container\n      ><input\n        [attr.value]=\\\\\"name()\\\\\"\n        (change)=\\\\\"{\n          name.set($event.target.value + ' and ' + person);\n        }\\\\\"\n      />\n\n      Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n      Liquid!\n    </ng-container>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForComponent implements AfterViewInit {\n  name = signal(\\\\\"PatrickJS\\\\\");\n  names = signal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicRef 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(showInput()){\n    <ng-container\n      ><input\n        class=\\\\\"input\\\\\"\n        #inputRef\n        [attr.value]=\\\\\"name()\\\\\"\n        (blur)=\\\\\"onBlur()\\\\\"\n        (change)=\\\\\"name.set($event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select></ng-container\n    >\n    } Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  showInput: InputSignal<Props[\\\\\"showInput\\\\\"]> = input<Props[\\\\\"showInput\\\\\"]>();\n\n  inputRef = viewChild<ElementRef>(\\\\\"inputRef\\\\\");\n  inputNoArgRef = viewChild<ElementRef>(\\\\\"inputNoArgRef\\\\\");\n\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  onBlur() {\n    // Maintain focus\n    this.inputRef()?.nativeElement?.focus();\n  }\n  lowerCaseName() {\n    return this.name().toLowerCase();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicRefAssignmentComponent {\n  handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <h1>Now: {{count()}} , before: {{prevCount}}</h1>\n    <button (click)=\\\\\"count.set(1)\\\\\">Increment</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyPreviousComponent {\n  count = signal(0);\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.count();\n          // ---\n\n          this._prevCount = this.count();\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Button 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1>{{text()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<ButtonProps[\\\\\"link\\\\\"]> = input<ButtonProps[\\\\\"link\\\\\"]>();\n  attributes: InputSignal<ButtonProps[\\\\\"attributes\\\\\"]> =\n    input<ButtonProps[\\\\\"attributes\\\\\"]>();\n  openLinkInNewTab: InputSignal<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]> =\n    input<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]>();\n  text: InputSignal<ButtonProps[\\\\\"text\\\\\"]> = input<ButtonProps[\\\\\"text\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Columns 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"builder-columns div\\\\\">\n    @for (column of columns();track index;let index = $index) {\n    <div class=\\\\\"builder-column div-2\\\\\">{{column.content}} {{index}}</div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n\\`,\n})\nexport class Column {\n  columns: InputSignal<ColumnProps[\\\\\"columns\\\\\"]> =\n    input<ColumnProps[\\\\\"columns\\\\\"]>();\n  space: InputSignal<ColumnProps[\\\\\"space\\\\\"]> = input<ColumnProps[\\\\\"space\\\\\"]>();\n\n  getColumns() {\n    return this.columns() || [];\n  }\n  getGutterSize() {\n    return typeof this.space() === \\\\\"number\\\\\" ? this.space() || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content select=\\\\\"[testing]\\\\\"> </ng-content>\n    <div><hr /></div>\n    <div><ng-content> </ng-content></div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ContentSlotCode {\n  slotTesting: InputSignal<Props[\\\\\"slotTesting\\\\\"]> =\n    input<Props[\\\\\"slotTesting\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(slotReference()){\n    <div\n      [attr.name]=\\\\\"slotContent() ? 'name1' : 'name2'\\\\\"\n      [attr.title]=\\\\\"slotContent() ? 'title1' : 'title2'\\\\\"\n      #elRef0\n      (click)=\\\\\"show()\\\\\"\n      [class]=\\\\\"cls()\\\\\"\n    >\n      @if(showContent() && slotContent()){\n      <ng-content select=\\\\\"[content]\\\\\"> {{content()}} </ng-content>\n      }\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ContentSlotJsxCode implements OnDestroy {\n  slotContent: InputSignal<Props[\\\\\"slotContent\\\\\"]> = input<Props[\\\\\"slotContent\\\\\"]>(\n    defaultProps[\\\\\"slotContent\\\\\"]\n  );\n  slotReference: InputSignal<Props[\\\\\"slotReference\\\\\"]> = input<\n    Props[\\\\\"slotReference\\\\\"]\n  >(defaultProps[\\\\\"slotReference\\\\\"]);\n  attributes: InputSignal<Props[\\\\\"attributes\\\\\"]> = input<Props[\\\\\"attributes\\\\\"]>();\n  content: InputSignal<Props[\\\\\"content\\\\\"]> = input<Props[\\\\\"content\\\\\"]>(\n    defaultProps[\\\\\"content\\\\\"]\n  );\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  name = signal(\\\\\"king\\\\\");\n  showContent = signal(false);\n  _listenerFns = new Map();\n\n  cls = computed(() => {\n    return this.slotContent() && this.children()\n      ? \\`\\${this.name()}-content\\`\n      : \\\\\"\\\\\";\n  });\n  show() {\n    this.slotContent() ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > CustomCode 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    #elem\n    [class]=\\\\\"'builder-custom-code' + (replaceNodes() ? ' replace-nodes' : '')\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class CustomCode implements AfterViewInit {\n  replaceNodes: InputSignal<CustomCodeProps[\\\\\"replaceNodes\\\\\"]> =\n    input<CustomCodeProps[\\\\\"replaceNodes\\\\\"]>();\n  code: InputSignal<CustomCodeProps[\\\\\"code\\\\\"]> = input<CustomCodeProps[\\\\\"code\\\\\"]>();\n\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  scriptsInserted = signal([]);\n  scriptsRun = signal([]);\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem()?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem()?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Embed 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    #elem\n    [class]=\\\\\"'builder-custom-code' + (replaceNodes() ? ' replace-nodes' : '')\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class CustomCode implements AfterViewInit {\n  replaceNodes: InputSignal<CustomCodeProps[\\\\\"replaceNodes\\\\\"]> =\n    input<CustomCodeProps[\\\\\"replaceNodes\\\\\"]>();\n  code: InputSignal<CustomCodeProps[\\\\\"code\\\\\"]> = input<CustomCodeProps[\\\\\"code\\\\\"]>();\n\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  scriptsInserted = signal([]);\n  scriptsRun = signal([]);\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem()?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem()?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Form 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, BuilderBlockComponent, BuilderBlocks],\n  template: \\`<form\n    [attr.validate]=\\\\\"validate()\\\\\"\n    #formRef\n    [attr.action]=\\\\\"!sendWithJs() && action()\\\\\"\n    [attr.method]=\\\\\"method()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    (submit)=\\\\\"onSubmit($event)\\\\\"\n    #elRef0\n  >\n    @if(builderBlock() && builderBlock().children){ @for (block of\n    builderBlock()?.children;track trackByBlock0(index, block);let index =\n    $index) {\n    <builder-block-component\n      [block]=\\\\\"block\\\\\"\n      [index]=\\\\\"index\\\\\"\n    ></builder-block-component>\n    } } @if(submissionState() === 'error'){\n    <builder-blocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      [blocks]=\\\\\"errorMessage()!\\\\\"\n    ></builder-blocks>\n    } @if(submissionState() === 'sending'){\n    <builder-blocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      [blocks]=\\\\\"sendingMessage()!\\\\\"\n    ></builder-blocks>\n    } @if(submissionState() === 'error' && responseData()){\n    <pre class=\\\\\"builder-form-error-text pre\\\\\">\n        {{JSON.stringify(responseData(), null, 2)}}</pre\n    >\n    } @if(submissionState() === 'success'){\n    <builder-blocks\n      dataPath=\\\\\"successMessage\\\\\"\n      [blocks]=\\\\\"successMessage()!\\\\\"\n    ></builder-blocks>\n    }\n  </form> \\`,\n  styles: \\`:host { display: contents; }\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n\\`,\n})\nexport class FormComponent implements OnDestroy {\n  previewState: InputSignal<FormProps[\\\\\"previewState\\\\\"]> =\n    input<FormProps[\\\\\"previewState\\\\\"]>();\n  sendWithJs: InputSignal<FormProps[\\\\\"sendWithJs\\\\\"]> =\n    input<FormProps[\\\\\"sendWithJs\\\\\"]>();\n  sendSubmissionsTo: InputSignal<FormProps[\\\\\"sendSubmissionsTo\\\\\"]> =\n    input<FormProps[\\\\\"sendSubmissionsTo\\\\\"]>();\n  action: InputSignal<FormProps[\\\\\"action\\\\\"]> = input<FormProps[\\\\\"action\\\\\"]>();\n  customHeaders: InputSignal<FormProps[\\\\\"customHeaders\\\\\"]> =\n    input<FormProps[\\\\\"customHeaders\\\\\"]>();\n  contentType: InputSignal<FormProps[\\\\\"contentType\\\\\"]> =\n    input<FormProps[\\\\\"contentType\\\\\"]>();\n  sendSubmissionsToEmail: InputSignal<FormProps[\\\\\"sendSubmissionsToEmail\\\\\"]> =\n    input<FormProps[\\\\\"sendSubmissionsToEmail\\\\\"]>();\n  name: InputSignal<FormProps[\\\\\"name\\\\\"]> = input<FormProps[\\\\\"name\\\\\"]>();\n  method: InputSignal<FormProps[\\\\\"method\\\\\"]> = input<FormProps[\\\\\"method\\\\\"]>();\n  errorMessagePath: InputSignal<FormProps[\\\\\"errorMessagePath\\\\\"]> =\n    input<FormProps[\\\\\"errorMessagePath\\\\\"]>();\n  resetFormOnSubmit: InputSignal<FormProps[\\\\\"resetFormOnSubmit\\\\\"]> =\n    input<FormProps[\\\\\"resetFormOnSubmit\\\\\"]>();\n  successUrl: InputSignal<FormProps[\\\\\"successUrl\\\\\"]> =\n    input<FormProps[\\\\\"successUrl\\\\\"]>();\n  validate: InputSignal<FormProps[\\\\\"validate\\\\\"]> = input<FormProps[\\\\\"validate\\\\\"]>();\n  attributes: InputSignal<FormProps[\\\\\"attributes\\\\\"]> =\n    input<FormProps[\\\\\"attributes\\\\\"]>();\n  builderBlock: InputSignal<FormProps[\\\\\"builderBlock\\\\\"]> =\n    input<FormProps[\\\\\"builderBlock\\\\\"]>();\n  errorMessage: InputSignal<FormProps[\\\\\"errorMessage\\\\\"]> =\n    input<FormProps[\\\\\"errorMessage\\\\\"]>();\n  sendingMessage: InputSignal<FormProps[\\\\\"sendingMessage\\\\\"]> =\n    input<FormProps[\\\\\"sendingMessage\\\\\"]>();\n  successMessage: InputSignal<FormProps[\\\\\"successMessage\\\\\"]> =\n    input<FormProps[\\\\\"successMessage\\\\\"]>();\n\n  formRef = viewChild<ElementRef>(\\\\\"formRef\\\\\");\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  formState = signal(\\\\\"unsubmitted\\\\\");\n  responseData = signal(null);\n  formErrorMessage = signal(\\\\\"\\\\\");\n  _listenerFns = new Map();\n\n  submissionState = computed(() => {\n    return (Builder.isEditing && this.previewState()) || this.formState();\n  });\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs =\n      this.sendWithJs() || this.sendSubmissionsTo() === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo() === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action() || this.sendSubmissionsTo() === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders() || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType();\n\n      if (this.sendSubmissionsTo() === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action()?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef()?.nativeElement) {\n        this.formRef()?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState.set(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail() || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name() || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo() === \\\\\"email\\\\\" ? formUrl : this.action()!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method() || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath()) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath());\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage.set(message);\n            }\n          }\n\n          this.responseData.set(body);\n          this.formState.set(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef()?.nativeElement) {\n              this.formRef()?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit() !== false) {\n                this.formRef()?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl()) {\n              if (this.formRef()?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl(),\n                  },\n                });\n                this.formRef()?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl();\n                }\n              } else {\n                location.href = this.successUrl();\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef()?.nativeElement) {\n            this.formRef()?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData.set(err);\n          this.formState.set(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index: number, block: any) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Image 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <picture #pictureRef\n      >@if(!useLazyLoading() || load()){\n      <img\n        [attr.alt]=\\\\\"altText()\\\\\"\n        [attr.aria-role]=\\\\\"altText() ? 'presentation' : undefined\\\\\"\n        [class]=\\\\\"'builder-image' + (_class() ? ' ' + _class() : '') + ' img'\\\\\"\n        [attr.src]=\\\\\"image()\\\\\"\n        (load)=\\\\\"setLoaded()\\\\\"\n        [attr.srcset]=\\\\\"srcset()\\\\\"\n        [attr.sizes]=\\\\\"sizes()\\\\\" />\n      }\n      <source [attr.srcset]=\\\\\"srcset()\\\\\"\n    /></picture>\n    <ng-content></ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n\\`,\n})\nexport class Image implements AfterViewInit, OnDestroy {\n  lazy: InputSignal<ImageProps[\\\\\"lazy\\\\\"]> = input<ImageProps[\\\\\"lazy\\\\\"]>();\n  altText: InputSignal<ImageProps[\\\\\"altText\\\\\"]> = input<ImageProps[\\\\\"altText\\\\\"]>();\n  _class: InputSignal<ImageProps[\\\\\"_class\\\\\"]> = input<ImageProps[\\\\\"_class\\\\\"]>();\n  image: InputSignal<ImageProps[\\\\\"image\\\\\"]> = input<ImageProps[\\\\\"image\\\\\"]>();\n  srcset: InputSignal<ImageProps[\\\\\"srcset\\\\\"]> = input<ImageProps[\\\\\"srcset\\\\\"]>();\n  sizes: InputSignal<ImageProps[\\\\\"sizes\\\\\"]> = input<ImageProps[\\\\\"sizes\\\\\"]>();\n\n  pictureRef = viewChild<ElementRef>(\\\\\"pictureRef\\\\\");\n\n  scrollListener = signal(null);\n  imageLoaded = signal(false);\n  load = signal(false);\n\n  setLoaded() {\n    this.imageLoaded.set(true);\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy() && this.isBrowser();\n  }\n  isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef()?.nativeElement) {\n            const rect =\n              this.pictureRef()?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load.set(true);\n              this.scrollListener.set(null);\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener.set(listener);\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener()) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Image State 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (item of images();track itemIndex;let itemIndex = $index) {\n    <ng-container><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ImgStateComponent {\n  canShow = signal(true);\n  images = signal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Img 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<img\n    [ngStyle]=\\\\\"{\n          objectFit: backgroundSize() || 'cover',\n          objectPosition: backgroundPosition() || 'center'\n        }\\\\\"\n    #elRef0\n    [attr.alt]=\\\\\"altText()\\\\\"\n    [attr.src]=\\\\\"imgSrc()\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ImgComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  backgroundSize: InputSignal<ImgProps[\\\\\"backgroundSize\\\\\"]> =\n    input<ImgProps[\\\\\"backgroundSize\\\\\"]>();\n  backgroundPosition: InputSignal<ImgProps[\\\\\"backgroundPosition\\\\\"]> =\n    input<ImgProps[\\\\\"backgroundPosition\\\\\"]>();\n  attributes: InputSignal<ImgProps[\\\\\"attributes\\\\\"]> =\n    input<ImgProps[\\\\\"attributes\\\\\"]>();\n  imgSrc: InputSignal<ImgProps[\\\\\"imgSrc\\\\\"]> = input<ImgProps[\\\\\"imgSrc\\\\\"]>();\n  altText: InputSignal<ImgProps[\\\\\"altText\\\\\"]> = input<ImgProps[\\\\\"altText\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Input 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input\n    #elRef0\n    [attr.placeholder]=\\\\\"placeholder()\\\\\"\n    [attr.type]=\\\\\"type()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n    [attr.required]=\\\\\"required()\\\\\"\n    (change)=\\\\\"change()?.($event.target.value)\\\\\"\n  /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class FormInputComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  attributes: InputSignal<FormInputProps[\\\\\"attributes\\\\\"]> =\n    input<FormInputProps[\\\\\"attributes\\\\\"]>();\n  defaultValue: InputSignal<FormInputProps[\\\\\"defaultValue\\\\\"]> =\n    input<FormInputProps[\\\\\"defaultValue\\\\\"]>();\n  placeholder: InputSignal<FormInputProps[\\\\\"placeholder\\\\\"]> =\n    input<FormInputProps[\\\\\"placeholder\\\\\"]>();\n  type: InputSignal<FormInputProps[\\\\\"type\\\\\"]> = input<FormInputProps[\\\\\"type\\\\\"]>();\n  name: InputSignal<FormInputProps[\\\\\"name\\\\\"]> = input<FormInputProps[\\\\\"name\\\\\"]>();\n  value: InputSignal<FormInputProps[\\\\\"value\\\\\"]> =\n    input<FormInputProps[\\\\\"value\\\\\"]>();\n  required: InputSignal<FormInputProps[\\\\\"required\\\\\"]> =\n    input<FormInputProps[\\\\\"required\\\\\"]>();\n  change = output<\n    Parameters<Required<FormInputProps>[\\\\\"onChange\\\\\"]>[number] | void\n  >();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > InputParent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FormInputComponent } from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  standalone: true,\n  imports: [CommonModule, FormInputComponent],\n  template: \\`<form-input-component\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    (change)=\\\\\"handleChange($event)\\\\\"\n  ></form-input-component> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > NestedStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [attr.id]=\\\\\"_id()\\\\\">\n    Test\n\n    <p [attr.id]=\\\\\"_messageId()\\\\\">Message</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedStore {\n  _id = signal<MyStore[\\\\\"_id\\\\\"]>(\\\\\"abc\\\\\");\n  _messageId = signal<MyStore[\\\\\"_messageId\\\\\"]>(this._id() + \\\\\"-message\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > RawText 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<span\n    [class]=\\\\\"attributes()?.class || attributes()?.className\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text() || '')\\\\\"\n  ></span> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RawText {\n  attributes: InputSignal<RawTextProps[\\\\\"attributes\\\\\"]> =\n    input<RawTextProps[\\\\\"attributes\\\\\"]>();\n  text: InputSignal<RawTextProps[\\\\\"text\\\\\"]> = input<RawTextProps[\\\\\"text\\\\\"]>();\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Section 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section\n    #elRef0\n    [ngStyle]=\\\\\"maxWidth() && typeof maxWidth() === 'number' ? {\n          maxWidth: maxWidth()\n        } : undefined\\\\\"\n  >\n    <ng-content></ng-content>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SectionComponent implements OnDestroy {\n  attributes: InputSignal<SectionProps[\\\\\"attributes\\\\\"]> =\n    input<SectionProps[\\\\\"attributes\\\\\"]>();\n  maxWidth: InputSignal<SectionProps[\\\\\"maxWidth\\\\\"]> =\n    input<SectionProps[\\\\\"maxWidth\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Section 2`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(max()){ @for (item of items();track i;let i = $index) {\n    <section\n      #elRef0\n      [ngStyle]=\\\\\"{\n          maxWidth: item + max()\n        }\\\\\"\n    >\n      <ng-content></ng-content>\n    </section>\n    } } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SectionStateComponent implements OnDestroy {\n  attributes: InputSignal<SectionProps[\\\\\"attributes\\\\\"]> =\n    input<SectionProps[\\\\\"attributes\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  max = signal(42);\n  items = signal([42]);\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Select 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<select\n    #elRef0\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n  >\n    @for (option of options();track index;let index = $index) {\n    <option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n      {{option.name || option.value}}\n    </option>\n    }\n  </select> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SelectComponent implements OnDestroy {\n  protected readonly Builder = Builder;\n\n  attributes: InputSignal<FormSelectProps[\\\\\"attributes\\\\\"]> =\n    input<FormSelectProps[\\\\\"attributes\\\\\"]>();\n  value: InputSignal<FormSelectProps[\\\\\"value\\\\\"]> =\n    input<FormSelectProps[\\\\\"value\\\\\"]>();\n  defaultValue: InputSignal<FormSelectProps[\\\\\"defaultValue\\\\\"]> =\n    input<FormSelectProps[\\\\\"defaultValue\\\\\"]>();\n  name: InputSignal<FormSelectProps[\\\\\"name\\\\\"]> = input<FormSelectProps[\\\\\"name\\\\\"]>();\n  options: InputSignal<FormSelectProps[\\\\\"options\\\\\"]> =\n    input<FormSelectProps[\\\\\"options\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content>\n      <div class=\\\\\"default-slot\\\\\">Default content</div>\n    </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n  template: \\`<div>\n    <content-slot-code><ng-content> </ng-content></content-slot-code>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n  template: \\`<div>\n    <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content select=\\\\\"[my-awesome-slot]\\\\\"> </ng-content>\n    <ng-content select=\\\\\"[top]\\\\\"> </ng-content>\n    <ng-content select=\\\\\"[left]\\\\\"> Default left </ng-content>\n    <ng-content> Default Child </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SlotCode {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Stamped.io 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [attr.data-user]=\\\\\"name()\\\\\">\n    <button (click)=\\\\\"showReviewPrompt.set(true)\\\\\">Write a review</button>\n    @if(showReviewPrompt() || 'asdf'){\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button\\\\\"\n      (click)=\\\\\"{\n          ev.preventDefault();\n          showReviewPrompt.set(false);\n        }\\\\\"\n    >\n      Submit\n    </button>\n    } @for (review of reviews();track trackByReview0(index, review);let index =\n    $index) {\n    <div $name=\\\\\"Review\\\\\" class=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n      <div [class]=\\\\\"showReviewPrompt() ? 'bg-primary' : 'bg-secondary'\\\\\">\n        <div>N: {{index}}</div>\n        <div>{{review.author}}</div>\n        <div>{{review.reviewMessage}}</div>\n      </div>\n    </div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n\\`,\n})\nexport class SmileReviews implements AfterViewInit {\n  apiKey: InputSignal<SmileReviewsProps[\\\\\"apiKey\\\\\"]> =\n    input<SmileReviewsProps[\\\\\"apiKey\\\\\"]>();\n  productId: InputSignal<SmileReviewsProps[\\\\\"productId\\\\\"]> =\n    input<SmileReviewsProps[\\\\\"productId\\\\\"]>();\n\n  reviews = signal([]);\n  name = signal(\\\\\"test\\\\\");\n  showReviewPrompt = signal(false);\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index: number, review: any) {\n    return review.id;\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey() || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId() || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews.set(data.data);\n        });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > StoreComment 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{foo()}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class StringLiteralStore {\n  foo = signal(true);\n\n  bar() {}\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{foo(errors())}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  errors = signal({});\n\n  foo(errors) {\n    return errors;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container>{{bar()}}</ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  foo = signal(false);\n\n  bar() {\n    return this.foo();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Submit 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"submit\\\\\" #elRef0>{{text()}}</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SubmitButton implements OnDestroy {\n  attributes: InputSignal<ButtonProps[\\\\\"attributes\\\\\"]> =\n    input<ButtonProps[\\\\\"attributes\\\\\"]>();\n  text: InputSignal<ButtonProps[\\\\\"text\\\\\"]> = input<ButtonProps[\\\\\"text\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Text 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n    [attr.data-name]=\\\\\"{\n          test: name() || 'any name'\n        }\\\\\"\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text() || content() || name() || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Text {\n  text: InputSignal<TextProps[\\\\\"text\\\\\"]> = input<TextProps[\\\\\"text\\\\\"]>();\n  content: InputSignal<TextProps[\\\\\"content\\\\\"]> = input<TextProps[\\\\\"content\\\\\"]>();\n\n  name = signal(\\\\\"Decadef20\\\\\");\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Textarea 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<textarea\n    #elRef0\n    [attr.placeholder]=\\\\\"placeholder()\\\\\"\n    [attr.name]=\\\\\"name()\\\\\"\n    [attr.value]=\\\\\"value()\\\\\"\n    [attr.defaultValue]=\\\\\"defaultValue()\\\\\"\n  ></textarea> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Textarea implements OnDestroy {\n  attributes: InputSignal<TextareaProps[\\\\\"attributes\\\\\"]> =\n    input<TextareaProps[\\\\\"attributes\\\\\"]>();\n  placeholder: InputSignal<TextareaProps[\\\\\"placeholder\\\\\"]> =\n    input<TextareaProps[\\\\\"placeholder\\\\\"]>();\n  name: InputSignal<TextareaProps[\\\\\"name\\\\\"]> = input<TextareaProps[\\\\\"name\\\\\"]>();\n  value: InputSignal<TextareaProps[\\\\\"value\\\\\"]> = input<TextareaProps[\\\\\"value\\\\\"]>();\n  defaultValue: InputSignal<TextareaProps[\\\\\"defaultValue\\\\\"]> =\n    input<TextareaProps[\\\\\"defaultValue\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { Component, output, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Test</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class UseValueAndFnFromStore {\n  change = output<Parameters<Required<MyProps>[\\\\\"onChange\\\\\"]>[number] | void>();\n\n  _id = signal<MyStore[\\\\\"_id\\\\\"]>(\\\\\"abc\\\\\");\n  _active = signal<MyStore[\\\\\"_active\\\\\"]>(false);\n\n  _do(id?: string) {\n    this._active.set(!!id);\n\n    if (this.change) {\n      this.change.emit(this._active());\n    }\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          if (this._do.bind(this)) {\n            this._do(this._id());\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > Video 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  computed,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<video\n    preload=\\\\\"none\\\\\"\n    #elRef0\n    [ngStyle]=\\\\\"objSpread_style_hq5qrw()\\\\\"\n    [attr.poster]=\\\\\"posterImage()\\\\\"\n    [attr.autoplay]=\\\\\"autoPlay()\\\\\"\n    [attr.muted]=\\\\\"muted()\\\\\"\n    [attr.controls]=\\\\\"controls()\\\\\"\n    [attr.loop]=\\\\\"loop()\\\\\"\n  ></video> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Video implements OnDestroy {\n  attributes: InputSignal<VideoProps[\\\\\"attributes\\\\\"]> =\n    input<VideoProps[\\\\\"attributes\\\\\"]>();\n  fit: InputSignal<VideoProps[\\\\\"fit\\\\\"]> = input<VideoProps[\\\\\"fit\\\\\"]>();\n  position: InputSignal<VideoProps[\\\\\"position\\\\\"]> =\n    input<VideoProps[\\\\\"position\\\\\"]>();\n  video: InputSignal<VideoProps[\\\\\"video\\\\\"]> = input<VideoProps[\\\\\"video\\\\\"]>();\n  posterImage: InputSignal<VideoProps[\\\\\"posterImage\\\\\"]> =\n    input<VideoProps[\\\\\"posterImage\\\\\"]>();\n  autoPlay: InputSignal<VideoProps[\\\\\"autoPlay\\\\\"]> =\n    input<VideoProps[\\\\\"autoPlay\\\\\"]>();\n  muted: InputSignal<VideoProps[\\\\\"muted\\\\\"]> = input<VideoProps[\\\\\"muted\\\\\"]>();\n  controls: InputSignal<VideoProps[\\\\\"controls\\\\\"]> =\n    input<VideoProps[\\\\\"controls\\\\\"]>();\n  loop: InputSignal<VideoProps[\\\\\"loop\\\\\"]> = input<VideoProps[\\\\\"loop\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  objSpread_style_hq5qrw = computed(() => {\n    return {\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes()?.style,\n      objectFit: this.fit(),\n      objectPosition: this.position(),\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    };\n  });\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > allSpread 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div #elRef0>\n    Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n    frameworks!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent implements OnDestroy {\n  attributes: InputSignal<any> = input<any>();\n  accessHere: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  attrsUsingUseState = signal({\n    hello: \\\\\"world\\\\\",\n  });\n  properties = signal({\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  });\n  specifics = signal({\n    someSpecificState: \\\\\"specific\\\\\",\n  });\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(\n            this.elRef0()?.nativeElement,\n            this.attrsUsingUseState()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.properties());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, {\n            someOtherAttrs: this.accessHere(),\n            someStateAttrs: this.specifics(),\n          });\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0()?.nativeElement,\n        this.attrsUsingUseState()\n      );\n      this.setAttributes(this.elRef0()?.nativeElement, this.properties());\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef0()?.nativeElement, {\n        someOtherAttrs: this.accessHere(),\n        someStateAttrs: this.specifics(),\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"steve\\\\\");\n\n  setName(value) {\n    this.name.set(value);\n  }\n  updateNameWithArrowFn(value) {\n    this.name.set(value);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (option of ['a', 'b', 'c'];track trackByOption0(i, option);let i =\n    $index) {\n    <ng-container\n      ><div>{{option}}</div></ng-container\n    >\n    } @for (option of ['a', 'b', 'c'];track trackByOption1(i, option);let i =\n    $index) {\n    <ng-container\n      ><div>{{option}}</div></ng-container\n    >\n    }\n\n    <select>\n      @for (option of ['d', 'e', 'f'];track trackByOption2(i, option);let i =\n      $index) {\n      <option [attr.value]=\\\\\"option\\\\\">{{option}}</option>\n      }\n    </select>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicForFragment {\n  id = signal(\\\\\"xyz\\\\\");\n\n  trackByOption0(_: number, option: any) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_: number, option: any) {\n    return \\`\\${this.id()}-\\${option}\\`;\n  }\n  trackByOption2(_: number, option: any) {\n    return \\`\\${this.id()}-\\${option}\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #iconTemplate></ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicForNoTagRefComponent {\n  myContent = signal<any[]>([]);\n  tagnamegetterTemplateRef = viewChild<TemplateRef<any>>(\n    \\\\\"tagnamegetterTemplate\\\\\"\n  );\n  tagTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagTemplate\\\\\");\n  tagnameTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagnameTemplate\\\\\");\n  iconTemplateRef = viewChild<TemplateRef<any>>(\\\\\"iconTemplate\\\\\");\n\n  actions: InputSignal<any> = input<any>();\n\n  name = signal(\\\\\"VincentW\\\\\");\n  TagName = signal(\\\\\"div\\\\\");\n  tag = signal(\\\\\"span\\\\\");\n\n  TagNameGetter = computed(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.tagnamegetterTemplateRef())\n        .rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagTemplateRef()).rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagnameTemplateRef())\n        .rootNodes,\n      this.viewContainer.createEmbeddedView(this.iconTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { Component, viewChild, ElementRef, input, effect, signal, InputSignal } from '@angular/core';\n      import { CommonModule } from '@angular/common';\n\n\n\n      export interface Props {\nshowInput: boolean;\ninputRef: HTMLInputElement;\n}\n\n\n\n\n\n\n\n\n      @Component({\n        selector: 'my-basic-forward-ref-component',standalone: true,imports: [CommonModule],template: \\`<div\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef()\n            [attr.value]=\\\\\"name()\\\\\"\n            (change)=\\\\\"name.set($event.target.value)\\\\\"\n        /></div>\n\\`,styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`\n      })\n      export class MyBasicForwardRefComponent  {\n\n\n\n        inputRef: InputSignal<Props[\\\\\"inputRef\\\\\"]> = input<Props[\\\\\"inputRef\\\\\"]>()\n\n\n        props.inputRef = viewChild<ElementRef>(\\\\\"props.inputRef\\\\\")\n\n\n         name= signal('PatrickJS')\n\n\n\n\n        constructor() {\n        }\n\n\n\n\n\n\n\n\n\n\n\n      }\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          import { Component, viewChild, ElementRef, input, effect, signal, InputSignal } from '@angular/core';\n      import { CommonModule } from '@angular/common';\n\n\n\n      export interface Props {\nshowInput: boolean;\ninputRef: HTMLInputElement;\n}\n\n\n\n\n\n\n\n\n      @Component({\n        selector: 'my-basic-forward-ref-component',standalone: true,imports: [CommonModule],template: \\`<div\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef()\n            [attr.value]=\\\\\"name()\\\\\"\n            (change)=\\\\\"name.set($event.target.value)\\\\\"\n        /></div>\n\\`,styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`\n      })\n      export class MyBasicForwardRefComponent  {\n\n\n\n        inputRef: InputSignal<Props[\\\\\"inputRef\\\\\"]> = input<Props[\\\\\"inputRef\\\\\"]>()\n\n\n        props.inputRef = viewChild<ElementRef>(\\\\\"props.inputRef\\\\\")\n\n\n         name= signal('PatrickJS')\n\n\n\n\n        constructor() {\n        }\n\n\n\n\n\n\n\n\n\n\n\n      }\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello! {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicOnUpdateReturnComponent {\n  name = signal(\\\\\"PatrickJS\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.name();\n          // ---\n\n          const controller = new AbortController();\n          const signal = controller.signal;\n          fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n            signal,\n          })\n            .then((response) => response.json())\n            .then((data) => {\n              this.name.set(data.name);\n            });\n          return () => {\n            if (!signal.aborted) {\n              controller.abort();\n            }\n          };\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicRefAttributePassingComponent implements AfterViewInit {\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n  _root = viewChild<ElementRef>(\\\\\"_root\\\\\");\n\n  constructor() {}\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const element: HTMLElement | null = this._root()?.nativeElement;\n      this.enableAttributePassing(\n        element,\n        \\\\\"basic-ref-attribute-passing-component\\\\\"\n      );\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class BasicRefAttributePassingCustomRefComponent\n  implements AfterViewInit\n{\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n\n  constructor() {}\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const element: HTMLElement | null = this.buttonRef()?.nativeElement;\n      this.enableAttributePassing(\n        element,\n        \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport {\n  Component,\n  input,\n  effect,\n  ChangeDetectionStrategy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{count()}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  count: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { MyComp } from \\\\\"./my-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComp],\n  template: \\`<div>\n    <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </my-comp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > class + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > className + css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > className 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div [class]=\\\\\"bindings()\\\\\">With binding</div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ClassNameCode {\n  bindings = signal(\\\\\"a binding\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > classState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [class]=\\\\\"classState() + ' div'\\\\\" [ngStyle]=\\\\\"styleState()\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  classState = signal(\\\\\"testClassName\\\\\");\n  styleState = signal({\n    color: \\\\\"red\\\\\",\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [class]=\\\\\"className()\\\\\">\n    <ng-content></ng-content> {{type()}} Hello! I can run in React, Vue, Solid,\n    or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  className: InputSignal<Props[\\\\\"className\\\\\"]> = input<Props[\\\\\"className\\\\\"]>();\n  type: InputSignal<Props[\\\\\"type\\\\\"]> = input<Props[\\\\\"type\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComplexMetaRaw {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    ><ng-container>{{foo.value}}</ng-container></ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithContext {\n  content: InputSignal<ComponentWithContextProps[\\\\\"content\\\\\"]> =\n    input<ComponentWithContextProps[\\\\\"content\\\\\"]>();\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    ><ng-container>{{foo.value}}</ng-container>\n    <div>other</div></ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithContext {\n  content: InputSignal<ComponentWithContextProps[\\\\\"content\\\\\"]> =\n    input<ComponentWithContextProps[\\\\\"content\\\\\"]>();\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > contentState 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>setting context</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderContent {\n  content: InputSignal<any> = input<any>();\n  customComponents: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<span>My selector shouldn't be my-component!</span> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > defaultProps 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1 (click)=\\\\\"click()\\\\\">{{buttonText()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<ButtonProps[\\\\\"link\\\\\"]> = input<ButtonProps[\\\\\"link\\\\\"]>(\n    defaultProps[\\\\\"link\\\\\"]\n  );\n  attributes: InputSignal<ButtonProps[\\\\\"attributes\\\\\"]> =\n    input<ButtonProps[\\\\\"attributes\\\\\"]>();\n  openLinkInNewTab: InputSignal<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]> = input<\n    ButtonProps[\\\\\"openLinkInNewTab\\\\\"]\n  >(defaultProps[\\\\\"openLinkInNewTab\\\\\"]);\n  text: InputSignal<ButtonProps[\\\\\"text\\\\\"]> = input<ButtonProps[\\\\\"text\\\\\"]>(\n    defaultProps[\\\\\"text\\\\\"]\n  );\n  buttonText: InputSignal<ButtonProps[\\\\\"buttonText\\\\\"]> =\n    input<ButtonProps[\\\\\"buttonText\\\\\"]>();\n  click = output<Parameters<Required<ButtonProps>[\\\\\"onClick\\\\\"]>[number] | void>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  output,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1 (click)=\\\\\"click($event)\\\\\">{{text()}}</button>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<ButtonProps[\\\\\"link\\\\\"]> = input<ButtonProps[\\\\\"link\\\\\"]>(\n    defaultProps[\\\\\"link\\\\\"]\n  );\n  attributes: InputSignal<ButtonProps[\\\\\"attributes\\\\\"]> =\n    input<ButtonProps[\\\\\"attributes\\\\\"]>();\n  openLinkInNewTab: InputSignal<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]> = input<\n    ButtonProps[\\\\\"openLinkInNewTab\\\\\"]\n  >(defaultProps[\\\\\"openLinkInNewTab\\\\\"]);\n  text: InputSignal<ButtonProps[\\\\\"text\\\\\"]> = input<ButtonProps[\\\\\"text\\\\\"]>(\n    defaultProps[\\\\\"text\\\\\"]\n  );\n  click = output<Parameters<Required<ButtonProps>[\\\\\"onClick\\\\\"]>[number] | void>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name() || DEFAULT_VALUES.name}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ComponentWithTypes {\n  protected readonly DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name: InputSignal<Props[\\\\\"name\\\\\"]> = input<Props[\\\\\"name\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content></ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              obj().Component;\n        inputs: dynamicProps_37i2pk();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  myContent = signal<any[]>([]);\n  objTemplateRef = viewChild<TemplateRef<any>>(\\\\\"objTemplate\\\\\");\n\n  attributes: InputSignal<any> = input<any>();\n  something: InputSignal<any> = input<any>();\n\n  obj = signal({\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  });\n\n  dynamicProps_37i2pk = computed(() => {\n    return {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes(),\n      ...this.something(),\n    };\n  });\n  onClick() {\n    console.log(\\\\\"hello\\\\\");\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.objTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-template #componentTemplate> hello </ng-template\n    ><ng-container\n      *ngComponentOutlet=\\\\\"\n              Component();\n        inputs: dynamicProps_37i2pk();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  myContent = signal<any[]>([]);\n  componentTemplateRef = viewChild<TemplateRef<any>>(\\\\\"componentTemplate\\\\\");\n\n  attributes: InputSignal<any> = input<any>();\n  something: InputSignal<any> = input<any>();\n\n  Component = signal(HelloComponent);\n\n  dynamicProps_37i2pk = computed(() => {\n    return {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes(),\n      ...this.something(),\n    };\n  });\n  onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(this.componentTemplateRef())\n        .rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      class=\\\\\"input\\\\\"\n      [attr.value]=\\\\\"name()\\\\\"\n      (input)=\\\\\"name.set($event.target.value)\\\\\"\n      (change)=\\\\\"name.set($event.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .input {\n          color: red;\n        }\n\\`,\n})\nexport class EventInputAndChange {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > eventProps 1`] = `\n\"import { Component, output, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class EventPropsComponent {\n  getVoid = output<\n    Parameters<Required<EventProps>[\\\\\"onGetVoid\\\\\"]>[number] | void\n  >();\n  enter = output<Parameters<Required<EventProps>[\\\\\"onEnter\\\\\"]>[number] | void>();\n  pass = output<Parameters<Required<EventProps>[\\\\\"onPass\\\\\"]>[number] | void>();\n\n  handleClick() {\n    if (this.getVoid) {\n      this.getVoid.emit();\n    }\n\n    if (this.enter) {\n      console.log(this.enter.emit());\n    }\n\n    if (this.pass) {\n      this.pass.emit(\\\\\"test\\\\\");\n    }\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > expressionState 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{refToUse()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  componentRef: InputSignal<any> = input<any>();\n\n  refToUse = signal(undefined);\n\n  constructor() {}\n\n  ngOnInit() {\n    this.refToUse.set(\n      !(this.componentRef() instanceof Function) ? this.componentRef() : null\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button\n    [attr.data-icon]=\\\\\"icon()\\\\\"\n    [attr.data-disabled]=\\\\\"interactiveState()\\\\\"\n    [attr.data-width]=\\\\\"width()\\\\\"\n    [attr.data-size]=\\\\\"size()\\\\\"\n  >\n    {{label()}}\n  </button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class FigmaButton {\n  icon: InputSignal<any> = input<any>();\n  interactiveState: InputSignal<any> = input<any>();\n  width: InputSignal<any> = input<any>();\n  size: InputSignal<any> = input<any>();\n  label: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > functionProps 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<p\n    [attr.f]=\\\\\"() => x\\\\\"\n    [attr.f1]=\\\\\"x => x\\\\\"\n    [attr.f2]=\\\\\"x => {}\\\\\"\n    [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n    [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n    [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n    [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n    [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > getterState 1`] = `\n\"import { Component, input, effect, computed, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <p>{{foo2()}}</p>\n    <p>{{bar()}}</p>\n    <p>{{baz(1)}}</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button {\n  foo: InputSignal<ButtonProps[\\\\\"foo\\\\\"]> = input<ButtonProps[\\\\\"foo\\\\\"]>();\n\n  foo2 = computed(() => {\n    return this.foo() + \\\\\"foo\\\\\";\n  });\n  bar = computed(() => {\n    return \\\\\"bar\\\\\";\n  });\n  baz(i: number) {\n    return i + this.foo2().length;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > import types 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport { RenderBlock } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderBlock],\n  template: \\`<render-block></render-block> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderContent {\n  renderContentProps: InputSignal<RenderContentProps[\\\\\"renderContentProps\\\\\"]> =\n    input<RenderContentProps[\\\\\"renderContentProps\\\\\"]>();\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > importRaw 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Testing which imports get excluded!</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyImportComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > layerName 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section>\n    <div $name=\\\\\"🌟layer-name\\\\\" class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\n        .layer-name {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyLayerNameComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MultipleOnUpdate {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MultipleOnUpdateWithDeps {\n  a = signal(\\\\\"a\\\\\");\n  b = signal(\\\\\"b\\\\\");\n  c = signal(\\\\\"c\\\\\");\n  d = signal(\\\\\"d\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.a();\n          this.b();\n          // ---\n\n          console.log(\\\\\"Runs when a or b changes\\\\\", this.a(), this.b());\n\n          if (this.a() === \\\\\"a\\\\\") {\n            this.a.set(\\\\\"b\\\\\");\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.c();\n          this.d();\n          // ---\n\n          console.log(\\\\\"Runs when c or d changes\\\\\", this.c(), this.d());\n\n          if (this.a() === \\\\\"a\\\\\") {\n            this.a.set(\\\\\"b\\\\\");\n          }\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  effect,\n  signal,\n  OnDestroy,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  attrs = signal({\n    hello: \\\\\"world\\\\\",\n  });\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attrs());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attrs());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input [disabled]=\\\\\"disabled()\\\\\" />\n\n    Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't be\n    visible in the DOM.\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > nestedShow 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ @if(!conditionB()){\n    <div>if condition A and condition B</div>\n    }@else{\n    <div>else-condition-B</div>\n    } }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedShow {\n  conditionA: InputSignal<Props[\\\\\"conditionA\\\\\"]> = input<Props[\\\\\"conditionA\\\\\"]>();\n  conditionB: InputSignal<Props[\\\\\"conditionB\\\\\"]> = input<Props[\\\\\"conditionB\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n\\`,\n})\nexport class NestedStyles {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<section>\n    <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n    <div $name=\\\\\"---\\\\\">Dashes</div>\n    <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n    <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n    <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n    <div $name=\\\\\"0\\\\\" class=\\\\\"css-0\\\\\">Single Number</div>\n    <div $name=\\\\\"123\\\\\" class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div $name=\\\\\"name123\\\\\" class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div $name=\\\\\"456name\\\\\" class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div $name=\\\\\"name-789\\\\\" class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div $name=\\\\\"🚀\\\\\">Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section> \\`,\n  styles: \\`:host { display: contents; }\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n\\`,\n})\nexport class MyNormalizedLayerNamesComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onEvent 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  effect,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Embed implements AfterViewInit {\n  elem = viewChild<ElementRef>(\\\\\"elem\\\\\");\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem()?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { Component, effect, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInit implements AfterViewInit {\n  constructor() {}\n\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onInit 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Default name defined by parent {{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInit {\n  name: InputSignal<Props[\\\\\"name\\\\\"]> = input<Props[\\\\\"name\\\\\"]>();\n\n  name = signal(\\\\\"\\\\\");\n\n  constructor() {}\n\n  ngOnInit() {\n    this.name.set(defaultValues.name || this.name());\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnInitPlain {\n  constructor() {}\n\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onMount 1`] = `\n\"import { Component, effect, OnDestroy, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Comp implements AfterViewInit, OnDestroy {\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { Component, effect, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Comp implements AfterViewInit {\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onUpdate 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdate {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"Runs on every update/rerender\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdateWithDeps {\n  size: InputSignal<Props[\\\\\"size\\\\\"]> = input<Props[\\\\\"size\\\\\"]>();\n\n  a = signal(\\\\\"a\\\\\");\n  b = signal(\\\\\"b\\\\\");\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.a();\n          this.b();\n          this.size();\n          // ---\n\n          console.log(\n            \\\\\"Runs when a, b or size changes\\\\\",\n            this.a(),\n            this.b(),\n            this.size()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      [attr.value]=\\\\\"name()\\\\\"\n      (change)=\\\\\"name.set($event.target.value)\\\\\"\n      (changeOrSomething)=\\\\\"name.set($event.target.value)\\\\\"\n      (fakenative)=\\\\\"name.set($event.target.value)\\\\\"\n      (animationend)=\\\\\"name.set($event.target.value)\\\\\"\n    />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<MyBasicComponentProps[\\\\\"name\\\\\"]> =\n    input<MyBasicComponentProps[\\\\\"name\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > prettierInline 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <span class=\\\\\"dolorum atque aspernatur\\\\\"\n      >Est molestiae sunt facilis qui rem.</span\n    >\n    <div class=\\\\\"voluptatem architecto at\\\\\">\n      Architecto rerum architecto incidunt sint.\n    </div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class PrettierInline {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content></ng-content> {{type()}} Hello! I can run in React, Vue, Solid,\n    or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  type: InputSignal<Props[\\\\\"type\\\\\"]> = input<Props[\\\\\"type\\\\\"]>();\n\n  name = signal(\\\\\"Decadef20\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > propsInterface 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<Person | never[\\\\\"name\\\\\"]> = input<Person | never[\\\\\"name\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > propsType 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    Hello! I can run in React, Vue, Solid, or Liquid! {{name()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  name: InputSignal<Person[\\\\\"name\\\\\"]> = input<Person[\\\\\"name\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class OnUpdate {\n  foo(params) {}\n  bar() {}\n  zoo() {\n    const params = {\n      cb: this.bar.bind(this),\n    };\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.foo({\n            someOption: this.bar.bind(this),\n          });\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > renderBlock 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  ViewContainerRef,\n  TemplateRef,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport { BlockStyles } from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport { RenderRepeatedBlock } from \\\\\"./render-repeated-block.lite\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderRepeatedBlock, RenderBlock, BlockStyles],\n  template: \\`<ng-template #rendercomponenttagTemplate></ng-template\n    >@if(shouldWrap()){ @if(isEmptyHtmlElement(tag())){\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              tag();\n        inputs: dynamicProps_ya7n4j();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } @if(!isEmptyHtmlElement(tag()) && repeatItemData()){ @for (data of\n    repeatItemData();track trackByData0(index, data);let index = $index) {\n    <render-repeated-block\n      [repeatContext]=\\\\\"data.context\\\\\"\n      [block]=\\\\\"data.block\\\\\"\n    ></render-repeated-block>\n    } } @if(!isEmptyHtmlElement(tag()) && !repeatItemData()){\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              tag();\n        inputs: dynamicProps_ya7n4j();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } }@else{\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              renderComponentTag();\n        inputs: dynamicProps_emn6k5();\n              content: myContent();\n              \\\\\"\n    >\n    </ng-container>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderBlock {\n  protected readonly isEmptyHtmlElement = isEmptyHtmlElement;\n\n  myContent = signal<any[]>([]);\n  rendercomponenttagTemplateRef = viewChild<TemplateRef<any>>(\n    \\\\\"rendercomponenttagTemplate\\\\\"\n  );\n  tagTemplateRef = viewChild<TemplateRef<any>>(\\\\\"tagTemplate\\\\\");\n\n  block: InputSignal<RenderBlockProps[\\\\\"block\\\\\"]> =\n    input<RenderBlockProps[\\\\\"block\\\\\"]>();\n  context: InputSignal<RenderBlockProps[\\\\\"context\\\\\"]> =\n    input<RenderBlockProps[\\\\\"context\\\\\"]>();\n\n  component = computed(() => {\n    const componentName = getProcessedBlock({\n      block: this.block(),\n      state: this.context().state,\n      context: this.context().context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context().registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n  tag = computed(() => {\n    return getBlockTag(this.useBlock());\n  });\n  useBlock = computed(() => {\n    return this.repeatItemData()\n      ? this.block()\n      : getProcessedBlock({\n          block: this.block(),\n          state: this.context().state,\n          context: this.context().context,\n          shouldEvaluateBindings: true,\n        });\n  });\n  actions = computed(() => {\n    return getBlockActions({\n      block: this.useBlock(),\n      state: this.context().state,\n      context: this.context().context,\n    });\n  });\n  attributes = computed(() => {\n    const blockProperties = getBlockProperties(this.useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock(),\n              context: this.context(),\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n  shouldWrap = computed(() => {\n    return !this.component()?.noWrap;\n  });\n  renderComponentProps = computed(() => {\n    return {\n      blockChildren: this.useChildren(),\n      componentRef: this.component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap()\n          ? {}\n          : {\n              attributes: { ...this.attributes(), ...this.actions() },\n            }),\n        customBreakpoints: this.childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext(),\n    };\n  });\n  useChildren = computed(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock().children ?? [];\n  });\n  childrenWithoutParentComponent = computed(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component()?.component && !this.repeatItemData();\n    return shouldRenderChildrenOutsideRef ? this.useChildren() : [];\n  });\n  repeatItemData = computed(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block();\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context().state,\n      context: this.context().context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context(),\n        state: {\n          ...this.context().state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n  inheritedTextStyles = computed(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock(),\n      context: this.context(),\n      blockStyles: this.attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n  childrenContext = computed(() => {\n    return {\n      apiKey: this.context().apiKey,\n      state: this.context().state,\n      content: this.context().content,\n      context: this.context().context,\n      registeredComponents: this.context().registeredComponents,\n      inheritedStyles: this.inheritedTextStyles(),\n    };\n  });\n  renderComponentTag = computed(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n  dynamicProps_ya7n4j = computed(() => {\n    return { ...this.attributes(), ...this.actions() };\n  });\n  dynamicProps_emn6k5 = computed(() => {\n    return { ...this.renderComponentProps() };\n  });\n  trackByData0(index: number, data: any) {\n    return index;\n  }\n  trackByChild1(_: number, child: any) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_: number, child: any) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private viewContainer: ViewContainerRef) {}\n\n  _updateView() {\n    this.myContent.set([\n      this.viewContainer.createEmbeddedView(\n        this.rendercomponenttagTemplateRef()\n      ).rootNodes,\n      this.viewContainer.createEmbeddedView(this.tagTemplateRef()).rootNodes,\n    ]);\n  }\n\n  ngAfterContentInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._updateView();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > renderContentExample 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  AfterViewInit,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport { RenderBlocks } from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  standalone: true,\n  imports: [CommonModule, RenderBlocks],\n  template: \\`<div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content().id)\\\\\">\n    <render-blocks [blocks]=\\\\\"content().blocks\\\\\"></render-blocks>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n\\`,\n})\nexport class RenderContent implements AfterViewInit {\n  protected readonly trackClick = trackClick;\n\n  customComponents: InputSignal<Props[\\\\\"customComponents\\\\\"]> =\n    input<Props[\\\\\"customComponents\\\\\"]>();\n  content: InputSignal<Props[\\\\\"content\\\\\"]> = input<Props[\\\\\"content\\\\\"]>();\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.content();\n          // ---\n\n          dispatchNewContentToVisualEditor(this.content());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents());\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ng-container\n    >@if(link()){\n    <a\n      #elRef0\n      [attr.href]=\\\\\"link()\\\\\"\n      [attr.target]=\\\\\"openLinkInNewTab() ? '_blank' : undefined\\\\\"\n      >{{text()}}</a\n    >\n    } @if(!link()){\n    <button type=\\\\\"button\\\\\" #elRef1>{{text()}}</button>\n    }</ng-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class Button implements OnDestroy {\n  link: InputSignal<ButtonProps[\\\\\"link\\\\\"]> = input<ButtonProps[\\\\\"link\\\\\"]>();\n  attributes: InputSignal<ButtonProps[\\\\\"attributes\\\\\"]> =\n    input<ButtonProps[\\\\\"attributes\\\\\"]>();\n  openLinkInNewTab: InputSignal<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]> =\n    input<ButtonProps[\\\\\"openLinkInNewTab\\\\\"]>();\n  text: InputSignal<ButtonProps[\\\\\"text\\\\\"]> = input<ButtonProps[\\\\\"text\\\\\"]>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n  elRef1 = viewChild<ElementRef>(\\\\\"elRef1\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n      effect(\n        () => {\n          this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.attributes());\n      this.setAttributes(this.elRef1()?.nativeElement, this.attributes());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > rootShow 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(foo() === 'bar'){\n    <div>Bar</div>\n    }@else{\n    <div>Foo</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class RenderStyles {\n  foo: InputSignal<RenderStylesProps[\\\\\"foo\\\\\"]> =\n    input<RenderStylesProps[\\\\\"foo\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div [innerHTML]=\\\\\"html()\\\\\"></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  html: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n  template: \\`<div>\n    {{name()}} @if(name() === 'Batman'){\n    <my-component name=\\\\\"Bruce Wayne\\\\\"></my-component>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n  template: \\`<div>\n    {{name()}}\n    <ng-content></ng-content>\n    @if(name() === 'Batman'){\n    <my-component name=\\\\\"Bruce\\\\\"><div>Wayne</div></my-component>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > setState 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SetState {\n  n = signal([\\\\\"123\\\\\"]);\n\n  someFn() {\n    this.n.update((n) => {\n      n[0] = \\\\\"123\\\\\";\n      return n;\n    });\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > showExpressions 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(conditionA()){ Content0 }@else{ ContentA } @if(conditionA()){ ContentA }\n    @if(conditionA()){ }@else{ ContentA } @if(conditionA()){ ContentB }@else{\n    {{undefined}} } @if(conditionA()){ {{undefined}} }@else{ ContentB }\n    @if(conditionA()){ ContentC } @if(conditionA()){ }@else{ ContentC }\n    @if(conditionA()){ ContentD } @if(conditionA()){ }@else{ ContentD }\n    @if(conditionA()){ ContentE }@else{ hello } @if(conditionA()){ hello }@else{\n    ContentE } @if(conditionA()){ ContentF }@else{ 123 } @if(conditionA()){ 123\n    }@else{ ContentF } @if(conditionA() === 'Default'){ 4mb }@else{\n    @if(conditionB() === 'Complete'){ 20mb }@else{ 9mb } } @if(conditionA() ===\n    'Default'){ @if(conditionB() === 'Complete'){ 20mb }@else{ 9mb } }@else{ 4mb\n    } @if(conditionA() === 'Default'){ @if(conditionB() === 'Complete'){\n    <div>complete</div>\n    }@else{ 9mb } }@else{ @if(conditionC() === 'Complete'){ dff }@else{\n    <div>complete else</div>\n    } }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowWithOtherValues {\n  conditionA: InputSignal<Props[\\\\\"conditionA\\\\\"]> = input<Props[\\\\\"conditionA\\\\\"]>();\n  conditionB: InputSignal<Props[\\\\\"conditionB\\\\\"]> = input<Props[\\\\\"conditionB\\\\\"]>();\n  conditionC: InputSignal<Props[\\\\\"conditionC\\\\\"]> = input<Props[\\\\\"conditionC\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > showWithFor 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ @for (item of items();track trackByItem0(idx,\n    item);let idx = $index) {\n    <div>{{item}}</div>\n    } }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class NestedShow {\n  conditionA: InputSignal<Props[\\\\\"conditionA\\\\\"]> = input<Props[\\\\\"conditionA\\\\\"]>();\n  items: InputSignal<Props[\\\\\"items\\\\\"]> = input<Props[\\\\\"items\\\\\"]>();\n\n  trackByItem0(idx: number, item: any) {\n    return idx;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @if(conditionA()){ ContentA } @if(conditionA()){ ContentB }@else{\n    {{undefined}} } @if(conditionA()){ ContentC } @if(conditionA()){ ContentD }\n    @if(conditionA()){ ContentE }@else{ hello } @if(conditionA()){ ContentF\n    }@else{ 123 }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowWithOtherValues {\n  conditionA: InputSignal<Props[\\\\\"conditionA\\\\\"]> = input<Props[\\\\\"conditionA\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(conditionA()){ ContentA }@else{\n    <div>else-condition-A</div>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class ShowRootText {\n  conditionA: InputSignal<Props[\\\\\"conditionA\\\\\"]> = input<Props[\\\\\"conditionA\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport {\n  Component,\n  viewChild,\n  ElementRef,\n  model,\n  output,\n  input,\n  effect,\n  signal,\n  InputSignal,\n  ModelSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button\n    [attr.aria-label]=\\\\\"label()\\\\\"\n    #buttonRef\n    [attr.disabled]=\\\\\"disabled()\\\\\"\n    (click)=\\\\\"handleOutput()\\\\\"\n  >\n    {{testInput()}}\n  </button> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SignalsTestComponent {\n  testInput: InputSignal<Props[\\\\\"testInput\\\\\"]> = input<Props[\\\\\"testInput\\\\\"]>(\n    defaultProps[\\\\\"testInput\\\\\"]\n  );\n  label: InputSignal<Props[\\\\\"label\\\\\"]> = input.required<Props[\\\\\"label\\\\\"]>(\n    defaultProps[\\\\\"label\\\\\"]\n  );\n  disabled: ModelSignal<Props[\\\\\"disabled\\\\\"]> = model<Props[\\\\\"disabled\\\\\"]>();\n  testOutput = output<\n    Parameters<Required<Props>[\\\\\"onTestOutput\\\\\"]>[number] | void\n  >();\n\n  buttonRef = viewChild<ElementRef>(\\\\\"buttonRef\\\\\");\n\n  _counter = signal<Store[\\\\\"_counter\\\\\"]>(0);\n  _innerText = signal<Store[\\\\\"_innerText\\\\\"]>(\\\\\"a\\\\\");\n\n  handleOutput() {\n    this._counter.update((_counter) => {\n      _counter++;\n      return _counter;\n    });\n\n    this._innerText.set(\\\\\"b\\\\\");\n\n    console.log(this.testInput(), this._counter());\n\n    if (this.testOutput) {\n      this.testOutput.emit();\n    }\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this._counter();\n          this.buttonRef();\n          // ---\n\n          console.log(this._counter(), this.buttonRef()?.nativeElement);\n          this.buttonRef()?.nativeElement?.setAttribute(\n            \\\\\"data-counter\\\\\",\n            this._counter().toString()\n          );\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div class=\\\\\"test div\\\\\">{{id()}} {{foo().bar.baz}}</div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  id: InputSignal<Props[\\\\\"id\\\\\"]> = input<Props[\\\\\"id\\\\\"]>();\n  foo: InputSignal<Props[\\\\\"foo\\\\\"]> = input<Props[\\\\\"foo\\\\\"]>();\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          // --- Mitosis: Workaround to make sure the effect() is triggered ---\n          this.id();\n          // ---\n\n          console.log(\\\\\"props.id changed\\\\\", this.id());\n          console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo().bar.baz);\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  effect,\n  signal,\n  OnDestroy,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, attrs);\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, attrs);\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import {\n  Component,\n  viewChild,\n  ElementRef,\n  Renderer2,\n  input,\n  effect,\n  signal,\n  OnDestroy,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input #elRef0 /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent implements OnDestroy {\n  nested: InputSignal<any> = input<any>();\n\n  elRef0 = viewChild<ElementRef>(\\\\\"elRef0\\\\\");\n\n  _listenerFns = new Map();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.setAttributes(this.elRef0()?.nativeElement, this.nested());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(this.elRef0()?.nativeElement, this.nested());\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > spreadProps 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > stateInit 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <div>{{asfas()}}</div>\n    <div>{{someCompute()}}</div>\n    <div>{{someOtherVal()}}</div>\n    <div>{{sf()}}</div>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  val: InputSignal<any> = input<any>();\n\n  asfas = signal(\\\\\"asga\\\\\");\n  someCompute = signal(this.add(1, 2));\n  someOtherVal = signal(undefined);\n  sf = signal(undefined);\n\n  add(a, b) {\n    return a + b;\n  }\n  subtract() {\n    return this.someCompute() - this.someOtherVal();\n  }\n\n  constructor() {}\n\n  ngOnInit() {\n    this.sf.set(this.add(this.val(), 34));\n    this.someOtherVal.set(this.val());\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Comp],\n  template: \\`<Comp [val]=\\\\\"objSpread_val_yy75n1()\\\\\">{{val()}}</Comp> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  value: InputSignal<any> = input<any>();\n\n  val = signal(undefined);\n\n  objSpread_val_yy75n1 = computed(() => {\n    return { ...this.val() };\n  });\n\n  constructor() {}\n\n  ngOnInit() {\n    this.val.set(this.value());\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > store-async-function 1`] = `\n\"import { Component, effect } from '@angular/core';\n      import { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n      @Component({\n        selector: 'string-literal-store',standalone: true,imports: [CommonModule],template: \\`<div></div>\n\\`,styles: \\`:host { display: contents; }\\`\n      })\n      export class StringLiteralStore  {\n\n\n\n\n\n\n\n\n\n\n\n        async function arrowFunction() {\nreturn Promise.resolve();\n}\nasync function namedFunction() {\nreturn Promise.resolve();\n}\nasync function fetchUsers() {\nreturn Promise.resolve();\n}\n\n\n        constructor() {\n        }\n\n\n\n\n\n\n\n\n\n\n\n      }\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{foo()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class StringLiteralStore {\n  foo = signal(123);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { Component, effect, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',standalone: true,imports: [CommonModule],template: \\`<div>{{'foo-bar'}}</div>\n\\`,styles: \\`:host { display: contents; }\\`\n})\nexport class StringLiteralStore  {\n\n\n\n\n\n\n\n\n\n   foo-bar= signal(123)\n\n\n\n\n  constructor() {\n  }\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    class=\\\\\"builder-column div\\\\\"\n    [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [ngStyle]=\\\\\"attributes().style\\\\\"\n    [class]=\\\\\"attributes().class + ' div'\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class StylePropClassAndCss {\n  attributes: InputSignal<any> = input<any>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > subComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Foo } from \\\\\"./foo-sub-component.lite\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Foo],\n  template: \\`<foo></foo> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SubComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > svgComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    [attr.width]=\\\\\"42\\\\\"\n    [attr.height]=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          [attr.stdDeviation]=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class SvgComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    @for (item of items();track trackByItem0(i, item);let i = $index) {\n    <div>{{item}}</div>\n    } @for (item of items();track trackByItem1(i, item);let i = $index) {\n    <div>{{item}}</div>\n    }\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  items = signal([1, 2, 3]);\n\n  trackByItem0(_: number, item: any) {\n    return item;\n  }\n  trackByItem1(_: number, item: any) {\n    return item;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > typeDependency 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.js\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{foo()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeDependency {\n  foo: InputSignal<TypeDependencyProps[\\\\\"foo\\\\\"]> =\n    input<TypeDependencyProps[\\\\\"foo\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { Component, input, effect, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeExternalProps {\n  name: InputSignal<FooProps[\\\\\"name\\\\\"]> = input<FooProps[\\\\\"name\\\\\"]>();\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{_name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeExternalStore {\n  _name = signal<FooStore[\\\\\"_name\\\\\"]>(\\\\\"test\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { Component, effect, signal, computed } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>Hello {{name()}} !</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class TypeGetterStore {\n  name = signal<GetterStore[\\\\\"name\\\\\"]>(\\\\\"test\\\\\");\n\n  test = computed(() => {\n    return \\\\\"test\\\\\";\n  });\n  getName() {\n    if (this.name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name();\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > use-style 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: \\`:host { display: contents; }\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import {\n  Component,\n  input,\n  effect,\n  signal,\n  computed,\n  InputSignal,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Comp],\n  template: \\`<div>\n    <Comp\n      [val1]=\\\\\"objSpread_val1_i10b3b()\\\\\"\n      [val2]=\\\\\"objSpread_val2_dcdfhf()\\\\\"\n      [val3]=\\\\\"objSpread_val3_2cisei()\\\\\"\n      [val4]=\\\\\"objSpread_val4_wb8314()\\\\\"\n      [val5]=\\\\\"objSpread_val5_1ruo5o()\\\\\"\n      [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n    ></Comp>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  spreadAttrs: InputSignal<any> = input<any>();\n\n  attributes = signal({\n    id: 1,\n  });\n  attributes2 = signal({\n    id2: 1,\n  });\n  something = signal({\n    id3: 1,\n  });\n\n  objSpread_val1_i10b3b = computed(() => {\n    return { ...this.attributes2() };\n  });\n  objSpread_val2_dcdfhf = computed(() => {\n    return { ...this.attributes(), ...this.attributes2() };\n  });\n  objSpread_val3_2cisei = computed(() => {\n    return { ...this.something(), anything: \\\\\"hello\\\\\", hello: \\\\\"world\\\\\" };\n  });\n  objSpread_val4_wb8314 = computed(() => {\n    return {\n      ...this.attributes(),\n      ...this.something(),\n      anything: [1, 2, 3],\n      hello: \\\\\"hello\\\\\",\n      ...this.attributes2(),\n    };\n  });\n  objSpread_val5_1ruo5o = computed(() => {\n    return {\n      ...this.attributes(),\n      ...this.something(),\n      anything: [1, 2, 3],\n      anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n      hello: \\\\\"hello\\\\\",\n      ...this.spreadAttrs(),\n    };\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > useTarget 1`] = `\n\"import {\n  Component,\n  effect,\n  signal,\n  computed,\n  AfterViewInit,\n} from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{name()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class UseTargetComponent implements AfterViewInit {\n  lastName = signal(\\\\\"bar\\\\\");\n  foo = signal(\\\\\"bar\\\\\");\n\n  name = computed(() => {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo());\n      this.foo.set(\\\\\"bar\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > jsx > Typescript Test > webComponent 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<swiper-container\n    slides-per-view=\\\\\"3\\\\\"\n    navigation=\\\\\"true\\\\\"\n    pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide>\n    <swiper-slide>Slide 2</swiper-slide>\n    <swiper-slide>Slide 3</swiper-slide></swiper-container\n  > \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyBasicWebComponent {\n  constructor() {}\n\n  ngOnInit() {\n    register();\n  }\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > basic 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input (change)=\\\\\"name.set($event.target.value)\\\\\" [attr.value]=\\\\\"name()\\\\\" />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > bindGroup 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Plain'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Whole wheat'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Spinach'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <br />\n    <br />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Rice'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Beans'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Cheese'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Guac (extra)'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{tortilla()}}</p>\n    <p>Fillings: {{fillings()}}</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  tortilla = signal(\\\\\"Plain\\\\\");\n  fillings = signal([]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > bindProperty 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input [attr.value]=\\\\\"value()\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  value = signal(\\\\\"hello\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > classDirective 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input [class]=\\\\\"templateStr_slfe7x()\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled: InputSignal<any> = input<any>();\n\n  focus = signal(true);\n\n  templateStr_slfe7x() {\n    return \\`form-input \\${this.disabled() ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n      this.focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n    }\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > context 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{activeTab()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  activeTab = signal(0);\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > each 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ul>\n    @for (num of numbers();track i;let i = $index) {\n    <li>{{num}}</li>\n    }\n  </ul> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  numbers = signal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n    <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    <button (click)=\\\\\"log($event)\\\\\">Log</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > html 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  html = signal(\\\\\"<b>bold</b>\\\\\");\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > ifElse 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(show()){\n    <button (click)=\\\\\"toggle($event)\\\\\">Hide</button>\n    }@else{\n    <button (click)=\\\\\"toggle($event)\\\\\">Show</button>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  show = signal(true);\n\n  toggle() {\n    this.show.set(!this.show());\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > imports 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Button } from \\\\\"./Button.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Button],\n  template: \\`<div>\n    <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled()\\\\\">\n      <ng-content> </ng-content>\n    </button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled = signal(false);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { Component, effect, OnDestroy, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent implements AfterViewInit, OnDestroy {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"onAfterUpdate\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > reactive 1`] = `\n\"import { Component, effect, signal, computed } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input [attr.value]=\\\\\"name()\\\\\" />\n\n    Lowercase: {{lowercaseName()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  lowercaseName = computed(() => {\n    return this.name().toLowerCase();\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      type=\\\\\"number\\\\\"\n      (change)=\\\\\"a.set($event.target.value)\\\\\"\n      [attr.value]=\\\\\"a()\\\\\"\n    />\n    <input\n      type=\\\\\"number\\\\\"\n      (change)=\\\\\"b.set($event.target.value)\\\\\"\n      [attr.value]=\\\\\"b()\\\\\"\n    />\n\n    Result: {{result()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  a = signal(2);\n  b = signal(5);\n  result = signal(null);\n\n  calculateResult(a_, b_) {\n    this.result.set(a_ * b_);\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.calculateResult(this.a(), this.b());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > slots 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content> default </ng-content>\n    <ng-content select=\\\\\"[test]\\\\\">\n      <div>default</div>\n    </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > style 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Javascript Test > textExpressions 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    normal: {{a() + b()}}\n    <br />\n\n    conditional {{a() > 2 ? 'hello' : 'bye'}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  a = signal(5);\n  b = signal(12);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > basic 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input (change)=\\\\\"name.set($event.target.value)\\\\\" [attr.value]=\\\\\"name()\\\\\" />\n\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > bindGroup 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Plain'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Whole wheat'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      [attr.checked]=\\\\\"tortilla() === 'Spinach'\\\\\"\n      (change)=\\\\\"tortilla.set($event.target.value)\\\\\"\n    />\n    <br />\n    <br />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Rice'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Beans'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Cheese'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      [attr.checked]=\\\\\"fillings() === 'Guac (extra)'\\\\\"\n      (change)=\\\\\"fillings.set($event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{tortilla()}}</p>\n    <p>Fillings: {{fillings()}}</p>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  tortilla = signal(\\\\\"Plain\\\\\");\n  fillings = signal([]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > bindProperty 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input [attr.value]=\\\\\"value()\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  value = signal(\\\\\"hello\\\\\");\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > classDirective 1`] = `\n\"import { Component, input, effect, signal, InputSignal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input [class]=\\\\\"templateStr_slfe7x()\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled: InputSignal<any> = input<any>();\n\n  focus = signal(true);\n\n  templateStr_slfe7x() {\n    return \\`form-input \\${this.disabled() ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n      this.focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n    }\\`;\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > context 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>{{activeTab()}}</div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  activeTab = signal(0);\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > each 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<ul>\n    @for (num of numbers();track i;let i = $index) {\n    <li>{{num}}</li>\n    }\n  </ul> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  numbers = signal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n    <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    <button (click)=\\\\\"log($event)\\\\\">Log</button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > html 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div\n    [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html())\\\\\"\n  ></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  html = signal(\\\\\"<b>bold</b>\\\\\");\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > ifElse 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`@if(show()){\n    <button (click)=\\\\\"toggle($event)\\\\\">Hide</button>\n    }@else{\n    <button (click)=\\\\\"toggle($event)\\\\\">Show</button>\n    } \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  show = signal(true);\n\n  toggle() {\n    this.show.set(!this.show());\n  }\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > imports 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Button } from \\\\\"./Button.lite\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule, Button],\n  template: \\`<div>\n    <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled()\\\\\">\n      <ng-content> </ng-content>\n    </button>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  disabled = signal(false);\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { Component, effect, OnDestroy, AfterViewInit } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div></div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent implements AfterViewInit, OnDestroy {\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          console.log(\\\\\"onAfterUpdate\\\\\");\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > reactive 1`] = `\n\"import { Component, effect, signal, computed } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input [attr.value]=\\\\\"name()\\\\\" />\n\n    Lowercase: {{lowercaseName()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  name = signal(\\\\\"Steve\\\\\");\n\n  lowercaseName = computed(() => {\n    return this.name().toLowerCase();\n  });\n\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <input\n      type=\\\\\"number\\\\\"\n      (change)=\\\\\"a.set($event.target.value)\\\\\"\n      [attr.value]=\\\\\"a()\\\\\"\n    />\n    <input\n      type=\\\\\"number\\\\\"\n      (change)=\\\\\"b.set($event.target.value)\\\\\"\n      [attr.value]=\\\\\"b()\\\\\"\n    />\n\n    Result: {{result()}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  a = signal(2);\n  b = signal(5);\n  result = signal(null);\n\n  calculateResult(a_, b_) {\n    this.result.set(a_ * b_);\n  }\n\n  constructor() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      effect(\n        () => {\n          this.calculateResult(this.a(), this.b());\n        },\n        {\n          allowSignalWrites: true, // Enable writing to signals inside effects\n        }\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > slots 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    <ng-content> default </ng-content>\n    <ng-content select=\\\\\"[test]\\\\\">\n      <div>default</div>\n    </ng-content>\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > style 1`] = `\n\"import { Component, effect } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: \\`:host { display: contents; }\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n\\`,\n})\nexport class MyComponent {\n  constructor() {}\n}\n\"\n`;\n\nexports[`Angular signals > svelte > Typescript Test > textExpressions 1`] = `\n\"import { Component, effect, signal } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  standalone: true,\n  imports: [CommonModule],\n  template: \\`<div>\n    normal: {{a() + b()}}\n    <br />\n\n    conditional {{a() > 2 ? 'hello' : 'bye'}}\n  </div> \\`,\n  styles: \\`:host { display: contents; }\\`,\n})\nexport class MyComponent {\n  a = signal(5);\n  b = signal(12);\n\n  constructor() {}\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.state.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container *ngFor=\\\\\"let _ of node_0_For\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_For = null;\n\n  ngOnInit() {\n    this.node_0_For = Array.from({\n      length: 10,\n    });\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_For = Array.from({\n        length: 10,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{node_1_div}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n  node_1_div = null;\n\n  ngOnInit() {\n    this.node_1_div = this.lowerCaseName();\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n      this.node_1_div = this.lowerCaseName();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input [attr.value]=\\\\\"name\\\\\" (change)=\\\\\"node_0_input($event, person)\\\\\" />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_input_event = (event, person) => {\n    this.name = event.target.value + \\\\\" and \\\\\" + person;\n  };\n  node_0_input = (event, person) => this.node_0_input_event(event, person);\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{node_0_div}} Hello! I can run in React, Vue, Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n  node_0_div = null;\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    this.node_0_div = this.myService.method(\\\\\"hello\\\\\") + this.name;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.myService.method(\\\\\"hello\\\\\") + this.name;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input [attr.value]=\\\\\"name\\\\\" (change)=\\\\\"node_0_input($event, person)\\\\\" />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_input_event = (event, person) => {\n    this.name = event.target.value + \\\\\" and \\\\\" + person;\n  };\n  node_0_input = (event, person) => this.node_0_input_event(event, person);\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{node_1_div}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n  node_1_div = null;\n\n  ngOnInit() {\n    this.node_1_div = this.lowerCaseName();\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_1_div = this.lowerCaseName();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n  node_0_div = null;\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div =\n      \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div =\n        \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n  node_0_div = null;\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div =\n      \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div =\n        \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{node_1_div}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  node_1_div = null;\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.node_1_div = JSON.stringify(this.responseData, null, 2);\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_1_div = JSON.stringify(this.responseData, null, 2);\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"node_0_Show\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"node_1_img + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() _class;\n  @Input() lazy;\n  @Input() altText;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n  node_0_Show = null;\n  node_1_img = null;\n\n  ngOnInit() {\n    this.node_0_Show = !this.useLazyLoading() || this.load;\n    this.node_1_img = \\\\\"builder-image\\\\\" + (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Show = !this.useLazyLoading() || this.load;\n      this.node_1_img =\n        \\\\\"builder-image\\\\\" + (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"node_0_img\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  node_0_img = null;\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.node_0_img = {\n      objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n      objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_img = {\n        objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section [ngStyle]=\\\\\"node_0_section\\\\\" #elRef0>\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() maxWidth;\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  node_0_section = null;\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.node_0_section =\n      this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n        ? {\n            maxWidth: this.maxWidth,\n          }\n        : undefined;\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_section =\n        this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: this.maxWidth,\n            }\n          : undefined;\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section [ngStyle]=\\\\\"node_0_section(item)\\\\\" #elRef0>\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  node_0_section = (item) => ({\n    maxWidth: item + this.max,\n  });\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button class=\\\\\"button\\\\\" (click)=\\\\\"node_0_button($event)\\\\\">\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  node_0_button = (ev) => {\n    ev.preventDefault();\n    this.showReviewPrompt = false;\n  };\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{node_0_div}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.foo(this.errors);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.foo(this.errors);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{node_0_div}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.bar();\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.bar();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n  node_0_div = null;\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div = {\n      test: this.name || \\\\\"any name\\\\\",\n    };\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        test: this.name || \\\\\"any name\\\\\",\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"node_0_video\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  node_0_video = null;\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.node_0_video = {\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes?.style,\n      objectFit: this.fit,\n      objectPosition: this.position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_video = {\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...this.attributes?.style,\n        objectFit: this.fit,\n        objectPosition: this.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() accessHere;\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  node_0_div = null;\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.node_0_div = {\n      ...{\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      },\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.node_0_div);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        ...{\n          someOtherAttrs: this.accessHere,\n          someStateAttrs: this.specifics,\n        },\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.node_0_div,\n        changes[\\\\\"node_0_div\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: mergedInputs_0;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n  mergedInputs_0 = {};\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_0 = {};\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_0 = {};\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: mergedInputs_mlw9p4;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n  mergedInputs_mlw9p4 = {};\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_mlw9p4 = {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes,\n      ...this.something,\n    };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_mlw9p4 = {\n        hello: \\\\\"world\\\\\",\n        onClick: this.onClick.bind(this),\n        ...this.attributes,\n        ...this.something,\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: mergedInputs_mlw9p4;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n  mergedInputs_mlw9p4 = {};\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_mlw9p4 = {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes,\n      ...this.something,\n    };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_mlw9p4 = {\n        hello: \\\\\"world\\\\\",\n        onClick: this.onClick.bind(this),\n        ...this.attributes,\n        ...this.something,\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"node_0_p\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"node_1_p\\\\\"\n      [attr.f3]=\\\\\"node_2_p\\\\\"\n      [attr.f4]=\\\\\"node_3_p\\\\\"\n      [attr.f5]=\\\\\"node_4_p\\\\\"\n      [attr.f6]=\\\\\"node_5_p\\\\\"\n      [attr.f7]=\\\\\"node_6_p\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  node_0_p = null;\n  node_1_p = null;\n  node_2_p = null;\n  node_3_p = null;\n  node_4_p = null;\n  node_5_p = null;\n  node_6_p = null;\n\n  ngOnInit() {\n    this.node_0_p = () => x;\n\n    this.node_1_p = (x) => {};\n\n    this.node_2_p = function () {\n      return x;\n    };\n\n    this.node_3_p = function (x) {\n      return x;\n    };\n\n    this.node_4_p = function (x) {\n      return;\n    };\n\n    this.node_5_p = function () {\n      return;\n    };\n\n    this.node_6_p = (a, b, c) => a + b + c;\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_p = () => x;\n      this.node_1_p = (x) => {};\n      this.node_2_p = function () {\n        return x;\n      };\n      this.node_3_p = function (x) {\n        return x;\n      };\n      this.node_4_p = function (x) {\n        return;\n      };\n      this.node_5_p = function () {\n        return;\n      };\n      this.node_6_p = (a, b, c) => a + b + c;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{node_0_div}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.baz(1);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.baz(1);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n  node_0_RenderBlock = null;\n\n  ngOnInit() {\n    this.node_0_RenderBlock = {\n      ...this.getRenderContentProps(this.renderContentProps.block, 0),\n    };\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_RenderBlock = {\n        ...this.getRenderContentProps(this.renderContentProps.block, 0),\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"node_0_Show\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: mergedInputs_3ka5tf;\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"node_1_Show\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"node_2_Show\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: mergedInputs_3ka5tf;\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: mergedInputs_r2fkt2;\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  node_0_Show = null;\n  node_1_Show = null;\n  node_2_Show = null;\n  mergedInputs_3ka5tf = {};\n  trackByData0(index, data) {\n    return index;\n  }\n  mergedInputs_r2fkt2 = {};\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.node_0_Show = isEmptyHtmlElement(this.tag);\n    this.node_1_Show = !isEmptyHtmlElement(this.tag) && this.repeatItemData;\n    this.node_2_Show = !isEmptyHtmlElement(this.tag) && !this.repeatItemData;\n    this.mergedInputs_3ka5tf = { ...this.attributes, ...this.actions };\n    this.mergedInputs_r2fkt2 = { ...this.renderComponentProps };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Show = isEmptyHtmlElement(this.tag);\n      this.node_1_Show = !isEmptyHtmlElement(this.tag) && this.repeatItemData;\n      this.node_2_Show = !isEmptyHtmlElement(this.tag) && !this.repeatItemData;\n      this.mergedInputs_3ka5tf = { ...this.attributes, ...this.actions };\n      this.mergedInputs_r2fkt2 = { ...this.renderComponentProps };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <Comp [val]=\\\\\"node_0_Comp\\\\\">{{val}}</Comp> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n  node_0_Comp = null;\n\n  ngOnInit() {\n    this.val = this.value;\n    this.node_0_Comp = { ...this.val };\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Comp = { ...this.val };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div class=\\\\\"builder-column div\\\\\" [ngStyle]=\\\\\"node_0_div\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = {\n      width: \\\\\"100%\\\\\",\n    };\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        width: \\\\\"100%\\\\\",\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"node_0_Comp\\\\\"\n        [val2]=\\\\\"node_1_Comp\\\\\"\n        [val3]=\\\\\"node_2_Comp\\\\\"\n        [val4]=\\\\\"node_3_Comp\\\\\"\n        [val5]=\\\\\"node_4_Comp\\\\\"\n        [val6]=\\\\\"node_5_Comp\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n  node_0_Comp = null;\n  node_1_Comp = null;\n  node_2_Comp = null;\n  node_3_Comp = null;\n  node_4_Comp = null;\n  node_5_Comp = null;\n\n  ngOnInit() {\n    this.node_0_Comp = { ...this.attributes2 };\n    this.node_1_Comp = { ...this.attributes, ...this.attributes2 };\n    this.node_2_Comp = { ...this.something, anything: \\\\\"hello\\\\\", hello: \\\\\"world\\\\\" };\n    this.node_3_Comp = {\n      ...this.attributes,\n      ...this.something,\n      anything: [1, 2, 3],\n      hello: \\\\\"hello\\\\\",\n      ...this.attributes2,\n    };\n    this.node_4_Comp = {\n      ...this.attributes,\n      ...this.something,\n      anything: [1, 2, 3],\n      anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n      hello: \\\\\"hello\\\\\",\n      ...this.spreadAttrs,\n    };\n    this.node_5_Comp = {\n      anything: [1, 2, 3],\n    };\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Comp = { ...this.attributes2 };\n      this.node_1_Comp = { ...this.attributes, ...this.attributes2 };\n      this.node_2_Comp = {\n        ...this.something,\n        anything: \\\\\"hello\\\\\",\n        hello: \\\\\"world\\\\\",\n      };\n      this.node_3_Comp = {\n        ...this.attributes,\n        ...this.something,\n        anything: [1, 2, 3],\n        hello: \\\\\"hello\\\\\",\n        ...this.attributes2,\n      };\n      this.node_4_Comp = {\n        ...this.attributes,\n        ...this.something,\n        anything: [1, 2, 3],\n        anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n        hello: \\\\\"hello\\\\\",\n        ...this.spreadAttrs,\n      };\n      this.node_5_Comp = {\n        anything: [1, 2, 3],\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Javascript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Remove Internal mitosis package 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container *ngFor=\\\\\"let _ of node_0_For\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_For = null;\n\n  ngOnInit() {\n    this.node_0_For = Array.from({\n      length: 10,\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_For = Array.from({\n        length: 10,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{node_1_div}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n  node_1_div = null;\n\n  ngOnInit() {\n    this.node_1_div = this.lowerCaseName();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n      this.node_1_div = this.lowerCaseName();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input [attr.value]=\\\\\"name\\\\\" (change)=\\\\\"node_0_input($event, person)\\\\\" />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_input_event = (event, person) => {\n    this.name = event.target.value + \\\\\" and \\\\\" + person;\n  };\n  node_0_input = (event, person) => this.node_0_input_event(event, person);\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{node_0_div}} Hello! I can run in React, Vue, Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n  node_0_div = null;\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    this.node_0_div = this.myService.method(\\\\\"hello\\\\\") + this.name;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.myService.method(\\\\\"hello\\\\\") + this.name;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input [attr.value]=\\\\\"name\\\\\" (change)=\\\\\"node_0_input($event, person)\\\\\" />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  node_0_input_event = (event, person) => {\n    this.name = event.target.value + \\\\\" and \\\\\" + person;\n  };\n  node_0_input = (event, person) => this.node_0_input_event(event, person);\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{node_1_div}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n  node_1_div = null;\n\n  ngOnInit() {\n    this.node_1_div = this.lowerCaseName();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_1_div = this.lowerCaseName();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n  node_0_div = null;\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div =\n      \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div =\n        \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n  node_0_div = null;\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div =\n      \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div =\n        \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{node_1_div}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  node_1_div = null;\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.node_1_div = JSON.stringify(this.responseData, null, 2);\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_1_div = JSON.stringify(this.responseData, null, 2);\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"node_0_Show\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"node_1_img + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n  node_0_Show = null;\n  node_1_img = null;\n\n  ngOnInit() {\n    this.node_0_Show = !this.useLazyLoading() || this.load;\n    this.node_1_img = \\\\\"builder-image\\\\\" + (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Show = !this.useLazyLoading() || this.load;\n      this.node_1_img =\n        \\\\\"builder-image\\\\\" + (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"node_0_img\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  node_0_img = null;\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.node_0_img = {\n      objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n      objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_img = {\n        objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section [ngStyle]=\\\\\"node_0_section\\\\\" #elRef0>\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  node_0_section = null;\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.node_0_section =\n      this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n        ? {\n            maxWidth: this.maxWidth,\n          }\n        : undefined;\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_section =\n        this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: this.maxWidth,\n            }\n          : undefined;\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section [ngStyle]=\\\\\"node_0_section(item)\\\\\" #elRef0>\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  node_0_section = (item) => ({\n    maxWidth: item + this.max,\n  });\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button class=\\\\\"button\\\\\" (click)=\\\\\"node_0_button($event)\\\\\">\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  node_0_button = (ev) => {\n    ev.preventDefault();\n    this.showReviewPrompt = false;\n  };\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{node_0_div}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.foo(this.errors);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.foo(this.errors);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{node_0_div}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.bar();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.bar();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"node_0_div\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n  node_0_div = null;\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    this.node_0_div = {\n      test: this.name || \\\\\"any name\\\\\",\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        test: this.name || \\\\\"any name\\\\\",\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"node_0_video\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  node_0_video = null;\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.node_0_video = {\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes?.style,\n      objectFit: this.fit,\n      objectPosition: this.position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_video = {\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...this.attributes?.style,\n        objectFit: this.fit,\n        objectPosition: this.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() accessHere!: any;\n  @Input() attributes!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  node_0_div = null;\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.node_0_div = {\n      ...{\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      },\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.node_0_div);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        ...{\n          someOtherAttrs: this.accessHere,\n          someStateAttrs: this.specifics,\n        },\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.node_0_div,\n        changes[\\\\\"node_0_div\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: mergedInputs_0;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n  mergedInputs_0 = {} as any;\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_0 = {};\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_0 = {};\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: mergedInputs_mlw9p4;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n  mergedInputs_mlw9p4 = {} as any;\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_mlw9p4 = {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes,\n      ...this.something,\n    };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_mlw9p4 = {\n        hello: \\\\\"world\\\\\",\n        onClick: this.onClick.bind(this),\n        ...this.attributes,\n        ...this.something,\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: mergedInputs_mlw9p4;\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n  mergedInputs_mlw9p4 = {} as any;\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.mergedInputs_mlw9p4 = {\n      hello: \\\\\"world\\\\\",\n      onClick: this.onClick.bind(this),\n      ...this.attributes,\n      ...this.something,\n    };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.mergedInputs_mlw9p4 = {\n        hello: \\\\\"world\\\\\",\n        onClick: this.onClick.bind(this),\n        ...this.attributes,\n        ...this.something,\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"node_0_p\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"node_1_p\\\\\"\n      [attr.f3]=\\\\\"node_2_p\\\\\"\n      [attr.f4]=\\\\\"node_3_p\\\\\"\n      [attr.f5]=\\\\\"node_4_p\\\\\"\n      [attr.f6]=\\\\\"node_5_p\\\\\"\n      [attr.f7]=\\\\\"node_6_p\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  node_0_p = null;\n  node_1_p = null;\n  node_2_p = null;\n  node_3_p = null;\n  node_4_p = null;\n  node_5_p = null;\n  node_6_p = null;\n\n  ngOnInit() {\n    this.node_0_p = () => x;\n\n    this.node_1_p = (x) => {};\n\n    this.node_2_p = function () {\n      return x;\n    };\n\n    this.node_3_p = function (x) {\n      return x;\n    };\n\n    this.node_4_p = function (x) {\n      return;\n    };\n\n    this.node_5_p = function () {\n      return;\n    };\n\n    this.node_6_p = (a, b, c) => a + b + c;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_p = () => x;\n      this.node_1_p = (x) => {};\n      this.node_2_p = function () {\n        return x;\n      };\n      this.node_3_p = function (x) {\n        return x;\n      };\n      this.node_4_p = function (x) {\n        return;\n      };\n      this.node_5_p = function () {\n        return;\n      };\n      this.node_6_p = (a, b, c) => a + b + c;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{node_0_div}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = this.baz(1);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = this.baz(1);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n  node_0_RenderBlock = null;\n\n  ngOnInit() {\n    this.node_0_RenderBlock = {\n      ...this.getRenderContentProps(this.renderContentProps.block, 0),\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_RenderBlock = {\n        ...this.getRenderContentProps(this.renderContentProps.block, 0),\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"node_0_Show\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: mergedInputs_3ka5tf;\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"node_1_Show\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"node_2_Show\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: mergedInputs_3ka5tf;\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: mergedInputs_r2fkt2;\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  node_0_Show = null;\n  node_1_Show = null;\n  node_2_Show = null;\n  mergedInputs_3ka5tf = {} as any;\n  trackByData0(index, data) {\n    return index;\n  }\n  mergedInputs_r2fkt2 = {} as any;\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.node_0_Show = isEmptyHtmlElement(this.tag);\n    this.node_1_Show = !isEmptyHtmlElement(this.tag) && this.repeatItemData;\n    this.node_2_Show = !isEmptyHtmlElement(this.tag) && !this.repeatItemData;\n    this.mergedInputs_3ka5tf = { ...this.attributes, ...this.actions };\n    this.mergedInputs_r2fkt2 = { ...this.renderComponentProps };\n\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Show = isEmptyHtmlElement(this.tag);\n      this.node_1_Show = !isEmptyHtmlElement(this.tag) && this.repeatItemData;\n      this.node_2_Show = !isEmptyHtmlElement(this.tag) && !this.repeatItemData;\n      this.mergedInputs_3ka5tf = { ...this.attributes, ...this.actions };\n      this.mergedInputs_r2fkt2 = { ...this.renderComponentProps };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <Comp [val]=\\\\\"node_0_Comp\\\\\">{{val}}</Comp> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n  node_0_Comp = null;\n\n  ngOnInit() {\n    this.val = this.value;\n    this.node_0_Comp = { ...this.val };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Comp = { ...this.val };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div class=\\\\\"builder-column div\\\\\" [ngStyle]=\\\\\"node_0_div\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  node_0_div = null;\n\n  ngOnInit() {\n    this.node_0_div = {\n      width: \\\\\"100%\\\\\",\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_div = {\n        width: \\\\\"100%\\\\\",\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"node_0_Comp\\\\\"\n        [val2]=\\\\\"node_1_Comp\\\\\"\n        [val3]=\\\\\"node_2_Comp\\\\\"\n        [val4]=\\\\\"node_3_Comp\\\\\"\n        [val5]=\\\\\"node_4_Comp\\\\\"\n        [val6]=\\\\\"node_5_Comp\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n  node_0_Comp = null;\n  node_1_Comp = null;\n  node_2_Comp = null;\n  node_3_Comp = null;\n  node_4_Comp = null;\n  node_5_Comp = null;\n\n  ngOnInit() {\n    this.node_0_Comp = { ...this.attributes2 };\n    this.node_1_Comp = { ...this.attributes, ...this.attributes2 };\n    this.node_2_Comp = { ...this.something, anything: \\\\\"hello\\\\\", hello: \\\\\"world\\\\\" };\n    this.node_3_Comp = {\n      ...this.attributes,\n      ...this.something,\n      anything: [1, 2, 3],\n      hello: \\\\\"hello\\\\\",\n      ...this.attributes2,\n    };\n    this.node_4_Comp = {\n      ...this.attributes,\n      ...this.something,\n      anything: [1, 2, 3],\n      anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n      hello: \\\\\"hello\\\\\",\n      ...this.spreadAttrs,\n    };\n    this.node_5_Comp = {\n      anything: [1, 2, 3],\n    };\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_Comp = { ...this.attributes2 };\n      this.node_1_Comp = { ...this.attributes, ...this.attributes2 };\n      this.node_2_Comp = {\n        ...this.something,\n        anything: \\\\\"hello\\\\\",\n        hello: \\\\\"world\\\\\",\n      };\n      this.node_3_Comp = {\n        ...this.attributes,\n        ...this.something,\n        anything: [1, 2, 3],\n        hello: \\\\\"hello\\\\\",\n        ...this.attributes2,\n      };\n      this.node_4_Comp = {\n        ...this.attributes,\n        ...this.something,\n        anything: [1, 2, 3],\n        anythingString: [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"],\n        hello: \\\\\"hello\\\\\",\n        ...this.spreadAttrs,\n      };\n      this.node_5_Comp = {\n        anything: [1, 2, 3],\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > jsx > Typescript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        [attr.checked]=\\\\\"node_0_input\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n        [attr.value]=\\\\\"node_1_input\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n  node_0_input = null;\n  node_1_input = \\`Guac (extra)\\`;\n\n  ngOnInit() {\n    this.node_0_input = this.fillings === \\\\\"Guac (extra)\\\\\";\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_input = this.fillings === \\\\\"Guac (extra)\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [class]=\\\\\"node_0_input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n  node_0_input = null;\n\n  ngOnInit() {\n    this.node_0_input = \\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n      this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n    }\\`;\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_input = \\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Javascript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        [attr.checked]=\\\\\"node_0_input\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n        [attr.value]=\\\\\"node_1_input\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n  node_0_input = null;\n  node_1_input = \\`Guac (extra)\\`;\n\n  ngOnInit() {\n    this.node_0_input = this.fillings === \\\\\"Guac (extra)\\\\\";\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_input = this.fillings === \\\\\"Guac (extra)\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [class]=\\\\\"node_0_input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n  node_0_input = null;\n\n  ngOnInit() {\n    this.node_0_input = \\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n      this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n    }\\`;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.node_0_input = \\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with manually creating and handling class properties as bindings (more stable) > svelte > Typescript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.styles.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy;\n  @Input() altText;\n  @Input() _class;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n})\nexport default class SectionComponent {\n  @Input() attributes;\n  @Input() maxWidth;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() accessHere;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Javascript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Remove Internal mitosis package 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n})\nexport default class SectionComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() accessHere!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > jsx > Typescript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Javascript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular with visuallyIgnoreHostElement = false > svelte > Typescript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/angular.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Angular > jsx > Javascript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Advanced 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > AdvancedRef 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic 3`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age = 1;\n  sports = [\\\\\"\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic 4`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Context 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic OnMount Update 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye;\n  @Input() hi;\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Outputs 2`] = `\n\"import { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicAttribute 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicBooleanAttribute 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyBooleanAttributeComponent],\n})\nexport default class MyBooleanAttribute {\n  @Input() type;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicChildComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    MyBasicComponent,\n    MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message) {\n    console.log(message);\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicFor 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRef 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput;\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRefAssignment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > BasicRefPrevious 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Button 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Columns 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Column {\n  @Input() columns;\n  @Input() space;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > ContentSlotHtml 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > ContentSlotJSX 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference = defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes;\n  @Input() content = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > CustomCode 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Embed 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class CustomCode {\n  @Input() replaceNodes;\n  @Input() code;\n\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Form 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, BuilderBlockComponent, BuilderBlocks],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState;\n  @Input() sendWithJs;\n  @Input() sendSubmissionsTo;\n  @Input() action;\n  @Input() customHeaders;\n  @Input() contentType;\n  @Input() sendSubmissionsToEmail;\n  @Input() name;\n  @Input() method;\n  @Input() errorMessagePath;\n  @Input() resetFormOnSubmit;\n  @Input() successUrl;\n  @Input() validate;\n  @Input() attributes;\n  @Input() builderBlock;\n  @Input() errorMessage;\n  @Input() sendingMessage;\n  @Input() successMessage;\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy;\n  @Input() altText;\n  @Input() _class;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Image 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Image {\n  @Input() lazy;\n  @Input() altText;\n  @Input() _class;\n  @Input() image;\n  @Input() srcset;\n  @Input() sizes;\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Image State 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Img 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize;\n  @Input() backgroundPosition;\n  @Input() attributes;\n  @Input() imgSrc;\n  @Input() altText;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Input 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class FormInputComponent {\n  @Input() attributes;\n  @Input() defaultValue;\n  @Input() placeholder;\n  @Input() type;\n  @Input() name;\n  @Input() value;\n  @Input() required;\n  @Input() onChange;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > InputParent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, FormInputComponent],\n})\nexport default class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > NestedStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedStore {\n  _id = \\\\\"abc\\\\\";\n  _messageId = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > RawText 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RawText {\n  @Input() attributes;\n  @Input() text;\n\n  constructor(protected sanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes;\n  @Input() maxWidth;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Section 3`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SectionComponent {\n  @Input() attributes;\n  @Input() maxWidth;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Section 4`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SectionStateComponent {\n  @Input() attributes;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  max = 42;\n  items = [42];\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Select 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SelectComponent {\n  @Input() attributes;\n  @Input() value;\n  @Input() defaultValue;\n  @Input() name;\n  @Input() options;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotDefault 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotHtml 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotJsx 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > SlotNamed 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Stamped.io 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SmileReviews {\n  @Input() apiKey;\n  @Input() productId;\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreComment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreShadowVars 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > StoreWithState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Submit 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SubmitButton {\n  @Input() attributes;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Text 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Text {\n  @Input() text;\n  @Input() content;\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Textarea 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Textarea {\n  @Input() attributes;\n  @Input() placeholder;\n  @Input() name;\n  @Input() value;\n  @Input() defaultValue;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > UseValueAndFnFromStore 2`] = `\n\"import { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id = \\\\\"abc\\\\\";\n  _active = false;\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > Video 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Video {\n  @Input() attributes;\n  @Input() fit;\n  @Input() position;\n  @Input() video;\n  @Input() posterImage;\n  @Input() autoPlay;\n  @Input() muted;\n  @Input() controls;\n  @Input() loop;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() accessHere;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > allSpread 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() accessHere;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > arrowFunctionInUseStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForFragment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForNoTagReference 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true }) tagnameTemplateRef;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true }) iconTemplateRef;\n\n  myContent;\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForwardRef 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicOnUpdateReturn 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n  @ViewChild(\\\\\"_root\\\\\") _root;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(element, customElementSelector) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > changeDetection 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() count;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > class + ClassName + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComp],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > class + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > className + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > className 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > classState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() className;\n  @Input() type;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComplexMetaRaw {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > componentWithContext 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > componentWithContextMultiRoot 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithContext {\n  @Input() content;\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > contentState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RenderContent {\n  @Input() content;\n  @Input() customComponents;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > customSelector 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultProps 2`] = `\n\"import {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText;\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultPropsOutsideComponent 2`] = `\n\"import {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes;\n  @Input() openLinkInNewTab = defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > defaultValsWithTypes 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > dynamicComponent 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef;\n\n  myContent;\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > dynamicComponentWithEventArg 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes;\n  @Input() something;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true }) componentTemplateRef;\n\n  myContent;\n\n  Component = HelloComponent;\n  onClick = function onClick(event) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > eventInputAndChange 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > eventProps 2`] = `\n\"import { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > expressionState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() componentRef;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class FigmaButton {\n  @Input() icon;\n  @Input() interactiveState;\n  @Input() width;\n  @Input() size;\n  @Input() label;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > functionProps 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > getterState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() foo;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > import types 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderBlock],\n})\nexport default class RenderContent {\n  @Input() renderContentProps;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > importRaw 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyImportComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > layerName 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyLayerNameComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleOnUpdate 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleOnUpdateWithDeps 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > multipleSpreads 2`] = `\n\"import { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nativeAttributes 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() disabled;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nestedShow 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() conditionB;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > nestedStyles 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedStyles {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > normalizeLayerNames 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onEvent 2`] = `\n\"import { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInit & onMount 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInit 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInit {\n  @Input() name;\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onInitPlain 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onMount 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onMountMultiple 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onUpdate 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > onUpdateWithDeps 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size;\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > outputEventBinding 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > preserveExportOrLocalStatement 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > preserveTyping 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > prettierInline 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class PrettierInline {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsDestructure 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() type;\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsInterface 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > propsType 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > referencingFunInsideHook 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > renderBlock 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderRepeatedBlock, RenderBlock, BlockStyles],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block;\n  @Input() context;\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef;\n\n  myContent;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > renderContentExample 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderBlocks],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents;\n  @Input() content;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > rootFragmentMultiNode 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link;\n  @Input() attributes;\n  @Input() openLinkInNewTab;\n  @Input() text;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > rootShow 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RenderStyles {\n  @Input() foo;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > sanitizeInnerHTML 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() html;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > self-referencing component 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > self-referencing component with children 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n})\nexport default class MyComponent {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > setState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showExpressions 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n  @Input() conditionB;\n  @Input() conditionC;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithFor 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedShow {\n  @Input() conditionA;\n  @Input() items;\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithOtherValues 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > showWithRootText 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowRootText {\n  @Input() conditionA;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > signals 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled;\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef;\n\n  _counter = 0;\n  _innerText = \\\\\"a\\\\\";\n  handleOutput() {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > signalsOnUpdate 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() id;\n  @Input() foo;\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadAttrs 2`] = `\n\"import { Component, ViewChild, ElementRef, Renderer2 } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadNestedProps 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() nested;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0;\n\n  _listenerFns = new Map();\n\n  setAttributes(el, value, changes) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > spreadProps 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stateInit 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() val;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stateInitSequence 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Comp],\n})\nexport default class MyComponent {\n  @Input() value;\n\n  val = null;\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > store-async-function 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > string-literal-store 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular > jsx > Javascript Test > string-literal-store-kebab 2`] = `\n\"import { Component } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`],standalone: true,imports: [CommonModule]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > styleClassAndCss 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > stylePropClassAndCss 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > subComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Foo],\n})\nexport default class SubComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > svgComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SvgComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > twoForsTrackBy 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeDependency 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeDependency {\n  @Input() foo;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeExternalProps 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeExternalProps {\n  @Input() name;\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeExternalStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeExternalStore {\n  _name = \\\\\"test\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > typeGetterStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeGetterStore {\n  name = \\\\\"test\\\\\";\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style-and-css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > use-style-outside-component 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > useObjectWrapper 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Comp],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > useTarget 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Javascript Test > webComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Remove Internal mitosis package 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Remove Internal mitosis package 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Advanced 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Advanced 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <main>\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><div>{{i}} : {{person}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><span>{{person}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let _ of names\\\\\"><br /></ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        }); index as ee\\\\\"\n      >\n        <pre>{{ee}}</pre>\n      </ng-container>\n      <ng-container\n        *ngFor=\\\\\"let _ of Array.from({\n          length: 10\n        })\\\\\"\n        ><p>{{index}}</p></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as count\\\\\"\n        ><span>{{person}} {{count}}</span></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let person of names; index as i\\\\\"\n        ><span>{{person}} {{i}}</span></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let person of Array.from({\n          length: 10\n        }); index as index\\\\\"\n        ><span>{{person}} {{index}}</span></ng-container\n      >\n    </main>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > AdvancedRef 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Received an update\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicForShowComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForShowComponent],\n})\nexport class MyBasicForShowComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic 3`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      <input\n        [attr.value]=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  name = \\\\\"Steve\\\\\";\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n  age: number = 1;\n  sports: Array<string> = [\\\\\"\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic 4`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-show-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container *ngIf=\\\\\"person === name\\\\\"\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForShowComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Context 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      {{myService.method('hello') + name}} Hello! I can run in React, Vue,\n      Solid, or Liquid!\n\n      <input (change)=\\\\\"onChange()\\\\\" />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  constructor(public myService: MyService) {}\n\n  ngOnInit() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const bye = this.myService.method(\\\\\"hi\\\\\");\n      console.log(bye);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnMountUpdateComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnMountUpdateComponent],\n})\nexport class MyBasicOnMountUpdateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic OnMount Update 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-on-mount-update-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOnMountUpdateComponent {\n  @Input() bye!: Props[\\\\\"bye\\\\\"];\n  @Input() hi!: Props[\\\\\"hi\\\\\"];\n\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Outputs 2`] = `\n\"import { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessageChange = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOutputsComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOutputsComponent],\n})\nexport class MyBasicOutputsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { Output, EventEmitter, Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-outputs-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOutputsComponent {\n  @Input() message!: any;\n  @Output() onMessage = new EventEmitter<any>();\n  @Output() onEvent = new EventEmitter<any>();\n  @Output() onMessageChange = new EventEmitter<any>();\n\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.onMessageChange.emit(this.name);\n      this.onEvent.emit(this.message);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicAttribute 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" [attr.spellcheck]=\\\\\"true\\\\\" />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBooleanAttribute],\n  imports: [CommonModule, MyBooleanAttributeComponentModule],\n  exports: [MyBooleanAttribute],\n})\nexport class MyBooleanAttributeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicBooleanAttribute 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-boolean-attribute\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"children\\\\\"\n        ><ng-content></ng-content> {{type}}</ng-container\n      >\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [toggle]=\\\\\"true\\\\\"\n      ></my-boolean-attribute-component>\n      <my-boolean-attribute-component\n        [list]=\\\\\"null\\\\\"\n      ></my-boolean-attribute-component>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyBooleanAttributeComponent],\n})\nexport default class MyBooleanAttribute {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicChildComponent],\n  imports: [\n    CommonModule,\n    MyBasicComponentModule,\n    MyBasicOnMountUpdateComponentModule,\n    MyBasicOutputsComponentModule,\n  ],\n  exports: [MyBasicChildComponent],\n})\nexport class MyBasicChildComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicChildComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-child-component\\\\\",\n  template: \\`\n    <div>\n      <my-basic-component [id]=\\\\\"dev\\\\\"></my-basic-component>\n      <div>\n        <my-basic-on-mount-update-component\n          [hi]=\\\\\"name\\\\\"\n          [bye]=\\\\\"dev\\\\\"\n        ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component\n          message=\\\\\"Test\\\\\"\n          (messageChange)=\\\\\"$event = $event\\\\\"\n          (event)=\\\\\"log('Test')\\\\\"\n        ></my-basic-outputs-component>\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [\n    CommonModule,\n    MyBasicComponent,\n    MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent,\n  ],\n})\nexport default class MyBasicChildComponent {\n  name = \\\\\"Steve\\\\\";\n  dev = \\\\\"PatrickJS\\\\\";\n  log = function log(message: string) {\n    console.log(message);\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForComponent],\n})\nexport class MyBasicForComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicFor 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let person of names\\\\\"\n        ><ng-container\n          ><input\n            [attr.value]=\\\\\"name\\\\\"\n            (change)=\\\\\"\n          name = $event.target.value + ' and ' + person;\n        \\\\\"\n          />\n\n          Hello {{person}} ! I can run in Qwik, Web Component, React, Vue,\n          Solid, or Liquid!\n        </ng-container></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForComponent {\n  name = \\\\\"PatrickJS\\\\\";\n  names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount code\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefComponent],\n})\nexport class MyBasicRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRef 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"showInput\\\\\"\n        ><ng-container\n          ><input\n            class=\\\\\"input\\\\\"\n            #inputRef\n            [attr.value]=\\\\\"name\\\\\"\n            (blur)=\\\\\"onBlur()\\\\\"\n            (change)=\\\\\"name = $event.target.value\\\\\"\n          />\n          <label for=\\\\\"cars\\\\\" #inputNoArgRef> Choose a car: </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select></ng-container\n        ></ng-container\n      >\n\n      Hello {{lowerCaseName()}} ! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefComponent {\n  @Input() showInput!: Props[\\\\\"showInput\\\\\"];\n\n  @ViewChild(\\\\\"inputRef\\\\\") inputRef!: ElementRef;\n  @ViewChild(\\\\\"inputNoArgRef\\\\\") inputNoArgRef!: ElementRef;\n\n  name = \\\\\"PatrickJS\\\\\";\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.nativeElement?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicRefAssignmentComponent],\n  imports: [CommonModule],\n  exports: [MyBasicRefAssignmentComponent],\n})\nexport class MyBasicRefAssignmentComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRefAssignment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@Component({\n  selector: \\\\\"my-basic-ref-assignment-component\\\\\",\n  template: \\`\n    <div><button (click)=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicRefAssignmentComponent {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this._holdValueRef);\n    this._holdValueRef = this._holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  private _holdValueRef = \\\\\"Patrick\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyPreviousComponent],\n  imports: [CommonModule],\n  exports: [MyPreviousComponent],\n})\nexport class MyPreviousComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > BasicRefPrevious 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n@Component({\n  selector: \\\\\"my-previous-component\\\\\",\n  template: \\`\n    <div>\n      <h1>Now: {{count}} , before: {{this._prevCount}}</h1>\n      <button (click)=\\\\\"count += 1\\\\\">Increment</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyPreviousComponent {\n  count = 0;\n\n  private _prevCount = this.count;\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this._prevCount = this.count;\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Button 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Button 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Columns 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\n@NgModule({\n  declarations: [Column],\n  imports: [CommonModule],\n  exports: [Column],\n})\nexport class ColumnModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Columns 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@Component({\n  selector: \\\\\"column\\\\\",\n  template: \\`\n    <div class=\\\\\"builder-columns div\\\\\">\n      <ng-container *ngFor=\\\\\"let column of columns; index as index\\\\\"\n        ><div class=\\\\\"builder-column div-2\\\\\">\n          {{column.content}} {{index}}\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n        line-height: normal;\n      }\n      @media (max-width: 999px) {\n        .div {\n          flex-direction: row;\n        }\n      }\n      @media (max-width: 639px) {\n        .div {\n          flex-direction: row-reverse;\n        }\n      }\n      .div-2 {\n        flex-grow: 1;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Column {\n  @Input() columns!: ColumnProps[\\\\\"columns\\\\\"];\n  @Input() space!: ColumnProps[\\\\\"space\\\\\"];\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\n@NgModule({\n  declarations: [ContentSlotCode],\n  imports: [CommonModule],\n  exports: [ContentSlotCode],\n})\nexport class ContentSlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > ContentSlotHtml 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[testing]\\\\\"></ng-content>\n      <div><hr /></div>\n      <div><ng-content></ng-content></div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ContentSlotCode {\n  @Input() slotTesting!: Props[\\\\\"slotTesting\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ContentSlotJsxCode],\n  imports: [CommonModule],\n  exports: [ContentSlotJsxCode],\n})\nexport class ContentSlotJsxCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > ContentSlotJSX 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nconst defaultProps: any = {\n  content: \\\\\"\\\\\",\n  slotReference: undefined,\n  slotContent: undefined,\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"content-slot-jsx-code\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"slotReference\\\\\"\n      ><div\n        [attr.name]=\\\\\"slotContent ? 'name1' : 'name2'\\\\\"\n        [attr.title]=\\\\\"slotContent ? 'title1' : 'title2'\\\\\"\n        (click)=\\\\\"show()\\\\\"\n        [class]=\\\\\"cls\\\\\"\n        #elRef0\n      >\n        <ng-container *ngIf=\\\\\"showContent && slotContent\\\\\"\n          ><ng-content select=\\\\\"[content]\\\\\">{{content}}</ng-content></ng-container\n        >\n        <div><hr /></div>\n        <div><ng-content></ng-content></div></div\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ContentSlotJsxCode {\n  @Input() slotContent: Props[\\\\\"slotContent\\\\\"] = defaultProps[\\\\\"slotContent\\\\\"];\n  @Input() slotReference: Props[\\\\\"slotReference\\\\\"] =\n    defaultProps[\\\\\"slotReference\\\\\"];\n  @Input() attributes!: Props[\\\\\"attributes\\\\\"];\n  @Input() content: Props[\\\\\"content\\\\\"] = defaultProps[\\\\\"content\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  name = \\\\\"king\\\\\";\n  showContent = false;\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > CustomCode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > CustomCode 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Embed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [CustomCode],\n  imports: [CommonModule],\n  exports: [CustomCode],\n})\nexport class CustomCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Embed 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@Component({\n  selector: \\\\\"custom-code\\\\\",\n  template: \\`\n    <div\n      #elem\n      [class]=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(code)\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class CustomCode {\n  @Input() replaceNodes!: CustomCodeProps[\\\\\"replaceNodes\\\\\"];\n  @Input() code!: CustomCodeProps[\\\\\"code\\\\\"];\n\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  scriptsInserted = [];\n  scriptsRun = [];\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem?.nativeElement && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem?.nativeElement.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.findAndRunScripts();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Form 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormComponent],\n  imports: [CommonModule, BuilderBlockComponentModule, BuilderBlocksModule],\n  exports: [FormComponent],\n})\nexport class FormComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Form 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\n@Component({\n  selector: \\\\\"form-component\\\\\",\n  template: \\`\n    <form\n      [attr.validate]=\\\\\"validate\\\\\"\n      #formRef\n      [attr.action]=\\\\\"!sendWithJs && action\\\\\"\n      [attr.method]=\\\\\"method\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      (submit)=\\\\\"onSubmit($event)\\\\\"\n      #elRef0\n    >\n      <ng-container *ngIf=\\\\\"builderBlock && builderBlock.children\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let block of builderBlock?.children; index as index; trackBy: trackByBlock0\\\\\"\n          ><builder-block-component\n            [block]=\\\\\"block\\\\\"\n            [index]=\\\\\"index\\\\\"\n          ></builder-block-component></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          [blocks]=\\\\\"errorMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'sending'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          [blocks]=\\\\\"sendingMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'error' && responseData\\\\\">\n        <pre class=\\\\\"builder-form-error-text pre\\\\\">{{responseData | json}}</pre>\n      </ng-container>\n      <ng-container *ngIf=\\\\\"submissionState === 'success'\\\\\"\n        ><builder-blocks\n          dataPath=\\\\\"successMessage\\\\\"\n          [blocks]=\\\\\"successMessage!\\\\\"\n        ></builder-blocks\n      ></ng-container>\n    </form>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .pre {\n        padding: 10px;\n        color: red;\n        text-align: center;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, BuilderBlockComponent, BuilderBlocks],\n})\nexport default class FormComponent {\n  builder = builder;\n\n  @Input() previewState!: FormProps[\\\\\"previewState\\\\\"];\n  @Input() sendWithJs!: FormProps[\\\\\"sendWithJs\\\\\"];\n  @Input() sendSubmissionsTo!: FormProps[\\\\\"sendSubmissionsTo\\\\\"];\n  @Input() action!: FormProps[\\\\\"action\\\\\"];\n  @Input() customHeaders!: FormProps[\\\\\"customHeaders\\\\\"];\n  @Input() contentType!: FormProps[\\\\\"contentType\\\\\"];\n  @Input() sendSubmissionsToEmail!: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"];\n  @Input() name!: FormProps[\\\\\"name\\\\\"];\n  @Input() method!: FormProps[\\\\\"method\\\\\"];\n  @Input() errorMessagePath!: FormProps[\\\\\"errorMessagePath\\\\\"];\n  @Input() resetFormOnSubmit!: FormProps[\\\\\"resetFormOnSubmit\\\\\"];\n  @Input() successUrl!: FormProps[\\\\\"successUrl\\\\\"];\n  @Input() validate!: FormProps[\\\\\"validate\\\\\"];\n  @Input() attributes!: FormProps[\\\\\"attributes\\\\\"];\n  @Input() builderBlock!: FormProps[\\\\\"builderBlock\\\\\"];\n  @Input() errorMessage!: FormProps[\\\\\"errorMessage\\\\\"];\n  @Input() sendingMessage!: FormProps[\\\\\"sendingMessage\\\\\"];\n  @Input() successMessage!: FormProps[\\\\\"successMessage\\\\\"];\n\n  @ViewChild(\\\\\"formRef\\\\\") formRef!: ElementRef;\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  formState = \\\\\"unsubmitted\\\\\";\n  responseData = null;\n  formErrorMessage = \\\\\"\\\\\";\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef?.nativeElement) {\n        this.formRef?.nativeElement.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef?.nativeElement) {\n              this.formRef?.nativeElement.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef?.nativeElement.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef?.nativeElement) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef?.nativeElement.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef?.nativeElement) {\n            this.formRef?.nativeElement.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  trackByBlock0(index, block) {\n    return block.id;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Image 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n})\nexport default class Image {\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Image],\n  imports: [CommonModule],\n  exports: [Image],\n})\nexport class ImageModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Image 2`] = `\n\"import { Component, ViewChild, ElementRef, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"image\\\\\",\n  template: \\`\n    <div>\n      <picture #pictureRef\n        ><ng-container *ngIf=\\\\\"!useLazyLoading() || load\\\\\"\n          ><img\n            [attr.alt]=\\\\\"altText\\\\\"\n            [attr.aria-role]=\\\\\"altText ? 'presentation' : undefined\\\\\"\n            [class]=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n            [attr.src]=\\\\\"image\\\\\"\n            (load)=\\\\\"setLoaded()\\\\\"\n            [attr.srcset]=\\\\\"srcset\\\\\"\n            [attr.sizes]=\\\\\"sizes\\\\\"\n        /></ng-container>\n        <source [attr.srcset]=\\\\\"srcset\\\\\"\n      /></picture>\n      <ng-content></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .img {\n        opacity: 1;\n        transition: opacity 0.2s ease-in-out;\n        object-fit: cover;\n        object-position: center;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Image {\n  @Input() lazy!: ImageProps[\\\\\"lazy\\\\\"];\n  @Input() altText!: ImageProps[\\\\\"altText\\\\\"];\n  @Input() _class!: ImageProps[\\\\\"_class\\\\\"];\n  @Input() image!: ImageProps[\\\\\"image\\\\\"];\n  @Input() srcset!: ImageProps[\\\\\"srcset\\\\\"];\n  @Input() sizes!: ImageProps[\\\\\"sizes\\\\\"];\n\n  @ViewChild(\\\\\"pictureRef\\\\\") pictureRef!: ElementRef;\n\n  scrollListener = null;\n  imageLoaded = false;\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  load = false;\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this.useLazyLoading()) {\n        // throttled scroll capture listener\n        const listener = () => {\n          if (this.pictureRef?.nativeElement) {\n            const rect = this.pictureRef?.nativeElement.getBoundingClientRect();\n            const buffer = window.innerHeight / 2;\n\n            if (rect.top < window.innerHeight + buffer) {\n              this.load = true;\n              this.scrollListener = null;\n              window.removeEventListener(\\\\\"scroll\\\\\", listener);\n            }\n          }\n        };\n\n        this.scrollListener = listener;\n        window.addEventListener(\\\\\"scroll\\\\\", listener, {\n          capture: true,\n          passive: true,\n        });\n        listener();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Image State 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\n@NgModule({\n  declarations: [ImgStateComponent],\n  imports: [CommonModule],\n  exports: [ImgStateComponent],\n})\nexport class ImgStateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Image State 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"img-state-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of images; index as itemIndex\\\\\"\n        ><ng-container\n          ><img class=\\\\\"custom-class\\\\\" [attr.src]=\\\\\"item\\\\\" /></ng-container\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ImgStateComponent {\n  canShow = true;\n  images = [\\\\\"http://example.com/qwik.png\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Img 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [ImgComponent],\n  imports: [CommonModule],\n  exports: [ImgComponent],\n})\nexport class ImgComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Img 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"img-component\\\\\",\n  template: \\`\n    <img\n      [ngStyle]=\\\\\"{\n          objectFit: backgroundSize || 'cover',\n          objectPosition: backgroundPosition || 'center'\n        }\\\\\"\n      [attr.alt]=\\\\\"altText\\\\\"\n      [attr.src]=\\\\\"imgSrc\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ImgComponent {\n  @Input() backgroundSize!: ImgProps[\\\\\"backgroundSize\\\\\"];\n  @Input() backgroundPosition!: ImgProps[\\\\\"backgroundPosition\\\\\"];\n  @Input() attributes!: ImgProps[\\\\\"attributes\\\\\"];\n  @Input() imgSrc!: ImgProps[\\\\\"imgSrc\\\\\"];\n  @Input() altText!: ImgProps[\\\\\"altText\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Input 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [FormInputComponent],\n  imports: [CommonModule],\n  exports: [FormInputComponent],\n})\nexport class FormInputComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Input 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"form-input-component\\\\\",\n  template: \\`\n    <input\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.type]=\\\\\"type\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.required]=\\\\\"required\\\\\"\n      (change)=\\\\\"onChange?.($event.target.value)\\\\\"\n      #elRef0\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class FormInputComponent {\n  @Input() attributes!: FormInputProps[\\\\\"attributes\\\\\"];\n  @Input() defaultValue!: FormInputProps[\\\\\"defaultValue\\\\\"];\n  @Input() placeholder!: FormInputProps[\\\\\"placeholder\\\\\"];\n  @Input() type!: FormInputProps[\\\\\"type\\\\\"];\n  @Input() name!: FormInputProps[\\\\\"name\\\\\"];\n  @Input() value!: FormInputProps[\\\\\"value\\\\\"];\n  @Input() required!: FormInputProps[\\\\\"required\\\\\"];\n  @Input() onChange!: FormInputProps[\\\\\"onChange\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > InputParent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n@NgModule({\n  declarations: [Stepper],\n  imports: [CommonModule, FormInputComponentModule],\n  exports: [Stepper],\n})\nexport class StepperModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > InputParent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\n@Component({\n  selector: \\\\\"stepper\\\\\",\n  template: \\`\n    <form-input-component\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      (change)=\\\\\"handleChange($event)\\\\\"\n    ></form-input-component>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, FormInputComponent],\n})\nexport default class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > NestedStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [NestedStore],\n  imports: [CommonModule],\n  exports: [NestedStore],\n})\nexport class NestedStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > NestedStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@Component({\n  selector: \\\\\"nested-store\\\\\",\n  template: \\`\n    <div [attr.id]=\\\\\"_id\\\\\">\n      Test\n\n      <p [attr.id]=\\\\\"_messageId\\\\\">Message</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedStore {\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _messageId: MyStore[\\\\\"_messageId\\\\\"] = null;\n\n  ngOnInit() {\n    this._messageId = this._id + \\\\\"-message\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > RawText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [RawText],\n  imports: [CommonModule],\n  exports: [RawText],\n})\nexport class RawTextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > RawText 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@Component({\n  selector: \\\\\"raw-text\\\\\",\n  template: \\`\n    <span\n      [class]=\\\\\"attributes?.class || attributes?.className\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || '')\\\\\"\n    ></span>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RawText {\n  @Input() attributes!: RawTextProps[\\\\\"attributes\\\\\"];\n  @Input() text!: RawTextProps[\\\\\"text\\\\\"];\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Section 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionComponent],\n  imports: [CommonModule],\n  exports: [SectionComponent],\n})\nexport class SectionComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Section 2`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SectionStateComponent],\n  imports: [CommonModule],\n  exports: [SectionStateComponent],\n})\nexport class SectionStateComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Section 3`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-component\\\\\",\n  template: \\`\n    <section\n      [ngStyle]=\\\\\"maxWidth && typeof maxWidth === 'number' ? {\n          maxWidth: maxWidth\n        } : undefined\\\\\"\n      #elRef0\n    >\n      <ng-content></ng-content>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SectionComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n  @Input() maxWidth!: SectionProps[\\\\\"maxWidth\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Section 4`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n@Component({\n  selector: \\\\\"section-state-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"max\\\\\"\n      ><ng-container *ngFor=\\\\\"let item of items\\\\\"\n        ><section\n          [ngStyle]=\\\\\"{\n          maxWidth: item + max\n        }\\\\\"\n          #elRef0\n        >\n          <ng-content></ng-content></section></ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SectionStateComponent {\n  @Input() attributes!: SectionProps[\\\\\"attributes\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  max = 42;\n  items = [42];\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Select 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SelectComponent],\n  imports: [CommonModule],\n  exports: [SelectComponent],\n})\nexport class SelectComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Select 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"select-component\\\\\",\n  template: \\`\n    <select\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      #elRef0\n    >\n      <ng-container *ngFor=\\\\\"let option of options; index as index\\\\\"\n        ><option [attr.value]=\\\\\"option.value\\\\\" [attr.data-index]=\\\\\"index\\\\\">\n          {{option.name || option.value}}\n        </option></ng-container\n      >\n    </select>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SelectComponent {\n  @Input() attributes!: FormSelectProps[\\\\\"attributes\\\\\"];\n  @Input() value!: FormSelectProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: FormSelectProps[\\\\\"defaultValue\\\\\"];\n  @Input() name!: FormSelectProps[\\\\\"name\\\\\"];\n  @Input() options!: FormSelectProps[\\\\\"options\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotDefault 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content><div class=\\\\\"default-slot\\\\\">Default content</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotHtml 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code\n        ><ng-content><div>Hello</div></ng-content></content-slot-code\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule, ContentSlotCodeModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotJsx 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <content-slot-code [slotTesting]=\\\\\"<div>Hello</div>\\\\\"></content-slot-code>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, ContentSlotCode],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SlotCode {}\n\n@NgModule({\n  declarations: [SlotCode],\n  imports: [CommonModule],\n  exports: [SlotCode],\n})\nexport class SlotCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > SlotNamed 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@Component({\n  selector: \\\\\"slot-code\\\\\",\n  template: \\`\n    <div>\n      <ng-content select=\\\\\"[my-awesome-slot]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[top]\\\\\"></ng-content>\n      <ng-content select=\\\\\"[left]\\\\\">Default left</ng-content>\n      <ng-content>Default Child</ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SlotCode {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SmileReviews],\n  imports: [CommonModule],\n  exports: [SmileReviews],\n})\nexport class SmileReviewsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Stamped.io 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n@Component({\n  selector: \\\\\"smile-reviews\\\\\",\n  template: \\`\n    <div [attr.data-user]=\\\\\"name\\\\\">\n      <button (click)=\\\\\"showReviewPrompt = true\\\\\">Write a review</button>\n      <ng-container *ngIf=\\\\\"showReviewPrompt || 'asdf'\\\\\"\n        ><input placeholder=\\\\\"Email\\\\\" />\n        <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          class=\\\\\"textarea\\\\\"\n        ></textarea>\n        <button\n          class=\\\\\"button\\\\\"\n          (click)=\\\\\"\n          $event.preventDefault();\n          showReviewPrompt = false;\n        \\\\\"\n        >\n          Submit\n        </button></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let review of reviews; index as index; trackBy: trackByReview0\\\\\"\n        ><div class=\\\\\"review\\\\\">\n          <img class=\\\\\"img\\\\\" [attr.src]=\\\\\"review.avatar\\\\\" />\n          <div [class]=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n            <div>N: {{index}}</div>\n            <div>{{review.author}}</div>\n            <div>{{review.reviewMessage}}</div>\n          </div>\n        </div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        display: block;\n      }\n      .textarea {\n        display: block;\n      }\n      .button {\n        display: block;\n      }\n      .review {\n        margin: 10px;\n        padding: 10px;\n        background: white;\n        display: flex;\n        border-radius: 5px;\n        box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        -webkit-font-smoothing: antialiased;\n      }\n      .img {\n        height: 30px;\n        width: 30px;\n        margin-right: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SmileReviews {\n  @Input() apiKey!: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  @Input() productId!: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  reviews = [];\n  name = \\\\\"test\\\\\";\n  showReviewPrompt = false;\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n  trackByReview0(index, review) {\n    return review.id;\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      fetch(\n        \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n          this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n        }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n      )\n        .then((res) => res.json())\n        .then((data) => {\n          this.reviews = data.data;\n        });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreComment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreComment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <ng-container>{{foo}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  foo = true;\n  bar() {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreShadowVars 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{foo(errors)}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  errors = {};\n  foo(errors) {\n    return errors;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > StoreWithState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <ng-container>{{bar()}}</ng-container> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  foo = false;\n  bar() {\n    return this.foo;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Submit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SubmitButton],\n  imports: [CommonModule],\n  exports: [SubmitButton],\n})\nexport class SubmitButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Submit 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n@Component({\n  selector: \\\\\"submit-button\\\\\",\n  template: \\` <button type=\\\\\"submit\\\\\" #elRef0>{{text}}</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SubmitButton {\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Text 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [Text],\n  imports: [CommonModule],\n  exports: [Text],\n})\nexport class TextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Text 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n@Component({\n  selector: \\\\\"text\\\\\",\n  template: \\`\n    <div\n      [attr.contentEditable]=\\\\\"allowEditingText || undefined\\\\\"\n      [attr.data-name]=\\\\\"{\n          test: name || 'any name'\n        }\\\\\"\n      [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(text || content || name || '<p class=&quot;text-lg&quot;>my name</p>')\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Text {\n  @Input() text!: TextProps[\\\\\"text\\\\\"];\n  @Input() content!: TextProps[\\\\\"content\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Textarea 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Textarea],\n  imports: [CommonModule],\n  exports: [Textarea],\n})\nexport class TextareaModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Textarea 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n@Component({\n  selector: \\\\\"textarea\\\\\",\n  template: \\`\n    <textarea\n      [attr.placeholder]=\\\\\"placeholder\\\\\"\n      [attr.name]=\\\\\"name\\\\\"\n      [attr.value]=\\\\\"value\\\\\"\n      [attr.defaultValue]=\\\\\"defaultValue\\\\\"\n      #elRef0\n    ></textarea>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Textarea {\n  @Input() attributes!: TextareaProps[\\\\\"attributes\\\\\"];\n  @Input() placeholder!: TextareaProps[\\\\\"placeholder\\\\\"];\n  @Input() name!: TextareaProps[\\\\\"name\\\\\"];\n  @Input() value!: TextareaProps[\\\\\"value\\\\\"];\n  @Input() defaultValue!: TextareaProps[\\\\\"defaultValue\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseValueAndFnFromStore],\n  imports: [CommonModule],\n  exports: [UseValueAndFnFromStore],\n})\nexport class UseValueAndFnFromStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > UseValueAndFnFromStore 2`] = `\n\"import { Output, EventEmitter, Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@Component({\n  selector: \\\\\"use-value-and-fn-from-store\\\\\",\n  template: \\` <div>Test</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class UseValueAndFnFromStore {\n  @Output() onChange = new EventEmitter<any>();\n\n  _id: MyStore[\\\\\"_id\\\\\"] = \\\\\"abc\\\\\";\n  _active: MyStore[\\\\\"_active\\\\\"] = false;\n  _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange.emit(this._active);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      if (this._do) {\n        this._do(this._id);\n      }\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Video 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Video],\n  imports: [CommonModule],\n  exports: [Video],\n})\nexport class VideoModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > Video 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n@Component({\n  selector: \\\\\"video\\\\\",\n  template: \\`\n    <video\n      preload=\\\\\"none\\\\\"\n      [ngStyle]=\\\\\"useObjectWrapper({\n          width: '100%' },{\n          height: '100%' },\n          attributes?.style,{\n          objectFit: fit },{\n          objectPosition: position },{\n              borderRadius: 1 },)\\\\\"\n      [attr.poster]=\\\\\"posterImage\\\\\"\n      [attr.autoplay]=\\\\\"autoPlay\\\\\"\n      [attr.muted]=\\\\\"muted\\\\\"\n      [attr.controls]=\\\\\"controls\\\\\"\n      [attr.loop]=\\\\\"loop\\\\\"\n      #elRef0\n    ></video>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Video {\n  @Input() attributes!: VideoProps[\\\\\"attributes\\\\\"];\n  @Input() fit!: VideoProps[\\\\\"fit\\\\\"];\n  @Input() position!: VideoProps[\\\\\"position\\\\\"];\n  @Input() video!: VideoProps[\\\\\"video\\\\\"];\n  @Input() posterImage!: VideoProps[\\\\\"posterImage\\\\\"];\n  @Input() autoPlay!: VideoProps[\\\\\"autoPlay\\\\\"];\n  @Input() muted!: VideoProps[\\\\\"muted\\\\\"];\n  @Input() controls!: VideoProps[\\\\\"controls\\\\\"];\n  @Input() loop!: VideoProps[\\\\\"loop\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > allSpread 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() accessHere!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > allSpread 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div #elRef0>\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more\n      frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() accessHere!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrsUsingUseState = {\n    hello: \\\\\"world\\\\\",\n  };\n  properties = {\n    style: \\\\\"color: blue\\\\\",\n    onClick: () => console.log(\\\\\"pressed\\\\\"),\n  };\n  specifics = {\n    someSpecificState: \\\\\"specific\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n  elRef0_state_0 = null;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.elRef0_state_0 = {\n      someOtherAttrs: this.accessHere,\n      someStateAttrs: this.specifics,\n    };\n  }\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrsUsingUseState);\n    this.setAttributes(this.elRef0?.nativeElement, this.properties);\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef0?.nativeElement, this.elRef0_state_0);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrsUsingUseState,\n        changes[\\\\\"attrsUsingUseState\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.properties,\n        changes[\\\\\"properties\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.elRef0_state_0 = {\n        someOtherAttrs: this.accessHere,\n        someStateAttrs: this.specifics,\n      };\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.elRef0_state_0,\n        changes[\\\\\"elRef0_state_0\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > arrowFunctionInUseStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>Hello {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"steve\\\\\";\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\n@NgModule({\n  declarations: [BasicForFragment],\n  imports: [CommonModule],\n  exports: [BasicForFragment],\n})\nexport class BasicForFragmentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForFragment 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-for-fragment\\\\\",\n  template: \\`\n    <div>\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption0\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <ng-container\n        *ngFor=\\\\\"let option of ['a', 'b', 'c']; trackBy: trackByOption1\\\\\"\n        ><ng-container\n          ><div>{{option}}</div></ng-container\n        ></ng-container\n      >\n      <select>\n        <ng-container\n          *ngFor=\\\\\"let option of ['d', 'e', 'f']; trackBy: trackByOption2\\\\\"\n          ><option [attr.value]=\\\\\"option\\\\\">{{option}}</option></ng-container\n        >\n      </select>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicForFragment {\n  id = \\\\\"xyz\\\\\";\n  trackByOption0(_, option) {\n    return \\`key-\\${option}\\`;\n  }\n  trackByOption1(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n  trackByOption2(_, option) {\n    return \\`\\${this.id}-\\${option}\\`;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicForNoTagRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForNoTagRefComponent],\n})\nexport class MyBasicForNoTagRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForNoTagReference 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  template: \\`\n    <ng-template #iconTemplate></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              TagNameGetter;\n              inputs: {  };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForNoTagRefComponent {\n  @Input() actions!: any;\n\n  @ViewChild(\\\\\"tagnamegetterTemplate\\\\\", { static: true })\n  tagnamegetterTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagnameTemplate\\\\\", { static: true })\n  tagnameTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"iconTemplate\\\\\", { static: true })\n  iconTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  name = \\\\\"VincentW\\\\\";\n  TagName = \\\\\"div\\\\\";\n  tag = \\\\\"span\\\\\";\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.tagnamegetterTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.tagnameTemplateRef).rootNodes,\n      this.vcRef.createEmbeddedView(this.iconTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForwardRef 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicForwardRefComponent],\n  imports: [CommonModule],\n  exports: [MyBasicForwardRefComponent],\n})\nexport class MyBasicForwardRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@Component({\n  selector: \\\\\"my-basic-forward-ref-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicForwardRefComponent {\n  name = \\\\\"PatrickJS\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicOnUpdateReturnComponent],\n  imports: [CommonModule],\n  exports: [MyBasicOnUpdateReturnComponent],\n})\nexport class MyBasicOnUpdateReturnComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicOnUpdateReturn 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-on-update-return-component\\\\\",\n  template: \\` <div>Hello! {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicOnUpdateReturnComponent {\n  name = \\\\\"PatrickJS\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          this.name = data.name;\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingComponent],\n})\nexport class BasicRefAttributePassingComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-component\\\\\",\n  template: \\` <button #buttonRef #_root>Attribute Passing</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicRefAttributePassingComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n  @ViewChild(\\\\\"_root\\\\\") _root!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this._root?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\n@NgModule({\n  declarations: [BasicRefAttributePassingCustomRefComponent],\n  imports: [CommonModule],\n  exports: [BasicRefAttributePassingCustomRefComponent],\n})\nexport class BasicRefAttributePassingCustomRefComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  template: \\` <div><button #buttonRef>Attribute Passing</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class BasicRefAttributePassingCustomRefComponent {\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n    const element: HTMLElement | null = this.buttonRef?.nativeElement;\n    this.enableAttributePassing(\n      element,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > changeDetection 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > changeDetection 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"changeDetection\\\\\":\\\\\"OnPush\\\\\"}}\n          */\n\nimport { Component, Input, ChangeDetectionStrategy } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{count}}</div> \\`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() count!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule, MyCompModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > class + ClassName + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </my-comp>\n      <div class=\\\\\"test2 test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComp],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > class + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > class + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > className + css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > className + css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div class=\\\\\"test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > className 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\n@NgModule({\n  declarations: [ClassNameCode],\n  imports: [CommonModule],\n  exports: [ClassNameCode],\n})\nexport class ClassNameCodeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > className 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n@Component({\n  selector: \\\\\"class-name-code\\\\\",\n  template: \\`\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div [class]=\\\\\"bindings\\\\\">With binding</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ClassNameCode {\n  bindings = \\\\\"a binding\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > classState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > classState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"classState + ' div'\\\\\" [ngStyle]=\\\\\"styleState\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  classState = \\\\\"testClassName\\\\\";\n  styleState = {\n    color: \\\\\"red\\\\\",\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div [class]=\\\\\"className\\\\\">\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() className!: Props[\\\\\"className\\\\\"];\n  @Input() type!: Props[\\\\\"type\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComplexMetaRaw {}\n\n@NgModule({\n  declarations: [ComplexMetaRaw],\n  imports: [CommonModule],\n  exports: [ComplexMetaRaw],\n})\nexport class ComplexMetaRawModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"complex-meta-raw\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComplexMetaRaw {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > componentWithContext 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\n@NgModule({\n  declarations: [ComponentWithContext],\n  imports: [CommonModule],\n  exports: [ComponentWithContext],\n})\nexport class ComponentWithContextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > componentWithContextMultiRoot 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n@Component({\n  selector: \\\\\"component-with-context\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container>{{foo.value}}</ng-container>\n      <div>other</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithContext {\n  @Input() content!: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  constructor(public foo: Context1) {}\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > contentState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > contentState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <div>setting context</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RenderContent {\n  @Input() content!: any;\n  @Input() customComponents!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > customSelector 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > customSelector 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"selector\\\\\":\\\\\"not-my-component\\\\\"}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"not-my-component\\\\\",\n  template: \\` <span>My selector shouldn't be my-component!</span> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultProps 2`] = `\n\"import {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit()\\\\\" #elRef1>\n          {{buttonText}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Input() buttonText!: ButtonProps[\\\\\"buttonText\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultPropsOutsideComponent 2`] = `\n\"import {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nconst defaultProps: any = {\n  text: \\\\\"default text\\\\\",\n  link: \\\\\"https://builder.io/\\\\\",\n  openLinkInNewTab: false,\n  onClick: () => {},\n};\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" (click)=\\\\\"this.onClick.emit($event)\\\\\" #elRef1>\n          {{text}}\n        </button></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link: ButtonProps[\\\\\"link\\\\\"] = defaultProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] =\n    defaultProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text: ButtonProps[\\\\\"text\\\\\"] = defaultProps[\\\\\"text\\\\\"];\n  @Output() onClick = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [ComponentWithTypes],\n  imports: [CommonModule],\n  exports: [ComponentWithTypes],\n})\nexport class ComponentWithTypesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > defaultValsWithTypes 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n@Component({\n  selector: \\\\\"component-with-types\\\\\",\n  template: \\` <div>Hello {{name || DEFAULT_VALUES.name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ComponentWithTypes {\n  DEFAULT_VALUES = DEFAULT_VALUES;\n\n  @Input() name!: Props[\\\\\"name\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > dynamicComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > dynamicComponent 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #objTemplate>\n      hello\n\n      <ng-content></ng-content\n    ></ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              obj.Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"objTemplate\\\\\", { static: true }) objTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  obj = {\n    name: \\\\\"foo\\\\\",\n    Component: FooComponent,\n  };\n  onClick = function onClick() {\n    console.log(\\\\\"hello\\\\\");\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.objTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > dynamicComponentWithEventArg 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > dynamicComponentWithEventArg 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-template #componentTemplate> hello </ng-template>\n    <ng-container\n      *ngComponentOutlet=\\\\\"\n              Component;\n              inputs: { hello: 'world', onClick: onClick.bind(this), attributes: attributes, something: something };\n              content: myContent;\n              \\\\\"\n    >\n    </ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() attributes!: any;\n  @Input() something!: any;\n\n  @ViewChild(\\\\\"componentTemplate\\\\\", { static: true })\n  componentTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  Component = HelloComponent;\n  onClick = function onClick(event: any) {\n    console.log(\\\\\"hello\\\\\", event);\n  };\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.componentTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [EventInputAndChange],\n  imports: [CommonModule],\n  exports: [EventInputAndChange],\n})\nexport class EventInputAndChangeModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > eventInputAndChange 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"event-input-and-change\\\\\",\n  template: \\`\n    <div>\n      <input\n        class=\\\\\"input\\\\\"\n        [attr.value]=\\\\\"name\\\\\"\n        (input)=\\\\\"name = $event.target.value\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class EventInputAndChange {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > eventProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [EventPropsComponent],\n  imports: [CommonModule],\n  exports: [EventPropsComponent],\n})\nexport class EventPropsComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > eventProps 2`] = `\n\"import { Output, EventEmitter, Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n@Component({\n  selector: \\\\\"event-props-component\\\\\",\n  template: \\` <button (click)=\\\\\"handleClick()\\\\\">Test</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class EventPropsComponent {\n  @Output() onGetVoid = new EventEmitter<any>();\n  @Output() onEnter = new EventEmitter<any>();\n  @Output() onPass = new EventEmitter<any>();\n\n  handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (this.onGetVoid) {\n      this.onGetVoid.emit();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter.emit());\n    }\n\n    if (this.onPass) {\n      this.onPass.emit(\\\\\"test\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > expressionState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > expressionState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{refToUse}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() componentRef!: any;\n\n  refToUse = null;\n\n  ngOnInit() {\n    this.refToUse = !(this.componentRef instanceof Function)\n      ? this.componentRef\n      : null;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\n@NgModule({\n  declarations: [FigmaButton],\n  imports: [CommonModule],\n  exports: [FigmaButton],\n})\nexport class FigmaButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"figma-button\\\\\",\n  template: \\`\n    <button\n      [attr.data-icon]=\\\\\"icon\\\\\"\n      [attr.data-disabled]=\\\\\"interactiveState\\\\\"\n      [attr.data-width]=\\\\\"width\\\\\"\n      [attr.data-size]=\\\\\"size\\\\\"\n    >\n      {{label}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class FigmaButton {\n  @Input() icon!: any;\n  @Input() interactiveState!: any;\n  @Input() width!: any;\n  @Input() size!: any;\n  @Input() label!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > functionProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > functionProps 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <p\n      [attr.f]=\\\\\"() => x\\\\\"\n      [attr.f1]=\\\\\"x => x\\\\\"\n      [attr.f2]=\\\\\"x => {}\\\\\"\n      [attr.f3]=\\\\\"function () {\n          return x;\n        }\\\\\"\n      [attr.f4]=\\\\\"function (x) {\n          return x;\n        }\\\\\"\n      [attr.f5]=\\\\\"function (x) {\n          return;\n        }\\\\\"\n      [attr.f6]=\\\\\"function () {\n          return;\n        }\\\\\"\n      [attr.f7]=\\\\\"(a, b, c) => a + b + c\\\\\"\n    ></p>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > getterState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > getterState 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <div>\n      <p>{{foo2}}</p>\n      <p>{{bar}}</p>\n      <p>{{baz(1)}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() foo!: ButtonProps[\\\\\"foo\\\\\"];\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > import types 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlockModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > import types 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\` <render-block></render-block> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderBlock],\n})\nexport default class RenderContent {\n  @Input() renderContentProps!: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > importRaw 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyImportComponent {}\n\n@NgModule({\n  declarations: [MyImportComponent],\n  imports: [CommonModule],\n  exports: [MyImportComponent],\n})\nexport class MyImportComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > importRaw 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-import-component\\\\\",\n  template: \\` <div>Testing which imports get excluded!</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyImportComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > layerName 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyLayerNameComponent {}\n\n@NgModule({\n  declarations: [MyLayerNameComponent],\n  imports: [CommonModule],\n  exports: [MyLayerNameComponent],\n})\nexport class MyLayerNameComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > layerName 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-layer-name-component\\\\\",\n  template: \\`\n    <section>\n      <div class=\\\\\"layer-name\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .layer-name {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyLayerNameComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdate],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdate],\n})\nexport class MultipleOnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleOnUpdate 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MultipleOnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n      console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MultipleOnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [MultipleOnUpdateWithDeps],\n})\nexport class MultipleOnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleOnUpdateWithDeps 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"multiple-on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MultipleOnUpdateWithDeps {\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n  c = \\\\\"c\\\\\";\n  d = \\\\\"d\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n      console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n      if (this.a === \\\\\"a\\\\\") {\n        this.a = \\\\\"b\\\\\";\n      }\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > multipleSpreads 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nativeAttributes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nativeAttributes 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeAttributes\\\\\":[\\\\\"disabled\\\\\"]}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [disabled]=\\\\\"disabled\\\\\" />\n\n      Hello! If someone passes \\\\\\\\\\`[disabled]=\\\\\"false\\\\\"\\\\\\\\\\` to me, disabled shouldn't\n      be visible in the DOM.\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nestedShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nestedShow 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container *ngIf=\\\\\"!conditionB\\\\\"\n        ><div>if condition A and condition B</div></ng-container\n      ><ng-container *ngIf=\\\\\"!(!conditionB)\\\\\"\n        ><div>else-condition-B</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n})\nexport default class NestedStyles {}\n\n@NgModule({\n  declarations: [NestedStyles],\n  imports: [CommonModule],\n  exports: [NestedStyles],\n})\nexport class NestedStylesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > nestedStyles 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"nested-styles\\\\\",\n  template: \\` <div class=\\\\\"div\\\\\">Hello world</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        --bar: red;\n        color: var(--bar);\n      }\n      @media (max-width: env(--mobile)) {\n        .div {\n          display: block;\n        }\n      }\n      .div:hover {\n        display: flex;\n      }\n      .div:active {\n        display: inline;\n      }\n      .div .nested-selector {\n        display: grid;\n      }\n      .div .nested-selector:hover {\n        display: block;\n      }\n      .div.nested-selector:active {\n        display: inline-block;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedStyles {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\n@NgModule({\n  declarations: [MyNormalizedLayerNamesComponent],\n  imports: [CommonModule],\n  exports: [MyNormalizedLayerNamesComponent],\n})\nexport class MyNormalizedLayerNamesComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > normalizeLayerNames 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@Component({\n  selector: \\\\\"my-normalized-layer-names-component\\\\\",\n  template: \\`\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0\\\\\">Single Number</div>\n      <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n      <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n      <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n      <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n    </section>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .css-0 {\n        margin: 10px;\n      }\n      .css-123 {\n        padding: 10px;\n      }\n      .name-123 {\n        border: 1px solid;\n      }\n      .name {\n        color: red;\n      }\n      .name-789 {\n        background: blue;\n      }\n      .div {\n        background: blue;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyNormalizedLayerNamesComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onEvent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Embed],\n  imports: [CommonModule],\n  exports: [Embed],\n})\nexport class EmbedModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onEvent 2`] = `\n\"import { Component, ViewChild, ElementRef } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"embed\\\\\",\n  template: \\` <div class=\\\\\"builder-embed\\\\\" #elem><div>Test</div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Embed {\n  @ViewChild(\\\\\"elem\\\\\") elem!: ElementRef;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.elem?.nativeElement.dispatchEvent(\n        new CustomEvent(\\\\\"initEditingBldr\\\\\")\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInit & onMount 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInit {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInit],\n  imports: [CommonModule],\n  exports: [OnInit],\n})\nexport class OnInitModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInit 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n@Component({\n  selector: \\\\\"on-init\\\\\",\n  template: \\` <div>Default name defined by parent {{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInit {\n  @Input() name!: Props[\\\\\"name\\\\\"];\n\n  name = \\\\\"\\\\\";\n\n  ngOnInit() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [OnInitPlain],\n  imports: [CommonModule],\n  exports: [OnInitPlain],\n})\nexport class OnInitPlainModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onInitPlain 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-init-plain\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnInitPlain {\n  ngOnInit() {\n    console.log(\\\\\"onInit\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onMount 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onMount 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on mount\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Comp],\n  imports: [CommonModule],\n  exports: [Comp],\n})\nexport class CompModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onMountMultiple 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"comp\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Comp {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      const onMountHook_0 = () => {\n        console.log(\\\\\"Runs on mount\\\\\");\n      };\n      onMountHook_0();\n      const onMountHook_1 = () => {\n        console.log(\\\\\"Another one runs on Mount\\\\\");\n      };\n      onMountHook_1();\n      const onMountHook_2 = () => {\n        console.log(\\\\\"SSR runs on Mount\\\\\");\n      };\n      onMountHook_2();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onUpdate 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdate {\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs on every update/rerender\\\\\");\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdateWithDeps],\n  imports: [CommonModule],\n  exports: [OnUpdateWithDeps],\n})\nexport class OnUpdateWithDepsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > onUpdateWithDeps 2`] = `\n\"import { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@Component({\n  selector: \\\\\"on-update-with-deps\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdateWithDeps {\n  @Input() size!: Props[\\\\\"size\\\\\"];\n\n  a = \\\\\"a\\\\\";\n  b = \\\\\"b\\\\\";\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > outputEventBinding 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > outputEventBinding 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"nativeEvents\\\\\":[\\\\\"onFakeNative\\\\\"]}}\n          */\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        [attr.value]=\\\\\"name\\\\\"\n        (change)=\\\\\"name = $event.target.value\\\\\"\n        (changeOrSomething)=\\\\\"name = $event.target.value\\\\\"\n        (fakenative)=\\\\\"name = $event.target.value\\\\\"\n        (animationend)=\\\\\"name = $event.target.value\\\\\"\n      />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > preserveExportOrLocalStatement 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > preserveTyping 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name!: MyBasicComponentProps[\\\\\"name\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > prettierInline 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class PrettierInline {}\n\n@NgModule({\n  declarations: [PrettierInline],\n  imports: [CommonModule],\n  exports: [PrettierInline],\n})\nexport class PrettierInlineModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > prettierInline 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"prettier-inline\\\\\",\n  template: \\`\n    <div>\n      <span class=\\\\\"dolorum atque aspernatur\\\\\"\n        >Est molestiae sunt facilis qui rem.</span\n      >\n      <div class=\\\\\"voluptatem architecto at\\\\\">\n        Architecto rerum architecto incidunt sint.\n      </div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class PrettierInline {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsDestructure 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content></ng-content>\n      {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() type!: Props[\\\\\"type\\\\\"];\n\n  name = \\\\\"Decadef20\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsInterface 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsInterface 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person | never[\\\\\"name\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsType 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > propsType 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\`\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() name!: Person[\\\\\"name\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\n@NgModule({\n  declarations: [OnUpdate],\n  imports: [CommonModule],\n  exports: [OnUpdate],\n})\nexport class OnUpdateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > referencingFunInsideHook 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"on-update\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.foo({\n        someOption: this.bar,\n      });\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > renderBlock 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\n@NgModule({\n  declarations: [RenderBlock],\n  imports: [\n    CommonModule,\n    RenderRepeatedBlockModule,\n    RenderBlockModule,\n    BlockStylesModule,\n  ],\n  exports: [RenderBlock],\n})\nexport class RenderBlockModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > renderBlock 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  ViewContainerRef,\n  TemplateRef,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-block\\\\\",\n  template: \\`\n    <ng-template #rendercomponenttagTemplate></ng-template>\n    <ng-container *ngIf=\\\\\"shouldWrap\\\\\"\n      ><ng-container *ngIf=\\\\\"isEmptyHtmlElement(tag)\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\"\n        ><ng-container\n          *ngFor=\\\\\"let data of repeatItemData; index as index; trackBy: trackByData0\\\\\"\n          ><render-repeated-block\n            [repeatContext]=\\\\\"data.context\\\\\"\n            [block]=\\\\\"data.block\\\\\"\n          ></render-repeated-block></ng-container\n      ></ng-container>\n      <ng-container *ngIf=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\"\n        ><ng-container\n          *ngComponentOutlet=\\\\\"\n              tag;\n              inputs: { attributes: attributes, actions: actions };\n              content: myContent;\n              \\\\\"\n        >\n        </ng-container></ng-container></ng-container\n    ><ng-container *ngIf=\\\\\"!(shouldWrap)\\\\\"\n      ><ng-container\n        *ngComponentOutlet=\\\\\"\n              renderComponentTag;\n              inputs: { renderComponentProps: renderComponentProps };\n              content: myContent;\n              \\\\\"\n      >\n      </ng-container\n    ></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderRepeatedBlock, RenderBlock, BlockStyles],\n})\nexport default class RenderBlock {\n  isEmptyHtmlElement = isEmptyHtmlElement;\n\n  @Input() block!: RenderBlockProps[\\\\\"block\\\\\"];\n  @Input() context!: RenderBlockProps[\\\\\"context\\\\\"];\n\n  @ViewChild(\\\\\"rendercomponenttagTemplate\\\\\", { static: true })\n  rendercomponenttagTemplateRef!: TemplateRef<any>;\n  @ViewChild(\\\\\"tagTemplate\\\\\", { static: true }) tagTemplateRef!: TemplateRef<any>;\n\n  myContent?: any[][];\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n  trackByData0(index, data) {\n    return index;\n  }\n  trackByChild1(_, child) {\n    return \\\\\"render-block-\\\\\" + child.id;\n  }\n  trackByChild2(_, child) {\n    return \\\\\"block-style-\\\\\" + child.id;\n  }\n\n  constructor(private vcRef: ViewContainerRef) {}\n\n  ngOnInit() {\n    this.myContent = [\n      this.vcRef.createEmbeddedView(this.rendercomponenttagTemplateRef)\n        .rootNodes,\n      this.vcRef.createEmbeddedView(this.tagTemplateRef).rootNodes,\n    ];\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [RenderContent],\n  imports: [CommonModule, RenderBlocksModule],\n  exports: [RenderContent],\n})\nexport class RenderContentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > renderContentExample 2`] = `\n\"import { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\n@Component({\n  selector: \\\\\"render-content\\\\\",\n  template: \\`\n    <div class=\\\\\"div\\\\\" (click)=\\\\\"trackClick(content.id)\\\\\">\n      <render-blocks [blocks]=\\\\\"content.blocks\\\\\"></render-blocks>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: columns;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, RenderBlocks],\n})\nexport default class RenderContent {\n  trackClick = trackClick;\n\n  @Input() customComponents!: Props[\\\\\"customComponents\\\\\"];\n  @Input() content!: Props[\\\\\"content\\\\\"];\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      sendComponentsToVisualEditor(this.customComponents);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      dispatchNewContentToVisualEditor(this.content);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [Button],\n  imports: [CommonModule],\n  exports: [Button],\n})\nexport class ButtonModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > rootFragmentMultiNode 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n@Component({\n  selector: \\\\\"button\\\\\",\n  template: \\`\n    <ng-container\n      ><ng-container *ngIf=\\\\\"link\\\\\"\n        ><a\n          [attr.href]=\\\\\"link\\\\\"\n          [attr.target]=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n          #elRef0\n          >{{text}}</a\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"!link\\\\\"\n        ><button type=\\\\\"button\\\\\" #elRef1>{{text}}</button></ng-container\n      ></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class Button {\n  @Input() link!: ButtonProps[\\\\\"link\\\\\"];\n  @Input() attributes!: ButtonProps[\\\\\"attributes\\\\\"];\n  @Input() openLinkInNewTab!: ButtonProps[\\\\\"openLinkInNewTab\\\\\"];\n  @Input() text!: ButtonProps[\\\\\"text\\\\\"];\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n  @ViewChild(\\\\\"elRef1\\\\\") elRef1!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.attributes);\n    this.setAttributes(this.elRef1?.nativeElement, this.attributes);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n      this.setAttributes(\n        this.elRef1?.nativeElement,\n        this.attributes,\n        changes[\\\\\"attributes\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > rootShow 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [RenderStyles],\n  imports: [CommonModule],\n  exports: [RenderStyles],\n})\nexport class RenderStylesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > rootShow 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@Component({\n  selector: \\\\\"render-styles\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"foo === 'bar'\\\\\"><div>Bar</div></ng-container\n    ><ng-container *ngIf=\\\\\"!(foo === 'bar')\\\\\"><div>Foo</div></ng-container>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class RenderStyles {\n  @Input() foo!: RenderStylesProps[\\\\\"foo\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > sanitizeInnerHTML 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > sanitizeInnerHTML 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"sanitizeInnerHTML\\\\\":true}}\n          */\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div [innerHTML]=\\\\\"html\\\\\"></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() html!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > self-referencing component 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce Wayne\\\\\"></my-component\n      ></ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, MyComponentModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > self-referencing component with children 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      {{name}}\n      <ng-content></ng-content>\n      <ng-container *ngIf=\\\\\"name === 'Batman'\\\\\"\n        ><my-component name=\\\\\"Bruce\\\\\"\n          ><div>Wayne</div></my-component\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, MyComponent],\n})\nexport default class MyComponent {\n  @Input() name!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > setState 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [SetState],\n  imports: [CommonModule],\n  exports: [SetState],\n})\nexport class SetStateModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > setState 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"set-state\\\\\",\n  template: \\` <div><button (click)=\\\\\"someFn()\\\\\">Click me</button></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SetState {\n  n = [\\\\\"123\\\\\"];\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showExpressions 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">Content0</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentA</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentB</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">{{undefined}}</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentB</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentC</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentD</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentE</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">hello</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentE</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">ContentF</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\">123</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">ContentF</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\">4mb</ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      >\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\">20mb</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\">4mb</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA === 'Default'\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionB === 'Complete'\\\\\"\n          ><div>complete</div></ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionB === 'Complete')\\\\\"\n          >9mb</ng-container\n        ></ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA === 'Default')\\\\\"\n        ><ng-container *ngIf=\\\\\"conditionC === 'Complete'\\\\\">dff</ng-container\n        ><ng-container *ngIf=\\\\\"!(conditionC === 'Complete')\\\\\"\n          ><div>complete else</div></ng-container\n        ></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() conditionB!: Props[\\\\\"conditionB\\\\\"];\n  @Input() conditionC!: Props[\\\\\"conditionC\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithFor 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\n@NgModule({\n  declarations: [NestedShow],\n  imports: [CommonModule],\n  exports: [NestedShow],\n})\nexport class NestedShowModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithFor 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@Component({\n  selector: \\\\\"nested-show\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"\n      ><ng-container\n        *ngFor=\\\\\"let item of items; index as idx; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      ></ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class NestedShow {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n  @Input() items!: Props[\\\\\"items\\\\\"];\n\n  trackByItem0(idx, item) {\n    return idx;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowWithOtherValues],\n  imports: [CommonModule],\n  exports: [ShowWithOtherValues],\n})\nexport class ShowWithOtherValuesModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithOtherValues 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-with-other-values\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentB </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">{{undefined}}</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentC </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentD </ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentE </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">hello</ng-container>\n      <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentF </ng-container\n      ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\">123</ng-container>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowWithOtherValues {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\n@NgModule({\n  declarations: [ShowRootText],\n  imports: [CommonModule],\n  exports: [ShowRootText],\n})\nexport class ShowRootTextModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > showWithRootText 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@Component({\n  selector: \\\\\"show-root-text\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"conditionA\\\\\"> ContentA </ng-container\n    ><ng-container *ngIf=\\\\\"!(conditionA)\\\\\"\n      ><div>else-condition-A</div></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class ShowRootText {\n  @Input() conditionA!: Props[\\\\\"conditionA\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > signals 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\n@NgModule({\n  declarations: [SignalsTestComponent],\n  imports: [CommonModule],\n  exports: [SignalsTestComponent],\n})\nexport class SignalsTestComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > signals 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"angular\\\\\":{\\\\\"signals\\\\\":{\\\\\"writeable\\\\\":[\\\\\"disabled\\\\\"],\\\\\"required\\\\\":[\\\\\"label\\\\\"]}}}\n          */\n\nimport {\n  Output,\n  EventEmitter,\n  Component,\n  ViewChild,\n  ElementRef,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\nconst defaultProps: any = { testInput: \\\\\"Test\\\\\", label: \\\\\"Bla\\\\\" };\n\n@Component({\n  selector: \\\\\"signals-test-component\\\\\",\n  template: \\`\n    <button\n      [attr.aria-label]=\\\\\"label\\\\\"\n      #buttonRef\n      [attr.disabled]=\\\\\"disabled\\\\\"\n      (click)=\\\\\"handleOutput()\\\\\"\n    >\n      {{testInput}}\n    </button>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SignalsTestComponent {\n  @Input() testInput: Props[\\\\\"testInput\\\\\"] = defaultProps[\\\\\"testInput\\\\\"];\n  @Input() label: Props[\\\\\"label\\\\\"] = defaultProps[\\\\\"label\\\\\"];\n  @Input() disabled!: Props[\\\\\"disabled\\\\\"];\n  @Output() onTestOutput = new EventEmitter<any>();\n\n  @ViewChild(\\\\\"buttonRef\\\\\") buttonRef!: ElementRef;\n\n  _counter: Store[\\\\\"_counter\\\\\"] = 0;\n  _innerText: Store[\\\\\"_innerText\\\\\"] = \\\\\"a\\\\\";\n  handleOutput(): ReturnType<Store[\\\\\"handleOutput\\\\\"]> {\n    this._counter++;\n    this._innerText = \\\\\"b\\\\\";\n    console.log(this.testInput, this._counter);\n\n    if (this.onTestOutput) {\n      this.onTestOutput.emit();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this._counter, this.buttonRef?.nativeElement);\n      this.buttonRef?.nativeElement?.setAttribute(\n        \\\\\"data-counter\\\\\",\n        this._counter.toString()\n      );\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > signalsOnUpdate 2`] = `\n\"import { Component, Input, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <div class=\\\\\"test div\\\\\">{{id}} {{foo.bar.baz}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        padding: 10px;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() id!: Props[\\\\\"id\\\\\"];\n  @Input() foo!: Props[\\\\\"foo\\\\\"];\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"props.id changed\\\\\", this.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadAttrs 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, attrs);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        attrs,\n        changes[\\\\\"attrs\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadNestedProps 2`] = `\n\"import {\n  Component,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  Input,\n  SimpleChanges,\n} from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input #elRef0 /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {\n  @Input() nested!: any;\n\n  @ViewChild(\\\\\"elRef0\\\\\") elRef0!: ElementRef;\n\n  _listenerFns = new Map<string, () => void>();\n\n  setAttributes(el: HTMLElement, value: any, changes?: any) {\n    if (!el) {\n      return;\n    }\n\n    const target = typeof changes === \\\\\"undefined\\\\\" ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith(\\\\\"on\\\\\")) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)!();\n        }\n\n        this._listenerFns.set(\n          key,\n          this.renderer.listen(\n            el,\n            key.replace(\\\\\"on\\\\\", \\\\\"\\\\\").toLowerCase(),\n            target[key]\n          )\n        );\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? \\\\\"\\\\\");\n      }\n    });\n  }\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {\n    this.setAttributes(this.elRef0?.nativeElement, this.nested);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.setAttributes(\n        this.elRef0?.nativeElement,\n        this.nested,\n        changes[\\\\\"nested\\\\\"]?.currentValue\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    for (const fn of this._listenerFns.values()) {\n      fn();\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicComponent {}\n\n@NgModule({\n  declarations: [MyBasicComponent],\n  imports: [CommonModule],\n  exports: [MyBasicComponent],\n})\nexport class MyBasicComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > spreadProps 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-component\\\\\",\n  template: \\` <input /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stateInit 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stateInit 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <div>{{asfas}}</div>\n      <div>{{someCompute}}</div>\n      <div>{{someOtherVal}}</div>\n      <div>{{sf}}</div>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() val!: any;\n\n  add = function add(a, b) {\n    return a + b;\n  };\n  asfas = \\\\\"asga\\\\\";\n  subtract() {\n    return this.someCompute - this.someOtherVal;\n  }\n  someCompute = null;\n  someOtherVal = null;\n  sf = null;\n\n  ngOnInit() {\n    this.someCompute = this.add(1, 2);\n\n    this.someOtherVal = this.val;\n\n    this.sf = this.add(this.val, 34);\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stateInitSequence 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stateInitSequence 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <Comp\n      [val]=\\\\\"useObjectWrapper( val\n        )\\\\\"\n      >{{val}}</Comp\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Comp],\n})\nexport default class MyComponent {\n  @Input() value!: any;\n\n  val = null;\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n\n  ngOnInit() {\n    this.val = this.value;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > store-async-function 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > store-async-function 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n})\nexport class StringLiteralStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > string-literal-store 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"string-literal-store\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StringLiteralStore {\n  foo = 123;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from '@angular/core';\n\n\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\n\n@NgModule({\n  declarations: [StringLiteralStore],\n  imports: [CommonModule],\n  exports: [StringLiteralStore],\n  \n})\nexport class StringLiteralStoreModule {}\"\n`;\n\nexports[`Angular > jsx > Typescript Test > string-literal-store-kebab 2`] = `\n\"import { Component } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\n\n\n\n\n\n\n\n\n@Component({\n  selector: 'string-literal-store',template: \\`\n\n          <div>{{'foo-bar'}}</div>\n\n          \\`,styles: [\\`:host { display: contents; }\\`],standalone: true,imports: [CommonModule]\n})\nexport default class StringLiteralStore {\n\n\n\n\n\n\n\n\n\n\n\n\n\n   foo-bar= 123\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}\"\n`;\n\nexports[`Angular > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > styleClassAndCss 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div\n      class=\\\\\"builder-column div\\\\\"\n      [ngStyle]=\\\\\"{\n          width: '100%'\n        }\\\\\"\n    ></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\n@NgModule({\n  declarations: [StylePropClassAndCss],\n  imports: [CommonModule],\n  exports: [StylePropClassAndCss],\n})\nexport class StylePropClassAndCssModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > stylePropClassAndCss 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"style-prop-class-and-css\\\\\",\n  template: \\`\n    <div [ngStyle]=\\\\\"attributes.style\\\\\" [class]=\\\\\"attributes.class + ' div'\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      .div {\n        display: flex;\n        flex-direction: column;\n        align-items: stretch;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class StylePropClassAndCss {\n  @Input() attributes!: any;\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > subComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SubComponent {}\n\n@NgModule({\n  declarations: [SubComponent],\n  imports: [CommonModule, FooModule],\n  exports: [SubComponent],\n})\nexport class SubComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > subComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\n@Component({\n  selector: \\\\\"sub-component\\\\\",\n  template: \\` <foo></foo> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Foo],\n})\nexport default class SubComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > svgComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class SvgComponent {}\n\n@NgModule({\n  declarations: [SvgComponent],\n  imports: [CommonModule],\n  exports: [SvgComponent],\n})\nexport class SvgComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > svgComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"svg-component\\\\\",\n  template: \\`\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      [attr.viewBox]=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n      [attr.width]=\\\\\"42\\\\\"\n      [attr.height]=\\\\\"42\\\\\"\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            [attr.stdDeviation]=\\\\\"7\\\\\"\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class SvgComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > twoForsTrackBy 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > twoForsTrackBy 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem0\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n      <ng-container *ngFor=\\\\\"let item of items; trackBy: trackByItem1\\\\\"\n        ><div>{{item}}</div></ng-container\n      >\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  items = [1, 2, 3];\n  trackByItem0(_, item) {\n    return item;\n  }\n  trackByItem1(_, item) {\n    return item;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeDependency 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeDependency],\n  imports: [CommonModule],\n  exports: [TypeDependency],\n})\nexport class TypeDependencyModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeDependency 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.js\\\\\";\n\n@Component({\n  selector: \\\\\"type-dependency\\\\\",\n  template: \\` <div>{{foo}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeDependency {\n  @Input() foo!: TypeDependencyProps[\\\\\"foo\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\n@NgModule({\n  declarations: [TypeExternalProps],\n  imports: [CommonModule],\n  exports: [TypeExternalProps],\n})\nexport class TypeExternalPropsModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeExternalProps 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-props\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeExternalProps {\n  @Input() name!: FooProps[\\\\\"name\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\n@NgModule({\n  declarations: [TypeExternalStore],\n  imports: [CommonModule],\n  exports: [TypeExternalStore],\n})\nexport class TypeExternalStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeExternalStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\n@Component({\n  selector: \\\\\"type-external-store\\\\\",\n  template: \\` <div>Hello {{_name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeExternalStore {\n  _name: FooStore[\\\\\"_name\\\\\"] = \\\\\"test\\\\\";\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\n@NgModule({\n  declarations: [TypeGetterStore],\n  imports: [CommonModule],\n  exports: [TypeGetterStore],\n})\nexport class TypeGetterStoreModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > typeGetterStore 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@Component({\n  selector: \\\\\"type-getter-store\\\\\",\n  template: \\` <div>Hello {{name}} !</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class TypeGetterStore {\n  name: GetterStore[\\\\\"name\\\\\"] = \\\\\"test\\\\\";\n  getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style-and-css 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n\n      .button {\n        background: blue;\n        color: white;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > use-style-outside-component 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <button type=\\\\\"button\\\\\">Button</button> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      button {\n        background: blue;\n        color: white;\n        font-size: 12px;\n        outline: 1px solid black;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > useObjectWrapper 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, CompModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > useObjectWrapper 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <Comp\n        [val1]=\\\\\"useObjectWrapper( attributes2\n        )\\\\\"\n        [val2]=\\\\\"useObjectWrapper( attributes,\n          attributes2\n        )\\\\\"\n        [val3]=\\\\\"useObjectWrapper( something,{\n          anything: 'hello' },{\n          hello: 'world' },)\\\\\"\n        [val4]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          hello: 'hello' },\n          attributes2\n        )\\\\\"\n        [val5]=\\\\\"useObjectWrapper( attributes,\n          something,{\n          anything: [1, 2, 3] },{\n          anythingString: ['a', 'b', 'c'] },{\n          hello: 'hello' },\n          spreadAttrs\n        )\\\\\"\n        [val6]=\\\\\"{\n          anything: [1, 2, 3]\n        }\\\\\"\n      ></Comp>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Comp],\n})\nexport default class MyComponent {\n  @Input() spreadAttrs!: any;\n\n  attributes = {\n    id: 1,\n  };\n  attributes2 = {\n    id2: 1,\n  };\n  something = {\n    id3: 1,\n  };\n\n  useObjectWrapper(...args: any[]) {\n    let obj = {};\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > useTarget 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\n@NgModule({\n  declarations: [UseTargetComponent],\n  imports: [CommonModule],\n  exports: [UseTargetComponent],\n})\nexport class UseTargetComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > useTarget 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"use-target-component\\\\\",\n  template: \\` <div>{{name}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class UseTargetComponent {\n  get name() {\n    const prefix = true;\n    return prefix + \\\\\"foo\\\\\";\n  }\n  lastName = \\\\\"bar\\\\\";\n  foo = \\\\\"bar\\\\\";\n\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(this.foo);\n      this.foo = \\\\\"bar\\\\\";\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > webComponent 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\n@NgModule({\n  declarations: [MyBasicWebComponent],\n  imports: [CommonModule],\n  exports: [MyBasicWebComponent],\n})\nexport class MyBasicWebComponentModule {}\n\"\n`;\n\nexports[`Angular > jsx > Typescript Test > webComponent 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\n@Component({\n  selector: \\\\\"my-basic-web-component\\\\\",\n  template: \\`\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n      ><swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide></swiper-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyBasicWebComponent {\n  ngOnInit() {\n    register();\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > basic 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > bindGroup 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > bindProperty 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > classDirective 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() disabled;\n\n  focus = true;\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > context 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > each 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > eventHandlers 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > html 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > ifElse 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > imports 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Button],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > lifecycleHooks 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > reactive 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > reactiveWithFn 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > slots 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > style 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Javascript Test > textExpressions 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > basic 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > basic 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input (change)=\\\\\"name = $event.target.value\\\\\" [attr.value]=\\\\\"name\\\\\" />\n\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > bindGroup 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > bindGroup 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Plain'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Whole wheat'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        [attr.checked]=\\\\\"tortilla === 'Spinach'\\\\\"\n        (change)=\\\\\"tortilla = $event.target.value\\\\\"\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Rice'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Beans'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Cheese'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        [attr.checked]=\\\\\"fillings === 'Guac (extra)'\\\\\"\n        (change)=\\\\\"fillings = $event.target.value\\\\\"\n      />\n      <p>Tortilla: {{tortilla}}</p>\n      <p>Fillings: {{fillings}}</p>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  tortilla = \\\\\"Plain\\\\\";\n  fillings = [];\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > bindProperty 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > bindProperty 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input [attr.value]=\\\\\"value\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  value = \\\\\"hello\\\\\";\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > classDirective 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, Input } from \\\\\"@angular/core\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > classDirective 2`] = `\n\"import { Component, Input } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nconst defaultProps: any = {};\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <input\n      [class]=\\\\\"\\\\\\\\\\`form-input \\\\\\\\\\${disabled ? 'disabled' : ''} \\\\\\\\\\${focus ? 'focus' : ''}\\\\\\\\\\`\\\\\"\n    />\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  @Input() disabled!: any;\n\n  focus = true;\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > context 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > context 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div>{{activeTab}}</div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  activeTab = 0;\n\n  constructor(public disabled: \\\\\"disabled\\\\\") {}\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > each 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > each 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ul>\n      <ng-container *ngFor=\\\\\"let num of numbers\\\\\"\n        ><li>{{num}}</li></ng-container\n      >\n    </ul>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > eventHandlers 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button (click)=\\\\\"log('hi')\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n      <button (click)=\\\\\"log($event)\\\\\">Log</button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > html 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > html 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\nimport { DomSanitizer } from \\\\\"@angular/platform-browser\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div [innerHTML]=\\\\\"sanitizer.bypassSecurityTrustHtml(html)\\\\\"></div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  html = \\\\\"<b>bold</b>\\\\\";\n\n  constructor(protected sanitizer: DomSanitizer) {}\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > ifElse 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > ifElse 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <ng-container *ngIf=\\\\\"show\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Hide</button></ng-container\n    ><ng-container *ngIf=\\\\\"!(show)\\\\\"\n      ><button (click)=\\\\\"toggle($event)\\\\\">Show</button></ng-container\n    >\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  show = true;\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > imports 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, ButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > imports 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <button type=\\\\\"button\\\\\" [disabled]=\\\\\"disabled\\\\\">\n        <ng-content></ng-content>\n      </button>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule, Button],\n})\nexport default class MyComponent {\n  disabled = false;\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > lifecycleHooks 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <div></div> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  ngOnInit() {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onMount\\\\\");\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      console.log(\\\\\"onAfterUpdate\\\\\");\n    }\n  }\n\n  ngOnDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > reactive 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > reactive 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input [attr.value]=\\\\\"name\\\\\" />\n\n      Lowercase: {{lowercaseName}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  name = \\\\\"Steve\\\\\";\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > reactiveWithFn 2`] = `\n\"import { Component, SimpleChanges } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"a = $event.target.value\\\\\"\n        [attr.value]=\\\\\"a\\\\\"\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        (change)=\\\\\"b = $event.target.value\\\\\"\n        [attr.value]=\\\\\"b\\\\\"\n      />\n\n      Result: {{result}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  a = 2;\n  b = 5;\n  result = null;\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (typeof window !== \\\\\"undefined\\\\\") {\n      this.calculateResult(this.a, this.b);\n    }\n  }\n}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > slots 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > slots 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      <ng-content>default</ng-content>\n      <ng-content select=\\\\\"[test]\\\\\"><div>default</div></ng-content>\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > style 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > style 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\` <input class=\\\\\"form-input\\\\\" /> \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n      input {\n        color: red;\n        font-size: 12px;\n      }\n\n      .form-input:focus {\n        outline: 1px solid blue;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > textExpressions 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Angular > svelte > Typescript Test > textExpressions 2`] = `\n\"import { Component } from \\\\\"@angular/core\\\\\";\n\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <div>\n      normal: {{a + b}}\n      <br />\n\n      conditional {{a > 2 ? 'hello' : 'bye'}}\n    </div>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport default class MyComponent {\n  a = 5;\n  b = 12;\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/context.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Context > Parse context 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/context\",\n  \"name\": \"SimpleExample\",\n  \"value\": {\n    \"content\": {\n      \"code\": \"null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"context\": {\n      \"code\": \"{}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"foo\": {\n      \"code\": \"'bar'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"fooUpperCase\": {\n      \"code\": \"get fooUpperCase() {\n  return state.foo.toUpperCase();\n}\",\n      \"type\": \"getter\",\n    },\n    \"someMethod\": {\n      \"code\": \"someMethod() {\n  return state.fooUpperCase.toLowercase();\n}\",\n      \"type\": \"method\",\n    },\n    \"state\": {\n      \"code\": \"{}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n}\n`;\n\nexports[`Context > Parse context 2`] = `\n\"import { createContext } from \\\\\"react\\\\\";\n\nexport default createContext({\n  foo: \\\\\"bar\\\\\",\n  get fooUpperCase() {\n    return state.foo.toUpperCase();\n  },\n  someMethod() {\n    return state.fooUpperCase.toLowercase();\n  },\n  content: null,\n  context: {},\n  state: {},\n});\n\"\n`;\n\nexports[`Context > Use and set context in complex components 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"state.properties\": {\n              \"code\": \"state.properties\",\n              \"spreadType\": \"normal\",\n              \"type\": \"spread\",\n            },\n            \"style\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.css\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"block\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.useBlock\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BlockStyles\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.componentRef\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"children\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.useBlock.children\",\n                      \"type\": \"single\",\n                    },\n                    \"state.componentOptions\": {\n                      \"code\": \"state.componentOptions\",\n                      \"spreadType\": \"normal\",\n                      \"type\": \"spread\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"state.componentRef\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"!state.componentRef && state.useBlock.children && state.useBlock.children.length\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"each\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.useBlock.children\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"block\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"child\",\n                          \"type\": \"single\",\n                        },\n                        \"index\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"index\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"RenderBlock\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"For\",\n                  \"properties\": {},\n                  \"scope\": {\n                    \"forName\": \"child\",\n                    \"indexName\": \"index\",\n                  },\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"state.tagName\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"builderContext\": {\n        \"name\": \"BuilderContext\",\n        \"path\": \"../context/builder.context.lite:default\",\n      },\n    },\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContext\": \"default\",\n      },\n      \"path\": \"../context/builder.context.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockActions\": \"getBlockActions\",\n      },\n      \"path\": \"../functions/get-block-actions\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockComponentOptions\": \"getBlockComponentOptions\",\n      },\n      \"path\": \"../functions/get-block-component-options\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockProperties\": \"getBlockProperties\",\n      },\n      \"path\": \"../functions/get-block-properties\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockStyles\": \"getBlockStyles\",\n      },\n      \"path\": \"../functions/get-block-styles\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockTag\": \"getBlockTag\",\n      },\n      \"path\": \"../functions/get-block-tag\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getProcessedBlock\": \"getProcessedBlock\",\n      },\n      \"path\": \"../functions/get-processed-block\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"components\": \"components\",\n      },\n      \"path\": \"../functions/register-component\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BlockStyles\": \"default\",\n      },\n      \"path\": \"./block-styles.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderBlock\",\n  \"refs\": {},\n  \"state\": {\n    \"actions\": {\n      \"code\": \"get actions() {\n  return getBlockActions({\n    block: state.useBlock,\n    state: builderContext.state,\n    context: builderContext.context\n  });\n}\",\n      \"type\": \"getter\",\n    },\n    \"component\": {\n      \"code\": \"get component() {\n  const componentName = state.useBlock.component?.name;\n\n  if (!componentName) {\n    return null;\n  }\n\n  const ref = components[state.useBlock.component?.name];\n\n  if (componentName && !ref) {\n    // TODO: Public doc page with more info about this message\n    console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n  }\n\n  return ref;\n}\",\n      \"type\": \"getter\",\n    },\n    \"componentInfo\": {\n      \"code\": \"get componentInfo() {\n  return state.component?.info;\n}\",\n      \"type\": \"getter\",\n    },\n    \"componentOptions\": {\n      \"code\": \"get componentOptions() {\n  return getBlockComponentOptions(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"componentRef\": {\n      \"code\": \"get componentRef() {\n  return state.component?.component;\n}\",\n      \"type\": \"getter\",\n    },\n    \"css\": {\n      \"code\": \"get css() {\n  return getBlockStyles(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"properties\": {\n      \"code\": \"get properties() {\n  return getBlockProperties(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"tagName\": {\n      \"code\": \"get tagName() {\n  return getBlockTag(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"useBlock\": {\n      \"code\": \"get useBlock() {\n  return getProcessedBlock({\n    block: props.block,\n    state: builderContext.state,\n    context: builderContext.context\n  });\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Context > Use and set context in complex components 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"../context/builder.context.js\\\\\";\nimport { getBlockActions } from \\\\\"../functions/get-block-actions\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../functions/get-block-component-options\\\\\";\nimport { getBlockProperties } from \\\\\"../functions/get-block-properties\\\\\";\nimport { getBlockStyles } from \\\\\"../functions/get-block-styles\\\\\";\nimport { getBlockTag } from \\\\\"../functions/get-block-tag\\\\\";\nimport { getProcessedBlock } from \\\\\"../functions/get-processed-block\\\\\";\nimport { components } from \\\\\"../functions/register-component\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = useBlock().component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = components[useBlock().component?.name];\n\n    if (componentName && !ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n    }\n\n    return ref;\n  }\n\n  function componentInfo() {\n    return component?.()?.info;\n  }\n\n  function componentRef() {\n    return component?.()?.component;\n  }\n\n  function tagName() {\n    return getBlockTag(useBlock());\n  }\n\n  function properties() {\n    return getBlockProperties(useBlock());\n  }\n\n  function useBlock() {\n    return getProcessedBlock({\n      block: props.block,\n      state: builderContext.state,\n      context: builderContext.context,\n    });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: builderContext.state,\n      context: builderContext.context,\n    });\n  }\n\n  function css() {\n    return getBlockStyles(useBlock());\n  }\n\n  function componentOptions() {\n    return getBlockComponentOptions(useBlock());\n  }\n\n  const builderContext = useContext(BuilderContext);\n\n  const TagNameRef = tagName();\n  const ComponentRefRef = componentRef();\n\n  return (\n    <TagNameRef {...properties()} style={css()}>\n      <BlockStyles block={useBlock()} />\n      {componentRef() ? (\n        <ComponentRefRef\n          {...componentOptions()}\n          children={useBlock().children}\n        />\n      ) : null}\n      {!componentRef() && useBlock().children && useBlock().children.length ? (\n        <>\n          {useBlock().children?.map((child, index) => (\n            <RenderBlock index={index} block={child} />\n          ))}\n        </>\n      ) : null}\n    </TagNameRef>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Context > Use and set context in components 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"foo.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Fragment\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"foo\": {\n        \"name\": \"Context1\",\n        \"path\": \"@dummy/1:default\",\n      },\n    },\n    \"set\": {\n      \"@dummy/1:default\": {\n        \"name\": \"Context1\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"content() {\n  return props.content;\n}\",\n            \"type\": \"method\",\n          },\n          \"foo\": {\n            \"code\": \"'bar'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n      \"@dummy/2:default\": {\n        \"name\": \"Context2\",\n        \"value\": {\n          \"bar\": {\n            \"code\": \"'baz'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context1\": \"default\",\n      },\n      \"path\": \"@dummy/1\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context2\": \"default\",\n      },\n      \"path\": \"@dummy/2\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithContext\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Context > Use and set context in components 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Context > Use and set context in components 3`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <Text>{foo.value}</Text>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/html.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Html > jsx > Javascript Test > Advanced 1`] = `\n\"<main>\n  <template data-el=\\\\\"for\\\\\">\n    <div>\n      <template data-el=\\\\\"div-1\\\\\"><!-- i --></template>\n      :\n      <template data-el=\\\\\"div-2\\\\\"><!-- person --></template>\n    </div>\n  </template>\n\n  <template data-el=\\\\\"for-2\\\\\">\n    <span>\n      <template data-el=\\\\\"div-3\\\\\"><!-- person --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-3\\\\\"><br /></template>\n\n  <template data-el=\\\\\"for-4\\\\\">\n    <pre><template data-el=\\\\\"div-4\\\\\"><!-- ee --></template></pre>\n  </template>\n\n  <template data-el=\\\\\"for-5\\\\\">\n    <p>\n      <template data-el=\\\\\"div-5\\\\\"><!-- index --></template>\n    </p>\n  </template>\n\n  <template data-el=\\\\\"for-6\\\\\">\n    <span>\n      <template data-el=\\\\\"div-6\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-7\\\\\"><!-- index --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-7\\\\\">\n    <span>\n      <template data-el=\\\\\"div-8\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-9\\\\\"><!-- count --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-8\\\\\">\n    <span>\n      <template data-el=\\\\\"div-10\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-11\\\\\"><!-- i --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-9\\\\\">\n    <span>\n      <template data-el=\\\\\"div-12\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-13\\\\\"><!-- index --></template>\n    </span>\n  </template>\n</main>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const i = getScope(el, \\\\\"i\\\\\");\n        renderTextNode(el, i);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-4']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"_\\\\\", \\\\\"ee\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-4']\\\\\").forEach((el) => {\n        const ee = getScope(el, \\\\\"ee\\\\\");\n        renderTextNode(el, ee);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-5']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-5']\\\\\").forEach((el) => {\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-6']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-6']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-7']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-7']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"count\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-8']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-9']\\\\\").forEach((el) => {\n        const count = getScope(el, \\\\\"count\\\\\");\n        renderTextNode(el, count);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-8']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-10']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-11']\\\\\").forEach((el) => {\n        const i = getScope(el, \\\\\"i\\\\\");\n        renderTextNode(el, i);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-9']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-12']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-13']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <input\n      class=\\\\\"input\\\\\"\n      data-el=\\\\\"input-1\\\\\"\n      data-dom-state=\\\\\"input-2\\\\\"\n      data-ref=\\\\\"undefined-inputRef\\\\\"\n    />\n    <label for=\\\\\"cars\\\\\" data-el=\\\\\"label-1\\\\\" data-ref=\\\\\"undefined-inputNoArgRef\\\\\">\n      Choose a car:\n    </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\" data-dom-state=\\\\\"select-1\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </template>\n\n  Hello\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowerCaseName() --></template>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.showInput;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"blur\\\\\", onInput1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", onInput1Blur);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowerCaseName());\n      });\n\n      destroyAnyNodes();\n\n      console.log(\\\\\"Received an update\\\\\");\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'blur' event on input-1\n    function onInput1Blur(event) {\n      state.onBlur();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = DEFAULT_VALUES.name || state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(myEvent) {\n      state.name = myEvent.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic 2`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <template data-el=\\\\\"show\\\\\">\n      <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n      Hello\n      <template data-el=\\\\\"div-1\\\\\"><!-- person --></template>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        const whenCondition = person === state.name;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      const person = getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      state.name = event.target.value + \\\\\" and \\\\\" + person;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic Context 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\">\n    <!-- myService.method('hello') + state.name -->\n  </template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, myService.method(\\\\\"hello\\\\\") + state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.onChange();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      const hi = myService.method(\\\\\"hi\\\\\");\n      console.log(hi);\n      onInitOnce = true;\n    }\n\n    // onMount\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n      update();\n      onInitOnce = true;\n    }\n\n    // onMount\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicAttribute 1`] = `\n\"<input\n  autocapitalize=\\\\\"on\\\\\"\n  autocomplete=\\\\\"on\\\\\"\n  data-el=\\\\\"input-1\\\\\"\n  data-dom-state=\\\\\"input-2\\\\\"\n/>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"spellcheck\\\\\", true);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <slot></slot>\n    <template data-el=\\\\\"div-2\\\\\"><!-- props.type --></template>\n  </template>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component-2\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component-3\\\\\"\n  ></MyBooleanAttributeComponent>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.children;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"toggle\\\\\", true);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component-2']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"toggle\\\\\", true);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component-3']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"list\\\\\", null);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<div>\n  <MyBasicComponent data-el=\\\\\"my-basic-component\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      data-el=\\\\\"my-basic-on-mount-update-component\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      data-el=\\\\\"my-basic-outputs-component\\\\\"\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message) {\n        console.log(message);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"id\\\\\", state.dev);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-on-mount-update-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"hi\\\\\", state.name);\n\n          el.setAttribute(\\\\\"bye\\\\\", state.dev);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-outputs-component']\\\\\")\n        .forEach((el) => {\n          el.removeEventListener(\n            \\\\\"messagechange\\\\\",\n            onMyBasicOutputsComponentMessagechange\n          );\n          el.addEventListener(\n            \\\\\"messagechange\\\\\",\n            onMyBasicOutputsComponentMessagechange\n          );\n\n          el.removeEventListener(\\\\\"event\\\\\", onMyBasicOutputsComponentEvent);\n          el.addEventListener(\\\\\"event\\\\\", onMyBasicOutputsComponentEvent);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'messagechange' event on my-basic-outputs-component\n    function onMyBasicOutputsComponentMessagechange(name) {\n      state.name = name;\n      update();\n    }\n\n    // Event handler for 'event' event on my-basic-outputs-component\n    function onMyBasicOutputsComponentEvent(event) {\n      state.log(\\\\\"Test\\\\\");\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicFor 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n    Hello\n    <template data-el=\\\\\"div-1\\\\\"><!-- person --></template>\n    ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      const person = getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      state.name = event.target.value + \\\\\" and \\\\\" + person;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    console.log(\\\\\"onMount code\\\\\");\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicRef 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <input\n      class=\\\\\"input\\\\\"\n      data-el=\\\\\"input-1\\\\\"\n      data-dom-state=\\\\\"input-2\\\\\"\n      data-ref=\\\\\"undefined-inputRef\\\\\"\n    />\n    <label for=\\\\\"cars\\\\\" data-el=\\\\\"label-1\\\\\" data-ref=\\\\\"undefined-inputNoArgRef\\\\\">\n      Choose a car:\n    </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\" data-dom-state=\\\\\"select-1\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </template>\n\n  Hello\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowerCaseName() --></template>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.showInput;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"blur\\\\\", onInput1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", onInput1Blur);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowerCaseName());\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'blur' event on input-1\n    function onInput1Blur(event) {\n      state.onBlur();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<div><button data-el=\\\\\"button-1\\\\\">Click</button></div>\n<script>\n  (() => {\n    const state = {\n      handlerClick: function handlerClick(event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", holdValueRef);\n        holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    async function onButton1Click(evt) {\n      await state.handlerClick(evt);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<div>\n  <h1>\n    Now:\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.count --></template>\n    , before:\n    <template data-el=\\\\\"div-2\\\\\"><!-- prevCount --></template>\n  </h1>\n  <button data-el=\\\\\"button-1\\\\\">Increment</button>\n</div>\n<script>\n  (() => {\n    const state = { count: 0 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.count);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, prevCount);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      prevCount = state.count;\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.count += 1;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Button 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Columns 1`] = `\n\"<div class=\\\\\"builder-columns div\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <div class=\\\\\"builder-column div-2\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- column.content --></template>\n      <template data-el=\\\\\"div-2\\\\\"><!-- index --></template>\n    </div>\n  </template>\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      getColumns() {\n        return props.columns || [];\n      },\n      getGutterSize() {\n        return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n      },\n      getWidth(index) {\n        const columns = state.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n      getColumnCssWidth(index) {\n        const columns = state.getColumns();\n        const gutterSize = state.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.columns;\n        renderLoop(el, array, \\\\\"column\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const column = getScope(el, \\\\\"column\\\\\");\n        renderTextNode(el, column.content);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<div>\n  <slot data-el=\\\\\"slot\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='slot']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", props.slotTesting);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <div data-el=\\\\\"div-1\\\\\">\n    <template data-el=\\\\\"show-2\\\\\">\n      <slot name=\\\\\"content\\\\\">\n        <template data-el=\\\\\"div-2\\\\\"><!-- props.content --></template>\n      </slot>\n    </template>\n    <div><hr /></div>\n    <div><slot></slot></div>\n  </div>\n</template>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"king\\\\\",\n      showContent: false,\n      get cls() {\n        return props.slotContent && props.children\n          ? \\`\\${state.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n      show() {\n        props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.slotReference;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\");\n\n        el.setAttribute(\\\\\"title\\\\\", props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\");\n\n        el.removeEventListener(\\\\\"click\\\\\", onDiv1Click);\n        el.addEventListener(\\\\\"click\\\\\", onDiv1Click);\n\n        el.className = state.cls;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = state.showContent && props.slotContent;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.content);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on div-1\n    function onDiv1Click(event) {\n      state.show();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > CustomCode 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\"></div>\n<script>\n  (() => {\n    const state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n        el.innerHTML = props.code;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    state.findAndRunScripts();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Embed 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\"></div>\n<script>\n  (() => {\n    const state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n        el.innerHTML = props.code;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    state.findAndRunScripts();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Image 1`] = `\n\"<div>\n  <picture data-el=\\\\\"picture-1\\\\\" data-ref=\\\\\"undefined-pictureRef\\\\\">\n    <template data-el=\\\\\"show\\\\\"><img data-el=\\\\\"img-1\\\\\" /></template>\n    <source data-el=\\\\\"source-1\\\\\" />\n  </picture>\n  <slot></slot>\n</div>\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      scrollListener: null,\n      imageLoaded: false,\n      setLoaded() {\n        state.imageLoaded = true;\n        update();\n      },\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!props.lazy && state.isBrowser();\n      },\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = !state.useLazyLoading() || state.load;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"alt\\\\\", props.altText);\n\n        el.setAttribute(\n          \\\\\"aria-role\\\\\",\n          props.altText ? \\\\\"presentation\\\\\" : undefined\n        );\n\n        el.className =\n          \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") + \\\\\" img\\\\\";\n\n        el.setAttribute(\\\\\"src\\\\\", props.image);\n\n        el.removeEventListener(\\\\\"load\\\\\", onImg1Load);\n        el.addEventListener(\\\\\"load\\\\\", onImg1Load);\n\n        el.setAttribute(\\\\\"srcset\\\\\", props.srcset);\n\n        el.setAttribute(\\\\\"sizes\\\\\", props.sizes);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='source-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"srcset\\\\\", props.srcset);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'load' event on img-1\n    function onImg1Load(event) {\n      state.setLoaded();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            update();\n            state.scrollListener = null;\n            update();\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      update();\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Image State 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <img class=\\\\\"custom-class\\\\\" data-el=\\\\\"img-1\\\\\" />\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.images;\n        renderLoop(el, array, \\\\\"item\\\\\", \\\\\"itemIndex\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        const itemIndex = getScope(el, \\\\\"itemIndex\\\\\");\n\n        el.setAttribute(\\\\\"src\\\\\", item);\n\n        el.key = itemIndex;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Img 1`] = `\n\"<img data-el=\\\\\"img-1\\\\\" />\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n        });\n\n        el.key = (Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"alt\\\\\", props.altText);\n\n        el.setAttribute(\\\\\"src\\\\\", props.imgSrc);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Input 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.key =\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"placeholder\\\\\", props.placeholder);\n\n        el.setAttribute(\\\\\"type\\\\\", props.type);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n\n        el.value = props.value;\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n\n        el.setAttribute(\\\\\"required\\\\\", props.required);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      props.onChange?.(event.target.value);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > InputParent 1`] = `\n\"<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  data-el=\\\\\"form-input-component\\\\\"\n></FormInputComponent>\n<script>\n  (() => {\n    const state = {\n      handleChange(value) {\n        console.log(value);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='form-input-component']\\\\\")\n        .forEach((el) => {\n          el.removeEventListener(\\\\\"change\\\\\", onFormInputComponentChange);\n          el.addEventListener(\\\\\"change\\\\\", onFormInputComponentChange);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on form-input-component\n    function onFormInputComponentChange(value) {\n      state.handleChange(value);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > NestedStore 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">\n  Test\n\n  <p data-el=\\\\\"p-1\\\\\">Message</p>\n</div>\n<script>\n  (() => {\n    const state = { _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", state._id);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='p-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", state._messageId);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > RawText 1`] = `\n\"<span data-el=\\\\\"span-1\\\\\"></span>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='span-1']\\\\\").forEach((el) => {\n        el.className = props.attributes?.class || props.attributes?.className;\n\n        el.innerHTML = props.text || \\\\\"\\\\\";\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Section 1`] = `\n\"<section data-el=\\\\\"section-1\\\\\"><slot></slot></section>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='section-1']\\\\\").forEach((el) => {\n        Object.assign(\n          el.style,\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: props.maxWidth,\n              }\n            : undefined\n        );\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Section 2`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <section data-el=\\\\\"section-1\\\\\"><slot></slot></section>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = { max: 42, items: [42] };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.max;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.items;\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='section-1']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        Object.assign(el.style, {\n          maxWidth: item + state.max,\n        });\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Select 1`] = `\n\"<select data-el=\\\\\"select-1\\\\\" data-dom-state=\\\\\"select-2\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <option data-el=\\\\\"option-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- option.name || option.value --></template>\n    </option>\n  </template>\n</select>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='select-1']\\\\\").forEach((el) => {\n        el.value = props.value;\n\n        el.key =\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.options;\n        renderLoop(el, array, \\\\\"option\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='option-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        const index = getScope(el, \\\\\"index\\\\\");\n\n        el.value = option.value;\n\n        el.setAttribute(\\\\\"data-index\\\\\", index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option.name || option.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > SlotDefault 1`] = `\n\"<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > SlotHtml 1`] = `\n\"<div>\n  <ContentSlotCode><slot data-el=\\\\\"slot\\\\\"></slot></ContentSlotCode>\n</div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='slot']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"testing\\\\\", <div>Hello</div>);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > SlotJsx 1`] = `\n\"<div><ContentSlotCode data-el=\\\\\"content-slot-code\\\\\"></ContentSlotCode></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='content-slot-code']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"slotTesting\\\\\", <div>Hello</div>);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > SlotNamed 1`] = `\n\"<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Stamped.io 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">\n  <button data-el=\\\\\"button-1\\\\\">Write a review</button>\n  <template data-el=\\\\\"show\\\\\">\n    <input placeholder=\\\\\"Email\\\\\" data-dom-state=\\\\\"input-1\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n      data-dom-state=\\\\\"textarea-1\\\\\"\n    ></textarea>\n    <button class=\\\\\"button\\\\\" data-el=\\\\\"button-2\\\\\">Submit</button>\n  </template>\n\n  <template data-el=\\\\\"for\\\\\">\n    <div class=\\\\\"review\\\\\" data-el=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" data-el=\\\\\"img-1\\\\\" />\n      <div data-el=\\\\\"div-2\\\\\">\n        <div>\n          N:\n          <template data-el=\\\\\"div-3\\\\\"><!-- index --></template>\n        </div>\n        <div>\n          <template data-el=\\\\\"div-4\\\\\"><!-- review.author --></template>\n        </div>\n        <div>\n          <template data-el=\\\\\"div-5\\\\\"><!-- review.reviewMessage --></template>\n        </div>\n      </div>\n    </div>\n  </template>\n</div>\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"data-user\\\\\", state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.showReviewPrompt || \\\\\"asdf\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-2']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton2Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton2Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.reviews;\n        renderLoop(el, array, \\\\\"review\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='review']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n\n        el.key = review.id;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n\n        el.setAttribute(\\\\\"src\\\\\", review.avatar);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        el.className = state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\";\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-4']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n        renderTextNode(el, review.author);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-5']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n        renderTextNode(el, review.reviewMessage);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.showReviewPrompt = true;\n      update();\n    }\n\n    // Event handler for 'click' event on button-2\n    function onButton2Click(ev) {\n      ev.preventDefault();\n      state.showReviewPrompt = false;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n        update();\n      });\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > StoreComment 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.foo --></template>\n<script>\n  (() => {\n    const state = { foo: true, bar() {} };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.foo(state.errors) --></template>\n<script>\n  (() => {\n    const state = {\n      errors: {},\n      foo(errors) {\n        return errors;\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo(state.errors));\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > StoreWithState 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.bar() --></template>\n<script>\n  (() => {\n    const state = {\n      foo: false,\n      bar() {\n        return state.foo;\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.bar());\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" data-el=\\\\\"button-1\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n</button>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Text 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Decadef20\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"contentEditable\\\\\", allowEditingText || undefined);\n\n        el.setAttribute(\\\\\"data-name\\\\\", {\n          test: state.name || \\\\\"any name\\\\\",\n        });\n\n        el.innerHTML =\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>';\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Textarea 1`] = `\n\"<textarea data-el=\\\\\"textarea-1\\\\\" data-dom-state=\\\\\"textarea-2\\\\\"></textarea>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='textarea-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"placeholder\\\\\", props.placeholder);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n\n        el.value = props.value;\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<div>Test</div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > Video 1`] = `\n\"<video preload=\\\\\"none\\\\\" data-el=\\\\\"video-1\\\\\"></video>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='video-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          objectFit: props.fit,\n          objectPosition: props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          borderRadius: 1,\n        });\n\n        el.key = props.video || \\\\\"no-src\\\\\";\n\n        el.setAttribute(\\\\\"poster\\\\\", props.posterImage);\n\n        el.setAttribute(\\\\\"autoplay\\\\\", props.autoPlay);\n\n        el.setAttribute(\\\\\"muted\\\\\", props.muted);\n\n        el.setAttribute(\\\\\"controls\\\\\", props.controls);\n\n        el.setAttribute(\\\\\"loop\\\\\", props.loop);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"steve\\\\\",\n      setName(value) {\n        state.name = value;\n        update();\n      },\n      updateNameWithArrowFn(value) {\n        state.name = value;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicForFragment 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <div>\n      <template data-el=\\\\\"div-1\\\\\"><!-- option --></template>\n    </div>\n  </template>\n\n  <template data-el=\\\\\"for-2\\\\\">\n    <div>\n      <template data-el=\\\\\"div-2\\\\\"><!-- option --></template>\n    </div>\n  </template>\n  <select data-dom-state=\\\\\"select-1\\\\\">\n    <template data-el=\\\\\"for-3\\\\\">\n      <option data-el=\\\\\"option-1\\\\\">\n        <template data-el=\\\\\"div-3\\\\\"><!-- option --></template>\n      </option>\n    </template>\n  </select>\n</div>\n<script>\n  (() => {\n    const state = { id: \\\\\"xyz\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='option-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n\n        el.key = \\`\\${state.id}-\\${option}\\`;\n\n        el.value = option;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter>\n  Hello\n  <state.tag>\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n  </state.tag>\n\n  <template data-el=\\\\\"for\\\\\">\n    <state.TagName>\n      <action.icon></action.icon>\n      <span>\n        <template data-el=\\\\\"div-2\\\\\"><!-- action.text --></template>\n      </span>\n    </state.TagName>\n  </template>\n</state.TagNameGetter>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.actions;\n        renderLoop(el, array, \\\\\"action\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const action = getScope(el, \\\\\"action\\\\\");\n        renderTextNode(el, action.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<div>\n  <input\n    class=\\\\\"input\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n    data-ref=\\\\\"undefined-props.inputRef\\\\\"\n  />\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<div>\n  <input\n    class=\\\\\"input\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n    data-ref=\\\\\"undefined-props.inputRef\\\\\"\n  />\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<div>\n  Hello!\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          state.name = data.name;\n          update();\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button data-el=\\\\\"button-1\\\\\" data-ref=\\\\\"undefined-buttonRef\\\\\">\n  Attribute Passing\n</button>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div>\n  <button data-el=\\\\\"button-1\\\\\" data-ref=\\\\\"undefined-buttonRef\\\\\">\n    Attribute Passing\n  </button>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > class + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > className + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > className 1`] = `\n\"<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div data-el=\\\\\"div-1\\\\\">With binding</div>\n</div>\n<script>\n  (() => {\n    const state = { bindings: \\\\\"a binding\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = state.bindings;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > classState 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = state.classState + \\\\\" div\\\\\";\n\n        Object.assign(el.style, state.styleState);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div data-el=\\\\\"div-1\\\\\">\n  <slot></slot>\n  <template data-el=\\\\\"div-3\\\\\"><!-- props.type --></template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = props.className;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > componentWithContext 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- foo.value --></template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, foo.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- foo.value --></template>\n<div>other</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, foo.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > contentState 1`] = `\n\"<div>setting context</div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > defaultProps 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.buttonText --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.buttonText);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      props.onClick();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      props.onClick(event);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\">\n    <!-- props.name || DEFAULT_VALUES.name -->\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name || DEFAULT_VALUES.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<div>\n  <input class=\\\\\"input\\\\\" data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"Steve\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"input\\\\\", onInput1Input);\n        el.addEventListener(\\\\\"input\\\\\", onInput1Input);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'input' event on input-1\n    function onInput1Input(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > eventProps 1`] = `\n\"<button data-el=\\\\\"button-1\\\\\">Test</button>\n<script>\n  (() => {\n    const state = {\n      handleClick() {\n        if (props.onGetVoid) {\n          props.onGetVoid();\n        }\n\n        if (props.onEnter) {\n          console.log(props.onEnter());\n        }\n\n        if (props.onPass) {\n          props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.handleClick();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > expressionState 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.refToUse --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      refToUse: !(props.componentRef instanceof Function)\n        ? props.componentRef\n        : null,\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.refToUse);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button data-el=\\\\\"button-1\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.label --></template>\n</button>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"data-icon\\\\\", props.icon);\n\n        el.setAttribute(\\\\\"data-disabled\\\\\", props.interactiveState);\n\n        el.setAttribute(\\\\\"data-width\\\\\", props.width);\n\n        el.setAttribute(\\\\\"data-size\\\\\", props.size);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.label);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > functionProps 1`] = `\n\"<p data-el=\\\\\"p-1\\\\\"></p>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='p-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"f\\\\\", () => x);\n\n        el.setAttribute(\\\\\"f1\\\\\", (x) => x);\n\n        el.setAttribute(\\\\\"f2\\\\\", (x) => {});\n\n        el.setAttribute(\\\\\"f3\\\\\", function () {\n          return x;\n        });\n\n        el.setAttribute(\\\\\"f4\\\\\", function (x) {\n          return x;\n        });\n\n        el.setAttribute(\\\\\"f5\\\\\", function (x) {\n          return;\n        });\n\n        el.setAttribute(\\\\\"f6\\\\\", function () {\n          return;\n        });\n\n        el.setAttribute(\\\\\"f7\\\\\", (a, b, c) => a + b + c);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > getterState 1`] = `\n\"<div>\n  <p>\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.foo2 --></template>\n  </p>\n  <p>\n    <template data-el=\\\\\"div-2\\\\\"><!-- state.bar --></template>\n  </p>\n  <p>\n    <template data-el=\\\\\"div-3\\\\\"><!-- state.baz(1) --></template>\n  </p>\n</div>\n<script>\n  (() => {\n    const state = {\n      get foo2() {\n        return props.foo + \\\\\"foo\\\\\";\n      },\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n      baz(i) {\n        return i + state.foo2.length;\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo2);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.bar);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        renderTextNode(el, state.baz(1));\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > import types 1`] = `\n\"<RenderBlock data-el=\\\\\"render-block\\\\\"></RenderBlock>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > layerName 1`] = `\n\"<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > nestedShow 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"show-2\\\\\">\n    <div>if condition A and condition B</div>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.conditionB;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > nestedStyles 1`] = `\n\"<div class=\\\\\"div\\\\\">Hello world</div>\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\" data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\">\n  <div>Test</div>\n</div>\n<script>\n  (() => {\n    const state = {\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    if (!onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      onInitOnce = true;\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onInit 1`] = `\n\"<div>\n  Default name defined by parent\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      state.name = defaultValues.name || props.name;\n      update();\n      console.log(\\\\\"set defaults with props\\\\\");\n      onInitOnce = true;\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onInitPlain 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onMount 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"Runs on mount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > preserveTyping 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > propsDestructure 1`] = `\n\"<div>\n  <slot></slot>\n  <template data-el=\\\\\"div-2\\\\\"><!-- props.type --></template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Decadef20\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > propsInterface 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > propsType 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > renderBlock 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"show-2\\\\\">\n    <state.tag data-el=\\\\\"state-tag\\\\\"></state.tag>\n  </template>\n  <template data-el=\\\\\"show-3\\\\\">\n    <template data-el=\\\\\"for\\\\\">\n      <RenderRepeatedBlock\n        data-el=\\\\\"render-repeated-block\\\\\"\n      ></RenderRepeatedBlock>\n    </template>\n  </template>\n  <template data-el=\\\\\"show-4\\\\\">\n    <state.tag data-el=\\\\\"state-tag-2\\\\\">\n      <state.renderComponentTag\n        data-el=\\\\\"state-render-component-tag\\\\\"\n      ></state.renderComponentTag>\n\n      <template data-el=\\\\\"for-2\\\\\">\n        <RenderBlock data-el=\\\\\"render-block\\\\\"></RenderBlock>\n      </template>\n\n      <template data-el=\\\\\"for-3\\\\\">\n        <BlockStyles data-el=\\\\\"block-styles\\\\\"></BlockStyles>\n      </template>\n    </state.tag>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {\n      get component() {\n        const componentName = getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n      get tag() {\n        return getBlockTag(state.useBlock);\n      },\n      get useBlock() {\n        return state.repeatItemData\n          ? props.block\n          : getProcessedBlock({\n              block: props.block,\n              state: props.context.state,\n              context: props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n      get actions() {\n        return getBlockActions({\n          block: state.useBlock,\n          state: props.context.state,\n          context: props.context.context,\n        });\n      },\n      get attributes() {\n        const blockProperties = getBlockProperties(state.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: state.useBlock,\n                  context: props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n      get shouldWrap() {\n        return !state.component?.noWrap;\n      },\n      get renderComponentProps() {\n        return {\n          blockChildren: state.useChildren,\n          componentRef: state.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(state.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(state.shouldWrap\n              ? {}\n              : {\n                  attributes: { ...state.attributes, ...state.actions },\n                }),\n            customBreakpoints:\n              state.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: state.childrenContext,\n        };\n      },\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n        return state.useBlock.children ?? [];\n      },\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !state.component?.component && !state.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n      },\n      get repeatItemData() {\n        /**\n         * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: props.context.state,\n          context: props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray = itemsArray.map((item, index) => ({\n          context: {\n            ...props.context,\n            state: {\n              ...props.context.state,\n              $index: index,\n              $item: item,\n              [itemNameToUse]: item,\n              [\\`$\\${itemNameToUse}Index\\`]: index,\n            },\n          },\n          block: blockWithoutRepeat,\n        }));\n        return repeatArray;\n      },\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: state.useBlock,\n          context: props.context,\n          blockStyles: state.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n      get childrenContext() {\n        return {\n          apiKey: props.context.apiKey,\n          state: props.context.state,\n          content: props.context.content,\n          context: props.context.context,\n          registeredComponents: props.context.registeredComponents,\n          inheritedStyles: state.inheritedTextStyles,\n        };\n      },\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.shouldWrap;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = isEmptyHtmlElement(state.tag);\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(state.tag) && state.repeatItemData;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.repeatItemData;\n        renderLoop(el, array, \\\\\"data\\\\\", \\\\\"index\\\\\");\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='render-repeated-block']\\\\\")\n        .forEach((el) => {\n          const index = getScope(el, \\\\\"index\\\\\");\n          const data = getScope(el, \\\\\"data\\\\\");\n\n          el.key = index;\n\n          el.setAttribute(\\\\\"repeatContext\\\\\", data.context);\n\n          el.setAttribute(\\\\\"block\\\\\", data.block);\n        });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(state.tag) && !state.repeatItemData;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = state.childrenWithoutParentComponent;\n        renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='render-block']\\\\\").forEach((el) => {\n        const child = getScope(el, \\\\\"child\\\\\");\n\n        el.key = \\\\\"render-block-\\\\\" + child.id;\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n\n        el.setAttribute(\\\\\"context\\\\\", state.childrenContext);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = state.childrenWithoutParentComponent;\n        renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='block-styles']\\\\\").forEach((el) => {\n        const child = getScope(el, \\\\\"child\\\\\");\n\n        el.key = \\\\\"block-style-\\\\\" + child.id;\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n\n        el.setAttribute(\\\\\"context\\\\\", state.childrenContext);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > renderContentExample 1`] = `\n\"<div class=\\\\\"div\\\\\" data-el=\\\\\"div-1\\\\\">\n  <RenderBlocks data-el=\\\\\"render-blocks\\\\\"></RenderBlocks>\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onDiv1Click);\n        el.addEventListener(\\\\\"click\\\\\", onDiv1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='render-blocks']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"blocks\\\\\", props.content.blocks);\n      });\n\n      destroyAnyNodes();\n\n      dispatchNewContentToVisualEditor(props.content);\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on div-1\n    function onDiv1Click(event) {\n      trackClick(props.content.id);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    sendComponentsToVisualEditor(props.customComponents);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <a data-el=\\\\\"a-1\\\\\">\n    <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n  </a>\n</template>\n<template data-el=\\\\\"show-2\\\\\">\n  <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n    <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n  </button>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > rootShow 1`] = `\n\"<template data-el=\\\\\"show\\\\\"><div>Bar</div></template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.foo === \\\\\"bar\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > self-referencing component 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  <template data-el=\\\\\"show\\\\\">\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.name === \\\\\"Batman\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  <slot></slot>\n  <template data-el=\\\\\"show\\\\\">\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.name === \\\\\"Batman\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > setState 1`] = `\n\"<div><button data-el=\\\\\"button-1\\\\\">Click me</button></div>\n<script>\n  (() => {\n    const state = {\n      n: [\\\\\"123\\\\\"],\n      someFn() {\n        state.n[0] = \\\\\"123\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.someFn();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > showExpressions 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">Content0</template>\n  <template data-el=\\\\\"show-2\\\\\">ContentA</template>\n  <template data-el=\\\\\"show-3\\\\\"></template>\n  <template data-el=\\\\\"show-4\\\\\">ContentB</template>\n  <template data-el=\\\\\"show-5\\\\\">\n    <template data-el=\\\\\"div-1\\\\\"><!-- undefined --></template>\n  </template>\n  <template data-el=\\\\\"show-6\\\\\">ContentC</template>\n  <template data-el=\\\\\"show-7\\\\\"></template>\n  <template data-el=\\\\\"show-8\\\\\">ContentD</template>\n  <template data-el=\\\\\"show-9\\\\\"></template>\n  <template data-el=\\\\\"show-10\\\\\">ContentE</template>\n  <template data-el=\\\\\"show-11\\\\\">hello</template>\n  <template data-el=\\\\\"show-12\\\\\">ContentF</template>\n  <template data-el=\\\\\"show-13\\\\\">123</template>\n  <template data-el=\\\\\"show-14\\\\\">4mb</template>\n  <template data-el=\\\\\"show-15\\\\\">\n    <template data-el=\\\\\"show-16\\\\\">20mb</template>\n  </template>\n  <template data-el=\\\\\"show-17\\\\\">\n    <template data-el=\\\\\"show-18\\\\\"><div>complete</div></template>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-5']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, undefined);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-6']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-7']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-8']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-9']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-10']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-11']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-12']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-13']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-14']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-15']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-16']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionB === \\\\\"Complete\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-17']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-18']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionB === \\\\\"Complete\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > showWithFor 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <div data-el=\\\\\"div-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- item --></template>\n    </div>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.items;\n        renderLoop(el, array, \\\\\"item\\\\\", \\\\\"idx\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const idx = getScope(el, \\\\\"idx\\\\\");\n\n        el.key = idx;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        renderTextNode(el, item);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">ContentA</template>\n  <template data-el=\\\\\"show-2\\\\\">ContentB</template>\n  <template data-el=\\\\\"show-3\\\\\">ContentC</template>\n  <template data-el=\\\\\"show-4\\\\\">ContentD</template>\n  <template data-el=\\\\\"show-5\\\\\">ContentE</template>\n  <template data-el=\\\\\"show-6\\\\\">ContentF</template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-5']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-6']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > showWithRootText 1`] = `\n\"<template data-el=\\\\\"show\\\\\">ContentA</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.id --></template>\n  <template data-el=\\\\\"div-2\\\\\"><!-- props.foo.value.bar.baz --></template>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.id);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.foo.value.bar.baz);\n      });\n\n      destroyAnyNodes();\n\n      console.log(\\\\\"props.id changed\\\\\", props.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > spreadAttrs 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > spreadProps 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > store-async-function 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > string-literal-store 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.foo --></template>\n</div>\n<script>\n  (() => {\n    const state = { foo: 123 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state['foo-bar'] --></template>\n</div>\n<script>\n  (() => {\n    const state = { foo-bar: 123,};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach(el => el.remove());\n      nodesToDestroy = [];\n    }\n\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n          document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n\n\n  renderTextNode(el, state['foo-bar']);\n          });\n\n\n      destroyAnyNodes();\n\n\n\n      pendingUpdate = false;\n    }\n\n\n\n    // Update with initial state on first load\n    update();\n\n\n\n\n\n\n\n\n      // Helper text DOM nodes\n      function renderTextNode(el, text) {\n        const textNode = document.createTextNode(text);\n        if (el?.scope) {\n          textNode.scope = el.scope\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        el.after(textNode);\n        nodesToDestroy.push(el.nextSibling);\n      }\n\n\n  })()\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<div class=\\\\\"builder-column div\\\\\" data-el=\\\\\"div-1\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n        });\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, props.attributes.style);\n\n        el.className = props.attributes.class + \\\\\" div\\\\\";\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > subComponent 1`] = `\n\"<Foo></Foo>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > svgComponent 1`] = `\n\"<svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" data-el=\\\\\"svg-1\\\\\">\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        data-el=\\\\\"fe-gaussian-blur\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='svg-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"viewBox\\\\\", \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42);\n\n        el.setAttribute(\\\\\"width\\\\\", 42);\n\n        el.setAttribute(\\\\\"height\\\\\", 42);\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='fe-gaussian-blur']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"stdDeviation\\\\\", 7);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > typeDependency 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.foo --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state._name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = { _name: \\\\\"test\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state._name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"test\\\\\",\n      getName() {\n        if (state.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return state.name;\n      },\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > use-style 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > useTarget 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      get name() {\n        const prefix = \\\\\"h\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Javascript Test > webComponent 1`] = `\n\"<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n\"\n`;\n\nexports[`Html > jsx > Remove Internal mitosis package 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n  ! I can run in React, Qwik, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Advanced 1`] = `\n\"<main>\n  <template data-el=\\\\\"for\\\\\">\n    <div>\n      <template data-el=\\\\\"div-1\\\\\"><!-- i --></template>\n      :\n      <template data-el=\\\\\"div-2\\\\\"><!-- person --></template>\n    </div>\n  </template>\n\n  <template data-el=\\\\\"for-2\\\\\">\n    <span>\n      <template data-el=\\\\\"div-3\\\\\"><!-- person --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-3\\\\\"><br /></template>\n\n  <template data-el=\\\\\"for-4\\\\\">\n    <pre><template data-el=\\\\\"div-4\\\\\"><!-- ee --></template></pre>\n  </template>\n\n  <template data-el=\\\\\"for-5\\\\\">\n    <p>\n      <template data-el=\\\\\"div-5\\\\\"><!-- index --></template>\n    </p>\n  </template>\n\n  <template data-el=\\\\\"for-6\\\\\">\n    <span>\n      <template data-el=\\\\\"div-6\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-7\\\\\"><!-- index --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-7\\\\\">\n    <span>\n      <template data-el=\\\\\"div-8\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-9\\\\\"><!-- count --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-8\\\\\">\n    <span>\n      <template data-el=\\\\\"div-10\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-11\\\\\"><!-- i --></template>\n    </span>\n  </template>\n\n  <template data-el=\\\\\"for-9\\\\\">\n    <span>\n      <template data-el=\\\\\"div-12\\\\\"><!-- person --></template>\n      <template data-el=\\\\\"div-13\\\\\"><!-- index --></template>\n    </span>\n  </template>\n</main>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const i = getScope(el, \\\\\"i\\\\\");\n        renderTextNode(el, i);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-4']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"_\\\\\", \\\\\"ee\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-4']\\\\\").forEach((el) => {\n        const ee = getScope(el, \\\\\"ee\\\\\");\n        renderTextNode(el, ee);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-5']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-5']\\\\\").forEach((el) => {\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-6']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-6']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-7']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-7']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"count\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-8']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-9']\\\\\").forEach((el) => {\n        const count = getScope(el, \\\\\"count\\\\\");\n        renderTextNode(el, count);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-8']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-10']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-11']\\\\\").forEach((el) => {\n        const i = getScope(el, \\\\\"i\\\\\");\n        renderTextNode(el, i);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-9']\\\\\").forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-12']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-13']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <input\n      class=\\\\\"input\\\\\"\n      data-el=\\\\\"input-1\\\\\"\n      data-dom-state=\\\\\"input-2\\\\\"\n      data-ref=\\\\\"undefined-inputRef\\\\\"\n    />\n    <label for=\\\\\"cars\\\\\" data-el=\\\\\"label-1\\\\\" data-ref=\\\\\"undefined-inputNoArgRef\\\\\">\n      Choose a car:\n    </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\" data-dom-state=\\\\\"select-1\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </template>\n\n  Hello\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowerCaseName() --></template>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.showInput;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"blur\\\\\", onInput1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", onInput1Blur);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowerCaseName());\n      });\n\n      destroyAnyNodes();\n\n      console.log(\\\\\"Received an update\\\\\");\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'blur' event on input-1\n    function onInput1Blur(event) {\n      state.onBlur();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = DEFAULT_VALUES.name || state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(myEvent) {\n      state.name = myEvent.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic 2`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <template data-el=\\\\\"show\\\\\">\n      <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n      Hello\n      <template data-el=\\\\\"div-1\\\\\"><!-- person --></template>\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        const whenCondition = person === state.name;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      const person = getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      state.name = event.target.value + \\\\\" and \\\\\" + person;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic Context 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\">\n    <!-- myService.method('hello') + state.name -->\n  </template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, myService.method(\\\\\"hello\\\\\") + state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.onChange();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      const hi = myService.method(\\\\\"hi\\\\\");\n      console.log(hi);\n      onInitOnce = true;\n    }\n\n    // onMount\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n      update();\n      onInitOnce = true;\n    }\n\n    // onMount\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<input\n  autocapitalize=\\\\\"on\\\\\"\n  autocomplete=\\\\\"on\\\\\"\n  data-el=\\\\\"input-1\\\\\"\n  data-dom-state=\\\\\"input-2\\\\\"\n/>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"spellcheck\\\\\", true);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <slot></slot>\n    <template data-el=\\\\\"div-2\\\\\"><!-- props.type --></template>\n  </template>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component-2\\\\\"\n  ></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent\n    data-el=\\\\\"my-boolean-attribute-component-3\\\\\"\n  ></MyBooleanAttributeComponent>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.children;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"toggle\\\\\", true);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component-2']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"toggle\\\\\", true);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-boolean-attribute-component-3']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"list\\\\\", null);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<div>\n  <MyBasicComponent data-el=\\\\\"my-basic-component\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      data-el=\\\\\"my-basic-on-mount-update-component\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      data-el=\\\\\"my-basic-outputs-component\\\\\"\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message: string) {\n        console.log(message);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"id\\\\\", state.dev);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-on-mount-update-component']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"hi\\\\\", state.name);\n\n          el.setAttribute(\\\\\"bye\\\\\", state.dev);\n        });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='my-basic-outputs-component']\\\\\")\n        .forEach((el) => {\n          el.removeEventListener(\n            \\\\\"messagechange\\\\\",\n            onMyBasicOutputsComponentMessagechange\n          );\n          el.addEventListener(\n            \\\\\"messagechange\\\\\",\n            onMyBasicOutputsComponentMessagechange\n          );\n\n          el.removeEventListener(\\\\\"event\\\\\", onMyBasicOutputsComponentEvent);\n          el.addEventListener(\\\\\"event\\\\\", onMyBasicOutputsComponentEvent);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'messagechange' event on my-basic-outputs-component\n    function onMyBasicOutputsComponentMessagechange(name) {\n      state.name = name;\n      update();\n    }\n\n    // Event handler for 'event' event on my-basic-outputs-component\n    function onMyBasicOutputsComponentEvent(event) {\n      state.log(\\\\\"Test\\\\\");\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicFor 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n    Hello\n    <template data-el=\\\\\"div-1\\\\\"><!-- person --></template>\n    ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.names;\n        renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const person = getScope(el, \\\\\"person\\\\\");\n        renderTextNode(el, person);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      const person = getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      state.name = event.target.value + \\\\\" and \\\\\" + person;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    console.log(\\\\\"onMount code\\\\\");\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicRef 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <input\n      class=\\\\\"input\\\\\"\n      data-el=\\\\\"input-1\\\\\"\n      data-dom-state=\\\\\"input-2\\\\\"\n      data-ref=\\\\\"undefined-inputRef\\\\\"\n    />\n    <label for=\\\\\"cars\\\\\" data-el=\\\\\"label-1\\\\\" data-ref=\\\\\"undefined-inputNoArgRef\\\\\">\n      Choose a car:\n    </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\" data-dom-state=\\\\\"select-1\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </template>\n\n  Hello\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowerCaseName() --></template>\n  ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.showInput;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"blur\\\\\", onInput1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", onInput1Blur);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowerCaseName());\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'blur' event on input-1\n    function onInput1Blur(event) {\n      state.onBlur();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<div><button data-el=\\\\\"button-1\\\\\">Click</button></div>\n<script>\n  (() => {\n    const state = {\n      handlerClick: function handlerClick(event: Event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", holdValueRef);\n        holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    async function onButton1Click(evt) {\n      await state.handlerClick(evt);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<div>\n  <h1>\n    Now:\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.count --></template>\n    , before:\n    <template data-el=\\\\\"div-2\\\\\"><!-- prevCount --></template>\n  </h1>\n  <button data-el=\\\\\"button-1\\\\\">Increment</button>\n</div>\n<script>\n  (() => {\n    const state = { count: 0 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.count);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, prevCount);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      prevCount = state.count;\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.count += 1;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Button 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Columns 1`] = `\n\"<div class=\\\\\"builder-columns div\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <div class=\\\\\"builder-column div-2\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- column.content --></template>\n      <template data-el=\\\\\"div-2\\\\\"><!-- index --></template>\n    </div>\n  </template>\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      getColumns() {\n        return props.columns || [];\n      },\n      getGutterSize() {\n        return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n      },\n      getWidth(index: number) {\n        const columns = state.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n      getColumnCssWidth(index: number) {\n        const columns = state.getColumns();\n        const gutterSize = state.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.columns;\n        renderLoop(el, array, \\\\\"column\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const column = getScope(el, \\\\\"column\\\\\");\n        renderTextNode(el, column.content);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<div>\n  <slot data-el=\\\\\"slot\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='slot']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", props.slotTesting);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <div data-el=\\\\\"div-1\\\\\">\n    <template data-el=\\\\\"show-2\\\\\">\n      <slot name=\\\\\"content\\\\\">\n        <template data-el=\\\\\"div-2\\\\\"><!-- props.content --></template>\n      </slot>\n    </template>\n    <div><hr /></div>\n    <div><slot></slot></div>\n  </div>\n</template>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"king\\\\\",\n      showContent: false,\n      get cls() {\n        return props.slotContent && props.children\n          ? \\`\\${state.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n      show() {\n        props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.slotReference;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\");\n\n        el.setAttribute(\\\\\"title\\\\\", props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\");\n\n        el.removeEventListener(\\\\\"click\\\\\", onDiv1Click);\n        el.addEventListener(\\\\\"click\\\\\", onDiv1Click);\n\n        el.className = state.cls;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = state.showContent && props.slotContent;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.content);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on div-1\n    function onDiv1Click(event) {\n      state.show();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > CustomCode 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\"></div>\n<script>\n  (() => {\n    const state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n        el.innerHTML = props.code;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    state.findAndRunScripts();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Embed 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\"></div>\n<script>\n  (() => {\n    const state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n\n        el.innerHTML = props.code;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    state.findAndRunScripts();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Image 1`] = `\n\"<div>\n  <picture data-el=\\\\\"picture-1\\\\\" data-ref=\\\\\"undefined-pictureRef\\\\\">\n    <template data-el=\\\\\"show\\\\\"><img data-el=\\\\\"img-1\\\\\" /></template>\n    <source data-el=\\\\\"source-1\\\\\" />\n  </picture>\n  <slot></slot>\n</div>\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      scrollListener: null,\n      imageLoaded: false,\n      setLoaded() {\n        state.imageLoaded = true;\n        update();\n      },\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!props.lazy && state.isBrowser();\n      },\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = !state.useLazyLoading() || state.load;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"alt\\\\\", props.altText);\n\n        el.setAttribute(\n          \\\\\"aria-role\\\\\",\n          props.altText ? \\\\\"presentation\\\\\" : undefined\n        );\n\n        el.className =\n          \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") + \\\\\" img\\\\\";\n\n        el.setAttribute(\\\\\"src\\\\\", props.image);\n\n        el.removeEventListener(\\\\\"load\\\\\", onImg1Load);\n        el.addEventListener(\\\\\"load\\\\\", onImg1Load);\n\n        el.setAttribute(\\\\\"srcset\\\\\", props.srcset);\n\n        el.setAttribute(\\\\\"sizes\\\\\", props.sizes);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='source-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"srcset\\\\\", props.srcset);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'load' event on img-1\n    function onImg1Load(event) {\n      state.setLoaded();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            update();\n            state.scrollListener = null;\n            update();\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      update();\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Image State 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <img class=\\\\\"custom-class\\\\\" data-el=\\\\\"img-1\\\\\" />\n  </template>\n</div>\n<script>\n  (() => {\n    const state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.images;\n        renderLoop(el, array, \\\\\"item\\\\\", \\\\\"itemIndex\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        const itemIndex = getScope(el, \\\\\"itemIndex\\\\\");\n\n        el.setAttribute(\\\\\"src\\\\\", item);\n\n        el.key = itemIndex;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Img 1`] = `\n\"<img data-el=\\\\\"img-1\\\\\" />\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n        });\n\n        el.key = (Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"alt\\\\\", props.altText);\n\n        el.setAttribute(\\\\\"src\\\\\", props.imgSrc);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Input 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.key =\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"placeholder\\\\\", props.placeholder);\n\n        el.setAttribute(\\\\\"type\\\\\", props.type);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n\n        el.value = props.value;\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n\n        el.setAttribute(\\\\\"required\\\\\", props.required);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      props.onChange?.(event.target.value);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > InputParent 1`] = `\n\"<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  data-el=\\\\\"form-input-component\\\\\"\n></FormInputComponent>\n<script>\n  (() => {\n    const state = {\n      handleChange(value: string) {\n        console.log(value);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='form-input-component']\\\\\")\n        .forEach((el) => {\n          el.removeEventListener(\\\\\"change\\\\\", onFormInputComponentChange);\n          el.addEventListener(\\\\\"change\\\\\", onFormInputComponentChange);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on form-input-component\n    function onFormInputComponentChange(value) {\n      state.handleChange(value);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > NestedStore 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">\n  Test\n\n  <p data-el=\\\\\"p-1\\\\\">Message</p>\n</div>\n<script>\n  (() => {\n    const state = { _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", state._id);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='p-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", state._messageId);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > RawText 1`] = `\n\"<span data-el=\\\\\"span-1\\\\\"></span>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='span-1']\\\\\").forEach((el) => {\n        el.className = props.attributes?.class || props.attributes?.className;\n\n        el.innerHTML = props.text || \\\\\"\\\\\";\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Section 1`] = `\n\"<section data-el=\\\\\"section-1\\\\\"><slot></slot></section>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='section-1']\\\\\").forEach((el) => {\n        Object.assign(\n          el.style,\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: props.maxWidth,\n              }\n            : undefined\n        );\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Section 2`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <section data-el=\\\\\"section-1\\\\\"><slot></slot></section>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = { max: 42, items: [42] };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.max;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.items;\n        renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='section-1']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        Object.assign(el.style, {\n          maxWidth: item + state.max,\n        });\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Select 1`] = `\n\"<select data-el=\\\\\"select-1\\\\\" data-dom-state=\\\\\"select-2\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <option data-el=\\\\\"option-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- option.name || option.value --></template>\n    </option>\n  </template>\n</select>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='select-1']\\\\\").forEach((el) => {\n        el.value = props.value;\n\n        el.key =\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\";\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.options;\n        renderLoop(el, array, \\\\\"option\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='option-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        const index = getScope(el, \\\\\"index\\\\\");\n\n        el.value = option.value;\n\n        el.setAttribute(\\\\\"data-index\\\\\", index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option.name || option.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > SlotDefault 1`] = `\n\"<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > SlotHtml 1`] = `\n\"<div>\n  <ContentSlotCode><slot data-el=\\\\\"slot\\\\\"></slot></ContentSlotCode>\n</div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='slot']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"testing\\\\\", <div>Hello</div>);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > SlotJsx 1`] = `\n\"<div><ContentSlotCode data-el=\\\\\"content-slot-code\\\\\"></ContentSlotCode></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document\n        .querySelectorAll(\\\\\"[data-el='content-slot-code']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"slotTesting\\\\\", <div>Hello</div>);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > SlotNamed 1`] = `\n\"<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Stamped.io 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">\n  <button data-el=\\\\\"button-1\\\\\">Write a review</button>\n  <template data-el=\\\\\"show\\\\\">\n    <input placeholder=\\\\\"Email\\\\\" data-dom-state=\\\\\"input-1\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea\\\\\"\n      data-dom-state=\\\\\"textarea-1\\\\\"\n    ></textarea>\n    <button class=\\\\\"button\\\\\" data-el=\\\\\"button-2\\\\\">Submit</button>\n  </template>\n\n  <template data-el=\\\\\"for\\\\\">\n    <div class=\\\\\"review\\\\\" data-el=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" data-el=\\\\\"img-1\\\\\" />\n      <div data-el=\\\\\"div-2\\\\\">\n        <div>\n          N:\n          <template data-el=\\\\\"div-3\\\\\"><!-- index --></template>\n        </div>\n        <div>\n          <template data-el=\\\\\"div-4\\\\\"><!-- review.author --></template>\n        </div>\n        <div>\n          <template data-el=\\\\\"div-5\\\\\"><!-- review.reviewMessage --></template>\n        </div>\n      </div>\n    </div>\n  </template>\n</div>\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"data-user\\\\\", state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.showReviewPrompt || \\\\\"asdf\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-2']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton2Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton2Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.reviews;\n        renderLoop(el, array, \\\\\"review\\\\\", \\\\\"index\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='review']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n\n        el.key = review.id;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='img-1']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n\n        el.setAttribute(\\\\\"src\\\\\", review.avatar);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        el.className = state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\";\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const index = getScope(el, \\\\\"index\\\\\");\n        renderTextNode(el, index);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-4']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n        renderTextNode(el, review.author);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-5']\\\\\").forEach((el) => {\n        const review = getScope(el, \\\\\"review\\\\\");\n        renderTextNode(el, review.reviewMessage);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.showReviewPrompt = true;\n      update();\n    }\n\n    // Event handler for 'click' event on button-2\n    function onButton2Click(ev) {\n      ev.preventDefault();\n      state.showReviewPrompt = false;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n        update();\n      });\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > StoreComment 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.foo --></template>\n<script>\n  (() => {\n    const state = { foo: true, bar() {} };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.foo(state.errors) --></template>\n<script>\n  (() => {\n    const state = {\n      errors: {},\n      foo(errors) {\n        return errors;\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo(state.errors));\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > StoreWithState 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- state.bar() --></template>\n<script>\n  (() => {\n    const state = {\n      foo: false,\n      bar() {\n        return state.foo;\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.bar());\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" data-el=\\\\\"button-1\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n</button>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Text 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Decadef20\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"contentEditable\\\\\", allowEditingText || undefined);\n\n        el.setAttribute(\\\\\"data-name\\\\\", {\n          test: state.name || \\\\\"any name\\\\\",\n        });\n\n        el.innerHTML =\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>';\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Textarea 1`] = `\n\"<textarea data-el=\\\\\"textarea-1\\\\\" data-dom-state=\\\\\"textarea-2\\\\\"></textarea>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='textarea-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"placeholder\\\\\", props.placeholder);\n\n        el.setAttribute(\\\\\"name\\\\\", props.name);\n\n        el.value = props.value;\n\n        el.setAttribute(\\\\\"defaultValue\\\\\", props.defaultValue);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<div>Test</div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > Video 1`] = `\n\"<video preload=\\\\\"none\\\\\" data-el=\\\\\"video-1\\\\\"></video>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='video-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          objectFit: props.fit,\n          objectPosition: props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          borderRadius: 1,\n        });\n\n        el.key = props.video || \\\\\"no-src\\\\\";\n\n        el.setAttribute(\\\\\"poster\\\\\", props.posterImage);\n\n        el.setAttribute(\\\\\"autoplay\\\\\", props.autoPlay);\n\n        el.setAttribute(\\\\\"muted\\\\\", props.muted);\n\n        el.setAttribute(\\\\\"controls\\\\\", props.controls);\n\n        el.setAttribute(\\\\\"loop\\\\\", props.loop);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"steve\\\\\",\n      setName(value) {\n        state.name = value;\n        update();\n      },\n      updateNameWithArrowFn(value) {\n        state.name = value;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicForFragment 1`] = `\n\"<div>\n  <template data-el=\\\\\"for\\\\\">\n    <div>\n      <template data-el=\\\\\"div-1\\\\\"><!-- option --></template>\n    </div>\n  </template>\n\n  <template data-el=\\\\\"for-2\\\\\">\n    <div>\n      <template data-el=\\\\\"div-2\\\\\"><!-- option --></template>\n    </div>\n  </template>\n  <select data-dom-state=\\\\\"select-1\\\\\">\n    <template data-el=\\\\\"for-3\\\\\">\n      <option data-el=\\\\\"option-1\\\\\">\n        <template data-el=\\\\\"div-3\\\\\"><!-- option --></template>\n      </option>\n    </template>\n  </select>\n</div>\n<script>\n  (() => {\n    const state = { id: \\\\\"xyz\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"];\n        renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='option-1']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n\n        el.key = \\`\\${state.id}-\\${option}\\`;\n\n        el.value = option;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        const option = getScope(el, \\\\\"option\\\\\");\n        renderTextNode(el, option);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter>\n  Hello\n  <state.tag>\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n  </state.tag>\n\n  <template data-el=\\\\\"for\\\\\">\n    <state.TagName>\n      <action.icon></action.icon>\n      <span>\n        <template data-el=\\\\\"div-2\\\\\"><!-- action.text --></template>\n      </span>\n    </state.TagName>\n  </template>\n</state.TagNameGetter>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.actions;\n        renderLoop(el, array, \\\\\"action\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const action = getScope(el, \\\\\"action\\\\\");\n        renderTextNode(el, action.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<div>\n  <input\n    class=\\\\\"input\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n    data-ref=\\\\\"undefined-props.inputRef\\\\\"\n  />\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<div>\n  <input\n    class=\\\\\"input\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n    data-ref=\\\\\"undefined-props.inputRef\\\\\"\n  />\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<div>\n  Hello!\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"PatrickJS\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      const controller = new AbortController();\n      const signal = controller.signal;\n      fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n        signal,\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          state.name = data.name;\n          update();\n        });\n      return () => {\n        if (!signal.aborted) {\n          controller.abort();\n        }\n      };\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button data-el=\\\\\"button-1\\\\\" data-ref=\\\\\"undefined-buttonRef\\\\\">\n  Attribute Passing\n</button>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div>\n  <button data-el=\\\\\"button-1\\\\\" data-ref=\\\\\"undefined-buttonRef\\\\\">\n    Attribute Passing\n  </button>\n</div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > class + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > className + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > className 1`] = `\n\"<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div data-el=\\\\\"div-1\\\\\">With binding</div>\n</div>\n<script>\n  (() => {\n    const state = { bindings: \\\\\"a binding\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = state.bindings;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > classState 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = state.classState + \\\\\" div\\\\\";\n\n        Object.assign(el.style, state.styleState);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div data-el=\\\\\"div-1\\\\\">\n  <slot></slot>\n  <template data-el=\\\\\"div-3\\\\\"><!-- props.type --></template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.className = props.className;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > componentWithContext 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- foo.value --></template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, foo.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<template data-el=\\\\\"div-1\\\\\"><!-- foo.value --></template>\n<div>other</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, foo.value);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > contentState 1`] = `\n\"<div>setting context</div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > defaultProps 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.buttonText --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.buttonText);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      props.onClick();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">\n    <a data-el=\\\\\"a-1\\\\\">\n      <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n    </a>\n  </template>\n  <template data-el=\\\\\"show-2\\\\\">\n    <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n    </button>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      props.onClick(event);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\">\n    <!-- props.name || DEFAULT_VALUES.name -->\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name || DEFAULT_VALUES.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<div>\n  <input class=\\\\\"input\\\\\" data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n<script>\n  (() => {\n    const state = { name: \\\\\"Steve\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n\n        el.removeEventListener(\\\\\"input\\\\\", onInput1Input);\n        el.addEventListener(\\\\\"input\\\\\", onInput1Input);\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'input' event on input-1\n    function onInput1Input(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > eventProps 1`] = `\n\"<button data-el=\\\\\"button-1\\\\\">Test</button>\n<script>\n  (() => {\n    const state = {\n      handleClick() {\n        if (props.onGetVoid) {\n          props.onGetVoid();\n        }\n\n        if (props.onEnter) {\n          console.log(props.onEnter());\n        }\n\n        if (props.onPass) {\n          props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.handleClick();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > expressionState 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.refToUse --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      refToUse: !(props.componentRef instanceof Function)\n        ? props.componentRef\n        : null,\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.refToUse);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button data-el=\\\\\"button-1\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.label --></template>\n</button>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"data-icon\\\\\", props.icon);\n\n        el.setAttribute(\\\\\"data-disabled\\\\\", props.interactiveState);\n\n        el.setAttribute(\\\\\"data-width\\\\\", props.width);\n\n        el.setAttribute(\\\\\"data-size\\\\\", props.size);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.label);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > functionProps 1`] = `\n\"<p data-el=\\\\\"p-1\\\\\"></p>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='p-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"f\\\\\", () => x);\n\n        el.setAttribute(\\\\\"f1\\\\\", (x) => x);\n\n        el.setAttribute(\\\\\"f2\\\\\", (x) => {});\n\n        el.setAttribute(\\\\\"f3\\\\\", function () {\n          return x;\n        });\n\n        el.setAttribute(\\\\\"f4\\\\\", function (x) {\n          return x;\n        });\n\n        el.setAttribute(\\\\\"f5\\\\\", function (x) {\n          return;\n        });\n\n        el.setAttribute(\\\\\"f6\\\\\", function () {\n          return;\n        });\n\n        el.setAttribute(\\\\\"f7\\\\\", (a, b, c) => a + b + c);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > getterState 1`] = `\n\"<div>\n  <p>\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.foo2 --></template>\n  </p>\n  <p>\n    <template data-el=\\\\\"div-2\\\\\"><!-- state.bar --></template>\n  </p>\n  <p>\n    <template data-el=\\\\\"div-3\\\\\"><!-- state.baz(1) --></template>\n  </p>\n</div>\n<script>\n  (() => {\n    const state = {\n      get foo2() {\n        return props.foo + \\\\\"foo\\\\\";\n      },\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n      baz(i: number) {\n        return i + state.foo2.length;\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo2);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.bar);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-3']\\\\\").forEach((el) => {\n        renderTextNode(el, state.baz(1));\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > import types 1`] = `\n\"<RenderBlock data-el=\\\\\"render-block\\\\\"></RenderBlock>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > layerName 1`] = `\n\"<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > nestedShow 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"show-2\\\\\">\n    <div>if condition A and condition B</div>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.conditionB;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > nestedStyles 1`] = `\n\"<div class=\\\\\"div\\\\\">Hello world</div>\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\" data-el=\\\\\"div-1\\\\\" data-ref=\\\\\"undefined-elem\\\\\">\n  <div>Test</div>\n</div>\n<script>\n  (() => {\n    const state = {\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    if (!onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      onInitOnce = true;\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onInit 1`] = `\n\"<div>\n  Default name defined by parent\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n    let onInitOnce = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    if (!onInitOnce) {\n      state.name = defaultValues.name || props.name;\n      update();\n      console.log(\\\\\"set defaults with props\\\\\");\n      onInitOnce = true;\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onInitPlain 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onMount 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"Runs on mount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > preserveTyping 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > propsDestructure 1`] = `\n\"<div>\n  <slot></slot>\n  <template data-el=\\\\\"div-2\\\\\"><!-- props.type --></template>\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Decadef20\\\\\" };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.type);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > propsInterface 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > propsType 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > renderBlock 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"show-2\\\\\">\n    <state.tag data-el=\\\\\"state-tag\\\\\"></state.tag>\n  </template>\n  <template data-el=\\\\\"show-3\\\\\">\n    <template data-el=\\\\\"for\\\\\">\n      <RenderRepeatedBlock\n        data-el=\\\\\"render-repeated-block\\\\\"\n      ></RenderRepeatedBlock>\n    </template>\n  </template>\n  <template data-el=\\\\\"show-4\\\\\">\n    <state.tag data-el=\\\\\"state-tag-2\\\\\">\n      <state.renderComponentTag\n        data-el=\\\\\"state-render-component-tag\\\\\"\n      ></state.renderComponentTag>\n\n      <template data-el=\\\\\"for-2\\\\\">\n        <RenderBlock data-el=\\\\\"render-block\\\\\"></RenderBlock>\n      </template>\n\n      <template data-el=\\\\\"for-3\\\\\">\n        <BlockStyles data-el=\\\\\"block-styles\\\\\"></BlockStyles>\n      </template>\n    </state.tag>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {\n      get component() {\n        const componentName = getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n      get tag() {\n        return getBlockTag(state.useBlock);\n      },\n      get useBlock() {\n        return state.repeatItemData\n          ? props.block\n          : getProcessedBlock({\n              block: props.block,\n              state: props.context.state,\n              context: props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n      get actions() {\n        return getBlockActions({\n          block: state.useBlock,\n          state: props.context.state,\n          context: props.context.context,\n        });\n      },\n      get attributes() {\n        const blockProperties = getBlockProperties(state.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: state.useBlock,\n                  context: props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n      get shouldWrap() {\n        return !state.component?.noWrap;\n      },\n      get renderComponentProps() {\n        return {\n          blockChildren: state.useChildren,\n          componentRef: state.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(state.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(state.shouldWrap\n              ? {}\n              : {\n                  attributes: { ...state.attributes, ...state.actions },\n                }),\n            customBreakpoints:\n              state.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: state.childrenContext,\n        };\n      },\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n        return state.useBlock.children ?? [];\n      },\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !state.component?.component && !state.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n      },\n      get repeatItemData() {\n        /**\n         * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: props.context.state,\n          context: props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray =\n          itemsArray.map <\n          RepeatData >\n          ((item, index) => ({\n            context: {\n              ...props.context,\n              state: {\n                ...props.context.state,\n                $index: index,\n                $item: item,\n                [itemNameToUse]: item,\n                [\\`$\\${itemNameToUse}Index\\`]: index,\n              },\n            },\n            block: blockWithoutRepeat,\n          }));\n        return repeatArray;\n      },\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: state.useBlock,\n          context: props.context,\n          blockStyles: state.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n      get childrenContext() {\n        return {\n          apiKey: props.context.apiKey,\n          state: props.context.state,\n          content: props.context.content,\n          context: props.context.context,\n          registeredComponents: props.context.registeredComponents,\n          inheritedStyles: state.inheritedTextStyles,\n        };\n      },\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.shouldWrap;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = isEmptyHtmlElement(state.tag);\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(state.tag) && state.repeatItemData;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.repeatItemData;\n        renderLoop(el, array, \\\\\"data\\\\\", \\\\\"index\\\\\");\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='render-repeated-block']\\\\\")\n        .forEach((el) => {\n          const index = getScope(el, \\\\\"index\\\\\");\n          const data = getScope(el, \\\\\"data\\\\\");\n\n          el.key = index;\n\n          el.setAttribute(\\\\\"repeatContext\\\\\", data.context);\n\n          el.setAttribute(\\\\\"block\\\\\", data.block);\n        });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(state.tag) && !state.repeatItemData;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-2']\\\\\").forEach((el) => {\n        let array = state.childrenWithoutParentComponent;\n        renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='render-block']\\\\\").forEach((el) => {\n        const child = getScope(el, \\\\\"child\\\\\");\n\n        el.key = \\\\\"render-block-\\\\\" + child.id;\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n\n        el.setAttribute(\\\\\"context\\\\\", state.childrenContext);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for-3']\\\\\").forEach((el) => {\n        let array = state.childrenWithoutParentComponent;\n        renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='block-styles']\\\\\").forEach((el) => {\n        const child = getScope(el, \\\\\"child\\\\\");\n\n        el.key = \\\\\"block-style-\\\\\" + child.id;\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n\n        el.setAttribute(\\\\\"context\\\\\", state.childrenContext);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > renderContentExample 1`] = `\n\"<div class=\\\\\"div\\\\\" data-el=\\\\\"div-1\\\\\">\n  <RenderBlocks data-el=\\\\\"render-blocks\\\\\"></RenderBlocks>\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onDiv1Click);\n        el.addEventListener(\\\\\"click\\\\\", onDiv1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='render-blocks']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"blocks\\\\\", props.content.blocks);\n      });\n\n      destroyAnyNodes();\n\n      dispatchNewContentToVisualEditor(props.content);\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on div-1\n    function onDiv1Click(event) {\n      trackClick(props.content.id);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    sendComponentsToVisualEditor(props.customComponents);\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <a data-el=\\\\\"a-1\\\\\">\n    <template data-el=\\\\\"div-1\\\\\"><!-- props.text --></template>\n  </a>\n</template>\n<template data-el=\\\\\"show-2\\\\\">\n  <button type=\\\\\"button\\\\\" data-el=\\\\\"button-1\\\\\">\n    <template data-el=\\\\\"div-2\\\\\"><!-- props.text --></template>\n  </button>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='a-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"href\\\\\", props.link);\n\n        el.setAttribute(\n          \\\\\"target\\\\\",\n          props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n        );\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = !props.link;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.text);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > rootShow 1`] = `\n\"<template data-el=\\\\\"show\\\\\"><div>Bar</div></template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.foo === \\\\\"bar\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > self-referencing component 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  <template data-el=\\\\\"show\\\\\">\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.name === \\\\\"Batman\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  <slot></slot>\n  <template data-el=\\\\\"show\\\\\">\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.name === \\\\\"Batman\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > setState 1`] = `\n\"<div><button data-el=\\\\\"button-1\\\\\">Click me</button></div>\n<script>\n  (() => {\n    const state = {\n      n: [\\\\\"123\\\\\"],\n      someFn() {\n        state.n[0] = \\\\\"123\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.someFn();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > showExpressions 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">Content0</template>\n  <template data-el=\\\\\"show-2\\\\\">ContentA</template>\n  <template data-el=\\\\\"show-3\\\\\"></template>\n  <template data-el=\\\\\"show-4\\\\\">ContentB</template>\n  <template data-el=\\\\\"show-5\\\\\">\n    <template data-el=\\\\\"div-1\\\\\"><!-- undefined --></template>\n  </template>\n  <template data-el=\\\\\"show-6\\\\\">ContentC</template>\n  <template data-el=\\\\\"show-7\\\\\"></template>\n  <template data-el=\\\\\"show-8\\\\\">ContentD</template>\n  <template data-el=\\\\\"show-9\\\\\"></template>\n  <template data-el=\\\\\"show-10\\\\\">ContentE</template>\n  <template data-el=\\\\\"show-11\\\\\">hello</template>\n  <template data-el=\\\\\"show-12\\\\\">ContentF</template>\n  <template data-el=\\\\\"show-13\\\\\">123</template>\n  <template data-el=\\\\\"show-14\\\\\">4mb</template>\n  <template data-el=\\\\\"show-15\\\\\">\n    <template data-el=\\\\\"show-16\\\\\">20mb</template>\n  </template>\n  <template data-el=\\\\\"show-17\\\\\">\n    <template data-el=\\\\\"show-18\\\\\"><div>complete</div></template>\n  </template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-5']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, undefined);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-6']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-7']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-8']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-9']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-10']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-11']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-12']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-13']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-14']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-15']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-16']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionB === \\\\\"Complete\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-17']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA === \\\\\"Default\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-18']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionB === \\\\\"Complete\\\\\";\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > showWithFor 1`] = `\n\"<template data-el=\\\\\"show\\\\\">\n  <template data-el=\\\\\"for\\\\\">\n    <div data-el=\\\\\"div-1\\\\\">\n      <template data-el=\\\\\"div-2\\\\\"><!-- item --></template>\n    </div>\n  </template>\n</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = props.items;\n        renderLoop(el, array, \\\\\"item\\\\\", \\\\\"idx\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const idx = getScope(el, \\\\\"idx\\\\\");\n\n        el.key = idx;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        const item = getScope(el, \\\\\"item\\\\\");\n        renderTextNode(el, item);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<div>\n  <template data-el=\\\\\"show\\\\\">ContentA</template>\n  <template data-el=\\\\\"show-2\\\\\">ContentB</template>\n  <template data-el=\\\\\"show-3\\\\\">ContentC</template>\n  <template data-el=\\\\\"show-4\\\\\">ContentD</template>\n  <template data-el=\\\\\"show-5\\\\\">ContentE</template>\n  <template data-el=\\\\\"show-6\\\\\">ContentF</template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-2']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-3']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-4']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-5']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='show-6']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > showWithRootText 1`] = `\n\"<template data-el=\\\\\"show\\\\\">ContentA</template>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = props.conditionA;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.id --></template>\n  <template data-el=\\\\\"div-2\\\\\"><!-- props.foo.bar.baz --></template>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.id);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, props.foo.bar.baz);\n      });\n\n      destroyAnyNodes();\n\n      console.log(\\\\\"props.id changed\\\\\", props.id);\n      console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > spreadProps 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > store-async-function 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > string-literal-store 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.foo --></template>\n</div>\n<script>\n  (() => {\n    const state = { foo: 123 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state['foo-bar'] --></template>\n</div>\n<script>\n  (() => {\n    const state = { foo-bar: 123,};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach(el => el.remove());\n      nodesToDestroy = [];\n    }\n\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n          document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n\n\n  renderTextNode(el, state['foo-bar']);\n          });\n\n\n      destroyAnyNodes();\n\n\n\n      pendingUpdate = false;\n    }\n\n\n\n    // Update with initial state on first load\n    update();\n\n\n\n\n\n\n\n\n      // Helper text DOM nodes\n      function renderTextNode(el, text) {\n        const textNode = document.createTextNode(text);\n        if (el?.scope) {\n          textNode.scope = el.scope\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        el.after(textNode);\n        nodesToDestroy.push(el.nextSibling);\n      }\n\n\n  })()\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<div class=\\\\\"builder-column div\\\\\" data-el=\\\\\"div-1\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n        });\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        Object.assign(el.style, props.attributes.style);\n\n        el.className = props.attributes.class + \\\\\" div\\\\\";\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > subComponent 1`] = `\n\"<Foo></Foo>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > svgComponent 1`] = `\n\"<svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" data-el=\\\\\"svg-1\\\\\">\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        data-el=\\\\\"fe-gaussian-blur\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='svg-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"viewBox\\\\\", \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42);\n\n        el.setAttribute(\\\\\"width\\\\\", 42);\n\n        el.setAttribute(\\\\\"height\\\\\", 42);\n      });\n\n      document\n        .querySelectorAll(\\\\\"[data-el='fe-gaussian-blur']\\\\\")\n        .forEach((el) => {\n          el.setAttribute(\\\\\"stdDeviation\\\\\", 7);\n        });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > typeDependency 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.foo --></template>\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.foo);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- props.name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = {};\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, props.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state._name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = { _name: \\\\\"test\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state._name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<div>\n  Hello\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n  !\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"test\\\\\",\n      getName() {\n        if (state.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return state.name;\n      },\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > use-style 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > useTarget 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.name --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      get name() {\n        const prefix = \\\\\"h\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.name);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // onMount\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > jsx > Typescript Test > webComponent 1`] = `\n\"<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > basic 1`] = `\n\"<div>\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Steve\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n\n        el.value = state.name;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > bindGroup 1`] = `\n\"<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    data-el=\\\\\"input-3\\\\\"\n    data-dom-state=\\\\\"input-4\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    data-el=\\\\\"input-5\\\\\"\n    data-dom-state=\\\\\"input-6\\\\\"\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    data-el=\\\\\"input-7\\\\\"\n    data-dom-state=\\\\\"input-8\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    data-el=\\\\\"input-9\\\\\"\n    data-dom-state=\\\\\"input-10\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    data-el=\\\\\"input-11\\\\\"\n    data-dom-state=\\\\\"input-12\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    data-el=\\\\\"input-13\\\\\"\n    data-dom-state=\\\\\"input-14\\\\\"\n  />\n  <p>\n    Tortilla:\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.tortilla --></template>\n  </p>\n  <p>\n    Fillings:\n    <template data-el=\\\\\"div-2\\\\\"><!-- state.fillings --></template>\n  </p>\n</div>\n<script>\n  (() => {\n    const state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Plain\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-3']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Whole wheat\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput3Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput3Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-5']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Spinach\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput5Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput5Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-7']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Rice\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput7Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput7Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-9']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Beans\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput9Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput9Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-11']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Cheese\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput11Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput11Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-13']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Guac (extra)\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput13Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput13Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.tortilla);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.fillings);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-3\n    function onInput3Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-5\n    function onInput5Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-7\n    function onInput7Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-9\n    function onInput9Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-11\n    function onInput11Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-13\n    function onInput13Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > bindProperty 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = { value: \\\\\"hello\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.value;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > classDirective 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = { focus: true };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.className = \\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > context 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.activeTab --></template>\n</div>\n<script>\n  (() => {\n    const state = { activeTab: 0 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.activeTab);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > each 1`] = `\n\"<ul>\n  <template data-el=\\\\\"for\\\\\">\n    <li>\n      <template data-el=\\\\\"div-1\\\\\"><!-- num --></template>\n    </li>\n  </template>\n</ul>\n<script>\n  (() => {\n    const state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.numbers;\n        renderLoop(el, array, \\\\\"num\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const num = getScope(el, \\\\\"num\\\\\");\n        renderTextNode(el, num);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > eventHandlers 1`] = `\n\"<div>\n  <button data-el=\\\\\"button-1\\\\\">Log</button>\n  <button data-el=\\\\\"button-2\\\\\">Log</button>\n  <button data-el=\\\\\"button-3\\\\\">Log</button>\n</div>\n<script>\n  (() => {\n    const state = {\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-2']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton2Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton2Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-3']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton3Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton3Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(a) {\n      state.log(\\\\\"hi\\\\\");\n    }\n\n    // Event handler for 'click' event on button-2\n    function onButton2Click(event) {\n      state.log(event);\n    }\n\n    // Event handler for 'click' event on button-3\n    function onButton3Click(event) {\n      state.log(event);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > html 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<script>\n  (() => {\n    const state = { html: \\\\\"<b>bold</b>\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.innerHTML = state.html;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > ifElse 1`] = `\n\"<template data-el=\\\\\"show\\\\\"><button data-el=\\\\\"button-1\\\\\">Hide</button></template>\n<script>\n  (() => {\n    const state = {\n      show: true,\n      toggle: function toggle() {\n        state.show = !state.show;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.show;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.toggle(event);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > imports 1`] = `\n\"<div>\n  <button type=\\\\\"button\\\\\" data-el=\\\\\"button\\\\\"><slot></slot></button>\n</div>\n<script>\n  (() => {\n    const state = { disabled: false };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"disabled\\\\\", state.disabled);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > reactive 1`] = `\n\"<div>\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Lowercase:\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowercaseName --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      get lowercaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowercaseName);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<div>\n  <input type=\\\\\"number\\\\\" data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n  <input type=\\\\\"number\\\\\" data-el=\\\\\"input-3\\\\\" data-dom-state=\\\\\"input-4\\\\\" />\n\n  Result:\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.result --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        state.result = a_ * b_;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n\n        el.value = state.a;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-3']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput3Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput3Change);\n\n        el.value = state.b;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.result);\n      });\n\n      destroyAnyNodes();\n\n      state.calculateResult(state.a, state.b);\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.a = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-3\n    function onInput3Change(event) {\n      state.b = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > slots 1`] = `\n\"<div>\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > style 1`] = `\n\"<input class=\\\\\"form-input\\\\\" data-dom-state=\\\\\"input-1\\\\\" />\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n\"\n`;\n\nexports[`Html > svelte > Javascript Test > textExpressions 1`] = `\n\"<div>\n  normal:\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.a + state.b --></template>\n  <br />\n\n  conditional\n\n  <template data-el=\\\\\"div-2\\\\\"><!-- state.a > 2 ? 'hello' : 'bye' --></template>\n</div>\n<script>\n  (() => {\n    const state = { a: 5, b: 12 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.a + state.b);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\");\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > basic 1`] = `\n\"<div>\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<script>\n  (() => {\n    const state = { name: \\\\\"Steve\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n\n        el.value = state.name;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.name = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > bindGroup 1`] = `\n\"<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    data-el=\\\\\"input-1\\\\\"\n    data-dom-state=\\\\\"input-2\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    data-el=\\\\\"input-3\\\\\"\n    data-dom-state=\\\\\"input-4\\\\\"\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    data-el=\\\\\"input-5\\\\\"\n    data-dom-state=\\\\\"input-6\\\\\"\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    data-el=\\\\\"input-7\\\\\"\n    data-dom-state=\\\\\"input-8\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    data-el=\\\\\"input-9\\\\\"\n    data-dom-state=\\\\\"input-10\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    data-el=\\\\\"input-11\\\\\"\n    data-dom-state=\\\\\"input-12\\\\\"\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    data-el=\\\\\"input-13\\\\\"\n    data-dom-state=\\\\\"input-14\\\\\"\n  />\n  <p>\n    Tortilla:\n    <template data-el=\\\\\"div-1\\\\\"><!-- state.tortilla --></template>\n  </p>\n  <p>\n    Fillings:\n    <template data-el=\\\\\"div-2\\\\\"><!-- state.fillings --></template>\n  </p>\n</div>\n<script>\n  (() => {\n    const state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Plain\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-3']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Whole wheat\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput3Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput3Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-5']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.tortilla === \\\\\"Spinach\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput5Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput5Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-7']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Rice\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput7Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput7Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-9']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Beans\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput9Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput9Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-11']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Cheese\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput11Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput11Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-13']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", state.fillings === \\\\\"Guac (extra)\\\\\");\n\n        el.removeEventListener(\\\\\"change\\\\\", onInput13Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput13Change);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.tortilla);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.fillings);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-3\n    function onInput3Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-5\n    function onInput5Change(event) {\n      state.tortilla = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-7\n    function onInput7Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-9\n    function onInput9Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-11\n    function onInput11Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-13\n    function onInput13Change(event) {\n      state.fillings = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > bindProperty 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = { value: \\\\\"hello\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.value;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > classDirective 1`] = `\n\"<input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n<script>\n  (() => {\n    const state = { focus: true };\n    let props = {};\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.className = \\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > context 1`] = `\n\"<div>\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.activeTab --></template>\n</div>\n<script>\n  (() => {\n    const state = { activeTab: 0 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.activeTab);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > each 1`] = `\n\"<ul>\n  <template data-el=\\\\\"for\\\\\">\n    <li>\n      <template data-el=\\\\\"div-1\\\\\"><!-- num --></template>\n    </li>\n  </template>\n</ul>\n<script>\n  (() => {\n    const state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='for']\\\\\").forEach((el) => {\n        let array = state.numbers;\n        renderLoop(el, array, \\\\\"num\\\\\");\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        const num = getScope(el, \\\\\"num\\\\\");\n        renderTextNode(el, num);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n\n    // Helper to render loops\n    function renderLoop(template, array, itemName, itemIndex, collectionName) {\n      const collection = [];\n      for (let [index, value] of array.entries()) {\n        const elementFragment = template.content.cloneNode(true);\n        const children = Array.from(elementFragment.childNodes);\n        const localScope = {};\n        let scope = localScope;\n        if (template?.scope) {\n          const getParent = {\n            get(target, prop, receiver) {\n              if (prop in target) {\n                return target[prop];\n              }\n              if (prop in template.scope) {\n                return template.scope[prop];\n              }\n              return target[prop];\n            },\n          };\n          scope = new Proxy(localScope, getParent);\n        }\n        children.forEach((child) => {\n          if (itemName !== undefined) {\n            scope[itemName] = value;\n          }\n          if (itemIndex !== undefined) {\n            scope[itemIndex] = index;\n          }\n          if (collectionName !== undefined) {\n            scope[collectionName] = array;\n          }\n          child.scope = scope;\n          if (template.context) {\n            child.context = template.context;\n          }\n          this.nodesToDestroy.push(child);\n          collection.unshift(child);\n        });\n        collection.forEach((child) => template.after(child));\n      }\n    }\n\n    function getScope(el, name) {\n      do {\n        let value = el?.scope?.[name];\n        if (value !== undefined) {\n          return value;\n        }\n      } while ((el = el.parentNode));\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > eventHandlers 1`] = `\n\"<div>\n  <button data-el=\\\\\"button-1\\\\\">Log</button>\n  <button data-el=\\\\\"button-2\\\\\">Log</button>\n  <button data-el=\\\\\"button-3\\\\\">Log</button>\n</div>\n<script>\n  (() => {\n    const state = {\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-2']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton2Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton2Click);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-3']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton3Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton3Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(a) {\n      state.log(\\\\\"hi\\\\\");\n    }\n\n    // Event handler for 'click' event on button-2\n    function onButton2Click(event) {\n      state.log(event);\n    }\n\n    // Event handler for 'click' event on button-3\n    function onButton3Click(event) {\n      state.log(event);\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > html 1`] = `\n\"<div data-el=\\\\\"div-1\\\\\"></div>\n<script>\n  (() => {\n    const state = { html: \\\\\"<b>bold</b>\\\\\" };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.innerHTML = state.html;\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > ifElse 1`] = `\n\"<template data-el=\\\\\"show\\\\\"><button data-el=\\\\\"button-1\\\\\">Hide</button></template>\n<script>\n  (() => {\n    const state = {\n      show: true,\n      toggle: function toggle() {\n        state.show = !state.show;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='show']\\\\\").forEach((el) => {\n        const whenCondition = state.show;\n        if (whenCondition) {\n          showContent(el);\n        }\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='button-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", onButton1Click);\n        el.addEventListener(\\\\\"click\\\\\", onButton1Click);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'click' event on button-1\n    function onButton1Click(event) {\n      state.toggle(event);\n    }\n\n    // Update with initial state on first load\n    update();\n\n    function showContent(el) {\n      // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n      // grabs the content of a node that is between <template> tags\n      // iterates through child nodes to register all content including text elements\n      // attaches the content after the template\n\n      const elementFragment = el.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      children.forEach((child) => {\n        if (el?.scope) {\n          child.scope = el.scope;\n        }\n        if (el?.context) {\n          child.context = el.context;\n        }\n        nodesToDestroy.push(child);\n      });\n      el.after(elementFragment);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > imports 1`] = `\n\"<div>\n  <button type=\\\\\"button\\\\\" data-el=\\\\\"button\\\\\"><slot></slot></button>\n</div>\n<script>\n  (() => {\n    const state = { disabled: false };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='button']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"disabled\\\\\", state.disabled);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<div></div>\n<script>\n  (() => {\n    const state = {};\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > reactive 1`] = `\n\"<div>\n  <input data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n\n  Lowercase:\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.lowercaseName --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      name: \\\\\"Steve\\\\\",\n      get lowercaseName() {\n        return state.name.toLowerCase();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.value = state.name;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.lowercaseName);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<div>\n  <input type=\\\\\"number\\\\\" data-el=\\\\\"input-1\\\\\" data-dom-state=\\\\\"input-2\\\\\" />\n  <input type=\\\\\"number\\\\\" data-el=\\\\\"input-3\\\\\" data-dom-state=\\\\\"input-4\\\\\" />\n\n  Result:\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.result --></template>\n</div>\n<script>\n  (() => {\n    const state = {\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        state.result = a_ * b_;\n        update();\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='input-1']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput1Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput1Change);\n\n        el.value = state.a;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='input-3']\\\\\").forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", onInput3Change);\n        el.addEventListener(\\\\\"change\\\\\", onInput3Change);\n\n        el.value = state.b;\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.result);\n      });\n\n      destroyAnyNodes();\n\n      state.calculateResult(state.a, state.b);\n\n      pendingUpdate = false;\n    }\n\n    // Event handler for 'change' event on input-1\n    function onInput1Change(event) {\n      state.a = event.target.value;\n      update();\n    }\n\n    // Event handler for 'change' event on input-3\n    function onInput3Change(event) {\n      state.b = event.target.value;\n      update();\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > slots 1`] = `\n\"<div>\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > style 1`] = `\n\"<input class=\\\\\"form-input\\\\\" data-dom-state=\\\\\"input-1\\\\\" />\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n\"\n`;\n\nexports[`Html > svelte > Typescript Test > textExpressions 1`] = `\n\"<div>\n  normal:\n\n  <template data-el=\\\\\"div-1\\\\\"><!-- state.a + state.b --></template>\n  <br />\n\n  conditional\n\n  <template data-el=\\\\\"div-2\\\\\"><!-- state.a > 2 ? 'hello' : 'bye' --></template>\n</div>\n<script>\n  (() => {\n    const state = { a: 5, b: 12 };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        renderTextNode(el, state.a + state.b);\n      });\n\n      document.querySelectorAll(\\\\\"[data-el='div-2']\\\\\").forEach((el) => {\n        renderTextNode(el, state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\");\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n\n    // Helper text DOM nodes\n    function renderTextNode(el, text) {\n      const textNode = document.createTextNode(text);\n      if (el?.scope) {\n        textNode.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      el.after(textNode);\n      nodesToDestroy.push(el.nextSibling);\n    }\n  })();\n</script>\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/liquid.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Liquid > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<div>\n  {% if showInput %}\n  <div>\n    <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n    <label for=\\\\\"cars\\\\\">Choose a car:</label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </div>\n  {% endif %} Hello ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Basic 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <input />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Basic Context 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input />\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<div>Hello {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicAttribute 1`] = `\n\"<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck=\\\\\"{{true}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<div>\n  {% if children %}{{children}} {{type}}{% endif %}\n  <MyBooleanAttributeComponent toggle=\\\\\"{{true}}\\\\\"></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent toggle=\\\\\"{{true}}\\\\\"></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent list=\\\\\"{{null}}\\\\\"></MyBooleanAttributeComponent>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<div>\n  <MyBasicComponent id=\\\\\"{{dev}}\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi=\\\\\"{{name}}\\\\\"\n      bye=\\\\\"{{dev}}\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent message=\\\\\"Test\\\\\"></MyBasicOutputsComponent>\n  </div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicFor 1`] = `\n\"<div>\n  {% for person in names %}\n  <div>\n    <input value=\\\\\"{{name}}\\\\\" />\n\n    Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid!\n  </div>\n  {% endfor %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicRef 1`] = `\n\"<div>\n  {% if showInput %}\n  <div>\n    <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n    <label for=\\\\\"cars\\\\\">Choose a car:</label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </div>\n  {% endif %} Hello ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<div><button>Click</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<div>\n  <h1>Now: {{count}} , before: {{prevCount}}</h1>\n  <button>Increment</button>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Button 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Columns 1`] = `\n\"<div class=\\\\\"builder-columns div\\\\\">\n  {% for column in columns %}\n  <div class=\\\\\"builder-column div-2\\\\\">{{column.content}} {{index}}</div>\n  {% endfor %}\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<div>\n  <slot name=\\\\\"{{slotTesting}}\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"{% if slotReference %}\n<div props.attributes=\\\\\"{{attributes}}\\\\\" class=\\\\\"{{cls}}\\\\\">\n  <div><hr /></div>\n  <div>{{children}}</div>\n</div>\n{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > CustomCode 1`] = `\n\"<div innerHTML=\\\\\"{{code}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Embed 1`] = `\n\"<div innerHTML=\\\\\"{{code}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Form 1`] = `\n\"<form\n  validate=\\\\\"{{validate}}\\\\\"\n  method=\\\\\"{{method}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n></form>\n<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Image 1`] = `\n\"<div>\n  <picture>\n    <source srcset=\\\\\"{{srcset}}\\\\\" />\n  </picture>\n  {{children}}\n</div>\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Image State 1`] = `\n\"<div>\n  {% for item in images %}\n  <div><img class=\\\\\"custom-class\\\\\" src=\\\\\"{{item}}\\\\\" key=\\\\\"{{itemIndex}}\\\\\" /></div>\n  {% endfor %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Img 1`] = `\n\"<img props.attributes=\\\\\"{{attributes}}\\\\\" alt=\\\\\"{{altText}}\\\\\" src=\\\\\"{{imgSrc}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Input 1`] = `\n\"<input\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  placeholder=\\\\\"{{placeholder}}\\\\\"\n  type=\\\\\"{{type}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n  required=\\\\\"{{required}}\\\\\"\n/>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > InputParent 1`] = `\n\"<FormInputComponent name=\\\\\"kingzez\\\\\" type=\\\\\"text\\\\\"></FormInputComponent>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > NestedStore 1`] = `\n\"<div id=\\\\\"{{_id}}\\\\\">\n  Test\n\n  <p id=\\\\\"{{_messageId}}\\\\\">Message</p>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > RawText 1`] = `\n\"<span></span>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Section 1`] = `\n\"<section props.attributes=\\\\\"{{attributes}}\\\\\">{{children}}</section>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Select 1`] = `\n\"<select\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n>\n  {% for option in options %}\n  <option value=\\\\\"{{option.value}}\\\\\" data-index=\\\\\"{{index}}\\\\\"></option>\n  {% endfor %}\n</select>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > SlotDefault 1`] = `\n\"<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > SlotHtml 1`] = `\n\"<div>\n  <ContentSlotCode><slot></slot></ContentSlotCode>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > SlotJsx 1`] = `\n\"<div><ContentSlotCode></ContentSlotCode></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > SlotNamed 1`] = `\n\"<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Stamped.io 1`] = `\n\"<div data-user=\\\\\"{{name}}\\\\\">\n  <button>Write a review</button>\n\n  {% for review in reviews %}\n  <div class=\\\\\"review\\\\\" key=\\\\\"{{review.id}}\\\\\">\n    <img class=\\\\\"img\\\\\" src=\\\\\"{{review.avatar}}\\\\\" />\n    <div>\n      <div>N: {{index}}</div>\n      <div>{{review.author}}</div>\n      <div>{{review.reviewMessage}}</div>\n    </div>\n  </div>\n  {% endfor %}\n</div>\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > StoreComment 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > StoreWithState 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" props.attributes=\\\\\"{{attributes}}\\\\\">{{text}}</button>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Text 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Textarea 1`] = `\n\"<textarea\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  placeholder=\\\\\"{{placeholder}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n></textarea>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<div>Test</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > Video 1`] = `\n\"<video\n  preload=\\\\\"none\\\\\"\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  poster=\\\\\"{{posterImage}}\\\\\"\n  autoplay=\\\\\"{{autoPlay}}\\\\\"\n  muted=\\\\\"{{muted}}\\\\\"\n  controls=\\\\\"{{controls}}\\\\\"\n  loop=\\\\\"{{loop}}\\\\\"\n></video>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<div>Hello {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicForFragment 1`] = `\n\"<div>\n  <select></select>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter>\n  Hello\n  <state.tag>{{name}}</state.tag>\n  {% for action in actions %}\n  <state.TagName>\n    <action.icon></action.icon>\n    <span>{{action.text}}</span>\n  </state.TagName>\n  {% endfor %}\n</state.TagNameGetter>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<div><input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" /></div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<div><input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" /></div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<div>Hello! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button>Attribute Passing</button>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div><button>Attribute Passing</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > class + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > className + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > className 1`] = `\n\"<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class=\\\\\"{{bindings}}\\\\\">With binding</div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > classState 1`] = `\n\"<div style=\\\\\"{{styleState}}\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div class=\\\\\"{{className}}\\\\\">\n  {{children}} {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > componentWithContext 1`] = `\n\"<div><div>{{foo.value}}</div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<div>\n  <div>{{foo.value}}</div>\n  <div>other</div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > contentState 1`] = `\n\"<div>setting context</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > defaultProps 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<div>Hello</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<div>\n  <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > eventProps 1`] = `\n\"<button>Test</button>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > expressionState 1`] = `\n\"<div>{{refToUse}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button\n  data-icon=\\\\\"{{icon}}\\\\\"\n  data-disabled=\\\\\"{{interactiveState}}\\\\\"\n  data-width=\\\\\"{{width}}\\\\\"\n  data-size=\\\\\"{{size}}\\\\\"\n>\n  {{label}}\n</button>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > functionProps 1`] = `\n\"<p></p>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > getterState 1`] = `\n\"<div>\n  <p>{{foo2}}</p>\n  <p>{{bar}}</p>\n  <p></p>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > import types 1`] = `\n\"<RenderBlock></RenderBlock>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > layerName 1`] = `\n\"<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<input attrs=\\\\\"{{attrs}}\\\\\" props=\\\\\"{{props}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > nestedShow 1`] = `\n\"{% if conditionA %}{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > nestedStyles 1`] = `\n\"<div class=\\\\\"div\\\\\">Hello world</div>\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\"><div>Test</div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onInit 1`] = `\n\"<div>Default name defined by parent {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onInitPlain 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onMount 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > preserveTyping 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > propsDestructure 1`] = `\n\"<div>\n  {{children}} {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > propsInterface 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > propsType 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > renderBlock 1`] = `\n\"{% if shouldWrap %} {% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > renderContentExample 1`] = `\n\"<div class=\\\\\"div\\\\\"><RenderBlocks blocks=\\\\\"{{content.blocks}}\\\\\"></RenderBlocks></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > rootShow 1`] = `\"\"`;\n\nexports[`Liquid > jsx > Javascript Test > self-referencing component 1`] = `\n\"<div>{{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<div>{{name}} {{children}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > setState 1`] = `\n\"<div><button>Click me</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > showExpressions 1`] = `\n\"<div>\n  {% if conditionA %}Content0{% endif %} {% if conditionA %}ContentA{% endif %}\n  {% if conditionA %}{% endif %} {% if conditionA %}ContentB{% endif %} {% if\n  conditionA %}{{undefined}}{% endif %} {% if conditionA %}ContentC{% endif %}\n  {% if conditionA %}{% endif %} {% if conditionA %}ContentD{% endif %} {% if\n  conditionA %}{% endif %} {% if conditionA %}ContentE{% endif %} {% if\n  conditionA %}hello{% endif %} {% if conditionA %}ContentF{% endif %} {% if\n  conditionA %}123{% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > showWithFor 1`] = `\n\"{% if conditionA %}{% for item in items %}\n<div key=\\\\\"{{idx}}\\\\\">{{item}}</div>\n{% endfor %}{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<div>\n  {% if conditionA %} ContentA {% endif %} {% if conditionA %} ContentB {% endif\n  %} {% if conditionA %} ContentC {% endif %} {% if conditionA %} ContentD {%\n  endif %} {% if conditionA %} ContentE {% endif %} {% if conditionA %} ContentF\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > showWithRootText 1`] = `\n\"{% if conditionA %} ContentA {% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > spreadAttrs 1`] = `\n\"<input attrs=\\\\\"{{attrs}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<input props.nested=\\\\\"{{nested}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > spreadProps 1`] = `\n\"<input props=\\\\\"{{props}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > store-async-function 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > string-literal-store 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<div class=\\\\\"builder-column div\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<div class=\\\\\"USE_TARGET_BLOCK_1 div\\\\\" style=\\\\\"{{attributes.style}}\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > subComponent 1`] = `\n\"<Foo></Foo>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > svgComponent 1`] = `\n\"<svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" width=\\\\\"{{42}}\\\\\" height=\\\\\"{{42}}\\\\\">\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation=\\\\\"{{7}}\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > typeDependency 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<div>Hello {{name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<div>Hello {{_name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<div>Hello {{name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > use-style 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > useTarget 1`] = `\n\"<div>{{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Javascript Test > webComponent 1`] = `\n\"<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n\"\n`;\n\nexports[`Liquid > jsx > Remove Internal mitosis package 1`] = `\n\"<div>Hello {{name}} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<div>\n  {% if showInput %}\n  <div>\n    <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n    <label for=\\\\\"cars\\\\\">Choose a car:</label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </div>\n  {% endif %} Hello ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Basic 1`] = `\n\"<div class=\\\\\"test div\\\\\">\n  <input />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Basic Context 1`] = `\n\"<div>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\n  <input />\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<div>Hello {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck=\\\\\"{{true}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<div>\n  {% if children %}{{children}} {{type}}{% endif %}\n  <MyBooleanAttributeComponent toggle=\\\\\"{{true}}\\\\\"></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent toggle=\\\\\"{{true}}\\\\\"></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent list=\\\\\"{{null}}\\\\\"></MyBooleanAttributeComponent>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<div>\n  <MyBasicComponent id=\\\\\"{{dev}}\\\\\"></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi=\\\\\"{{name}}\\\\\"\n      bye=\\\\\"{{dev}}\\\\\"\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent message=\\\\\"Test\\\\\"></MyBasicOutputsComponent>\n  </div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicFor 1`] = `\n\"<div>\n  {% for person in names %}\n  <div>\n    <input value=\\\\\"{{name}}\\\\\" />\n\n    Hello {{person}} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid!\n  </div>\n  {% endfor %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicRef 1`] = `\n\"<div>\n  {% if showInput %}\n  <div>\n    <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n    <label for=\\\\\"cars\\\\\">Choose a car:</label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select>\n  </div>\n  {% endif %} Hello ! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<div><button>Click</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<div>\n  <h1>Now: {{count}} , before: {{prevCount}}</h1>\n  <button>Increment</button>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Button 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Columns 1`] = `\n\"<div class=\\\\\"builder-columns div\\\\\">\n  {% for column in columns %}\n  <div class=\\\\\"builder-column div-2\\\\\">{{column.content}} {{index}}</div>\n  {% endfor %}\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<div>\n  <slot name=\\\\\"{{slotTesting}}\\\\\"></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"{% if slotReference %}\n<div props.attributes=\\\\\"{{attributes}}\\\\\" class=\\\\\"{{cls}}\\\\\">\n  <div><hr /></div>\n  <div>{{children}}</div>\n</div>\n{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > CustomCode 1`] = `\n\"<div innerHTML=\\\\\"{{code}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Embed 1`] = `\n\"<div innerHTML=\\\\\"{{code}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Form 1`] = `\n\"<form\n  validate=\\\\\"{{validate}}\\\\\"\n  method=\\\\\"{{method}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n></form>\n<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Image 1`] = `\n\"<div>\n  <picture>\n    <source srcset=\\\\\"{{srcset}}\\\\\" />\n  </picture>\n  {{children}}\n</div>\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Image State 1`] = `\n\"<div>\n  {% for item in images %}\n  <div><img class=\\\\\"custom-class\\\\\" src=\\\\\"{{item}}\\\\\" key=\\\\\"{{itemIndex}}\\\\\" /></div>\n  {% endfor %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Img 1`] = `\n\"<img props.attributes=\\\\\"{{attributes}}\\\\\" alt=\\\\\"{{altText}}\\\\\" src=\\\\\"{{imgSrc}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Input 1`] = `\n\"<input\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  placeholder=\\\\\"{{placeholder}}\\\\\"\n  type=\\\\\"{{type}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n  required=\\\\\"{{required}}\\\\\"\n/>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > InputParent 1`] = `\n\"<FormInputComponent name=\\\\\"kingzez\\\\\" type=\\\\\"text\\\\\"></FormInputComponent>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > NestedStore 1`] = `\n\"<div id=\\\\\"{{_id}}\\\\\">\n  Test\n\n  <p id=\\\\\"{{_messageId}}\\\\\">Message</p>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > RawText 1`] = `\n\"<span></span>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Section 1`] = `\n\"<section props.attributes=\\\\\"{{attributes}}\\\\\">{{children}}</section>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Select 1`] = `\n\"<select\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n>\n  {% for option in options %}\n  <option value=\\\\\"{{option.value}}\\\\\" data-index=\\\\\"{{index}}\\\\\"></option>\n  {% endfor %}\n</select>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > SlotDefault 1`] = `\n\"<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > SlotHtml 1`] = `\n\"<div>\n  <ContentSlotCode><slot></slot></ContentSlotCode>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > SlotJsx 1`] = `\n\"<div><ContentSlotCode></ContentSlotCode></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > SlotNamed 1`] = `\n\"<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Stamped.io 1`] = `\n\"<div data-user=\\\\\"{{name}}\\\\\">\n  <button>Write a review</button>\n\n  {% for review in reviews %}\n  <div class=\\\\\"review\\\\\" key=\\\\\"{{review.id}}\\\\\">\n    <img class=\\\\\"img\\\\\" src=\\\\\"{{review.avatar}}\\\\\" />\n    <div>\n      <div>N: {{index}}</div>\n      <div>{{review.author}}</div>\n      <div>{{review.reviewMessage}}</div>\n    </div>\n  </div>\n  {% endfor %}\n</div>\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > StoreComment 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > StoreWithState 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Submit 1`] = `\n\"<button type=\\\\\"submit\\\\\" props.attributes=\\\\\"{{attributes}}\\\\\">{{text}}</button>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Text 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Textarea 1`] = `\n\"<textarea\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  placeholder=\\\\\"{{placeholder}}\\\\\"\n  name=\\\\\"{{name}}\\\\\"\n  value=\\\\\"{{value}}\\\\\"\n  defaultValue=\\\\\"{{defaultValue}}\\\\\"\n></textarea>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<div>Test</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > Video 1`] = `\n\"<video\n  preload=\\\\\"none\\\\\"\n  props.attributes=\\\\\"{{attributes}}\\\\\"\n  poster=\\\\\"{{posterImage}}\\\\\"\n  autoplay=\\\\\"{{autoPlay}}\\\\\"\n  muted=\\\\\"{{muted}}\\\\\"\n  controls=\\\\\"{{controls}}\\\\\"\n  loop=\\\\\"{{loop}}\\\\\"\n></video>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<div>Hello {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicForFragment 1`] = `\n\"<div>\n  <select></select>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<state.TagNameGetter>\n  Hello\n  <state.tag>{{name}}</state.tag>\n  {% for action in actions %}\n  <state.TagName>\n    <action.icon></action.icon>\n    <span>{{action.text}}</span>\n  </state.TagName>\n  {% endfor %}\n</state.TagNameGetter>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<div><input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" /></div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<div><input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" /></div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<div>Hello! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<button>Attribute Passing</button>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<div><button>Attribute Passing</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > class + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > className + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > className 1`] = `\n\"<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class=\\\\\"{{bindings}}\\\\\">With binding</div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > classState 1`] = `\n\"<div style=\\\\\"{{styleState}}\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<div class=\\\\\"{{className}}\\\\\">\n  {{children}} {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > componentWithContext 1`] = `\n\"<div><div>{{foo.value}}</div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<div>\n  <div>{{foo.value}}</div>\n  <div>other</div>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > contentState 1`] = `\n\"<div>setting context</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > defaultProps 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<div>Hello</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<div>\n  <input class=\\\\\"input\\\\\" value=\\\\\"{{name}}\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n<style>\n  .input {\n    color: red;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > eventProps 1`] = `\n\"<button>Test</button>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > expressionState 1`] = `\n\"<div>{{refToUse}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<button\n  data-icon=\\\\\"{{icon}}\\\\\"\n  data-disabled=\\\\\"{{interactiveState}}\\\\\"\n  data-width=\\\\\"{{width}}\\\\\"\n  data-size=\\\\\"{{size}}\\\\\"\n>\n  {{label}}\n</button>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > functionProps 1`] = `\n\"<p></p>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > getterState 1`] = `\n\"<div>\n  <p>{{foo2}}</p>\n  <p>{{bar}}</p>\n  <p></p>\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > import types 1`] = `\n\"<RenderBlock></RenderBlock>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > layerName 1`] = `\n\"<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<input attrs=\\\\\"{{attrs}}\\\\\" props=\\\\\"{{props}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > nestedShow 1`] = `\n\"{% if conditionA %}{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > nestedStyles 1`] = `\n\"<div class=\\\\\"div\\\\\">Hello world</div>\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onEvent 1`] = `\n\"<div class=\\\\\"builder-embed\\\\\"><div>Test</div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onInit 1`] = `\n\"<div>Default name defined by parent {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onInitPlain 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onMount 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onUpdate 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > preserveTyping 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > propsDestructure 1`] = `\n\"<div>\n  {{children}} {{type}} Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > propsInterface 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > propsType 1`] = `\n\"<div>Hello! I can run in React, Vue, Solid, or Liquid! {{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > renderBlock 1`] = `\n\"{% if shouldWrap %} {% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > renderContentExample 1`] = `\n\"<div class=\\\\\"div\\\\\"><RenderBlocks blocks=\\\\\"{{content.blocks}}\\\\\"></RenderBlocks></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<div>\n  {% if link %}\n  <a props.attributes=\\\\\"{{attributes}}\\\\\" href=\\\\\"{{link}}\\\\\">{{text}}</a>\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > rootShow 1`] = `\"\"`;\n\nexports[`Liquid > jsx > Typescript Test > self-referencing component 1`] = `\n\"<div>{{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<div>{{name}} {{children}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > setState 1`] = `\n\"<div><button>Click me</button></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > showExpressions 1`] = `\n\"<div>\n  {% if conditionA %}Content0{% endif %} {% if conditionA %}ContentA{% endif %}\n  {% if conditionA %}{% endif %} {% if conditionA %}ContentB{% endif %} {% if\n  conditionA %}{{undefined}}{% endif %} {% if conditionA %}ContentC{% endif %}\n  {% if conditionA %}{% endif %} {% if conditionA %}ContentD{% endif %} {% if\n  conditionA %}{% endif %} {% if conditionA %}ContentE{% endif %} {% if\n  conditionA %}hello{% endif %} {% if conditionA %}ContentF{% endif %} {% if\n  conditionA %}123{% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > showWithFor 1`] = `\n\"{% if conditionA %}{% for item in items %}\n<div key=\\\\\"{{idx}}\\\\\">{{item}}</div>\n{% endfor %}{% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<div>\n  {% if conditionA %} ContentA {% endif %} {% if conditionA %} ContentB {% endif\n  %} {% if conditionA %} ContentC {% endif %} {% if conditionA %} ContentD {%\n  endif %} {% if conditionA %} ContentE {% endif %} {% if conditionA %} ContentF\n  {% endif %}\n</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > showWithRootText 1`] = `\n\"{% if conditionA %} ContentA {% endif %}\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<div class=\\\\\"test div\\\\\">{{id}} {{foo.value.bar.baz}}</div>\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<input attrs=\\\\\"{{attrs}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<input props.nested=\\\\\"{{nested}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > spreadProps 1`] = `\n\"<input props=\\\\\"{{props}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > store-async-function 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > string-literal-store 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<div class=\\\\\"builder-column div\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<div class=\\\\\"USE_TARGET_BLOCK_1 div\\\\\" style=\\\\\"{{attributes.style}}\\\\\"></div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > subComponent 1`] = `\n\"<Foo></Foo>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > svgComponent 1`] = `\n\"<svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" width=\\\\\"{{42}}\\\\\" height=\\\\\"{{42}}\\\\\">\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation=\\\\\"{{7}}\\\\\"\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > typeDependency 1`] = `\n\"<div>{{foo}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<div>Hello {{name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<div>Hello {{_name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<div>Hello {{name}} !</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > use-style 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > useTarget 1`] = `\n\"<div>{{name}}</div>\n\"\n`;\n\nexports[`Liquid > jsx > Typescript Test > webComponent 1`] = `\n\"<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n  <swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide>\n</swiper-container>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > basic 1`] = `\n\"<div>\n  <input value=\\\\\"{{name}}\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > bindGroup 1`] = `\n\"<div>\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Plain\\\\\" />\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Whole wheat\\\\\" />\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Spinach\\\\\" />\n  <br />\n  <br />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Rice\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Beans\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Cheese\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Guac (extra)\\\\\" />\n  <p>Tortilla: {{tortilla}}</p>\n  <p>Fillings: {{fillings}}</p>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > bindProperty 1`] = `\n\"<input value=\\\\\"{{value}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > classDirective 1`] = `\n\"<input />\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > context 1`] = `\n\"<div>{{activeTab}}</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > each 1`] = `\n\"<ul>\n  {% for num in numbers %}\n  <li>{{num}}</li>\n  {% endfor %}\n</ul>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > eventHandlers 1`] = `\n\"<div>\n  <button>Log</button>\n  <button>Log</button>\n  <button>Log</button>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > html 1`] = `\n\"<div innerHTML=\\\\\"{{html}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > ifElse 1`] = `\n\"{% if show %}\n<button>Hide</button>\n{% endif %}\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > imports 1`] = `\n\"<div>\n  <button type=\\\\\"button\\\\\" disabled=\\\\\"{{disabled}}\\\\\"><slot></slot></button>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > reactive 1`] = `\n\"<div>\n  <input value=\\\\\"{{name}}\\\\\" />\n\n  Lowercase: {{lowercaseName}}\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<div>\n  <input type=\\\\\"number\\\\\" value=\\\\\"{{a}}\\\\\" />\n  <input type=\\\\\"number\\\\\" value=\\\\\"{{b}}\\\\\" />\n\n  Result: {{result}}\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > slots 1`] = `\n\"<div>\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > style 1`] = `\n\"<input class=\\\\\"form-input\\\\\" />\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > svelte > Javascript Test > textExpressions 1`] = `\n\"<div>\n  normal:\n\n  <br />\n\n  conditional\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > basic 1`] = `\n\"<div>\n  <input value=\\\\\"{{name}}\\\\\" />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > bindGroup 1`] = `\n\"<div>\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Plain\\\\\" />\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Whole wheat\\\\\" />\n  <input type=\\\\\"radio\\\\\" value=\\\\\"Spinach\\\\\" />\n  <br />\n  <br />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Rice\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Beans\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Cheese\\\\\" />\n  <input type=\\\\\"checkbox\\\\\" value=\\\\\"Guac (extra)\\\\\" />\n  <p>Tortilla: {{tortilla}}</p>\n  <p>Fillings: {{fillings}}</p>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > bindProperty 1`] = `\n\"<input value=\\\\\"{{value}}\\\\\" />\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > classDirective 1`] = `\n\"<input />\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > context 1`] = `\n\"<div>{{activeTab}}</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > each 1`] = `\n\"<ul>\n  {% for num in numbers %}\n  <li>{{num}}</li>\n  {% endfor %}\n</ul>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > eventHandlers 1`] = `\n\"<div>\n  <button>Log</button>\n  <button>Log</button>\n  <button>Log</button>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > html 1`] = `\n\"<div innerHTML=\\\\\"{{html}}\\\\\"></div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > ifElse 1`] = `\n\"{% if show %}\n<button>Hide</button>\n{% endif %}\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > imports 1`] = `\n\"<div>\n  <button type=\\\\\"button\\\\\" disabled=\\\\\"{{disabled}}\\\\\"><slot></slot></button>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<div></div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > reactive 1`] = `\n\"<div>\n  <input value=\\\\\"{{name}}\\\\\" />\n\n  Lowercase: {{lowercaseName}}\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<div>\n  <input type=\\\\\"number\\\\\" value=\\\\\"{{a}}\\\\\" />\n  <input type=\\\\\"number\\\\\" value=\\\\\"{{b}}\\\\\" />\n\n  Result: {{result}}\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > slots 1`] = `\n\"<div>\n  <slot>default</slot>\n  <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > style 1`] = `\n\"<input class=\\\\\"form-input\\\\\" />\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n\"\n`;\n\nexports[`Liquid > svelte > Typescript Test > textExpressions 1`] = `\n\"<div>\n  normal:\n\n  <br />\n\n  conditional\n</div>\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/lit.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Lit > jsx > Javascript Test > Advanced 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-show-component\\\\\")\nexport default class MyBasicForShowComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  render() {\n    return html\\`\n\n          <main>\n          \\${this.names?.map(\n            (person, i) => html\\`\n      <div>\\${i} : \\${person}</div>\n      \\`\n          )} \\${this.names?.map((person, index) => html\\`<span>\\${person}</span>\\`)}\n          \\${this.names?.map((_, index) => html\\`<br />\\`)} \\${Array.from({\n      length: 10,\n    })?.map(\n      (_, ee) => html\\`\n      <pre>\\${ee}</pre>\n      \\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (_, index) => html\\`\n      <p>\\${index}</p>\n      \\`\n    )} \\${this.names?.map(\n      (person, index) => html\\`<span\n        >\\${person} \\${index}</span\n      >\\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (person, count) => html\\`<span\n        >\\${person} \\${count}</span\n      >\\`\n    )} \\${this.names?.map(\n      (person, i) => html\\`<span>\\${person} \\${i}</span>\\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (person, index) => html\\`<span\n        >\\${person} \\${index}</span\n      >\\`\n    )}\n        </main>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-ref-component\\\\\")\nexport default class MyBasicRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"inputRef\\\\\"]')\n  inputRef!: HTMLElement;\n\n  @query('[ref=\\\\\"inputNoArgRef\\\\\"]')\n  inputNoArgRef!: HTMLElement;\n\n  @property() showInput: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  updated() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          \\${\n            this.showInput\n              ? html\\`<my-fragment\n           ><input ref=\\\\\"inputRef\\\\\" .value=\\${this.name} @blur=\\${(event) =>\n                  this.onBlur()}\n           @change=\\${(event) => (this.name = event.target.value)} />\n           <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n           <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n             <option value=\\\\\"supra\\\\\">GR Supra</option>\n             <option value=\\\\\"86\\\\\">GR 86</option>\n           </select></my-fragment\n         >\\`\n              : null\n          } Hello \\${this.lowerCaseName()} ! I can run in React, Qwik, Vue,\n          Solid, or Web Component!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic 1`] = `\n\"export const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n  @state() age = 1;\n  @state() sports = [\\\\\"\\\\\"];\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\n          <input .value=\\${DEFAULT_VALUES.name || this.name} @change=\\${(\n      myEvent\n    ) =>\n      (this.name =\n        myEvent.target.value)} /> Hello! I can run in React, Vue, Solid, or\n          Liquid! &gt;\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic 2`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-show-component\\\\\")\nexport default class MyBasicForShowComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.names?.map(\n            (person, index) =>\n              html\\`\\${\n                person === this.name\n                  ? html\\`<input .value=\\${this.name} @change=\\${(event) => {\n                      this.name = event.target.value + \\\\\" and \\\\\" + person;\n                    }} /> Hello \\${person} ! I can run in\n          Qwik, Web Component, React, Vue, Solid, or Liquid! \\`\n                  : null\n              }\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  connectedCallback() {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${\n            myService.method(\\\\\"hello\\\\\") + this.name\n          } Hello! I can run in React, Vue,\n          Solid, or Liquid! <input @change=\\${(event) => this.onChange()} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-on-mount-update-component\\\\\")\nexport default class MyBasicOnMountUpdateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() bye: any;\n  @property() hi: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  connectedCallback() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-outputs-component\\\\\")\nexport default class MyBasicOutputsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onMessageChange: any;\n  @property() onEvent: any;\n  @property() message: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  connectedCallback() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-outputs-component\\\\\")\nexport default class MyBasicOutputsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onMessageChange: any;\n  @property() onEvent: any;\n  @property() message: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  connectedCallback() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" .spellcheck=\\\\\"\\${true}\\\\\" />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-boolean-attribute\\\\\")\nexport default class MyBooleanAttribute extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() children: any;\n  @property() type: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.children ? html\\`\\${this.children} \\${this.type}\\` : null}\n          <my-boolean-attribute-component\n            .toggle=\\\\\"\\${true}\\\\\"\n          ></my-boolean-attribute-component>\n          <my-boolean-attribute-component\n            .toggle=\\\\\"\\${true}\\\\\"\n          ></my-boolean-attribute-component>\n          <my-boolean-attribute-component\n            .list=\\\\\"\\${null}\\\\\"\n          ></my-boolean-attribute-component>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-child-component\\\\\")\nexport default class MyBasicChildComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n  @state() dev = \\\\\"PatrickJS\\\\\";\n\n  log = function log(message) {\n    console.log(message);\n  };\n\n  render() {\n    return html\\`\n\n          <div ><my-basic-component  .id=\\${this.dev} ></my-basic-component>\n        <div ><my-basic-on-mount-update-component  .hi=\\${this.name}  .bye=\\${\n      this.dev\n    } ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component  message=\\\\\"Test\\\\\"  @messagechange=\\${(name) =>\n          (this.name = name)}  @event=\\${(event) =>\n      this.log(\\\\\"Test\\\\\")} ></my-basic-outputs-component></div></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicFor 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-component\\\\\")\nexport default class MyBasicForComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  connectedCallback() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.names?.map(\n            (person, index) => html\\`<my-fragment\n        ><input .value=\\${this.name} @change=\\${(event) => {\n              this.name = event.target.value + \\\\\" and \\\\\" + person;\n            }} /> Hello \\${person} ! I can run in\n        Qwik, Web Component, React, Vue, Solid, or Liquid! </my-fragment\n      >\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-ref-component\\\\\")\nexport default class MyBasicRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"inputRef\\\\\"]')\n  inputRef!: HTMLElement;\n\n  @query('[ref=\\\\\"inputNoArgRef\\\\\"]')\n  inputNoArgRef!: HTMLElement;\n\n  @property() showInput: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          \\${\n            this.showInput\n              ? html\\`<my-fragment\n           ><input ref=\\\\\"inputRef\\\\\" .value=\\${this.name} @blur=\\${(event) =>\n                  this.onBlur()}\n           @change=\\${(event) => (this.name = event.target.value)} />\n           <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n           <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n             <option value=\\\\\"supra\\\\\">GR Supra</option>\n             <option value=\\\\\"86\\\\\">GR 86</option>\n           </select></my-fragment\n         >\\`\n              : null\n          } Hello \\${this.lowerCaseName()} ! I can run in React, Qwik, Vue,\n          Solid, or Web Component!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-ref-assignment-component\\\\\")\nexport default class MyBasicRefAssignmentComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${async (evt) =>\n            await this.handlerClick(evt)} >Click</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"export function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-previous-component\\\\\")\nexport default class MyPreviousComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() count = 0;\n\n  updated() {\n    this.prevCount = this.count;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><h1 >\n                Now:\n        \\${this.count}\n        , before:\n        \\${this.prevCount}</h1>\n        <button  @click=\\${(event) =>\n          (this.count += 1)} >Increment</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Button 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(props.attributes)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Columns 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-column\\\\\")\nexport default class Column extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() columns: any;\n  @property() space: any;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\n          <div>\n          \\${this.columns?.map(\n            (column, index) => html\\`\n         <div>\\${column.content} \\${index}</div>\n         \\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"content-slot-code\\\\\")\nexport default class ContentSlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() slotTesting: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot .name=\\\\\"\\${this.slotTesting}\\\\\"></my-slot>\n          <div><hr /></div>\n          <div><my-slot></my-slot></div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"content-slot-jsx-code\\\\\")\nexport default class ContentSlotJsxCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() slotContent: any;\n  @property() children: any;\n  @property() slotReference: any;\n  @property() attributes: any;\n  @property() content: any;\n\n  @state() name = \\\\\"king\\\\\";\n  @state() showContent = false;\n\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          \\${\n            this.slotReference\n              ? html\\`<div  class={state.cls}  .name=\\${\n                  this.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"\n                }  .title=\\${this.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}  \\${spread(\n                  props.attributes\n                )}  @click=\\${(event) => this.show()} >\\${\n                  this.showContent && this.slotContent\n                    ? html\\`<my-slot  name=\\\\\"content\\\\\" >\\${this.content}</my-slot>\\`\n                    : null\n                }\n       <div ><hr  /></div>\n       <div >\\${this.children}</div></div>\\`\n              : null\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > CustomCode 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"custom-code\\\\\")\nexport default class CustomCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  @property() replaceNodes: any;\n  @property() code: any;\n\n  @state() scriptsInserted = [];\n  @state() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  connectedCallback() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return html\\`\n\n          <div  class={'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')}  ref=\\\\\"elem\\\\\"  .innerHTML=\\${this.code} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Embed 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"custom-code\\\\\")\nexport default class CustomCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  @property() replaceNodes: any;\n  @property() code: any;\n\n  @state() scriptsInserted = [];\n  @state() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  connectedCallback() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return html\\`\n\n          <div  class={'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')}  ref=\\\\\"elem\\\\\"  .innerHTML=\\${this.code} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Form 1`] = `\n\"import { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"form-component\\\\\")\nexport default class FormComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"formRef\\\\\"]')\n  formRef!: HTMLElement;\n\n  @property() previewState: any;\n  @property() sendWithJs: any;\n  @property() sendSubmissionsTo: any;\n  @property() action: any;\n  @property() customHeaders: any;\n  @property() contentType: any;\n  @property() sendSubmissionsToEmail: any;\n  @property() name: any;\n  @property() method: any;\n  @property() errorMessagePath: any;\n  @property() resetFormOnSubmit: any;\n  @property() successUrl: any;\n  @property() validate: any;\n  @property() attributes: any;\n  @property() builderBlock: any;\n  @property() errorMessage: any;\n  @property() sendingMessage: any;\n  @property() successMessage: any;\n\n  @state() formState = \\\\\"unsubmitted\\\\\";\n  @state() responseData = null;\n  @state() formErrorMessage = \\\\\"\\\\\";\n\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  render() {\n    return html\\`\n          <style>.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\n          <form  .validate=\\${this.validate}  ref=\\\\\"formRef\\\\\"  .action=\\${\n      !this.sendWithJs && this.action\n    }  .method=\\${this.method}  .name=\\${this.name}  @submit=\\${(event) =>\n      this.onSubmit(event)}  \\${spread(props.attributes)} >\\${\n      this.builderBlock && this.builderBlock.children\n        ? html\\`\\${this.builderBlock?.children?.map(\n            (block, index) =>\n              html\\`<builder-block-component  .key=\\${block.id}  .block=\\${block}  .index=\\${index} ></builder-block-component>\\`\n          )}\\`\n        : null\n    }\n        \\${\n          this.submissionState === \\\\\"error\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"errorMessage\\\\\"  .blocks=\\${this.errorMessage} ></builder-blocks>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"sending\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"sendingMessage\\\\\"  .blocks=\\${this.sendingMessage} ></builder-blocks>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"error\\\\\" && this.responseData\n            ? html\\`<pre >\\${JSON.stringify(this.responseData, null, 2)}</pre>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"success\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"successMessage\\\\\"  .blocks=\\${this.successMessage} ></builder-blocks>\\`\n            : null\n        }</form>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Image 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-image\\\\\")\nexport default class Image extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"pictureRef\\\\\"]')\n  pictureRef!: HTMLElement;\n\n  @property() lazy: any;\n  @property() altText: any;\n  @property() _class: any;\n  @property() image: any;\n  @property() srcset: any;\n  @property() sizes: any;\n  @property() children: any;\n\n  @state() scrollListener = null;\n  @state() imageLoaded = false;\n  @state() load = false;\n\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  connectedCallback() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  disconnectedCallback() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n\n  render() {\n    return html\\`\n          <style>.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\n          <div>\n          <picture ref=\\\\\"pictureRef\\\\\"\n            >\\${\n              !this.useLazyLoading() || this.load\n                ? html\\`<img class={'builder-image' +\n           (props._class ? ' ' + props._class : '') + ' img'} .alt=\\${\n             this.altText\n           }\n           aria-role=\\${this.altText ? \\\\\"presentation\\\\\" : undefined} .src=\\${\n                    this.image\n                  }\n           @load=\\${(event) => this.setLoaded()} .srcset=\\${this.srcset}\n           .sizes=\\${this.sizes} />\\`\n                : null\n            }\n            <source .srcset=\\\\\"\\${this.srcset}\\\\\"\n          /></picture>\n          \\${this.children}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Image State 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"img-state-component\\\\\")\nexport default class ImgStateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() canShow = true;\n  @state() images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.images?.map(\n            (item, itemIndex) => html\\`<my-fragment\n        ><img .src=\\\\\"\\${item}\\\\\" .key=\\\\\"\\${itemIndex}\\\\\" /></my-fragment\n      >\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"img-component\\\\\")\nexport default class ImgComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() backgroundSize: any;\n  @property() backgroundPosition: any;\n  @property() attributes: any;\n  @property() imgSrc: any;\n  @property() altText: any;\n\n  render() {\n    return html\\`\n\n          <img .style=\\${{\n            objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n            objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n          }} \\${spread(props.attributes)}\n        .key=\\${(Builder.isEditing && this.imgSrc) || \\\\\"default-key\\\\\"} .alt=\\${\n      this.altText\n    }\n        .src=\\${this.imgSrc} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"form-input-component\\\\\")\nexport default class FormInputComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() defaultValue: any;\n  @property() placeholder: any;\n  @property() type: any;\n  @property() name: any;\n  @property() value: any;\n  @property() required: any;\n  @property() onChange: any;\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props.attributes)} .key=\\${\n      Builder.isEditing && this.defaultValue ? this.defaultValue : \\\\\"default-key\\\\\"\n    } .placeholder=\\${this.placeholder}\n        .type=\\${this.type} .name=\\${this.name} .value=\\${this.value}\n        .defaultValue=\\${this.defaultValue} .required=\\${\n      this.required\n    } @change=\\${(event) => this.onChange?.(event.target.value)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-stepper\\\\\")\nexport default class Stepper extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  handleChange(value) {\n    console.log(value);\n  }\n\n  render() {\n    return html\\`\n\n          <form-input-component  name=\\\\\"kingzez\\\\\"  type=\\\\\"text\\\\\"  @change=\\${(\n            value\n          ) => this.handleChange(value)} ></form-input-component>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > NestedStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"nested-store\\\\\")\nexport default class NestedStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() _id = \\\\\"abc\\\\\";\n  @state() _messageId = this._id + \\\\\"-message\\\\\";\n\n  render() {\n    return html\\`\n\n          <div .id=\\\\\"\\${this._id}\\\\\">\n          Test\n\n          <p .id=\\\\\"\\${this._messageId}\\\\\">Message</p>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > RawText 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"raw-text\\\\\")\nexport default class RawText extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <span  class={props.attributes?.class || props.attributes?.className}  .innerHTML=\\${\n            this.text || \\\\\"\\\\\"\n          } ></span>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Section 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"section-component\\\\\")\nexport default class SectionComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() maxWidth: any;\n  @property() children: any;\n\n  render() {\n    return html\\`\n\n          <section  \\${spread(props.attributes)}  .style=\\${\n      this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n        ? {\n            maxWidth: this.maxWidth,\n          }\n        : undefined\n    } >\\${this.children}</section>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Section 2`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"section-state-component\\\\\")\nexport default class SectionStateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() children: any;\n\n  @state() max = 42;\n  @state() items = [42];\n\n  render() {\n    return html\\`\n\n          \\${\n            this.max\n              ? html\\`\\${this.items?.map(\n                  (item, index) =>\n                    html\\`<section  \\${spread(props.attributes)}  .style=\\${{\n                      maxWidth: item + this.max,\n                    }} >\\${this.children}</section>\\`\n                )}\\`\n              : null\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"select-component\\\\\")\nexport default class SelectComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() value: any;\n  @property() defaultValue: any;\n  @property() name: any;\n  @property() options: any;\n\n  render() {\n    return html\\`\n\n          <select  \\${spread(props.attributes)}  .value=\\${this.value}  .key=\\${\n      Builder.isEditing && this.defaultValue ? this.defaultValue : \\\\\"default-key\\\\\"\n    }  .defaultValue=\\${this.defaultValue}  .name=\\${\n      this.name\n    } >\\${this.options?.map(\n      (option, index) =>\n        html\\`<option  .value=\\${option.value}  data-index=\\${index} >\\${\n          option.name || option.value\n        }</option>\\`\n    )}</select>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot><div>Default content</div></my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><content-slot-code ><my-slot  .testing=\\${(\n            <div>Hello</div>\n          )} ></my-slot></content-slot-code></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><content-slot-code  .slotTesting=\\${(\n            <div>Hello</div>\n          )} ></content-slot-code></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot name=\\\\\"myAwesomeSlot\\\\\"></my-slot>\n          <my-slot name=\\\\\"top\\\\\"></my-slot>\n          <my-slot name=\\\\\"left\\\\\">Default left</my-slot>\n          <my-slot>Default Child</my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"smile-reviews\\\\\")\nexport default class SmileReviews extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() apiKey: any;\n  @property() productId: any;\n\n  @state() reviews = [];\n  @state() name = \\\\\"test\\\\\";\n  @state() showReviewPrompt = false;\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  connectedCallback() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  }\n\n  render() {\n    return html\\`\n          <style>.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\n          <div  data-user=\\${this.name} ><button  @click=\\${(event) =>\n      (this.showReviewPrompt = true)} >Write a review</button>\n        \\${\n          this.showReviewPrompt || \\\\\"asdf\\\\\"\n            ? html\\`<input  placeholder=\\\\\"Email\\\\\"  />\n       <input  placeholder=\\\\\"Title\\\\\"  />\n       <textarea  placeholder=\\\\\"How was your experience?\\\\\" ></textarea>\n       <button  @click=\\${(ev) => {\n         ev.preventDefault();\n         this.showReviewPrompt = false;\n       }} >\n                 Submit\n               </button>\\`\n            : null\n        }\n        \\${this.reviews?.map(\n          (review, index) =>\n            html\\`<div  .key=\\${review.id} ><img  .src=\\${review.avatar}  />\n       <div  class={state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'} ><div >N:\n       \\${index}</div>\n       <div >\\${review.author}</div>\n       <div >\\${review.reviewMessage}</div></div></div>\\`\n        )}</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > StoreComment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = true;\n\n  bar() {}\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.foo}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() errors = {};\n\n  foo(errors) {\n    return errors;\n  }\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.foo(this.errors)}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = false;\n\n  bar() {\n    return this.foo;\n  }\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.bar()}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Submit 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"submit-button\\\\\")\nexport default class SubmitButton extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <button type=\\\\\"submit\\\\\" \\${spread(props.attributes)}>\\${\n      this.text\n    }</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-text\\\\\")\nexport default class Text extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() text: any;\n  @property() content: any;\n\n  @state() name = \\\\\"Decadef20\\\\\";\n\n  render() {\n    return html\\`\n\n          <div  .contentEditable=\\${allowEditingText || undefined}  data-name=\\${{\n      test: this.name || \\\\\"any name\\\\\",\n    }}  .innerHTML=\\${\n      this.text || this.content || this.name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\n    } ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Textarea 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-textarea\\\\\")\nexport default class Textarea extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() placeholder: any;\n  @property() name: any;\n  @property() value: any;\n  @property() defaultValue: any;\n\n  render() {\n    return html\\`\n\n          <textarea\n          \\${spread(props.attributes)}\n          .placeholder=\\\\\"\\${this.placeholder}\\\\\"\n          .name=\\\\\"\\${this.name}\\\\\"\n          .value=\\\\\"\\${this.value}\\\\\"\n          .defaultValue=\\\\\"\\${this.defaultValue}\\\\\"\n        ></textarea>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"use-value-and-fn-from-store\\\\\")\nexport default class UseValueAndFnFromStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onChange: any;\n\n  @state() _id = \\\\\"abc\\\\\";\n  @state() _active = false;\n\n  _do(id) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange(this._active);\n    }\n  }\n\n  updated() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <div>Test</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > Video 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-video\\\\\")\nexport default class Video extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() fit: any;\n  @property() position: any;\n  @property() video: any;\n  @property() posterImage: any;\n  @property() autoPlay: any;\n  @property() muted: any;\n  @property() controls: any;\n  @property() loop: any;\n\n  render() {\n    return html\\`\n\n          <video  preload=\\\\\"none\\\\\"  \\${spread(props.attributes)}  .style=\\${{\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes?.style,\n      objectFit: this.fit,\n      objectPosition: this.position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }}  .key=\\${this.video || \\\\\"no-src\\\\\"}  .poster=\\${\n      this.posterImage\n    }  .autoplay=\\${this.autoPlay}  .muted=\\${this.muted}  .controls=\\${\n      this.controls\n    }  .loop=\\${this.loop} ></video>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"steve\\\\\";\n\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-for-fragment\\\\\")\nexport default class BasicForFragment extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() id = \\\\\"xyz\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map(\n            (option, index) => html\\`<my-fragment\n        .key=\\\\\"\\${\\`key-\\${option}\\`}\\\\\"\n        ><div>\\${option}</div></my-fragment\n      >\\`\n          )} \\${[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map(\n      (option, index) => html\\`<my-fragment\n        .key=\\\\\"\\${\\`\\${this.id}-\\${option}\\`}\\\\\"\n        ><div>\\${option}</div></my-fragment\n      >\\`\n    )}\n          <select>\n            \\${[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map(\n              (option, index) => html\\`\n        <option .key=\\\\\"\\${\\`\\${this.id}-\\${option}\\`}\\\\\" .value=\\\\\"\\${option}\\\\\">\n          \\${option}\n        </option>\n        \\`\n            )}\n          </select>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-no-tag-ref-component\\\\\")\nexport default class MyBasicForNoTagRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() actions: any;\n\n  @state() name = \\\\\"VincentW\\\\\";\n  @state() TagName = \\\\\"div\\\\\";\n  @state() tag = \\\\\"span\\\\\";\n\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <state.TagNameGetter>\n          Hello\n          <state.tag>\\${this.name}</state.tag>\n          \\${this.actions?.map(\n            (action, index) => html\\`<state.TagName\n          ><action.icon></action.icon> <span>\\${action.text}</span></state.TagName\n        >\\`\n          )}</state.TagNameGetter\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-forward-ref-component\\\\\")\nexport default class MyBasicForwardRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"props.inputRef\\\\\"]')\n  propsInputRef!: HTMLElement;\n\n  @property() inputRef: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input ref=\\\\\"props.inputRef\\\\\" .value=\\${this.name} @change=\\${(event) =>\n      (this.name = event.target.value)} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-forward-ref-component\\\\\")\nexport default class MyBasicForwardRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"props.inputRef\\\\\"]')\n  propsInputRef!: HTMLElement;\n\n  @property() inputRef: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input ref=\\\\\"props.inputRef\\\\\" .value=\\${this.name} @change=\\${(event) =>\n      (this.name = event.target.value)} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-on-update-return-component\\\\\")\nexport default class MyBasicOnUpdateReturnComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  updated() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-ref-attribute-passing-component\\\\\")\nexport default class BasicRefAttributePassingComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"buttonRef\\\\\"]')\n  buttonRef!: HTMLElement;\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\")\nexport default class BasicRefAttributePassingCustomRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"buttonRef\\\\\"]')\n  buttonRef!: HTMLElement;\n\n  render() {\n    return html\\`\n\n          <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import \\\\\"./my-component.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\n          <my-comp> Hello! I can run in React, Vue, Solid, or Liquid! </my-comp>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > class + css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > className + css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > className 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"class-name-code\\\\\")\nexport default class ClassNameCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() bindings = \\\\\"a binding\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          <div>Without Binding</div>\n          <div class=\\\\\"{state.bindings}\\\\\">With binding</div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > classState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() classState = \\\\\"testClassName\\\\\";\n  @state() styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div  class={state.classState + ' div'}  .style=\\${this.styleState} >\n              Hello! I can run in React, Vue, Solid, or Liquid!\n            </div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() className: any;\n  @property() children: any;\n  @property() type: any;\n\n  render() {\n    return html\\`\n\n          <div class=\\\\\"{props.className}\\\\\">\n          \\${this.children} \\${this.type} Hello! I can run in React, Vue, Solid, or\n          Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"complex-meta-raw\\\\\")\nexport default class ComplexMetaRaw extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"component-with-context\\\\\")\nexport default class ComponentWithContext extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment><my-fragment>\\${foo.value}</my-fragment></my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"component-with-context\\\\\")\nexport default class ComponentWithContext extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment\n          ><my-fragment>\\${foo.value}</my-fragment>\n          <div>other</div></my-fragment\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n  @property() customComponents: any;\n\n  render() {\n    return html\\`\n\n          <div>setting context</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > defaultProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n  @property() onClick: any;\n  @property() buttonText: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(\n                props.attributes\n              )}  @click=\\${(event) => this.onClick()} >\\${\n                this.buttonText\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n  @property() onClick: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(\n                props.attributes\n              )}  @click=\\${(event) => this.onClick(event)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"component-with-types\\\\\")\nexport default class ComponentWithTypes extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name || DEFAULT_VALUES.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"event-input-and-change\\\\\")\nexport default class EventInputAndChange extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input .value=\\${this.name} @input=\\${(event) =>\n      (this.name = event.target.value)}\n          @change=\\${(event) =>\n            (this.name = event.target.value)} /> Hello! I can run in\n          React, Vue, Solid, or Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > eventProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"event-props-component\\\\\")\nexport default class EventPropsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onGetVoid: any;\n  @property() onEnter: any;\n  @property() onPass: any;\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter());\n    }\n\n    if (this.onPass) {\n      this.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <button  @click=\\${(event) => this.handleClick()} >Test</button>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > expressionState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() componentRef: any;\n\n  @state() refToUse = !(this.componentRef instanceof Function)\n    ? this.componentRef\n    : null;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.refToUse}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"figma-button\\\\\")\nexport default class FigmaButton extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() icon: any;\n  @property() interactiveState: any;\n  @property() width: any;\n  @property() size: any;\n  @property() label: any;\n\n  render() {\n    return html\\`\n\n          <button\n          data-icon=\\\\\"\\${this.icon}\\\\\"\n          data-disabled=\\\\\"\\${this.interactiveState}\\\\\"\n          data-width=\\\\\"\\${this.width}\\\\\"\n          data-size=\\\\\"\\${this.size}\\\\\"\n        >\n          \\${this.label}\n        </button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > functionProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <p  .f=\\${() => x}  .f1=\\${(x) => x}  .f2=\\${(\n      x\n    ) => {}}  .f3=\\${function () {\n      return x;\n    }}  .f4=\\${function (x) {\n      return x;\n    }}  .f5=\\${function (x) {\n      return;\n    }}  .f6=\\${function () {\n      return;\n    }}  .f7=\\${(a, b, c) => a + b + c} ></p>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > getterState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <p>\\${this.foo2}</p>\n          <p>\\${this.bar}</p>\n          <p>\\${this.baz(1)}</p>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > import types 1`] = `\n\"import RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() renderContentProps: any;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  render() {\n    return html\\`\n\n          <render-block\n          \\${spread(\n            state.getRenderContentProps(props.renderContentProps.block, 0)\n          )}\n        ></render-block>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > layerName 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-layer-name-component\\\\\")\nexport default class MyLayerNameComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.layer-name {\n  padding: 10px;\n}\n</style>\n          <section><div>Hello! I can run in React, Vue, Solid, or Liquid!</div></section>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"multiple-on-update\\\\\")\nexport default class MultipleOnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"multiple-on-update-with-deps\\\\\")\nexport default class MultipleOnUpdateWithDeps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = \\\\\"a\\\\\";\n  @state() b = \\\\\"b\\\\\";\n  @state() c = \\\\\"c\\\\\";\n  @state() d = \\\\\"d\\\\\";\n\n  updated() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  render() {\n    return html\\`\n\n          <input \\${spread(state.attrs)} \\${spread(props)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > nestedShow 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"nested-show\\\\\")\nexport default class NestedShow extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() conditionB: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\`\\${\n                  !this.conditionB\n                    ? html\\`\n        <div>if condition A and condition B</div>\n        \\`\n                    : html\\`\n        <div>else-condition-B</div>\n        \\`\n                }\\`\n              : html\\`\n    <div>else-condition-A</div>\n    \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"nested-styles\\\\\")\nexport default class NestedStyles extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\n          <div>Hello world</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-normalized-layer-names-component\\\\\")\nexport default class MyNormalizedLayerNamesComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\n          <section>\n          <div>Emoji</div>\n          <div>Dashes</div>\n          <div>CamelCase</div>\n          <div>Special chars</div>\n          <div>Special chars with dashes</div>\n          <div>Single Number</div>\n          <div>Multiple Numbers</div>\n          <div>Chars with numbers at end</div>\n          <div>Chars with numbers at start</div>\n          <div>Numnbers separated by dash</div>\n          <div>Emoji</div>\n          <div data-name=\\\\\"1\\\\\">Number</div>\n        </section>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onEvent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-embed\\\\\")\nexport default class Embed extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  connectedCallback() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  render() {\n    return html\\`\n\n          <div ref=\\\\\"elem\\\\\"><div>Test</div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-init\\\\\")\nexport default class OnInit extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onInit 1`] = `\n\"export const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-init\\\\\")\nexport default class OnInit extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  @state() name = \\\\\"\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>Default name defined by parent \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-init-plain\\\\\")\nexport default class OnInitPlain extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onMount 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-comp\\\\\")\nexport default class Comp extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-comp\\\\\")\nexport default class Comp extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-update\\\\\")\nexport default class OnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-update-with-deps\\\\\")\nexport default class OnUpdateWithDeps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() size: any;\n\n  @state() a = \\\\\"a\\\\\";\n  @state() b = \\\\\"b\\\\\";\n\n  updated() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() children: any;\n  @property() type: any;\n\n  @state() name = \\\\\"Decadef20\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.children} \\${this.type} Hello! I can run in React, Vue, Solid, or\n          Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > propsInterface 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > propsType 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-update\\\\\")\nexport default class OnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  updated() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport \\\\\"./block-styles.ts\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport \\\\\"./render-component.ts\\\\\";\nimport \\\\\"./render-repeated-block.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"render-block\\\\\")\nexport default class RenderBlock extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() block: any;\n  @property() context: any;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  render() {\n    return html\\`\n\n          \\${\n            this.shouldWrap\n              ? html\\`\\${\n                  isEmptyHtmlElement(this.tag)\n                    ? html\\`<state.tag  \\${spread(state.attributes)}  \\${spread(\n                        state.actions\n                      )} ></state.tag>\\`\n                    : null\n                }\n       \\${\n         !isEmptyHtmlElement(this.tag) && this.repeatItemData\n           ? html\\`\\${this.repeatItemData?.map(\n               (data, index) =>\n                 html\\`<render-repeated-block  .key=\\${index}  .repeatContext=\\${data.context}  .block=\\${data.block} ></render-repeated-block>\\`\n             )}\\`\n           : null\n       }\n       \\${\n         !isEmptyHtmlElement(this.tag) && !this.repeatItemData\n           ? html\\`<state.tag  \\${spread(state.attributes)}  \\${spread(\n               state.actions\n             )} ><state.renderComponentTag  \\${spread(\n               state.renderComponentProps\n             )} ></state.renderComponentTag>\n        \\${this.childrenWithoutParentComponent?.map(\n          (child, index) =>\n            html\\`<render-block  .key=\\${\n              \\\\\"render-block-\\\\\" + child.id\n            }  .block=\\${child}  .context=\\${\n              this.childrenContext\n            } ></render-block>\\`\n        )}\n        \\${this.childrenWithoutParentComponent?.map(\n          (child, index) =>\n            html\\`<block-styles  .key=\\${\n              \\\\\"block-style-\\\\\" + child.id\n            }  .block=\\${child}  .context=\\${\n              this.childrenContext\n            } ></block-styles>\\`\n        )}</state.tag>\\`\n           : null\n       }\\`\n              : html\\`<state.renderComponentTag  \\${spread(\n                  state.renderComponentProps\n                )} ></state.renderComponentTag>\\`\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport \\\\\"@dummy/RenderBlocks.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() customComponents: any;\n  @property() content: any;\n\n  connectedCallback() {\n    sendComponentsToVisualEditor(this.customComponents);\n  }\n\n  updated() {\n    dispatchNewContentToVisualEditor(this.content);\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\n          <div  @click=\\${(event) =>\n            trackClick(this.content.id)} ><render-blocks  .blocks=\\${\n      this.content.blocks\n    } ></render-blocks></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(props.attributes)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</my-fragment>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > rootShow 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"render-styles\\\\\")\nexport default class RenderStyles extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.foo === \\\\\"bar\\\\\"\n              ? html\\`\n    <div>Bar</div>\n    \\`\n              : html\\`\n    <div>Foo</div>\n    \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.name} \\${\n      this.name === \\\\\"Batman\\\\\"\n        ? html\\`<my-component\n        name=\\\\\"Bruce Wayne\\\\\"\n      ></my-component\n      >\\`\n        : null\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n  @property() children: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.name} \\${this.children} \\${\n      this.name === \\\\\"Batman\\\\\"\n        ? html\\`<my-component\n        name=\\\\\"Bruce\\\\\"\n        ><div>Wayne</div></my-component\n      >\\`\n        : null\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > setState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"set-state\\\\\")\nexport default class SetState extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() n = [\\\\\"123\\\\\"];\n\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${(event) =>\n            this.someFn()} >Click me</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > showExpressions 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"show-with-other-values\\\\\")\nexport default class ShowWithOtherValues extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() conditionB: any;\n  @property() conditionC: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.conditionA ? html\\`Content0\\` : html\\`ContentA\\`} \\${\n      this.conditionA ? html\\`ContentA\\` : null\n    } \\${this.conditionA ? html\\`\\` : html\\`ContentA\\`}\n          \\${this.conditionA ? html\\`ContentB\\` : html\\`\\${undefined}\\`} \\${\n      this.conditionA ? html\\`\\${undefined}\\` : html\\`ContentB\\`\n    } \\${this.conditionA ? html\\`ContentC\\` : null} \\${\n      this.conditionA ? html\\`\\` : html\\`ContentC\\`\n    } \\${this.conditionA ? html\\`ContentD\\` : null} \\${\n      this.conditionA ? html\\`\\` : html\\`ContentD\\`\n    }\n          \\${this.conditionA ? html\\`ContentE\\` : html\\`hello\\`} \\${\n      this.conditionA ? html\\`hello\\` : html\\`ContentE\\`\n    } \\${this.conditionA ? html\\`ContentF\\` : html\\`123\\`}\n          \\${this.conditionA ? html\\`123\\` : html\\`ContentF\\`} \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`4mb\\`\n        : html\\`\\${this.conditionB === \\\\\"Complete\\\\\" ? html\\`20mb\\` : html\\`9mb\\`}\\`\n    } \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`\\${this.conditionB === \\\\\"Complete\\\\\" ? html\\`20mb\\` : html\\`9mb\\`}\\`\n        : html\\`4mb\\`\n    } \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`\\${\n            this.conditionB === \\\\\"Complete\\\\\"\n              ? html\\`\n          <div>complete</div>\n          \\`\n              : html\\`9mb\\`\n          }\\`\n        : html\\`\\${\n            this.conditionC === \\\\\"Complete\\\\\"\n              ? html\\`dff\\`\n              : html\\`\n          <div>complete else</div>\n          \\`\n          }\\`\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > showWithFor 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"nested-show\\\\\")\nexport default class NestedShow extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() items: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\`\\${this.items?.map(\n                  (item, idx) => html\\`\n        <div .key=\\\\\"\\${idx}\\\\\">\\${item}</div>\n        \\`\n                )}\\`\n              : html\\`\n    <div>else-condition-A</div>\n    \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"show-with-other-values\\\\\")\nexport default class ShowWithOtherValues extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.conditionA ? html\\` ContentA \\` : null} \\${\n      this.conditionA\n        ? html\\`\n      ContentB \\`\n        : html\\`\\${undefined}\\`\n    } \\${this.conditionA ? html\\` ContentC \\` : null}\n          \\${this.conditionA ? html\\` ContentD \\` : null} \\${\n      this.conditionA\n        ? html\\`\n      ContentE \\`\n        : html\\`hello\\`\n    } \\${this.conditionA ? html\\` ContentF \\` : html\\`123\\`}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"show-root-text\\\\\")\nexport default class ShowRootText extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\` ContentA \\`\n              : html\\`\n    <div>else-condition-A</div>\n    \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() id: any;\n  @property() foo: any;\n\n  updated() {\n    console.log(\\\\\"props.id changed\\\\\", this.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\\${this.id} \\${this.foo.value.bar.baz}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input \\${spread(attrs)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() nested: any;\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props.nested)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > spreadProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > store-async-function 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = 123;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.foo}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\n          <div  .style=\\${{\n            width: \\\\\"100%\\\\\",\n          }} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"style-prop-class-and-css\\\\\")\nexport default class StylePropClassAndCss extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\n          <div  class={props.attributes.class + ' div'}  .style=\\${this.attributes.style} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > subComponent 1`] = `\n\"import \\\\\"./foo-sub-component.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"sub-component\\\\\")\nexport default class SubComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <my-foo></my-foo>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > svgComponent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"svg-component\\\\\")\nexport default class SvgComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <svg  fill=\\\\\"none\\\\\"  role=\\\\\"img\\\\\"  .viewBox=\\${\n            \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42\n          }  .width=\\${42}  .height=\\${42} ><defs ><filter  id=\\\\\"prefix__filter0_f\\\\\"  filterUnits=\\\\\"userSpaceOnUse\\\\\" ><feFlood  result=\\\\\"BackgroundImageFix\\\\\" ></feFlood>\n        <feBlend  in=\\\\\"SourceGraphic\\\\\"  in2=\\\\\"BackgroundImageFix\\\\\"  result=\\\\\"shape\\\\\" ></feBlend>\n        <feGaussianBlur  result=\\\\\"effect1_foregroundBlur\\\\\"  .stdDeviation=\\${7} ></feGaussianBlur></filter></defs></svg>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > typeDependency 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-dependency\\\\\")\nexport default class TypeDependency extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.foo}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-external-props\\\\\")\nexport default class TypeExternalProps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-external-store\\\\\")\nexport default class TypeExternalStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() _name = \\\\\"test\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this._name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-getter-store\\\\\")\nexport default class TypeGetterStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"test\\\\\";\n\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > use-style 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > useTarget 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"use-target-component\\\\\")\nexport default class UseTargetComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() lastName = \\\\\"bar\\\\\";\n  @state() foo = \\\\\"bar\\\\\";\n\n  get name() {\n    const prefix = \\\\\"li\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  connectedCallback() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div>\\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-web-component\\\\\")\nexport default class MyBasicWebComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n          ><swiper-slide>Slide 1</swiper-slide>\n          <swiper-slide>Slide 2</swiper-slide>\n          <swiper-slide>Slide 3</swiper-slide></swiper-container\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Remove Internal mitosis package 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name} ! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Advanced 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-show-component\\\\\")\nexport default class MyBasicForShowComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  render() {\n    return html\\`\n\n          <main>\n          \\${this.names?.map(\n            (person, i) => html\\`\n      <div>\\${i} : \\${person}</div>\n      \\`\n          )} \\${this.names?.map((person, index) => html\\`<span>\\${person}</span>\\`)}\n          \\${this.names?.map((_, index) => html\\`<br />\\`)} \\${Array.from({\n      length: 10,\n    })?.map(\n      (_, ee) => html\\`\n      <pre>\\${ee}</pre>\n      \\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (_, index) => html\\`\n      <p>\\${index}</p>\n      \\`\n    )} \\${this.names?.map(\n      (person, index) => html\\`<span\n        >\\${person} \\${index}</span\n      >\\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (person, count) => html\\`<span\n        >\\${person} \\${count}</span\n      >\\`\n    )} \\${this.names?.map(\n      (person, i) => html\\`<span>\\${person} \\${i}</span>\\`\n    )} \\${Array.from({ length: 10 })?.map(\n      (person, index) => html\\`<span\n        >\\${person} \\${index}</span\n      >\\`\n    )}\n        </main>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@customElement(\\\\\"my-basic-ref-component\\\\\")\nexport default class MyBasicRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"inputRef\\\\\"]')\n  inputRef!: HTMLElement;\n\n  @query('[ref=\\\\\"inputNoArgRef\\\\\"]')\n  inputNoArgRef!: HTMLElement;\n\n  @property() showInput: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  updated() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          \\${\n            this.showInput\n              ? html\\`<my-fragment\n           ><input ref=\\\\\"inputRef\\\\\" .value=\\${this.name} @blur=\\${(event) =>\n                  this.onBlur()}\n           @change=\\${(event) => (this.name = event.target.value)} />\n           <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n           <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n             <option value=\\\\\"supra\\\\\">GR Supra</option>\n             <option value=\\\\\"86\\\\\">GR 86</option>\n           </select></my-fragment\n         >\\`\n              : null\n          } Hello \\${this.lowerCaseName()} ! I can run in React, Qwik, Vue,\n          Solid, or Web Component!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic 1`] = `\n\"export const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n  @state() age = 1;\n  @state() sports = [\\\\\"\\\\\"];\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\n          <input .value=\\${DEFAULT_VALUES.name || this.name} @change=\\${(\n      myEvent\n    ) =>\n      (this.name =\n        myEvent.target.value)} /> Hello! I can run in React, Vue, Solid, or\n          Liquid! &gt;\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic 2`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-show-component\\\\\")\nexport default class MyBasicForShowComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.names?.map(\n            (person, index) =>\n              html\\`\\${\n                person === this.name\n                  ? html\\`<input .value=\\${this.name} @change=\\${(event) => {\n                      this.name = event.target.value + \\\\\" and \\\\\" + person;\n                    }} /> Hello \\${person} ! I can run in\n          Qwik, Web Component, React, Vue, Solid, or Liquid! \\`\n                  : null\n              }\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  connectedCallback() {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${\n            myService.method(\\\\\"hello\\\\\") + this.name\n          } Hello! I can run in React, Vue,\n          Solid, or Liquid! <input @change=\\${(event) => this.onChange()} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\n@customElement(\\\\\"my-basic-on-mount-update-component\\\\\")\nexport default class MyBasicOnMountUpdateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() bye: any;\n  @property() hi: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  connectedCallback() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-outputs-component\\\\\")\nexport default class MyBasicOutputsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onMessageChange: any;\n  @property() onEvent: any;\n  @property() message: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  connectedCallback() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-outputs-component\\\\\")\nexport default class MyBasicOutputsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onMessageChange: any;\n  @property() onEvent: any;\n  @property() message: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  connectedCallback() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" .spellcheck=\\\\\"\\${true}\\\\\" />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@customElement(\\\\\"my-boolean-attribute\\\\\")\nexport default class MyBooleanAttribute extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() children: any;\n  @property() type: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.children ? html\\`\\${this.children} \\${this.type}\\` : null}\n          <my-boolean-attribute-component\n            .toggle=\\\\\"\\${true}\\\\\"\n          ></my-boolean-attribute-component>\n          <my-boolean-attribute-component\n            .toggle=\\\\\"\\${true}\\\\\"\n          ></my-boolean-attribute-component>\n          <my-boolean-attribute-component\n            .list=\\\\\"\\${null}\\\\\"\n          ></my-boolean-attribute-component>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-child-component\\\\\")\nexport default class MyBasicChildComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n  @state() dev = \\\\\"PatrickJS\\\\\";\n\n  log = function log(message: string) {\n    console.log(message);\n  };\n\n  render() {\n    return html\\`\n\n          <div ><my-basic-component  .id=\\${this.dev} ></my-basic-component>\n        <div ><my-basic-on-mount-update-component  .hi=\\${this.name}  .bye=\\${\n      this.dev\n    } ></my-basic-on-mount-update-component>\n        <my-basic-outputs-component  message=\\\\\"Test\\\\\"  @messagechange=\\${(name) =>\n          (this.name = name)}  @event=\\${(event) =>\n      this.log(\\\\\"Test\\\\\")} ></my-basic-outputs-component></div></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicFor 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-component\\\\\")\nexport default class MyBasicForComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n  @state() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  connectedCallback() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.names?.map(\n            (person, index) => html\\`<my-fragment\n        ><input .value=\\${this.name} @change=\\${(event) => {\n              this.name = event.target.value + \\\\\" and \\\\\" + person;\n            }} /> Hello \\${person} ! I can run in\n        Qwik, Web Component, React, Vue, Solid, or Liquid! </my-fragment\n      >\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@customElement(\\\\\"my-basic-ref-component\\\\\")\nexport default class MyBasicRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"inputRef\\\\\"]')\n  inputRef!: HTMLElement;\n\n  @query('[ref=\\\\\"inputNoArgRef\\\\\"]')\n  inputNoArgRef!: HTMLElement;\n\n  @property() showInput: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          \\${\n            this.showInput\n              ? html\\`<my-fragment\n           ><input ref=\\\\\"inputRef\\\\\" .value=\\${this.name} @blur=\\${(event) =>\n                  this.onBlur()}\n           @change=\\${(event) => (this.name = event.target.value)} />\n           <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n           <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n             <option value=\\\\\"supra\\\\\">GR Supra</option>\n             <option value=\\\\\"86\\\\\">GR 86</option>\n           </select></my-fragment\n         >\\`\n              : null\n          } Hello \\${this.lowerCaseName()} ! I can run in React, Qwik, Vue,\n          Solid, or Web Component!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@customElement(\\\\\"my-basic-ref-assignment-component\\\\\")\nexport default class MyBasicRefAssignmentComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${async (evt) =>\n            await this.handlerClick(evt)} >Click</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"export function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\n@customElement(\\\\\"my-previous-component\\\\\")\nexport default class MyPreviousComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() count = 0;\n\n  updated() {\n    this.prevCount = this.count;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><h1 >\n                Now:\n        \\${this.count}\n        , before:\n        \\${this.prevCount}</h1>\n        <button  @click=\\${(event) =>\n          (this.count += 1)} >Increment</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Button 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(props.attributes)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Columns 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n@customElement(\\\\\"my-column\\\\\")\nexport default class Column extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() columns: any;\n  @property() space: any;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\n          <div>\n          \\${this.columns?.map(\n            (column, index) => html\\`\n         <div>\\${column.content} \\${index}</div>\n         \\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\n@customElement(\\\\\"content-slot-code\\\\\")\nexport default class ContentSlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() slotTesting: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot .name=\\\\\"\\${this.slotTesting}\\\\\"></my-slot>\n          <div><hr /></div>\n          <div><my-slot></my-slot></div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"content-slot-jsx-code\\\\\")\nexport default class ContentSlotJsxCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() slotContent: any;\n  @property() children: any;\n  @property() slotReference: any;\n  @property() attributes: any;\n  @property() content: any;\n\n  @state() name = \\\\\"king\\\\\";\n  @state() showContent = false;\n\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          \\${\n            this.slotReference\n              ? html\\`<div  class={state.cls}  .name=\\${\n                  this.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"\n                }  .title=\\${this.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}  \\${spread(\n                  props.attributes\n                )}  @click=\\${(event) => this.show()} >\\${\n                  this.showContent && this.slotContent\n                    ? html\\`<my-slot  name=\\\\\"content\\\\\" >\\${this.content}</my-slot>\\`\n                    : null\n                }\n       <div ><hr  /></div>\n       <div >\\${this.children}</div></div>\\`\n              : null\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > CustomCode 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@customElement(\\\\\"custom-code\\\\\")\nexport default class CustomCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  @property() replaceNodes: any;\n  @property() code: any;\n\n  @state() scriptsInserted = [];\n  @state() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  connectedCallback() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return html\\`\n\n          <div  class={'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')}  ref=\\\\\"elem\\\\\"  .innerHTML=\\${this.code} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Embed 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n@customElement(\\\\\"custom-code\\\\\")\nexport default class CustomCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  @property() replaceNodes: any;\n  @property() code: any;\n\n  @state() scriptsInserted = [];\n  @state() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  connectedCallback() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return html\\`\n\n          <div  class={'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')}  ref=\\\\\"elem\\\\\"  .innerHTML=\\${this.code} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Form 1`] = `\n\"import { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"form-component\\\\\")\nexport default class FormComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"formRef\\\\\"]')\n  formRef!: HTMLElement;\n\n  @property() previewState: any;\n  @property() sendWithJs: any;\n  @property() sendSubmissionsTo: any;\n  @property() action: any;\n  @property() customHeaders: any;\n  @property() contentType: any;\n  @property() sendSubmissionsToEmail: any;\n  @property() name: any;\n  @property() method: any;\n  @property() errorMessagePath: any;\n  @property() resetFormOnSubmit: any;\n  @property() successUrl: any;\n  @property() validate: any;\n  @property() attributes: any;\n  @property() builderBlock: any;\n  @property() errorMessage: any;\n  @property() sendingMessage: any;\n  @property() successMessage: any;\n\n  @state() formState = \\\\\"unsubmitted\\\\\";\n  @state() responseData = null;\n  @state() formErrorMessage = \\\\\"\\\\\";\n\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  render() {\n    return html\\`\n          <style>.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\n          <form  .validate=\\${this.validate}  ref=\\\\\"formRef\\\\\"  .action=\\${\n      !this.sendWithJs && this.action\n    }  .method=\\${this.method}  .name=\\${this.name}  @submit=\\${(event) =>\n      this.onSubmit(event)}  \\${spread(props.attributes)} >\\${\n      this.builderBlock && this.builderBlock.children\n        ? html\\`\\${this.builderBlock?.children?.map(\n            (block, index) =>\n              html\\`<builder-block-component  .key=\\${block.id}  .block=\\${block}  .index=\\${index} ></builder-block-component>\\`\n          )}\\`\n        : null\n    }\n        \\${\n          this.submissionState === \\\\\"error\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"errorMessage\\\\\"  .blocks=\\${this\n                .errorMessage!} ></builder-blocks>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"sending\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"sendingMessage\\\\\"  .blocks=\\${this\n                .sendingMessage!} ></builder-blocks>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"error\\\\\" && this.responseData\n            ? html\\`<pre >\\${JSON.stringify(this.responseData, null, 2)}</pre>\\`\n            : null\n        }\n        \\${\n          this.submissionState === \\\\\"success\\\\\"\n            ? html\\`<builder-blocks  dataPath=\\\\\"successMessage\\\\\"  .blocks=\\${this\n                .successMessage!} ></builder-blocks>\\`\n            : null\n        }</form>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Image 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n@customElement(\\\\\"my-image\\\\\")\nexport default class Image extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"pictureRef\\\\\"]')\n  pictureRef!: HTMLElement;\n\n  @property() lazy: any;\n  @property() altText: any;\n  @property() _class: any;\n  @property() image: any;\n  @property() srcset: any;\n  @property() sizes: any;\n  @property() children: any;\n\n  @state() scrollListener = null;\n  @state() imageLoaded = false;\n  @state() load = false;\n\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  connectedCallback() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  disconnectedCallback() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n\n  render() {\n    return html\\`\n          <style>.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\n          <div>\n          <picture ref=\\\\\"pictureRef\\\\\"\n            >\\${\n              !this.useLazyLoading() || this.load\n                ? html\\`<img class={'builder-image' +\n           (props._class ? ' ' + props._class : '') + ' img'} .alt=\\${\n             this.altText\n           }\n           aria-role=\\${this.altText ? \\\\\"presentation\\\\\" : undefined} .src=\\${\n                    this.image\n                  }\n           @load=\\${(event) => this.setLoaded()} .srcset=\\${this.srcset}\n           .sizes=\\${this.sizes} />\\`\n                : null\n            }\n            <source .srcset=\\\\\"\\${this.srcset}\\\\\"\n          /></picture>\n          \\${this.children}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Image State 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"img-state-component\\\\\")\nexport default class ImgStateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() canShow = true;\n  @state() images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.images?.map(\n            (item, itemIndex) => html\\`<my-fragment\n        ><img .src=\\\\\"\\${item}\\\\\" .key=\\\\\"\\${itemIndex}\\\\\" /></my-fragment\n      >\\`\n          )}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"img-component\\\\\")\nexport default class ImgComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() backgroundSize: any;\n  @property() backgroundPosition: any;\n  @property() attributes: any;\n  @property() imgSrc: any;\n  @property() altText: any;\n\n  render() {\n    return html\\`\n\n          <img .style=\\${{\n            objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n            objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n          }} \\${spread(props.attributes)}\n        .key=\\${(Builder.isEditing && this.imgSrc) || \\\\\"default-key\\\\\"} .alt=\\${\n      this.altText\n    }\n        .src=\\${this.imgSrc} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"form-input-component\\\\\")\nexport default class FormInputComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() defaultValue: any;\n  @property() placeholder: any;\n  @property() type: any;\n  @property() name: any;\n  @property() value: any;\n  @property() required: any;\n  @property() onChange: any;\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props.attributes)} .key=\\${\n      Builder.isEditing && this.defaultValue ? this.defaultValue : \\\\\"default-key\\\\\"\n    } .placeholder=\\${this.placeholder}\n        .type=\\${this.type} .name=\\${this.name} .value=\\${this.value}\n        .defaultValue=\\${this.defaultValue} .required=\\${\n      this.required\n    } @change=\\${(event) => this.onChange?.(event.target.value)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-stepper\\\\\")\nexport default class Stepper extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  handleChange(value: string) {\n    console.log(value);\n  }\n\n  render() {\n    return html\\`\n\n          <form-input-component  name=\\\\\"kingzez\\\\\"  type=\\\\\"text\\\\\"  @change=\\${(\n            value\n          ) => this.handleChange(value)} ></form-input-component>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > NestedStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n@customElement(\\\\\"nested-store\\\\\")\nexport default class NestedStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() _id = \\\\\"abc\\\\\";\n  @state() _messageId = this._id + \\\\\"-message\\\\\";\n\n  render() {\n    return html\\`\n\n          <div .id=\\\\\"\\${this._id}\\\\\">\n          Test\n\n          <p .id=\\\\\"\\${this._messageId}\\\\\">Message</p>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > RawText 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n@customElement(\\\\\"raw-text\\\\\")\nexport default class RawText extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <span  class={props.attributes?.class || props.attributes?.className}  .innerHTML=\\${\n            this.text || \\\\\"\\\\\"\n          } ></span>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Section 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"section-component\\\\\")\nexport default class SectionComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() maxWidth: any;\n  @property() children: any;\n\n  render() {\n    return html\\`\n\n          <section  \\${spread(props.attributes)}  .style=\\${\n      this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n        ? {\n            maxWidth: this.maxWidth,\n          }\n        : undefined\n    } >\\${this.children}</section>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Section 2`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"section-state-component\\\\\")\nexport default class SectionStateComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() children: any;\n\n  @state() max = 42;\n  @state() items = [42];\n\n  render() {\n    return html\\`\n\n          \\${\n            this.max\n              ? html\\`\\${this.items?.map(\n                  (item, index) =>\n                    html\\`<section  \\${spread(props.attributes)}  .style=\\${{\n                      maxWidth: item + this.max,\n                    }} >\\${this.children}</section>\\`\n                )}\\`\n              : null\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"select-component\\\\\")\nexport default class SelectComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() value: any;\n  @property() defaultValue: any;\n  @property() name: any;\n  @property() options: any;\n\n  render() {\n    return html\\`\n\n          <select  \\${spread(props.attributes)}  .value=\\${this.value}  .key=\\${\n      Builder.isEditing && this.defaultValue ? this.defaultValue : \\\\\"default-key\\\\\"\n    }  .defaultValue=\\${this.defaultValue}  .name=\\${\n      this.name\n    } >\\${this.options?.map(\n      (option, index) =>\n        html\\`<option  .value=\\${option.value}  data-index=\\${index} >\\${\n          option.name || option.value\n        }</option>\\`\n    )}</select>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot><div>Default content</div></my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><content-slot-code ><my-slot  .testing=\\${(\n            <div>Hello</div>\n          )} ></my-slot></content-slot-code></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div ><content-slot-code  .slotTesting=\\${(\n            <div>Hello</div>\n          )} ></content-slot-code></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\n@customElement(\\\\\"slot-code\\\\\")\nexport default class SlotCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot name=\\\\\"myAwesomeSlot\\\\\"></my-slot>\n          <my-slot name=\\\\\"top\\\\\"></my-slot>\n          <my-slot name=\\\\\"left\\\\\">Default left</my-slot>\n          <my-slot>Default Child</my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\n@customElement(\\\\\"smile-reviews\\\\\")\nexport default class SmileReviews extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() apiKey: any;\n  @property() productId: any;\n\n  @state() reviews = [];\n  @state() name = \\\\\"test\\\\\";\n  @state() showReviewPrompt = false;\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  connectedCallback() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  }\n\n  render() {\n    return html\\`\n          <style>.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\n          <div  data-user=\\${this.name} ><button  @click=\\${(event) =>\n      (this.showReviewPrompt = true)} >Write a review</button>\n        \\${\n          this.showReviewPrompt || \\\\\"asdf\\\\\"\n            ? html\\`<input  placeholder=\\\\\"Email\\\\\"  />\n       <input  placeholder=\\\\\"Title\\\\\"  />\n       <textarea  placeholder=\\\\\"How was your experience?\\\\\" ></textarea>\n       <button  @click=\\${(ev) => {\n         ev.preventDefault();\n         this.showReviewPrompt = false;\n       }} >\n                 Submit\n               </button>\\`\n            : null\n        }\n        \\${this.reviews?.map(\n          (review, index) =>\n            html\\`<div  .key=\\${review.id} ><img  .src=\\${review.avatar}  />\n       <div  class={state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'} ><div >N:\n       \\${index}</div>\n       <div >\\${review.author}</div>\n       <div >\\${review.reviewMessage}</div></div></div>\\`\n        )}</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > StoreComment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = true;\n\n  bar() {}\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.foo}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() errors = {};\n\n  foo(errors) {\n    return errors;\n  }\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.foo(this.errors)}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = false;\n\n  bar() {\n    return this.foo;\n  }\n\n  render() {\n    return html\\`\n\n          <my-fragment>\\${this.bar()}</my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Submit 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"submit-button\\\\\")\nexport default class SubmitButton extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <button type=\\\\\"submit\\\\\" \\${spread(props.attributes)}>\\${\n      this.text\n    }</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\n@customElement(\\\\\"my-text\\\\\")\nexport default class Text extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() text: any;\n  @property() content: any;\n\n  @state() name = \\\\\"Decadef20\\\\\";\n\n  render() {\n    return html\\`\n\n          <div  .contentEditable=\\${allowEditingText || undefined}  data-name=\\${{\n      test: this.name || \\\\\"any name\\\\\",\n    }}  .innerHTML=\\${\n      this.text || this.content || this.name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\n    } ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Textarea 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-textarea\\\\\")\nexport default class Textarea extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() placeholder: any;\n  @property() name: any;\n  @property() value: any;\n  @property() defaultValue: any;\n\n  render() {\n    return html\\`\n\n          <textarea\n          \\${spread(props.attributes)}\n          .placeholder=\\\\\"\\${this.placeholder}\\\\\"\n          .name=\\\\\"\\${this.name}\\\\\"\n          .value=\\\\\"\\${this.value}\\\\\"\n          .defaultValue=\\\\\"\\${this.defaultValue}\\\\\"\n        ></textarea>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n@customElement(\\\\\"use-value-and-fn-from-store\\\\\")\nexport default class UseValueAndFnFromStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onChange: any;\n\n  @state() _id = \\\\\"abc\\\\\";\n  @state() _active = false;\n\n  _do(id?: string) {\n    this._active = !!id;\n\n    if (this.onChange) {\n      this.onChange(this._active);\n    }\n  }\n\n  updated() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <div>Test</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > Video 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-video\\\\\")\nexport default class Video extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n  @property() fit: any;\n  @property() position: any;\n  @property() video: any;\n  @property() posterImage: any;\n  @property() autoPlay: any;\n  @property() muted: any;\n  @property() controls: any;\n  @property() loop: any;\n\n  render() {\n    return html\\`\n\n          <video  preload=\\\\\"none\\\\\"  \\${spread(props.attributes)}  .style=\\${{\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...this.attributes?.style,\n      objectFit: this.fit,\n      objectPosition: this.position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }}  .key=\\${this.video || \\\\\"no-src\\\\\"}  .poster=\\${\n      this.posterImage\n    }  .autoplay=\\${this.autoPlay}  .muted=\\${this.muted}  .controls=\\${\n      this.controls\n    }  .loop=\\${this.loop} ></video>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"steve\\\\\";\n\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-for-fragment\\\\\")\nexport default class BasicForFragment extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() id = \\\\\"xyz\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map(\n            (option, index) => html\\`<my-fragment\n        .key=\\\\\"\\${\\`key-\\${option}\\`}\\\\\"\n        ><div>\\${option}</div></my-fragment\n      >\\`\n          )} \\${[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map(\n      (option, index) => html\\`<my-fragment\n        .key=\\\\\"\\${\\`\\${this.id}-\\${option}\\`}\\\\\"\n        ><div>\\${option}</div></my-fragment\n      >\\`\n    )}\n          <select>\n            \\${[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map(\n              (option, index) => html\\`\n        <option .key=\\\\\"\\${\\`\\${this.id}-\\${option}\\`}\\\\\" .value=\\\\\"\\${option}\\\\\">\n          \\${option}\n        </option>\n        \\`\n            )}\n          </select>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-for-no-tag-ref-component\\\\\")\nexport default class MyBasicForNoTagRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() actions: any;\n\n  @state() name = \\\\\"VincentW\\\\\";\n  @state() TagName = \\\\\"div\\\\\";\n  @state() tag = \\\\\"span\\\\\";\n\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <state.TagNameGetter>\n          Hello\n          <state.tag>\\${this.name}</state.tag>\n          \\${this.actions?.map(\n            (action, index) => html\\`<state.TagName\n          ><action.icon></action.icon> <span>\\${action.text}</span></state.TagName\n        >\\`\n          )}</state.TagNameGetter\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@customElement(\\\\\"my-basic-forward-ref-component\\\\\")\nexport default class MyBasicForwardRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"props.inputRef\\\\\"]')\n  propsInputRef!: HTMLElement;\n\n  @property() inputRef: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input ref=\\\\\"props.inputRef\\\\\" .value=\\${this.name} @change=\\${(event) =>\n      (this.name = event.target.value)} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n@customElement(\\\\\"my-basic-forward-ref-component\\\\\")\nexport default class MyBasicForwardRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"props.inputRef\\\\\"]')\n  propsInputRef!: HTMLElement;\n\n  @property() inputRef: any;\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input ref=\\\\\"props.inputRef\\\\\" .value=\\${this.name} @change=\\${(event) =>\n      (this.name = event.target.value)} />\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-on-update-return-component\\\\\")\nexport default class MyBasicOnUpdateReturnComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"PatrickJS\\\\\";\n\n  updated() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-ref-attribute-passing-component\\\\\")\nexport default class BasicRefAttributePassingComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"buttonRef\\\\\"]')\n  buttonRef!: HTMLElement;\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\")\nexport default class BasicRefAttributePassingCustomRefComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"buttonRef\\\\\"]')\n  buttonRef!: HTMLElement;\n\n  render() {\n    return html\\`\n\n          <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import \\\\\"./my-component.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\n          <my-comp> Hello! I can run in React, Vue, Solid, or Liquid! </my-comp>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > class + css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > className + css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > className 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\n@customElement(\\\\\"class-name-code\\\\\")\nexport default class ClassNameCode extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() bindings = \\\\\"a binding\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          <div>Without Binding</div>\n          <div class=\\\\\"{state.bindings}\\\\\">With binding</div>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > classState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() classState = \\\\\"testClassName\\\\\";\n  @state() styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div  class={state.classState + ' div'}  .style=\\${this.styleState} >\n              Hello! I can run in React, Vue, Solid, or Liquid!\n            </div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() className: any;\n  @property() children: any;\n  @property() type: any;\n\n  render() {\n    return html\\`\n\n          <div class=\\\\\"{props.className}\\\\\">\n          \\${this.children} \\${this.type} Hello! I can run in React, Vue, Solid, or\n          Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"complex-meta-raw\\\\\")\nexport default class ComplexMetaRaw extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\n@customElement(\\\\\"component-with-context\\\\\")\nexport default class ComponentWithContext extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment><my-fragment>\\${foo.value}</my-fragment></my-fragment>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\n@customElement(\\\\\"component-with-context\\\\\")\nexport default class ComponentWithContext extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment\n          ><my-fragment>\\${foo.value}</my-fragment>\n          <div>other</div></my-fragment\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() content: any;\n  @property() customComponents: any;\n\n  render() {\n    return html\\`\n\n          <div>setting context</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > defaultProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n  @property() onClick: any;\n  @property() buttonText: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(\n                props.attributes\n              )}  @click=\\${(event) => this.onClick()} >\\${\n                this.buttonText\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n  @property() onClick: any;\n\n  render() {\n    return html\\`\n\n          <div >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(\n                props.attributes\n              )}  @click=\\${(event) => this.onClick(event)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  name: string;\n};\n\n@customElement(\\\\\"component-with-types\\\\\")\nexport default class ComponentWithTypes extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name || DEFAULT_VALUES.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"event-input-and-change\\\\\")\nexport default class EventInputAndChange extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  render() {\n    return html\\`\n          <style>.input {\n  color: red;\n}\n</style>\n          <div>\n          <input .value=\\${this.name} @input=\\${(event) =>\n      (this.name = event.target.value)}\n          @change=\\${(event) =>\n            (this.name = event.target.value)} /> Hello! I can run in\n          React, Vue, Solid, or Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > eventProps 1`] = `\n\"import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"event-props-component\\\\\")\nexport default class EventPropsComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() onGetVoid: any;\n  @property() onEnter: any;\n  @property() onPass: any;\n\n  handleClick() {\n    if (this.onGetVoid) {\n      this.onGetVoid();\n    }\n\n    if (this.onEnter) {\n      console.log(this.onEnter());\n    }\n\n    if (this.onPass) {\n      this.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <button  @click=\\${(event) => this.handleClick()} >Test</button>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > expressionState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() componentRef: any;\n\n  @state() refToUse = !(this.componentRef instanceof Function)\n    ? this.componentRef\n    : null;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.refToUse}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"figma-button\\\\\")\nexport default class FigmaButton extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() icon: any;\n  @property() interactiveState: any;\n  @property() width: any;\n  @property() size: any;\n  @property() label: any;\n\n  render() {\n    return html\\`\n\n          <button\n          data-icon=\\\\\"\\${this.icon}\\\\\"\n          data-disabled=\\\\\"\\${this.interactiveState}\\\\\"\n          data-width=\\\\\"\\${this.width}\\\\\"\n          data-size=\\\\\"\\${this.size}\\\\\"\n        >\n          \\${this.label}\n        </button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > functionProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <p  .f=\\${() => x}  .f1=\\${(x) => x}  .f2=\\${(\n      x\n    ) => {}}  .f3=\\${function () {\n      return x;\n    }}  .f4=\\${function (x) {\n      return x;\n    }}  .f5=\\${function (x) {\n      return;\n    }}  .f6=\\${function () {\n      return;\n    }}  .f7=\\${(a, b, c) => a + b + c} ></p>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > getterState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <p>\\${this.foo2}</p>\n          <p>\\${this.bar}</p>\n          <p>\\${this.baz(1)}</p>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > import types 1`] = `\n\"import { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() renderContentProps: any;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  render() {\n    return html\\`\n\n          <render-block\n          \\${spread(\n            state.getRenderContentProps(props.renderContentProps.block, 0)\n          )}\n        ></render-block>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > layerName 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-layer-name-component\\\\\")\nexport default class MyLayerNameComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.layer-name {\n  padding: 10px;\n}\n</style>\n          <section><div>Hello! I can run in React, Vue, Solid, or Liquid!</div></section>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"multiple-on-update\\\\\")\nexport default class MultipleOnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"multiple-on-update-with-deps\\\\\")\nexport default class MultipleOnUpdateWithDeps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = \\\\\"a\\\\\";\n  @state() b = \\\\\"b\\\\\";\n  @state() c = \\\\\"c\\\\\";\n  @state() d = \\\\\"d\\\\\";\n\n  updated() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  render() {\n    return html\\`\n\n          <input \\${spread(state.attrs)} \\${spread(props)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > nestedShow 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@customElement(\\\\\"nested-show\\\\\")\nexport default class NestedShow extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() conditionB: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\`\\${\n                  !this.conditionB\n                    ? html\\`\n        <div>if condition A and condition B</div>\n        \\`\n                    : html\\`\n        <div>else-condition-B</div>\n        \\`\n                }\\`\n              : html\\`\n      <div>else-condition-A</div>\n      \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"nested-styles\\\\\")\nexport default class NestedStyles extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\n          <div>Hello world</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n@customElement(\\\\\"my-normalized-layer-names-component\\\\\")\nexport default class MyNormalizedLayerNamesComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\n          <section>\n          <div>Emoji</div>\n          <div>Dashes</div>\n          <div>CamelCase</div>\n          <div>Special chars</div>\n          <div>Special chars with dashes</div>\n          <div>Single Number</div>\n          <div>Multiple Numbers</div>\n          <div>Chars with numbers at end</div>\n          <div>Chars with numbers at start</div>\n          <div>Numnbers separated by dash</div>\n          <div>Emoji</div>\n          <div data-name=\\\\\"1\\\\\">Number</div>\n        </section>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onEvent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-embed\\\\\")\nexport default class Embed extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @query('[ref=\\\\\"elem\\\\\"]')\n  elem!: HTMLElement;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  connectedCallback() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  render() {\n    return html\\`\n\n          <div ref=\\\\\"elem\\\\\"><div>Test</div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-init\\\\\")\nexport default class OnInit extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onInit 1`] = `\n\"export const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  name: string;\n};\n\n@customElement(\\\\\"on-init\\\\\")\nexport default class OnInit extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  @state() name = \\\\\"\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>Default name defined by parent \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-init-plain\\\\\")\nexport default class OnInitPlain extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onMount 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-comp\\\\\")\nexport default class Comp extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-comp\\\\\")\nexport default class Comp extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-update\\\\\")\nexport default class OnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  size: string;\n};\n\n@customElement(\\\\\"on-update-with-deps\\\\\")\nexport default class OnUpdateWithDeps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() size: any;\n\n  @state() a = \\\\\"a\\\\\";\n  @state() b = \\\\\"b\\\\\";\n\n  updated() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() children: any;\n  @property() type: any;\n\n  @state() name = \\\\\"Decadef20\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.children} \\${this.type} Hello! I can run in React, Vue, Solid, or\n          Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > propsInterface 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > propsType 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello! I can run in React, Vue, Solid, or Liquid! \\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"on-update\\\\\")\nexport default class OnUpdate extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  updated() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport \\\\\"./block-styles.ts\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport \\\\\"./render-component.ts\\\\\";\nimport \\\\\"./render-component.ts\\\\\";\nimport \\\\\"./render-repeated-block.ts\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"render-block\\\\\")\nexport default class RenderBlock extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() block: any;\n  @property() context: any;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  render() {\n    return html\\`\n\n          \\${\n            this.shouldWrap\n              ? html\\`\\${\n                  isEmptyHtmlElement(this.tag)\n                    ? html\\`<state.tag  \\${spread(state.attributes)}  \\${spread(\n                        state.actions\n                      )} ></state.tag>\\`\n                    : null\n                }\n       \\${\n         !isEmptyHtmlElement(this.tag) && this.repeatItemData\n           ? html\\`\\${this.repeatItemData?.map(\n               (data, index) =>\n                 html\\`<render-repeated-block  .key=\\${index}  .repeatContext=\\${data.context}  .block=\\${data.block} ></render-repeated-block>\\`\n             )}\\`\n           : null\n       }\n       \\${\n         !isEmptyHtmlElement(this.tag) && !this.repeatItemData\n           ? html\\`<state.tag  \\${spread(state.attributes)}  \\${spread(\n               state.actions\n             )} ><state.renderComponentTag  \\${spread(\n               state.renderComponentProps\n             )} ></state.renderComponentTag>\n        \\${this.childrenWithoutParentComponent?.map(\n          (child, index) =>\n            html\\`<render-block  .key=\\${\n              \\\\\"render-block-\\\\\" + child.id\n            }  .block=\\${child}  .context=\\${\n              this.childrenContext\n            } ></render-block>\\`\n        )}\n        \\${this.childrenWithoutParentComponent?.map(\n          (child, index) =>\n            html\\`<block-styles  .key=\\${\n              \\\\\"block-style-\\\\\" + child.id\n            }  .block=\\${child}  .context=\\${\n              this.childrenContext\n            } ></block-styles>\\`\n        )}</state.tag>\\`\n           : null\n       }\\`\n              : html\\`<state.renderComponentTag  \\${spread(\n                  state.renderComponentProps\n                )} ></state.renderComponentTag>\\`\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport \\\\\"@dummy/RenderBlocks.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\n@customElement(\\\\\"render-content\\\\\")\nexport default class RenderContent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() customComponents: any;\n  @property() content: any;\n\n  connectedCallback() {\n    sendComponentsToVisualEditor(this.customComponents);\n  }\n\n  updated() {\n    dispatchNewContentToVisualEditor(this.content);\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\n          <div  @click=\\${(event) =>\n            trackClick(this.content.id)} ><render-blocks  .blocks=\\${\n      this.content.blocks\n    } ></render-blocks></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-button\\\\\")\nexport default class Button extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() link: any;\n  @property() attributes: any;\n  @property() openLinkInNewTab: any;\n  @property() text: any;\n\n  render() {\n    return html\\`\n\n          <my-fragment >\\${\n            this.link\n              ? html\\`<a  \\${spread(props.attributes)}  .href=\\${\n                  this.link\n                }  .target=\\${this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined} >\\${\n                  this.text\n                }</a>\\`\n              : null\n          }\n        \\${\n          !this.link\n            ? html\\`<button  type=\\\\\"button\\\\\"  \\${spread(props.attributes)} >\\${\n                this.text\n              }</button>\\`\n            : null\n        }</my-fragment>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > rootShow 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\n@customElement(\\\\\"render-styles\\\\\")\nexport default class RenderStyles extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.foo === \\\\\"bar\\\\\"\n              ? html\\`\n      <div>Bar</div>\n      \\`\n              : html\\`\n      <div>Foo</div>\n      \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.name} \\${\n      this.name === \\\\\"Batman\\\\\"\n        ? html\\`<my-component\n        name=\\\\\"Bruce Wayne\\\\\"\n      ></my-component\n      >\\`\n        : null\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n  @property() children: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.name} \\${this.children} \\${\n      this.name === \\\\\"Batman\\\\\"\n        ? html\\`<my-component\n        name=\\\\\"Bruce\\\\\"\n        ><div>Wayne</div></my-component\n      >\\`\n        : null\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > setState 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"set-state\\\\\")\nexport default class SetState extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() n = [\\\\\"123\\\\\"];\n\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${(event) =>\n            this.someFn()} >Click me</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > showExpressions 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n@customElement(\\\\\"show-with-other-values\\\\\")\nexport default class ShowWithOtherValues extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() conditionB: any;\n  @property() conditionC: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.conditionA ? html\\`Content0\\` : html\\`ContentA\\`} \\${\n      this.conditionA ? html\\`ContentA\\` : null\n    } \\${this.conditionA ? html\\`\\` : html\\`ContentA\\`}\n          \\${this.conditionA ? html\\`ContentB\\` : html\\`\\${undefined}\\`} \\${\n      this.conditionA ? html\\`\\${undefined}\\` : html\\`ContentB\\`\n    } \\${this.conditionA ? html\\`ContentC\\` : null} \\${\n      this.conditionA ? html\\`\\` : html\\`ContentC\\`\n    } \\${this.conditionA ? html\\`ContentD\\` : null} \\${\n      this.conditionA ? html\\`\\` : html\\`ContentD\\`\n    }\n          \\${this.conditionA ? html\\`ContentE\\` : html\\`hello\\`} \\${\n      this.conditionA ? html\\`hello\\` : html\\`ContentE\\`\n    } \\${this.conditionA ? html\\`ContentF\\` : html\\`123\\`}\n          \\${this.conditionA ? html\\`123\\` : html\\`ContentF\\`} \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`4mb\\`\n        : html\\`\\${this.conditionB === \\\\\"Complete\\\\\" ? html\\`20mb\\` : html\\`9mb\\`}\\`\n    } \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`\\${this.conditionB === \\\\\"Complete\\\\\" ? html\\`20mb\\` : html\\`9mb\\`}\\`\n        : html\\`4mb\\`\n    } \\${\n      this.conditionA === \\\\\"Default\\\\\"\n        ? html\\`\\${\n            this.conditionB === \\\\\"Complete\\\\\"\n              ? html\\`\n          <div>complete</div>\n          \\`\n              : html\\`9mb\\`\n          }\\`\n        : html\\`\\${\n            this.conditionC === \\\\\"Complete\\\\\"\n              ? html\\`dff\\`\n              : html\\`\n          <div>complete else</div>\n          \\`\n          }\\`\n    }\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > showWithFor 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n@customElement(\\\\\"nested-show\\\\\")\nexport default class NestedShow extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n  @property() items: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\`\\${this.items?.map(\n                  (item, idx) => html\\`\n        <div .key=\\\\\"\\${idx}\\\\\">\\${item}</div>\n        \\`\n                )}\\`\n              : html\\`\n      <div>else-condition-A</div>\n      \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@customElement(\\\\\"show-with-other-values\\\\\")\nexport default class ShowWithOtherValues extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n\n  render() {\n    return html\\`\n\n          <div>\n          \\${this.conditionA ? html\\` ContentA \\` : null} \\${\n      this.conditionA\n        ? html\\`\n        ContentB \\`\n        : html\\`\\${undefined}\\`\n    } \\${this.conditionA ? html\\` ContentC \\` : null}\n          \\${this.conditionA ? html\\` ContentD \\` : null} \\${\n      this.conditionA\n        ? html\\`\n        ContentE \\`\n        : html\\`hello\\`\n    } \\${this.conditionA ? html\\` ContentF \\` : html\\`123\\`}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\n@customElement(\\\\\"show-root-text\\\\\")\nexport default class ShowRootText extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() conditionA: any;\n\n  render() {\n    return html\\`\n\n          \\${\n            this.conditionA\n              ? html\\` ContentA \\`\n              : html\\`\n      <div>else-condition-A</div>\n      \\`\n          }\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() id: any;\n  @property() foo: any;\n\n  updated() {\n    console.log(\\\\\"props.id changed\\\\\", this.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  padding: 10px;\n}\n</style>\n          <div>\\${this.id} \\${this.foo.bar.baz}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input \\${spread(attrs)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() nested: any;\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props.nested)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > spreadProps 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nconst spread = (properties) =>\n  directive((part) => {\n    for (const property in properties) {\n      const value = properties[attr];\n      part.element[property] = value;\n    }\n  });\n\n@customElement(\\\\\"my-basic-component\\\\\")\nexport default class MyBasicComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <input \\${spread(props)} />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > store-async-function 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"string-literal-store\\\\\")\nexport default class StringLiteralStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() foo = 123;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.foo}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\n          <div  .style=\\${{\n            width: \\\\\"100%\\\\\",\n          }} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"style-prop-class-and-css\\\\\")\nexport default class StylePropClassAndCss extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() attributes: any;\n\n  render() {\n    return html\\`\n          <style>.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\n          <div  class={props.attributes.class + ' div'}  .style=\\${this.attributes.style} ></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > subComponent 1`] = `\n\"import \\\\\"./foo-sub-component.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"sub-component\\\\\")\nexport default class SubComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <my-foo></my-foo>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > svgComponent 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"svg-component\\\\\")\nexport default class SvgComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <svg  fill=\\\\\"none\\\\\"  role=\\\\\"img\\\\\"  .viewBox=\\${\n            \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42\n          }  .width=\\${42}  .height=\\${42} ><defs ><filter  id=\\\\\"prefix__filter0_f\\\\\"  filterUnits=\\\\\"userSpaceOnUse\\\\\" ><feFlood  result=\\\\\"BackgroundImageFix\\\\\" ></feFlood>\n        <feBlend  in=\\\\\"SourceGraphic\\\\\"  in2=\\\\\"BackgroundImageFix\\\\\"  result=\\\\\"shape\\\\\" ></feBlend>\n        <feGaussianBlur  result=\\\\\"effect1_foregroundBlur\\\\\"  .stdDeviation=\\${7} ></feGaussianBlur></filter></defs></svg>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > typeDependency 1`] = `\n\"import type { Foo } from \\\\\"./foo-type\\\\\";\nimport \\\\\"./type-export.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\n@customElement(\\\\\"type-dependency\\\\\")\nexport default class TypeDependency extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() foo: any;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.foo}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-external-props\\\\\")\nexport default class TypeExternalProps extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @property() name: any;\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { FooStore } from \\\\\"./foo-store\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"type-external-store\\\\\")\nexport default class TypeExternalStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() _name = \\\\\"test\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this._name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n@customElement(\\\\\"type-getter-store\\\\\")\nexport default class TypeGetterStore extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"test\\\\\";\n\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div>Hello \\${this.name} !</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > use-style 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>button {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\n          <button type=\\\\\"button\\\\\">Button</button>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > useTarget 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"use-target-component\\\\\")\nexport default class UseTargetComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() lastName = \\\\\"bar\\\\\";\n  @state() foo = \\\\\"bar\\\\\";\n\n  get name() {\n    const prefix = \\\\\"li\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  connectedCallback() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return html\\`\n\n          <div>\\${this.name}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-basic-web-component\\\\\")\nexport default class MyBasicWebComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n          ><swiper-slide>Slide 1</swiper-slide>\n          <swiper-slide>Slide 2</swiper-slide>\n          <swiper-slide>Slide 3</swiper-slide></swiper-container\n        >\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > basic 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          <input @change=\\${(event) => (this.name = event.target.value)}\n          .value=\\${\n            this.name\n          } /> Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > bindGroup 1`] = `\n\"import { LitElement, html, css } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\n\n\n\n\n@customElement('my-component')\nexport default class MyComponent extends LitElement {\n\n    createRenderRoot() {\n      return this;\n    }\n\n\n\n\n\n\n\n\n\n    @state()  tortilla= \\\\\"Plain\\\\\"\n@state()  fillings= []\n\n\n\n\n\n\n\n  render() {\n    return html\\`\n\n          <div>\n          <input type=\\\\\"radio\\\\\" value=\\\\\"Plain\\\\\" .checked=\\${this.tortilla === 'Plain'}\n          @change=\\${(event) => this.tortilla = event.target.value} /> <input\n          type=\\\\\"radio\\\\\" value=\\\\\"Whole wheat\\\\\" .checked=\\${this.tortilla === 'Whole wheat'}\n          @change=\\${(event) => this.tortilla = event.target.value} /> <input\n          type=\\\\\"radio\\\\\" value=\\\\\"Spinach\\\\\" .checked=\\${this.tortilla === 'Spinach'}\n          @change=\\${(event) => this.tortilla = event.target.value} />\n          <br />\n          <br />\n          <input type=\\\\\"checkbox\\\\\" value=\\\\\"Rice\\\\\" .checked=\\${this.fillings === 'Rice'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Beans\\\\\" .checked=\\${this.fillings === 'Beans'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Cheese\\\\\" .checked=\\${this.fillings === 'Cheese'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Guac (extra)\\\\\" .checked=\\${this.fillings === 'Guac\n          (extra)'} @change=\\${(event) => this.fillings = event.target.value} />\n          <p>Tortilla: \\${this.tortilla}</p>\n          <p>Fillings: \\${this.fillings}</p>\n        </div>\n\n        \\`\n  }\n}\"\n`;\n\nexports[`Lit > svelte > Javascript Test > bindProperty 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() value = \\\\\"hello\\\\\";\n\n  render() {\n    return html\\`\n\n          <input .value=\\\\\"\\${this.value}\\\\\" />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > classDirective 1`] = `\n\"import { LitElement, html, css } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\n\n\n\n\n@customElement('my-component')\nexport default class MyComponent extends LitElement {\n\n    createRenderRoot() {\n      return this;\n    }\n\n\n\n\n\n\n\n  @property() disabled: any\n\n    @state()  focus= true\n\n\n\n\n\n\n\n  render() {\n    return html\\`\n\n          <input class={\\`form-input \\${props.disabled ? 'disabled' : ''} \\${state.focus ?\n    'focus' : ''}\\`} />\n\n        \\`\n  }\n}\"\n`;\n\nexports[`Lit > svelte > Javascript Test > context 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() activeTab = 0;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.activeTab}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > each 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  render() {\n    return html\\`\n\n          <ul>\n          \\${this.numbers?.map(\n            (num, index) => html\\`\n      <li>\\${num}</li>\n      \\`\n          )}\n        </ul>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${(a) => this.log(\\\\\"hi\\\\\")} >Log</button>\n        <button  @click=\\${(event) => this.log(event)} >Log</button>\n        <button  @click=\\${(event) => this.log(event)} >Log</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > html 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() html = \\\\\"<b>bold</b>\\\\\";\n\n  render() {\n    return html\\`\n\n          <div .innerHTML=\\\\\"\\${this.html}\\\\\"></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > ifElse 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() show = true;\n\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n\n  render() {\n    return html\\`\n\n          \\${\n            this.show\n              ? html\\`<button  @click=\\${(event) =>\n                  this.toggle(event)} > Hide </button>\\`\n              : html\\`<button  @click=\\${(event) =>\n                  this.toggle(event)} > Show </button>\\`\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > imports 1`] = `\n\"import \\\\\"./Button.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() disabled = false;\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-button type=\\\\\"button\\\\\" .disabled=\\\\\"\\${this.disabled}\\\\\"\n            ><my-slot></my-slot\n          ></my-button>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  updated() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > reactive 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <input .value=\\\\\"\\${this.name}\\\\\" />\n\n          Lowercase: \\${this.lowercaseName}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = 2;\n  @state() b = 5;\n  @state() result = null;\n\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  updated() {\n    this.calculateResult(this.a, this.b);\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <input type=\\\\\"number\\\\\" @change=\\${(event) =>\n            (this.a = event.target.value)}\n          .value=\\${this.a} /> <input type=\\\\\"number\\\\\" @change=\\${(event) =>\n      (this.b = event.target.value)} .value=\\${this.b} /> Result: \\${this.result}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > slots 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot>default</my-slot> <my-slot name=\\\\\"Test\\\\\"><div>default</div></my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > style 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>input {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\n          <input />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Javascript Test > textExpressions 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = 5;\n  @state() b = 12;\n\n  render() {\n    return html\\`\n\n          <div>\n          normal: \\${this.a + this.b}\n          <br />\n\n          conditional \\${this.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > basic 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  render() {\n    return html\\`\n\n          <div>\n          <input @change=\\${(event) => (this.name = event.target.value)}\n          .value=\\${\n            this.name\n          } /> Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > bindGroup 1`] = `\n\"import { LitElement, html, css } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\n\n\n\n\n@customElement('my-component')\nexport default class MyComponent extends LitElement {\n\n    createRenderRoot() {\n      return this;\n    }\n\n\n\n\n\n\n\n\n\n    @state()  tortilla= \\\\\"Plain\\\\\"\n@state()  fillings= []\n\n\n\n\n\n\n\n  render() {\n    return html\\`\n\n          <div>\n          <input type=\\\\\"radio\\\\\" value=\\\\\"Plain\\\\\" .checked=\\${this.tortilla === 'Plain'}\n          @change=\\${(event) => this.tortilla = event.target.value} /> <input\n          type=\\\\\"radio\\\\\" value=\\\\\"Whole wheat\\\\\" .checked=\\${this.tortilla === 'Whole wheat'}\n          @change=\\${(event) => this.tortilla = event.target.value} /> <input\n          type=\\\\\"radio\\\\\" value=\\\\\"Spinach\\\\\" .checked=\\${this.tortilla === 'Spinach'}\n          @change=\\${(event) => this.tortilla = event.target.value} />\n          <br />\n          <br />\n          <input type=\\\\\"checkbox\\\\\" value=\\\\\"Rice\\\\\" .checked=\\${this.fillings === 'Rice'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Beans\\\\\" .checked=\\${this.fillings === 'Beans'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Cheese\\\\\" .checked=\\${this.fillings === 'Cheese'}\n          @change=\\${(event) => this.fillings = event.target.value} /> <input\n          type=\\\\\"checkbox\\\\\" value=\\\\\"Guac (extra)\\\\\" .checked=\\${this.fillings === 'Guac\n          (extra)'} @change=\\${(event) => this.fillings = event.target.value} />\n          <p>Tortilla: \\${this.tortilla}</p>\n          <p>Fillings: \\${this.fillings}</p>\n        </div>\n\n        \\`\n  }\n}\"\n`;\n\nexports[`Lit > svelte > Typescript Test > bindProperty 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() value = \\\\\"hello\\\\\";\n\n  render() {\n    return html\\`\n\n          <input .value=\\\\\"\\${this.value}\\\\\" />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > classDirective 1`] = `\n\"import { LitElement, html, css } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\n\n\n\n\n@customElement('my-component')\nexport default class MyComponent extends LitElement {\n\n    createRenderRoot() {\n      return this;\n    }\n\n\n\n\n\n\n\n  @property() disabled: any\n\n    @state()  focus= true\n\n\n\n\n\n\n\n  render() {\n    return html\\`\n\n          <input class={\\`form-input \\${props.disabled ? 'disabled' : ''} \\${state.focus ?\n    'focus' : ''}\\`} />\n\n        \\`\n  }\n}\"\n`;\n\nexports[`Lit > svelte > Typescript Test > context 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() activeTab = 0;\n\n  render() {\n    return html\\`\n\n          <div>\\${this.activeTab}</div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > each 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  render() {\n    return html\\`\n\n          <ul>\n          \\${this.numbers?.map(\n            (num, index) => html\\`\n      <li>\\${num}</li>\n      \\`\n          )}\n        </ul>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  render() {\n    return html\\`\n\n          <div ><button  @click=\\${(a) => this.log(\\\\\"hi\\\\\")} >Log</button>\n        <button  @click=\\${(event) => this.log(event)} >Log</button>\n        <button  @click=\\${(event) => this.log(event)} >Log</button></div>\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > html 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() html = \\\\\"<b>bold</b>\\\\\";\n\n  render() {\n    return html\\`\n\n          <div .innerHTML=\\\\\"\\${this.html}\\\\\"></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > ifElse 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() show = true;\n\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n\n  render() {\n    return html\\`\n\n          \\${\n            this.show\n              ? html\\`<button  @click=\\${(event) =>\n                  this.toggle(event)} > Hide </button>\\`\n              : html\\`<button  @click=\\${(event) =>\n                  this.toggle(event)} > Show </button>\\`\n          }\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > imports 1`] = `\n\"import \\\\\"./Button.ts\\\\\";\n\nimport { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() disabled = false;\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-button type=\\\\\"button\\\\\" .disabled=\\\\\"\\${this.disabled}\\\\\"\n            ><my-slot></my-slot\n          ></my-button>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  connectedCallback() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  updated() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  render() {\n    return html\\`\n\n          <div></div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > reactive 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() name = \\\\\"Steve\\\\\";\n\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <input .value=\\\\\"\\${this.name}\\\\\" />\n\n          Lowercase: \\${this.lowercaseName}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = 2;\n  @state() b = 5;\n  @state() result = null;\n\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  updated() {\n    this.calculateResult(this.a, this.b);\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <input type=\\\\\"number\\\\\" @change=\\${(event) =>\n            (this.a = event.target.value)}\n          .value=\\${this.a} /> <input type=\\\\\"number\\\\\" @change=\\${(event) =>\n      (this.b = event.target.value)} .value=\\${this.b} /> Result: \\${this.result}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > slots 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n\n          <div>\n          <my-slot>default</my-slot> <my-slot name=\\\\\"Test\\\\\"><div>default</div></my-slot>\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > style 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  render() {\n    return html\\`\n          <style>input {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\n          <input />\n\n        \\`;\n  }\n}\n\"\n`;\n\nexports[`Lit > svelte > Typescript Test > textExpressions 1`] = `\n\"import { LitElement, html, css } from \\\\\"lit\\\\\";\nimport { customElement, property, state, query } from \\\\\"lit/decorators.js\\\\\";\n\n@customElement(\\\\\"my-component\\\\\")\nexport default class MyComponent extends LitElement {\n  createRenderRoot() {\n    return this;\n  }\n\n  @state() a = 5;\n  @state() b = 12;\n\n  render() {\n    return html\\`\n\n          <div>\n          normal: \\${this.a + this.b}\n          <br />\n\n          conditional \\${this.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n        </div>\n\n        \\`;\n  }\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/marko.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Marko > formatting 1`] = `\n\"\n      <div>\n        <if _=\\\\\"input.foo === 'bar'\\\\\">\n          Hello\n        </if>\n        <for |items| of=\\\\\"(some.long ? expression : yo)\\\\\">\n          World\n        </for>\n        <input \n          placeholder=\\\\\"Hello world...\\\\\"\n          value=\\\\\"(this.state.name)\\\\\" \n          on-click=\\\\\"(event => {&#10;            console.log('hello', &quot;world&quot;)&#10;          })\\\\\"\n          on-input=\\\\\"(event => this.state.name = event.target.value)\\\\\" /> \n          \n          Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\"\n`;\n\nexports[`Marko > formatting 2`] = `\n\"\n      <div>\n        <if(input.foo === 'bar')>\n          Hello\n        </if>\n        <for|items| of=(some.long ? expression : yo)>\n          World\n        </for>\n        <input \n          placeholder=\\\\\"Hello world...\\\\\"\n          value=(this.state.name) \n          on-click=(event => {\n            console.log('hello', \\\\\"world\\\\\")\n          })\n          on-input=(event => this.state.name = event.target.value) /> \n          \n          Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\"\n`;\n\nexports[`Marko > formatting 3`] = `\n\"<div>\n  <if(input.foo === 'bar')> Hello </if>\n  <for|items| of=(some.long ? expression : yo)> World </for>\n  <input\n    placeholder=\\\\\"Hello world...\\\\\"\n    value=(this.state.name)\n    on-click=(event => {\n            console.log('hello', \\\\\"world\\\\\")\n          })\n    on-input=(event => this.state.name = event.target.value)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Advanced 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n}\n\n<main>\n  <for|person,i| of=(state.names)>\n    <div>\\${i} : \\${person}</div>\n  </for>\n  <for|person| of=(state.names)>\n    <span>\\${person}</span>\n  </for>\n  <for|item| of=(state.names)>\n    <br />\n  </for>\n  <for|_,ee| of=(Array.from({\n  length: 10\n}))>\n    <pre>\\${ee}</pre>\n  </for>\n  <for|item| of=(Array.from({\n  length: 10\n}))>\n    <p>\\${index}</p>\n  </for>\n  <for|person,index| of=(state.names)>\n    <span>\\${person} \\${index}</span>\n  </for>\n  <for|person,count| of=(Array.from({\n  length: 10\n}))>\n    <span>\\${person} \\${count}</span>\n  </for>\n  <for|person,i| of=(state.names)>\n    <span>\\${person} \\${i}</span>\n  </for>\n  <for|person,index| of=(Array.from({\n  length: 10\n}))>\n    <span>\\${person} \\${index}</span>\n  </for>\n</main>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > AdvancedRef 1`] = `\n\"class {\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.state.name.toLowerCase();\n  };\n\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get inputRef() {\n    return this.getEl(\\\\\"inputRef\\\\\");\n  }\n  get inputNoArgRef() {\n    return this.getEl(\\\\\"inputNoArgRef\\\\\");\n  }\n\n  onRender() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n}\n\nstyle {\n  .input-a4850acc {\n    color: red;\n  }\n}\n<div>\n  <if(input.showInput)>\n    <input\n      class=\\\\\"input-a4850acc\\\\\"\n      key=\\\\\"inputRef\\\\\"\n      value=(state.name)\n      on-blur((event) => component.onBlur())\n      on-input((event) => state.name = event.target.value)\n    />\n    <label for=\\\\\"cars\\\\\" key=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select></if>\n\n  Hello \\${component.lowerCaseName()} ! I can run in React, Qwik, Vue, Solid, or\n  Web Component!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic 1`] = `\n\"export const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nclass {\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\", age: 1, sports: [\\\\\"\\\\\"] };\n  }\n}\n\nstyle {\n  .div-36710884 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-36710884\\\\\">\n  <input\n    value=(DEFAULT_VALUES.name || state.name)\n    on-input((myEvent) => state.name = myEvent.target.value)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic 2`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n}\n\n<div>\n  <for|person| of=(state.names)>\n    <if(person === state.name)>\n      <input\n        value=(state.name)\n        on-input((event) => {\n  state.name = event.target.value + ' and ' + person;\n})\n      />\n\n      Hello \\${person} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n      Liquid!\n    </if>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nclass {\n  onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n}\n\n<div>\n  \\${myService.method('hello') + state.name} Hello! I can run in React, Vue,\n  Solid, or Liquid!\n\n  <input on-input((event) => component.onChange()) />\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n\n  onMount() {\n    this.state.name = \\\\\"PatrickJS onMount\\\\\" + this.input.bye;\n  }\n}\n\n<div>Hello \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic Outputs 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    this.input.onMessageChange(this.state.name);\n    this.input.onEvent(this.input.message);\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    this.input.onMessageChange(this.state.name);\n    this.input.onEvent(this.input.message);\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicAttribute 1`] = `\n\"class {}\n\n<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck=(true) />\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nclass {}\n\n<div>\n  <if(input.children)> \\${input.children} \\${input.type}</if>\n\n  <MyBooleanAttributeComponent toggle=(true)></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent toggle=(true)></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent list=(null)></MyBooleanAttributeComponent>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nclass {\n  log = function log(message) {\n    console.log(message);\n  };\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\", dev: \\\\\"PatrickJS\\\\\" };\n  }\n}\n\n<div>\n  <MyBasicComponent id=(state.dev)></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi=(state.name)\n      bye=(state.dev)\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      on-message-change=((name) => state.name = name)\n      on-event((event) => component.log('Test'))\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicFor 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n\n  onMount() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n}\n\n<div>\n  <for|person| of=(state.names)>\n    <input\n      value=(state.name)\n      on-input((event) => {\n  state.name = event.target.value + ' and ' + person;\n})\n    />\n\n    Hello \\${person} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid!\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicRef 1`] = `\n\"class {\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.state.name.toLowerCase();\n  };\n\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get inputRef() {\n    return this.getEl(\\\\\"inputRef\\\\\");\n  }\n  get inputNoArgRef() {\n    return this.getEl(\\\\\"inputNoArgRef\\\\\");\n  }\n}\n\nstyle {\n  .input-6a578c15 {\n    color: red;\n  }\n}\n<div>\n  <if(input.showInput)>\n    <input\n      class=\\\\\"input-6a578c15\\\\\"\n      key=\\\\\"inputRef\\\\\"\n      value=(state.name)\n      on-blur((event) => component.onBlur())\n      on-input((event) => state.name = event.target.value)\n    />\n    <label for=\\\\\"cars\\\\\" key=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select></if>\n\n  Hello \\${component.lowerCaseName()} ! I can run in React, Qwik, Vue, Solid, or\n  Web Component!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"class {\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n}\n\n<div>\n  <button on-click(async (evt) => await component.handlerClick(evt))>\n    Click\n  </button>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"export function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nclass {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n\n  onRender() {\n    this.prevCount = this.state.count;\n  }\n}\n\n<div>\n  <h1>Now: \\${state.count} , before: \\${this.prevCount}</h1>\n  <button on-click((event) => state.count += 1)>Increment</button>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Button 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button type=\\\\\"button\\\\\" ...(props.attributes)>\\${input.text}</button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Columns 1`] = `\n\"class {\n  getColumns() {\n    return this.input.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.input.space === \\\\\"number\\\\\" ? this.input.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\nstyle {\n  .div-2411fb2a {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div-2411fb2a {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div-2411fb2a {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2411fb2a-2 {\n    flex-grow: 1;\n  }\n}\n<div class=\\\\\"builder-columns div-2411fb2a\\\\\">\n  <for|column,index| of=(input.columns)>\n    <div class=\\\\\"builder-column div-2411fb2a-2\\\\\">\\${column.content} \\${index}</div>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"class {}\n\n<div>\n  <slot name=(input.slotTesting)></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"class {\n  get cls() {\n    return this.input.slotContent && this.input.children\n      ? \\`\\${this.state.name}-content\\`\n      : \\\\\"\\\\\";\n  }\n  show() {\n    this.input.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  onCreate(input) {\n    this.state = { name: \\\\\"king\\\\\", showContent: false };\n  }\n}\n\n<if(input.slotReference)>\n  <div\n    name=(input.slotContent ? 'name1' : 'name2')\n    title=(input.slotContent ? 'title1' : 'title2')  ...(props.attributes)\n    on-click((event) => component.show())\n    class=(component.cls)\n  >\n    <if(state.showContent && input.slotContent)>\n      <slot name=\\\\\"content\\\\\">\\${input.content}</slot></if>\n\n    <div><hr /></div>\n    <div>\\${input.children}</div>\n  </div></if>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > CustomCode 1`] = `\n\"class {\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  onCreate(input) {\n    this.state = { scriptsInserted: [], scriptsRun: [] };\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.findAndRunScripts();\n  }\n}\n\n<div\n  key=\\\\\"elem\\\\\"\n  class=('builder-custom-code' + (input.replaceNodes ? ' replace-nodes' : ''))\n>\n  $!{input.code}\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Embed 1`] = `\n\"class {\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  onCreate(input) {\n    this.state = { scriptsInserted: [], scriptsRun: [] };\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.findAndRunScripts();\n  }\n}\n\n<div\n  key=\\\\\"elem\\\\\"\n  class=('builder-custom-code' + (input.replaceNodes ? ' replace-nodes' : ''))\n>\n  $!{input.code}\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Form 1`] = `\n\"import { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nclass {\n  get submissionState() {\n    return (\n      (Builder.isEditing && this.input.previewState) || this.state.formState\n    );\n  }\n  onSubmit(event) {\n    const sendWithJs =\n      this.input.sendWithJs || this.input.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.input.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.input.action || this.input.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.input.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.input.contentType;\n\n      if (this.input.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.input.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.state.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.input.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.input.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.input.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.input.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.input.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.input.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.input.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.state.formErrorMessage = message;\n            }\n          }\n\n          this.state.responseData = body;\n          this.state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.input.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.input.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.input.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.input.successUrl;\n                }\n              } else {\n                location.href = this.input.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.state.responseData = err;\n          this.state.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  onCreate(input) {\n    this.state = {\n      formState: \\\\\"unsubmitted\\\\\",\n      responseData: null,\n      formErrorMessage: \\\\\"\\\\\",\n    };\n  }\n\n  get formRef() {\n    return this.getEl(\\\\\"formRef\\\\\");\n  }\n}\n\nstyle {\n  .pre-b80a56e2 {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n}\n<form\n  validate=(input.validate)\n  key=\\\\\"formRef\\\\\"\n  action=(!input.sendWithJs && input.action)\n  method=(input.method)\n  name=(input.name)\n  on-submit((event) => component.onSubmit(event))  ...(props.attributes)\n>\n  <if(input.builderBlock && input.builderBlock.children)>\n    <for|block,index| of=(input.builderBlock?.children)>\n      <BuilderBlockComponent\n        key=(block.id)\n        block=(block)\n        index=(index)\n      ></BuilderBlockComponent> </for></if>\n\n  <if(component.submissionState === 'error')>\n    <BuilderBlocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      blocks=(input.errorMessage)\n    ></BuilderBlocks></if>\n\n  <if(component.submissionState === 'sending')>\n    <BuilderBlocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      blocks=(input.sendingMessage)\n    ></BuilderBlocks></if>\n\n  <if(component.submissionState === 'error' && state.responseData)>\n    <pre class=\\\\\"builder-form-error-text pre-b80a56e2\\\\\">\n\\${JSON.stringify(state.responseData, null, 2)}</pre>\n  </if>\n\n  <if(component.submissionState === 'success')>\n    <BuilderBlocks\n      dataPath=\\\\\"successMessage\\\\\"\n      blocks=(input.successMessage)\n    ></BuilderBlocks></if>\n</form>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Image 1`] = `\n\"class {\n  setLoaded() {\n    this.state.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.input.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  onCreate(input) {\n    this.state = { scrollListener: null, imageLoaded: false, load: false };\n  }\n\n  get pictureRef() {\n    return this.getEl(\\\\\"pictureRef\\\\\");\n  }\n\n  onMount() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.state.load = true;\n            this.state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  onDestroy() {\n    if (this.state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.state.scrollListener);\n    }\n  }\n}\n\nstyle {\n  .img-3747ab04 {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n}\n<div>\n  <picture key=\\\\\"pictureRef\\\\\"\n    ><if(!component.useLazyLoading() || state.load)>\n      <img\n        alt=(input.altText)\n        aria-role=(input.altText ? 'presentation' : undefined)\n        class=('builder-image' + (input._class ? ' ' + input._class : '') + ' img-3747ab04')\n        src=(input.image)\n        on-load((event) => component.setLoaded())\n        srcset=(input.srcset)\n        sizes=(input.sizes)\n    /></if>\n\n    <source srcset=(input.srcset)\n  /></picture>\n  \\${input.children}\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Image State 1`] = `\n\"class {\n  onCreate() {\n    this.state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n  }\n}\n\n<div>\n  <for|item,itemIndex| of=(state.images)>\n    <img class=\\\\\"custom-class\\\\\" src=(item) key=(itemIndex) />\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<img\n  style=({\n  objectFit: input.backgroundSize || 'cover',\n  objectPosition: input.backgroundPosition || 'center'\n})  ...(props.attributes)\n  key=(Builder.isEditing && input.imgSrc || 'default-key')\n  alt=(input.altText)\n  src=(input.imgSrc)\n/>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<input\n  ...(props.attributes)\n  key=(Builder.isEditing && input.defaultValue ? input.defaultValue : 'default-key')\n  placeholder=(input.placeholder)\n  type=(input.type)\n  name=(input.name)\n  value=(input.value)\n  defaultValue=(input.defaultValue)\n  required=(input.required)\n  on-input((event) => input.onChange?.(event.target.value))\n/>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nclass {\n  handleChange(value) {\n    console.log(value);\n  }\n}\n\n<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  on-change((value) => component.handleChange(value))\n></FormInputComponent>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > NestedStore 1`] = `\n\"class {\n  onCreate() {\n    this.state = { _id: \\\\\"abc\\\\\", _messageId: this.state._id + \\\\\"-message\\\\\" };\n  }\n}\n\n<div id=(state._id)>\n  Test\n\n  <p id=(state._messageId)>Message</p>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > RawText 1`] = `\n\"class {}\n\n<span class=(input.attributes?.class || input.attributes?.className)\n  >$!{input.text || ''}</span>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Section 1`] = `\n\"class {}\n\n<section\n  ...(props.attributes)\n  style=(input.maxWidth && typeof input.maxWidth === 'number' ? {\n  maxWidth: input.maxWidth\n} : undefined)\n>\n  \\${input.children}\n</section>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Section 2`] = `\n\"class {\n  onCreate(input) {\n    this.state = { max: 42, items: [42] };\n  }\n}\n\n<if(state.max)>\n  <for|item| of=(state.items)>\n    <section\n      ...(props.attributes)\n      style=({\n  maxWidth: item + state.max\n})\n    >\n      \\${input.children}\n    </section>\n  </for></if>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<select\n  ...(props.attributes)\n  value=(input.value)\n  key=(Builder.isEditing && input.defaultValue ? input.defaultValue : 'default-key')\n  defaultValue=(input.defaultValue)\n  name=(input.name)\n>\n  <for|option,index| of=(input.options)>\n    <option value=(option.value) data-index=(index)>\n      \\${option.name || option.value}\n    </option>\n  </for>\n</select>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > SlotDefault 1`] = `\n\"class {}\n\n<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nclass {}\n\n<div>\n  <ContentSlotCode><slot testing=(<div>Hello</div>)></slot></ContentSlotCode>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nclass {}\n\n<div><ContentSlotCode slotTesting=(<div>Hello</div>)></ContentSlotCode></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > SlotNamed 1`] = `\n\"class {}\n\n<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nclass {\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onCreate(input) {\n    this.state = { reviews: [], name: \\\\\"test\\\\\", showReviewPrompt: false };\n  }\n\n  onMount() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.input.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.input.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.state.reviews = data.data;\n      });\n  }\n}\n\nstyle {\n  .input-4b8e7e0e {\n    display: block;\n  }\n  .textarea-4b8e7e0e {\n    display: block;\n  }\n  .button-4b8e7e0e {\n    display: block;\n  }\n  .review-4b8e7e0e {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img-4b8e7e0e {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n}\n<div data-user=(state.name)>\n  <button on-click((event) => state.showReviewPrompt = true)>\n    Write a review\n  </button>\n  <if(state.showReviewPrompt || 'asdf')>\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input-4b8e7e0e\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea-4b8e7e0e\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button-4b8e7e0e\\\\\"\n      on-click((ev) => {\n  ev.preventDefault();\n  state.showReviewPrompt = false;\n})\n    >\n      Submit\n    </button></if>\n\n  <for|review,index| of=(state.reviews)>\n    <div class=\\\\\"review-4b8e7e0e\\\\\" key=(review.id)>\n      <img class=\\\\\"img-4b8e7e0e\\\\\" src=(review.avatar) />\n      <div class=(state.showReviewPrompt ? 'bg-primary' : 'bg-secondary')>\n        <div>N: \\${index}</div>\n        <div>\\${review.author}</div>\n        <div>\\${review.reviewMessage}</div>\n      </div>\n    </div>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > StoreComment 1`] = `\n\"class {\n  bar() {}\n\n  onCreate() {\n    this.state = { foo: true };\n  }\n}\n\n\\${state.foo}\"\n`;\n\nexports[`Marko > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"class {\n  foo(errors) {\n    return errors;\n  }\n\n  onCreate() {\n    this.state = { errors: {} };\n  }\n}\n\n\\${component.foo(state.errors)}\"\n`;\n\nexports[`Marko > jsx > Javascript Test > StoreWithState 1`] = `\n\"class {\n  bar() {\n    return this.state.foo;\n  }\n\n  onCreate() {\n    this.state = { foo: false };\n  }\n}\n\n\\${component.bar()}\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Submit 1`] = `\n\"class {}\n\n<button type=\\\\\"submit\\\\\" ...(props.attributes)>\\${input.text}</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {\n  onCreate(input) {\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n  }\n}\n\n<div\n  contenteditable=(allowEditingText || undefined)\n  data-name=({\n  test: state.name || 'any name'\n})\n>\n  $!{input.text || input.content || state.name || '\n  <p class=\\\\\"text-lg\\\\\">my name</p>\n  '}\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Textarea 1`] = `\n\"class {}\n\n<textarea\n  ...(props.attributes)\n  placeholder=(input.placeholder)\n  name=(input.name)\n  value=(input.value)\n  defaultValue=(input.defaultValue)\n></textarea>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"class {\n  _do(id) {\n    this.state._active = !!id;\n\n    if (this.input.onChange) {\n      this.input.onChange(this.state._active);\n    }\n  }\n\n  onCreate(input) {\n    this.state = { _id: \\\\\"abc\\\\\", _active: false };\n  }\n\n  onRender() {\n    if (this._do) {\n      this._do(this.state._id);\n    }\n  }\n}\n\n<div>Test</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > Video 1`] = `\n\"class {}\n\n<video\n  preload=\\\\\"none\\\\\"\n  ...(props.attributes)\n  style=({\n  width: '100%',\n  height: '100%',\n  ...input.attributes?.style,\n  objectFit: input.fit,\n  objectPosition: input.position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n})\n  key=(input.video || 'no-src')\n  poster=(input.posterImage)\n  autoplay=(input.autoPlay)\n  muted=(input.muted)\n  controls=(input.controls)\n  loop=(input.loop)\n></video>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"class {\n  setName(value) {\n    this.state.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.state.name = value;\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"steve\\\\\" };\n  }\n}\n\n<div>Hello \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicForFragment 1`] = `\n\"class {\n  onCreate() {\n    this.state = { id: \\\\\"xyz\\\\\" };\n  }\n}\n\n<div>\n  <for|option| of=(['a', 'b', 'c'])>\n    <div>\\${option}</div>\n  </for>\n  <for|option| of=(['a', 'b', 'c'])>\n    <div>\\${option}</div>\n  </for>\n  <select>\n    <for|option| of=(['d', 'e', 'f'])>\n      <option key=(\\`\\${state.id}-\\${option}\\`) value=(option)>\n        \\${option}\n      </option>\n    </for>\n  </select>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"class {\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  onCreate(input) {\n    this.state = { name: \\\\\"VincentW\\\\\", TagName: \\\\\"div\\\\\", tag: \\\\\"span\\\\\" };\n  }\n}\n\n<state.TagNameGetter>\n  Hello\n  <state.tag>\\${state.name}</state.tag>\n  <for|action| of=(input.actions)>\n    <state.TagName\n      ><action.icon></action.icon> <span>\\${action.text}</span></state.TagName\n    >\n  </for></state.TagNameGetter\n>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicForwardRef 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get propsInputRef() {\n    return this.getEl(\\\\\"propsInputRef\\\\\");\n  }\n}\n\nstyle {\n  .input-24f3ca54 {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-24f3ca54\\\\\"\n    key=\\\\\"propsInputRef\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n  />\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get propsInputRef() {\n    return this.getEl(\\\\\"propsInputRef\\\\\");\n  }\n}\n\nstyle {\n  .input-bda1f37c {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-bda1f37c\\\\\"\n    key=\\\\\"propsInputRef\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n  />\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onRender() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n}\n\n<div>Hello! \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          class {\n  get buttonRef() {\n    return this.getEl(\\\\\"buttonRef\\\\\");\n  }\n\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n}\n\n<button key=\\\\\"buttonRef\\\\\">Attribute Passing</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          class {\n  get buttonRef() {\n    return this.getEl(\\\\\"buttonRef\\\\\");\n  }\n}\n\n<div><button key=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.marko\\\\\";\n\nclass {}\n\nstyle {\n  .div-6ef0b03e {\n    padding: 10px;\n  }\n}\n<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > class + css 1`] = `\n\"class {}\n\nstyle {\n  .div-defca3e2 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-defca3e2\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > className + css 1`] = `\n\"class {}\n\nstyle {\n  .div-defca3e2 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-defca3e2\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > className 1`] = `\n\"class {\n  onCreate() {\n    this.state = { bindings: \\\\\"a binding\\\\\" };\n  }\n}\n\n<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class=(state.bindings)>With binding</div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > classState 1`] = `\n\"class {\n  onCreate() {\n    this.state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n  }\n}\n\nstyle {\n  .div-0a9f895c {\n    padding: 10px;\n  }\n}\n<div class=(state.classState + ' div-0a9f895c') style=(state.styleState)>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > classnameProps 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          class {}\n\n<div class=(input.className)>\n  \\${input.children} \\${input.type} Hello! I can run in React, Vue, Solid, or\n  Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > complexMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          class {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nclass {}\n\n\\${foo.value}\"\n`;\n\nexports[`Marko > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nclass {}\n\n\\${foo.value}\n<div>other</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nclass {}\n\n<div>setting context</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > defaultProps 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button\n      type=\\\\\"button\\\\\"\n      ...(props.attributes)\n      on-click((event) => input.onClick())\n    >\n      \\${input.buttonText}\n    </button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button\n      type=\\\\\"button\\\\\"\n      ...(props.attributes)\n      on-click((event) => input.onClick(event))\n    >\n      \\${input.text}\n    </button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nclass {}\n\n<div>Hello \\${input.name || DEFAULT_VALUES.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\nstyle {\n  .input-4aba533e {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-4aba533e\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n    on-input((event) => state.name = event.target.value)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > eventProps 1`] = `\n\"class {\n  handleClick() {\n    if (this.input.onGetVoid) {\n      this.input.onGetVoid();\n    }\n\n    if (this.input.onEnter) {\n      console.log(this.input.onEnter());\n    }\n\n    if (this.input.onPass) {\n      this.input.onPass(\\\\\"test\\\\\");\n    }\n  }\n}\n\n<button on-click((event) => component.handleClick())>Test</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > expressionState 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = {\n      refToUse: !(input.componentRef instanceof Function)\n        ? input.componentRef\n        : null,\n    };\n  }\n}\n\n<div>\\${state.refToUse}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > figmaMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          class {}\n\n<button\n  data-icon=(input.icon)\n  data-disabled=(input.interactiveState)\n  data-width=(input.width)\n  data-size=(input.size)\n>\n  \\${input.label}\n</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > functionProps 1`] = `\n\"class {}\n\n<p\n  f=(() => x)\n  f1=(x => x)\n  f2=(x => {})\n  f3=(function () {\n  return x;\n})\n  f4=(function (x) {\n  return x;\n})\n  f5=(function (x) {\n  return;\n})\n  f6=(function () {\n  return;\n})\n  f7=((a, b, c) => a + b + c)\n></p>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > getterState 1`] = `\n\"class {\n  get foo2() {\n    return this.input.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n}\n\n<div>\n  <p>\\${component.foo2}</p>\n  <p>\\${component.bar}</p>\n  <p>\\${component.baz(1)}</p>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > import types 1`] = `\n\"import RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nclass {\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n<RenderBlock\n  ...(state.getRenderContentProps(props.renderContentProps.block,\n  0))\n></RenderBlock>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > layerName 1`] = `\n\"class {}\n\nstyle {\n  .layer-name-27ceea4e {\n    padding: 10px;\n  }\n}\n<section>\n  <div class=\\\\\"layer-name-27ceea4e\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"class {\n  onCreate() {\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n  }\n\n  onRender() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.state.a, this.state.b);\n\n    if (this.state.a === \\\\\"a\\\\\") {\n      this.state.a = \\\\\"b\\\\\";\n    }\n\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.state.c, this.state.d);\n\n    if (this.state.a === \\\\\"a\\\\\") {\n      this.state.a = \\\\\"b\\\\\";\n    }\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > multipleSpreads 1`] = `\n\"class {\n  onCreate() {\n    this.state = {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n  }\n}\n\n<input ...(state.attrs) ...(props) />\"\n`;\n\nexports[`Marko > jsx > Javascript Test > nestedShow 1`] = `\n\"class {}\n\n<if(input.conditionA)>\n  <if(!input.conditionB)> <div>if condition A and condition B</div></if>\n  <else><div>else-condition-B</div></else></if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > nestedStyles 1`] = `\n\"class {}\n\nstyle {\n  .div-7671878a {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div-7671878a {\n      display: block;\n    }\n  }\n  .div-7671878a:hover {\n    display: flex;\n  }\n  .div-7671878a:active {\n    display: inline;\n  }\n  .div-7671878a .nested-selector {\n    display: grid;\n  }\n  .div-7671878a .nested-selector:hover {\n    display: block;\n  }\n  .div-7671878a.nested-selector:active {\n    display: inline-block;\n  }\n}\n<div class=\\\\\"div-7671878a\\\\\">Hello world</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"class {}\n\nstyle {\n  .css-0-31098cf6 {\n    margin: 10px;\n  }\n  .css-123-31098cf6 {\n    padding: 10px;\n  }\n  .name-123-31098cf6 {\n    border: 1px solid;\n  }\n  .name-31098cf6 {\n    color: red;\n  }\n  .name-789-31098cf6 {\n    background: blue;\n  }\n  .div-31098cf6 {\n    background: blue;\n  }\n}\n<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0-31098cf6\\\\\">Single Number</div>\n  <div class=\\\\\"css-123-31098cf6\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123-31098cf6\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name-31098cf6\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789-31098cf6\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div-31098cf6\\\\\">Number</div>\n</section>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onEvent 1`] = `\n\"class {\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n}\n\n<div class=\\\\\"builder-embed\\\\\" key=\\\\\"elem\\\\\"><div>Test</div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onInit & onMount 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onInit 1`] = `\n\"export const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nclass {\n  onCreate(input) {\n    this.state = { name: \\\\\"\\\\\" };\n  }\n}\n\n<div>Default name defined by parent \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onInitPlain 1`] = `\n\"class {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onMount 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  onDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onMountMultiple 1`] = `\n\"class {\n  onMount() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n  }\n\n  onRender() {\n    console.log(\n      \\\\\"Runs when a, b or size changes\\\\\",\n      this.state.a,\n      this.state.b,\n      this.input.size\n    );\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nclass {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > preserveTyping 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > propsDestructure 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n  }\n}\n\n<div>\n  \\${input.children} \\${input.type} Hello! I can run in React, Vue, Solid, or\n  Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > propsInterface 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > propsType 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"class {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  onRender() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.marko\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.marko\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.marko\\\\\";\n\nclass {\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.input.block,\n      state: this.input.context.state,\n      context: this.input.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.input.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.input.block\n      : getProcessedBlock({\n          block: this.input.block,\n          state: this.input.context.state,\n          context: this.input.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.input.context.state,\n      context: this.input.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.input.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.input.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.input.context.state,\n      context: this.input.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.input.context,\n        state: {\n          ...this.input.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.input.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.input.context.apiKey,\n      state: this.input.context.state,\n      content: this.input.context.content,\n      context: this.input.context.context,\n      registeredComponents: this.input.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n}\n\n<if(component.shouldWrap)>\n  <if(isEmptyHtmlElement(component.tag))>\n    <state.tag ...(state.attributes) ...(state.actions)></state.tag\n  ></if>\n\n  <if(!isEmptyHtmlElement(component.tag) && component.repeatItemData)>\n    <for|data,index| of=(component.repeatItemData)>\n      <RenderRepeatedBlock\n        key=(index)\n        repeatContext=(data.context)\n        block=(data.block)\n      ></RenderRepeatedBlock> </for></if>\n\n  <if(!isEmptyHtmlElement(component.tag) && !component.repeatItemData)>\n    <state.tag ...(state.attributes) ...(state.actions)\n      ><state.renderComponentTag\n        ...(state.renderComponentProps)\n      ></state.renderComponentTag>\n      <for|child| of=(component.childrenWithoutParentComponent)>\n        <RenderBlock\n          key=('render-block-' + child.id)\n          block=(child)\n          context=(component.childrenContext)\n        ></RenderBlock>\n      </for>\n      <for|child| of=(component.childrenWithoutParentComponent)>\n        <BlockStyles\n          key=('block-style-' + child.id)\n          block=(child)\n          context=(component.childrenContext)\n        ></BlockStyles> </for></state.tag\n  ></if>\n</if>\n<else\n  ><state.renderComponentTag\n    ...(state.renderComponentProps)\n  ></state.renderComponentTag\n></else>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.marko\\\\\";\n\nclass {\n  onMount() {\n    sendComponentsToVisualEditor(this.input.customComponents);\n  }\n\n  onRender() {\n    dispatchNewContentToVisualEditor(this.input.content);\n  }\n}\n\nstyle {\n  .div-550150cc {\n    display: flex;\n    flex-direction: columns;\n  }\n}\n<div class=\\\\\"div-550150cc\\\\\" on-click((event) => trackClick(input.content.id))>\n  <RenderBlocks blocks=(input.content.blocks)></RenderBlocks>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"class {}\n\n<if(input.link)>\n  <a\n    ...(props.attributes)\n    href=(input.link)\n    target=(input.openLinkInNewTab ? '_blank' : undefined)\n    >\\${input.text}</a></if>\n\n<if(!input.link)>\n  <button type=\\\\\"button\\\\\" ...(props.attributes)>\\${input.text}</button></if>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > rootShow 1`] = `\n\"class {}\n\n<if(input.foo === 'bar')> <div>Bar</div></if> <else><div>Foo</div></else>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > self-referencing component 1`] = `\n\"class {}\n\n<div>\n  \\${input.name}\n  <if(input.name === 'Batman')>\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"class {}\n\n<div>\n  \\${input.name} \\${input.children}\n  <if(input.name === 'Batman')>\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > setState 1`] = `\n\"class {\n  someFn() {\n    this.state.n[0] = \\\\\"123\\\\\";\n  }\n\n  onCreate() {\n    this.state = { n: [\\\\\"123\\\\\"] };\n  }\n}\n\n<div><button on-click((event) => component.someFn())>Click me</button></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > showExpressions 1`] = `\n\"class {}\n\n<div>\n  <if(input.conditionA)> Content0</if>\n  <else>ContentA</else>\n  <if(input.conditionA)> ContentA</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentA</else>\n  <if(input.conditionA)> ContentB</if>\n  <else>\\${undefined}</else>\n  <if(input.conditionA)> \\${undefined}</if>\n  <else>ContentB</else>\n  <if(input.conditionA)> ContentC</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentC</else>\n  <if(input.conditionA)> ContentD</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentD</else>\n  <if(input.conditionA)> ContentE</if>\n  <else>hello</else>\n  <if(input.conditionA)> hello</if>\n  <else>ContentE</else>\n  <if(input.conditionA)> ContentF</if>\n  <else>123</else>\n  <if(input.conditionA)> 123</if>\n  <else>ContentF</else>\n  <if(input.conditionA === 'Default')> 4mb</if>\n  <else\n    ><if(input.conditionB === 'Complete')> 20mb</if> <else>9mb</else></else>\n  <if(input.conditionA === 'Default')>\n    <if(input.conditionB === 'Complete')> 20mb</if>\n    <else>9mb</else></if>\n  <else>4mb</else>\n  <if(input.conditionA === 'Default')>\n    <if(input.conditionB === 'Complete')> <div>complete</div></if>\n    <else>9mb</else></if>\n  <else\n    ><if(input.conditionC === 'Complete')> dff</if>\n    <else><div>complete else</div></else></else>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > showWithFor 1`] = `\n\"class {}\n\n<if(input.conditionA)>\n  <for|item,idx| of=(input.items)>\n    <div key=(idx)>\\${item}</div>\n  </for></if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"class {}\n\n<div>\n  <if(input.conditionA)> ContentA </if>\n\n  <if(input.conditionA)> ContentB </if>\n  <else>\\${undefined}</else>\n  <if(input.conditionA)> ContentC </if>\n\n  <if(input.conditionA)> ContentD </if>\n\n  <if(input.conditionA)> ContentE </if>\n  <else>hello</else>\n  <if(input.conditionA)> ContentF </if>\n  <else>123</else>\n</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > showWithRootText 1`] = `\n\"class {}\n\n<if(input.conditionA)> ContentA </if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"props.id changed\\\\\", this.input.id);\n    console.log(\n      \\\\\"props.foo.value.bar.baz changed\\\\\",\n      this.input.foo.value.bar.baz\n    );\n  }\n}\n\nstyle {\n  .div-d239523c {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-d239523c\\\\\">\\${input.id} \\${input.foo.value.bar.baz}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > spreadAttrs 1`] = `\n\"class {}\n\n<input ...(attrs) />\"\n`;\n\nexports[`Marko > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"class {}\n\n<input ...(props.nested) />\"\n`;\n\nexports[`Marko > jsx > Javascript Test > spreadProps 1`] = `\n\"class {}\n\n<input ...(props) />\"\n`;\n\nexports[`Marko > jsx > Javascript Test > store-async-function 1`] = `\n\"class {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > string-literal-store 1`] = `\n\"class {\n  onCreate() {\n    this.state = { foo: 123 };\n  }\n}\n\n<div>\\${state.foo}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"class {\n\n    onCreate() {\n      this.state = { foo-bar: 123,}\n    }\n\n}\n\n<div>\\${component.'foo-bar'}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"class {}\n\nstyle {\n  .div-35e34a45 {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n<div\n  class=\\\\\"builder-column div-35e34a45\\\\\"\n  style=({\n  width: '100%'\n})\n></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"class {}\n\nstyle {\n  .div-bee7e1a8 {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n<div\n  style=(input.attributes.style)\n  class=(input.attributes.class + ' div-bee7e1a8')\n></div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.marko\\\\\";\n\nclass {}\n\n<Foo></Foo>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > svgComponent 1`] = `\n\"class {}\n\n<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  viewBox=('0 0 ' + 42 + ' ' + 42)\n  width=(42)\n  height=(42)\n>\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation=(7)\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > typeDependency 1`] = `\n\"class {}\n\n<div>\\${input.foo}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > typeExternalProps 1`] = `\n\"class {}\n\n<div>Hello \\${input.name} !</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > typeExternalStore 1`] = `\n\"class {\n  onCreate() {\n    this.state = { _name: \\\\\"test\\\\\" };\n  }\n}\n\n<div>Hello \\${state._name} !</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > typeGetterStore 1`] = `\n\"class {\n  getName() {\n    if (this.state.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.state.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"test\\\\\" };\n  }\n}\n\n<div>Hello \\${state.name} !</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > use-style 1`] = `\n\"class {}\n\nstyle {\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n}\n<button type=\\\\\"button\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > use-style-and-css 1`] = `\n\"class {}\n\nstyle {\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button-49a5373c {\n    background: blue;\n    color: white;\n  }\n}\n<button type=\\\\\"button\\\\\" class=\\\\\"button-49a5373c\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"class {}\n\nstyle {\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n}\n<button type=\\\\\"button\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > useTarget 1`] = `\n\"class {\n  get name() {\n    const prefix = \\\\\"m\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  onCreate() {\n    this.state = { lastName: \\\\\"bar\\\\\", foo: \\\\\"bar\\\\\" };\n  }\n\n  onMount() {\n    console.log(this.state.foo);\n    this.state.foo = \\\\\"bar\\\\\";\n  }\n}\n\n<div>\\${component.name}</div>\"\n`;\n\nexports[`Marko > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nclass {}\n\n<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n  ><swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide></swiper-container\n>\"\n`;\n\nexports[`Marko > jsx > Remove Internal mitosis package 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n}\n\n<div>\n  Hello \\${state.name} ! I can run in React, Qwik, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Advanced 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n}\n\n<main>\n  <for|person,i| of=(state.names)>\n    <div>\\${i} : \\${person}</div>\n  </for>\n  <for|person| of=(state.names)>\n    <span>\\${person}</span>\n  </for>\n  <for|item| of=(state.names)>\n    <br />\n  </for>\n  <for|_,ee| of=(Array.from({\n  length: 10\n}))>\n    <pre>\\${ee}</pre>\n  </for>\n  <for|item| of=(Array.from({\n  length: 10\n}))>\n    <p>\\${index}</p>\n  </for>\n  <for|person,index| of=(state.names)>\n    <span>\\${person} \\${index}</span>\n  </for>\n  <for|person,count| of=(Array.from({\n  length: 10\n}))>\n    <span>\\${person} \\${count}</span>\n  </for>\n  <for|person,i| of=(state.names)>\n    <span>\\${person} \\${i}</span>\n  </for>\n  <for|person,index| of=(Array.from({\n  length: 10\n}))>\n    <span>\\${person} \\${index}</span>\n  </for>\n</main>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > AdvancedRef 1`] = `\n\"class {\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.state.name.toLowerCase();\n  };\n\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get inputRef() {\n    return this.getEl(\\\\\"inputRef\\\\\");\n  }\n  get inputNoArgRef() {\n    return this.getEl(\\\\\"inputNoArgRef\\\\\");\n  }\n\n  onRender() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n}\n\nstyle {\n  .input-616ee5d4 {\n    color: red;\n  }\n}\n<div>\n  <if(input.showInput)>\n    <input\n      class=\\\\\"input-616ee5d4\\\\\"\n      key=\\\\\"inputRef\\\\\"\n      value=(state.name)\n      on-blur((event) => component.onBlur())\n      on-input((event) => state.name = event.target.value)\n    />\n    <label for=\\\\\"cars\\\\\" key=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select></if>\n\n  Hello \\${component.lowerCaseName()} ! I can run in React, Qwik, Vue, Solid, or\n  Web Component!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic 1`] = `\n\"export const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nclass {\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\", age: 1, sports: [\\\\\"\\\\\"] };\n  }\n}\n\nstyle {\n  .div-22f58e48 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-22f58e48\\\\\">\n  <input\n    value=(DEFAULT_VALUES.name || state.name)\n    on-input((myEvent) => state.name = myEvent.target.value)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic 2`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n}\n\n<div>\n  <for|person| of=(state.names)>\n    <if(person === state.name)>\n      <input\n        value=(state.name)\n        on-input((event) => {\n  state.name = event.target.value + ' and ' + person;\n})\n      />\n\n      Hello \\${person} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n      Liquid!\n    </if>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nclass {\n  onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n}\n\n<div>\n  \\${myService.method('hello') + state.name} Hello! I can run in React, Vue,\n  Solid, or Liquid!\n\n  <input on-input((event) => component.onChange()) />\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n\n  onMount() {\n    this.state.name = \\\\\"PatrickJS onMount\\\\\" + this.input.bye;\n  }\n}\n\n<div>Hello \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic Outputs 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    this.input.onMessageChange(this.state.name);\n    this.input.onEvent(this.input.message);\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onMount() {\n    this.input.onMessageChange(this.state.name);\n    this.input.onEvent(this.input.message);\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicAttribute 1`] = `\n\"class {}\n\n<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck=(true) />\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nclass {}\n\n<div>\n  <if(input.children)> \\${input.children} \\${input.type}</if>\n\n  <MyBooleanAttributeComponent toggle=(true)></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent toggle=(true)></MyBooleanAttributeComponent>\n  <MyBooleanAttributeComponent list=(null)></MyBooleanAttributeComponent>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nclass {\n  log = function log(message: string) {\n    console.log(message);\n  };\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\", dev: \\\\\"PatrickJS\\\\\" };\n  }\n}\n\n<div>\n  <MyBasicComponent id=(state.dev)></MyBasicComponent>\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi=(state.name)\n      bye=(state.dev)\n    ></MyBasicOnMountUpdateComponent>\n    <MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      on-message-change=((name) => state.name = name)\n      on-event((event) => component.log('Test'))\n    ></MyBasicOutputsComponent>\n  </div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicFor 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  }\n\n  onMount() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n}\n\n<div>\n  <for|person| of=(state.names)>\n    <input\n      value=(state.name)\n      on-input((event) => {\n  state.name = event.target.value + ' and ' + person;\n})\n    />\n\n    Hello \\${person} ! I can run in Qwik, Web Component, React, Vue, Solid, or\n    Liquid!\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicRef 1`] = `\n\"class {\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.state.name.toLowerCase();\n  };\n\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get inputRef() {\n    return this.getEl(\\\\\"inputRef\\\\\");\n  }\n  get inputNoArgRef() {\n    return this.getEl(\\\\\"inputNoArgRef\\\\\");\n  }\n}\n\nstyle {\n  .input-e2a52cdc {\n    color: red;\n  }\n}\n<div>\n  <if(input.showInput)>\n    <input\n      class=\\\\\"input-e2a52cdc\\\\\"\n      key=\\\\\"inputRef\\\\\"\n      value=(state.name)\n      on-blur((event) => component.onBlur())\n      on-input((event) => state.name = event.target.value)\n    />\n    <label for=\\\\\"cars\\\\\" key=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n      <option value=\\\\\"supra\\\\\">GR Supra</option>\n      <option value=\\\\\"86\\\\\">GR 86</option>\n    </select></if>\n\n  Hello \\${component.lowerCaseName()} ! I can run in React, Qwik, Vue, Solid, or\n  Web Component!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"class {\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n}\n\n<div>\n  <button on-click(async (evt) => await component.handlerClick(evt))>\n    Click\n  </button>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"export function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nclass {\n  onCreate() {\n    this.state = { count: 0 };\n  }\n\n  onRender() {\n    this.prevCount = this.state.count;\n  }\n}\n\n<div>\n  <h1>Now: \\${state.count} , before: \\${this.prevCount}</h1>\n  <button on-click((event) => state.count += 1)>Increment</button>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Button 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button type=\\\\\"button\\\\\" ...(props.attributes)>\\${input.text}</button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Columns 1`] = `\n\"class {\n  getColumns() {\n    return this.input.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.input.space === \\\\\"number\\\\\" ? this.input.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n}\n\nstyle {\n  .div-7a1249a4 {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div-7a1249a4 {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div-7a1249a4 {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-7a1249a4-2 {\n    flex-grow: 1;\n  }\n}\n<div class=\\\\\"builder-columns div-7a1249a4\\\\\">\n  <for|column,index| of=(input.columns)>\n    <div class=\\\\\"builder-column div-7a1249a4-2\\\\\">\\${column.content} \\${index}</div>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nclass {}\n\n<div>\n  <slot name=(input.slotTesting)></slot>\n  <div><hr /></div>\n  <div><slot></slot></div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nclass {\n  get cls() {\n    return this.input.slotContent && this.input.children\n      ? \\`\\${this.state.name}-content\\`\n      : \\\\\"\\\\\";\n  }\n  show() {\n    this.input.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  onCreate(input) {\n    this.state = { name: \\\\\"king\\\\\", showContent: false };\n  }\n}\n\n<if(input.slotReference)>\n  <div\n    name=(input.slotContent ? 'name1' : 'name2')\n    title=(input.slotContent ? 'title1' : 'title2')  ...(props.attributes)\n    on-click((event) => component.show())\n    class=(component.cls)\n  >\n    <if(state.showContent && input.slotContent)>\n      <slot name=\\\\\"content\\\\\">\\${input.content}</slot></if>\n\n    <div><hr /></div>\n    <div>\\${input.children}</div>\n  </div></if>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > CustomCode 1`] = `\n\"class {\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  onCreate(input) {\n    this.state = { scriptsInserted: [], scriptsRun: [] };\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.findAndRunScripts();\n  }\n}\n\n<div\n  key=\\\\\"elem\\\\\"\n  class=('builder-custom-code' + (input.replaceNodes ? ' replace-nodes' : ''))\n>\n  $!{input.code}\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Embed 1`] = `\n\"class {\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  onCreate(input) {\n    this.state = { scriptsInserted: [], scriptsRun: [] };\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.findAndRunScripts();\n  }\n}\n\n<div\n  key=\\\\\"elem\\\\\"\n  class=('builder-custom-code' + (input.replaceNodes ? ' replace-nodes' : ''))\n>\n  $!{input.code}\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Form 1`] = `\n\"import { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nclass {\n  get submissionState() {\n    return (\n      (Builder.isEditing && this.input.previewState) || this.state.formState\n    );\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs =\n      this.input.sendWithJs || this.input.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.input.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.input.action || this.input.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.input.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.input.contentType;\n\n      if (this.input.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.input.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.state.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.input.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.input.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.input.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.input.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.input.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.input.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.input.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.state.formErrorMessage = message;\n            }\n          }\n\n          this.state.responseData = body;\n          this.state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.input.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.input.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.input.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.input.successUrl;\n                }\n              } else {\n                location.href = this.input.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.state.responseData = err;\n          this.state.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  onCreate(input) {\n    this.state = {\n      formState: \\\\\"unsubmitted\\\\\",\n      responseData: null,\n      formErrorMessage: \\\\\"\\\\\",\n    };\n  }\n\n  get formRef() {\n    return this.getEl(\\\\\"formRef\\\\\");\n  }\n}\n\nstyle {\n  .pre-82a300b6 {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n}\n<form\n  validate=(input.validate)\n  key=\\\\\"formRef\\\\\"\n  action=(!input.sendWithJs && input.action)\n  method=(input.method)\n  name=(input.name)\n  on-submit((event) => component.onSubmit(event))  ...(props.attributes)\n>\n  <if(input.builderBlock && input.builderBlock.children)>\n    <for|block,index| of=(input.builderBlock?.children)>\n      <BuilderBlockComponent\n        key=(block.id)\n        block=(block)\n        index=(index)\n      ></BuilderBlockComponent> </for></if>\n\n  <if(component.submissionState === 'error')>\n    <BuilderBlocks\n      dataPath=\\\\\"errorMessage\\\\\"\n      blocks=(input.errorMessage!)\n    ></BuilderBlocks></if>\n\n  <if(component.submissionState === 'sending')>\n    <BuilderBlocks\n      dataPath=\\\\\"sendingMessage\\\\\"\n      blocks=(input.sendingMessage!)\n    ></BuilderBlocks></if>\n\n  <if(component.submissionState === 'error' && state.responseData)>\n    <pre class=\\\\\"builder-form-error-text pre-82a300b6\\\\\">\n\\${JSON.stringify(state.responseData, null, 2)}</pre>\n  </if>\n\n  <if(component.submissionState === 'success')>\n    <BuilderBlocks\n      dataPath=\\\\\"successMessage\\\\\"\n      blocks=(input.successMessage!)\n    ></BuilderBlocks></if>\n</form>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Image 1`] = `\n\"class {\n  setLoaded() {\n    this.state.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.input.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  onCreate(input) {\n    this.state = { scrollListener: null, imageLoaded: false, load: false };\n  }\n\n  get pictureRef() {\n    return this.getEl(\\\\\"pictureRef\\\\\");\n  }\n\n  onMount() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.state.load = true;\n            this.state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  onDestroy() {\n    if (this.state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.state.scrollListener);\n    }\n  }\n}\n\nstyle {\n  .img-b8232e4e {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n}\n<div>\n  <picture key=\\\\\"pictureRef\\\\\"\n    ><if(!component.useLazyLoading() || state.load)>\n      <img\n        alt=(input.altText)\n        aria-role=(input.altText ? 'presentation' : undefined)\n        class=('builder-image' + (input._class ? ' ' + input._class : '') + ' img-b8232e4e')\n        src=(input.image)\n        on-load((event) => component.setLoaded())\n        srcset=(input.srcset)\n        sizes=(input.sizes)\n    /></if>\n\n    <source srcset=(input.srcset)\n  /></picture>\n  \\${input.children}\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Image State 1`] = `\n\"class {\n  onCreate() {\n    this.state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n  }\n}\n\n<div>\n  <for|item,itemIndex| of=(state.images)>\n    <img class=\\\\\"custom-class\\\\\" src=(item) key=(itemIndex) />\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<img\n  style=({\n  objectFit: input.backgroundSize || 'cover',\n  objectPosition: input.backgroundPosition || 'center'\n})  ...(props.attributes)\n  key=(Builder.isEditing && input.imgSrc || 'default-key')\n  alt=(input.altText)\n  src=(input.imgSrc)\n/>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<input\n  ...(props.attributes)\n  key=(Builder.isEditing && input.defaultValue ? input.defaultValue : 'default-key')\n  placeholder=(input.placeholder)\n  type=(input.type)\n  name=(input.name)\n  value=(input.value)\n  defaultValue=(input.defaultValue)\n  required=(input.required)\n  on-input((event) => input.onChange?.(event.target.value))\n/>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nclass {\n  handleChange(value: string) {\n    console.log(value);\n  }\n}\n\n<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  on-change((value) => component.handleChange(value))\n></FormInputComponent>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > NestedStore 1`] = `\n\"class {\n  onCreate() {\n    this.state = { _id: \\\\\"abc\\\\\", _messageId: this.state._id + \\\\\"-message\\\\\" };\n  }\n}\n\n<div id=(state._id)>\n  Test\n\n  <p id=(state._messageId)>Message</p>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > RawText 1`] = `\n\"class {}\n\n<span class=(input.attributes?.class || input.attributes?.className)\n  >$!{input.text || ''}</span>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Section 1`] = `\n\"class {}\n\n<section\n  ...(props.attributes)\n  style=(input.maxWidth && typeof input.maxWidth === 'number' ? {\n  maxWidth: input.maxWidth\n} : undefined)\n>\n  \\${input.children}\n</section>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Section 2`] = `\n\"class {\n  onCreate(input) {\n    this.state = { max: 42, items: [42] };\n  }\n}\n\n<if(state.max)>\n  <for|item| of=(state.items)>\n    <section\n      ...(props.attributes)\n      style=({\n  maxWidth: item + state.max\n})\n    >\n      \\${input.children}\n    </section>\n  </for></if>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {}\n\n<select\n  ...(props.attributes)\n  value=(input.value)\n  key=(Builder.isEditing && input.defaultValue ? input.defaultValue : 'default-key')\n  defaultValue=(input.defaultValue)\n  name=(input.name)\n>\n  <for|option,index| of=(input.options)>\n    <option value=(option.value) data-index=(index)>\n      \\${option.name || option.value}\n    </option>\n  </for>\n</select>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > SlotDefault 1`] = `\n\"class {}\n\n<div>\n  <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nclass {}\n\n<div>\n  <ContentSlotCode><slot testing=(<div>Hello</div>)></slot></ContentSlotCode>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nclass {}\n\n<div><ContentSlotCode slotTesting=(<div>Hello</div>)></ContentSlotCode></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > SlotNamed 1`] = `\n\"class {}\n\n<div>\n  <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n  <slot name=\\\\\"top\\\\\"></slot>\n  <slot name=\\\\\"left\\\\\">Default left</slot>\n  <slot>Default Child</slot>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nclass {\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onCreate(input) {\n    this.state = { reviews: [], name: \\\\\"test\\\\\", showReviewPrompt: false };\n  }\n\n  onMount() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.input.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.input.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.state.reviews = data.data;\n      });\n  }\n}\n\nstyle {\n  .input-554308c6 {\n    display: block;\n  }\n  .textarea-554308c6 {\n    display: block;\n  }\n  .button-554308c6 {\n    display: block;\n  }\n  .review-554308c6 {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img-554308c6 {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n}\n<div data-user=(state.name)>\n  <button on-click((event) => state.showReviewPrompt = true)>\n    Write a review\n  </button>\n  <if(state.showReviewPrompt || 'asdf')>\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input-554308c6\\\\\" />\n    <textarea\n      placeholder=\\\\\"How was your experience?\\\\\"\n      class=\\\\\"textarea-554308c6\\\\\"\n    ></textarea>\n    <button\n      class=\\\\\"button-554308c6\\\\\"\n      on-click((ev) => {\n  ev.preventDefault();\n  state.showReviewPrompt = false;\n})\n    >\n      Submit\n    </button></if>\n\n  <for|review,index| of=(state.reviews)>\n    <div class=\\\\\"review-554308c6\\\\\" key=(review.id)>\n      <img class=\\\\\"img-554308c6\\\\\" src=(review.avatar) />\n      <div class=(state.showReviewPrompt ? 'bg-primary' : 'bg-secondary')>\n        <div>N: \\${index}</div>\n        <div>\\${review.author}</div>\n        <div>\\${review.reviewMessage}</div>\n      </div>\n    </div>\n  </for>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > StoreComment 1`] = `\n\"class {\n  bar() {}\n\n  onCreate() {\n    this.state = { foo: true };\n  }\n}\n\n\\${state.foo}\"\n`;\n\nexports[`Marko > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"class {\n  foo(errors) {\n    return errors;\n  }\n\n  onCreate() {\n    this.state = { errors: {} };\n  }\n}\n\n\\${component.foo(state.errors)}\"\n`;\n\nexports[`Marko > jsx > Typescript Test > StoreWithState 1`] = `\n\"class {\n  bar() {\n    return this.state.foo;\n  }\n\n  onCreate() {\n    this.state = { foo: false };\n  }\n}\n\n\\${component.bar()}\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Submit 1`] = `\n\"class {}\n\n<button type=\\\\\"submit\\\\\" ...(props.attributes)>\\${input.text}</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nclass {\n  onCreate(input) {\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n  }\n}\n\n<div\n  contenteditable=(allowEditingText || undefined)\n  data-name=({\n  test: state.name || 'any name'\n})\n>\n  $!{input.text || input.content || state.name || '\n  <p class=\\\\\"text-lg\\\\\">my name</p>\n  '}\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Textarea 1`] = `\n\"class {}\n\n<textarea\n  ...(props.attributes)\n  placeholder=(input.placeholder)\n  name=(input.name)\n  value=(input.value)\n  defaultValue=(input.defaultValue)\n></textarea>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"class {\n  _do(id?: string) {\n    this.state._active = !!id;\n\n    if (this.input.onChange) {\n      this.input.onChange(this.state._active);\n    }\n  }\n\n  onCreate(input) {\n    this.state = { _id: \\\\\"abc\\\\\", _active: false };\n  }\n\n  onRender() {\n    if (this._do) {\n      this._do(this.state._id);\n    }\n  }\n}\n\n<div>Test</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > Video 1`] = `\n\"class {}\n\n<video\n  preload=\\\\\"none\\\\\"\n  ...(props.attributes)\n  style=({\n  width: '100%',\n  height: '100%',\n  ...input.attributes?.style,\n  objectFit: input.fit,\n  objectPosition: input.position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n})\n  key=(input.video || 'no-src')\n  poster=(input.posterImage)\n  autoplay=(input.autoPlay)\n  muted=(input.muted)\n  controls=(input.controls)\n  loop=(input.loop)\n></video>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"class {\n  setName(value) {\n    this.state.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.state.name = value;\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"steve\\\\\" };\n  }\n}\n\n<div>Hello \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicForFragment 1`] = `\n\"class {\n  onCreate() {\n    this.state = { id: \\\\\"xyz\\\\\" };\n  }\n}\n\n<div>\n  <for|option| of=(['a', 'b', 'c'])>\n    <div>\\${option}</div>\n  </for>\n  <for|option| of=(['a', 'b', 'c'])>\n    <div>\\${option}</div>\n  </for>\n  <select>\n    <for|option| of=(['d', 'e', 'f'])>\n      <option key=(\\`\\${state.id}-\\${option}\\`) value=(option)>\n        \\${option}\n      </option>\n    </for>\n  </select>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"class {\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  onCreate(input) {\n    this.state = { name: \\\\\"VincentW\\\\\", TagName: \\\\\"div\\\\\", tag: \\\\\"span\\\\\" };\n  }\n}\n\n<state.TagNameGetter>\n  Hello\n  <state.tag>\\${state.name}</state.tag>\n  <for|action| of=(input.actions)>\n    <state.TagName\n      ><action.icon></action.icon> <span>\\${action.text}</span></state.TagName\n    >\n  </for></state.TagNameGetter\n>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicForwardRef 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get propsInputRef() {\n    return this.getEl(\\\\\"propsInputRef\\\\\");\n  }\n}\n\nstyle {\n  .input-18b632d8 {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-18b632d8\\\\\"\n    key=\\\\\"propsInputRef\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n  />\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          class {\n  onCreate(input) {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  get propsInputRef() {\n    return this.getEl(\\\\\"propsInputRef\\\\\");\n  }\n}\n\nstyle {\n  .input-bed36ef0 {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-bed36ef0\\\\\"\n    key=\\\\\"propsInputRef\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n  />\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n  }\n\n  onRender() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n}\n\n<div>Hello! \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          class {\n  get buttonRef() {\n    return this.getEl(\\\\\"buttonRef\\\\\");\n  }\n\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n}\n\n<button key=\\\\\"buttonRef\\\\\">Attribute Passing</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          class {\n  get buttonRef() {\n    return this.getEl(\\\\\"buttonRef\\\\\");\n  }\n}\n\n<div><button key=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.marko\\\\\";\n\nclass {}\n\nstyle {\n  .div-6ef0b03e {\n    padding: 10px;\n  }\n}\n<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > class + css 1`] = `\n\"class {}\n\nstyle {\n  .div-defca3e2 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-defca3e2\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > className + css 1`] = `\n\"class {}\n\nstyle {\n  .div-defca3e2 {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-defca3e2\\\\\">\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > className 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nclass {\n  onCreate() {\n    this.state = { bindings: \\\\\"a binding\\\\\" };\n  }\n}\n\n<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class=(state.bindings)>With binding</div>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > classState 1`] = `\n\"class {\n  onCreate() {\n    this.state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n  }\n}\n\nstyle {\n  .div-0a9f895c {\n    padding: 10px;\n  }\n}\n<div class=(state.classState + ' div-0a9f895c') style=(state.styleState)>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > classnameProps 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          class {}\n\n<div class=(input.className)>\n  \\${input.children} \\${input.type} Hello! I can run in React, Vue, Solid, or\n  Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > complexMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          class {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nclass {}\n\n\\${foo.value}\"\n`;\n\nexports[`Marko > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nclass {}\n\n\\${foo.value}\n<div>other</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nclass {}\n\n<div>setting context</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > defaultProps 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button\n      type=\\\\\"button\\\\\"\n      ...(props.attributes)\n      on-click((event) => input.onClick())\n    >\n      \\${input.buttonText}\n    </button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"class {}\n\n<div>\n  <if(input.link)>\n    <a\n      ...(props.attributes)\n      href=(input.link)\n      target=(input.openLinkInNewTab ? '_blank' : undefined)\n      >\\${input.text}</a></if>\n\n  <if(!input.link)>\n    <button\n      type=\\\\\"button\\\\\"\n      ...(props.attributes)\n      on-click((event) => input.onClick(event))\n    >\n      \\${input.text}\n    </button></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nclass {}\n\n<div>Hello \\${input.name || DEFAULT_VALUES.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\nstyle {\n  .input-4aba533e {\n    color: red;\n  }\n}\n<div>\n  <input\n    class=\\\\\"input-4aba533e\\\\\"\n    value=(state.name)\n    on-input((event) => state.name = event.target.value)\n    on-input((event) => state.name = event.target.value)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > eventProps 1`] = `\n\"import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nclass {\n  handleClick() {\n    if (this.input.onGetVoid) {\n      this.input.onGetVoid();\n    }\n\n    if (this.input.onEnter) {\n      console.log(this.input.onEnter());\n    }\n\n    if (this.input.onPass) {\n      this.input.onPass(\\\\\"test\\\\\");\n    }\n  }\n}\n\n<button on-click((event) => component.handleClick())>Test</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > expressionState 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = {\n      refToUse: !(input.componentRef instanceof Function)\n        ? input.componentRef\n        : null,\n    };\n  }\n}\n\n<div>\\${state.refToUse}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > figmaMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          class {}\n\n<button\n  data-icon=(input.icon)\n  data-disabled=(input.interactiveState)\n  data-width=(input.width)\n  data-size=(input.size)\n>\n  \\${input.label}\n</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > functionProps 1`] = `\n\"class {}\n\n<p\n  f=(() => x)\n  f1=(x => x)\n  f2=(x => {})\n  f3=(function () {\n  return x;\n})\n  f4=(function (x) {\n  return x;\n})\n  f5=(function (x) {\n  return;\n})\n  f6=(function () {\n  return;\n})\n  f7=((a, b, c) => a + b + c)\n></p>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > getterState 1`] = `\n\"class {\n  get foo2() {\n    return this.input.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n}\n\n<div>\n  <p>\\${component.foo2}</p>\n  <p>\\${component.bar}</p>\n  <p>\\${component.baz(1)}</p>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > import types 1`] = `\n\"import { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nclass {\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n}\n\n<RenderBlock\n  ...(state.getRenderContentProps(props.renderContentProps.block,\n  0))\n></RenderBlock>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > layerName 1`] = `\n\"class {}\n\nstyle {\n  .layer-name-27ceea4e {\n    padding: 10px;\n  }\n}\n<section>\n  <div class=\\\\\"layer-name-27ceea4e\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"class {\n  onCreate() {\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n  }\n\n  onRender() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.state.a, this.state.b);\n\n    if (this.state.a === \\\\\"a\\\\\") {\n      this.state.a = \\\\\"b\\\\\";\n    }\n\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.state.c, this.state.d);\n\n    if (this.state.a === \\\\\"a\\\\\") {\n      this.state.a = \\\\\"b\\\\\";\n    }\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > multipleSpreads 1`] = `\n\"class {\n  onCreate() {\n    this.state = {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n  }\n}\n\n<input ...(state.attrs) ...(props) />\"\n`;\n\nexports[`Marko > jsx > Typescript Test > nestedShow 1`] = `\n\"class {}\n\n<if(input.conditionA)>\n  <if(!input.conditionB)> <div>if condition A and condition B</div></if>\n  <else><div>else-condition-B</div></else></if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > nestedStyles 1`] = `\n\"class {}\n\nstyle {\n  .div-7671878a {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div-7671878a {\n      display: block;\n    }\n  }\n  .div-7671878a:hover {\n    display: flex;\n  }\n  .div-7671878a:active {\n    display: inline;\n  }\n  .div-7671878a .nested-selector {\n    display: grid;\n  }\n  .div-7671878a .nested-selector:hover {\n    display: block;\n  }\n  .div-7671878a.nested-selector:active {\n    display: inline-block;\n  }\n}\n<div class=\\\\\"div-7671878a\\\\\">Hello world</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"class {}\n\nstyle {\n  .css-0-038fc384 {\n    margin: 10px;\n  }\n  .css-123-038fc384 {\n    padding: 10px;\n  }\n  .name-123-038fc384 {\n    border: 1px solid;\n  }\n  .name-038fc384 {\n    color: red;\n  }\n  .name-789-038fc384 {\n    background: blue;\n  }\n  .div-038fc384 {\n    background: blue;\n  }\n}\n<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0-038fc384\\\\\">Single Number</div>\n  <div class=\\\\\"css-123-038fc384\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123-038fc384\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name-038fc384\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789-038fc384\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div-038fc384\\\\\">Number</div>\n</section>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onEvent 1`] = `\n\"class {\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  get elem() {\n    return this.getEl(\\\\\"elem\\\\\");\n  }\n\n  onMount() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n}\n\n<div class=\\\\\"builder-embed\\\\\" key=\\\\\"elem\\\\\"><div>Test</div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onInit & onMount 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onInit 1`] = `\n\"export const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nclass {\n  onCreate(input) {\n    this.state = { name: \\\\\"\\\\\" };\n  }\n}\n\n<div>Default name defined by parent \\${state.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onInitPlain 1`] = `\n\"class {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onMount 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  onDestroy() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onMountMultiple 1`] = `\n\"class {\n  onMount() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n  }\n\n  onRender() {\n    console.log(\n      \\\\\"Runs when a, b or size changes\\\\\",\n      this.state.a,\n      this.state.b,\n      this.input.size\n    );\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nclass {}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > preserveTyping 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > propsDestructure 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n  }\n}\n\n<div>\n  \\${input.children} \\${input.type} Hello! I can run in React, Vue, Solid, or\n  Liquid!\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > propsInterface 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > propsType 1`] = `\n\"class {}\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! \\${input.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"class {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  onRender() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.marko\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.marko\\\\\";\nimport RenderComponent from \\\\\"./render-component.marko\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.marko\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nclass {\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.input.block,\n      state: this.input.context.state,\n      context: this.input.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.input.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.input.block\n      : getProcessedBlock({\n          block: this.input.block,\n          state: this.input.context.state,\n          context: this.input.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.input.context.state,\n      context: this.input.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.input.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.input.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.input.context.state,\n      context: this.input.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.input.context,\n        state: {\n          ...this.input.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.input.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.input.context.apiKey,\n      state: this.input.context.state,\n      content: this.input.context.content,\n      context: this.input.context.context,\n      registeredComponents: this.input.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n}\n\n<if(component.shouldWrap)>\n  <if(isEmptyHtmlElement(component.tag))>\n    <state.tag ...(state.attributes) ...(state.actions)></state.tag\n  ></if>\n\n  <if(!isEmptyHtmlElement(component.tag) && component.repeatItemData)>\n    <for|data,index| of=(component.repeatItemData)>\n      <RenderRepeatedBlock\n        key=(index)\n        repeatContext=(data.context)\n        block=(data.block)\n      ></RenderRepeatedBlock> </for></if>\n\n  <if(!isEmptyHtmlElement(component.tag) && !component.repeatItemData)>\n    <state.tag ...(state.attributes) ...(state.actions)\n      ><state.renderComponentTag\n        ...(state.renderComponentProps)\n      ></state.renderComponentTag>\n      <for|child| of=(component.childrenWithoutParentComponent)>\n        <RenderBlock\n          key=('render-block-' + child.id)\n          block=(child)\n          context=(component.childrenContext)\n        ></RenderBlock>\n      </for>\n      <for|child| of=(component.childrenWithoutParentComponent)>\n        <BlockStyles\n          key=('block-style-' + child.id)\n          block=(child)\n          context=(component.childrenContext)\n        ></BlockStyles> </for></state.tag\n  ></if>\n</if>\n<else\n  ><state.renderComponentTag\n    ...(state.renderComponentProps)\n  ></state.renderComponentTag\n></else>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.marko\\\\\";\n\nclass {\n  onMount() {\n    sendComponentsToVisualEditor(this.input.customComponents);\n  }\n\n  onRender() {\n    dispatchNewContentToVisualEditor(this.input.content);\n  }\n}\n\nstyle {\n  .div-5e7e866c {\n    display: flex;\n    flex-direction: columns;\n  }\n}\n<div class=\\\\\"div-5e7e866c\\\\\" on-click((event) => trackClick(input.content.id))>\n  <RenderBlocks blocks=(input.content.blocks)></RenderBlocks>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"class {}\n\n<if(input.link)>\n  <a\n    ...(props.attributes)\n    href=(input.link)\n    target=(input.openLinkInNewTab ? '_blank' : undefined)\n    >\\${input.text}</a></if>\n\n<if(!input.link)>\n  <button type=\\\\\"button\\\\\" ...(props.attributes)>\\${input.text}</button></if>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > rootShow 1`] = `\n\"class {}\n\n<if(input.foo === 'bar')> <div>Bar</div></if> <else><div>Foo</div></else>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > self-referencing component 1`] = `\n\"class {}\n\n<div>\n  \\${input.name}\n  <if(input.name === 'Batman')>\n    <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"class {}\n\n<div>\n  \\${input.name} \\${input.children}\n  <if(input.name === 'Batman')>\n    <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent></if>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > setState 1`] = `\n\"class {\n  someFn() {\n    this.state.n[0] = \\\\\"123\\\\\";\n  }\n\n  onCreate() {\n    this.state = { n: [\\\\\"123\\\\\"] };\n  }\n}\n\n<div><button on-click((event) => component.someFn())>Click me</button></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > showExpressions 1`] = `\n\"class {}\n\n<div>\n  <if(input.conditionA)> Content0</if>\n  <else>ContentA</else>\n  <if(input.conditionA)> ContentA</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentA</else>\n  <if(input.conditionA)> ContentB</if>\n  <else>\\${undefined}</else>\n  <if(input.conditionA)> \\${undefined}</if>\n  <else>ContentB</else>\n  <if(input.conditionA)> ContentC</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentC</else>\n  <if(input.conditionA)> ContentD</if>\n\n  <if(input.conditionA)> </if>\n  <else>ContentD</else>\n  <if(input.conditionA)> ContentE</if>\n  <else>hello</else>\n  <if(input.conditionA)> hello</if>\n  <else>ContentE</else>\n  <if(input.conditionA)> ContentF</if>\n  <else>123</else>\n  <if(input.conditionA)> 123</if>\n  <else>ContentF</else>\n  <if(input.conditionA === 'Default')> 4mb</if>\n  <else\n    ><if(input.conditionB === 'Complete')> 20mb</if> <else>9mb</else></else>\n  <if(input.conditionA === 'Default')>\n    <if(input.conditionB === 'Complete')> 20mb</if>\n    <else>9mb</else></if>\n  <else>4mb</else>\n  <if(input.conditionA === 'Default')>\n    <if(input.conditionB === 'Complete')> <div>complete</div></if>\n    <else>9mb</else></if>\n  <else\n    ><if(input.conditionC === 'Complete')> dff</if>\n    <else><div>complete else</div></else></else>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > showWithFor 1`] = `\n\"class {}\n\n<if(input.conditionA)>\n  <for|item,idx| of=(input.items)>\n    <div key=(idx)>\\${item}</div>\n  </for></if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"class {}\n\n<div>\n  <if(input.conditionA)> ContentA </if>\n\n  <if(input.conditionA)> ContentB </if>\n  <else>\\${undefined}</else>\n  <if(input.conditionA)> ContentC </if>\n\n  <if(input.conditionA)> ContentD </if>\n\n  <if(input.conditionA)> ContentE </if>\n  <else>hello</else>\n  <if(input.conditionA)> ContentF </if>\n  <else>123</else>\n</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > showWithRootText 1`] = `\n\"class {}\n\n<if(input.conditionA)> ContentA </if>\n<else><div>else-condition-A</div></else>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"class {\n  onRender() {\n    console.log(\\\\\"props.id changed\\\\\", this.input.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.input.foo.bar.baz);\n  }\n}\n\nstyle {\n  .div-6c56607a {\n    padding: 10px;\n  }\n}\n<div class=\\\\\"test div-6c56607a\\\\\">\\${input.id} \\${input.foo.bar.baz}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > spreadAttrs 1`] = `\n\"class {}\n\n<input ...(attrs) />\"\n`;\n\nexports[`Marko > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"class {}\n\n<input ...(props.nested) />\"\n`;\n\nexports[`Marko > jsx > Typescript Test > spreadProps 1`] = `\n\"class {}\n\n<input ...(props) />\"\n`;\n\nexports[`Marko > jsx > Typescript Test > store-async-function 1`] = `\n\"class {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > string-literal-store 1`] = `\n\"class {\n  onCreate() {\n    this.state = { foo: 123 };\n  }\n}\n\n<div>\\${state.foo}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"class {\n\n    onCreate() {\n      this.state = { foo-bar: 123,}\n    }\n\n}\n\n<div>\\${component.'foo-bar'}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"class {}\n\nstyle {\n  .div-35e34a45 {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n<div\n  class=\\\\\"builder-column div-35e34a45\\\\\"\n  style=({\n  width: '100%'\n})\n></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"class {}\n\nstyle {\n  .div-bee7e1a8 {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n}\n<div\n  style=(input.attributes.style)\n  class=(input.attributes.class + ' div-bee7e1a8')\n></div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.marko\\\\\";\n\nclass {}\n\n<Foo></Foo>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > svgComponent 1`] = `\n\"class {}\n\n<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  viewBox=('0 0 ' + 42 + ' ' + 42)\n  width=(42)\n  height=(42)\n>\n  <defs>\n    <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n      <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n      <feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      ></feBlend>\n      <feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation=(7)\n      ></feGaussianBlur>\n    </filter>\n  </defs>\n</svg>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > typeDependency 1`] = `\n\"import type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.marko\\\\\";\n\nclass {}\n\n<div>\\${input.foo}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nclass {}\n\n<div>Hello \\${input.name} !</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { FooStore } from \\\\\"./foo-store\\\\\";\n\nclass {\n  onCreate() {\n    this.state = { _name: \\\\\"test\\\\\" };\n  }\n}\n\n<div>Hello \\${state._name} !</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > typeGetterStore 1`] = `\n\"class {\n  getName() {\n    if (this.state.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.state.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"test\\\\\" };\n  }\n}\n\n<div>Hello \\${state.name} !</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > use-style 1`] = `\n\"class {}\n\nstyle {\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n}\n<button type=\\\\\"button\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > use-style-and-css 1`] = `\n\"class {}\n\nstyle {\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button-49a5373c {\n    background: blue;\n    color: white;\n  }\n}\n<button type=\\\\\"button\\\\\" class=\\\\\"button-49a5373c\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"class {}\n\nstyle {\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n}\n<button type=\\\\\"button\\\\\">Button</button>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > useTarget 1`] = `\n\"class {\n  get name() {\n    const prefix = \\\\\"m\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  onCreate() {\n    this.state = { lastName: \\\\\"bar\\\\\", foo: \\\\\"bar\\\\\" };\n  }\n\n  onMount() {\n    console.log(this.state.foo);\n    this.state.foo = \\\\\"bar\\\\\";\n  }\n}\n\n<div>\\${component.name}</div>\"\n`;\n\nexports[`Marko > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nclass {}\n\n<swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n  ><swiper-slide>Slide 1</swiper-slide>\n  <swiper-slide>Slide 2</swiper-slide>\n  <swiper-slide>Slide 3</swiper-slide></swiper-container\n>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > basic 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\n<div>\n  <input\n    on-input((event) => state.name = event.target.value)\n    value=(state.name)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > bindGroup 1`] = `\n\"class {\n  onCreate() {\n    this.state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n  }\n}\n\n<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    checked=(state.tortilla === 'Plain')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    checked=(state.tortilla === 'Whole wheat')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    checked=(state.tortilla === 'Spinach')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    checked=(state.fillings === 'Rice')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    checked=(state.fillings === 'Beans')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    checked=(state.fillings === 'Cheese')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    checked=(state.fillings === 'Guac (extra)')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <p>Tortilla: \\${state.tortilla}</p>\n  <p>Fillings: \\${state.fillings}</p>\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > bindProperty 1`] = `\n\"class {\n  onCreate() {\n    this.state = { value: \\\\\"hello\\\\\" };\n  }\n}\n\n<input value=(state.value) />\"\n`;\n\nexports[`Marko > svelte > Javascript Test > classDirective 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { focus: true };\n  }\n}\n\n<input\n  class=(\\`form-input \\${input.disabled ? 'disabled' : ''} \\${state.focus ? 'focus' : ''}\\`)\n/>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > context 1`] = `\n\"class {\n  onCreate() {\n    this.state = { activeTab: 0 };\n  }\n}\n\n<div>\\${state.activeTab}</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > each 1`] = `\n\"class {\n  onCreate() {\n    this.state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n  }\n}\n\n<ul>\n  <for|num| of=(state.numbers)>\n    <li>\\${num}</li>\n  </for>\n</ul>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > eventHandlers 1`] = `\n\"class {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n<div>\n  <button on-click((a) => component.log('hi'))>Log</button>\n  <button on-click((event) => component.log(event))>Log</button>\n  <button on-click((event) => component.log(event))>Log</button>\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > html 1`] = `\n\"class {\n  onCreate() {\n    this.state = { html: \\\\\"<b>bold</b>\\\\\" };\n  }\n}\n\n<div>$!{state.html}</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > ifElse 1`] = `\n\"class {\n  toggle = function toggle() {\n    this.state.show = !this.state.show;\n  };\n\n  onCreate() {\n    this.state = { show: true };\n  }\n}\n\n<if(state.show)>\n  <button on-click((event) => component.toggle(event))>Hide</button></if>\n<else\n  ><button on-click((event) => component.toggle(event))>Show</button></else>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.marko\\\\\";\n\nclass {\n  onCreate() {\n    this.state = { disabled: false };\n  }\n}\n\n<div>\n  <button type=\\\\\"button\\\\\" disabled=(state.disabled)><slot></slot></button>\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  onDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  onRender() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > reactive 1`] = `\n\"class {\n  get lowercaseName() {\n    return this.state.name.toLowerCase();\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\n<div>\n  <input value=(state.name) />\n\n  Lowercase: \\${component.lowercaseName}\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"class {\n  calculateResult = function calculateResult(a_, b_) {\n    this.state.result = a_ * b_;\n  };\n\n  onCreate() {\n    this.state = { a: 2, b: 5, result: null };\n  }\n\n  onRender() {\n    this.calculateResult(this.state.a, this.state.b);\n  }\n}\n\n<div>\n  <input\n    type=\\\\\"number\\\\\"\n    on-input((event) => state.a = event.target.value)\n    value=(state.a)\n  />\n  <input\n    type=\\\\\"number\\\\\"\n    on-input((event) => state.b = event.target.value)\n    value=(state.b)\n  />\n\n  Result: \\${state.result}\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > slots 1`] = `\n\"class {}\n\n<div>\n  <slot>default</slot> <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\"\n`;\n\nexports[`Marko > svelte > Javascript Test > style 1`] = `\n\"class {}\n\nstyle {\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n}\n<input class=\\\\\"form-input\\\\\" />\"\n`;\n\nexports[`Marko > svelte > Javascript Test > textExpressions 1`] = `\n\"class {\n  onCreate() {\n    this.state = { a: 5, b: 12 };\n  }\n}\n\n<div>\n  normal: \\${state.a + state.b}\n  <br />\n\n  conditional \\${state.a > 2 ? 'hello' : 'bye'}\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > basic 1`] = `\n\"class {\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\n<div>\n  <input\n    on-input((event) => state.name = event.target.value)\n    value=(state.name)\n  />\n\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > bindGroup 1`] = `\n\"class {\n  onCreate() {\n    this.state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n  }\n}\n\n<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    checked=(state.tortilla === 'Plain')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    checked=(state.tortilla === 'Whole wheat')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    checked=(state.tortilla === 'Spinach')\n    on-input((event) => state.tortilla = event.target.value)\n  />\n  <br />\n  <br />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    checked=(state.fillings === 'Rice')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    checked=(state.fillings === 'Beans')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    checked=(state.fillings === 'Cheese')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    checked=(state.fillings === 'Guac (extra)')\n    on-input((event) => state.fillings = event.target.value)\n  />\n  <p>Tortilla: \\${state.tortilla}</p>\n  <p>Fillings: \\${state.fillings}</p>\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > bindProperty 1`] = `\n\"class {\n  onCreate() {\n    this.state = { value: \\\\\"hello\\\\\" };\n  }\n}\n\n<input value=(state.value) />\"\n`;\n\nexports[`Marko > svelte > Typescript Test > classDirective 1`] = `\n\"class {\n  onCreate(input) {\n    this.state = { focus: true };\n  }\n}\n\n<input\n  class=(\\`form-input \\${input.disabled ? 'disabled' : ''} \\${state.focus ? 'focus' : ''}\\`)\n/>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > context 1`] = `\n\"class {\n  onCreate() {\n    this.state = { activeTab: 0 };\n  }\n}\n\n<div>\\${state.activeTab}</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > each 1`] = `\n\"class {\n  onCreate() {\n    this.state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n  }\n}\n\n<ul>\n  <for|num| of=(state.numbers)>\n    <li>\\${num}</li>\n  </for>\n</ul>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > eventHandlers 1`] = `\n\"class {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n}\n\n<div>\n  <button on-click((a) => component.log('hi'))>Log</button>\n  <button on-click((event) => component.log(event))>Log</button>\n  <button on-click((event) => component.log(event))>Log</button>\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > html 1`] = `\n\"class {\n  onCreate() {\n    this.state = { html: \\\\\"<b>bold</b>\\\\\" };\n  }\n}\n\n<div>$!{state.html}</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > ifElse 1`] = `\n\"class {\n  toggle = function toggle() {\n    this.state.show = !this.state.show;\n  };\n\n  onCreate() {\n    this.state = { show: true };\n  }\n}\n\n<if(state.show)>\n  <button on-click((event) => component.toggle(event))>Hide</button></if>\n<else\n  ><button on-click((event) => component.toggle(event))>Show</button></else>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.marko\\\\\";\n\nclass {\n  onCreate() {\n    this.state = { disabled: false };\n  }\n}\n\n<div>\n  <button type=\\\\\"button\\\\\" disabled=(state.disabled)><slot></slot></button>\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"class {\n  onMount() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  onDestroy() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  onRender() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n}\n\n<div></div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > reactive 1`] = `\n\"class {\n  get lowercaseName() {\n    return this.state.name.toLowerCase();\n  }\n\n  onCreate() {\n    this.state = { name: \\\\\"Steve\\\\\" };\n  }\n}\n\n<div>\n  <input value=(state.name) />\n\n  Lowercase: \\${component.lowercaseName}\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"class {\n  calculateResult = function calculateResult(a_, b_) {\n    this.state.result = a_ * b_;\n  };\n\n  onCreate() {\n    this.state = { a: 2, b: 5, result: null };\n  }\n\n  onRender() {\n    this.calculateResult(this.state.a, this.state.b);\n  }\n}\n\n<div>\n  <input\n    type=\\\\\"number\\\\\"\n    on-input((event) => state.a = event.target.value)\n    value=(state.a)\n  />\n  <input\n    type=\\\\\"number\\\\\"\n    on-input((event) => state.b = event.target.value)\n    value=(state.b)\n  />\n\n  Result: \\${state.result}\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > slots 1`] = `\n\"class {}\n\n<div>\n  <slot>default</slot> <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n</div>\"\n`;\n\nexports[`Marko > svelte > Typescript Test > style 1`] = `\n\"class {}\n\nstyle {\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n}\n<input class=\\\\\"form-input\\\\\" />\"\n`;\n\nexports[`Marko > svelte > Typescript Test > textExpressions 1`] = `\n\"class {\n  onCreate() {\n    this.state = { a: 5, b: 12 };\n  }\n}\n\n<div>\n  normal: \\${state.a + state.b}\n  <br />\n\n  conditional \\${state.a > 2 ? 'hello' : 'bye'}\n</div>\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/mitosis.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Can encode <> in text > should encode <> in text 1`] = `\n\"export default function MyComponent(props) {\n  return <>&amp;lt;&amp;gt;&amp;#123;&amp;#125;</>;\n}\n\"\n`;\n\nexports[`Can encode <> in text > should not encode valid jsx 1`] = `\n\"export default function MyComponent(props) {\n  return (\n    <>\n      hello <b>world</b>\n    </>\n  );\n}\n\"\n`;\n\nexports[`Can encode <> in text > should not output invalid jsx attributes 1`] = `\n\"export default function MyComponent(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Advanced 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return [\n    <main>\n      {state.names.map((person, i) => (\n        <div>\n          {i}:{person}\n        </div>\n      ))}\n      {state.names.map((person, index) => (\n        <span>{person}</span>\n      ))}\n      {state.names.map((_, index) => (\n        <br />\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((_, ee) => (\n        <pre>{ee}</pre>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((_, index) => (\n        <p>{index}</p>\n      ))}\n      {state.names.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((person, count) => (\n        <span>\n          {person}\n          {count}\n        </span>\n      ))}\n      {state.names.map((person, i) => (\n        <span>\n          {person}\n          {i}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n    </main>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n\n  return [\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange={(myEvent) => (state.name = myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic 2`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Show } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return [\n    <div>\n      {state.names.map((person, index) =>\n        person === state.name ? (\n          <>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </>\n        ) : null\n      )}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic Context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return [\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange={(event) => state.onChange()} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnMountUpdateComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({\n  outputs: [\\\\\"onMessage\\\\\", \\\\\"onEvent\\\\\"],\n  baz: \\\\\"metadata inside component\\\\\",\n});\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicAttribute 1`] = `\n\"export default function MyComponent(props) {\n  return [<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { Show, MyBooleanAttributeComponent } from \\\\\"@components\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nexport default function MyBooleanAttribute(props) {\n  return [\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent list={null} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  MyBasicComponent,\n  MyBasicOnMountUpdateComponent,\n  MyBasicOutputsComponent,\n} from \\\\\"@components\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default function MyBasicChildComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  });\n\n  return [\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicFor 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return [\n    <div>\n      {state.names.map((person, index) => (\n        <Fragment>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </Fragment>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicRef 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n\n  return [\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicRefAssignmentComponent(props) {\n  const state = useStore({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef);\n      holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport default function MyPreviousComponent(props) {\n  const state = useStore({ count: 0 });\n\n  return [\n    <div>\n      <h1>\n        Now:\n        {state.count}, before:\n        {prevCount}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Button 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Columns 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function Column(props) {\n  const state = useStore({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return [\n    <div\n      class=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      {props.columns.map((column, index) => (\n        <div\n          class=\\\\\"builder-column\\\\\"\n          css={{\n            flexGrow: \\\\\"1\\\\\",\n          }}\n        >\n          {column.content}\n          {index}\n        </div>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function ContentSlotCode(props) {\n  return [\n    <div>\n      <Slot name={props.slotTesting} />\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot />\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Slot } from \\\\\"@components\\\\\";\n\nexport default function ContentSlotJsxCode(props) {\n  const state = useStore({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return [\n    props.slotReference ? (\n      <div\n        name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n        title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n        {...props.attributes}\n        onClick={(event) => state.show()}\n        class={state.cls}\n      >\n        {state.showContent && props.slotContent ? (\n          <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n        ) : null}\n        <div>\n          <hr />\n        </div>\n        <div>{props.children}</div>\n      </div>\n    ) : null,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > CustomCode 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return [\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Embed 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return [\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Form 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For, BuilderBlockComponent, BuilderBlocks } from \\\\\"@components\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport default function FormComponent(props) {\n  const state = useStore({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: props.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                state.formErrorMessage = message;\n              }\n            }\n\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (props.resetFormOnSubmit !== false) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (props.successUrl) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: props.successUrl,\n                    },\n                  });\n                  formRef.current.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n\n  const formRef = useRef(null);\n  const formRef = useRef(null);\n\n  return [\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => state.onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children\n        ? (props.builderBlock?.children).map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))\n        : null}\n      {state.submissionState === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n      ) : null}\n      {state.submissionState === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        />\n      ) : null}\n      {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n        <pre\n          class=\\\\\"builder-form-error-text\\\\\"\n          css={{\n            padding: \\\\\"10px\\\\\",\n            color: \\\\\"red\\\\\",\n            textAlign: \\\\\"center\\\\\",\n          }}\n        >\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      ) : null}\n      {state.submissionState === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        />\n      ) : null}\n    </form>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Image 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show } from \\\\\"@components\\\\\";\n\nexport default function Image(props) {\n  const state = useStore({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  const pictureRef = useRef();\n  const pictureRef = useRef();\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onUnMount(() => {\n    if (state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n    }\n  });\n\n  return [\n    <div>\n      <picture ref={pictureRef}>\n        {!state.useLazyLoading() || state.load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            class={\\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")}\n            src={props.image}\n            onLoad={(event) => state.setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Image State 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function ImgStateComponent(props) {\n  const state = useStore({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return [\n    <div>\n      {state.images.map((item, itemIndex) => (\n        <Fragment>\n          <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n        </Fragment>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function ImgComponent(props) {\n  return [\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function FormInputComponent(props) {\n  return [\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > InputParent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { FormInputComponent } from \\\\\"@components\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default function Stepper(props) {\n  const state = useStore({\n    handleChange(value) {\n      console.log(value);\n    },\n  });\n\n  return [\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > NestedStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function NestedStore(props) {\n  const state = useStore({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return [\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > RawText 1`] = `\n\"export default function RawText(props) {\n  return [\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      innerHTML={props.text || \\\\\"\\\\\"}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Section 1`] = `\n\"export default function SectionComponent(props) {\n  return [\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Section 2`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For } from \\\\\"@components\\\\\";\n\nexport default function SectionStateComponent(props) {\n  const state = useStore({ max: 42, items: [42] });\n\n  return [\n    state.max\n      ? state.items.map((item, index) => (\n          <section\n            {...props.attributes}\n            style={{\n              maxWidth: item + state.max,\n            }}\n          >\n            {props.children}\n          </section>\n        ))\n      : null,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Select 1`] = `\n\"import { For } from \\\\\"@components\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function SelectComponent(props) {\n  return [\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode, Slot } from \\\\\"@components\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <ContentSlotCode>\n        <Slot testing={<div>Hello</div>} />\n      </ContentSlotCode>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"@components\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\" />\n      <Slot name=\\\\\"top\\\\\" />\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For } from \\\\\"@components\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport default function SmileReviews(props) {\n  const state = useStore({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return [\n    <div data-user={state.name}>\n      <button onClick={(event) => (state.showReviewPrompt = true)}>\n        Write a review\n      </button>\n      {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <button\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n            onClick={(ev) => {\n              ev.preventDefault();\n              state.showReviewPrompt = false;\n            }}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {state.reviews.map((review, index) => (\n        <div\n          $name=\\\\\"Review\\\\\"\n          key={review.id}\n          css={{\n            margin: \\\\\"10px\\\\\",\n            padding: \\\\\"10px\\\\\",\n            background: \\\\\"white\\\\\",\n            display: \\\\\"flex\\\\\",\n            borderRadius: \\\\\"5px\\\\\",\n            boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n            WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n          }}\n        >\n          <img\n            css={{\n              height: \\\\\"30px\\\\\",\n              width: \\\\\"30px\\\\\",\n              marginRight: \\\\\"10px\\\\\",\n            }}\n            src={review.avatar}\n          />\n          <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>\n              N:\n              {index}\n            </div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </div>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > StoreComment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: true, bar() {} });\n\n  return [<Fragment>{state.foo}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return [<Fragment>{state.foo(state.errors)}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return [<Fragment>{state.bar()}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Submit 1`] = `\n\"export default function SubmitButton(props) {\n  return [\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Text 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function Text(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return [\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      innerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Textarea 1`] = `\n\"export default function Textarea(props) {\n  return [\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseValueAndFnFromStore(props) {\n  const state = useStore({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  return [<div>Test</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > Video 1`] = `\n\"export default function Video(props) {\n  return [\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function BasicForFragment(props) {\n  const state = useStore({ id: \\\\\"xyz\\\\\" });\n\n  return [\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"].map((option, index) => (\n        <Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"].map((option, index) => (\n        <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"].map((option, index) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForNoTagRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return [\n    <state.TagNameGetter>\n      Hello\n      <state.tag>{state.name}</state.tag>\n      {props.actions.map((action, index) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicForwardRef 1`] = `\n\"',' expected. (16:12)\n  14 |     const state = useStore({ name: 'PatrickJS',});\n  15 |\n> 16 | const props.inputRef = useRef();\n     |            ^\n  17 |\n  18 |\n  19 |\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"',' expected. (22:12)\n  20 |     const state = useStore({ name: 'PatrickJS',});\n  21 |\n> 22 | const props.inputRef = useRef();\n     |            ^\n  23 |\n  24 |\n  25 |\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnUpdateReturnComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return [\n    <div>\n      Hello!\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true } });\n\nexport default function BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n  const buttonRef = useRef(null);\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return [<button ref={buttonRef}>Attribute Passing</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true, customRef: \\\\\"buttonRef\\\\\" } });\n\nexport default function BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n  const buttonRef = useRef(null);\n\n  return [\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"@components\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        class=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > class + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > className + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > className 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function ClassNameCode(props) {\n  const state = useStore({ bindings: \\\\\"a binding\\\\\" });\n\n  return [\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > classState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return [\n    <div\n      class={state.classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nuseMetadata({\n  stencil: {\n    propOptions: {\n      className: { attribute: \\\\\"classname\\\\\", mutable: false, reflect: false },\n    },\n  },\n});\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div class={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nuseMetadata({\n  x: \\\\\"y\\\\\",\n  asdf: {\n    stringValue: \\\\\"d\\\\\",\n    booleanValue: true,\n    numberValue: 1,\n    innerObject: { stringValue: \\\\\"inner\\\\\", numberValue: 2, booleanValue: false },\n    spreadStringValue: \\\\\"f\\\\\",\n  },\n});\n\nexport default function ComplexMetaRaw(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return [\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return [\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n      <div>other</div>\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default function RenderContent(props) {\n  return [<div>setting context</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nexport default function ComponentWithTypes(props) {\n  return [\n    <div>\n      {\\\\\" \\\\\"}\n      Hello\n      {props.name || DEFAULT_VALUES.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventInputAndChange(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return [\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={state.name}\n        onInput={(event) => (state.name = event.target.value)}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > eventProps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventPropsComponent(props) {\n  const state = useStore({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return [<button onClick={(event) => state.handleClick()}>Test</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > expressionState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return [<div>{state.refToUse}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nuseMetadata({\n  figma: {\n    name: \\\\\"def-button-beta-outlined\\\\\",\n    url: \\\\\"https://www.figma.com/xxx\\\\\",\n    props: {\n      iconSmall: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Small\\\\\" },\n      iconMedium: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Medium\\\\\" },\n      label: { type: \\\\\"string\\\\\", key: \\\\\"✏️ Label\\\\\" },\n      icon: {\n        type: \\\\\"boolean\\\\\",\n        key: \\\\\"👁️ Icon\\\\\",\n        value: { false: false, true: \\\\\"placeholder\\\\\" },\n      },\n      interactiveState: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Interactive State\\\\\",\n        value: {\n          \\\\\"(Def) Enabled\\\\\": false,\n          Hovered: false,\n          Pressed: false,\n          Focused: false,\n          Disabled: \\\\\"true\\\\\",\n        },\n      },\n      size: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Size\\\\\",\n        value: { \\\\\"(Def) Medium\\\\\": false, Small: \\\\\"small\\\\\" },\n      },\n      width: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Width\\\\\",\n        value: { \\\\\"(Def) Auto Width\\\\\": false, \\\\\"Full Width\\\\\": \\\\\"full\\\\\" },\n      },\n    },\n  },\n});\n\nexport default function FigmaButton(props) {\n  return [\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > functionProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > getterState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Button(props) {\n  const state = useStore({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return [\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > import types 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderBlock } from \\\\\"@components\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nexport default function RenderContent(props) {\n  const state = useStore({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return [\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > layerName 1`] = `\n\"export default function MyLayerNameComponent(props) {\n  return [\n    <section>\n      <div\n        $name=\\\\\"🌟layer-name\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"export default function MultipleOnUpdate(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MultipleOnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return [<input {...state.attrs} {...props} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function NestedShow(props) {\n  return [\n    props.conditionA ? (\n      !props.conditionB ? (\n        <div>if condition A and condition B</div>\n      ) : (\n        <div>else-condition-B</div>\n      )\n    ) : (\n      <div>else-condition-A</div>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > nestedStyles 1`] = `\n\"export default function NestedStyles(props) {\n  return [\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"export default function MyNormalizedLayerNamesComponent(props) {\n  return [\n    <section>\n      <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n      <div $name=\\\\\"---\\\\\">Dashes</div>\n      <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n      <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n      <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n      <div\n        $name=\\\\\"0\\\\\"\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        $name=\\\\\"123\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        $name=\\\\\"name123\\\\\"\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        $name=\\\\\"456name\\\\\"\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        $name=\\\\\"name-789\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div $name=\\\\\"🚀\\\\\">Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onEvent 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Embed(props) {\n  const state = useStore({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return [\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onInit & onMount 1`] = `\n\"export default function OnInit(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onInit 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nexport default function OnInit(props) {\n  const state = useStore({ name: \\\\\"\\\\\" });\n\n  return [\n    <div>\n      Default name defined by parent\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onInitPlain 1`] = `\n\"export default function OnInitPlain(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onMount 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onMountMultiple 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }),\n    onMount(() => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    }),\n    onMount(() => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onUpdate 1`] = `\n\"export default function OnUpdate(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nexport default function MyBasicComponent(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > preserveTyping 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return [\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > propsInterface 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > propsType 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdate(props) {\n  const state = useStore({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > renderBlock 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  Show,\n  For,\n  RenderRepeatedBlock,\n  RenderBlock,\n  BlockStyles,\n} from \\\\\"@components\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\n\nexport default function RenderBlock(props) {\n  const state = useStore({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  });\n\n  return [\n    state.shouldWrap ? (\n      <>\n        {isEmptyHtmlElement(state.tag) ? (\n          <state.tag {...state.attributes} {...state.actions} />\n        ) : null}\n        {!isEmptyHtmlElement(state.tag) && state.repeatItemData\n          ? state.repeatItemData.map((data, index) => (\n              <RenderRepeatedBlock\n                key={index}\n                repeatContext={data.context}\n                block={data.block}\n              />\n            ))\n          : null}\n        {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n          <state.tag {...state.attributes} {...state.actions}>\n            <state.renderComponentTag {...state.renderComponentProps} />\n            {state.childrenWithoutParentComponent.map((child, index) => (\n              <RenderBlock\n                key={\\\\\"render-block-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            ))}\n            {state.childrenWithoutParentComponent.map((child, index) => (\n              <BlockStyles\n                key={\\\\\"block-style-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            ))}\n          </state.tag>\n        ) : null}\n      </>\n    ) : (\n      <state.renderComponentTag {...state.renderComponentProps} />\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { RenderBlocks } from \\\\\"@components\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\nexport default function RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  return [\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"columns\\\\\",\n      }}\n      onClick={(event) => trackClick(props.content.id)}\n    >\n      <RenderBlocks blocks={props.content.blocks} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { Fragment, Show } from \\\\\"@components\\\\\";\n\nexport default function Button(props) {\n  return [\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function RenderStyles(props) {\n  return [props.foo === \\\\\"bar\\\\\" ? <div>Bar</div> : <div>Foo</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Show, MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Show, MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > setState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function SetState(props) {\n  const state = useStore({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n.value[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function ShowWithOtherValues(props) {\n  return [\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : undefined}\n      {props.conditionA ? undefined : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        props.conditionB === \\\\\"Complete\\\\\" ? (\n          <>20mb</>\n        ) : (\n          <>9mb</>\n        )\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        props.conditionB === \\\\\"Complete\\\\\" ? (\n          <div>complete</div>\n        ) : (\n          <>9mb</>\n        )\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"@components\\\\\";\n\nexport default function NestedShow(props) {\n  return [\n    props.conditionA ? (\n      props.items.map((item, idx) => <div key={idx}>{item}</div>)\n    ) : (\n      <div>else-condition-A</div>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function ShowWithOtherValues(props) {\n  return [\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : undefined}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\n\nexport default function ShowRootText(props) {\n  return [props.conditionA ? <>ContentA</> : <div>else-condition-A</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > spreadAttrs 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...attrs} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...props.nested} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > spreadProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...props} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > store-async-function 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: 123 });\n\n  return [<div>{state.foo}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"export default function MyComponent(props) {\n  return [\n    <div\n      class=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"export default function StylePropClassAndCss(props) {\n  return [\n    <div\n      class=\\\\\"USE_TARGET_BLOCK_1\\\\\"\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"@components\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\nexport default function SubComponent(props) {\n  return [<Foo />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > svgComponent 1`] = `\n\"export default function SvgComponent(props) {\n  return [\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > typeDependency 1`] = `\n\"export default function TypeDependency(props) {\n  return [<div>{props.foo}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > typeExternalProps 1`] = `\n\"export default function TypeExternalProps(props) {\n  return [\n    <div>\n      Hello\n      {props.name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function TypeExternalStore(props) {\n  const state = useStore({ _name: \\\\\"test\\\\\" });\n\n  return [\n    <div>\n      Hello\n      {state._name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function TypeGetterStore(props) {\n  const state = useStore({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > use-style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return [<button type=\\\\\"button\\\\\">Button</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > use-style-and-css 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return [\n    <button\n      type=\\\\\"button\\\\\"\n      css={{\n        background: \\\\\"blue\\\\\",\n        color: \\\\\"white\\\\\",\n      }}\n    >\n      Button\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`);\n\n  return [<button type=\\\\\"button\\\\\">Button</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > useTarget 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseTargetComponent(props) {\n  const state = useStore({\n    get name() {\n      const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  onMount(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    (\\\\\"USE_TARGET_BLOCK_2\\\\\");\n  });\n\n  return [<div>{state.name}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default function MyBasicWebComponent(props) {\n  return [\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Remove Internal mitosis package 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return [\n    <div>\n      Hello\n      {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Advanced 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return [\n    <main>\n      {state.names.map((person, i) => (\n        <div>\n          {i}:{person}\n        </div>\n      ))}\n      {state.names.map((person, index) => (\n        <span>{person}</span>\n      ))}\n      {state.names.map((_, index) => (\n        <br />\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((_, ee) => (\n        <pre>{ee}</pre>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((_, index) => (\n        <p>{index}</p>\n      ))}\n      {state.names.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((person, count) => (\n        <span>\n          {person}\n          {count}\n        </span>\n      ))}\n      {state.names.map((person, i) => (\n        <span>\n          {person}\n          {i}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      }).map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n    </main>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Fragment } from \\\\\"@components\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n\n  return [\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange={(myEvent) => (state.name = myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic 2`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Show } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return [\n    <div>\n      {state.names.map((person, index) =>\n        person === state.name ? (\n          <>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </>\n        ) : null\n      )}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic Context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return [\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange={(event) => state.onChange()} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nexport default function MyBasicOnMountUpdateComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({\n  outputs: [\\\\\"onMessage\\\\\", \\\\\"onEvent\\\\\"],\n  baz: \\\\\"metadata inside component\\\\\",\n});\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicAttribute 1`] = `\n\"export default function MyComponent(props) {\n  return [<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { Show, MyBooleanAttributeComponent } from \\\\\"@components\\\\\";\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nexport default function MyBooleanAttribute(props) {\n  return [\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent list={null} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  MyBasicComponent,\n  MyBasicOnMountUpdateComponent,\n  MyBasicOutputsComponent,\n} from \\\\\"@components\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default function MyBasicChildComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  });\n\n  return [\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicFor 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return [\n    <div>\n      {state.names.map((person, index) => (\n        <Fragment>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </Fragment>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicRef 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Fragment } from \\\\\"@components\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n\n  return [\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefAssignmentComponent(props) {\n  const state = useStore({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef);\n      holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport default function MyPreviousComponent(props) {\n  const state = useStore({ count: 0 });\n\n  return [\n    <div>\n      <h1>\n        Now:\n        {state.count}, before:\n        {prevCount}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Button 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Columns 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nexport default function Column(props) {\n  const state = useStore({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return [\n    <div\n      class=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      {props.columns.map((column, index) => (\n        <div\n          class=\\\\\"builder-column\\\\\"\n          css={{\n            flexGrow: \\\\\"1\\\\\",\n          }}\n        >\n          {column.content}\n          {index}\n        </div>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ContentSlotCode(props) {\n  return [\n    <div>\n      <Slot name={props.slotTesting} />\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot />\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ContentSlotJsxCode(props) {\n  const state = useStore({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return [\n    props.slotReference ? (\n      <div\n        name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n        title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n        {...props.attributes}\n        onClick={(event) => state.show()}\n        class={state.cls}\n      >\n        {state.showContent && props.slotContent ? (\n          <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n        ) : null}\n        <div>\n          <hr />\n        </div>\n        <div>{props.children}</div>\n      </div>\n    ) : null,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > CustomCode 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return [\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Embed 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return [\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Form 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For, BuilderBlockComponent, BuilderBlocks } from \\\\\"@components\\\\\";\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport default function FormComponent(props) {\n  const state = useStore({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: props.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                state.formErrorMessage = message;\n              }\n            }\n\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (props.resetFormOnSubmit !== false) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (props.successUrl) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: props.successUrl,\n                    },\n                  });\n                  formRef.current.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n\n  const formRef = useRef<HTMLFormElement>(null);\n  const formRef = useRef<HTMLFormElement>(null);\n\n  return [\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => state.onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children\n        ? (props.builderBlock?.children).map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))\n        : null}\n      {state.submissionState === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n      ) : null}\n      {state.submissionState === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        />\n      ) : null}\n      {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n        <pre\n          class=\\\\\"builder-form-error-text\\\\\"\n          css={{\n            padding: \\\\\"10px\\\\\",\n            color: \\\\\"red\\\\\",\n            textAlign: \\\\\"center\\\\\",\n          }}\n        >\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      ) : null}\n      {state.submissionState === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        />\n      ) : null}\n    </form>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Image 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show } from \\\\\"@components\\\\\";\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nexport default function Image(props) {\n  const state = useStore({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  const pictureRef = useRef<HTMLElement>();\n  const pictureRef = useRef<HTMLElement>();\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onUnMount(() => {\n    if (state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n    }\n  });\n\n  return [\n    <div>\n      <picture ref={pictureRef}>\n        {!state.useLazyLoading() || state.load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            class={\\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")}\n            src={props.image}\n            onLoad={(event) => state.setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Image State 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function ImgStateComponent(props) {\n  const state = useStore({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return [\n    <div>\n      {state.images.map((item, itemIndex) => (\n        <Fragment>\n          <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n        </Fragment>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Img 1`] = `\n\"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function ImgComponent(props) {\n  return [\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Input 1`] = `\n\"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function FormInputComponent(props) {\n  return [\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > InputParent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { FormInputComponent } from \\\\\"@components\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default function Stepper(props) {\n  const state = useStore({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return [\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > NestedStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nexport default function NestedStore(props) {\n  const state = useStore({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return [\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > RawText 1`] = `\n\"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nexport default function RawText(props) {\n  return [\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      innerHTML={props.text || \\\\\"\\\\\"}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Section 1`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionComponent(props) {\n  return [\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Section 2`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For } from \\\\\"@components\\\\\";\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionStateComponent(props) {\n  const state = useStore({ max: 42, items: [42] });\n\n  return [\n    state.max\n      ? state.items.map((item, index) => (\n          <section\n            {...props.attributes}\n            style={{\n              maxWidth: item + state.max,\n            }}\n          >\n            {props.children}\n          </section>\n        ))\n      : null,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Select 1`] = `\n\"import { For } from \\\\\"@components\\\\\";\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function SelectComponent(props) {\n  return [\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode, Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <ContentSlotCode>\n        <Slot testing={<div>Hello</div>} />\n      </ContentSlotCode>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nexport default function SlotCode(props) {\n  return [\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\" />\n      <Slot name=\\\\\"top\\\\\" />\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show, For } from \\\\\"@components\\\\\";\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport default function SmileReviews(props) {\n  const state = useStore({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return [\n    <div data-user={state.name}>\n      <button onClick={(event) => (state.showReviewPrompt = true)}>\n        Write a review\n      </button>\n      {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <button\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n            onClick={(ev) => {\n              ev.preventDefault();\n              state.showReviewPrompt = false;\n            }}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {state.reviews.map((review, index) => (\n        <div\n          $name=\\\\\"Review\\\\\"\n          key={review.id}\n          css={{\n            margin: \\\\\"10px\\\\\",\n            padding: \\\\\"10px\\\\\",\n            background: \\\\\"white\\\\\",\n            display: \\\\\"flex\\\\\",\n            borderRadius: \\\\\"5px\\\\\",\n            boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n            WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n          }}\n        >\n          <img\n            css={{\n              height: \\\\\"30px\\\\\",\n              width: \\\\\"30px\\\\\",\n              marginRight: \\\\\"10px\\\\\",\n            }}\n            src={review.avatar}\n          />\n          <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>\n              N:\n              {index}\n            </div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </div>\n      ))}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > StoreComment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: true, bar() {} });\n\n  return [<Fragment>{state.foo}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return [<Fragment>{state.foo(state.errors)}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return [<Fragment>{state.bar()}</Fragment>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Submit 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nexport default function SubmitButton(props) {\n  return [\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Text 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function Text(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return [\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      innerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Textarea 1`] = `\n\"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nexport default function Textarea(props) {\n  return [\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nexport default function UseValueAndFnFromStore(props) {\n  const state = useStore({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  return [<div>Test</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > Video 1`] = `\n\"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nexport default function Video(props) {\n  return [\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For, Fragment } from \\\\\"@components\\\\\";\n\nexport default function BasicForFragment(props) {\n  const state = useStore({ id: \\\\\"xyz\\\\\" });\n\n  return [\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"].map((option, index) => (\n        <Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"].map((option, index) => (\n        <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"].map((option, index) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForNoTagRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return [\n    <state.TagNameGetter>\n      Hello\n      <state.tag>{state.name}</state.tag>\n      {props.actions.map((action, index) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicForwardRef 1`] = `\n\"',' expected. (19:12)\n  17 |     const state = useStore({ name: 'PatrickJS',});\n  18 |\n> 19 | const props.inputRef = useRef();\n     |            ^\n  20 |\n  21 |\n  22 |\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"',' expected. (25:12)\n  23 |     const state = useStore({ name: 'PatrickJS',});\n  24 |\n> 25 | const props.inputRef = useRef();\n     |            ^\n  26 |\n  27 |\n  28 |\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnUpdateReturnComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return [\n    <div>\n      Hello!\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true } });\n\nexport default function BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return [<button ref={buttonRef}>Attribute Passing</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true, customRef: \\\\\"buttonRef\\\\\" } });\n\nexport default function BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return [\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"@components\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        class=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > class + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > className + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > className 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ClassNameCode(props) {\n  const state = useStore({ bindings: \\\\\"a binding\\\\\" });\n\n  return [\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > classState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return [\n    <div\n      class={state.classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nuseMetadata({\n  stencil: {\n    propOptions: {\n      className: { attribute: \\\\\"classname\\\\\", mutable: false, reflect: false },\n    },\n  },\n});\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div class={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nuseMetadata({\n  x: \\\\\"y\\\\\",\n  asdf: {\n    stringValue: \\\\\"d\\\\\",\n    booleanValue: true,\n    numberValue: 1,\n    innerObject: { stringValue: \\\\\"inner\\\\\", numberValue: 2, booleanValue: false },\n    spreadStringValue: \\\\\"f\\\\\",\n  },\n});\n\nexport default function ComplexMetaRaw(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return [\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return [\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n      <div>other</div>\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default function RenderContent(props) {\n  return [<div>setting context</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nexport default function Button(props) {\n  return [\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nexport default function ComponentWithTypes(props) {\n  return [\n    <div>\n      {\\\\\" \\\\\"}\n      Hello\n      {props.name || DEFAULT_VALUES.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventInputAndChange(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return [\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={state.name}\n        onInput={(event) => (state.name = event.target.value)}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > eventProps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nexport default function EventPropsComponent(props) {\n  const state = useStore({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return [<button onClick={(event) => state.handleClick()}>Test</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > expressionState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return [<div>{state.refToUse}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nuseMetadata({\n  figma: {\n    name: \\\\\"def-button-beta-outlined\\\\\",\n    url: \\\\\"https://www.figma.com/xxx\\\\\",\n    props: {\n      iconSmall: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Small\\\\\" },\n      iconMedium: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Medium\\\\\" },\n      label: { type: \\\\\"string\\\\\", key: \\\\\"✏️ Label\\\\\" },\n      icon: {\n        type: \\\\\"boolean\\\\\",\n        key: \\\\\"👁️ Icon\\\\\",\n        value: { false: false, true: \\\\\"placeholder\\\\\" },\n      },\n      interactiveState: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Interactive State\\\\\",\n        value: {\n          \\\\\"(Def) Enabled\\\\\": false,\n          Hovered: false,\n          Pressed: false,\n          Focused: false,\n          Disabled: \\\\\"true\\\\\",\n        },\n      },\n      size: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Size\\\\\",\n        value: { \\\\\"(Def) Medium\\\\\": false, Small: \\\\\"small\\\\\" },\n      },\n      width: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Width\\\\\",\n        value: { \\\\\"(Def) Auto Width\\\\\": false, \\\\\"Full Width\\\\\": \\\\\"full\\\\\" },\n      },\n    },\n  },\n});\n\nexport default function FigmaButton(props) {\n  return [\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > functionProps 1`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\nexport default function MyBasicComponent(props) {\n  return [\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > getterState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nexport default function Button(props) {\n  const state = useStore({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return [\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > import types 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderBlock } from \\\\\"@components\\\\\";\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nexport default function RenderContent(props) {\n  const state = useStore({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return [\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > layerName 1`] = `\n\"export default function MyLayerNameComponent(props) {\n  return [\n    <section>\n      <div\n        $name=\\\\\"🌟layer-name\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"export default function MultipleOnUpdate(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MultipleOnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return [<input {...state.attrs} {...props} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default function NestedShow(props) {\n  return [\n    props.conditionA ? (\n      !props.conditionB ? (\n        <div>if condition A and condition B</div>\n      ) : (\n        <div>else-condition-B</div>\n      )\n    ) : (\n      <div>else-condition-A</div>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > nestedStyles 1`] = `\n\"export default function NestedStyles(props) {\n  return [\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nexport default function MyNormalizedLayerNamesComponent(props) {\n  return [\n    <section>\n      <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n      <div $name=\\\\\"---\\\\\">Dashes</div>\n      <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n      <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n      <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n      <div\n        $name=\\\\\"0\\\\\"\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        $name=\\\\\"123\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        $name=\\\\\"name123\\\\\"\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        $name=\\\\\"456name\\\\\"\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        $name=\\\\\"name-789\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div $name=\\\\\"🚀\\\\\">Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onEvent 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Embed(props) {\n  const state = useStore({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return [\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onInit & onMount 1`] = `\n\"export default function OnInit(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onInit 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nexport default function OnInit(props) {\n  const state = useStore({ name: \\\\\"\\\\\" });\n\n  return [\n    <div>\n      Default name defined by parent\n      {state.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onInitPlain 1`] = `\n\"export default function OnInitPlain(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onMount 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onMountMultiple 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }),\n    onMount(() => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    }),\n    onMount(() => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onUpdate 1`] = `\n\"export default function OnUpdate(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nexport default function OnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"type Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nexport default function MyBasicComponent(props) {\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > preserveTyping 1`] = `\n\"export type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return [\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > propsInterface 1`] = `\n\"interface Person {\n  name: string;\n  age?: number;\n}\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > propsType 1`] = `\n\"type Person = {\n  name: string;\n  age?: number;\n};\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdate(props) {\n  const state = useStore({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > renderBlock 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  Show,\n  For,\n  RenderRepeatedBlock,\n  RenderBlock,\n  BlockStyles,\n} from \\\\\"@components\\\\\";\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nexport default function RenderBlock(props) {\n  const state = useStore({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  });\n\n  return [\n    state.shouldWrap ? (\n      <>\n        {isEmptyHtmlElement(state.tag) ? (\n          <state.tag {...state.attributes} {...state.actions} />\n        ) : null}\n        {!isEmptyHtmlElement(state.tag) && state.repeatItemData\n          ? state.repeatItemData.map((data, index) => (\n              <RenderRepeatedBlock\n                key={index}\n                repeatContext={data.context}\n                block={data.block}\n              />\n            ))\n          : null}\n        {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n          <state.tag {...state.attributes} {...state.actions}>\n            <state.renderComponentTag {...state.renderComponentProps} />\n            {state.childrenWithoutParentComponent.map((child, index) => (\n              <RenderBlock\n                key={\\\\\"render-block-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            ))}\n            {state.childrenWithoutParentComponent.map((child, index) => (\n              <BlockStyles\n                key={\\\\\"block-style-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            ))}\n          </state.tag>\n        ) : null}\n      </>\n    ) : (\n      <state.renderComponentTag {...state.renderComponentProps} />\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { RenderBlocks } from \\\\\"@components\\\\\";\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\nexport default function RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  return [\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"columns\\\\\",\n      }}\n      onClick={(event) => trackClick(props.content.id)}\n    >\n      <RenderBlocks blocks={props.content.blocks} />\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { Fragment, Show } from \\\\\"@components\\\\\";\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props) {\n  return [\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nexport default function RenderStyles(props) {\n  return [props.foo === \\\\\"bar\\\\\" ? <div>Bar</div> : <div>Foo</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Show, MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Show, MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > setState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function SetState(props) {\n  const state = useStore({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n.value[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default function ShowWithOtherValues(props) {\n  return [\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : undefined}\n      {props.conditionA ? undefined : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        props.conditionB === \\\\\"Complete\\\\\" ? (\n          <>20mb</>\n        ) : (\n          <>9mb</>\n        )\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        props.conditionB === \\\\\"Complete\\\\\" ? (\n          <div>complete</div>\n        ) : (\n          <>9mb</>\n        )\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"@components\\\\\";\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nexport default function NestedShow(props) {\n  return [\n    props.conditionA ? (\n      props.items.map((item, idx) => <div key={idx}>{item}</div>)\n    ) : (\n      <div>else-condition-A</div>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowWithOtherValues(props) {\n  return [\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : undefined}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"@components\\\\\";\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowRootText(props) {\n  return [props.conditionA ? <>ContentA</> : <div>else-condition-A</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"type Props = {\n  id: Signal<string>;\n  foo: Signal<{\n    bar: {\n      baz: number;\n    };\n  }>;\n};\n\nexport default function MyBasicComponent(props) {\n  return [\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > spreadAttrs 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...attrs} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...props.nested} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > spreadProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return [<input {...props} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > store-async-function 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: 123 });\n\n  return [<div>{state.foo}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"export default function MyComponent(props) {\n  return [\n    <div\n      class=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"export default function StylePropClassAndCss(props) {\n  return [\n    <div\n      class=\\\\\"USE_TARGET_BLOCK_1\\\\\"\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"@components\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\nexport default function SubComponent(props) {\n  return [<Foo />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > svgComponent 1`] = `\n\"export default function SvgComponent(props) {\n  return [\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > typeDependency 1`] = `\n\"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.js\\\\\";\n\nexport default function TypeDependency(props) {\n  return [<div>{props.foo}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nexport default function TypeExternalProps(props) {\n  return [\n    <div>\n      Hello\n      {props.name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nexport default function TypeExternalStore(props) {\n  const state = useStore({ _name: \\\\\"test\\\\\" });\n\n  return [\n    <div>\n      Hello\n      {state._name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nexport default function TypeGetterStore(props) {\n  const state = useStore({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return [\n    <div>\n      Hello\n      {state.name}!{\\\\\" \\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > use-style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return [<button type=\\\\\"button\\\\\">Button</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > use-style-and-css 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return [\n    <button\n      type=\\\\\"button\\\\\"\n      css={{\n        background: \\\\\"blue\\\\\",\n        color: \\\\\"white\\\\\",\n      }}\n    >\n      Button\n    </button>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`);\n\n  return [<button type=\\\\\"button\\\\\">Button</button>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > useTarget 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseTargetComponent(props) {\n  const state = useStore({\n    get name() {\n      const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  onMount(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    (\\\\\"USE_TARGET_BLOCK_2\\\\\");\n  });\n\n  return [<div>{state.name}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default function MyBasicWebComponent(props) {\n  return [\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return [\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > bindGroup 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return [\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>\n        Tortilla:\n        {state.tortilla}\n      </p>\n      <p>\n        Fillings:\n        {state.fillings}\n      </p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > bindProperty 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ value: \\\\\"hello\\\\\" });\n\n  return [<input value={state.value} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > classDirective 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ focus: true });\n\n  return [\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ activeTab: 0 });\n\n  return [<div>{state.activeTab}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > each 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return [\n    <ul>\n      {state.numbers.map((num, index) => (\n        <li>{num}</li>\n      ))}\n    </ul>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > html 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return [<div innerHTML={state.html} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > ifElse 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return [\n    state.show ? (\n      <button onClick={(event) => state.toggle(event)}> Hide </button>\n    ) : (\n      <button onClick={(event) => state.toggle(event)}> Show </button>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > imports 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Button, Slot } from \\\\\"@components\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ disabled: false });\n\n  return [\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot />\n      </Button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"export default function MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > reactive 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return [\n    <div>\n      <input value={state.name} />\n      Lowercase:\n      {state.lowercaseName}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  return [\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result:\n      {state.result}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > slots 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`);\n\n  return [<input class=\\\\\"form-input\\\\\" />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Javascript Test > textExpressions 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ a: 5, b: 12 });\n\n  return [\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return [\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > bindGroup 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return [\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>\n        Tortilla:\n        {state.tortilla}\n      </p>\n      <p>\n        Fillings:\n        {state.fillings}\n      </p>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > bindProperty 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ value: \\\\\"hello\\\\\" });\n\n  return [<input value={state.value} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > classDirective 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ focus: true });\n\n  return [\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ activeTab: 0 });\n\n  return [<div>{state.activeTab}</div>];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > each 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { For } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return [\n    <ul>\n      {state.numbers.map((num, index) => (\n        <li>{num}</li>\n      ))}\n    </ul>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return [\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > html 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return [<div innerHTML={state.html} />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > ifElse 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Show } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return [\n    state.show ? (\n      <button onClick={(event) => state.toggle(event)}> Hide </button>\n    ) : (\n      <button onClick={(event) => state.toggle(event)}> Show </button>\n    ),\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > imports 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Button, Slot } from \\\\\"@components\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ disabled: false });\n\n  return [\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot />\n      </Button>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"export default function MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n\n  return [<div />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > reactive 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return [\n    <div>\n      <input value={state.name} />\n      Lowercase:\n      {state.lowercaseName}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  return [\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result:\n      {state.result}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > slots 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return [\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`);\n\n  return [<input class=\\\\\"form-input\\\\\" />];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy (native loops and conditionals) > svelte > Typescript Test > textExpressions 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ a: 5, b: 12 });\n\n  return [\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>,\n  ];\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Advanced 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <main>\n      <For each={state.names}>\n        {(person, i) => (\n          <div>\n            {i}:{person}\n          </div>\n        )}\n      </For>\n      <For each={state.names}>{(person, index) => <span>{person}</span>}</For>\n      <For each={state.names}>{(_, index) => <br />}</For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(_, ee) => <pre>{ee}</pre>}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(_, index) => <p>{index}</p>}\n      </For>\n      <For each={state.names}>\n        {(person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, count) => (\n          <span>\n            {person}\n            {count}\n          </span>\n        )}\n      </For>\n      <For each={state.names}>\n        {(person, i) => (\n          <span>\n            {person}\n            {i}\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        )}\n      </For>\n    </main>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      </Show>\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange={(myEvent) => (state.name = myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic 2`] = `\n\"import { useStore, For, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person, index) => (\n          <Show when={person === state.name}>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Show>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic Context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange={(event) => state.onChange()} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnMountUpdateComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({\n  outputs: [\\\\\"onMessage\\\\\", \\\\\"onEvent\\\\\"],\n  baz: \\\\\"metadata inside component\\\\\",\n});\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicAttribute 1`] = `\n\"export default function MyComponent(props) {\n  return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyBooleanAttributeComponent } from \\\\\"@components\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nexport default function MyBooleanAttribute(props) {\n  return (\n    <div>\n      <Show when={props.children}>\n        {props.children}\n        {props.type}\n      </Show>\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  MyBasicComponent,\n  MyBasicOnMountUpdateComponent,\n  MyBasicOutputsComponent,\n} from \\\\\"@components\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default function MyBasicChildComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicFor 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person, index) => (\n          <Fragment>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Fragment>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicRef 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      </Show>\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicRefAssignmentComponent(props) {\n  const state = useStore({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef);\n      holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport default function MyPreviousComponent(props) {\n  const state = useStore({ count: 0 });\n\n  return (\n    <div>\n      <h1>\n        Now:\n        {state.count}, before:\n        {prevCount}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Button 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Columns 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Column(props) {\n  const state = useStore({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <div\n      class=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      <For each={props.columns}>\n        {(column, index) => (\n          <div\n            class=\\\\\"builder-column\\\\\"\n            css={{\n              flexGrow: \\\\\"1\\\\\",\n            }}\n          >\n            {column.content}\n            {index}\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function ContentSlotCode(props) {\n  return (\n    <div>\n      <Slot name={props.slotTesting} />\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot />\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { useStore, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Slot } from \\\\\"@components\\\\\";\n\nexport default function ContentSlotJsxCode(props) {\n  const state = useStore({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <Show when={props.slotReference}>\n      <div\n        name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n        title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n        {...props.attributes}\n        onClick={(event) => state.show()}\n        class={state.cls}\n      >\n        <Show when={state.showContent && props.slotContent}>\n          <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n        </Show>\n        <div>\n          <hr />\n        </div>\n        <div>{props.children}</div>\n      </div>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > CustomCode 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Embed 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Form 1`] = `\n\"import { useStore, useRef, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { BuilderBlockComponent, BuilderBlocks } from \\\\\"@components\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport default function FormComponent(props) {\n  const state = useStore({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: props.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                state.formErrorMessage = message;\n              }\n            }\n\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (props.resetFormOnSubmit !== false) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (props.successUrl) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: props.successUrl,\n                    },\n                  });\n                  formRef.current.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n\n  const formRef = useRef(null);\n  const formRef = useRef(null);\n\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => state.onSubmit(event)}\n      {...props.attributes}\n    >\n      <Show when={props.builderBlock && props.builderBlock.children}>\n        <For each={props.builderBlock?.children}>\n          {(block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          )}\n        </For>\n      </Show>\n      <Show when={state.submissionState === \\\\\"error\\\\\"}>\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n      </Show>\n      <Show when={state.submissionState === \\\\\"sending\\\\\"}>\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        />\n      </Show>\n      <Show when={state.submissionState === \\\\\"error\\\\\" && state.responseData}>\n        <pre\n          class=\\\\\"builder-form-error-text\\\\\"\n          css={{\n            padding: \\\\\"10px\\\\\",\n            color: \\\\\"red\\\\\",\n            textAlign: \\\\\"center\\\\\",\n          }}\n        >\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      </Show>\n      <Show when={state.submissionState === \\\\\"success\\\\\"}>\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        />\n      </Show>\n    </form>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Image 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Image(props) {\n  const state = useStore({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  const pictureRef = useRef();\n  const pictureRef = useRef();\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onUnMount(() => {\n    if (state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        <Show when={!state.useLazyLoading() || state.load}>\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            class={\\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")}\n            src={props.image}\n            onLoad={(event) => state.setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        </Show>\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Image State 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function ImgStateComponent(props) {\n  const state = useStore({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      <For each={state.images}>\n        {(item, itemIndex) => (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > InputParent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { FormInputComponent } from \\\\\"@components\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default function Stepper(props) {\n  const state = useStore({\n    handleChange(value) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > NestedStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function NestedStore(props) {\n  const state = useStore({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > RawText 1`] = `\n\"export default function RawText(props) {\n  return (\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      innerHTML={props.text || \\\\\"\\\\\"}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Section 1`] = `\n\"export default function SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Section 2`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function SectionStateComponent(props) {\n  const state = useStore({ max: 42, items: [42] });\n\n  return (\n    <Show when={state.max}>\n      <For each={state.items}>\n        {(item, index) => (\n          <section\n            {...props.attributes}\n            style={{\n              maxWidth: item + state.max,\n            }}\n          >\n            {props.children}\n          </section>\n        )}\n      </For>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Select 1`] = `\n\"import { For } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      <For each={props.options}>\n        {(option, index) => (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        )}\n      </For>\n    </select>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode, Slot } from \\\\\"@components\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode>\n        <Slot testing={<div>Hello</div>} />\n      </ContentSlotCode>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"@components\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\" />\n      <Slot name=\\\\\"top\\\\\" />\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport default function SmileReviews(props) {\n  const state = useStore({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick={(event) => (state.showReviewPrompt = true)}>\n        Write a review\n      </button>\n      <Show when={state.showReviewPrompt || \\\\\"asdf\\\\\"}>\n        <input placeholder=\\\\\"Email\\\\\" />\n        <input\n          placeholder=\\\\\"Title\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <button\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n          onClick={(ev) => {\n            ev.preventDefault();\n            state.showReviewPrompt = false;\n          }}\n        >\n          Submit\n        </button>\n      </Show>\n      <For each={state.reviews}>\n        {(review, index) => (\n          <div\n            $name=\\\\\"Review\\\\\"\n            key={review.id}\n            css={{\n              margin: \\\\\"10px\\\\\",\n              padding: \\\\\"10px\\\\\",\n              background: \\\\\"white\\\\\",\n              display: \\\\\"flex\\\\\",\n              borderRadius: \\\\\"5px\\\\\",\n              boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n              WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n            }}\n          >\n            <img\n              css={{\n                height: \\\\\"30px\\\\\",\n                width: \\\\\"30px\\\\\",\n                marginRight: \\\\\"10px\\\\\",\n              }}\n              src={review.avatar}\n            />\n            <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>\n                N:\n                {index}\n              </div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > StoreComment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: true, bar() {} });\n\n  return <Fragment>{state.foo}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <Fragment>{state.foo(state.errors)}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <Fragment>{state.bar()}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Submit 1`] = `\n\"export default function SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Text 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function Text(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      innerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Textarea 1`] = `\n\"export default function Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseValueAndFnFromStore(props) {\n  const state = useStore({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  return <div>Test</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > Video 1`] = `\n\"export default function Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function BasicForFragment(props) {\n  const state = useStore({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n        {(option, index) => (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n        {(option, index) => (\n          <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <select>\n        <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n          {(option, index) => (\n            <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          )}\n        </For>\n      </select>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForNoTagRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello\n      <state.tag>{state.name}</state.tag>\n      <For each={props.actions}>\n        {(action, index) => (\n          <state.TagName>\n            <action.icon />\n            <span>{action.text}</span>\n          </state.TagName>\n        )}\n      </For>\n    </state.TagNameGetter>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicForwardRef 1`] = `\n\"',' expected. (16:12)\n  14 |     const state = useStore({ name: 'PatrickJS',});\n  15 |\n> 16 | const props.inputRef = useRef();\n     |            ^\n  17 |\n  18 |\n  19 |\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"',' expected. (22:12)\n  20 |     const state = useStore({ name: 'PatrickJS',});\n  21 |\n> 22 | const props.inputRef = useRef();\n     |            ^\n  23 |\n  24 |\n  25 |\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnUpdateReturnComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello!\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true } });\n\nexport default function BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n  const buttonRef = useRef(null);\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true, customRef: \\\\\"buttonRef\\\\\" } });\n\nexport default function BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"@components\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        class=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > class + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > className + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > className 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function ClassNameCode(props) {\n  const state = useStore({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > classState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <div\n      class={state.classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nuseMetadata({\n  stencil: {\n    propOptions: {\n      className: { attribute: \\\\\"classname\\\\\", mutable: false, reflect: false },\n    },\n  },\n});\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div class={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nuseMetadata({\n  x: \\\\\"y\\\\\",\n  asdf: {\n    stringValue: \\\\\"d\\\\\",\n    booleanValue: true,\n    numberValue: 1,\n    innerObject: { stringValue: \\\\\"inner\\\\\", numberValue: 2, booleanValue: false },\n    spreadStringValue: \\\\\"f\\\\\",\n  },\n});\n\nexport default function ComplexMetaRaw(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return (\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return (\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n      <div>other</div>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default function RenderContent(props) {\n  return <div>setting context</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nexport default function ComponentWithTypes(props) {\n  return (\n    <div>\n      {\\\\\" \\\\\"}\n      Hello\n      {props.name || DEFAULT_VALUES.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventInputAndChange(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={state.name}\n        onInput={(event) => (state.name = event.target.value)}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > eventProps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventPropsComponent(props) {\n  const state = useStore({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > expressionState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nuseMetadata({\n  figma: {\n    name: \\\\\"def-button-beta-outlined\\\\\",\n    url: \\\\\"https://www.figma.com/xxx\\\\\",\n    props: {\n      iconSmall: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Small\\\\\" },\n      iconMedium: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Medium\\\\\" },\n      label: { type: \\\\\"string\\\\\", key: \\\\\"✏️ Label\\\\\" },\n      icon: {\n        type: \\\\\"boolean\\\\\",\n        key: \\\\\"👁️ Icon\\\\\",\n        value: { false: false, true: \\\\\"placeholder\\\\\" },\n      },\n      interactiveState: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Interactive State\\\\\",\n        value: {\n          \\\\\"(Def) Enabled\\\\\": false,\n          Hovered: false,\n          Pressed: false,\n          Focused: false,\n          Disabled: \\\\\"true\\\\\",\n        },\n      },\n      size: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Size\\\\\",\n        value: { \\\\\"(Def) Medium\\\\\": false, Small: \\\\\"small\\\\\" },\n      },\n      width: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Width\\\\\",\n        value: { \\\\\"(Def) Auto Width\\\\\": false, \\\\\"Full Width\\\\\": \\\\\"full\\\\\" },\n      },\n    },\n  },\n});\n\nexport default function FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > functionProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > getterState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Button(props) {\n  const state = useStore({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > import types 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderBlock } from \\\\\"@components\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nexport default function RenderContent(props) {\n  const state = useStore({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > layerName 1`] = `\n\"export default function MyLayerNameComponent(props) {\n  return (\n    <section>\n      <div\n        $name=\\\\\"🌟layer-name\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"export default function MultipleOnUpdate(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MultipleOnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function NestedShow(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <Show when={!props.conditionB} else={<div>else-condition-B</div>}>\n        <div>if condition A and condition B</div>\n      </Show>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > nestedStyles 1`] = `\n\"export default function NestedStyles(props) {\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"export default function MyNormalizedLayerNamesComponent(props) {\n  return (\n    <section>\n      <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n      <div $name=\\\\\"---\\\\\">Dashes</div>\n      <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n      <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n      <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n      <div\n        $name=\\\\\"0\\\\\"\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        $name=\\\\\"123\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        $name=\\\\\"name123\\\\\"\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        $name=\\\\\"456name\\\\\"\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        $name=\\\\\"name-789\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div $name=\\\\\"🚀\\\\\">Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onEvent 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Embed(props) {\n  const state = useStore({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n  });\n\n  const elem = useRef(null);\n  const elem = useRef(null);\n\n  onMount(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onInit & onMount 1`] = `\n\"export default function OnInit(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onInit 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nexport default function OnInit(props) {\n  const state = useStore({ name: \\\\\"\\\\\" });\n\n  return (\n    <div>\n      Default name defined by parent\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onInitPlain 1`] = `\n\"export default function OnInitPlain(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onMount 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onMountMultiple 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }),\n    onMount(() => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    }),\n    onMount(() => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onUpdate 1`] = `\n\"export default function OnUpdate(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nexport default function MyBasicComponent(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > preserveTyping 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > propsInterface 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > propsType 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdate(props) {\n  const state = useStore({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > renderBlock 1`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderRepeatedBlock, RenderBlock, BlockStyles } from \\\\\"@components\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\n\nexport default function RenderBlock(props) {\n  const state = useStore({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  });\n\n  return (\n    <Show\n      when={state.shouldWrap}\n      else={<state.renderComponentTag {...state.renderComponentProps} />}\n    >\n      <Show when={isEmptyHtmlElement(state.tag)}>\n        <state.tag {...state.attributes} {...state.actions} />\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && state.repeatItemData}>\n        <For each={state.repeatItemData}>\n          {(data, index) => (\n            <RenderRepeatedBlock\n              key={index}\n              repeatContext={data.context}\n              block={data.block}\n            />\n          )}\n        </For>\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && !state.repeatItemData}>\n        <state.tag {...state.attributes} {...state.actions}>\n          <state.renderComponentTag {...state.renderComponentProps} />\n          <For each={state.childrenWithoutParentComponent}>\n            {(child, index) => (\n              <RenderBlock\n                key={\\\\\"render-block-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n          <For each={state.childrenWithoutParentComponent}>\n            {(child, index) => (\n              <BlockStyles\n                key={\\\\\"block-style-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n        </state.tag>\n      </Show>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { RenderBlocks } from \\\\\"@components\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\nexport default function RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"columns\\\\\",\n      }}\n      onClick={(event) => trackClick(props.content.id)}\n    >\n      <RenderBlocks blocks={props.content.blocks} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function Button(props) {\n  return (\n    <Fragment>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      </Show>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function RenderStyles(props) {\n  return (\n    <Show when={props.foo === \\\\\"bar\\\\\"} else={<div>Foo</div>}>\n      <div>Bar</div>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      <Show when={props.name === \\\\\"Batman\\\\\"}>\n        <MyComponent name=\\\\\"Bruce Wayne\\\\\" />\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      <Show when={props.name === \\\\\"Batman\\\\\"}>\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > setState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function SetState(props) {\n  const state = useStore({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n.value[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function ShowWithOtherValues(props) {\n  return (\n    <div>\n      <Show when={props.conditionA} else={<>ContentA</>}>\n        Content0\n      </Show>\n      <Show when={props.conditionA}>ContentA</Show>\n      <Show when={props.conditionA} else={<>ContentA</>}></Show>\n      <Show when={props.conditionA} else={undefined}>\n        ContentB\n      </Show>\n      <Show when={props.conditionA} else={<>ContentB</>}>\n        {undefined}\n      </Show>\n      <Show when={props.conditionA}>ContentC</Show>\n      <Show when={props.conditionA} else={<>ContentC</>}></Show>\n      <Show when={props.conditionA}>ContentD</Show>\n      <Show when={props.conditionA} else={<>ContentD</>}></Show>\n      <Show when={props.conditionA} else={<>hello</>}>\n        ContentE\n      </Show>\n      <Show when={props.conditionA} else={<>ContentE</>}>\n        hello\n      </Show>\n      <Show when={props.conditionA} else={<>123</>}>\n        ContentF\n      </Show>\n      <Show when={props.conditionA} else={<>ContentF</>}>\n        123\n      </Show>\n      <Show\n        when={props.conditionA === \\\\\"Default\\\\\"}\n        else={\n          <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n            20mb\n          </Show>\n        }\n      >\n        4mb\n      </Show>\n      <Show when={props.conditionA === \\\\\"Default\\\\\"} else={<>4mb</>}>\n        <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n          20mb\n        </Show>\n      </Show>\n      <Show\n        when={props.conditionA === \\\\\"Default\\\\\"}\n        else={\n          <Show\n            when={props.conditionC === \\\\\"Complete\\\\\"}\n            else={<div>complete else</div>}\n          >\n            dff\n          </Show>\n        }\n      >\n        <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n          <div>complete</div>\n        </Show>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function NestedShow(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <For each={props.items}>{(item, idx) => <div key={idx}>{item}</div>}</For>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function ShowWithOtherValues(props) {\n  return (\n    <div>\n      <Show when={props.conditionA}>ContentA</Show>\n      <Show when={props.conditionA} else={undefined}>\n        ContentB\n      </Show>\n      <Show when={props.conditionA}>ContentC</Show>\n      <Show when={props.conditionA}>ContentD</Show>\n      <Show when={props.conditionA} else={<>hello</>}>\n        ContentE\n      </Show>\n      <Show when={props.conditionA} else={<>123</>}>\n        ContentF\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function ShowRootText(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      ContentA\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > spreadAttrs 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > spreadProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > store-async-function 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"export default function MyComponent(props) {\n  return (\n    <div\n      class=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"export default function StylePropClassAndCss(props) {\n  return (\n    <div\n      class=\\\\\"USE_TARGET_BLOCK_1\\\\\"\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"@components\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\nexport default function SubComponent(props) {\n  return <Foo />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > svgComponent 1`] = `\n\"export default function SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > typeDependency 1`] = `\n\"export default function TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > typeExternalProps 1`] = `\n\"export default function TypeExternalProps(props) {\n  return (\n    <div>\n      Hello\n      {props.name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function TypeExternalStore(props) {\n  const state = useStore({ _name: \\\\\"test\\\\\" });\n\n  return (\n    <div>\n      Hello\n      {state._name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function TypeGetterStore(props) {\n  const state = useStore({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > use-style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > use-style-and-css 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return (\n    <button\n      type=\\\\\"button\\\\\"\n      css={{\n        background: \\\\\"blue\\\\\",\n        color: \\\\\"white\\\\\",\n      }}\n    >\n      Button\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > useTarget 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseTargetComponent(props) {\n  const state = useStore({\n    get name() {\n      const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  onMount(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    (\\\\\"USE_TARGET_BLOCK_2\\\\\");\n  });\n\n  return <div>{state.name}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default function MyBasicWebComponent(props) {\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Remove Internal mitosis package 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello\n      {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Advanced 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <main>\n      <For each={state.names}>\n        {(person, i) => (\n          <div>\n            {i}:{person}\n          </div>\n        )}\n      </For>\n      <For each={state.names}>{(person, index) => <span>{person}</span>}</For>\n      <For each={state.names}>{(_, index) => <br />}</For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(_, ee) => <pre>{ee}</pre>}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(_, index) => <p>{index}</p>}\n      </For>\n      <For each={state.names}>\n        {(person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, count) => (\n          <span>\n            {person}\n            {count}\n          </span>\n        )}\n      </For>\n      <For each={state.names}>\n        {(person, i) => (\n          <span>\n            {person}\n            {i}\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        )}\n      </For>\n    </main>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      </Show>\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange={(myEvent) => (state.name = myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic 2`] = `\n\"import { useStore, For, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForShowComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person, index) => (\n          <Show when={person === state.name}>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Show>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic Context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange={(event) => state.onChange()} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nexport default function MyBasicOnMountUpdateComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({\n  outputs: [\\\\\"onMessage\\\\\", \\\\\"onEvent\\\\\"],\n  baz: \\\\\"metadata inside component\\\\\",\n});\n\nexport default function MyBasicOutputsComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicAttribute 1`] = `\n\"export default function MyComponent(props) {\n  return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyBooleanAttributeComponent } from \\\\\"@components\\\\\";\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nexport default function MyBooleanAttribute(props) {\n  return (\n    <div>\n      <Show when={props.children}>\n        {props.children}\n        {props.type}\n      </Show>\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport {\n  MyBasicComponent,\n  MyBasicOnMountUpdateComponent,\n  MyBasicOutputsComponent,\n} from \\\\\"@components\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default function MyBasicChildComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicFor 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyBasicForComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person, index) => (\n          <Fragment>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Fragment>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicRef 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <Fragment>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={state.name}\n            onBlur={(event) => state.onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      </Show>\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefAssignmentComponent(props) {\n  const state = useStore({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef);\n      holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport default function MyPreviousComponent(props) {\n  const state = useStore({ count: 0 });\n\n  return (\n    <div>\n      <h1>\n        Now:\n        {state.count}, before:\n        {prevCount}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Button 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Columns 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nexport default function Column(props) {\n  const state = useStore({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <div\n      class=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      <For each={props.columns}>\n        {(column, index) => (\n          <div\n            class=\\\\\"builder-column\\\\\"\n            css={{\n              flexGrow: \\\\\"1\\\\\",\n            }}\n          >\n            {column.content}\n            {index}\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ContentSlotCode(props) {\n  return (\n    <div>\n      <Slot name={props.slotTesting} />\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot />\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { useStore, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ContentSlotJsxCode(props) {\n  const state = useStore({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <Show when={props.slotReference}>\n      <div\n        name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n        title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n        {...props.attributes}\n        onClick={(event) => state.show()}\n        class={state.cls}\n      >\n        <Show when={state.showContent && props.slotContent}>\n          <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n        </Show>\n        <div>\n          <hr />\n        </div>\n        <div>{props.children}</div>\n      </div>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > CustomCode 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Embed 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default function CustomCode(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Form 1`] = `\n\"import { useStore, useRef, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { BuilderBlockComponent, BuilderBlocks } from \\\\\"@components\\\\\";\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport default function FormComponent(props) {\n  const state = useStore({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: props.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                state.formErrorMessage = message;\n              }\n            }\n\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (props.resetFormOnSubmit !== false) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (props.successUrl) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: props.successUrl,\n                    },\n                  });\n                  formRef.current.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n\n  const formRef = useRef<HTMLFormElement>(null);\n  const formRef = useRef<HTMLFormElement>(null);\n\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => state.onSubmit(event)}\n      {...props.attributes}\n    >\n      <Show when={props.builderBlock && props.builderBlock.children}>\n        <For each={props.builderBlock?.children}>\n          {(block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          )}\n        </For>\n      </Show>\n      <Show when={state.submissionState === \\\\\"error\\\\\"}>\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n      </Show>\n      <Show when={state.submissionState === \\\\\"sending\\\\\"}>\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        />\n      </Show>\n      <Show when={state.submissionState === \\\\\"error\\\\\" && state.responseData}>\n        <pre\n          class=\\\\\"builder-form-error-text\\\\\"\n          css={{\n            padding: \\\\\"10px\\\\\",\n            color: \\\\\"red\\\\\",\n            textAlign: \\\\\"center\\\\\",\n          }}\n        >\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      </Show>\n      <Show when={state.submissionState === \\\\\"success\\\\\"}>\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        />\n      </Show>\n    </form>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Image 1`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nexport default function Image(props) {\n  const state = useStore({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  const pictureRef = useRef<HTMLElement>();\n  const pictureRef = useRef<HTMLElement>();\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onUnMount(() => {\n    if (state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        <Show when={!state.useLazyLoading() || state.load}>\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            class={\\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")}\n            src={props.image}\n            onLoad={(event) => state.setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        </Show>\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Image State 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function ImgStateComponent(props) {\n  const state = useStore({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      <For each={state.images}>\n        {(item, itemIndex) => (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Img 1`] = `\n\"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Input 1`] = `\n\"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > InputParent 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { FormInputComponent } from \\\\\"@components\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default function Stepper(props) {\n  const state = useStore({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > NestedStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nexport default function NestedStore(props) {\n  const state = useStore({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > RawText 1`] = `\n\"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nexport default function RawText(props) {\n  return (\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      innerHTML={props.text || \\\\\"\\\\\"}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Section 1`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Section 2`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionStateComponent(props) {\n  const state = useStore({ max: 42, items: [42] });\n\n  return (\n    <Show when={state.max}>\n      <For each={state.items}>\n        {(item, index) => (\n          <section\n            {...props.attributes}\n            style={{\n              maxWidth: item + state.max,\n            }}\n          >\n            {props.children}\n          </section>\n        )}\n      </For>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Select 1`] = `\n\"import { For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      <For each={props.options}>\n        {(option, index) => (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        )}\n      </For>\n    </select>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode, Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode>\n        <Slot testing={<div>Hello</div>} />\n      </ContentSlotCode>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\ntype Props = {\n  [key: string]: string;\n};\n\nexport default function SlotCode(props) {\n  return (\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\" />\n      <Slot name=\\\\\"top\\\\\" />\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport default function SmileReviews(props) {\n  const state = useStore({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick={(event) => (state.showReviewPrompt = true)}>\n        Write a review\n      </button>\n      <Show when={state.showReviewPrompt || \\\\\"asdf\\\\\"}>\n        <input placeholder=\\\\\"Email\\\\\" />\n        <input\n          placeholder=\\\\\"Title\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <button\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n          onClick={(ev) => {\n            ev.preventDefault();\n            state.showReviewPrompt = false;\n          }}\n        >\n          Submit\n        </button>\n      </Show>\n      <For each={state.reviews}>\n        {(review, index) => (\n          <div\n            $name=\\\\\"Review\\\\\"\n            key={review.id}\n            css={{\n              margin: \\\\\"10px\\\\\",\n              padding: \\\\\"10px\\\\\",\n              background: \\\\\"white\\\\\",\n              display: \\\\\"flex\\\\\",\n              borderRadius: \\\\\"5px\\\\\",\n              boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n              WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n            }}\n          >\n            <img\n              css={{\n                height: \\\\\"30px\\\\\",\n                width: \\\\\"30px\\\\\",\n                marginRight: \\\\\"10px\\\\\",\n              }}\n              src={review.avatar}\n            />\n            <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>\n                N:\n                {index}\n              </div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > StoreComment 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: true, bar() {} });\n\n  return <Fragment>{state.foo}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <Fragment>{state.foo(state.errors)}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <Fragment>{state.bar()}</Fragment>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Submit 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nexport default function SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Text 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default function Text(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      innerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Textarea 1`] = `\n\"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nexport default function Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nexport default function UseValueAndFnFromStore(props) {\n  const state = useStore({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  return <div>Test</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > Video 1`] = `\n\"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nexport default function Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\n\nexport default function BasicForFragment(props) {\n  const state = useStore({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n        {(option, index) => (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n        {(option, index) => (\n          <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <select>\n        <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n          {(option, index) => (\n            <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          )}\n        </For>\n      </select>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicForNoTagRefComponent(props) {\n  const state = useStore({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello\n      <state.tag>{state.name}</state.tag>\n      <For each={props.actions}>\n        {(action, index) => (\n          <state.TagName>\n            <action.icon />\n            <span>{action.text}</span>\n          </state.TagName>\n        )}\n      </For>\n    </state.TagNameGetter>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicForwardRef 1`] = `\n\"',' expected. (19:12)\n  17 |     const state = useStore({ name: 'PatrickJS',});\n  18 |\n> 19 | const props.inputRef = useRef();\n     |            ^\n  20 |\n  21 |\n  22 |\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"',' expected. (25:12)\n  23 |     const state = useStore({ name: 'PatrickJS',});\n  24 |\n> 25 | const props.inputRef = useRef();\n     |            ^\n  26 |\n  27 |\n  28 |\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicOnUpdateReturnComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello!\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true } });\n\nexport default function BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nuseMetadata({ attributePassing: { enabled: true, customRef: \\\\\"buttonRef\\\\\" } });\n\nexport default function BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"@components\\\\\";\n\nimport MyComp from \\\\\"./my-component.js\\\\\";\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        class=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > class + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > className + css 1`] = `\n\"export default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > className 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nexport default function ClassNameCode(props) {\n  const state = useStore({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > classState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <div\n      class={state.classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nuseMetadata({\n  stencil: {\n    propOptions: {\n      className: { attribute: \\\\\"classname\\\\\", mutable: false, reflect: false },\n    },\n  },\n});\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div class={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nuseMetadata({\n  x: \\\\\"y\\\\\",\n  asdf: {\n    stringValue: \\\\\"d\\\\\",\n    booleanValue: true,\n    numberValue: 1,\n    innerObject: { stringValue: \\\\\"inner\\\\\", numberValue: 2, booleanValue: false },\n    spreadStringValue: \\\\\"f\\\\\",\n  },\n});\n\nexport default function ComplexMetaRaw(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return (\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { Fragment } from \\\\\"@components\\\\\";\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default function ComponentWithContext(props) {\n  return (\n    <Fragment>\n      <Fragment>{foo.value}</Fragment>\n      <div>other</div>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default function RenderContent(props) {\n  return <div>setting context</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nexport default function Button(props) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nexport default function ComponentWithTypes(props) {\n  return (\n    <div>\n      {\\\\\" \\\\\"}\n      Hello\n      {props.name || DEFAULT_VALUES.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function EventInputAndChange(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={state.name}\n        onInput={(event) => (state.name = event.target.value)}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > eventProps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nexport default function EventPropsComponent(props) {\n  const state = useStore({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > expressionState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nuseMetadata({\n  figma: {\n    name: \\\\\"def-button-beta-outlined\\\\\",\n    url: \\\\\"https://www.figma.com/xxx\\\\\",\n    props: {\n      iconSmall: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Small\\\\\" },\n      iconMedium: { type: \\\\\"instance\\\\\", key: \\\\\"📍 Icon Medium\\\\\" },\n      label: { type: \\\\\"string\\\\\", key: \\\\\"✏️ Label\\\\\" },\n      icon: {\n        type: \\\\\"boolean\\\\\",\n        key: \\\\\"👁️ Icon\\\\\",\n        value: { false: false, true: \\\\\"placeholder\\\\\" },\n      },\n      interactiveState: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Interactive State\\\\\",\n        value: {\n          \\\\\"(Def) Enabled\\\\\": false,\n          Hovered: false,\n          Pressed: false,\n          Focused: false,\n          Disabled: \\\\\"true\\\\\",\n        },\n      },\n      size: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Size\\\\\",\n        value: { \\\\\"(Def) Medium\\\\\": false, Small: \\\\\"small\\\\\" },\n      },\n      width: {\n        type: \\\\\"enum\\\\\",\n        key: \\\\\"Width\\\\\",\n        value: { \\\\\"(Def) Auto Width\\\\\": false, \\\\\"Full Width\\\\\": \\\\\"full\\\\\" },\n      },\n    },\n  },\n});\n\nexport default function FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > functionProps 1`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\nexport default function MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > getterState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nexport default function Button(props) {\n  const state = useStore({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > import types 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderBlock } from \\\\\"@components\\\\\";\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nexport default function RenderContent(props) {\n  const state = useStore({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > layerName 1`] = `\n\"export default function MyLayerNameComponent(props) {\n  return (\n    <section>\n      <div\n        $name=\\\\\"🌟layer-name\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"export default function MultipleOnUpdate(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MultipleOnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default function NestedShow(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <Show when={!props.conditionB} else={<div>else-condition-B</div>}>\n        <div>if condition A and condition B</div>\n      </Show>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > nestedStyles 1`] = `\n\"export default function NestedStyles(props) {\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nexport default function MyNormalizedLayerNamesComponent(props) {\n  return (\n    <section>\n      <div $name=\\\\\"🌟layer-name\\\\\">Emoji</div>\n      <div $name=\\\\\"---\\\\\">Dashes</div>\n      <div $name=\\\\\"CamelCase\\\\\">CamelCase</div>\n      <div $name=\\\\\"123my@Class-Name!\\\\\">Special chars</div>\n      <div $name=\\\\\"--my--@custom--name--\\\\\">Special chars with dashes</div>\n      <div\n        $name=\\\\\"0\\\\\"\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        $name=\\\\\"123\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        $name=\\\\\"name123\\\\\"\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        $name=\\\\\"456name\\\\\"\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        $name=\\\\\"name-789\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div $name=\\\\\"🚀\\\\\">Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onEvent 1`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function Embed(props) {\n  const state = useStore({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n  });\n\n  const elem = useRef<HTMLDivElement>(null);\n  const elem = useRef<HTMLDivElement>(null);\n\n  onMount(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onInit & onMount 1`] = `\n\"export default function OnInit(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onInit 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nexport default function OnInit(props) {\n  const state = useStore({ name: \\\\\"\\\\\" });\n\n  return (\n    <div>\n      Default name defined by parent\n      {state.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onInitPlain 1`] = `\n\"export default function OnInitPlain(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onMount 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onMountMultiple 1`] = `\n\"export default function Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }),\n    onMount(() => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    }),\n    onMount(() => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onUpdate 1`] = `\n\"export default function OnUpdate(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nexport default function OnUpdateWithDeps(props) {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"type Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nexport default function MyBasicComponent(props) {\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > preserveTyping 1`] = `\n\"export type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default function MyBasicComponent(props) {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > propsInterface 1`] = `\n\"interface Person {\n  name: string;\n  age?: number;\n}\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > propsType 1`] = `\n\"type Person = {\n  name: string;\n  age?: number;\n};\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      {props.name}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function OnUpdate(props) {\n  const state = useStore({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > renderBlock 1`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { RenderRepeatedBlock, RenderBlock, BlockStyles } from \\\\\"@components\\\\\";\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nexport default function RenderBlock(props) {\n  const state = useStore({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  });\n\n  return (\n    <Show\n      when={state.shouldWrap}\n      else={<state.renderComponentTag {...state.renderComponentProps} />}\n    >\n      <Show when={isEmptyHtmlElement(state.tag)}>\n        <state.tag {...state.attributes} {...state.actions} />\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && state.repeatItemData}>\n        <For each={state.repeatItemData}>\n          {(data, index) => (\n            <RenderRepeatedBlock\n              key={index}\n              repeatContext={data.context}\n              block={data.block}\n            />\n          )}\n        </For>\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && !state.repeatItemData}>\n        <state.tag {...state.attributes} {...state.actions}>\n          <state.renderComponentTag {...state.renderComponentProps} />\n          <For each={state.childrenWithoutParentComponent}>\n            {(child, index) => (\n              <RenderBlock\n                key={\\\\\"render-block-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n          <For each={state.childrenWithoutParentComponent}>\n            {(child, index) => (\n              <BlockStyles\n                key={\\\\\"block-style-\\\\\" + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n        </state.tag>\n      </Show>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { RenderBlocks } from \\\\\"@components\\\\\";\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\nexport default function RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"columns\\\\\",\n      }}\n      onClick={(event) => trackClick(props.content.id)}\n    >\n      <RenderBlocks blocks={props.content.blocks} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment } from \\\\\"@components\\\\\";\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props) {\n  return (\n    <Fragment>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      </Show>\n    </Fragment>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nexport default function RenderStyles(props) {\n  return (\n    <Show when={props.foo === \\\\\"bar\\\\\"} else={<div>Foo</div>}>\n      <div>Bar</div>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      <Show when={props.name === \\\\\"Batman\\\\\"}>\n        <MyComponent name=\\\\\"Bruce Wayne\\\\\" />\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { MyComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      <Show when={props.name === \\\\\"Batman\\\\\"}>\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > setState 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function SetState(props) {\n  const state = useStore({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n.value[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default function ShowWithOtherValues(props) {\n  return (\n    <div>\n      <Show when={props.conditionA} else={<>ContentA</>}>\n        Content0\n      </Show>\n      <Show when={props.conditionA}>ContentA</Show>\n      <Show when={props.conditionA} else={<>ContentA</>}></Show>\n      <Show when={props.conditionA} else={undefined}>\n        ContentB\n      </Show>\n      <Show when={props.conditionA} else={<>ContentB</>}>\n        {undefined}\n      </Show>\n      <Show when={props.conditionA}>ContentC</Show>\n      <Show when={props.conditionA} else={<>ContentC</>}></Show>\n      <Show when={props.conditionA}>ContentD</Show>\n      <Show when={props.conditionA} else={<>ContentD</>}></Show>\n      <Show when={props.conditionA} else={<>hello</>}>\n        ContentE\n      </Show>\n      <Show when={props.conditionA} else={<>ContentE</>}>\n        hello\n      </Show>\n      <Show when={props.conditionA} else={<>123</>}>\n        ContentF\n      </Show>\n      <Show when={props.conditionA} else={<>ContentF</>}>\n        123\n      </Show>\n      <Show\n        when={props.conditionA === \\\\\"Default\\\\\"}\n        else={\n          <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n            20mb\n          </Show>\n        }\n      >\n        4mb\n      </Show>\n      <Show when={props.conditionA === \\\\\"Default\\\\\"} else={<>4mb</>}>\n        <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n          20mb\n        </Show>\n      </Show>\n      <Show\n        when={props.conditionA === \\\\\"Default\\\\\"}\n        else={\n          <Show\n            when={props.conditionC === \\\\\"Complete\\\\\"}\n            else={<div>complete else</div>}\n          >\n            dff\n          </Show>\n        }\n      >\n        <Show when={props.conditionB === \\\\\"Complete\\\\\"} else={<>9mb</>}>\n          <div>complete</div>\n        </Show>\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"@builder.io/mitosis\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nexport default function NestedShow(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <For each={props.items}>{(item, idx) => <div key={idx}>{item}</div>}</For>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowWithOtherValues(props) {\n  return (\n    <div>\n      <Show when={props.conditionA}>ContentA</Show>\n      <Show when={props.conditionA} else={undefined}>\n        ContentB\n      </Show>\n      <Show when={props.conditionA}>ContentC</Show>\n      <Show when={props.conditionA}>ContentD</Show>\n      <Show when={props.conditionA} else={<>hello</>}>\n        ContentE\n      </Show>\n      <Show when={props.conditionA} else={<>123</>}>\n        ContentF\n      </Show>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowRootText(props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      ContentA\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"type Props = {\n  id: Signal<string>;\n  foo: Signal<{\n    bar: {\n      baz: number;\n    };\n  }>;\n};\n\nexport default function MyBasicComponent(props) {\n  return (\n    <div\n      class=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > spreadAttrs 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > spreadProps 1`] = `\n\"export default function MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > store-async-function 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function StringLiteralStore(props) {\n  const state = useStore({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"export default function MyComponent(props) {\n  return (\n    <div\n      class=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"export default function StylePropClassAndCss(props) {\n  return (\n    <div\n      class=\\\\\"USE_TARGET_BLOCK_1\\\\\"\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"@components\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.js\\\\\";\n\nexport default function SubComponent(props) {\n  return <Foo />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > svgComponent 1`] = `\n\"export default function SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > typeDependency 1`] = `\n\"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.js\\\\\";\n\nexport default function TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nexport default function TypeExternalProps(props) {\n  return (\n    <div>\n      Hello\n      {props.name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nexport default function TypeExternalStore(props) {\n  const state = useStore({ _name: \\\\\"test\\\\\" });\n\n  return (\n    <div>\n      Hello\n      {state._name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nexport default function TypeGetterStore(props) {\n  const state = useStore({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      Hello\n      {state.name}!{\\\\\" \\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > use-style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > use-style-and-css 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`);\n\n  return (\n    <button\n      type=\\\\\"button\\\\\"\n      css={{\n        background: \\\\\"blue\\\\\",\n        color: \\\\\"white\\\\\",\n      }}\n    >\n      Button\n    </button>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > useTarget 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function UseTargetComponent(props) {\n  const state = useStore({\n    get name() {\n      const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  onMount(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    (\\\\\"USE_TARGET_BLOCK_2\\\\\");\n  });\n\n  return <div>{state.name}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default function MyBasicWebComponent(props) {\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > bindGroup 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>\n        Tortilla:\n        {state.tortilla}\n      </p>\n      <p>\n        Fillings:\n        {state.fillings}\n      </p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > bindProperty 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > classDirective 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ focus: true });\n\n  return (\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ activeTab: 0 });\n\n  return <div>{state.activeTab}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > each 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      <For each={state.numbers}>{(num, index) => <li>{num}</li>}</For>\n    </ul>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > html 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div innerHTML={state.html} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > ifElse 1`] = `\n\"import { useStore, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <Show\n      when={state.show}\n      else={<button onClick={(event) => state.toggle(event)}> Show </button>}\n    >\n      <button onClick={(event) => state.toggle(event)}> Hide </button>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > imports 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Button, Slot } from \\\\\"@components\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot />\n      </Button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"export default function MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > reactive 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase:\n      {state.lowercaseName}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result:\n      {state.result}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > slots 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`);\n\n  return <input class=\\\\\"form-input\\\\\" />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Javascript Test > textExpressions 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > basic 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > bindGroup 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>\n        Tortilla:\n        {state.tortilla}\n      </p>\n      <p>\n        Fillings:\n        {state.fillings}\n      </p>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > bindProperty 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > classDirective 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ focus: true });\n\n  return (\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > context 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ activeTab: 0 });\n\n  return <div>{state.activeTab}</div>;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > each 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      <For each={state.numbers}>{(num, index) => <li>{num}</li>}</For>\n    </ul>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > html 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div innerHTML={state.html} />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > ifElse 1`] = `\n\"import { useStore, Show } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <Show\n      when={state.show}\n      else={<button onClick={(event) => state.toggle(event)}> Show </button>}\n    >\n      <button onClick={(event) => state.toggle(event)}> Hide </button>\n    </Show>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > imports 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Button, Slot } from \\\\\"@components\\\\\";\n\nimport Button from \\\\\"./Button.js\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot />\n      </Button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"export default function MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  onUnMount(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n\n  return <div />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > reactive 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase:\n      {state.lowercaseName}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result:\n      {state.result}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > slots 1`] = `\n\"import { Slot } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > style 1`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`);\n\n  return <input class=\\\\\"form-input\\\\\" />;\n}\n\"\n`;\n\nexports[`Mitosis, format: legacy > svelte > Typescript Test > textExpressions 1`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Advanced 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <main>\n      {names?.map((person, i) => (\n        <div>\n          {i}: {person}\n        </div>\n      ))}\n      {names?.map((person) => (\n        <span>{person}</span>\n      ))}\n      {names?.map((item) => (\n        <br />\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((_, ee) => (\n        <pre>{ee}</pre>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((item) => (\n        <p>{index}</p>\n      ))}\n      {names?.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((person, count) => (\n        <span>\n          {person}\n          {count}\n        </span>\n      ))}\n      {names?.map((person, i) => (\n        <span>\n          {person}\n          {i}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n    </main>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <div>\n      {names?.map((person) =>\n        person === name ? (\n          <>\n            <input\n              value={name}\n              onChange={(event) => {\n                setName(event.target.value + \\\\\" and \\\\\" + person);\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </>\n        ) : null\n      )}\n    </div>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <div\n      className=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      {props.columns?.map((column, index) => (\n        <div\n          className=\\\\\"builder-column\\\\\"\n          css={{\n            flexGrow: \\\\\"1\\\\\",\n          }}\n        >\n          {column.content}\n          {index}\n        </div>\n      ))}\n    </div>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <pre\n          className=\\\\\"builder-form-error-text\\\\\"\n          css={{ padding: \\\\\"10px\\\\\", color: \\\\\"red\\\\\", textAlign: \\\\\"center\\\\\" }}\n        >\n          {JSON.stringify(responseData, null, 2)}\n        </pre>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        />\n      ) : null}\n    </form>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            className={\n              \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")\n            }\n            src={props.image}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Section 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SectionStateComponent(props) {\n  const [max, setMax] = useState(() => 42);\n\n  const [items, setItems] = useState(() => [42]);\n\n  return (\n    <>\n      {max ? (\n        <>\n          {items?.map((item) => (\n            <section\n              {...props.attributes}\n              style={{\n                maxWidth: item + max,\n              }}\n            >\n              {props.children}\n            </section>\n          ))}\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <div data-user={name}>\n      <button onClick={(event) => setShowReviewPrompt(true)}>\n        Write a review\n      </button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <button\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <div\n          key={review.id}\n          css={{\n            margin: \\\\\"10px\\\\\",\n            padding: \\\\\"10px\\\\\",\n            background: \\\\\"white\\\\\",\n            display: \\\\\"flex\\\\\",\n            borderRadius: \\\\\"5px\\\\\",\n            boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n            WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n          }}\n        >\n          <img\n            css={{\n              height: \\\\\"30px\\\\\",\n              width: \\\\\"30px\\\\\",\n              marginRight: \\\\\"10px\\\\\",\n            }}\n            src={review.avatar}\n          />\n          <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>N: {index}</div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <input\n          ref={inputRef}\n          css={{\n            color: \\\\\"red\\\\\",\n          }}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <input\n          ref={inputRef}\n          css={{\n            color: \\\\\"red\\\\\",\n          }}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>\n      <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        className=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <div\n      className={classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > classnameProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > complexMeta 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > figmaMeta 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <section>\n      <div\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div>Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <div\n        css={{\n          display: \\\\\"flex\\\\\",\n          flexDirection: \\\\\"columns\\\\\",\n        }}\n        onClick={(event) => trackClick(props.content.id)}\n      >\n        <RenderBlocks blocks={props.content.blocks} />\n      </div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div\n      className=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <div\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n      className={props.attributes.class}\n    />\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button\n        type=\\\\\"button\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n          color: \\\\\"white\\\\\",\n        }}\n      >\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Advanced 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <main>\n      {names?.map((person, i) => (\n        <div>\n          {i}: {person}\n        </div>\n      ))}\n      {names?.map((person) => (\n        <span>{person}</span>\n      ))}\n      {names?.map((item) => (\n        <br />\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((_, ee) => (\n        <pre>{ee}</pre>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((item) => (\n        <p>{index}</p>\n      ))}\n      {names?.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((person, count) => (\n        <span>\n          {person}\n          {count}\n        </span>\n      ))}\n      {names?.map((person, i) => (\n        <span>\n          {person}\n          {i}\n        </span>\n      ))}\n      {Array.from({\n        length: 10,\n      })?.map((person, index) => (\n        <span>\n          {person}\n          {index}\n        </span>\n      ))}\n    </main>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <div>\n      {names?.map((person) =>\n        person === name ? (\n          <>\n            <input\n              value={name}\n              onChange={(event) => {\n                setName(event.target.value + \\\\\" and \\\\\" + person);\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </>\n        ) : null\n      )}\n    </div>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <div\n      className=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 999px)\\\\\": {\n          flexDirection: \\\\\"row\\\\\",\n        },\n        \\\\\"@media (max-width: 639px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      {props.columns?.map((column, index) => (\n        <div\n          className=\\\\\"builder-column\\\\\"\n          css={{\n            flexGrow: \\\\\"1\\\\\",\n          }}\n        >\n          {column.content}\n          {index}\n        </div>\n      ))}\n    </div>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <pre\n          className=\\\\\"builder-form-error-text\\\\\"\n          css={{ padding: \\\\\"10px\\\\\", color: \\\\\"red\\\\\", textAlign: \\\\\"center\\\\\" }}\n        >\n          {JSON.stringify(responseData, null, 2)}\n        </pre>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        />\n      ) : null}\n    </form>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n            className={\n              \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")\n            }\n            src={props.image}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Section 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SectionStateComponent(props) {\n  const [max, setMax] = useState(() => 42);\n\n  const [items, setItems] = useState(() => [42]);\n\n  return (\n    <>\n      {max ? (\n        <>\n          {items?.map((item) => (\n            <section\n              {...props.attributes}\n              style={{\n                maxWidth: item + max,\n              }}\n            >\n              {props.children}\n            </section>\n          ))}\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <div data-user={name}>\n      <button onClick={(event) => setShowReviewPrompt(true)}>\n        Write a review\n      </button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n          />\n          <button\n            css={{\n              display: \\\\\"block\\\\\",\n            }}\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <div\n          key={review.id}\n          css={{\n            margin: \\\\\"10px\\\\\",\n            padding: \\\\\"10px\\\\\",\n            background: \\\\\"white\\\\\",\n            display: \\\\\"flex\\\\\",\n            borderRadius: \\\\\"5px\\\\\",\n            boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n            WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n          }}\n        >\n          <img\n            css={{\n              height: \\\\\"30px\\\\\",\n              width: \\\\\"30px\\\\\",\n              marginRight: \\\\\"10px\\\\\",\n            }}\n            src={review.avatar}\n          />\n          <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>N: {index}</div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id?: string) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <input\n          ref={inputRef}\n          css={{\n            color: \\\\\"red\\\\\",\n          }}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <input\n          ref={inputRef}\n          css={{\n            color: \\\\\"red\\\\\",\n          }}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>\n      <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        className=\\\\\"test2 test\\\\\"\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <div\n      className={classState}\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n      style={styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > classnameProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > complexMeta 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > figmaMeta 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <section>\n      <div\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <div\n      css={{\n        display: \\\\\"flex\\\\\",\n        \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n        color: \\\\\"var(--bar)\\\\\",\n        \\\\\"@media (max-width: env(--mobile))\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&:hover\\\\\": {\n          display: \\\\\"flex\\\\\",\n        },\n        \\\\\":active\\\\\": {\n          display: \\\\\"inline\\\\\",\n        },\n        \\\\\".nested-selector\\\\\": {\n          display: \\\\\"grid\\\\\",\n        },\n        \\\\\".nested-selector:hover\\\\\": {\n          display: \\\\\"block\\\\\",\n        },\n        \\\\\"&.nested-selector:active\\\\\": {\n          display: \\\\\"inline-block\\\\\",\n        },\n      }}\n    >\n      Hello world\n    </div>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div\n        css={{\n          margin: \\\\\"10px\\\\\",\n        }}\n      >\n        Single Number\n      </div>\n      <div\n        css={{\n          padding: \\\\\"10px\\\\\",\n        }}\n      >\n        Multiple Numbers\n      </div>\n      <div\n        css={{\n          border: \\\\\"1px solid\\\\\",\n        }}\n      >\n        Chars with numbers at end\n      </div>\n      <div\n        css={{\n          color: \\\\\"red\\\\\",\n        }}\n      >\n        Chars with numbers at start\n      </div>\n      <div\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Numnbers separated by dash\n      </div>\n      <div>Emoji</div>\n      <div\n        data-name=\\\\\"1\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n        }}\n      >\n        Number\n      </div>\n    </section>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <div\n        css={{\n          display: \\\\\"flex\\\\\",\n          flexDirection: \\\\\"columns\\\\\",\n        }}\n        onClick={(event) => trackClick(props.content.id)}\n      >\n        <RenderBlocks blocks={props.content.blocks} />\n      </div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <div\n      className=\\\\\"test\\\\\"\n      css={{\n        padding: \\\\\"10px\\\\\",\n      }}\n    >\n      {props.id}\n      {props.foo.bar.baz}\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div\n      className=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <div\n      style={props.attributes.style}\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"column\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n      }}\n      className={props.attributes.class}\n    />\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button\n        type=\\\\\"button\\\\\"\n        css={{\n          background: \\\\\"blue\\\\\",\n          color: \\\\\"white\\\\\",\n        }}\n      >\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Mitosis, format: react > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/parse-jsx.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Parse JSX > Javascript > Advanced 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"i\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \": \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"i\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"br\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"ee\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"pre\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"_\",\n            \"indexName\": \"ee\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"p\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"index\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"count\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"count\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"i\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"i\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"main\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForShowComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > AdvancedRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.showInput\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  color: 'red'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onBlur\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.onBlur()\",\n                      \"type\": \"single\",\n                    },\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.name = event.target.value\",\n                      \"type\": \"single\",\n                    },\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputRef\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputNoArgRef\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"\n            Choose a car:\n          \",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"label\",\n                  \"properties\": {\n                    \"for\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR Supra\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"supra\",\n                      },\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR 86\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"86\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"select\",\n                  \"properties\": {\n                    \"id\": \"cars\",\n                    \"name\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.lowerCaseName()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! I can run in React, Qwik, Vue, Solid, or Web Component!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Received an update')\",\n        \"deps\": \"[inputRef, inputNoArgRef]\",\n        \"depsArray\": [\n          \"inputRef\",\n          \"inputNoArgRef\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefComponent\",\n  \"refs\": {\n    \"inputNoArgRef\": {\n      \"argument\": \"null\",\n    },\n    \"inputRef\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"lowerCaseName\": {\n      \"code\": \"function lowerCaseName() {\n  return state.name.toLowerCase();\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onBlur\": {\n      \"code\": \"function onBlur() {\n  // Maintain focus\n  inputRef.focus();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"arguments\": [\n                \"myEvent\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = myEvent.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"DEFAULT_VALUES.name || state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"DEFAULT_VALUES\": {\n      \"code\": \"export const DEFAULT_VALUES = {\n  name: 'Steve'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": true,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"age\": {\n      \"code\": \"1\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"sports\": {\n      \"code\": \"['']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"underscore_fn_name\": {\n      \"code\": \"underscore_fn_name() {\n  return 'bar';\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic 2`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"person === state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"{\n  state.name = event.target.value + ' and ' + person;\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n            Hello \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForShowComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic Context 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"myService.method('hello') + state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.onChange()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"myService\": {\n        \"name\": \"MyService\",\n        \"path\": \"@dummy/injection-js:MyService\",\n      },\n    },\n    \"set\": {\n      \"@dummy/injection-js:Injector\": {\n        \"name\": \"Injector\",\n        \"ref\": \"createInjector()\",\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"const hi = myService.method('hi');\nconsole.log(hi)\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"const bye = myService.method('hi');\nconsole.log(bye)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Injector\": \"Injector\",\n        \"MyService\": \"MyService\",\n        \"createInjector\": \"createInjector\",\n      },\n      \"path\": \"@dummy/injection-js\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onChange\": {\n      \"code\": \"function onChange() {\n  const change = myService.method('change');\n  console.log(change);\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic OnMount Update 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"state.name = 'PatrickJS onInit' + props.hi\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"state.name = 'PatrickJS onMount' + props.bye\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOnMountUpdateComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic Outputs 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"props.onMessageChange(state.name);\nprops.onEvent(props.message)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOutputsComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Basic Outputs Meta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"props.onMessageChange(state.name);\nprops.onEvent(props.message)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"baz\": \"metadata inside component\",\n      \"outputs\": [\n        \"onMessage\",\n        \"onEvent\",\n      ],\n    },\n  },\n  \"name\": \"MyBasicOutputsComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicAttribute 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"spellcheck\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"true\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {\n        \"autocapitalize\": \"on\",\n        \"autocomplete\": \"on\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicBooleanAttribute 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.children\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.type\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"list\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"null\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBooleanAttributeComponent\": \"default\",\n      },\n      \"path\": \"./basic-boolean-attribute-component.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBooleanAttribute\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicChildComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"id\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.dev\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBasicComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"bye\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.dev\",\n                  \"type\": \"single\",\n                },\n                \"hi\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyBasicOnMountUpdateComponent\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onEvent\": {\n                  \"bindingType\": \"function\",\n                  \"code\": \"state.log('Test')\",\n                  \"type\": \"single\",\n                },\n                \"onMessageChange\": {\n                  \"arguments\": [\n                    \"name\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"state.name = name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyBasicOutputsComponent\",\n              \"properties\": {\n                \"message\": \"Test\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicOnMountUpdateComponent\": \"default\",\n      },\n      \"path\": \"./basic-onMount-update.raw\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicOutputsComponent\": \"default\",\n      },\n      \"path\": \"./basic-outputs.raw\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicComponent\": \"default\",\n      },\n      \"path\": \"./basic.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicChildComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"dev\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"log\": {\n      \"code\": \"function log(message) {\n  console.log(message);\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicFor 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"{\n  state.name = event.target.value + ' and ' + person;\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n            Hello \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount code')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.showInput\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  color: 'red'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onBlur\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.onBlur()\",\n                      \"type\": \"single\",\n                    },\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.name = event.target.value\",\n                      \"type\": \"single\",\n                    },\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputRef\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputNoArgRef\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"\n            Choose a car:\n          \",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"label\",\n                  \"properties\": {\n                    \"for\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR Supra\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"supra\",\n                      },\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR 86\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"86\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"select\",\n                  \"properties\": {\n                    \"id\": \"cars\",\n                    \"name\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.lowerCaseName()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! I can run in React, Qwik, Vue, Solid, or Web Component!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefComponent\",\n  \"refs\": {\n    \"inputNoArgRef\": {\n      \"argument\": \"null\",\n    },\n    \"inputRef\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"lowerCaseName\": {\n      \"code\": \"function lowerCaseName() {\n  return state.name.toLowerCase();\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onBlur\": {\n      \"code\": \"function onBlur() {\n  // Maintain focus\n  inputRef?.focus();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicRefAssignment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": [\n                \"evt\",\n              ],\n              \"async\": true,\n              \"bindingType\": \"function\",\n              \"code\": \"await state.handlerClick(evt)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Click\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefAssignmentComponent\",\n  \"refs\": {\n    \"holdValueRef\": {\n      \"argument\": \"'Patrick'\",\n    },\n  },\n  \"state\": {\n    \"handlerClick\": {\n      \"code\": \"function handlerClick(event) {\n  event.preventDefault();\n  console.log('current value', holdValueRef);\n  holdValueRef = holdValueRef + 'JS';\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > BasicRefPrevious 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Now: \",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.count\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \", before: \",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"prevCount\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"h1\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.count += 1\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Increment\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"usePrevious\": {\n      \"code\": \"export function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"prevCount = state.count\",\n        \"deps\": \"[state.count]\",\n        \"depsArray\": [\n          \"state.count\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyPreviousComponent\",\n  \"refs\": {\n    \"prevCount\": {\n      \"argument\": \"state.count\",\n    },\n  },\n  \"state\": {\n    \"count\": {\n      \"code\": \"0\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Button 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Columns 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch',\n  lineHeight: 'normal',\n  '@media (max-width: 999px)': {\n    flexDirection: 'row'\n  },\n  '@media (max-width: 639px)': {\n    flexDirection: 'row-reverse'\n  }\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.columns\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  flexGrow: '1'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"column.content\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"class\": \"builder-column\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"column\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-columns\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Column\",\n  \"refs\": {},\n  \"state\": {\n    \"getColumnCssWidth\": {\n      \"code\": \"getColumnCssWidth(index) {\n  const columns = state.getColumns();\n  const gutterSize = state.getGutterSize();\n  const subtractWidth = gutterSize * (columns.length - 1) / columns.length;\n  return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n}\",\n      \"type\": \"method\",\n    },\n    \"getColumns\": {\n      \"code\": \"getColumns() {\n  return props.columns || [];\n}\",\n      \"type\": \"method\",\n    },\n    \"getGutterSize\": {\n      \"code\": \"getGutterSize() {\n  return typeof props.space === 'number' ? props.space || 0 : 20;\n}\",\n      \"type\": \"method\",\n    },\n    \"getWidth\": {\n      \"code\": \"getWidth(index) {\n  const columns = state.getColumns();\n  return columns[index] && columns[index].width || 100 / columns.length;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > ContentSlotHtml 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"name\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotTesting\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"hr\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"Slot\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ContentSlotCode\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > ContentSlotJSX 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.slotReference\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"class\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.cls\",\n              \"type\": \"single\",\n            },\n            \"name\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotContent ? 'name1' : 'name2'\",\n              \"type\": \"single\",\n            },\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.show()\",\n              \"type\": \"single\",\n            },\n            \"props.attributes\": {\n              \"code\": \"props.attributes\",\n              \"spreadType\": \"normal\",\n              \"type\": \"spread\",\n            },\n            \"title\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotContent ? 'title1' : 'title2'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.showContent && props.slotContent\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"props.content\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"Slot\",\n                  \"properties\": {\n                    \"name\": \"content\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"hr\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.children\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"content\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"slotContent\": {\n      \"code\": \"undefined\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"slotReference\": {\n      \"code\": \"undefined\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ContentSlotJsxCode\",\n  \"refs\": {},\n  \"state\": {\n    \"cls\": {\n      \"code\": \"get cls() {\n  return props.slotContent && props.children ? \\`\\${state.name}-content\\` : '';\n}\",\n      \"type\": \"getter\",\n    },\n    \"name\": {\n      \"code\": \"'king'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"show\": {\n      \"code\": \"show() {\n  props.slotContent ? 1 : '';\n}\",\n      \"type\": \"method\",\n    },\n    \"showContent\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > CustomCode 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.code\",\n          \"type\": \"single\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"state.findAndRunScripts()\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"CustomCode\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"findAndRunScripts\": {\n      \"code\": \"findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem && typeof window !== 'undefined') {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.getElementsByTagName('script');\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement('script');\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (!script.type || ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(script.type)) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn('\\`CustomCode\\`: Error running script:', error);\n        }\n      }\n    }\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"scriptsInserted\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scriptsRun\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Embed 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.code\",\n          \"type\": \"single\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"state.findAndRunScripts()\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"CustomCode\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"findAndRunScripts\": {\n      \"code\": \"findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem && typeof window !== 'undefined') {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.getElementsByTagName('script');\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement('script');\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (!script.type || ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(script.type)) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn('\\`CustomCode\\`: Error running script:', error);\n        }\n      }\n    }\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"scriptsInserted\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scriptsRun\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Form 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"action\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"!props.sendWithJs && props.action\",\n          \"type\": \"single\",\n        },\n        \"method\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.method\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"onSubmit\": {\n          \"arguments\": [\n            \"event\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"state.onSubmit(event)\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"formRef\",\n          \"type\": \"single\",\n        },\n        \"validate\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.validate\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.builderBlock && props.builderBlock.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.builderBlock?.children\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"block\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"block\",\n                      \"type\": \"single\",\n                    },\n                    \"index\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"block.id\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"BuilderBlockComponent\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"block\",\n                \"indexName\": \"index\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'error'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.errorMessage\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"errorMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'sending'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.sendingMessage\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"sendingMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'error' && state.responseData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  padding: '10px',\n  color: 'red',\n  textAlign: 'center'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"JSON.stringify(state.responseData, null, 2)\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"pre\",\n              \"properties\": {\n                \"class\": \"builder-form-error-text\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'success'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.successMessage\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"successMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"form\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n        \"builder\": \"builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderBlockComponent\": \"BuilderBlock\",\n        \"BuilderBlocks\": \"BuilderBlocks\",\n        \"get\": \"get\",\n        \"set\": \"set\",\n      },\n      \"path\": \"@fake\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"FormComponent\",\n  \"refs\": {\n    \"formRef\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"formErrorMessage\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"formState\": {\n      \"code\": \"'unsubmitted'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onSubmit\": {\n      \"code\": \"onSubmit(event) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === 'email';\n\n  if (props.sendSubmissionsTo === 'zapier') {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === 'email')) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs = Array.from(event.currentTarget.querySelectorAll('input,select,textarea')).filter(el => !!el.name).map(el => {\n      let value;\n      const key = el.name;\n\n      if (el instanceof HTMLInputElement) {\n        if (el.type === 'radio') {\n          if (el.checked) {\n            value = el.name;\n            return {\n              key,\n              value\n            };\n          }\n        } else if (el.type === 'checkbox') {\n          value = el.checked;\n        } else if (el.type === 'number' || el.type === 'range') {\n          const num = el.valueAsNumber;\n\n          if (!isNaN(num)) {\n            value = num;\n          }\n        } else if (el.type === 'file') {\n          // TODO: one vs multiple files\n          value = el.files;\n        } else {\n          value = el.value;\n        }\n      } else {\n        value = el.value;\n      }\n\n      return {\n        key,\n        value\n      };\n    });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === 'email') {\n      contentType = 'multipart/form-data';\n    }\n\n    Array.from(formPairs).forEach(({\n      value\n    }) => {\n      if (value instanceof File || Array.isArray(value) && value[0] instanceof File || value instanceof FileList) {\n        contentType = 'multipart/form-data';\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== 'application/json') {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({\n        value,\n        key\n      }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== 'multipart/form-data') {\n      if (\n      /* Zapier doesn't allow content-type header to be sent from browsers */\n      !(sendWithJs && props.action?.includes('zapier.com'))) {\n        headers['content-type'] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent('presubmit', {\n      detail: {\n        body\n      }\n    });\n\n    if (formRef) {\n      formRef.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    state.formState = 'sending';\n    const formUrl = \\`\\${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(props.sendSubmissionsToEmail || '')}&name=\\${encodeURIComponent(props.name || '')}\\`;\n    fetch(props.sendSubmissionsTo === 'email' ? formUrl : props.action\n    /* TODO: throw error if no action URL */\n    , {\n      body,\n      headers,\n      method: props.method || 'post'\n    }).then(async res => {\n      let body;\n      const contentType = res.headers.get('content-type');\n\n      if (contentType && contentType.indexOf('application/json') !== -1) {\n        body = await res.json();\n      } else {\n        body = await res.text();\n      }\n\n      if (!res.ok && props.errorMessagePath) {\n        /* TODO: allow supplying an error formatter function */\n        let message = get(body, props.errorMessagePath);\n\n        if (message) {\n          if (typeof message !== 'string') {\n            /* TODO: ideally convert json to yaml so it woul dbe like\n             error: - email has been taken */\n            message = JSON.stringify(message);\n          }\n\n          state.formErrorMessage = message;\n        }\n      }\n\n      state.responseData = body;\n      state.formState = res.ok ? 'success' : 'error';\n\n      if (res.ok) {\n        const submitSuccessEvent = new CustomEvent('submit:success', {\n          detail: {\n            res,\n            body\n          }\n        });\n\n        if (formRef) {\n          formRef.dispatchEvent(submitSuccessEvent);\n\n          if (submitSuccessEvent.defaultPrevented) {\n            return;\n          }\n          /* TODO: option to turn this on/off? */\n\n\n          if (props.resetFormOnSubmit !== false) {\n            formRef.reset();\n          }\n        }\n        /* TODO: client side route event first that can be preventDefaulted */\n\n\n        if (props.successUrl) {\n          if (formRef) {\n            const event = new CustomEvent('route', {\n              detail: {\n                url: props.successUrl\n              }\n            });\n            formRef.dispatchEvent(event);\n\n            if (!event.defaultPrevented) {\n              location.href = props.successUrl;\n            }\n          } else {\n            location.href = props.successUrl;\n          }\n        }\n      }\n    }, err => {\n      const submitErrorEvent = new CustomEvent('submit:error', {\n        detail: {\n          error: err\n        }\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(submitErrorEvent);\n\n        if (submitErrorEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      state.responseData = err;\n      state.formState = 'error';\n    });\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"responseData\": {\n      \"code\": \"null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"submissionState\": {\n      \"code\": \"get submissionState() {\n  return Builder.isEditing && props.previewState || state.formState;\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Image 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"pictureRef\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"!state.useLazyLoading() || state.load\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"alt\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.altText\",\n                      \"type\": \"single\",\n                    },\n                    \"aria-role\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.altText ? 'presentation' : undefined\",\n                      \"type\": \"single\",\n                    },\n                    \"class\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"'builder-image' + (props._class ? ' ' + props._class : '')\",\n                      \"type\": \"single\",\n                    },\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  opacity: '1',\n  transition: 'opacity 0.2s ease-in-out',\n  objectFit: 'cover',\n  objectPosition: 'center'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onLoad\": {\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.setLoaded()\",\n                      \"type\": \"single\",\n                    },\n                    \"sizes\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.sizes\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.image\",\n                      \"type\": \"single\",\n                    },\n                    \"srcset\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.srcset\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"srcset\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.srcset\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"source\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"picture\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"if (state.useLazyLoading()) {\n  // throttled scroll capture listener\n  const listener = () => {\n    if (pictureRef) {\n      const rect = pictureRef.getBoundingClientRect();\n      const buffer = window.innerHeight / 2;\n\n      if (rect.top < window.innerHeight + buffer) {\n        state.load = true;\n        state.scrollListener = null;\n        window.removeEventListener('scroll', listener);\n      }\n    }\n  };\n\n  state.scrollListener = listener;\n  window.addEventListener('scroll', listener, {\n    capture: true,\n    passive: true\n  });\n  listener();\n}\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUnMount\": {\n      \"code\": \"if (state.scrollListener) {\n  window.removeEventListener('scroll', state.scrollListener);\n}\",\n    },\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Image\",\n  \"refs\": {\n    \"pictureRef\": {\n      \"argument\": \"\",\n    },\n  },\n  \"state\": {\n    \"imageLoaded\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"isBrowser\": {\n      \"code\": \"function isBrowser() {\n  return typeof window !== 'undefined' && window.navigator.product != 'ReactNative';\n}\",\n      \"type\": \"function\",\n    },\n    \"load\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scrollListener\": {\n      \"code\": \"null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"setLoaded\": {\n      \"code\": \"setLoaded() {\n  state.imageLoaded = true;\n}\",\n      \"type\": \"method\",\n    },\n    \"useLazyLoading\": {\n      \"code\": \"useLazyLoading() {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && state.isBrowser();\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Image State 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.images\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"itemIndex\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"item\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {\n                    \"class\": \"custom-class\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n            \"indexName\": \"itemIndex\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ImgStateComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"canShow\": {\n      \"code\": \"true\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"images\": {\n      \"code\": \"['http://example.com/qwik.png']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Img 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"alt\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.altText\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.imgSrc || 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"src\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.imgSrc\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  objectFit: props.backgroundSize || 'cover',\n  objectPosition: props.backgroundPosition || 'center'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"img\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ImgComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Input 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"onChange\": {\n          \"arguments\": [\n            \"event\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"props.onChange?.(event.target.value)\",\n          \"type\": \"single\",\n        },\n        \"placeholder\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.placeholder\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"required\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.required\",\n          \"type\": \"single\",\n        },\n        \"type\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.type\",\n          \"type\": \"single\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"FormInputComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > InputParent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"onChange\": {\n          \"arguments\": [\n            \"value\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"state.handleChange(value)\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"FormInputComponent\",\n      \"properties\": {\n        \"name\": \"kingzez\",\n        \"type\": \"text\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"FormInputComponent\": \"default\",\n      },\n      \"path\": \"./input.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Stepper\",\n  \"refs\": {},\n  \"state\": {\n    \"handleChange\": {\n      \"code\": \"handleChange(value) {\n  console.log(value);\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > NestedStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"id\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state._id\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Test\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"id\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state._messageId\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Message\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedStore\",\n  \"refs\": {},\n  \"state\": {\n    \"_id\": {\n      \"code\": \"\\\\\"abc\\\\\"\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"_messageId\": {\n      \"code\": \"state._id + \\\\\"-message\\\\\"\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > RawText 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.attributes?.class || props.attributes?.className\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.text || ''\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"span\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RawText\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Section 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.maxWidth && typeof props.maxWidth === 'number' ? {\n  maxWidth: props.maxWidth\n} : undefined\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SectionComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Section 2`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.max\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.items\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"style\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  maxWidth: item + state.max\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.children\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"section\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SectionStateComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"items\": {\n      \"code\": \"[42]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"max\": {\n      \"code\": \"42\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Select 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.options\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"data-index\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"index\",\n                  \"type\": \"single\",\n                },\n                \"value\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"option.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"option.name || option.value\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"option\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"select\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SelectComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > SlotDefault 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"Default content\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"class\": \"default-slot\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > SlotHtml 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"testing\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"<div>Hello</div>\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"Slot\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {\n                \"testing\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/mitosis/node\",\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"meta\": {},\n                        \"name\": \"div\",\n                        \"properties\": {\n                          \"_text\": \"Hello\",\n                        },\n                        \"scope\": {},\n                      },\n                    ],\n                    \"meta\": {},\n                    \"name\": \"div\",\n                    \"properties\": {},\n                    \"scope\": {},\n                  },\n                ],\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"ContentSlotCode\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"ContentSlotCode\": \"default\",\n      },\n      \"path\": \"./content-slot-jsx.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > SlotJsx 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"slotTesting\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"<div>Hello</div>\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"ContentSlotCode\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {\n            \"slotTesting\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"div\",\n                    \"properties\": {\n                      \"_text\": \"Hello\",\n                    },\n                    \"scope\": {},\n                  },\n                ],\n                \"meta\": {},\n                \"name\": \"div\",\n                \"properties\": {},\n                \"scope\": {},\n              },\n            ],\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"ContentSlotCode\": \"default\",\n      },\n      \"path\": \"./content-slot-jsx.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > SlotNamed 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"myAwesomeSlot\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"top\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Default left\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"left\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Default Child\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Stamped.io 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"data-user\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.name\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.showReviewPrompt = true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Write a review\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.showReviewPrompt || 'asdf'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"input\",\n              \"properties\": {\n                \"placeholder\": \"Email\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"input\",\n              \"properties\": {\n                \"placeholder\": \"Title\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"textarea\",\n              \"properties\": {\n                \"placeholder\": \"How was your experience?\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n                \"onClick\": {\n                  \"arguments\": [\n                    \"ev\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"{\n  ev.preventDefault();\n  state.showReviewPrompt = false;\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n          Submit\n        \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.reviews\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  margin: '10px',\n  padding: '10px',\n  background: 'white',\n  display: 'flex',\n  borderRadius: '5px',\n  boxShadow: '0 2px 5px rgba(0, 0, 0, 0.1)',\n  WebkitFontSmoothing: 'antialiased'\n}\",\n                  \"type\": \"single\",\n                },\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"review.id\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  height: '30px',\n  width: '30px',\n  marginRight: '10px'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"review.avatar\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"class\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"N: \",\n                          },\n                          \"scope\": {},\n                        },\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"index\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"review.author\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"review.reviewMessage\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"$name\": \"Review\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"review\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"fetch(\\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${props.apiKey || 'pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM'}&productId=\\${props.productId || '2410511106127'}\\`).then(res => res.json()).then(data => {\n  state.reviews = data.data;\n})\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"kebabCase\": \"kebabCase\",\n        \"snakeCase\": \"snakeCase\",\n      },\n      \"path\": \"lodash\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SmileReviews\",\n  \"refs\": {},\n  \"state\": {\n    \"kebabCaseValue\": {\n      \"code\": \"kebabCaseValue() {\n  return kebabCase('testThat');\n}\",\n      \"type\": \"method\",\n    },\n    \"name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"reviews\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"showReviewPrompt\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"snakeCaseValue\": {\n      \"code\": \"snakeCaseValue() {\n  return snakeCase('testThis');\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > StoreComment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"bar() {}\",\n      \"type\": \"method\",\n    },\n    \"foo\": {\n      \"code\": \"true\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > StoreShadowVars 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo(state.errors)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"errors\": {\n      \"code\": \"{}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"foo\": {\n      \"code\": \"foo(errors) {\n  return errors;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > StoreWithState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.bar()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"bar() {\n  return state.foo;\n}\",\n      \"type\": \"method\",\n    },\n    \"foo\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Submit 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.text\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"submit\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SubmitButton\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Text 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"contentEditable\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"allowEditingText || undefined\",\n          \"type\": \"single\",\n        },\n        \"data-name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  test: state.name || 'any name'\n}\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.text || props.content || state.name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Text\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Decadef20'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Textarea 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"placeholder\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.placeholder\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"textarea\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Textarea\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > UseValueAndFnFromStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"if (state._do) {\n  state._do(state._id);\n}\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"UseValueAndFnFromStore\",\n  \"refs\": {},\n  \"state\": {\n    \"_active\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"_do\": {\n      \"code\": \"_do(id) {\n  state._active = !!id;\n\n  if (props.onChange) {\n    props.onChange(state._active);\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"_id\": {\n      \"code\": \"'abc'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > Video 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"autoplay\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.autoPlay\",\n          \"type\": \"single\",\n        },\n        \"controls\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.controls\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.video || 'no-src'\",\n          \"type\": \"single\",\n        },\n        \"loop\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.loop\",\n          \"type\": \"single\",\n        },\n        \"muted\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.muted\",\n          \"type\": \"single\",\n        },\n        \"poster\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.posterImage\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  width: '100%',\n  height: '100%',\n  ...props.attributes?.style,\n  objectFit: props.fit,\n  objectPosition: props.position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"video\",\n      \"properties\": {\n        \"preload\": \"none\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Video\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > arrowFunctionInUseStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"setName\": {\n      \"code\": \"setName(value) {\n  state.name = value;\n}\",\n      \"type\": \"method\",\n    },\n    \"updateNameWithArrowFn\": {\n      \"code\": \"updateNameWithArrowFn(value) {\n  state.name = value;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicForFragment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"['a', 'b', 'c']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"\\`key-\\${option}\\`\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"['a', 'b', 'c']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"\\`\\${state.id}-\\${option}\\`\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"['d', 'e', 'f']\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"\\`\\${state.id}-\\${option}\\`\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"option\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"option\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"option\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"select\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"BasicForFragment\",\n  \"refs\": {},\n  \"state\": {\n    \"id\": {\n      \"code\": \"'xyz'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicForNoTagReference 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"state.tag\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.actions\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"action.icon\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"action.text\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"span\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"state.TagName\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"action\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"state.TagNameGetter\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForNoTagRefComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"TagName\": {\n      \"code\": \"'div'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"TagNameGetter\": {\n      \"code\": \"get TagNameGetter() {\n  return 'span';\n}\",\n      \"type\": \"getter\",\n    },\n    \"name\": {\n      \"code\": \"'VincentW'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"tag\": {\n      \"code\": \"'span'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicForwardRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.inputRef\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForwardRefComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicForwardRefMetadata 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.inputRef\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"forwardRef\": \"inputRef\",\n    },\n  },\n  \"name\": \"MyBasicForwardRefComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicOnUpdateReturn 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"const controller = new AbortController();\nconst signal = controller.signal;\nfetch('https://patrickjs.com/api/resource.json', {\n  signal\n}).then(response => response.json()).then(data => {\n  state.name = data.name;\n});\nreturn () => {\n  if (!signal.aborted) {\n    controller.abort();\n  }\n}\",\n        \"deps\": \"[state.name]\",\n        \"depsArray\": [\n          \"state.name\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOnUpdateReturnComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicRefAttributePassing 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"buttonRef\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Attribute Passing\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"attributePassing\": {\n        \"enabled\": true,\n      },\n    },\n  },\n  \"name\": \"BasicRefAttributePassingComponent\",\n  \"refs\": {\n    \"buttonRef\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > basicRefAttributePassingCustomRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"buttonRef\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Attribute Passing\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"attributePassing\": {\n        \"customRef\": \"buttonRef\",\n        \"enabled\": true,\n      },\n    },\n  },\n  \"name\": \"BasicRefAttributePassingCustomRefComponent\",\n  \"refs\": {\n    \"buttonRef\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > class + ClassName + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"MyComp\",\n          \"properties\": {\n            \"class\": \"test\",\n            \"className\": \"test2\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"class\": \"test2 test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyComp\": \"default\",\n      },\n      \"path\": \"./my-component.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > class + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > className + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > className 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Without Binding\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"class\": \"no binding\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"class\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.bindings\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"With binding\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ClassNameCode\",\n  \"refs\": {},\n  \"state\": {\n    \"bindings\": {\n      \"code\": \"'a binding'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > classState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.classState\",\n          \"type\": \"single\",\n        },\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.styleState\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"classState\": {\n      \"code\": \"'testClassName'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"styleState\": {\n      \"code\": \"{\n  color: 'red'\n}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > classnameProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.className\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.type\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"stencil\": {\n        \"propOptions\": {\n          \"className\": {\n            \"attribute\": \"classname\",\n            \"mutable\": false,\n            \"reflect\": false,\n          },\n        },\n      },\n    },\n  },\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > complexMeta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"asdf\": {\n        \"booleanValue\": true,\n        \"innerObject\": {\n          \"booleanValue\": false,\n          \"numberValue\": 2,\n          \"stringValue\": \"inner\",\n        },\n        \"numberValue\": 1,\n        \"spreadStringValue\": \"f\",\n        \"stringValue\": \"d\",\n      },\n      \"x\": \"y\",\n    },\n  },\n  \"name\": \"ComplexMetaRaw\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > componentWithContext 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"foo.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Fragment\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"foo\": {\n        \"name\": \"Context1\",\n        \"path\": \"@dummy/1:default\",\n      },\n    },\n    \"set\": {\n      \"@dummy/1:default\": {\n        \"name\": \"Context1\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"content() {\n  return props.content;\n}\",\n            \"type\": \"method\",\n          },\n          \"foo\": {\n            \"code\": \"'bar'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n      \"@dummy/2:default\": {\n        \"name\": \"Context2\",\n        \"value\": {\n          \"bar\": {\n            \"code\": \"'baz'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context1\": \"default\",\n      },\n      \"path\": \"@dummy/1\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context2\": \"default\",\n      },\n      \"path\": \"@dummy/2\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithContext\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > componentWithContextMultiRoot 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"foo.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Fragment\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"other\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"foo\": {\n        \"name\": \"Context1\",\n        \"path\": \"@dummy/1:default\",\n      },\n    },\n    \"set\": {\n      \"@dummy/1:default\": {\n        \"name\": \"Context1\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"content() {\n  return props.content;\n}\",\n            \"type\": \"method\",\n          },\n          \"foo\": {\n            \"code\": \"'bar'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n      \"@dummy/2:default\": {\n        \"name\": \"Context2\",\n        \"value\": {\n          \"bar\": {\n            \"code\": \"'baz'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context1\": \"default\",\n      },\n      \"path\": \"@dummy/1\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context2\": \"default\",\n      },\n      \"path\": \"@dummy/2\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithContext\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > contentState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"setting context\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {\n      \"@dummy/context.lite:default\": {\n        \"name\": \"BuilderContext\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"props.content\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n          \"registeredComponents\": {\n            \"code\": \"props.customComponents\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContext\": \"default\",\n      },\n      \"path\": \"@dummy/context.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > defaultProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onClick\": {\n                  \"bindingType\": \"function\",\n                  \"code\": \"props.onClick()\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.buttonText\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"link\": {\n      \"code\": \"'https://builder.io/'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onClick\": {\n      \"code\": \"() => {\n  console.log('hi');\n}\",\n      \"type\": \"method\",\n    },\n    \"openLinkInNewTab\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"text\": {\n      \"code\": \"'default text'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > defaultPropsOutsideComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onClick\": {\n                  \"arguments\": [\n                    \"event\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"props.onClick(event)\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"link\": {\n      \"code\": \"'https://builder.io/'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onClick\": {\n      \"code\": \"() => {}\",\n      \"type\": \"method\",\n    },\n    \"openLinkInNewTab\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"text\": {\n      \"code\": \"'default text'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > defaultValsWithTypes 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \" Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name || DEFAULT_VALUES.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"DEFAULT_VALUES\": {\n      \"code\": \"const DEFAULT_VALUES = {\n  name: 'Sami'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": true,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithTypes\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > eventInputAndChange 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"onInput\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"EventInputAndChange\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > eventProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"onClick\": {\n          \"bindingType\": \"function\",\n          \"code\": \"state.handleClick()\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"EventPropsComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"handleClick\": {\n      \"code\": \"handleClick() {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass('test');\n  }\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > expressionState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.refToUse\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"refToUse\": {\n      \"code\": \"!(props.componentRef instanceof Function) ? props.componentRef : null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > figmaMeta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"data-disabled\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.interactiveState\",\n          \"type\": \"single\",\n        },\n        \"data-icon\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.icon\",\n          \"type\": \"single\",\n        },\n        \"data-size\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.size\",\n          \"type\": \"single\",\n        },\n        \"data-width\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.width\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.label\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"figma\": {\n        \"name\": \"def-button-beta-outlined\",\n        \"props\": {\n          \"icon\": {\n            \"key\": \"👁️ Icon\",\n            \"type\": \"boolean\",\n            \"value\": {\n              \"false\": false,\n              \"true\": \"placeholder\",\n            },\n          },\n          \"iconMedium\": {\n            \"key\": \"📍 Icon Medium\",\n            \"type\": \"instance\",\n          },\n          \"iconSmall\": {\n            \"key\": \"📍 Icon Small\",\n            \"type\": \"instance\",\n          },\n          \"interactiveState\": {\n            \"key\": \"Interactive State\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Enabled\": false,\n              \"Disabled\": \"true\",\n              \"Focused\": false,\n              \"Hovered\": false,\n              \"Pressed\": false,\n            },\n          },\n          \"label\": {\n            \"key\": \"✏️ Label\",\n            \"type\": \"string\",\n          },\n          \"size\": {\n            \"key\": \"Size\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Medium\": false,\n              \"Small\": \"small\",\n            },\n          },\n          \"width\": {\n            \"key\": \"Width\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Auto Width\": false,\n              \"Full Width\": \"full\",\n            },\n          },\n        },\n        \"url\": \"https://www.figma.com/xxx\",\n      },\n    },\n  },\n  \"name\": \"FigmaButton\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > functionProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"f\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"() => x\",\n          \"type\": \"single\",\n        },\n        \"f1\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"x => x\",\n          \"type\": \"single\",\n        },\n        \"f2\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"x => {}\",\n          \"type\": \"single\",\n        },\n        \"f3\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function () {\n  return x;\n}\",\n          \"type\": \"single\",\n        },\n        \"f4\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function (x) {\n  return x;\n}\",\n          \"type\": \"single\",\n        },\n        \"f5\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function (x) {\n  return;\n}\",\n          \"type\": \"single\",\n        },\n        \"f6\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function () {\n  return;\n}\",\n          \"type\": \"single\",\n        },\n        \"f7\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"(a, b, c) => a + b + c\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"p\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > getterState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.foo2\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.bar\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.baz(1)\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"get bar() {\n  return 'bar';\n}\",\n      \"type\": \"getter\",\n    },\n    \"baz\": {\n      \"code\": \"baz(i) {\n  return i + state.foo2.length;\n}\",\n      \"type\": \"method\",\n    },\n    \"foo2\": {\n      \"code\": \"get foo2() {\n  return props.foo + 'foo';\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > import types 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"state.getRenderContentProps(props.renderContentProps.block,0)\": {\n          \"code\": \"state.getRenderContentProps(props.renderContentProps.block, 0)\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"RenderBlock\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderBlock\": \"default\",\n      },\n      \"path\": \"./builder-render-block.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"refs\": {},\n  \"state\": {\n    \"getRenderContentProps\": {\n      \"code\": \"getRenderContentProps(block, index) {\n  return {\n    block: block,\n    index: index\n  };\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > layerName 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🌟layer-name\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyLayerNameComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > multipleOnUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs on every update/rerender')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n      {\n        \"code\": \"console.log('Runs on every update/rerender as well')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MultipleOnUpdate\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > multipleOnUpdateWithDeps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs when a or b changes', state.a, state.b);\n\nif (state.a === 'a') {\n  state.a = 'b';\n}\",\n        \"deps\": \"[state.a, state.b]\",\n        \"depsArray\": [\n          \"state.a\",\n          \"state.b\",\n        ],\n      },\n      {\n        \"code\": \"console.log('Runs when c or d changes', state.c, state.d);\n\nif (state.a === 'a') {\n  state.a = 'b';\n}\",\n        \"deps\": \"[state.c, state.d]\",\n        \"depsArray\": [\n          \"state.c\",\n          \"state.d\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MultipleOnUpdateWithDeps\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"'a'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"'b'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"c\": {\n      \"code\": \"'c'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"d\": {\n      \"code\": \"'d'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > multipleSpreads 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"attrs\": {\n          \"code\": \"state.attrs\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"props\": {\n          \"code\": \"props\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"attrs\": {\n      \"code\": \"{\n  hello: 'world'\n}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > nestedShow 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.conditionB\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"if condition A and condition B\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"else-condition-B\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedShow\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > nestedStyles 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  '--bar': 'red',\n  color: 'var(--bar)',\n  '@media (max-width: env(--mobile))': {\n    display: 'block'\n  },\n  '&:hover': {\n    display: 'flex'\n  },\n  ':active': {\n    display: 'inline'\n  },\n  '.nested-selector': {\n    display: 'grid'\n  },\n  '.nested-selector:hover': {\n    display: 'block'\n  },\n  '&.nested-selector:active': {\n    display: 'inline-block'\n  }\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello world\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedStyles\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > normalizeLayerNames 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Emoji\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🌟layer-name\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Dashes\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"---\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"CamelCase\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"CamelCase\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Special chars\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"123my@Class-Name!\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Special chars with dashes\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"--my--@custom--name--\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  margin: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Single Number\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"0\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Multiple Numbers\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"123\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  border: '1px solid'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Chars with numbers at end\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"name123\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Chars with numbers at start\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"456name\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  background: 'blue'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Numnbers separated by dash\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"name-789\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Emoji\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🚀\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  background: 'blue'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Number\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"data-name\": \"1\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyNormalizedLayerNamesComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onEvent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Test\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-embed\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [\n      {\n        \"code\": \"console.log('test');\nstate.foo(event)\",\n        \"elementArgName\": \"element\",\n        \"eventArgName\": \"event\",\n        \"eventName\": \"initEditingBldr\",\n        \"isRoot\": true,\n        \"refName\": \"elem\",\n      },\n    ],\n    \"onMount\": [\n      {\n        \"code\": \"elem.dispatchEvent(new CustomEvent('initEditingBldr'))\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Embed\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n    },\n  },\n  \"state\": {\n    \"foo\": {\n      \"code\": \"foo(event) {\n  console.log('test2');\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onInit & onMount 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"console.log('onInit')\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInit\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onInit 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Default name defined by parent \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"defaultValues\": {\n      \"code\": \"export const defaultValues = {\n  name: 'PatrickJS'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"state.name = defaultValues.name || props.name;\nconsole.log('set defaults with props')\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInit\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onInitPlain 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"console.log('onInit')\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInitPlain\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onMount 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('Runs on mount')\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUnMount\": {\n      \"code\": \"console.log('Runs on unMount')\",\n    },\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Comp\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onMountMultiple 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('Runs on mount')\",\n        \"onSSR\": false,\n      },\n      {\n        \"code\": \"console.log('Another one runs on Mount')\",\n        \"onSSR\": false,\n      },\n      {\n        \"code\": \"console.log('SSR runs on Mount')\",\n        \"onSSR\": true,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Comp\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs on every update/rerender')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdate\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > onUpdateWithDeps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs when a, b or size changes', state.a, state.b, props.size)\",\n        \"deps\": \"[state.a, state.b, props.size]\",\n        \"depsArray\": [\n          \"state.a\",\n          \"state.b\",\n          \"props.size\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdateWithDeps\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"'a'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"'b'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > preserveExportOrLocalStatement 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"a\": {\n      \"code\": \"export const a = 3;\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n    \"b\": {\n      \"code\": \"const b = 3;\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n    \"bar\": {\n      \"code\": \"export const bar = () => {};\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n    \"foo\": {\n      \"code\": \"const foo = () => {};\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n    \"run\": {\n      \"code\": \"export function run(value) {}\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > preserveTyping 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > propsDestructure 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.type\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Decadef20'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > propsInterface 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > propsType 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > referencingFunInsideHook 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"state.foo({\n  someOption: state.bar\n})\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdate\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"function bar() {}\",\n      \"type\": \"function\",\n    },\n    \"foo\": {\n      \"code\": \"function foo(params) {}\",\n      \"type\": \"function\",\n    },\n    \"zoo\": {\n      \"code\": \"function zoo() {\n  const params = {\n    cb: state.bar\n  };\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > renderBlock 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.shouldWrap\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"isEmptyHtmlElement(state.tag)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"state.actions\": {\n                  \"code\": \"state.actions\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"state.attributes\": {\n                  \"code\": \"state.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"state.tag\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!isEmptyHtmlElement(state.tag) && state.repeatItemData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.repeatItemData\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"block\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"data.block\",\n                      \"type\": \"single\",\n                    },\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                    \"repeatContext\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"data.context\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"RenderRepeatedBlock\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"data\",\n                \"indexName\": \"index\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!isEmptyHtmlElement(state.tag) && !state.repeatItemData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"state.actions\": {\n                  \"code\": \"state.actions\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"state.attributes\": {\n                  \"code\": \"state.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"state.renderComponentProps\": {\n                      \"code\": \"state.renderComponentProps\",\n                      \"spreadType\": \"normal\",\n                      \"type\": \"spread\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"state.renderComponentTag\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"each\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.childrenWithoutParentComponent\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"block\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"child\",\n                          \"type\": \"single\",\n                        },\n                        \"context\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"state.childrenContext\",\n                          \"type\": \"single\",\n                        },\n                        \"key\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"'render-block-' + child.id\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"RenderBlock\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"For\",\n                  \"properties\": {},\n                  \"scope\": {\n                    \"forName\": \"child\",\n                  },\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"each\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.childrenWithoutParentComponent\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"block\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"child\",\n                          \"type\": \"single\",\n                        },\n                        \"context\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"state.childrenContext\",\n                          \"type\": \"single\",\n                        },\n                        \"key\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"'block-style-' + child.id\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"BlockStyles\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"For\",\n                  \"properties\": {},\n                  \"scope\": {\n                    \"forName\": \"child\",\n                  },\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"state.tag\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"state.renderComponentProps\": {\n              \"code\": \"state.renderComponentProps\",\n              \"spreadType\": \"normal\",\n              \"type\": \"spread\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"state.renderComponentTag\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"TARGET\": \"TARGET\",\n      },\n      \"path\": \"../../constants/target.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"evaluate\": \"evaluate\",\n      },\n      \"path\": \"../../functions/evaluate.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"extractTextStyles\": \"extractTextStyles\",\n      },\n      \"path\": \"../../functions/extract-text-styles.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockActions\": \"getBlockActions\",\n      },\n      \"path\": \"../../functions/get-block-actions.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockComponentOptions\": \"getBlockComponentOptions\",\n      },\n      \"path\": \"../../functions/get-block-component-options.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockProperties\": \"getBlockProperties\",\n      },\n      \"path\": \"../../functions/get-block-properties.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockTag\": \"getBlockTag\",\n      },\n      \"path\": \"../../functions/get-block-tag.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getProcessedBlock\": \"getProcessedBlock\",\n      },\n      \"path\": \"../../functions/get-processed-block.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getReactNativeBlockStyles\": \"getReactNativeBlockStyles\",\n      },\n      \"path\": \"../../functions/get-react-native-block-styles.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BlockStyles\": \"default\",\n      },\n      \"path\": \"./block-styles.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"isEmptyHtmlElement\": \"isEmptyHtmlElement\",\n      },\n      \"path\": \"./render-block.helpers.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderComponentWithContext\": \"default\",\n      },\n      \"path\": \"./render-component-with-context.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderComponent\": \"default\",\n      },\n      \"path\": \"./render-component.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderRepeatedBlock\": \"default\",\n      },\n      \"path\": \"./render-repeated-block.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderBlock\",\n  \"refs\": {},\n  \"state\": {\n    \"actions\": {\n      \"code\": \"get actions() {\n  return getBlockActions({\n    block: state.useBlock,\n    state: props.context.state,\n    context: props.context.context\n  });\n}\",\n      \"type\": \"getter\",\n    },\n    \"attributes\": {\n      \"code\": \"get attributes() {\n  const blockProperties = getBlockProperties(state.useBlock);\n  return { ...blockProperties,\n    ...(TARGET === 'reactNative' ? {\n      style: getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: blockProperties.style\n      })\n    } : {})\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"childrenContext\": {\n      \"code\": \"get childrenContext() {\n  return {\n    apiKey: props.context.apiKey,\n    state: props.context.state,\n    content: props.context.content,\n    context: props.context.context,\n    registeredComponents: props.context.registeredComponents,\n    inheritedStyles: state.inheritedTextStyles\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"childrenWithoutParentComponent\": {\n      \"code\": \"get childrenWithoutParentComponent() {\n  /**\n   * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n   * we render them outside of \\`componentRef\\`.\n   * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n   * blocks, and the children will be repeated within those blocks.\n   */\n  const shouldRenderChildrenOutsideRef = !state.component?.component && !state.repeatItemData;\n  return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n}\",\n      \"type\": \"getter\",\n    },\n    \"component\": {\n      \"code\": \"get component() {\n  const componentName = getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: false\n  }).component?.name;\n\n  if (!componentName) {\n    return null;\n  }\n\n  const ref = props.context.registeredComponents[componentName];\n\n  if (!ref) {\n    // TODO: Public doc page with more info about this message\n    console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n    return undefined;\n  } else {\n    return ref;\n  }\n}\",\n      \"type\": \"getter\",\n    },\n    \"inheritedTextStyles\": {\n      \"code\": \"get inheritedTextStyles() {\n  if (TARGET !== 'reactNative') {\n    return {};\n  }\n\n  const styles = getReactNativeBlockStyles({\n    block: state.useBlock,\n    context: props.context,\n    blockStyles: state.attributes.style\n  });\n  return extractTextStyles(styles);\n}\",\n      \"type\": \"getter\",\n    },\n    \"renderComponentProps\": {\n      \"code\": \"get renderComponentProps() {\n  return {\n    blockChildren: state.useChildren,\n    componentRef: state.component?.component,\n    componentOptions: { ...getBlockComponentOptions(state.useBlock),\n\n      /**\n       * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n       * they are provided to the component itself directly.\n       */\n      ...(state.shouldWrap ? {} : {\n        attributes: { ...state.attributes,\n          ...state.actions\n        }\n      }),\n      customBreakpoints: state.childrenContext?.content?.meta?.breakpoints\n    },\n    context: state.childrenContext\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"renderComponentTag\": {\n      \"code\": \"get renderComponentTag() {\n  if (TARGET === 'reactNative') {\n    return RenderComponentWithContext;\n  } else if (TARGET === 'vue3') {\n    // vue3 expects a string for the component tag\n    return 'RenderComponent';\n  } else {\n    return RenderComponent;\n  }\n}\",\n      \"type\": \"getter\",\n    },\n    \"repeatItemData\": {\n      \"code\": \"get repeatItemData() {\n  /**\n   * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n   * which will not work if there is a repeat.\n   */\n  const {\n    repeat,\n    ...blockWithoutRepeat\n  } = props.block;\n\n  if (!repeat?.collection) {\n    return undefined;\n  }\n\n  const itemsArray = evaluate({\n    code: repeat.collection,\n    state: props.context.state,\n    context: props.context.context\n  });\n\n  if (!Array.isArray(itemsArray)) {\n    return undefined;\n  }\n\n  const collectionName = repeat.collection.split('.').pop();\n  const itemNameToUse = repeat.itemName || (collectionName ? collectionName + 'Item' : 'item');\n  const repeatArray = itemsArray.map((item, index) => ({\n    context: { ...props.context,\n      state: { ...props.context.state,\n        $index: index,\n        $item: item,\n        [itemNameToUse]: item,\n        [\\`$\\${itemNameToUse}Index\\`]: index\n      }\n    },\n    block: blockWithoutRepeat\n  }));\n  return repeatArray;\n}\",\n      \"type\": \"getter\",\n    },\n    \"shouldWrap\": {\n      \"code\": \"get shouldWrap() {\n  return !state.component?.noWrap;\n}\",\n      \"type\": \"getter\",\n    },\n    \"tag\": {\n      \"code\": \"get tag() {\n  return getBlockTag(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"useBlock\": {\n      \"code\": \"get useBlock() {\n  return state.repeatItemData ? props.block : getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: true\n  });\n}\",\n      \"type\": \"getter\",\n    },\n    \"useChildren\": {\n      \"code\": \"get useChildren() {\n  // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n  // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n  // but still receive and need to render children.\n  // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n  return state.useBlock.children ?? [];\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > renderContentExample 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'columns'\n}\",\n          \"type\": \"single\",\n        },\n        \"onClick\": {\n          \"bindingType\": \"function\",\n          \"code\": \"trackClick(props.content.id)\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"blocks\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.content.blocks\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"RenderBlocks\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {\n      \"@dummy/context.lite:default\": {\n        \"name\": \"BuilderContext\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"get content() {\n  return 3;\n}\",\n            \"type\": \"getter\",\n          },\n          \"registeredComponents\": {\n            \"code\": \"get registeredComponents() {\n  return 4;\n}\",\n            \"type\": \"getter\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"sendComponentsToVisualEditor(props.customComponents)\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUpdate\": [\n      {\n        \"code\": \"dispatchNewContentToVisualEditor(props.content)\",\n        \"deps\": \"[props.content]\",\n        \"depsArray\": [\n          \"props.content\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContext\": \"default\",\n      },\n      \"path\": \"@dummy/context.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"dispatchNewContentToVisualEditor\": \"dispatchNewContentToVisualEditor\",\n        \"sendComponentsToVisualEditor\": \"sendComponentsToVisualEditor\",\n        \"trackClick\": \"trackClick\",\n      },\n      \"path\": \"@dummy/injection-js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderBlocks\": \"default\",\n      },\n      \"path\": \"@dummy/RenderBlocks.lite.tsx\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > rootFragmentMultiNode 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > rootShow 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.foo === 'bar'\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Bar\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Foo\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderStyles\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > self-referencing component 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name === 'Batman'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyComponent\",\n              \"properties\": {\n                \"name\": \"Bruce Wayne\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > self-referencing component with children 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name === 'Batman'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"Wayne\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"MyComponent\",\n              \"properties\": {\n                \"name\": \"Bruce\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > setState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.someFn()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Click me\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SetState\",\n  \"refs\": {},\n  \"state\": {\n    \"n\": {\n      \"code\": \"['123']\",\n      \"propertyType\": \"reactive\",\n      \"type\": \"property\",\n    },\n    \"someFn\": {\n      \"code\": \"someFn() {\n  state.n.value[0] = '123';\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > showExpressions 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Content0\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentB\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentB\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentC\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentC\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentD\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentD\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentE\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentE\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentF\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentF\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"4mb\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"20mb\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"20mb\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"4mb\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"complete\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionC === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"dff\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"complete else\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowWithOtherValues\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > showWithFor 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.items\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"idx\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"item\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n            \"indexName\": \"idx\",\n          },\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedShow\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > showWithOtherValues 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentA\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentB\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentC\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentD\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentE\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentF\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowWithOtherValues\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > showWithRootText 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      ContentA\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowRootText\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > signalsOnUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.id\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.foo.value.bar.baz\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('props.id changed', props.id);\nconsole.log('props.foo.value.bar.baz changed', props.foo.value.bar.baz)\",\n        \"deps\": \"[props.id, props.foo.value.bar.baz]\",\n        \"depsArray\": [\n          \"props.id\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > spreadAttrs 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"attrs\": {\n          \"code\": \"attrs\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > spreadNestedProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.nested\": {\n          \"code\": \"props.nested\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > spreadProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props\": {\n          \"code\": \"props\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > store-async-function 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"arrowFunction\": {\n      \"code\": \"async function arrowFunction() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n    \"fetchUsers\": {\n      \"code\": \"async function fetchUsers() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n    \"namedFunction\": {\n      \"code\": \"async function namedFunction() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > string-literal-store 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"foo\": {\n      \"code\": \"123\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > string-literal-store-kebab 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state['foo-bar']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"foo-bar\": {\n      \"code\": \"123\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > styleClassAndCss 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  width: '100%'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-column\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > stylePropClassAndCss 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.attributes.style\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"USE_TARGET_BLOCK_1\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StylePropClassAndCss\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"targetBlocks\": {\n    \"1\": {\n      \"default\": {\n        \"code\": \"props.attributes.class\",\n      },\n      \"settings\": {\n        \"requiresDefault\": true,\n      },\n      \"svelte\": {\n        \"code\": \"props.attributes.classfdsa\",\n      },\n      \"vue\": {\n        \"code\": \"props.attributes.className\",\n      },\n    },\n  },\n}\n`;\n\nexports[`Parse JSX > Javascript > subComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Foo\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Foo\": \"default\",\n      },\n      \"path\": \"./foo-sub-component.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SubComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > svgComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"height\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"42\",\n          \"type\": \"single\",\n        },\n        \"viewBox\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'0 0 ' + 42 + ' ' + 42\",\n          \"type\": \"single\",\n        },\n        \"width\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"42\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feFlood\",\n                  \"properties\": {\n                    \"result\": \"BackgroundImageFix\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feBlend\",\n                  \"properties\": {\n                    \"in\": \"SourceGraphic\",\n                    \"in2\": \"BackgroundImageFix\",\n                    \"result\": \"shape\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"stdDeviation\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"7\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feGaussianBlur\",\n                  \"properties\": {\n                    \"result\": \"effect1_foregroundBlur\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"filter\",\n              \"properties\": {\n                \"filterUnits\": \"userSpaceOnUse\",\n                \"id\": \"prefix__filter0_f\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"defs\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"svg\",\n      \"properties\": {\n        \"fill\": \"none\",\n        \"role\": \"img\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SvgComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > typeDependency 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeDependency\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > typeExternalProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeExternalProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > typeExternalStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state._name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeExternalStore\",\n  \"refs\": {},\n  \"state\": {\n    \"_name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > typeGetterStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeGetterStore\",\n  \"refs\": {},\n  \"state\": {\n    \"getName\": {\n      \"code\": \"getName() {\n  if (state.name === 'a') {\n    return 'b';\n  }\n\n  return state.name;\n}\",\n      \"type\": \"method\",\n    },\n    \"name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"test\": {\n      \"code\": \"get test() {\n  return 'test';\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > use-style 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Button\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > use-style-and-css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  background: 'blue',\n  color: 'white'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Button\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > use-style-outside-component 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Button\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Javascript > useTarget 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log(state.foo);\nstate.foo = 'bar';\n\\\\\"USE_TARGET_BLOCK_2\\\\\"\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"UseTargetComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"foo\": {\n      \"code\": \"'bar'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"lastName\": {\n      \"code\": \"'bar'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"name\": {\n      \"code\": \"get name() {\n  const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n  return prefix + 'foo';\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n  \"targetBlocks\": {\n    \"1\": {\n      \"alpine\": {\n        \"code\": \"'a'\",\n      },\n      \"angular\": {\n        \"code\": \"true\",\n      },\n      \"customElement\": {\n        \"code\": \"'c'\",\n      },\n      \"default\": {\n        \"code\": \"'Default str'\",\n      },\n      \"html\": {\n        \"code\": \"'h'\",\n      },\n      \"liquid\": {\n        \"code\": \"'l'\",\n      },\n      \"lit\": {\n        \"code\": \"'li'\",\n      },\n      \"marko\": {\n        \"code\": \"'m'\",\n      },\n      \"mitosis\": {\n        \"code\": \"'mi'\",\n      },\n      \"preact\": {\n        \"code\": \"'p'\",\n      },\n      \"qwik\": {\n        \"code\": \"'q'\",\n      },\n      \"react\": {\n        \"code\": \"123\",\n      },\n      \"reactNative\": {\n        \"code\": \"'rn'\",\n      },\n      \"rsc\": {\n        \"code\": \"'rsc'\",\n      },\n      \"settings\": {\n        \"requiresDefault\": true,\n      },\n      \"solid\": {\n        \"code\": \"'so'\",\n      },\n      \"stencil\": {\n        \"code\": \"'st'\",\n      },\n      \"svelte\": {\n        \"code\": \"'s'\",\n      },\n      \"swift\": {\n        \"code\": \"'sw'\",\n      },\n      \"taro\": {\n        \"code\": \"'t'\",\n      },\n      \"template\": {\n        \"code\": \"'te'\",\n      },\n      \"vue\": {\n        \"code\": \"'v'\",\n      },\n      \"webcomponent\": {\n        \"code\": \"'wc'\",\n      },\n    },\n    \"2\": {\n      \"qwik\": {\n        \"code\": \"console.log('qwik');\nstate.lastName = 'baz';\nconsole.log(state.foo);\nstate.foo = 'baz'\",\n      },\n      \"react\": {\n        \"code\": \"console.log('react');\nstate.lastName = 'baz';\nconsole.log(state.foo);\nstate.foo = 'baz'\",\n      },\n      \"settings\": {\n        \"requiresDefault\": false,\n      },\n    },\n  },\n}\n`;\n\nexports[`Parse JSX > Javascript > webComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 1\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 2\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 3\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"swiper-container\",\n      \"properties\": {\n        \"navigation\": \"true\",\n        \"pagination\": \"true\",\n        \"slides-per-view\": \"3\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"register()\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"register\": \"register\",\n      },\n      \"path\": \"swiper/element/bundle\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicWebComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Remove Internal mitosis package 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! I can run in React, Qwik, Vue, Solid, or Liquid!\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Advanced 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"i\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \": \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"i\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"br\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"ee\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"pre\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"_\",\n            \"indexName\": \"ee\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"p\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"index\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"count\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"count\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"i\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"i\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"Array.from({\n  length: 10\n})\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"span\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"main\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForShowComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > AdvancedRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.showInput\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  color: 'red'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onBlur\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.onBlur()\",\n                      \"type\": \"single\",\n                    },\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.name = event.target.value\",\n                      \"type\": \"single\",\n                    },\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputRef\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputNoArgRef\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"\n            Choose a car:\n          \",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"label\",\n                  \"properties\": {\n                    \"for\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR Supra\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"supra\",\n                      },\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR 86\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"86\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"select\",\n                  \"properties\": {\n                    \"id\": \"cars\",\n                    \"name\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.lowerCaseName()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! I can run in React, Qwik, Vue, Solid, or Web Component!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Received an update')\",\n        \"deps\": \"[inputRef, inputNoArgRef]\",\n        \"depsArray\": [\n          \"inputRef\",\n          \"inputNoArgRef\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {\n    \"inputNoArgRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLLabelElement\",\n    },\n    \"inputRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLInputElement\",\n    },\n  },\n  \"state\": {\n    \"lowerCaseName\": {\n      \"code\": \"function lowerCaseName() {\n  return state.name.toLowerCase();\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onBlur\": {\n      \"code\": \"function onBlur() {\n  // Maintain focus\n  inputRef.focus();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"arguments\": [\n                \"myEvent\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = myEvent.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"DEFAULT_VALUES.name || state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"DEFAULT_VALUES\": {\n      \"code\": \"export const DEFAULT_VALUES = {\n  name: 'Steve'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": true,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"MyBasicComponentProps\",\n  \"refs\": {},\n  \"state\": {\n    \"age\": {\n      \"code\": \"1\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"number\",\n    },\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"sports\": {\n      \"code\": \"['']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"Array<string>\",\n    },\n    \"underscore_fn_name\": {\n      \"code\": \"underscore_fn_name() {\n  return 'bar';\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface MyBasicComponentProps {\n  id: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic 2`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"person === state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"{\n  state.name = event.target.value + ' and ' + person;\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n            Hello \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForShowComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic Context 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"myService.method('hello') + state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.onChange()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"myService\": {\n        \"name\": \"MyService\",\n        \"path\": \"@dummy/injection-js:MyService\",\n      },\n    },\n    \"set\": {\n      \"@dummy/injection-js:Injector\": {\n        \"name\": \"Injector\",\n        \"ref\": \"createInjector()\",\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"const hi = myService.method('hi');\nconsole.log(hi)\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"const bye = myService.method('hi');\nconsole.log(bye)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Injector\": \"Injector\",\n        \"MyService\": \"MyService\",\n        \"createInjector\": \"createInjector\",\n      },\n      \"path\": \"@dummy/injection-js\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onChange\": {\n      \"code\": \"function onChange() {\n  const change = myService.method('change');\n  console.log(change);\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic OnMount Update 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"state.name = 'PatrickJS onInit' + props.hi\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"state.name = 'PatrickJS onMount' + props.bye\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOnMountUpdateComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  hi: string;\n  bye: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic Outputs 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"props.onMessageChange(state.name);\nprops.onEvent(props.message)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOutputsComponent\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Basic Outputs Meta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"props.onMessageChange(state.name);\nprops.onEvent(props.message)\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"baz\": \"metadata inside component\",\n      \"outputs\": [\n        \"onMessage\",\n        \"onEvent\",\n      ],\n    },\n  },\n  \"name\": \"MyBasicOutputsComponent\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicAttribute 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"spellcheck\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"true\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {\n        \"autocapitalize\": \"on\",\n        \"autocomplete\": \"on\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicBooleanAttribute 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.children\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.type\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"list\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"null\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBooleanAttributeComponent\": \"default\",\n      },\n      \"path\": \"./basic-boolean-attribute-component.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBooleanAttribute\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  children: any;\n  type: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicChildComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"id\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.dev\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBasicComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"bye\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.dev\",\n                  \"type\": \"single\",\n                },\n                \"hi\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyBasicOnMountUpdateComponent\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onEvent\": {\n                  \"bindingType\": \"function\",\n                  \"code\": \"state.log('Test')\",\n                  \"type\": \"single\",\n                },\n                \"onMessageChange\": {\n                  \"arguments\": [\n                    \"name\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"state.name = name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyBasicOutputsComponent\",\n              \"properties\": {\n                \"message\": \"Test\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicOnMountUpdateComponent\": \"default\",\n      },\n      \"path\": \"./basic-onMount-update.raw\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicOutputsComponent\": \"default\",\n      },\n      \"path\": \"./basic-outputs.raw\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBasicComponent\": \"default\",\n      },\n      \"path\": \"./basic.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicChildComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"dev\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"log\": {\n      \"code\": \"function log(message: string) {\n  console.log(message);\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicFor 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.names\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"{\n  state.name = event.target.value + ' and ' + person;\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n            Hello \",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"person\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"person\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount code')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"names\": {\n      \"code\": \"['Steve', 'PatrickJS']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.showInput\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  color: 'red'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onBlur\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.onBlur()\",\n                      \"type\": \"single\",\n                    },\n                    \"onChange\": {\n                      \"arguments\": [\n                        \"event\",\n                      ],\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.name = event.target.value\",\n                      \"type\": \"single\",\n                    },\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputRef\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.name\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"input\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"ref\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"inputNoArgRef\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"\n            Choose a car:\n          \",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"label\",\n                  \"properties\": {\n                    \"for\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR Supra\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"supra\",\n                      },\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"GR 86\",\n                          },\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"option\",\n                      \"properties\": {\n                        \"value\": \"86\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"select\",\n                  \"properties\": {\n                    \"id\": \"cars\",\n                    \"name\": \"cars\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.lowerCaseName()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! I can run in React, Qwik, Vue, Solid, or Web Component!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {\n    \"inputNoArgRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLLabelElement | null\",\n    },\n    \"inputRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLInputElement | null\",\n    },\n  },\n  \"state\": {\n    \"lowerCaseName\": {\n      \"code\": \"function lowerCaseName() {\n  return state.name.toLowerCase();\n}\",\n      \"type\": \"function\",\n    },\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onBlur\": {\n      \"code\": \"function onBlur() {\n  // Maintain focus\n  inputRef?.focus();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicRefAssignment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": [\n                \"evt\",\n              ],\n              \"async\": true,\n              \"bindingType\": \"function\",\n              \"code\": \"await state.handlerClick(evt)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Click\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicRefAssignmentComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {\n    \"holdValueRef\": {\n      \"argument\": \"'Patrick'\",\n    },\n  },\n  \"state\": {\n    \"handlerClick\": {\n      \"code\": \"function handlerClick(event: Event) {\n  event.preventDefault();\n  console.log('current value', holdValueRef);\n  holdValueRef = holdValueRef + 'JS';\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > BasicRefPrevious 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Now: \",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.count\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \", before: \",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"prevCount\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"h1\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.count += 1\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Increment\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"usePrevious\": {\n      \"code\": \"export function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"prevCount = state.count\",\n        \"deps\": \"[state.count]\",\n        \"depsArray\": [\n          \"state.count\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyPreviousComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {\n    \"prevCount\": {\n      \"argument\": \"state.count\",\n    },\n  },\n  \"state\": {\n    \"count\": {\n      \"code\": \"0\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Button 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Columns 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch',\n  lineHeight: 'normal',\n  '@media (max-width: 999px)': {\n    flexDirection: 'row'\n  },\n  '@media (max-width: 639px)': {\n    flexDirection: 'row-reverse'\n  }\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.columns\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  flexGrow: '1'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"column.content\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"class\": \"builder-column\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"column\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-columns\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Column\",\n  \"propsTypeRef\": \"ColumnProps\",\n  \"refs\": {},\n  \"state\": {\n    \"getColumnCssWidth\": {\n      \"code\": \"getColumnCssWidth(index: number) {\n  const columns = state.getColumns();\n  const gutterSize = state.getGutterSize();\n  const subtractWidth = gutterSize * (columns.length - 1) / columns.length;\n  return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n}\",\n      \"type\": \"method\",\n    },\n    \"getColumns\": {\n      \"code\": \"getColumns() {\n  return props.columns || [];\n}\",\n      \"type\": \"method\",\n    },\n    \"getGutterSize\": {\n      \"code\": \"getGutterSize() {\n  return typeof props.space === 'number' ? props.space || 0 : 20;\n}\",\n      \"type\": \"method\",\n    },\n    \"getWidth\": {\n      \"code\": \"getWidth(index: number) {\n  const columns = state.getColumns();\n  return columns[index] && columns[index].width || 100 / columns.length;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n}\",\n    \"export interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: 'tablet' | 'mobile' | 'never'; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > ContentSlotHtml 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"name\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotTesting\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"hr\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"Slot\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"JSX\": \"JSX\",\n      },\n      \"path\": \"../../../../jsx-runtime\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ContentSlotCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > ContentSlotJSX 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.slotReference\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"class\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.cls\",\n              \"type\": \"single\",\n            },\n            \"name\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotContent ? 'name1' : 'name2'\",\n              \"type\": \"single\",\n            },\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.show()\",\n              \"type\": \"single\",\n            },\n            \"props.attributes\": {\n              \"code\": \"props.attributes\",\n              \"spreadType\": \"normal\",\n              \"type\": \"spread\",\n            },\n            \"title\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.slotContent ? 'title1' : 'title2'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.showContent && props.slotContent\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"props.content\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"Slot\",\n                  \"properties\": {\n                    \"name\": \"content\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"hr\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.children\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"content\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"slotContent\": {\n      \"code\": \"undefined\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"slotReference\": {\n      \"code\": \"undefined\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"JSX\": \"JSX\",\n      },\n      \"path\": \"../../../../jsx-runtime\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ContentSlotJsxCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"cls\": {\n      \"code\": \"get cls() {\n  return props.slotContent && props.children ? \\`\\${state.name}-content\\` : '';\n}\",\n      \"type\": \"getter\",\n    },\n    \"name\": {\n      \"code\": \"'king'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"show\": {\n      \"code\": \"show() {\n  props.slotContent ? 1 : '';\n}\",\n      \"type\": \"method\",\n    },\n    \"showContent\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string | JSX.Element;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > CustomCode 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.code\",\n          \"type\": \"single\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"state.findAndRunScripts()\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"CustomCode\",\n  \"propsTypeRef\": \"CustomCodeProps\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLDivElement\",\n    },\n  },\n  \"state\": {\n    \"findAndRunScripts\": {\n      \"code\": \"findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem && typeof window !== 'undefined') {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.getElementsByTagName('script');\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement('script');\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (!script.type || ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(script.type)) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn('\\`CustomCode\\`: Error running script:', error);\n        }\n      }\n    }\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"scriptsInserted\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scriptsRun\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Embed 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.code\",\n          \"type\": \"single\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"state.findAndRunScripts()\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"CustomCode\",\n  \"propsTypeRef\": \"CustomCodeProps\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLDivElement\",\n    },\n  },\n  \"state\": {\n    \"findAndRunScripts\": {\n      \"code\": \"findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem && typeof window !== 'undefined') {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.getElementsByTagName('script');\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement('script');\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (!script.type || ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(script.type)) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn('\\`CustomCode\\`: Error running script:', error);\n        }\n      }\n    }\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"scriptsInserted\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scriptsRun\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Form 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"action\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"!props.sendWithJs && props.action\",\n          \"type\": \"single\",\n        },\n        \"method\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.method\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"onSubmit\": {\n          \"arguments\": [\n            \"event\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"state.onSubmit(event)\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"formRef\",\n          \"type\": \"single\",\n        },\n        \"validate\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.validate\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.builderBlock && props.builderBlock.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.builderBlock?.children\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"block\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"block\",\n                      \"type\": \"single\",\n                    },\n                    \"index\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"block.id\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"BuilderBlockComponent\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"block\",\n                \"indexName\": \"index\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'error'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.errorMessage!\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"errorMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'sending'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.sendingMessage!\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"sendingMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'error' && state.responseData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  padding: '10px',\n  color: 'red',\n  textAlign: 'center'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"JSON.stringify(state.responseData, null, 2)\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"pre\",\n              \"properties\": {\n                \"class\": \"builder-form-error-text\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.submissionState === 'success'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"blocks\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.successMessage!\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"BuilderBlocks\",\n              \"properties\": {\n                \"dataPath\": \"successMessage\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"form\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n        \"BuilderElement\": \"BuilderElement\",\n        \"builder\": \"builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderBlockComponent\": \"BuilderBlock\",\n        \"BuilderBlocks\": \"BuilderBlocks\",\n        \"get\": \"get\",\n        \"set\": \"set\",\n      },\n      \"path\": \"@fake\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"FormComponent\",\n  \"propsTypeRef\": \"FormProps\",\n  \"refs\": {\n    \"formRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLFormElement\",\n    },\n  },\n  \"state\": {\n    \"formErrorMessage\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"formState\": {\n      \"code\": \"'unsubmitted'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onSubmit\": {\n      \"code\": \"onSubmit(event: Event & {\n  currentTarget: HTMLFormElement;\n}) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === 'email';\n\n  if (props.sendSubmissionsTo === 'zapier') {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === 'email')) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body: any;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs: {\n      key: string;\n      value: File | boolean | number | string | FileList;\n    }[] = Array.from(event.currentTarget.querySelectorAll('input,select,textarea')).filter(el => !!(el as HTMLInputElement).name).map(el => {\n      let value: any;\n      const key = (el as HTMLImageElement).name;\n\n      if (el instanceof HTMLInputElement) {\n        if (el.type === 'radio') {\n          if (el.checked) {\n            value = el.name;\n            return {\n              key,\n              value\n            };\n          }\n        } else if (el.type === 'checkbox') {\n          value = el.checked;\n        } else if (el.type === 'number' || el.type === 'range') {\n          const num = el.valueAsNumber;\n\n          if (!isNaN(num)) {\n            value = num;\n          }\n        } else if (el.type === 'file') {\n          // TODO: one vs multiple files\n          value = el.files;\n        } else {\n          value = el.value;\n        }\n      } else {\n        value = (el as HTMLInputElement).value;\n      }\n\n      return {\n        key,\n        value\n      };\n    });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === 'email') {\n      contentType = 'multipart/form-data';\n    }\n\n    Array.from(formPairs).forEach(({\n      value\n    }) => {\n      if (value instanceof File || Array.isArray(value) && value[0] instanceof File || value instanceof FileList) {\n        contentType = 'multipart/form-data';\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== 'application/json') {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({\n        value,\n        key\n      }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== 'multipart/form-data') {\n      if (\n      /* Zapier doesn't allow content-type header to be sent from browsers */\n      !(sendWithJs && props.action?.includes('zapier.com'))) {\n        headers['content-type'] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent('presubmit', {\n      detail: {\n        body\n      }\n    });\n\n    if (formRef) {\n      formRef.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    state.formState = 'sending';\n    const formUrl = \\`\\${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(props.sendSubmissionsToEmail || '')}&name=\\${encodeURIComponent(props.name || '')}\\`;\n    fetch(props.sendSubmissionsTo === 'email' ? formUrl : props.action!\n    /* TODO: throw error if no action URL */\n    , {\n      body,\n      headers,\n      method: props.method || 'post'\n    }).then(async res => {\n      let body;\n      const contentType = res.headers.get('content-type');\n\n      if (contentType && contentType.indexOf('application/json') !== -1) {\n        body = await res.json();\n      } else {\n        body = await res.text();\n      }\n\n      if (!res.ok && props.errorMessagePath) {\n        /* TODO: allow supplying an error formatter function */\n        let message = get(body, props.errorMessagePath);\n\n        if (message) {\n          if (typeof message !== 'string') {\n            /* TODO: ideally convert json to yaml so it woul dbe like\n             error: - email has been taken */\n            message = JSON.stringify(message);\n          }\n\n          state.formErrorMessage = message;\n        }\n      }\n\n      state.responseData = body;\n      state.formState = res.ok ? 'success' : 'error';\n\n      if (res.ok) {\n        const submitSuccessEvent = new CustomEvent('submit:success', {\n          detail: {\n            res,\n            body\n          }\n        });\n\n        if (formRef) {\n          formRef.dispatchEvent(submitSuccessEvent);\n\n          if (submitSuccessEvent.defaultPrevented) {\n            return;\n          }\n          /* TODO: option to turn this on/off? */\n\n\n          if (props.resetFormOnSubmit !== false) {\n            formRef.reset();\n          }\n        }\n        /* TODO: client side route event first that can be preventDefaulted */\n\n\n        if (props.successUrl) {\n          if (formRef) {\n            const event = new CustomEvent('route', {\n              detail: {\n                url: props.successUrl\n              }\n            });\n            formRef.dispatchEvent(event);\n\n            if (!event.defaultPrevented) {\n              location.href = props.successUrl;\n            }\n          } else {\n            location.href = props.successUrl;\n          }\n        }\n      }\n    }, err => {\n      const submitErrorEvent = new CustomEvent('submit:error', {\n        detail: {\n          error: err\n        }\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(submitErrorEvent);\n\n        if (submitErrorEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      state.responseData = err;\n      state.formState = 'error';\n    });\n  }\n}\",\n      \"type\": \"method\",\n    },\n    \"responseData\": {\n      \"code\": \"null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"submissionState\": {\n      \"code\": \"get submissionState() {\n  return Builder.isEditing && props.previewState || state.formState;\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\",\n    \"export type FormState = 'unsubmitted' | 'sending' | 'success' | 'error'\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Image 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"pictureRef\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"!state.useLazyLoading() || state.load\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"alt\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.altText\",\n                      \"type\": \"single\",\n                    },\n                    \"aria-role\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.altText ? 'presentation' : undefined\",\n                      \"type\": \"single\",\n                    },\n                    \"class\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"'builder-image' + (props._class ? ' ' + props._class : '')\",\n                      \"type\": \"single\",\n                    },\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  opacity: '1',\n  transition: 'opacity 0.2s ease-in-out',\n  objectFit: 'cover',\n  objectPosition: 'center'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"onLoad\": {\n                      \"bindingType\": \"function\",\n                      \"code\": \"state.setLoaded()\",\n                      \"type\": \"single\",\n                    },\n                    \"sizes\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.sizes\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.image\",\n                      \"type\": \"single\",\n                    },\n                    \"srcset\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.srcset\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"srcset\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.srcset\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"source\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"picture\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"if (state.useLazyLoading()) {\n  // throttled scroll capture listener\n  const listener = () => {\n    if (pictureRef) {\n      const rect = pictureRef.getBoundingClientRect();\n      const buffer = window.innerHeight / 2;\n\n      if (rect.top < window.innerHeight + buffer) {\n        state.load = true;\n        state.scrollListener = null;\n        window.removeEventListener('scroll', listener);\n      }\n    }\n  };\n\n  state.scrollListener = listener;\n  window.addEventListener('scroll', listener, {\n    capture: true,\n    passive: true\n  });\n  listener();\n}\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUnMount\": {\n      \"code\": \"if (state.scrollListener) {\n  window.removeEventListener('scroll', state.scrollListener);\n}\",\n    },\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Image\",\n  \"propsTypeRef\": \"ImageProps\",\n  \"refs\": {\n    \"pictureRef\": {\n      \"argument\": \"\",\n      \"typeParameter\": \"HTMLElement\",\n    },\n  },\n  \"state\": {\n    \"imageLoaded\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"isBrowser\": {\n      \"code\": \"function isBrowser() {\n  return typeof window !== 'undefined' && window.navigator.product != 'ReactNative';\n}\",\n      \"type\": \"function\",\n    },\n    \"load\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"scrollListener\": {\n      \"code\": \"null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"setLoaded\": {\n      \"code\": \"setLoaded() {\n  state.imageLoaded = true;\n}\",\n      \"type\": \"method\",\n    },\n    \"useLazyLoading\": {\n      \"code\": \"useLazyLoading() {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && state.isBrowser();\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Image State 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.images\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"itemIndex\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"item\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {\n                    \"class\": \"custom-class\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n            \"indexName\": \"itemIndex\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ImgStateComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"canShow\": {\n      \"code\": \"true\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"images\": {\n      \"code\": \"['http://example.com/qwik.png']\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Img 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"alt\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.altText\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.imgSrc || 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"src\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.imgSrc\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  objectFit: props.backgroundSize || 'cover',\n  objectPosition: props.backgroundPosition || 'center'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"img\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ImgComponent\",\n  \"propsTypeRef\": \"ImgProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: 'cover' | 'contain';\n  backgroundPosition?: 'center' | 'top' | 'left' | 'right' | 'bottom' | 'top left' | 'top right' | 'bottom left' | 'bottom right';\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Input 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"onChange\": {\n          \"arguments\": [\n            \"event\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"props.onChange?.(event.target.value)\",\n          \"type\": \"single\",\n        },\n        \"placeholder\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.placeholder\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"required\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.required\",\n          \"type\": \"single\",\n        },\n        \"type\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.type\",\n          \"type\": \"single\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"FormInputComponent\",\n  \"propsTypeRef\": \"FormInputProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > InputParent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"onChange\": {\n          \"arguments\": [\n            \"value\",\n          ],\n          \"bindingType\": \"function\",\n          \"code\": \"state.handleChange(value)\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"FormInputComponent\",\n      \"properties\": {\n        \"name\": \"kingzez\",\n        \"type\": \"text\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"FormInputComponent\": \"default\",\n      },\n      \"path\": \"./input.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Stepper\",\n  \"refs\": {},\n  \"state\": {\n    \"handleChange\": {\n      \"code\": \"handleChange(value: string) {\n  console.log(value);\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > NestedStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"id\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state._id\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Test\n      \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"id\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state._messageId\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Message\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedStore\",\n  \"refs\": {},\n  \"state\": {\n    \"_id\": {\n      \"code\": \"\\\\\"abc\\\\\"\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"MyStore[\\\\\"_id\\\\\"]\",\n    },\n    \"_messageId\": {\n      \"code\": \"state._id + \\\\\"-message\\\\\"\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"MyStore[\\\\\"_messageId\\\\\"]\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type MyStore = {\n  _id?: string;\n  _messageId?: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > RawText 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.attributes?.class || props.attributes?.className\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.text || ''\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"span\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RawText\",\n  \"propsTypeRef\": \"RawTextProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Section 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.maxWidth && typeof props.maxWidth === 'number' ? {\n  maxWidth: props.maxWidth\n} : undefined\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SectionComponent\",\n  \"propsTypeRef\": \"SectionProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Section 2`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.max\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.items\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"style\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  maxWidth: item + state.max\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.children\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"section\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SectionStateComponent\",\n  \"propsTypeRef\": \"SectionProps\",\n  \"refs\": {},\n  \"state\": {\n    \"items\": {\n      \"code\": \"[42]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"max\": {\n      \"code\": \"42\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Select 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.options\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"data-index\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"index\",\n                  \"type\": \"single\",\n                },\n                \"value\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"option.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"option.name || option.value\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"option\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"select\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SelectComponent\",\n  \"propsTypeRef\": \"FormSelectProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > SlotDefault 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"Default content\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"class\": \"default-slot\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > SlotHtml 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"testing\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"<div>Hello</div>\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"Slot\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {\n                \"testing\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/mitosis/node\",\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"meta\": {},\n                        \"name\": \"div\",\n                        \"properties\": {\n                          \"_text\": \"Hello\",\n                        },\n                        \"scope\": {},\n                      },\n                    ],\n                    \"meta\": {},\n                    \"name\": \"div\",\n                    \"properties\": {},\n                    \"scope\": {},\n                  },\n                ],\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"ContentSlotCode\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"ContentSlotCode\": \"default\",\n      },\n      \"path\": \"./content-slot-jsx.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > SlotJsx 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"slotTesting\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"<div>Hello</div>\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"ContentSlotCode\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {\n            \"slotTesting\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"div\",\n                    \"properties\": {\n                      \"_text\": \"Hello\",\n                    },\n                    \"scope\": {},\n                  },\n                ],\n                \"meta\": {},\n                \"name\": \"div\",\n                \"properties\": {},\n                \"scope\": {},\n              },\n            ],\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"ContentSlotCode\": \"default\",\n      },\n      \"path\": \"./content-slot-jsx.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > SlotNamed 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"myAwesomeSlot\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"top\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Default left\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"left\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Default Child\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SlotCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Stamped.io 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"data-user\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.name\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.showReviewPrompt = true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Write a review\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.showReviewPrompt || 'asdf'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"input\",\n              \"properties\": {\n                \"placeholder\": \"Email\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"input\",\n              \"properties\": {\n                \"placeholder\": \"Title\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"textarea\",\n              \"properties\": {\n                \"placeholder\": \"How was your experience?\",\n              },\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  display: 'block'\n}\",\n                  \"type\": \"single\",\n                },\n                \"onClick\": {\n                  \"arguments\": [\n                    \"ev\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"{\n  ev.preventDefault();\n  state.showReviewPrompt = false;\n}\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"\n          Submit\n        \",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.reviews\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"css\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"{\n  margin: '10px',\n  padding: '10px',\n  background: 'white',\n  display: 'flex',\n  borderRadius: '5px',\n  boxShadow: '0 2px 5px rgba(0, 0, 0, 0.1)',\n  WebkitFontSmoothing: 'antialiased'\n}\",\n                  \"type\": \"single\",\n                },\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"review.id\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"css\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"{\n  height: '30px',\n  width: '30px',\n  marginRight: '10px'\n}\",\n                      \"type\": \"single\",\n                    },\n                    \"src\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"review.avatar\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"img\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"class\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {\n                            \"_text\": \"N: \",\n                          },\n                          \"scope\": {},\n                        },\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"index\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"review.author\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {\n                            \"_text\": {\n                              \"bindingType\": \"expression\",\n                              \"code\": \"review.reviewMessage\",\n                              \"type\": \"single\",\n                            },\n                          },\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"div\",\n                          \"properties\": {},\n                          \"scope\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"$name\": \"Review\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"review\",\n            \"indexName\": \"index\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"fetch(\\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${props.apiKey || 'pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM'}&productId=\\${props.productId || '2410511106127'}\\`).then(res => res.json()).then(data => {\n  state.reviews = data.data;\n})\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"kebabCase\": \"kebabCase\",\n        \"snakeCase\": \"snakeCase\",\n      },\n      \"path\": \"lodash\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SmileReviews\",\n  \"propsTypeRef\": \"SmileReviewsProps\",\n  \"refs\": {},\n  \"state\": {\n    \"kebabCaseValue\": {\n      \"code\": \"kebabCaseValue() {\n  return kebabCase('testThat');\n}\",\n      \"type\": \"method\",\n    },\n    \"name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"reviews\": {\n      \"code\": \"[]\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"showReviewPrompt\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"snakeCaseValue\": {\n      \"code\": \"snakeCaseValue() {\n  return snakeCase('testThis');\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > StoreComment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"bar() {}\",\n      \"type\": \"method\",\n    },\n    \"foo\": {\n      \"code\": \"true\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > StoreShadowVars 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo(state.errors)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"errors\": {\n      \"code\": \"{}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"foo\": {\n      \"code\": \"foo(errors) {\n  return errors;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > StoreWithState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.bar()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"bar() {\n  return state.foo;\n}\",\n      \"type\": \"method\",\n    },\n    \"foo\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > Submit 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.text\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"submit\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SubmitButton\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Text 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"contentEditable\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"allowEditingText || undefined\",\n          \"type\": \"single\",\n        },\n        \"data-name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  test: state.name || 'any name'\n}\",\n          \"type\": \"single\",\n        },\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.text || props.content || state.name || '<p class=\\\\\"text-lg\\\\\">my name</p>'\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Builder\": \"Builder\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Text\",\n  \"propsTypeRef\": \"TextProps\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Decadef20'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Textarea 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"defaultValue\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.defaultValue\",\n          \"type\": \"single\",\n        },\n        \"name\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.name\",\n          \"type\": \"single\",\n        },\n        \"placeholder\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.placeholder\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"textarea\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Textarea\",\n  \"propsTypeRef\": \"TextareaProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > UseValueAndFnFromStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"if (state._do) {\n  state._do(state._id);\n}\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"UseValueAndFnFromStore\",\n  \"propsTypeRef\": \"MyProps\",\n  \"refs\": {},\n  \"state\": {\n    \"_active\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"MyStore[\\\\\"_active\\\\\"]\",\n    },\n    \"_do\": {\n      \"code\": \"_do(id?: string) {\n  state._active = !!id;\n\n  if (props.onChange) {\n    props.onChange(state._active);\n  }\n}\",\n      \"type\": \"method\",\n      \"typeParameter\": \"MyStore[\\\\\"_do\\\\\"]\",\n    },\n    \"_id\": {\n      \"code\": \"'abc'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"MyStore[\\\\\"_id\\\\\"]\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type MyProps = {\n  onChange?: (active: boolean) => void;\n}\",\n    \"type MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > Video 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"autoplay\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.autoPlay\",\n          \"type\": \"single\",\n        },\n        \"controls\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.controls\",\n          \"type\": \"single\",\n        },\n        \"key\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.video || 'no-src'\",\n          \"type\": \"single\",\n        },\n        \"loop\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.loop\",\n          \"type\": \"single\",\n        },\n        \"muted\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.muted\",\n          \"type\": \"single\",\n        },\n        \"poster\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.posterImage\",\n          \"type\": \"single\",\n        },\n        \"props.attributes\": {\n          \"code\": \"props.attributes\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  width: '100%',\n  height: '100%',\n  ...props.attributes?.style,\n  objectFit: props.fit,\n  objectPosition: props.position,\n  // Hack to get object fit to work as expected and\n  // not have the video overflow\n  borderRadius: 1\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"video\",\n      \"properties\": {\n        \"preload\": \"none\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Video\",\n  \"propsTypeRef\": \"VideoProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: 'contain' | 'cover' | 'fill';\n  position?: 'center' | 'top' | 'left' | 'right' | 'bottom' | 'top left' | 'top right' | 'bottom left' | 'bottom right';\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > arrowFunctionInUseStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"setName\": {\n      \"code\": \"setName(value) {\n  state.name = value;\n}\",\n      \"type\": \"method\",\n    },\n    \"updateNameWithArrowFn\": {\n      \"code\": \"updateNameWithArrowFn(value) {\n  state.name = value;\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicForFragment 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"['a', 'b', 'c']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"\\`key-\\${option}\\`\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"['a', 'b', 'c']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"\\`\\${state.id}-\\${option}\\`\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"Fragment\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"option\",\n          },\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"['d', 'e', 'f']\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"\\`\\${state.id}-\\${option}\\`\",\n                      \"type\": \"single\",\n                    },\n                    \"value\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"option\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"option\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"option\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"option\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"select\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"BasicForFragment\",\n  \"refs\": {},\n  \"state\": {\n    \"id\": {\n      \"code\": \"'xyz'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicForNoTagReference 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.name\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"state.tag\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.actions\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"action.icon\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"_text\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"action.text\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"span\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"state.TagName\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"action\",\n          },\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"state.TagNameGetter\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForNoTagRefComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"TagName\": {\n      \"code\": \"'div'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"TagNameGetter\": {\n      \"code\": \"get TagNameGetter() {\n  return 'span';\n}\",\n      \"type\": \"getter\",\n    },\n    \"name\": {\n      \"code\": \"'VincentW'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"tag\": {\n      \"code\": \"'span'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicForwardRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.inputRef\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicForwardRefComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicForwardRefMetadata 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.inputRef\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"forwardRef\": \"inputRef\",\n    },\n  },\n  \"name\": \"MyBasicForwardRefComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicOnUpdateReturn 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"const controller = new AbortController();\nconst signal = controller.signal;\nfetch('https://patrickjs.com/api/resource.json', {\n  signal\n}).then(response => response.json()).then(data => {\n  state.name = data.name;\n});\nreturn () => {\n  if (!signal.aborted) {\n    controller.abort();\n  }\n}\",\n        \"deps\": \"[state.name]\",\n        \"depsArray\": [\n          \"state.name\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicOnUpdateReturnComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'PatrickJS'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicRefAttributePassing 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"buttonRef\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Attribute Passing\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"attributePassing\": {\n        \"enabled\": true,\n      },\n    },\n  },\n  \"name\": \"BasicRefAttributePassingComponent\",\n  \"refs\": {\n    \"buttonRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLButtonElement | null\",\n    },\n  },\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > basicRefAttributePassingCustomRef 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"ref\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"buttonRef\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Attribute Passing\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"attributePassing\": {\n        \"customRef\": \"buttonRef\",\n        \"enabled\": true,\n      },\n    },\n  },\n  \"name\": \"BasicRefAttributePassingCustomRefComponent\",\n  \"refs\": {\n    \"buttonRef\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLButtonElement | null\",\n    },\n  },\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > class + ClassName + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"MyComp\",\n          \"properties\": {\n            \"class\": \"test\",\n            \"className\": \"test2\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"class\": \"test2 test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyComp\": \"default\",\n      },\n      \"path\": \"./my-component.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > class + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > className + css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > className 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Without Binding\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"class\": \"no binding\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"class\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.bindings\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"With binding\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"JSX\": \"JSX\",\n      },\n      \"path\": \"../../../../jsx-runtime\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ClassNameCode\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"bindings\": {\n      \"code\": \"'a binding'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > classState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.classState\",\n          \"type\": \"single\",\n        },\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.styleState\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"classState\": {\n      \"code\": \"'testClassName'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"styleState\": {\n      \"code\": \"{\n  color: 'red'\n}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > classnameProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.className\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.type\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"stencil\": {\n        \"propOptions\": {\n          \"className\": {\n            \"attribute\": \"classname\",\n            \"mutable\": false,\n            \"reflect\": false,\n          },\n        },\n      },\n    },\n  },\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  children: any;\n  className: string;\n  type: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > complexMeta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"asdf\": {\n        \"booleanValue\": true,\n        \"innerObject\": {\n          \"booleanValue\": false,\n          \"numberValue\": 2,\n          \"stringValue\": \"inner\",\n        },\n        \"numberValue\": 1,\n        \"spreadStringValue\": \"f\",\n        \"stringValue\": \"d\",\n      },\n      \"x\": \"y\",\n    },\n  },\n  \"name\": \"ComplexMetaRaw\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > componentWithContext 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"foo.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Fragment\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"foo\": {\n        \"name\": \"Context1\",\n        \"path\": \"@dummy/1:default\",\n      },\n    },\n    \"set\": {\n      \"@dummy/1:default\": {\n        \"name\": \"Context1\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"content() {\n  return props.content;\n}\",\n            \"type\": \"method\",\n          },\n          \"foo\": {\n            \"code\": \"'bar'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n      \"@dummy/2:default\": {\n        \"name\": \"Context2\",\n        \"value\": {\n          \"bar\": {\n            \"code\": \"'baz'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context1\": \"default\",\n      },\n      \"path\": \"@dummy/1\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context2\": \"default\",\n      },\n      \"path\": \"@dummy/2\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithContext\",\n  \"propsTypeRef\": \"ComponentWithContextProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ComponentWithContextProps {\n  content: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > componentWithContextMultiRoot 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"foo.value\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Fragment\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"other\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"foo\": {\n        \"name\": \"Context1\",\n        \"path\": \"@dummy/1:default\",\n      },\n    },\n    \"set\": {\n      \"@dummy/1:default\": {\n        \"name\": \"Context1\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"content() {\n  return props.content;\n}\",\n            \"type\": \"method\",\n          },\n          \"foo\": {\n            \"code\": \"'bar'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n      \"@dummy/2:default\": {\n        \"name\": \"Context2\",\n        \"value\": {\n          \"bar\": {\n            \"code\": \"'baz'\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context1\": \"default\",\n      },\n      \"path\": \"@dummy/1\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Context2\": \"default\",\n      },\n      \"path\": \"@dummy/2\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithContext\",\n  \"propsTypeRef\": \"ComponentWithContextProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ComponentWithContextProps {\n  content: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > contentState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"setting context\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {\n      \"@dummy/context.lite:default\": {\n        \"name\": \"BuilderContext\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"props.content\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n          \"registeredComponents\": {\n            \"code\": \"props.customComponents\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContext\": \"default\",\n      },\n      \"path\": \"@dummy/context.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > defaultProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onClick\": {\n                  \"bindingType\": \"function\",\n                  \"code\": \"props.onClick()\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.buttonText\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"link\": {\n      \"code\": \"'https://builder.io/'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onClick\": {\n      \"code\": \"() => {\n  console.log('hi');\n}\",\n      \"type\": \"method\",\n    },\n    \"openLinkInNewTab\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"text\": {\n      \"code\": \"'default text'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > defaultPropsOutsideComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"onClick\": {\n                  \"arguments\": [\n                    \"event\",\n                  ],\n                  \"bindingType\": \"function\",\n                  \"code\": \"props.onClick(event)\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {\n    \"link\": {\n      \"code\": \"'https://builder.io/'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"onClick\": {\n      \"code\": \"() => {}\",\n      \"type\": \"method\",\n    },\n    \"openLinkInNewTab\": {\n      \"code\": \"false\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"text\": {\n      \"code\": \"'default text'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > defaultValsWithTypes 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \" Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name || DEFAULT_VALUES.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"DEFAULT_VALUES\": {\n      \"code\": \"const DEFAULT_VALUES: Props = {\n  name: 'Sami'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": true,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ComponentWithTypes\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  name: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > eventInputAndChange 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"onInput\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"function\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"EventInputAndChange\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Steve'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > eventProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"onClick\": {\n          \"bindingType\": \"function\",\n          \"code\": \"state.handleClick()\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"EventProps\": \"EventProps\",\n        \"EventState\": \"EventState\",\n      },\n      \"path\": \"./event-props.type\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"EventPropsComponent\",\n  \"propsTypeRef\": \"EventProps\",\n  \"refs\": {},\n  \"state\": {\n    \"handleClick\": {\n      \"code\": \"handleClick() {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass('test');\n  }\n}\",\n      \"type\": \"method\",\n      \"typeParameter\": \"EventState[\\\\\"handleClick\\\\\"]\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > expressionState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.refToUse\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"refToUse\": {\n      \"code\": \"!(props.componentRef instanceof Function) ? props.componentRef : null\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > figmaMeta 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"data-disabled\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.interactiveState\",\n          \"type\": \"single\",\n        },\n        \"data-icon\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.icon\",\n          \"type\": \"single\",\n        },\n        \"data-size\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.size\",\n          \"type\": \"single\",\n        },\n        \"data-width\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.width\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.label\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"figma\": {\n        \"name\": \"def-button-beta-outlined\",\n        \"props\": {\n          \"icon\": {\n            \"key\": \"👁️ Icon\",\n            \"type\": \"boolean\",\n            \"value\": {\n              \"false\": false,\n              \"true\": \"placeholder\",\n            },\n          },\n          \"iconMedium\": {\n            \"key\": \"📍 Icon Medium\",\n            \"type\": \"instance\",\n          },\n          \"iconSmall\": {\n            \"key\": \"📍 Icon Small\",\n            \"type\": \"instance\",\n          },\n          \"interactiveState\": {\n            \"key\": \"Interactive State\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Enabled\": false,\n              \"Disabled\": \"true\",\n              \"Focused\": false,\n              \"Hovered\": false,\n              \"Pressed\": false,\n            },\n          },\n          \"label\": {\n            \"key\": \"✏️ Label\",\n            \"type\": \"string\",\n          },\n          \"size\": {\n            \"key\": \"Size\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Medium\": false,\n              \"Small\": \"small\",\n            },\n          },\n          \"width\": {\n            \"key\": \"Width\",\n            \"type\": \"enum\",\n            \"value\": {\n              \"(Def) Auto Width\": false,\n              \"Full Width\": \"full\",\n            },\n          },\n        },\n        \"url\": \"https://www.figma.com/xxx\",\n      },\n    },\n  },\n  \"name\": \"FigmaButton\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > functionProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"f\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"() => x\",\n          \"type\": \"single\",\n        },\n        \"f1\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"x => x\",\n          \"type\": \"single\",\n        },\n        \"f2\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"x => {}\",\n          \"type\": \"single\",\n        },\n        \"f3\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function () {\n  return x;\n}\",\n          \"type\": \"single\",\n        },\n        \"f4\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function (x) {\n  return x;\n}\",\n          \"type\": \"single\",\n        },\n        \"f5\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function (x) {\n  return;\n}\",\n          \"type\": \"single\",\n        },\n        \"f6\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"function () {\n  return;\n}\",\n          \"type\": \"single\",\n        },\n        \"f7\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"(a, b, c) => a + b + c\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"p\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"MyBasicComponentProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface MyBasicComponentProps {\n  id: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > getterState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.foo2\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.bar\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.baz(1)\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"get bar() {\n  return 'bar';\n}\",\n      \"type\": \"getter\",\n    },\n    \"baz\": {\n      \"code\": \"baz(i: number) {\n  return i + state.foo2.length;\n}\",\n      \"type\": \"method\",\n    },\n    \"foo2\": {\n      \"code\": \"get foo2() {\n  return props.foo + 'foo';\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  foo: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > import types 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"state.getRenderContentProps(props.renderContentProps.block,0)\": {\n          \"code\": \"state.getRenderContentProps(props.renderContentProps.block, 0)\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"RenderBlock\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContent\": \"BuilderContent\",\n        \"GetContentOptions\": \"GetContentOptions\",\n      },\n      \"path\": \"@builder.io/sdk\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderBlock\": \"default\",\n        \"RenderBlockProps\": \"RenderBlockProps\",\n      },\n      \"path\": \"./builder-render-block.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"propsTypeRef\": \"RenderContentProps\",\n  \"refs\": {},\n  \"state\": {\n    \"getRenderContentProps\": {\n      \"code\": \"getRenderContentProps(block, index) {\n  return {\n    block: block,\n    index: index\n  };\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > layerName 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🌟layer-name\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyLayerNameComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > multipleOnUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs on every update/rerender')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n      {\n        \"code\": \"console.log('Runs on every update/rerender as well')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MultipleOnUpdate\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > multipleOnUpdateWithDeps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs when a or b changes', state.a, state.b);\n\nif (state.a === 'a') {\n  state.a = 'b';\n}\",\n        \"deps\": \"[state.a, state.b]\",\n        \"depsArray\": [\n          \"state.a\",\n          \"state.b\",\n        ],\n      },\n      {\n        \"code\": \"console.log('Runs when c or d changes', state.c, state.d);\n\nif (state.a === 'a') {\n  state.a = 'b';\n}\",\n        \"deps\": \"[state.c, state.d]\",\n        \"depsArray\": [\n          \"state.c\",\n          \"state.d\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MultipleOnUpdateWithDeps\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"'a'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"'b'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"c\": {\n      \"code\": \"'c'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"d\": {\n      \"code\": \"'d'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > multipleSpreads 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"attrs\": {\n          \"code\": \"state.attrs\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n        \"props\": {\n          \"code\": \"props\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {\n    \"attrs\": {\n      \"code\": \"{\n  hello: 'world'\n}\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > nestedShow 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.conditionB\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"if condition A and condition B\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"else-condition-B\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedShow\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > nestedStyles 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  '--bar': 'red',\n  color: 'var(--bar)',\n  '@media (max-width: env(--mobile))': {\n    display: 'block'\n  },\n  '&:hover': {\n    display: 'flex'\n  },\n  ':active': {\n    display: 'inline'\n  },\n  '.nested-selector': {\n    display: 'grid'\n  },\n  '.nested-selector:hover': {\n    display: 'block'\n  },\n  '&.nested-selector:active': {\n    display: 'inline-block'\n  }\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello world\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedStyles\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > normalizeLayerNames 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Emoji\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🌟layer-name\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Dashes\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"---\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"CamelCase\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"CamelCase\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Special chars\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"123my@Class-Name!\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Special chars with dashes\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"--my--@custom--name--\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  margin: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Single Number\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"0\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Multiple Numbers\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"123\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  border: '1px solid'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Chars with numbers at end\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"name123\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  color: 'red'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Chars with numbers at start\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"456name\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  background: 'blue'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Numnbers separated by dash\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"name-789\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Emoji\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"$name\": \"🚀\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  background: 'blue'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Number\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"data-name\": \"1\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"section\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyNormalizedLayerNamesComponent\",\n  \"propsTypeRef\": \"MyNormalizedLayerNamesComponentProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > onEvent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"ref\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"elem\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Test\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-embed\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [\n      {\n        \"code\": \"console.log('test');\nstate.foo(event)\",\n        \"elementArgName\": \"element\",\n        \"eventArgName\": \"event\",\n        \"eventName\": \"initEditingBldr\",\n        \"isRoot\": true,\n        \"refName\": \"elem\",\n      },\n    ],\n    \"onMount\": [\n      {\n        \"code\": \"elem.dispatchEvent(new CustomEvent('initEditingBldr'))\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Embed\",\n  \"refs\": {\n    \"elem\": {\n      \"argument\": \"null\",\n      \"typeParameter\": \"HTMLDivElement\",\n    },\n  },\n  \"state\": {\n    \"foo\": {\n      \"code\": \"foo(event) {\n  console.log('test2');\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onInit & onMount 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"console.log('onInit')\",\n    },\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount')\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInit\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onInit 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Default name defined by parent \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"defaultValues\": {\n      \"code\": \"export const defaultValues = {\n  name: 'PatrickJS'\n};\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"state.name = defaultValues.name || props.name;\nconsole.log('set defaults with props')\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInit\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"''\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  name: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > onInitPlain 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"console.log('onInit')\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnInitPlain\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onMount 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('Runs on mount')\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUnMount\": {\n      \"code\": \"console.log('Runs on unMount')\",\n    },\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Comp\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onMountMultiple 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('Runs on mount')\",\n        \"onSSR\": false,\n      },\n      {\n        \"code\": \"console.log('Another one runs on Mount')\",\n        \"onSSR\": false,\n      },\n      {\n        \"code\": \"console.log('SSR runs on Mount')\",\n        \"onSSR\": true,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Comp\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs on every update/rerender')\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdate\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > onUpdateWithDeps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('Runs when a, b or size changes', state.a, state.b, props.size)\",\n        \"deps\": \"[state.a, state.b, props.size]\",\n        \"depsArray\": [\n          \"state.a\",\n          \"state.b\",\n          \"props.size\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdateWithDeps\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"'a'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"'b'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  size: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > preserveExportOrLocalStatement 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {\n    \"a\": {\n      \"code\": \"export const a = 3;\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n    \"b\": {\n      \"code\": \"const b = 3;\",\n      \"isFunction\": false,\n      \"usedInLocal\": false,\n    },\n    \"bar\": {\n      \"code\": \"export const bar = () => {};\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n    \"foo\": {\n      \"code\": \"const foo = () => {};\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n    \"run\": {\n      \"code\": \"export function run<T>(value: T) {}\",\n      \"isFunction\": true,\n      \"usedInLocal\": false,\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"MyBasicComponentProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Types = {\n  s: any[];\n}\",\n    \"interface IPost {\n  len: number;\n}\",\n    \"export interface MyBasicComponentProps {\n  id: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > preserveTyping 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"MyBasicComponentProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export type A = 'test'\",\n    \"export interface C {\n  n: 'test';\n}\",\n    \"type B = 'test2'\",\n    \"interface D {\n  n: 'test';\n}\",\n    \"export interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > propsDestructure 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.type\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"'Decadef20'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  children: any;\n  type: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > propsInterface 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"Person | never\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Person {\n  name: string;\n  age?: number;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > propsType 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello! I can run in React, Vue, Solid, or Liquid! \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"Person\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Person = {\n  name: string;\n  age?: number;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > referencingFunInsideHook 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"state.foo({\n  someOption: state.bar\n})\",\n        \"deps\": \"\",\n        \"depsArray\": [],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"OnUpdate\",\n  \"refs\": {},\n  \"state\": {\n    \"bar\": {\n      \"code\": \"function bar() {}\",\n      \"type\": \"function\",\n    },\n    \"foo\": {\n      \"code\": \"function foo(params) {}\",\n      \"type\": \"function\",\n    },\n    \"zoo\": {\n      \"code\": \"function zoo() {\n  const params = {\n    cb: state.bar\n  };\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > renderBlock 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.shouldWrap\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"isEmptyHtmlElement(state.tag)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"state.actions\": {\n                  \"code\": \"state.actions\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"state.attributes\": {\n                  \"code\": \"state.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"state.tag\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!isEmptyHtmlElement(state.tag) && state.repeatItemData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"each\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.repeatItemData\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"block\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"data.block\",\n                      \"type\": \"single\",\n                    },\n                    \"key\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"index\",\n                      \"type\": \"single\",\n                    },\n                    \"repeatContext\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"data.context\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"RenderRepeatedBlock\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"For\",\n              \"properties\": {},\n              \"scope\": {\n                \"forName\": \"data\",\n                \"indexName\": \"index\",\n              },\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!isEmptyHtmlElement(state.tag) && !state.repeatItemData\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"state.actions\": {\n                  \"code\": \"state.actions\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"state.attributes\": {\n                  \"code\": \"state.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"state.renderComponentProps\": {\n                      \"code\": \"state.renderComponentProps\",\n                      \"spreadType\": \"normal\",\n                      \"type\": \"spread\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"state.renderComponentTag\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"each\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.childrenWithoutParentComponent\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"block\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"child\",\n                          \"type\": \"single\",\n                        },\n                        \"context\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"state.childrenContext\",\n                          \"type\": \"single\",\n                        },\n                        \"key\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"'render-block-' + child.id\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"RenderBlock\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"For\",\n                  \"properties\": {},\n                  \"scope\": {\n                    \"forName\": \"child\",\n                  },\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"each\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"state.childrenWithoutParentComponent\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {\n                        \"block\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"child\",\n                          \"type\": \"single\",\n                        },\n                        \"context\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"state.childrenContext\",\n                          \"type\": \"single\",\n                        },\n                        \"key\": {\n                          \"bindingType\": \"expression\",\n                          \"code\": \"'block-style-' + child.id\",\n                          \"type\": \"single\",\n                        },\n                      },\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"BlockStyles\",\n                      \"properties\": {},\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"For\",\n                  \"properties\": {},\n                  \"scope\": {\n                    \"forName\": \"child\",\n                  },\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"state.tag\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"state.renderComponentProps\": {\n              \"code\": \"state.renderComponentProps\",\n              \"spreadType\": \"normal\",\n              \"type\": \"spread\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"state.renderComponentTag\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"TARGET\": \"TARGET\",\n      },\n      \"path\": \"../../constants/target.js\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"BuilderContextInterface\": \"BuilderContextInterface\",\n        \"RegisteredComponent\": \"RegisteredComponent\",\n      },\n      \"path\": \"../../context/types.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"evaluate\": \"evaluate\",\n      },\n      \"path\": \"../../functions/evaluate.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"extractTextStyles\": \"extractTextStyles\",\n      },\n      \"path\": \"../../functions/extract-text-styles.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockActions\": \"getBlockActions\",\n      },\n      \"path\": \"../../functions/get-block-actions.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockComponentOptions\": \"getBlockComponentOptions\",\n      },\n      \"path\": \"../../functions/get-block-component-options.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockProperties\": \"getBlockProperties\",\n      },\n      \"path\": \"../../functions/get-block-properties.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getBlockTag\": \"getBlockTag\",\n      },\n      \"path\": \"../../functions/get-block-tag.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getProcessedBlock\": \"getProcessedBlock\",\n      },\n      \"path\": \"../../functions/get-processed-block.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"getReactNativeBlockStyles\": \"getReactNativeBlockStyles\",\n      },\n      \"path\": \"../../functions/get-react-native-block-styles.js\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"BuilderBlock\": \"BuilderBlock\",\n      },\n      \"path\": \"../../types/builder-block.js\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"Nullable\": \"Nullable\",\n      },\n      \"path\": \"../../types/typescript.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BlockStyles\": \"default\",\n      },\n      \"path\": \"./block-styles.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"isEmptyHtmlElement\": \"isEmptyHtmlElement\",\n      },\n      \"path\": \"./render-block.helpers.js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderComponentWithContext\": \"default\",\n      },\n      \"path\": \"./render-component-with-context.lite\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"RenderComponentProps\": \"RenderComponentProps\",\n      },\n      \"path\": \"./render-component.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderComponent\": \"default\",\n      },\n      \"path\": \"./render-component.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderRepeatedBlock\": \"default\",\n      },\n      \"path\": \"./render-repeated-block.lite\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"RepeatData\": \"RepeatData\",\n      },\n      \"path\": \"./types.js\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderBlock\",\n  \"propsTypeRef\": \"RenderBlockProps\",\n  \"refs\": {},\n  \"state\": {\n    \"actions\": {\n      \"code\": \"get actions() {\n  return getBlockActions({\n    block: state.useBlock,\n    state: props.context.state,\n    context: props.context.context\n  });\n}\",\n      \"type\": \"getter\",\n    },\n    \"attributes\": {\n      \"code\": \"get attributes() {\n  const blockProperties = getBlockProperties(state.useBlock);\n  return { ...blockProperties,\n    ...(TARGET === 'reactNative' ? {\n      style: getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: blockProperties.style\n      })\n    } : {})\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"childrenContext\": {\n      \"code\": \"get childrenContext() {\n  return {\n    apiKey: props.context.apiKey,\n    state: props.context.state,\n    content: props.context.content,\n    context: props.context.context,\n    registeredComponents: props.context.registeredComponents,\n    inheritedStyles: state.inheritedTextStyles\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"childrenWithoutParentComponent\": {\n      \"code\": \"get childrenWithoutParentComponent() {\n  /**\n   * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n   * we render them outside of \\`componentRef\\`.\n   * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n   * blocks, and the children will be repeated within those blocks.\n   */\n  const shouldRenderChildrenOutsideRef = !state.component?.component && !state.repeatItemData;\n  return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n}\",\n      \"type\": \"getter\",\n    },\n    \"component\": {\n      \"code\": \"get component() {\n  const componentName = getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: false\n  }).component?.name;\n\n  if (!componentName) {\n    return null;\n  }\n\n  const ref = props.context.registeredComponents[componentName];\n\n  if (!ref) {\n    // TODO: Public doc page with more info about this message\n    console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n    return undefined;\n  } else {\n    return ref;\n  }\n}\",\n      \"type\": \"getter\",\n    },\n    \"inheritedTextStyles\": {\n      \"code\": \"get inheritedTextStyles() {\n  if (TARGET !== 'reactNative') {\n    return {};\n  }\n\n  const styles = getReactNativeBlockStyles({\n    block: state.useBlock,\n    context: props.context,\n    blockStyles: state.attributes.style\n  });\n  return extractTextStyles(styles);\n}\",\n      \"type\": \"getter\",\n    },\n    \"renderComponentProps\": {\n      \"code\": \"get renderComponentProps() {\n  return {\n    blockChildren: state.useChildren,\n    componentRef: state.component?.component,\n    componentOptions: { ...getBlockComponentOptions(state.useBlock),\n\n      /**\n       * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n       * they are provided to the component itself directly.\n       */\n      ...(state.shouldWrap ? {} : {\n        attributes: { ...state.attributes,\n          ...state.actions\n        }\n      }),\n      customBreakpoints: state.childrenContext?.content?.meta?.breakpoints\n    },\n    context: state.childrenContext\n  };\n}\",\n      \"type\": \"getter\",\n    },\n    \"renderComponentTag\": {\n      \"code\": \"get renderComponentTag() {\n  if (TARGET === 'reactNative') {\n    return RenderComponentWithContext;\n  } else if (TARGET === 'vue3') {\n    // vue3 expects a string for the component tag\n    return 'RenderComponent';\n  } else {\n    return RenderComponent;\n  }\n}\",\n      \"type\": \"getter\",\n    },\n    \"repeatItemData\": {\n      \"code\": \"get repeatItemData() {\n  /**\n   * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n   * which will not work if there is a repeat.\n   */\n  const {\n    repeat,\n    ...blockWithoutRepeat\n  } = props.block;\n\n  if (!repeat?.collection) {\n    return undefined;\n  }\n\n  const itemsArray = evaluate({\n    code: repeat.collection,\n    state: props.context.state,\n    context: props.context.context\n  });\n\n  if (!Array.isArray(itemsArray)) {\n    return undefined;\n  }\n\n  const collectionName = repeat.collection.split('.').pop();\n  const itemNameToUse = repeat.itemName || (collectionName ? collectionName + 'Item' : 'item');\n  const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n    context: { ...props.context,\n      state: { ...props.context.state,\n        $index: index,\n        $item: item,\n        [itemNameToUse]: item,\n        [\\`$\\${itemNameToUse}Index\\`]: index\n      }\n    },\n    block: blockWithoutRepeat\n  }));\n  return repeatArray;\n}\",\n      \"type\": \"getter\",\n    },\n    \"shouldWrap\": {\n      \"code\": \"get shouldWrap() {\n  return !state.component?.noWrap;\n}\",\n      \"type\": \"getter\",\n    },\n    \"tag\": {\n      \"code\": \"get tag() {\n  return getBlockTag(state.useBlock);\n}\",\n      \"type\": \"getter\",\n    },\n    \"useBlock\": {\n      \"code\": \"get useBlock() {\n  return state.repeatItemData ? props.block : getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: true\n  });\n}\",\n      \"type\": \"getter\",\n    },\n    \"useChildren\": {\n      \"code\": \"get useChildren() {\n  // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n  // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n  // but still receive and need to render children.\n  // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n  return state.useBlock.children ?? [];\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"export type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > renderContentExample 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'columns'\n}\",\n          \"type\": \"single\",\n        },\n        \"onClick\": {\n          \"bindingType\": \"function\",\n          \"code\": \"trackClick(props.content.id)\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"blocks\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.content.blocks\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"RenderBlocks\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {\n      \"@dummy/context.lite:default\": {\n        \"name\": \"BuilderContext\",\n        \"value\": {\n          \"content\": {\n            \"code\": \"get content() {\n  return 3;\n}\",\n            \"type\": \"getter\",\n          },\n          \"registeredComponents\": {\n            \"code\": \"get registeredComponents() {\n  return 4;\n}\",\n            \"type\": \"getter\",\n          },\n        },\n      },\n    },\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"sendComponentsToVisualEditor(props.customComponents)\",\n        \"onSSR\": false,\n      },\n    ],\n    \"onUpdate\": [\n      {\n        \"code\": \"dispatchNewContentToVisualEditor(props.content)\",\n        \"deps\": \"[props.content]\",\n        \"depsArray\": [\n          \"props.content\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"BuilderContext\": \"default\",\n      },\n      \"path\": \"@dummy/context.lite\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"dispatchNewContentToVisualEditor\": \"dispatchNewContentToVisualEditor\",\n        \"sendComponentsToVisualEditor\": \"sendComponentsToVisualEditor\",\n        \"trackClick\": \"trackClick\",\n      },\n      \"path\": \"@dummy/injection-js\",\n    },\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"RenderBlocks\": \"default\",\n      },\n      \"path\": \"@dummy/RenderBlocks.lite.tsx\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderContent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > rootFragmentMultiNode 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"Button\",\n  \"propsTypeRef\": \"ButtonProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > rootShow 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.foo === 'bar'\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Bar\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Foo\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"RenderStyles\",\n  \"propsTypeRef\": \"RenderStylesProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export interface RenderStylesProps {\n  foo: string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > self-referencing component 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name === 'Batman'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"MyComponent\",\n              \"properties\": {\n                \"name\": \"Bruce Wayne\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > self-referencing component with children 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name === 'Batman'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"Wayne\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"MyComponent\",\n              \"properties\": {\n                \"name\": \"Bruce\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"propsTypeRef\": \"any\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > setState 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"bindingType\": \"function\",\n              \"code\": \"state.someFn()\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Click me\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SetState\",\n  \"refs\": {},\n  \"state\": {\n    \"n\": {\n      \"code\": \"['123']\",\n      \"propertyType\": \"reactive\",\n      \"type\": \"property\",\n    },\n    \"someFn\": {\n      \"code\": \"someFn() {\n  state.n.value[0] = '123';\n}\",\n      \"type\": \"method\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > showExpressions 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Content0\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentA\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentB\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentB\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentC\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentC\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentD\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentD\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentE\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentE\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentF\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"ContentF\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"4mb\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"20mb\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"20mb\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"4mb\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA === 'Default'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionB === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"complete\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"9mb\",\n                  },\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"when\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.conditionC === 'Complete'\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"dff\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {\n                \"else\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {\n                        \"_text\": \"complete else\",\n                      },\n                      \"scope\": {},\n                    },\n                  ],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              },\n              \"name\": \"Show\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowWithOtherValues\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > showWithFor 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.items\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"key\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"idx\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"item\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"item\",\n            \"indexName\": \"idx\",\n          },\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"NestedShow\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Props {\n  conditionA: boolean;\n  items: string[];\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > showWithOtherValues 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentA\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentB\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentC\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentD\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentE\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"hello\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.conditionA\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        ContentF\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {\n            \"else\": {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"123\",\n              },\n              \"scope\": {},\n            },\n          },\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowWithOtherValues\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Props {\n  conditionA: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > showWithRootText 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.conditionA\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      ContentA\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"else-condition-A\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"ShowRootText\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"interface Props {\n  conditionA: boolean;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > signalsOnUpdate 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.id\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.foo.value.bar.baz\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('props.id changed', props.id);\nconsole.log('props.foo.value.bar.baz changed', props.foo.value.bar.baz)\",\n        \"deps\": \"[props.id, props.foo.value.bar.baz]\",\n        \"depsArray\": [\n          \"props.id\",\n        ],\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"propsTypeRef\": \"Props\",\n  \"refs\": {},\n  \"signals\": {\n    \"signalTypeImportName\": \"Signal\",\n  },\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"type Props = {\n  id: Signal<string>;\n  foo: Signal<{\n    bar: {\n      baz: number;\n    };\n  }>;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > spreadAttrs 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"attrs\": {\n          \"code\": \"attrs\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > spreadNestedProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props.nested\": {\n          \"code\": \"props.nested\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > spreadProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"props\": {\n          \"code\": \"props\",\n          \"spreadType\": \"normal\",\n          \"type\": \"spread\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > store-async-function 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"arrowFunction\": {\n      \"code\": \"async function arrowFunction() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n    \"fetchUsers\": {\n      \"code\": \"async function fetchUsers() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n    \"namedFunction\": {\n      \"code\": \"async function namedFunction() {\n  return Promise.resolve();\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > string-literal-store 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"foo\": {\n      \"code\": \"123\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > string-literal-store-kebab 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state['foo-bar']\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StringLiteralStore\",\n  \"refs\": {},\n  \"state\": {\n    \"foo-bar\": {\n      \"code\": \"123\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > styleClassAndCss 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  width: '100%'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"builder-column\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > stylePropClassAndCss 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: 'flex',\n  flexDirection: 'column',\n  alignItems: 'stretch'\n}\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"props.attributes.style\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"USE_TARGET_BLOCK_1\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"StylePropClassAndCss\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"targetBlocks\": {\n    \"1\": {\n      \"default\": {\n        \"code\": \"props.attributes.class\",\n      },\n      \"settings\": {\n        \"requiresDefault\": true,\n      },\n      \"svelte\": {\n        \"code\": \"props.attributes.classfdsa\",\n      },\n      \"vue\": {\n        \"code\": \"props.attributes.className\",\n      },\n    },\n  },\n}\n`;\n\nexports[`Parse JSX > Typescript > subComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Foo\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Foo\": \"default\",\n      },\n      \"path\": \"./foo-sub-component.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SubComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > svgComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"height\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"42\",\n          \"type\": \"single\",\n        },\n        \"viewBox\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"'0 0 ' + 42 + ' ' + 42\",\n          \"type\": \"single\",\n        },\n        \"width\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"42\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feFlood\",\n                  \"properties\": {\n                    \"result\": \"BackgroundImageFix\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feBlend\",\n                  \"properties\": {\n                    \"in\": \"SourceGraphic\",\n                    \"in2\": \"BackgroundImageFix\",\n                    \"result\": \"shape\",\n                  },\n                  \"scope\": {},\n                },\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"stdDeviation\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"7\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"feGaussianBlur\",\n                  \"properties\": {\n                    \"result\": \"effect1_foregroundBlur\",\n                  },\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"filter\",\n              \"properties\": {\n                \"filterUnits\": \"userSpaceOnUse\",\n                \"id\": \"prefix__filter0_f\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"defs\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"svg\",\n      \"properties\": {\n        \"fill\": \"none\",\n        \"role\": \"img\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"SvgComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > typeDependency 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.foo\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"Foo\": \"Foo\",\n      },\n      \"path\": \"./foo-type\",\n    },\n    {\n      \"importKind\": \"type\",\n      \"imports\": {\n        \"Foo2\": \"Foo\",\n      },\n      \"path\": \"./type-export.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeDependency\",\n  \"propsTypeRef\": \"TypeDependencyProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n  \"types\": [\n    \"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > typeExternalProps 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"FooProps\": \"FooProps\",\n      },\n      \"path\": \"./foo-props\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeExternalProps\",\n  \"propsTypeRef\": \"FooProps\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > typeExternalStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state._name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"FooStore\": \"FooStore\",\n      },\n      \"path\": \"./foo-store\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeExternalStore\",\n  \"refs\": {},\n  \"state\": {\n    \"_name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"FooStore[\\\\\"_name\\\\\"]\",\n    },\n  },\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > typeGetterStore 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Hello \",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"! \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"TypeGetterStore\",\n  \"refs\": {},\n  \"state\": {\n    \"getName\": {\n      \"code\": \"getName() {\n  if (state.name === 'a') {\n    return 'b';\n  }\n\n  return state.name;\n}\",\n      \"type\": \"method\",\n      \"typeParameter\": \"GetterStore[\\\\\"getName\\\\\"]\",\n    },\n    \"name\": {\n      \"code\": \"'test'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n      \"typeParameter\": \"GetterStore[\\\\\"name\\\\\"]\",\n    },\n    \"test\": {\n      \"code\": \"get test() {\n  return 'test';\n}\",\n      \"type\": \"getter\",\n      \"typeParameter\": \"GetterStore[\\\\\"test\\\\\"]\",\n    },\n  },\n  \"subComponents\": [],\n  \"types\": [\n    \"type GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n}\",\n  ],\n}\n`;\n\nexports[`Parse JSX > Typescript > use-style 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Button\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > use-style-and-css 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  background: 'blue',\n  color: 'white'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Button\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > use-style-outside-component 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"Button\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"button\",\n      \"properties\": {\n        \"type\": \"button\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > Typescript > useTarget 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log(state.foo);\nstate.foo = 'bar';\n\\\\\"USE_TARGET_BLOCK_2\\\\\"\",\n        \"onSSR\": false,\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"UseTargetComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"foo\": {\n      \"code\": \"'bar'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"lastName\": {\n      \"code\": \"'bar'\",\n      \"propertyType\": \"normal\",\n      \"type\": \"property\",\n    },\n    \"name\": {\n      \"code\": \"get name() {\n  const prefix = \\\\\"USE_TARGET_BLOCK_1\\\\\";\n  return prefix + 'foo';\n}\",\n      \"type\": \"getter\",\n    },\n  },\n  \"subComponents\": [],\n  \"targetBlocks\": {\n    \"1\": {\n      \"alpine\": {\n        \"code\": \"'a'\",\n      },\n      \"angular\": {\n        \"code\": \"true\",\n      },\n      \"customElement\": {\n        \"code\": \"'c'\",\n      },\n      \"default\": {\n        \"code\": \"'Default str'\",\n      },\n      \"html\": {\n        \"code\": \"'h'\",\n      },\n      \"liquid\": {\n        \"code\": \"'l'\",\n      },\n      \"lit\": {\n        \"code\": \"'li'\",\n      },\n      \"marko\": {\n        \"code\": \"'m'\",\n      },\n      \"mitosis\": {\n        \"code\": \"'mi'\",\n      },\n      \"preact\": {\n        \"code\": \"'p'\",\n      },\n      \"qwik\": {\n        \"code\": \"'q'\",\n      },\n      \"react\": {\n        \"code\": \"123\",\n      },\n      \"reactNative\": {\n        \"code\": \"'rn'\",\n      },\n      \"rsc\": {\n        \"code\": \"'rsc'\",\n      },\n      \"settings\": {\n        \"requiresDefault\": true,\n      },\n      \"solid\": {\n        \"code\": \"'so'\",\n      },\n      \"stencil\": {\n        \"code\": \"'st'\",\n      },\n      \"svelte\": {\n        \"code\": \"'s'\",\n      },\n      \"swift\": {\n        \"code\": \"'sw'\",\n      },\n      \"taro\": {\n        \"code\": \"'t'\",\n      },\n      \"template\": {\n        \"code\": \"'te'\",\n      },\n      \"vue\": {\n        \"code\": \"'v'\",\n      },\n      \"webcomponent\": {\n        \"code\": \"'wc'\",\n      },\n    },\n    \"2\": {\n      \"qwik\": {\n        \"code\": \"console.log('qwik');\nstate.lastName = 'baz';\nconsole.log(state.foo);\nstate.foo = 'baz'\",\n      },\n      \"react\": {\n        \"code\": \"console.log('react');\nstate.lastName = 'baz';\nconsole.log(state.foo);\nstate.foo = 'baz'\",\n      },\n      \"settings\": {\n        \"requiresDefault\": false,\n      },\n    },\n  },\n}\n`;\n\nexports[`Parse JSX > Typescript > webComponent 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 1\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 2\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Slide 3\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"swiper-slide\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"swiper-container\",\n      \"properties\": {\n        \"navigation\": \"true\",\n        \"pagination\": \"true\",\n        \"slides-per-view\": \"3\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onInit\": {\n      \"code\": \"register()\",\n    },\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"register\": \"register\",\n      },\n      \"path\": \"swiper/element/bundle\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicWebComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > boolean attribute 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.children\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.children\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.type\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"toggle\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"true\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"list\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"null\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"MyBooleanAttributeComponent\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyBooleanAttributeComponent\": \"default\",\n      },\n      \"path\": \"./basic-boolean-attribute-component.raw\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBooleanAttribute\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > metadata 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"href\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.link\",\n                  \"type\": \"single\",\n                },\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n                \"target\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"props.openLinkInNewTab ? '_blank' : undefined\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"a\",\n              \"properties\": {},\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"when\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"!props.link\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"props.attributes\": {\n                  \"code\": \"props.attributes\",\n                  \"spreadType\": \"normal\",\n                  \"type\": \"spread\",\n                },\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"props.text\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"button\",\n              \"properties\": {\n                \"type\": \"button\",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Show\",\n          \"properties\": {},\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"Fragment\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {\n    \"useMetadata\": {\n      \"foo\": {\n        \"bar\": \"baz\",\n      },\n      \"fun\": \"more metadata\",\n    },\n  },\n  \"name\": \"Button\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > parseStateObject 1`] = `\n{\n  \"allRegisteredComponents\": {\n    \"code\": \"get allRegisteredComponents() {\n  const allComponentsArray = [...getDefaultRegisteredComponents(), // While this \\`components\\` object is deprecated, we must maintain support for it.\n  // Since users are able to override our default components, we need to make sure that we do not break such\n  // existing usage.\n  // This is why we spread \\`components\\` after the default Builder.io components, but before the \\`props.customComponents\\`,\n  // which is the new standard way of providing custom components, and must therefore take precedence.\n  ...components, ...(props.customComponents || [])];\n  const allComponents = allComponentsArray.reduce((acc, curr) => ({ ...acc,\n    [curr.name]: curr\n  }), ({} as RegisteredComponents));\n  return allComponents;\n}\",\n    \"type\": \"getter\",\n  },\n  \"canTrackToUse\": {\n    \"code\": \"get canTrackToUse() {\n  return props.canTrack || true;\n}\",\n    \"type\": \"getter\",\n  },\n  \"contentState\": {\n    \"code\": \"get contentState() {\n  return { ...props.content?.data?.state,\n    ...props.data,\n    ...state.overrideState\n  };\n}\",\n    \"type\": \"getter\",\n  },\n  \"contextContext\": {\n    \"code\": \"get contextContext() {\n  return props.context || {};\n}\",\n    \"type\": \"getter\",\n  },\n  \"emitStateUpdate\": {\n    \"code\": \"emitStateUpdate() {\n  if (isEditing()) {\n    window.dispatchEvent(new CustomEvent<BuilderComponentStateChange>('builder:component:stateChange', {\n      detail: {\n        state: state.contentState,\n        ref: {\n          name: props.model\n        }\n      }\n    }));\n  }\n}\",\n    \"type\": \"method\",\n  },\n  \"evalExpression\": {\n    \"code\": \"evalExpression(expression: string) {\n  return expression.replace(/{{([^}]+)}}/g, (_match, group) => evaluate({\n    code: group,\n    context: state.contextContext,\n    state: state.contentState\n  }));\n}\",\n    \"type\": \"method\",\n  },\n  \"evaluateJsCode\": {\n    \"code\": \"evaluateJsCode() {\n  // run any dynamic JS code attached to content\n  const jsCode = state.useContent?.data?.jsCode;\n\n  if (jsCode) {\n    evaluate({\n      code: jsCode,\n      context: state.contextContext,\n      state: state.contentState\n    });\n  }\n}\",\n    \"type\": \"method\",\n  },\n  \"forceReRenderCount\": {\n    \"code\": \"0\",\n    \"propertyType\": \"normal\",\n    \"type\": \"property\",\n  },\n  \"handleRequest\": {\n    \"code\": \"handleRequest({\n  url,\n  key\n}: {\n  key: string;\n  url: string;\n}) {\n  const fetchAndSetState = async () => {\n    const fetch = await getFetch();\n    const response = await fetch(url);\n    const json = await response.json();\n    const newOverrideState = { ...state.overrideState,\n      [key]: json\n    };\n    state.overrideState = newOverrideState;\n  };\n\n  fetchAndSetState();\n}\",\n    \"type\": \"method\",\n  },\n  \"httpReqsData\": {\n    \"code\": \"get httpReqsData() {\n  return {};\n}\",\n    \"type\": \"getter\",\n  },\n  \"onClick\": {\n    \"code\": \"onClick(_event: MouseEvent) {\n  if (state.useContent) {\n    track({\n      type: 'click',\n      canTrack: state.canTrackToUse,\n      contentId: state.useContent.id,\n      orgId: props.apiKey\n    });\n  }\n}\",\n    \"type\": \"method\",\n  },\n  \"overrideContent\": {\n    \"code\": \"null\",\n    \"propertyType\": \"normal\",\n    \"type\": \"property\",\n  },\n  \"overrideState\": {\n    \"code\": \"{}\",\n    \"propertyType\": \"normal\",\n    \"type\": \"property\",\n  },\n  \"processMessage\": {\n    \"code\": \"processMessage(event: MessageEvent) {\n  const {\n    data\n  } = event;\n\n  if (data) {\n    switch (data.type) {\n      case 'builder.contentUpdate':\n        {\n          const messageContent = data.data;\n          const key = messageContent.key || messageContent.alias || messageContent.entry || messageContent.modelName;\n          const contentData = messageContent.data;\n\n          if (key === props.model) {\n            state.overrideContent = contentData;\n          }\n\n          break;\n        }\n\n      case 'builder.patchUpdates':\n        {\n          // TODO\n          break;\n        }\n    }\n  }\n}\",\n    \"type\": \"method\",\n  },\n  \"runHttpRequests\": {\n    \"code\": \"runHttpRequests() {\n  const requests = state.useContent?.data?.httpRequests ?? {};\n  Object.entries(requests).forEach(([key, url]) => {\n    if (url && (!state.httpReqsData[key] || isEditing())) {\n      const evaluatedUrl = state.evalExpression(url);\n      state.handleRequest({\n        url: evaluatedUrl,\n        key\n      });\n    }\n  });\n}\",\n    \"type\": \"method\",\n  },\n  \"shouldRenderContentStyles\": {\n    \"code\": \"get shouldRenderContentStyles() {\n  return Boolean((state.useContent?.data?.cssCode || state.useContent?.data?.customFonts?.length) && TARGET !== 'reactNative');\n}\",\n    \"type\": \"getter\",\n  },\n  \"update\": {\n    \"code\": \"0\",\n    \"propertyType\": \"normal\",\n    \"type\": \"property\",\n  },\n  \"useContent\": {\n    \"code\": \"get useContent() {\n  const mergedContent: BuilderContent = { ...props.content,\n    ...state.overrideContent,\n    data: { ...props.content?.data,\n      ...props.data,\n      ...state.overrideContent?.data\n    }\n  };\n  return mergedContent;\n}\",\n    \"type\": \"getter\",\n  },\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/parse-svelte.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Parse JSX > basic 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n  Hello! I can run in React, Vue, Solid, or Liquid!\n\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"name\": {\n      \"code\": \"\\\\\"Steve\\\\\"\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > bindGroup 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla === 'Plain'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"radio\",\n            \"value\": \"Plain\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla === 'Whole wheat'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"radio\",\n            \"value\": \"Whole wheat\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla === 'Spinach'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.tortilla = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"radio\",\n            \"value\": \"Spinach\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"br\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"br\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings === 'Rice'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"checkbox\",\n            \"value\": \"Rice\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings === 'Beans'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"checkbox\",\n            \"value\": \"Beans\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings === 'Cheese'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"checkbox\",\n            \"value\": \"Cheese\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"checked\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings === 'Guac (extra)'\",\n              \"type\": \"single\",\n            },\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.fillings = event.target.value\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"checkbox\",\n            \"value\": \"Guac (extra)\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Tortilla: \",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.tortilla\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Fillings: \",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {\n                \"_text\": {\n                  \"bindingType\": \"expression\",\n                  \"code\": \"state.fillings\",\n                  \"type\": \"single\",\n                },\n              },\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"p\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"fillings\": {\n      \"code\": \"[]\",\n      \"type\": \"property\",\n    },\n    \"tortilla\": {\n      \"code\": \"\\\\\"Plain\\\\\"\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > bindProperty 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"value\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.value\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"value\": {\n      \"code\": \"\\\\\"hello\\\\\"\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > classDirective 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"class\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"\\`form-input \\${props.disabled ? 'disabled' : ''} \\${state.focus ? 'focus' : ''}\\`\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"defaultProps\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"focus\": {\n      \"code\": \"true\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > context 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.activeTab\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {\n      \"disabled\": {\n        \"name\": \"'disabled'\",\n        \"path\": \"\",\n      },\n    },\n    \"set\": {\n      \"activeTab\": {\n        \"name\": \"'activeTab'\",\n        \"ref\": \"state.activeTab\",\n      },\n    },\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"activeTab\": {\n      \"code\": \"0\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > each 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"each\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.numbers\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {\n                    \"_text\": {\n                      \"bindingType\": \"expression\",\n                      \"code\": \"num\",\n                      \"type\": \"single\",\n                    },\n                  },\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {},\n                  \"scope\": {},\n                  \"slots\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"li\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"For\",\n          \"properties\": {},\n          \"scope\": {\n            \"forName\": \"num\",\n          },\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"ul\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"numbers\": {\n      \"code\": \"[\\\\\"one\\\\\",\\\\\"two\\\\\",\\\\\"three\\\\\"]\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > eventHandlers 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": [\n                \"a\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.log('hi')\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Log\",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": undefined,\n              \"bindingType\": \"expression\",\n              \"code\": \"state.log(event)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Log\",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": undefined,\n              \"bindingType\": \"expression\",\n              \"code\": \"state.log(event)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"Log\",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"log\": {\n      \"arguments\": [\n        \"msg = 'hello'\",\n      ],\n      \"code\": \"function log(msg = 'hello') {\n  console.log(msg);\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > html 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"innerHTML\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.html\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"html\": {\n      \"code\": \"\\\\\"<b>bold</b>\\\\\"\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > ifElse 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"when\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.show\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": undefined,\n              \"bindingType\": \"expression\",\n              \"code\": \"state.toggle(event)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \" Hide \",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {\n        \"else\": {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onClick\": {\n              \"arguments\": undefined,\n              \"bindingType\": \"expression\",\n              \"code\": \"state.toggle(event)\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \" Show \",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"button\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      },\n      \"name\": \"Show\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"show\": {\n      \"code\": \"true\",\n      \"type\": \"property\",\n    },\n    \"toggle\": {\n      \"code\": \"function toggle() {\n  state.show = !state.show;\n}\",\n      \"type\": \"function\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > imports 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"disabled\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.disabled\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"Slot\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Button\",\n          \"properties\": {\n            \"type\": \"button\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"imports\": {\n        \"Button\": \"default\",\n      },\n      \"path\": \"./Button.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"disabled\": {\n      \"code\": \"false\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > lifecycleHooks 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [\n      {\n        \"code\": \"console.log('onMount')\",\n        \"deps\": \"\",\n      },\n    ],\n    \"onUnMount\": {\n      \"code\": \"\n  console.log('onDestroy');\n\",\n    },\n    \"onUpdate\": [\n      {\n        \"code\": \"console.log('onAfterUpdate')\",\n        \"deps\": \"\",\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > reactive 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.name\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n  Lowercase: \",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.lowercaseName\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"lowercaseName\": {\n      \"code\": \"get lowercaseName() {\n  return state.name.toLowerCase();\n}\",\n      \"type\": \"getter\",\n    },\n    \"name\": {\n      \"code\": \"\\\\\"Steve\\\\\"\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > reactiveWithFn 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.a = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.a\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"number\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"onChange\": {\n              \"arguments\": [\n                \"event\",\n              ],\n              \"bindingType\": \"expression\",\n              \"code\": \"state.b = event.target.value\",\n              \"type\": \"single\",\n            },\n            \"value\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.b\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"input\",\n          \"properties\": {\n            \"type\": \"number\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n  Result: \",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.result\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n    \"onUpdate\": [\n      {\n        \"code\": \"state.calculateResult(state.a, state.b)\",\n        \"deps\": \"[state.a, state.b]\",\n      },\n    ],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"2\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"5\",\n      \"type\": \"property\",\n    },\n    \"calculateResult\": {\n      \"arguments\": [\n        \"a_\",\n        \"b_\",\n      ],\n      \"code\": \"function calculateResult(a_, b_) {\n  state.result = a_ * b_;\n}\",\n      \"type\": \"function\",\n    },\n    \"result\": {\n      \"code\": \"null\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > slots 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"default\",\n              },\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"div\",\n                  \"properties\": {\n                    \"_text\": \"default\",\n                  },\n                  \"scope\": {},\n                  \"slots\": {},\n                },\n              ],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {},\n              \"scope\": {},\n              \"slots\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"Slot\",\n          \"properties\": {\n            \"name\": \"Test\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > style 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"input\",\n      \"properties\": {\n        \"class\": \"form-input\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Parse JSX > textExpressions 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n  normal:\n  \",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.a + state.b\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"br\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n  conditional\n  \",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"_text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.a > 2 ? 'hello' : 'bye'\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {},\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {\n    \"a\": {\n      \"code\": \"5\",\n      \"type\": \"property\",\n    },\n    \"b\": {\n      \"code\": \"12\",\n      \"type\": \"property\",\n    },\n  },\n  \"style\": undefined,\n  \"subComponents\": [],\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/preact.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Preact > jsx > Javascript Test > AdvancedRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <Fragment>\n      <div>\n        {props.showInput ? (\n          <Fragment>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Basic 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Basic Context 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Basic Outputs 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicAttribute 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <Fragment>\n          {props.children}\n          {props.type}\n        </Fragment>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicFor 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <Fragment>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </Fragment>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <Fragment>\n      <div>\n        {props.showInput ? (\n          <Fragment>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Button 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Columns 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <Fragment>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <Fragment>\n      {props.slotReference ? (\n        <Fragment>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </Fragment>\n      ) : null}\n    </Fragment>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > CustomCode 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Embed 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Form 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <Fragment>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <Fragment>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </Fragment>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </Fragment>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Image 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <Fragment>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Image State 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Img 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Input 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > InputParent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > NestedStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > RawText 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Section 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Select 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > SlotDefault 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > SlotHtml 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > SlotJsx 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > SlotNamed 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Stamped.io 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <Fragment>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <Fragment>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </Fragment>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > StoreComment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <Fragment>{foo}</Fragment>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <Fragment>{foo(errors)}</Fragment>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > StoreWithState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <Fragment>{bar()}</Fragment>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Submit 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Text 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Textarea 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > Video 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicForFragment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicForwardRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          ref={props.inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          ref={props.inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <Fragment>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > class + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > className + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > className 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > classState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <Fragment>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > componentWithContext 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <Fragment>{foo.value}</Fragment>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <Fragment>\n          <Fragment>{foo.value}</Fragment>\n          <div>other</div>\n        </Fragment>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > contentState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > defaultProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > eventProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > expressionState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > functionProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > getterState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > import types 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > layerName 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <Fragment>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > multipleSpreads 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > nestedShow 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > nestedStyles 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <Fragment>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <Fragment>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onEvent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onInit & onMount 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onInit 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onInitPlain 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onMount 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onMountMultiple 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > preserveTyping 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > propsDestructure 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > propsInterface 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > propsType 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > renderBlock 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <Fragment>\n      {shouldWrap() ? (\n        <Fragment>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <Fragment>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </Fragment>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </Fragment>\n      ) : (\n        <Fragment>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </Fragment>\n      )}\n    </Fragment>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > renderContentExample 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext, useEffect } from \\\\\"preact/hooks\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <Fragment>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction Button(props) {\n  return (\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > rootShow 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <Fragment>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <Fragment>\n          <div>Bar</div>\n        </Fragment>\n      ) : (\n        <div>Foo</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > self-referencing component 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > setState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > showExpressions 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? (\n        <Fragment>Content0</Fragment>\n      ) : (\n        <Fragment>ContentA</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentA</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentA</Fragment>}\n      {props.conditionA ? (\n        <Fragment>ContentB</Fragment>\n      ) : (\n        <Fragment>{undefined}</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>{undefined}</Fragment>\n      ) : (\n        <Fragment>ContentB</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentC</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentC</Fragment>}\n      {props.conditionA ? <Fragment>ContentD</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentD</Fragment>}\n      {props.conditionA ? (\n        <Fragment>ContentE</Fragment>\n      ) : (\n        <Fragment>hello</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>hello</Fragment>\n      ) : (\n        <Fragment>ContentE</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>ContentF</Fragment>\n      ) : (\n        <Fragment>123</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>123</Fragment>\n      ) : (\n        <Fragment>ContentF</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>4mb</Fragment>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <Fragment>20mb</Fragment>\n      ) : (\n        <Fragment>9mb</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <Fragment>20mb</Fragment>\n          ) : (\n            <Fragment>9mb</Fragment>\n          )}\n        </Fragment>\n      ) : (\n        <Fragment>4mb</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <div>complete</div>\n          ) : (\n            <Fragment>9mb</Fragment>\n          )}\n        </Fragment>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <Fragment>dff</Fragment>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > showWithFor 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <Fragment>ContentA</Fragment> : null}\n      {props.conditionA ? (\n        <Fragment>ContentB</Fragment>\n      ) : (\n        <Fragment>{undefined}</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentC</Fragment> : null}\n      {props.conditionA ? <Fragment>ContentD</Fragment> : null}\n      {props.conditionA ? (\n        <Fragment>ContentE</Fragment>\n      ) : (\n        <Fragment>hello</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>ContentF</Fragment>\n      ) : (\n        <Fragment>123</Fragment>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > showWithRootText 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ShowRootText(props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>ContentA</Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > spreadAttrs 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > spreadProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > store-async-function 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > string-literal-store 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Fragment>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <Fragment>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > subComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > svgComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > typeDependency 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > typeExternalProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > typeExternalStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > typeGetterStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > use-style 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > use-style-and-css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > useTarget 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = \\\\\"p\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Preact > jsx > Javascript Test > webComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Preact > jsx > Remove Internal mitosis package 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > AdvancedRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <Fragment>\n      <div>\n        {props.showInput ? (\n          <Fragment>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Basic 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Basic Context 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Basic Outputs 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicAttribute 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <Fragment>\n          {props.children}\n          {props.type}\n        </Fragment>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicFor 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <Fragment>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </Fragment>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <Fragment>\n      <div>\n        {props.showInput ? (\n          <Fragment>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Button 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Columns 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <Fragment>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <Fragment>\n      {props.slotReference ? (\n        <Fragment>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </Fragment>\n      ) : null}\n    </Fragment>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > CustomCode 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Embed 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Form 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <Fragment>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <Fragment>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </Fragment>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </Fragment>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Image 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <Fragment>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Image State 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Img 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Input 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > InputParent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > NestedStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > RawText 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Section 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Select 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > SlotDefault 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > SlotHtml 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > SlotJsx 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > SlotNamed 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Stamped.io 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <Fragment>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <Fragment>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </Fragment>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > StoreComment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <Fragment>{foo}</Fragment>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <Fragment>{foo(errors)}</Fragment>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > StoreWithState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <Fragment>{bar()}</Fragment>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Submit 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Text 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Textarea 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > Video 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicForFragment 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicForwardRef 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          ref={props.inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          ref={props.inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <Fragment>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > class + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > className + css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > className 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > classState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <Fragment>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > componentWithContext 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <Fragment>{foo.value}</Fragment>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <Fragment>\n          <Fragment>{foo.value}</Fragment>\n          <div>other</div>\n        </Fragment>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > contentState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext } from \\\\\"preact/hooks\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > defaultProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <Fragment>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > eventProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > expressionState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > functionProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > getterState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > import types 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > layerName 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <Fragment>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > multipleSpreads 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > nestedShow 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > nestedStyles 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <Fragment>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <Fragment>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onEvent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onInit & onMount 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onInit 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useRef } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onInitPlain 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onMount 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onMountMultiple 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > preserveTyping 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > propsDestructure 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > propsInterface 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > propsType 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > renderBlock 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <Fragment>\n      {shouldWrap() ? (\n        <Fragment>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <Fragment>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </Fragment>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </Fragment>\n      ) : (\n        <Fragment>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </Fragment>\n      )}\n    </Fragment>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > renderContentExample 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useContext, useEffect } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <Fragment>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > rootShow 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <Fragment>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <Fragment>\n          <div>Bar</div>\n        </Fragment>\n      ) : (\n        <div>Foo</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > self-referencing component 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > setState 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > showExpressions 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? (\n        <Fragment>Content0</Fragment>\n      ) : (\n        <Fragment>ContentA</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentA</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentA</Fragment>}\n      {props.conditionA ? (\n        <Fragment>ContentB</Fragment>\n      ) : (\n        <Fragment>{undefined}</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>{undefined}</Fragment>\n      ) : (\n        <Fragment>ContentB</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentC</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentC</Fragment>}\n      {props.conditionA ? <Fragment>ContentD</Fragment> : null}\n      {props.conditionA ? <Fragment></Fragment> : <Fragment>ContentD</Fragment>}\n      {props.conditionA ? (\n        <Fragment>ContentE</Fragment>\n      ) : (\n        <Fragment>hello</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>hello</Fragment>\n      ) : (\n        <Fragment>ContentE</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>ContentF</Fragment>\n      ) : (\n        <Fragment>123</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>123</Fragment>\n      ) : (\n        <Fragment>ContentF</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>4mb</Fragment>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <Fragment>20mb</Fragment>\n      ) : (\n        <Fragment>9mb</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <Fragment>20mb</Fragment>\n          ) : (\n            <Fragment>9mb</Fragment>\n          )}\n        </Fragment>\n      ) : (\n        <Fragment>4mb</Fragment>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <Fragment>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <div>complete</div>\n          ) : (\n            <Fragment>9mb</Fragment>\n          )}\n        </Fragment>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <Fragment>dff</Fragment>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > showWithFor 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <Fragment>ContentA</Fragment> : null}\n      {props.conditionA ? (\n        <Fragment>ContentB</Fragment>\n      ) : (\n        <Fragment>{undefined}</Fragment>\n      )}\n      {props.conditionA ? <Fragment>ContentC</Fragment> : null}\n      {props.conditionA ? <Fragment>ContentD</Fragment> : null}\n      {props.conditionA ? (\n        <Fragment>ContentE</Fragment>\n      ) : (\n        <Fragment>hello</Fragment>\n      )}\n      {props.conditionA ? (\n        <Fragment>ContentF</Fragment>\n      ) : (\n        <Fragment>123</Fragment>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > showWithRootText 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return (\n    <Fragment>\n      {props.conditionA ? (\n        <Fragment>ContentA</Fragment>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </Fragment>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <Fragment>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > spreadAttrs 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > spreadProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > store-async-function 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > string-literal-store 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Fragment>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <Fragment>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > subComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > svgComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > typeDependency 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > typeExternalProps 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > typeExternalStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > typeGetterStore 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > use-style 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > use-style-and-css 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Fragment>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > useTarget 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = \\\\\"p\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Preact > jsx > Typescript Test > webComponent 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useRef } from \\\\\"preact/hooks\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > basic 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > bindGroup 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > bindProperty 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > classDirective 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`Preact > svelte > Javascript Test > each 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > eventHandlers 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > html 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > ifElse 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <Fragment>\n      {show ? (\n        <Fragment>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </Fragment>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > imports 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > reactive 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > slots 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > style 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Fragment>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Javascript Test > textExpressions 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > basic 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > bindGroup 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > bindProperty 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > classDirective 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`Preact > svelte > Typescript Test > each 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > eventHandlers 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > html 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > ifElse 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <Fragment>\n      {show ? (\n        <Fragment>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </Fragment>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > imports 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > reactive 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState, useEffect } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > slots 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > style 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Fragment>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </Fragment>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Preact > svelte > Typescript Test > textExpressions 1`] = `\n\"/** @jsx h */\nimport { h, Fragment } from \\\\\"preact\\\\\";\nimport { useState } from \\\\\"preact/hooks\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/qwik.directive.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`qwik directives > Image > altText 1`] = `\n{\n  \"children\": [],\n  \"props\": {\n    \"alt\": \"foo\",\n    \"loading\": \"lazy\",\n    \"src\": \"http://some.url\",\n    \"style\": \"object-fit:cover;object-position:center;\",\n  },\n  \"tag\": \"img\",\n}\n`;\n\nexports[`qwik directives > Image > altText 2`] = `\n{\n  \"children\": [],\n  \"props\": {\n    \"loading\": \"lazy\",\n    \"role\": \"presentation\",\n    \"src\": \"http://some.url\",\n    \"style\": \"object-fit:cover;object-position:center;\",\n  },\n  \"tag\": \"img\",\n}\n`;\n\nexports[`qwik directives > Image > anchor should wrap in <a> 1`] = `\n{\n  \"children\": [\n    [\n      {\n        \"children\": [],\n        \"props\": {\n          \"loading\": \"lazy\",\n          \"role\": \"presentation\",\n          \"src\": \"http://some.url\",\n          \"style\": \"object-fit:cover;object-position:center;\",\n        },\n        \"tag\": \"img\",\n      },\n    ],\n  ],\n  \"props\": {\n    \"class\": undefined,\n    \"href\": \"my-url\",\n  },\n  \"tag\": \"a\",\n}\n`;\n\nexports[`qwik directives > Image > builder.io URLs are served using webp 1`] = `\n{\n  \"children\": undefined,\n  \"props\": {\n    \"srcset\": \"http://foo.builder.io/foo?format=webp&width=100 100w, http://foo.builder.io/foo?format=webp&width=200 200w, http://foo.builder.io/foo?format=webp&width=400 400w, http://foo.builder.io/foo?format=webp&width=800 800w, http://foo.builder.io/foo?format=webp&width=1200 1200w, http://foo.builder.io/foo?format=webp&width=1600 1600w, http://foo.builder.io/foo?format=webp&width=2000 2000w\",\n    \"type\": \"image/webp\",\n  },\n  \"tag\": \"source\",\n}\n`;\n\nexports[`qwik directives > Image > builder-pixel is eager 1`] = `\n{\n  \"children\": [],\n  \"props\": {\n    \"loading\": \"eager\",\n    \"role\": \"presentation\",\n    \"src\": \"http://some.url\",\n    \"style\": \"object-fit:cover;object-position:center;\",\n  },\n  \"tag\": \"img\",\n}\n`;\n\nexports[`qwik directives > Image > images are lazy loaded 1`] = `\n{\n  \"children\": [],\n  \"props\": {\n    \"loading\": \"lazy\",\n    \"role\": \"presentation\",\n    \"src\": \"http://some.url\",\n    \"style\": \"object-fit:cover;object-position:center;\",\n  },\n  \"tag\": \"img\",\n}\n`;\n\nexports[`qwik directives > Image > maxWidth is added to the srcs 1`] = `\n{\n  \"children\": undefined,\n  \"props\": {\n    \"srcset\": \"http://foo.builder.io/foo?format=webp&width=100 100w, http://foo.builder.io/foo?format=webp&width=200 200w, http://foo.builder.io/foo?format=webp&width=400 400w, http://foo.builder.io/foo?format=webp&width=800 800w, http://foo.builder.io/foo?format=webp&width=1200 1200w, http://foo.builder.io/foo?format=webp&width=1600 1600w, http://foo.builder.io/foo?format=webp&width=2000 2000w, http://foo.builder.io/foo?format=webp&width=1234 1234w, http://foo.builder.io/foo?format=webp&width=456 456w\",\n    \"type\": \"image/webp\",\n  },\n  \"tag\": \"source\",\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/qwik.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`qwik > Accordion 1`] = `\n{\n  \"high.jsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.jsx\": \"import {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.csw5022{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;align-items:stretch}.csanagh{margin-top:10px;position:relative;display:flex;align-items:stretch;flex-direction:column;padding-bottom:10px}.c4qyc1p{position:relative;display:flex;align-items:stretch;flex-direction:column;margin-top:10px;padding-bottom:10px}.crwdrpw{text-align:left;display:flex;flex-direction:column}.ctcw2m4{padding-top:50px;text-align:left;display:flex;flex-direction:column;padding-bottom:50px}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <div\n      builder-id=\\\\\"builder-bb2f62792e464d73b7cb89258027f356\\\\\"\n      gridRowWidth=\\\\\"25%\\\\\"\n      class=\\\\\"csw5022 builder-block\\\\\"\n      items={[\n        {\n          title: [\n            {\n              \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n              \\\\\"@version\\\\\": 2,\n              layerName: \\\\\"Accordion item title\\\\\",\n              id: \\\\\"builder-5fed2723c1cc4fb39e9d22b9c54ef179\\\\\",\n              children: [\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  \\\\\"@version\\\\\": 2,\n                  id: \\\\\"builder-2cad86b387ec405d82917895d7af0a12\\\\\",\n                  component: {\n                    name: \\\\\"Text\\\\\",\n                    options: { text: \\\\\"<p>Item 1</p>\\\\\" },\n                  },\n                  responsiveStyles: {\n                    large: {\n                      textAlign: \\\\\"left\\\\\",\n                      display: \\\\\"flex\\\\\",\n                      flexDirection: \\\\\"column\\\\\",\n                    },\n                  },\n                },\n              ],\n              responsiveStyles: {\n                large: {\n                  marginTop: \\\\\"10px\\\\\",\n                  position: \\\\\"relative\\\\\",\n                  display: \\\\\"flex\\\\\",\n                  alignItems: \\\\\"stretch\\\\\",\n                  flexDirection: \\\\\"column\\\\\",\n                  paddingBottom: \\\\\"10px\\\\\",\n                },\n              },\n            },\n          ],\n          detail: [\n            {\n              \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n              \\\\\"@version\\\\\": 2,\n              layerName: \\\\\"Accordion item detail\\\\\",\n              id: \\\\\"builder-18279a99b32240f19aa21d3f4b015cc9\\\\\",\n              children: [\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  \\\\\"@version\\\\\": 2,\n                  id: \\\\\"builder-2dbfa56b8988461c8566bbe759580e9b\\\\\",\n                  component: {\n                    name: \\\\\"Text\\\\\",\n                    options: { text: \\\\\"<p>Item 1 content</p>\\\\\" },\n                  },\n                  responsiveStyles: {\n                    large: {\n                      paddingTop: \\\\\"50px\\\\\",\n                      textAlign: \\\\\"left\\\\\",\n                      display: \\\\\"flex\\\\\",\n                      flexDirection: \\\\\"column\\\\\",\n                      paddingBottom: \\\\\"50px\\\\\",\n                    },\n                  },\n                },\n              ],\n              responsiveStyles: {\n                large: {\n                  position: \\\\\"relative\\\\\",\n                  display: \\\\\"flex\\\\\",\n                  alignItems: \\\\\"stretch\\\\\",\n                  flexDirection: \\\\\"column\\\\\",\n                  marginTop: \\\\\"10px\\\\\",\n                  paddingBottom: \\\\\"10px\\\\\",\n                },\n              },\n            },\n          ],\n        },\n        {\n          title: [\n            {\n              \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n              \\\\\"@version\\\\\": 2,\n              layerName: \\\\\"Accordion item title\\\\\",\n              id: \\\\\"builder-2a93def22a354cf7aa193c20d1ad6def\\\\\",\n              children: [\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  \\\\\"@version\\\\\": 2,\n                  id: \\\\\"builder-1365fc457ece45db82ad90dbe9819e7c\\\\\",\n                  component: {\n                    name: \\\\\"Text\\\\\",\n                    options: { text: \\\\\"<p>Item 2</p>\\\\\" },\n                  },\n                  responsiveStyles: {\n                    large: {\n                      textAlign: \\\\\"left\\\\\",\n                      display: \\\\\"flex\\\\\",\n                      flexDirection: \\\\\"column\\\\\",\n                    },\n                  },\n                },\n              ],\n              responsiveStyles: {\n                large: {\n                  marginTop: \\\\\"10px\\\\\",\n                  position: \\\\\"relative\\\\\",\n                  display: \\\\\"flex\\\\\",\n                  alignItems: \\\\\"stretch\\\\\",\n                  flexDirection: \\\\\"column\\\\\",\n                  paddingBottom: \\\\\"10px\\\\\",\n                },\n              },\n            },\n          ],\n          detail: [\n            {\n              \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n              \\\\\"@version\\\\\": 2,\n              layerName: \\\\\"Accordion item detail\\\\\",\n              id: \\\\\"builder-fd6ef41da6d040328fbd8b0801611fe5\\\\\",\n              children: [\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  \\\\\"@version\\\\\": 2,\n                  id: \\\\\"builder-7362f9fd64c647c5a400d9e75c74473f\\\\\",\n                  component: {\n                    name: \\\\\"Text\\\\\",\n                    options: { text: \\\\\"<p>Item 2 content</p>\\\\\" },\n                  },\n                  responsiveStyles: {\n                    large: {\n                      paddingTop: \\\\\"50px\\\\\",\n                      textAlign: \\\\\"left\\\\\",\n                      display: \\\\\"flex\\\\\",\n                      flexDirection: \\\\\"column\\\\\",\n                      paddingBottom: \\\\\"50px\\\\\",\n                    },\n                  },\n                },\n              ],\n              responsiveStyles: {\n                large: {\n                  position: \\\\\"relative\\\\\",\n                  display: \\\\\"flex\\\\\",\n                  alignItems: \\\\\"stretch\\\\\",\n                  flexDirection: \\\\\"column\\\\\",\n                  marginTop: \\\\\"10px\\\\\",\n                  paddingBottom: \\\\\"10px\\\\\",\n                },\n              },\n            },\n          ],\n        },\n      ]}\n      animate={true}\n    >\n      <div>\n        <div builder=\\\\\"accordion\\\\\">\n          <div builder=\\\\\"accordion-title\\\\\">\n            <div\n              builder-id=\\\\\"builder-5fed2723c1cc4fb39e9d22b9c54ef179\\\\\"\n              class=\\\\\"csanagh\\\\\"\n            >\n              <div\n                builder-id=\\\\\"builder-2cad86b387ec405d82917895d7af0a12\\\\\"\n                class=\\\\\"crwdrpw\\\\\"\n              >\n                <p>Item 1</p>\n              </div>\n            </div>\n          </div>\n          <div builder=\\\\\"accordion-detail\\\\\">\n            <div\n              builder-id=\\\\\"builder-18279a99b32240f19aa21d3f4b015cc9\\\\\"\n              class=\\\\\"c4qyc1p\\\\\"\n            >\n              <div\n                builder-id=\\\\\"builder-2dbfa56b8988461c8566bbe759580e9b\\\\\"\n                class=\\\\\"ctcw2m4\\\\\"\n              >\n                <p>Item 1 content</p>\n              </div>\n            </div>\n          </div>\n        </div>\n        <div builder=\\\\\"accordion\\\\\">\n          <div builder=\\\\\"accordion-title\\\\\">\n            <div\n              builder-id=\\\\\"builder-2a93def22a354cf7aa193c20d1ad6def\\\\\"\n              class=\\\\\"csanagh\\\\\"\n            >\n              <div\n                builder-id=\\\\\"builder-1365fc457ece45db82ad90dbe9819e7c\\\\\"\n                class=\\\\\"crwdrpw\\\\\"\n              >\n                <p>Item 2</p>\n              </div>\n            </div>\n          </div>\n          <div builder=\\\\\"accordion-detail\\\\\">\n            <div\n              builder-id=\\\\\"builder-fd6ef41da6d040328fbd8b0801611fe5\\\\\"\n              class=\\\\\"c4qyc1p\\\\\"\n            >\n              <div\n                builder-id=\\\\\"builder-7362f9fd64c647c5a400d9e75c74473f\\\\\"\n                class=\\\\\"ctcw2m4\\\\\"\n              >\n                <p>Item 2 content</p>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.jsx\": \"import { componentQrl, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > For 1`] = `\n{\n  \"high.jsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.jsx\": \"import {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.cvdfnp5{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:0px;padding-left:20px;padding-right:20px;padding-top:50px;padding-bottom:50px;width:100vw;margin-left:calc(50% - 50vw)}.cygyoma{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:0px;padding-left:20px;padding-right:20px;padding-top:50px;padding-bottom:50px;width:100%;margin-left:auto;align-self:stretch;flex-grow:1;max-width:1200px;align-items:stretch;margin-right:auto}.cdrk993{text-align:center}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <div\n      builder-id=\\\\\"builder-a58a66676d9b4ecc826c1b8bc5ad91f1\\\\\"\n      class=\\\\\"cvdfnp5 builder-block\\\\\"\n      maxWidth={1200}\n    >\n      <section\n        builder-id=\\\\\"builder-a58a66676d9b4ecc826c1b8bc5ad91f1\\\\\"\n        class=\\\\\"cygyoma\\\\\"\n      >\n        {(state.simpleList.results || []).map(\n          ((item, $index) => {\n            const l = {\n              ...this,\n              resultsItem: item == null ? {} : item,\n              item: item,\n              $index: $index,\n            };\n            const state = __proxyMerge__(s, l);\n            return (\n              <div\n                builder-id=\\\\\"builder-927e0013cb8142a9bd46a4f3811d0865\\\\\"\n                class=\\\\\"cdrk993\\\\\"\n              >\n                text_content\n              </div>\n            );\n          }).bind(l)\n        )}\n      </section>\n    </div>\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.jsx\": \"import { componentQrl, h, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > Image 1`] = `\n{\n  \"high.js\": \"import { useLexicalScope } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  try {\n    return (state.myState = \\\\\"changed value\\\\\");\n  } catch (err) {\n    console.warn(\\\\\"Builder code error\\\\\", err);\n  }\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import {\n  Fragment,\n  componentQrl,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.cvk52jt{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;min-height:20px;min-width:20px;overflow:hidden}.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"myState\\\\\")) state.myState = \\\\\"initialValue\\\\\";\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    Fragment,\n    null,\n    h(Image, {\n      \\\\\"builder-id\\\\\": \\\\\"builder-fa4480d2f48a44a7a2e98cf07c54927b\\\\\",\n      image:\n        \\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160\\\\\",\n      backgroundSize: \\\\\"cover\\\\\",\n      backgroundPosition: \\\\\"center\\\\\",\n      srcset:\n        \\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=100 100w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=200 200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=400 400w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=800 800w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1200 1200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1600 1600w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=2000 2000w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160 1160w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=598 598w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=958 958w\\\\\",\n      sizes: \\\\\"(max-width: 638px) 94vw, (max-width: 998px) 96vw, 83vw\\\\\",\n      class: \\\\\"cvk52jt builder-block\\\\\",\n      onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"MyComponent_onClick_0\\\\\", [s, l]),\n      lazy: false,\n      fitContent: true,\n      aspectRatio: 1,\n      height: 1300,\n      width: 1300,\n    }),\n    h(\n      \\\\\"div\\\\\",\n      {\n        \\\\\"builder-id\\\\\": \\\\\"builder-1072afed47764e7cb37d088fd66f3a67\\\\\",\n        class: \\\\\"cjrqfb1 builder-block\\\\\",\n      },\n      \\\\\"Enter some text...\\\\\"\n    )\n  );\n};\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const Image = function Image(props) {\n  let jsx = props.children || [];\n  let image = props.image;\n  if (image) {\n    const isBuilderIoImage =\n      !!(image || \\\\\"\\\\\").match(/\\\\\\\\.builder\\\\\\\\.io/) && !props.noWebp;\n    const isPixel = props.builderBlock?.id.startsWith(\\\\\"builder-pixel-\\\\\");\n    const imgProps = {\n      src: props.image,\n      style:\n        \\`object-fit:\\${props.backgroundSize || \\\\\"cover\\\\\"};object-position:\\${\n          props.backgroundPosition || \\\\\"center\\\\\"\n        };\\` +\n        (props.aspectRatio\n          ? \\\\\"position:absolute;height:100%;width:100%;top:0;left:0\\\\\"\n          : \\\\\"\\\\\"),\n      sizes: props.sizes,\n      alt: props.altText,\n      role: !props.altText ? \\\\\"presentation\\\\\" : void 0,\n      loading: isPixel ? \\\\\"eager\\\\\" : \\\\\"lazy\\\\\",\n      srcset: void 0,\n    };\n    const qwikBugWorkaround = (imgProps2) =>\n      Object.keys(imgProps2).forEach(\n        (k) => imgProps2[k] === void 0 && delete imgProps2[k]\n      );\n    qwikBugWorkaround(imgProps);\n    if (isBuilderIoImage) {\n      const webpImage = updateQueryParam(image, \\\\\"format\\\\\", \\\\\"webp\\\\\");\n      const srcset = [\\\\\"100\\\\\", \\\\\"200\\\\\", \\\\\"400\\\\\", \\\\\"800\\\\\", \\\\\"1200\\\\\", \\\\\"1600\\\\\", \\\\\"2000\\\\\"]\n        .concat(props.srcsetSizes ? String(props.srcsetSizes).split(\\\\\" \\\\\") : [])\n        .map((size) => {\n          return updateQueryParam(webpImage, \\\\\"width\\\\\", size) + \\\\\" \\\\\" + size + \\\\\"w\\\\\";\n        })\n        .concat(tryAppendWidth(image))\n        .join(\\\\\",\\\\\");\n      imgProps.srcset = srcset;\n      jsx = jsx = [\n        h(\\\\\"picture\\\\\", {}, [\n          h(\\\\\"source\\\\\", { type: \\\\\"image/webp\\\\\", srcset }),\n          h(\\\\\"img\\\\\", imgProps, jsx),\n        ]),\n      ];\n    } else {\n      jsx = [h(\\\\\"img\\\\\", imgProps, jsx)];\n    }\n    if (\n      props.aspectRatio &&\n      !(props.fitContent && props.children && props.children.length)\n    ) {\n      const sizingDiv = h(\\\\\"div\\\\\", {\n        class: \\\\\"builder-image-sizer\\\\\",\n        style: \\`width:100%;padding-top:\\${\n          (props.aspectRatio || 1) * 100\n        }%;pointer-events:none;font-size:0\\`,\n      });\n      jsx.push(sizingDiv);\n    }\n  }\n  const children = props.children ? [jsx].concat(props.children) : [jsx];\n  return h(\n    props.href ? \\\\\"a\\\\\" : \\\\\"div\\\\\",\n    __passThroughProps__({ href: props.href, class: props.class }, props),\n    children\n  );\n  function updateQueryParam(uri = \\\\\"\\\\\", key, value) {\n    const re = new RegExp(\\\\\"([?&])\\\\\" + key + \\\\\"=.*?(&|$)\\\\\", \\\\\"i\\\\\");\n    const separator = uri.indexOf(\\\\\"?\\\\\") !== -1 ? \\\\\"&\\\\\" : \\\\\"?\\\\\";\n    if (uri.match(re)) {\n      return uri.replace(\n        re,\n        \\\\\"$1\\\\\" + key + \\\\\"=\\\\\" + encodeURIComponent(value) + \\\\\"$2\\\\\"\n      );\n    }\n    return uri + separator + key + \\\\\"=\\\\\" + encodeURIComponent(value);\n  }\n  function tryAppendWidth(url) {\n    const match = url.match(/[?&]width=(\\\\\\\\d+)/);\n    const width = match && match[1];\n    if (width) {\n      return [url + \\\\\" \\\\\" + width + \\\\\"w\\\\\"];\n    }\n    return [];\n  }\n};\nexport const __passThroughProps__ = function __passThroughProps__(\n  dstProps,\n  srcProps\n) {\n  for (const key in srcProps) {\n    if (\n      Object.prototype.hasOwnProperty.call(srcProps, key) &&\n      ((key.startsWith(\\\\\"on\\\\\") && key.endsWith(\\\\\"$\\\\\")) || key == \\\\\"style\\\\\")\n    ) {\n      dstProps[key] = srcProps[key];\n    }\n  }\n  return dstProps;\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > Image.slow 1`] = `\n{\n  \"high.js\": \"import { useLexicalScope } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  try {\n    return (state.myState = \\\\\"changed value\\\\\");\n  } catch (err) {\n    console.warn(\\\\\"Builder code error\\\\\", err);\n  }\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import {\n  Fragment,\n  componentQrl,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.cvk52jt{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;min-height:20px;min-width:20px;overflow:hidden}.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"myState\\\\\")) state.myState = \\\\\"initialValue\\\\\";\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    Fragment,\n    null,\n    h(Image, {\n      \\\\\"builder-id\\\\\": \\\\\"builder-fa4480d2f48a44a7a2e98cf07c54927b\\\\\",\n      image:\n        \\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160\\\\\",\n      backgroundSize: \\\\\"cover\\\\\",\n      backgroundPosition: \\\\\"center\\\\\",\n      srcset:\n        \\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=100 100w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=200 200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=400 400w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=800 800w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1200 1200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1600 1600w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=2000 2000w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160 1160w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=598 598w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=958 958w\\\\\",\n      sizes: \\\\\"(max-width: 638px) 94vw, (max-width: 998px) 96vw, 83vw\\\\\",\n      class: \\\\\"cvk52jt builder-block\\\\\",\n      onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"MyComponent_onClick_0\\\\\", [s, l]),\n      lazy: false,\n      fitContent: true,\n      aspectRatio: 1,\n      height: 1300,\n      width: 1300,\n    }),\n    h(\n      \\\\\"div\\\\\",\n      {\n        \\\\\"builder-id\\\\\": \\\\\"builder-1072afed47764e7cb37d088fd66f3a67\\\\\",\n        class: \\\\\"cjrqfb1 builder-block\\\\\",\n      },\n      \\\\\"Enter some text...\\\\\"\n    )\n  );\n};\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const Image = function Image(props) {\n  let jsx = props.children || [];\n  let image = props.image;\n  if (image) {\n    const isBuilderIoImage =\n      !!(image || \\\\\"\\\\\").match(/\\\\\\\\.builder\\\\\\\\.io/) && !props.noWebp;\n    const isPixel = props.builderBlock?.id.startsWith(\\\\\"builder-pixel-\\\\\");\n    const imgProps = {\n      src: props.image,\n      style:\n        \\`object-fit:\\${props.backgroundSize || \\\\\"cover\\\\\"};object-position:\\${\n          props.backgroundPosition || \\\\\"center\\\\\"\n        };\\` +\n        (props.aspectRatio\n          ? \\\\\"position:absolute;height:100%;width:100%;top:0;left:0\\\\\"\n          : \\\\\"\\\\\"),\n      sizes: props.sizes,\n      alt: props.altText,\n      role: !props.altText ? \\\\\"presentation\\\\\" : void 0,\n      loading: isPixel ? \\\\\"eager\\\\\" : \\\\\"lazy\\\\\",\n      srcset: void 0,\n    };\n    const qwikBugWorkaround = (imgProps2) =>\n      Object.keys(imgProps2).forEach(\n        (k) => imgProps2[k] === void 0 && delete imgProps2[k]\n      );\n    qwikBugWorkaround(imgProps);\n    if (isBuilderIoImage) {\n      const webpImage = updateQueryParam(image, \\\\\"format\\\\\", \\\\\"webp\\\\\");\n      const srcset = [\\\\\"100\\\\\", \\\\\"200\\\\\", \\\\\"400\\\\\", \\\\\"800\\\\\", \\\\\"1200\\\\\", \\\\\"1600\\\\\", \\\\\"2000\\\\\"]\n        .concat(props.srcsetSizes ? String(props.srcsetSizes).split(\\\\\" \\\\\") : [])\n        .map((size) => {\n          return updateQueryParam(webpImage, \\\\\"width\\\\\", size) + \\\\\" \\\\\" + size + \\\\\"w\\\\\";\n        })\n        .concat(tryAppendWidth(image))\n        .join(\\\\\",\\\\\");\n      imgProps.srcset = srcset;\n      jsx = jsx = [\n        h(\\\\\"picture\\\\\", {}, [\n          h(\\\\\"source\\\\\", { type: \\\\\"image/webp\\\\\", srcset }),\n          h(\\\\\"img\\\\\", imgProps, jsx),\n        ]),\n      ];\n    } else {\n      jsx = [h(\\\\\"img\\\\\", imgProps, jsx)];\n    }\n    if (\n      props.aspectRatio &&\n      !(props.fitContent && props.children && props.children.length)\n    ) {\n      const sizingDiv = h(\\\\\"div\\\\\", {\n        class: \\\\\"builder-image-sizer\\\\\",\n        style: \\`width:100%;padding-top:\\${\n          (props.aspectRatio || 1) * 100\n        }%;pointer-events:none;font-size:0\\`,\n      });\n      jsx.push(sizingDiv);\n    }\n  }\n  const children = props.children ? [jsx].concat(props.children) : [jsx];\n  return h(\n    props.href ? \\\\\"a\\\\\" : \\\\\"div\\\\\",\n    __passThroughProps__({ href: props.href, class: props.class }, props),\n    children\n  );\n  function updateQueryParam(uri = \\\\\"\\\\\", key, value) {\n    const re = new RegExp(\\\\\"([?&])\\\\\" + key + \\\\\"=.*?(&|$)\\\\\", \\\\\"i\\\\\");\n    const separator = uri.indexOf(\\\\\"?\\\\\") !== -1 ? \\\\\"&\\\\\" : \\\\\"?\\\\\";\n    if (uri.match(re)) {\n      return uri.replace(\n        re,\n        \\\\\"$1\\\\\" + key + \\\\\"=\\\\\" + encodeURIComponent(value) + \\\\\"$2\\\\\"\n      );\n    }\n    return uri + separator + key + \\\\\"=\\\\\" + encodeURIComponent(value);\n  }\n  function tryAppendWidth(url) {\n    const match = url.match(/[?&]width=(\\\\\\\\d+)/);\n    const width = match && match[1];\n    if (width) {\n      return [url + \\\\\" \\\\\" + width + \\\\\"w\\\\\"];\n    }\n    return [];\n  }\n};\nexport const __passThroughProps__ = function __passThroughProps__(\n  dstProps,\n  srcProps\n) {\n  for (const key in srcProps) {\n    if (\n      Object.prototype.hasOwnProperty.call(srcProps, key) &&\n      ((key.startsWith(\\\\\"on\\\\\") && key.endsWith(\\\\\"$\\\\\")) || key == \\\\\"style\\\\\")\n    ) {\n      dstProps[key] = srcProps[key];\n    }\n  }\n  return dstProps;\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > bindings 1`] = `\n{\n  \"high.cjs\": \"const __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"low.cjs\": \"const Fragment = require(\\\\\"@builder.io/qwik\\\\\").Fragment;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\nconst useStore = require(\\\\\"@builder.io/qwik\\\\\").useStore;\nconst useStylesScopedQrl = require(\\\\\"@builder.io/qwik\\\\\").useStylesScopedQrl;\n\nexports.MyComponentStyles = \\`.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}\\`;\nexports.MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"title\\\\\")) state.title = '\\\\\"Default title value\\\\\"';\n      if (!state.hasOwnProperty(\\\\\"hiliteTitle\\\\\")) state.hiliteTitle = true;\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    \\\\\"div\\\\\",\n    {\n      \\\\\"builder-id\\\\\": \\\\\"builder-192569f8d0a943398ec7ab9c327e104f\\\\\",\n      class: \\\\\"cjrqfb1 builder-block\\\\\",\n      style: {\n        backgroundColor: (() => {\n          try {\n            return state.hilitTitle ? \\\\\"red\\\\\" : \\\\\"gray\\\\\";\n          } catch (err) {\n            console.warn(\\\\\"Builder code error\\\\\", err);\n          }\n        })(),\n      },\n    },\n    \\\\\"Enter some text...\\\\\"\n  );\n};\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"med.cjs\": \"const componentQrl = require(\\\\\"@builder.io/qwik\\\\\").componentQrl;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\n\nexports.MyComponent = componentQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", []));\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n}\n`;\n\nexports[`qwik > button 1`] = `\n{\n  \"high.js\": \"export const MyComponent_onClick_0 = (event) => {\n  alert(\\\\\"WORKS!\\\\\");\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"import { CoreButton } from \\\\\"./med.js\\\\\";\n\nimport {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.c9nzze9{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;appearance:none;padding-top:15px;padding-bottom:15px;padding-left:25px;padding-right:25px;background-color:#3898EC;color:white;border-radius:4px;text-align:center;cursor:pointer}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(CoreButton, {\n    text: \\\\\"Click me!\\\\\",\n    class: \\\\\"c9nzze9\\\\\",\n    onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"MyComponent_onClick_0\\\\\", [s, l]),\n  });\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import { componentQrl, h, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const CoreButton = function CoreButton(props) {\n  const hasLink = !!props.link;\n  const hProps = {\n    dangerouslySetInnerHTML: props.text || \\\\\"\\\\\",\n    href: props.link,\n    target: props.openInNewTab ? \\\\\"_blank\\\\\" : \\\\\"_self\\\\\",\n    class: props.class,\n  };\n  return h(\n    hasLink ? \\\\\"a\\\\\" : props.tagName$ || \\\\\"span\\\\\",\n    __passThroughProps__(hProps, props)\n  );\n};\nexport const __passThroughProps__ = function __passThroughProps__(\n  dstProps,\n  srcProps\n) {\n  for (const key in srcProps) {\n    if (\n      Object.prototype.hasOwnProperty.call(srcProps, key) &&\n      ((key.startsWith(\\\\\"on\\\\\") && key.endsWith(\\\\\"$\\\\\")) || key == \\\\\"style\\\\\")\n    ) {\n      dstProps[key] = srcProps[key];\n    }\n  }\n  return dstProps;\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > component > bindings 1`] = `\n{\n  \"ROOT_COMPONENT_STATE\": {\n    \"deviceSize\": \"large\",\n    \"location\": {\n      \"path\": \"\",\n      \"query\": {},\n    },\n    \"something\": \"works!\",\n  },\n  \"w8x6w6\": {\n    \"deviceSize\": \"large\",\n    \"location\": {\n      \"path\": \"\",\n      \"query\": {},\n    },\n  },\n}\n`;\n\nexports[`qwik > component > bindings 2`] = `\n{\n  \"high.jsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.jsx\": \"import { ComponentD187055AF171488FAD843ACF045D6BF7 } from \\\\\"./med.js\\\\\";\n\nimport {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ComponentD187055AF171488FAD843ACF045D6BF7Styles = \\`.cj49hqu{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;height:auto;background-color:rgba(227, 227, 227, 1);border-radius:5px;border-style:solid;border-color:rgb(0, 0, 0);border-width:1px;padding-bottom:30px}.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}\\`;\nexport const ComponentD187055AF171488FAD843ACF045D6BF7OnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"title\\\\\")) state.title = \\\\\"default-title\\\\\";\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(\n    qrl(\\\\\"./low.js\\\\\", \\\\\"ComponentD187055AF171488FAD843ACF045D6BF7Styles\\\\\", [])\n  );\n\n  return (\n    <div\n      builder-id=\\\\\"builder-139a8479536b4c4f9c2738e724ed0952\\\\\"\n      class=\\\\\"cj49hqu builder-block\\\\\"\n    >\n      <div\n        builder-id=\\\\\"builder-2ae3b4104cc0478e85eff49694792d9c\\\\\"\n        class=\\\\\"cjrqfb1\\\\\"\n      >\n        Enter some text...\n      </div>\n    </div>\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\nexport const MyComponentStyles = \\`.c713ty2{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      /*\n       * Global objects available:\n       *\n       * state - builder state object - learn about state https://www.builder.io/c/docs/guides/state-and-actions\n       * context - builder context object - learn about state https://github.com/BuilderIO/builder/tree/main/packages/react#passing-data-and-functions-down\n       * fetch - Fetch API - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API'\n       * Builder - Builder object - useful values include: Builder.isServer, Builder.isBrowser, Builder.isPreviewing, Builder.isEditing\n       *\n       * visit https://www.builder.io/c/docs/guides/custom-code\n       * for more information on writing custom code\n       */\n      async function main() {\n        if (Builder.isServer) {\n          // Place any code here you want to only run on the server. Any\n          // data fetched on the server will be available to re-hydrate on the client\n          // if added to the state object\n        }\n\n        if (Builder.isBrowser) {\n          // Place code that you only want to run in the browser (client side only) here\n          // For example, anything that uses document/window access or DOM manipulation\n        }\n\n        state.something = \\\\\"works!\\\\\";\n      }\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <>\n      <div\n        builder-id=\\\\\"builder-50b2438beaa4498b985eb9d8a7659afa\\\\\"\n        builder-content-id=\\\\\"d187055af171488fad843acf045d6bf7\\\\\"\n        class=\\\\\"c713ty2 builder-block\\\\\"\n      >\n        <ComponentD187055AF171488FAD843ACF045D6BF7\n          builder-content-id=\\\\\"d187055af171488fad843acf045d6bf7\\\\\"\n          builder-id=\\\\\"builder-dbaw2p\\\\\"\n          title=\\\\\"First title from parent\\\\\"\n          serverStateId=\\\\\"w8x6w6\\\\\"\n        ></ComponentD187055AF171488FAD843ACF045D6BF7>\n      </div>\n      <div\n        builder-id=\\\\\"builder-33f427415bef4725b0c9fcd4fed325f2\\\\\"\n        builder-content-id=\\\\\"d187055af171488fad843acf045d6bf7\\\\\"\n        class=\\\\\"c713ty2 builder-block\\\\\"\n      >\n        <ComponentD187055AF171488FAD843ACF045D6BF7\n          builder-content-id=\\\\\"d187055af171488fad843acf045d6bf7\\\\\"\n          builder-id=\\\\\"builder-ahaljp\\\\\"\n          title=\\\\\"Second title from parent\\\\\"\n          serverStateId=\\\\\"w8x6w6\\\\\"\n        ></ComponentD187055AF171488FAD843ACF045D6BF7>\n      </div>\n    </>\n  );\n};\n\",\n  \"med.jsx\": \"import { componentQrl, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ComponentD187055AF171488FAD843ACF045D6BF7 = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"ComponentD187055AF171488FAD843ACF045D6BF7OnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\n\",\n}\n`;\n\nexports[`qwik > component > component inputs 1`] = `{}`;\n\nexports[`qwik > component > component inputs 2`] = `\n{\n  \"high.cjsx\": \"const useLexicalScope = require(\\\\\"@builder.io/qwik\\\\\").useLexicalScope;\n\nexports.MyComponent_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  try {\n    return (state.data = state.data + 1);\n  } catch (err) {\n    console.warn(\\\\\"Builder code error\\\\\", err);\n  }\n};\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"low.cjsx\": \"const __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"med.cjsx\": \"const Fragment = require(\\\\\"@builder.io/qwik\\\\\").Fragment;\nconst componentQrl = require(\\\\\"@builder.io/qwik\\\\\").componentQrl;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\nconst useStore = require(\\\\\"@builder.io/qwik\\\\\").useStore;\nconst useStylesScopedQrl = require(\\\\\"@builder.io/qwik\\\\\").useStylesScopedQrl;\n\nexports.MyComponentStyles = \\`.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}.c9nzze9{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;appearance:none;padding-top:15px;padding-bottom:15px;padding-left:25px;padding-right:25px;background-color:#3898EC;color:white;border-radius:4px;text-align:center;cursor:pointer}\\`;\nexports.MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"data\\\\\")) state.data = 0;\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <>\n      <div\n        builder-id=\\\\\"builder-71f26e4ffffe4e24940aa12e5250fa5f\\\\\"\n        class=\\\\\"cjrqfb1 builder-block\\\\\"\n      >\n        Enter some text...\n      </div>\n      <CoreButton\n        builder-id=\\\\\"builder-6f8fe6a1d2284f2890ae97657eed084a\\\\\"\n        text=\\\\\"Something else\\\\\"\n        class=\\\\\"c9nzze9 builder-block\\\\\"\n        onClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"MyComponent_onClick_0\\\\\", [s, l])}\n      ></CoreButton>\n    </>\n  );\n};\nexports.MyComponent = componentQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentOnMount\\\\\", []));\nconst CoreButton = (exports.CoreButton = function CoreButton(props) {\n  const hasLink = !!props.link;\n  const hProps = {\n    dangerouslySetInnerHTML: props.text || \\\\\"\\\\\",\n    href: props.link,\n    target: props.openInNewTab ? \\\\\"_blank\\\\\" : \\\\\"_self\\\\\",\n    class: props.class,\n  };\n  return h(\n    hasLink ? \\\\\"a\\\\\" : props.tagName$ || \\\\\"span\\\\\",\n    __passThroughProps__(hProps, props)\n  );\n});\nconst __passThroughProps__ = (exports.__passThroughProps__ =\n  function __passThroughProps__(dstProps, srcProps) {\n    for (const key in srcProps) {\n      if (\n        Object.prototype.hasOwnProperty.call(srcProps, key) &&\n        ((key.startsWith(\\\\\"on\\\\\") && key.endsWith(\\\\\"$\\\\\")) || key == \\\\\"style\\\\\")\n      ) {\n        dstProps[key] = srcProps[key];\n      }\n    }\n    return dstProps;\n  });\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n}\n`;\n\nexports[`qwik > for-loop.bindings 1`] = `\n{\n  \"high.cjs\": \"const __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"low.cjs\": \"const Component000013 = require(\\\\\"./med.js\\\\\").Component000013;\n\nconst Fragment = require(\\\\\"@builder.io/qwik\\\\\").Fragment;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\nconst useStore = require(\\\\\"@builder.io/qwik\\\\\").useStore;\nconst useStylesScopedQrl = require(\\\\\"@builder.io/qwik\\\\\").useStylesScopedQrl;\n\nexports.Component000012Styles = \\`.cv6ku2d{display:flex;flex-direction:row;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;padding-bottom:30px;flex-wrap:wrap;width:calc(100%+3vw);height:100%;min-height:100%;margin-left:-1.5vw;margin-right:-1.5vw}.c3j7e6c{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;width:33.3%}@media (max-width: 991px){.cv6ku2d{width:100%;margin-left:auto;margin-right:auto}}@media (max-width: 640px){.cv6ku2d{display:flex;flex-direction:column;align-items:stretch}}@media (max-width: 640px){.c3j7e6c{width:98%;margin-left:auto;margin-right:auto;margin-top:-10px}}\\`;\nexports.Component000012OnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"offset\\\\\")) state.offset = \\\\\"0\\\\\";\n      if (!state.hasOwnProperty(\\\\\"limit\\\\\")) state.limit = 3;\n      if (!state.hasOwnProperty(\\\\\"blogCategory\\\\\"))\n        state.blogCategory = {\n          \\\\\"@type\\\\\": \\\\\"@builder.io/core:Reference\\\\\",\n          id: \\\\\"\\\\\",\n          model: \\\\\"\\\\\",\n        };\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"Component000012Styles\\\\\", []));\n\n  return h(\n    \\\\\"div\\\\\",\n    {\n      \\\\\"builder-id\\\\\": \\\\\"builder-d2b6ee30433348ffa51a17334b8b6c73\\\\\",\n      class: \\\\\"cv6ku2d builder-block\\\\\",\n    },\n    (state.hits || []).map(\n      ((item) => {\n        const l = { ...this, hitsItem: item == null ? {} : item, item: item };\n        const state = __proxyMerge__(s, l);\n        return h(\n          \\\\\"div\\\\\",\n          {\n            \\\\\"builder-id\\\\\": \\\\\"builder-cc43bc95cde743a59b269cb0157b99cd\\\\\",\n            class: \\\\\"c3j7e6c\\\\\",\n          },\n          h(Component000013, {\n            \\\\\"builder-id\\\\\": \\\\\"builder-cx8eewmyu3\\\\\",\n            altText: \\\\\"\\\\\",\n            serverStateId: \\\\\"woo8b6\\\\\",\n            title: state.hitsItem.name,\n            linkUrl: state.hitsItem.url,\n            subCategory: state.hitsItem.blogSubcategory,\n            imageUrl: state.hitsItem.heroImage,\n            publicationDate: state.hitsItem.createdDate,\n            heroImageAltText: state.hitsItem.heroImageAltText,\n          })\n        );\n      }).bind(l)\n    )\n  );\n};\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"med.cjs\": \"const componentQrl = require(\\\\\"@builder.io/qwik\\\\\").componentQrl;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\n\nexports.Component000012 = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"Component000012OnMount\\\\\", [])\n);\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n}\n`;\n\nexports[`qwik > hello_world > stylesheet 1`] = `\n{\n  \"high.jsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.jsx\": \"import {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.crt27f8{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:123px;line-height:normal;height:auto;text-align:center;margin-left:auto;margin-right:auto}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <div class=\\\\\"crt27f8\\\\\">\n      <p>\n        Hello <span class=\\\\\"names\\\\\">World</span>\n      </p>\n    </div>\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.jsx\": \"import { componentQrl, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > jsx > Javascript Test > Advanced 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForShowComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <main>\n      {(state.names || []).map((person, i) => {\n        return (\n          <div>\n            {i}: {person}\n          </div>\n        );\n      })}\n      {(state.names || []).map((person) => {\n        return <span>{person}</span>;\n      })}\n      {(state.names || []).map((item) => {\n        return <br />;\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((_, ee) => {\n        return <pre>{ee}</pre>;\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((item) => {\n        return <p>{index}</p>;\n      })}\n      {(state.names || []).map((person, index) => {\n        return (\n          <span>\n            {person}\n            {index}\n          </span>\n        );\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((person, count) => {\n        return (\n          <span>\n            {person}\n            {count}\n          </span>\n        );\n      })}\n      {(state.names || []).map((person, i) => {\n        return (\n          <span>\n            {person}\n            {i}\n          </span>\n        );\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((person, index) => {\n        return (\n          <span>\n            {person}\n            {index}\n          </span>\n        );\n      })}\n    </main>\n  );\n});\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\nexport const underscore_fn_name = function underscore_fn_name(props, state) {\n  return \\\\\"bar\\\\\";\n};\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({ age: 1, name: \\\\\"Steve\\\\\", sports: [\\\\\"\\\\\"] });\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange$={$((event) => (state.name = myEvent.target.value))}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic 2`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForShowComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <div>\n      {(state.names || []).map((person) => {\n        return person === state.name ? (\n          <>\n            <input\n              value={state.name}\n              onChange$={$((event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              })}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n            or Liquid!\n          </>\n        ) : null;\n      })}\n    </div>\n  );\n});\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic Context 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useContext,\n  useContextProvider,\n  useStore,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport const onChange = function onChange(props, state, myService) {\n  const change = myService.method(\\\\\"change\\\\\");\n  console.log(change);\n};\nexport const MyBasicComponent = component$((props) => {\n  const myService = useContext(MyService);\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n  useContextProvider(Injector, createInjector());\n  useVisibleTask$(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n  useTask$(() => {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  });\n\n  return (\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange$={$((event) => state.onChange())} />\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicOnMountUpdateComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n  useVisibleTask$(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n  useTask$(() => {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n  });\n\n  return <div>Hello {state.name}</div>;\n});\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicOutputsComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n  useVisibleTask$(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n});\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicOutputsComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n  useVisibleTask$(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n});\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBooleanAttribute = component$((props) => {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          <Slot></Slot>\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle={true}></MyBooleanAttributeComponent>\n      <MyBooleanAttributeComponent toggle={true}></MyBooleanAttributeComponent>\n      <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n    </div>\n  );\n});\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\n\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\n\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nimport { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const log = function log(props, state, message) {\n  console.log(message);\n};\nexport const MyBasicChildComponent = component$((props) => {\n  const state = useStore({ dev: \\\\\"PatrickJS\\\\\", name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev}></MyBasicComponent>\n      <div>\n        <MyBasicOnMountUpdateComponent\n          hi={state.name}\n          bye={state.dev}\n        ></MyBasicOnMountUpdateComponent>\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange$={$((event) => (state.name = name))}\n          onEvent$={$((event) => state.log(\\\\\"Test\\\\\"))}\n        ></MyBasicOutputsComponent>\n      </div>\n    </div>\n  );\n});\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicFor 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <div>\n      {(state.names || []).map((person) => {\n        return (\n          <Fragment>\n            <input\n              value={state.name}\n              onChange$={$((event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              })}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n            or Liquid!\n          </Fragment>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicRef 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const onBlur = function onBlur(props, state, inputRef, inputNoArgRef) {\n  // Maintain focus\n  inputRef.value.focus();\n};\nexport const lowerCaseName = function lowerCaseName(\n  props,\n  state,\n  inputRef,\n  inputNoArgRef\n) {\n  return state.name.toLowerCase();\n};\nexport const MyBasicRefComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const inputRef = useSignal();\n  const inputNoArgRef = useSignal();\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            class=\\\\\"input-MyBasicRefComponent\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onBlur$={$((event) => state.onBlur())}\n            onChange$={$((event) => (state.name = event.target.value))}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n});\n\nexport default MyBasicRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { $, Fragment, component$, h, useSignal } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const handlerClick = function handlerClick(\n  props,\n  state,\n  holdValueRef,\n  event\n) {\n  event.preventDefault();\n  console.log(\\\\\"current value\\\\\", holdValueRef.value);\n  holdValueRef.value = holdValueRef.value + \\\\\"JS\\\\\";\n};\nexport const MyBasicRefAssignmentComponent = component$((props) => {\n  const holdValueRef = useSignal();\n  const state = {};\n\n  return (\n    <div>\n      <button onClick$={$((event) => await state.handlerClick(evt))}>\n        Click\n      </button>\n    </div>\n  );\n});\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\nexport const MyPreviousComponent = component$((props) => {\n  const prevCount = useSignal();\n  const state = useStore({ count: 0 });\n  useTask$(({ track }) => {\n    track(() => state.count);\n    prevCount.value = state.count;\n  });\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.value}\n      </h1>\n      <button onClick$={$((event) => (state.count += 1))}>Increment</button>\n    </div>\n  );\n});\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Button 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Button = component$((props) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Columns 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const getColumns = function getColumns(props, state) {\n  return props.columns || [];\n};\nexport const getGutterSize = function getGutterSize(props, state) {\n  return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n};\nexport const getWidth = function getWidth(props, state, index) {\n  const columns = getColumns(props, state);\n  return (columns[index] && columns[index].width) || 100 / columns.length;\n};\nexport const getColumnCssWidth = function getColumnCssWidth(\n  props,\n  state,\n  index\n) {\n  const columns = getColumns(props, state);\n  const gutterSize = getGutterSize(props, state);\n  const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n  return \\`calc(\\${getWidth(props, state, index)}% - \\${subtractWidth}px)\\`;\n};\nexport const Column = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = {};\n\n  return (\n    <div class=\\\\\"builder-columns div-Column\\\\\">\n      {(props.columns || []).map((column, index) => {\n        return (\n          <div class=\\\\\"builder-column div-Column-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default Column;\n\nexport const STYLES = \\`\n.div-Column {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div-Column {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div-Column {\n    flex-direction: row-reverse;\n  }\n}\n.div-Column-2 {\n  flex-grow: 1;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ContentSlotCode = component$((props) => {\n  return (\n    <div>\n      <Slot name={props.slotTesting}></Slot>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot></Slot>\n      </div>\n    </div>\n  );\n});\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import {\n  $,\n  Fragment,\n  Slot,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const show = function show(props, state, cls) {\n  props.slotContent ? 1 : \\\\\"\\\\\";\n};\nexport const ContentSlotJsxCode = component$((props) => {\n  const cls = useComputed$(() => {\n    return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n  });\n  const state = useStore({ name: \\\\\"king\\\\\", showContent: false });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <div\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick$={$((event) => show(props, state, cls))}\n          class={cls.value}\n        >\n          {state.showContent && props.slotContent ? (\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          ) : null}\n          <div>\n            <hr />\n          </div>\n          <div>\n            <Slot></Slot>\n          </div>\n        </div>\n      ) : null}\n    </>\n  );\n});\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > CustomCode 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const findAndRunScripts = function findAndRunScripts(\n  props,\n  state,\n  elem\n) {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n};\nexport const CustomCode = component$((props) => {\n  const elem = useSignal();\n  const state = useStore({ scriptsInserted: [], scriptsRun: [] });\n  useVisibleTask$(() => {\n    findAndRunScripts(props, state, elem);\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={props.code}\n    ></div>\n  );\n});\n\nexport default CustomCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Embed 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const findAndRunScripts = function findAndRunScripts(\n  props,\n  state,\n  elem\n) {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n};\nexport const CustomCode = component$((props) => {\n  const elem = useSignal();\n  const state = useStore({ scriptsInserted: [], scriptsRun: [] });\n  useVisibleTask$(() => {\n    findAndRunScripts(props, state, elem);\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={props.code}\n    ></div>\n  );\n});\n\nexport default CustomCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Form 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport const onSubmit = function onSubmit(\n  props,\n  state,\n  submissionState,\n  formRef,\n  event\n) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n  if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs = Array.from(\n      event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n    )\n      .filter((el) => !!el.name)\n      .map((el) => {\n        let value;\n        const key = el.name;\n\n        if (el instanceof HTMLInputElement) {\n          if (el.type === \\\\\"radio\\\\\") {\n            if (el.checked) {\n              value = el.name;\n              return {\n                key,\n                value,\n              };\n            }\n          } else if (el.type === \\\\\"checkbox\\\\\") {\n            value = el.checked;\n          } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n            const num = el.valueAsNumber;\n\n            if (!isNaN(num)) {\n              value = num;\n            }\n          } else if (el.type === \\\\\"file\\\\\") {\n            // TODO: one vs multiple files\n            value = el.files;\n          } else {\n            value = el.value;\n          }\n        } else {\n          value = el.value;\n        }\n\n        return {\n          key,\n          value,\n        };\n      });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n      contentType = \\\\\"multipart/form-data\\\\\";\n    }\n\n    Array.from(formPairs).forEach(({ value }) => {\n      if (\n        value instanceof File ||\n        (Array.isArray(value) && value[0] instanceof File) ||\n        value instanceof FileList\n      ) {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== \\\\\"application/json\\\\\") {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({ value, key }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n      if (\n        /* Zapier doesn't allow content-type header to be sent from browsers */\n        !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n      ) {\n        headers[\\\\\"content-type\\\\\"] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n      detail: {\n        body,\n      },\n    });\n\n    if (formRef.value) {\n      formRef.value.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    state.formState = \\\\\"sending\\\\\";\n    const formUrl = \\`\\${\n      builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n    }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n      props.sendSubmissionsToEmail || \\\\\"\\\\\"\n    )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n    fetch(\n      props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n      /* TODO: throw error if no action URL */\n      {\n        body,\n        headers,\n        method: props.method || \\\\\"post\\\\\",\n      }\n    ).then(\n      async (res) => {\n        let body;\n        const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n        if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n          body = await res.json();\n        } else {\n          body = await res.text();\n        }\n\n        if (!res.ok && props.errorMessagePath) {\n          /* TODO: allow supplying an error formatter function */\n          let message = get(body, props.errorMessagePath);\n\n          if (message) {\n            if (typeof message !== \\\\\"string\\\\\") {\n              /* TODO: ideally convert json to yaml so it woul dbe like\n             error: - email has been taken */\n              message = JSON.stringify(message);\n            }\n\n            state.formErrorMessage = message;\n          }\n        }\n\n        state.responseData = body;\n        state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n        if (res.ok) {\n          const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n            detail: {\n              res,\n              body,\n            },\n          });\n\n          if (formRef.value) {\n            formRef.value.dispatchEvent(submitSuccessEvent);\n\n            if (submitSuccessEvent.defaultPrevented) {\n              return;\n            }\n            /* TODO: option to turn this on/off? */\n\n            if (props.resetFormOnSubmit !== false) {\n              formRef.value.reset();\n            }\n          }\n          /* TODO: client side route event first that can be preventDefaulted */\n\n          if (props.successUrl) {\n            if (formRef.value) {\n              const event = new CustomEvent(\\\\\"route\\\\\", {\n                detail: {\n                  url: props.successUrl,\n                },\n              });\n              formRef.value.dispatchEvent(event);\n\n              if (!event.defaultPrevented) {\n                location.href = props.successUrl;\n              }\n            } else {\n              location.href = props.successUrl;\n            }\n          }\n        }\n      },\n      (err) => {\n        const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n          detail: {\n            error: err,\n          },\n        });\n\n        if (formRef.value) {\n          formRef.value.dispatchEvent(submitErrorEvent);\n\n          if (submitErrorEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.responseData = err;\n        state.formState = \\\\\"error\\\\\";\n      }\n    );\n  }\n};\nexport const FormComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const submissionState = useComputed$(() => {\n    return (Builder.isEditing && props.previewState) || state.formState;\n  });\n  const formRef = useSignal();\n  const state = useStore({\n    formErrorMessage: \\\\\"\\\\\",\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n  });\n\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={(() => {\n        !props.sendWithJs && props.action;\n      })()}\n      method={props.method}\n      name={props.name}\n      onSubmit$={$((event) =>\n        onSubmit(props, state, submissionState, formRef, event)\n      )}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children\n        ? (props.builderBlock?.children || []).map((block, index) => {\n            return (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              ></BuilderBlockComponent>\n            );\n          })\n        : null}\n      {submissionState.value === \\\\\"error\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          blocks={props.errorMessage}\n        ></BuilderBlocks>\n      ) : null}\n      {submissionState.value === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        ></BuilderBlocks>\n      ) : null}\n      {submissionState.value === \\\\\"error\\\\\" && state.responseData ? (\n        <pre class=\\\\\"builder-form-error-text pre-FormComponent\\\\\">\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      ) : null}\n      {submissionState.value === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        ></BuilderBlocks>\n      ) : null}\n    </form>\n  );\n});\n\nexport default FormComponent;\n\nexport const STYLES = \\`\n.pre-FormComponent {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Image 1`] = `\n\"import {\n  $,\n  Fragment,\n  Slot,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const setLoaded = function setLoaded(props, state, pictureRef) {\n  state.imageLoaded = true;\n};\nexport const useLazyLoading = function useLazyLoading(\n  props,\n  state,\n  pictureRef\n) {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && state.isBrowser();\n};\nexport const isBrowser = function isBrowser(props, state, pictureRef) {\n  return (\n    typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n  );\n};\nexport const Image = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const pictureRef = useSignal();\n  const state = useStore({\n    imageLoaded: false,\n    load: false,\n    scrollListener: null,\n  });\n  useVisibleTask$(() => {\n    if (useLazyLoading(props, state, pictureRef)) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.value) {\n          const rect = pictureRef.value.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading(props, state, pictureRef) || state.load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            class={\n              \\\\\"builder-image\\\\\" +\n              (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n              \\\\\" img-Image\\\\\"\n            }\n            src={props.image}\n            onLoad$={$((event) => setLoaded(props, state, pictureRef))}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      <Slot></Slot>\n    </div>\n  );\n});\n\nexport default Image;\n\nexport const STYLES = \\`\n.img-Image {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Image State 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ImgStateComponent = component$((props) => {\n  const state = useStore({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {(state.images || []).map((item, itemIndex) => {\n        return (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Img 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport const ImgComponent = component$((props) => {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n});\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Input 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport const FormInputComponent = component$((props) => {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange$={$((event) => props.onChange?.(event.target.value))}\n    />\n  );\n});\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nimport { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const handleChange = function handleChange(props, state, value) {\n  console.log(value);\n};\nexport const Stepper = component$((props) => {\n  const state = {};\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange$={$((event) => handleChange(props, state, value))}\n    ></FormInputComponent>\n  );\n});\n\nexport default Stepper;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > NestedStore 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const NestedStore = component$((props) => {\n  const state = useStore({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n});\n\nexport default NestedStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > RawText 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const RawText = component$((props) => {\n  return (\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={props.text || \\\\\"\\\\\"}\n    ></span>\n  );\n});\n\nexport default RawText;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Section 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SectionComponent = component$((props) => {\n  return (\n    <section\n      {...props.attributes}\n      style={(() => {\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined;\n      })()}\n    >\n      <Slot></Slot>\n    </section>\n  );\n});\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Section 2`] = `\n\"import { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SectionStateComponent = component$((props) => {\n  const state = useStore({ items: [42], max: 42 });\n\n  return (\n    <>\n      {state.max\n        ? (state.items || []).map((item) => {\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  maxWidth: item + state.max,\n                }}\n              >\n                <Slot></Slot>\n              </section>\n            );\n          })\n        : null}\n    </>\n  );\n});\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Select 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport const SelectComponent = component$((props) => {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {(props.options || []).map((option, index) => {\n        return (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        );\n      })}\n    </select>\n  );\n});\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SlotCode = component$((props) => {\n  return (\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SlotCode = component$((props) => {\n  return (\n    <div>\n      <ContentSlotCode>\n        <Slot\n          testing={(() => {\n            <div>Hello</div>;\n          })()}\n        ></Slot>\n      </ContentSlotCode>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SlotCode = component$((props) => {\n  return (\n    <div>\n      <ContentSlotCode\n        slotTesting={(() => {\n          <div>Hello</div>;\n        })()}\n      ></ContentSlotCode>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SlotCode = component$((props) => {\n  return (\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n      <Slot name=\\\\\"top\\\\\"></Slot>\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Stamped.io 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport const kebabCaseValue = function kebabCaseValue(props, state) {\n  return kebabCase(\\\\\"testThat\\\\\");\n};\nexport const snakeCaseValue = function snakeCaseValue(props, state) {\n  return snakeCase(\\\\\"testThis\\\\\");\n};\nexport const SmileReviews = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({\n    name: \\\\\"test\\\\\",\n    reviews: [],\n    showReviewPrompt: false,\n  });\n  useVisibleTask$(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick$={$((event) => (state.showReviewPrompt = true))}>\n        Write a review\n      </button>\n      {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input-SmileReviews\\\\\" />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            class=\\\\\"textarea-SmileReviews\\\\\"\n          ></textarea>\n          <button\n            preventdefault:click\n            class=\\\\\"button-SmileReviews\\\\\"\n            onClick$={$((event) => {\n              state.showReviewPrompt = false;\n            })}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {(state.reviews || []).map((review, index) => {\n        return (\n          <div class=\\\\\"review-SmileReviews\\\\\" key={review.id}>\n            <img class=\\\\\"img-SmileReviews\\\\\" src={review.avatar} />\n            <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default SmileReviews;\n\nexport const STYLES = \\`\n.input-SmileReviews {\n  display: block;\n}\n.textarea-SmileReviews {\n  display: block;\n}\n.button-SmileReviews {\n  display: block;\n}\n.review-SmileReviews {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img-SmileReviews {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > StoreComment 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const bar = function bar(props, state) {};\nexport const StringLiteralStore = component$((props) => {\n  const state = useStore({ foo: true });\n\n  return <Fragment>{state.foo}</Fragment>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, errors) {\n  return errors;\n};\nexport const MyComponent = component$((props) => {\n  const state = useStore({ errors: {} });\n\n  return <Fragment>{foo(props, state, state.errors)}</Fragment>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const bar = function bar(props, state) {\n  return state.foo;\n};\nexport const MyComponent = component$((props) => {\n  const state = useStore({ foo: false });\n\n  return <Fragment>{bar(props, state)}</Fragment>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Submit 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SubmitButton = component$((props) => {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n});\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Text 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport const Text = component$((props) => {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    ></div>\n  );\n});\n\nexport default Text;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Textarea 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Textarea = component$((props) => {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    ></textarea>\n  );\n});\n\nexport default Textarea;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const _do = function _do(props, state, id) {\n  state._active = !!id;\n\n  if (props.onChange) {\n    props.onChange(state._active);\n  }\n};\nexport const UseValueAndFnFromStore = component$((props) => {\n  const state = useStore({ _active: false, _id: \\\\\"abc\\\\\" });\n  useTask$(({ track }) => {\n    if (_do.bind(null, props, state)) {\n      _do(props, state, state._id);\n    }\n  });\n\n  return <div>Test</div>;\n});\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > Video 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Video = component$((props) => {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    ></video>\n  );\n});\n\nexport default Video;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const setName = function setName(props, state, value) {\n  state.name = value;\n};\nexport const updateNameWithArrowFn = function updateNameWithArrowFn(\n  props,\n  state,\n  value\n) {\n  state.name = value;\n};\nexport const MyComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"steve\\\\\" });\n\n  return <div>Hello {state.name}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicForFragment = component$((props) => {\n  const state = useStore({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {([\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] || []).map((option) => {\n        return (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        );\n      })}\n      {([\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] || []).map((option) => {\n        return (\n          <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        );\n      })}\n      <select>\n        {([\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"] || []).map((option) => {\n          return (\n            <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          );\n        })}\n      </select>\n    </div>\n  );\n});\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForNoTagRefComponent = component$((props) => {\n  const TagNameGetter = useComputed$(() => {\n    return \\\\\"span\\\\\";\n  });\n  const state = useStore({ TagName: \\\\\"div\\\\\", name: \\\\\"VincentW\\\\\", tag: \\\\\"span\\\\\" });\n\n  return (\n    <TagNameGetter.value>\n      Hello <state.tag>{state.name}</state.tag>\n      {(props.actions || []).map((action) => {\n        return (\n          <state.TagName>\n            <action.icon></action.icon>\n            <span>{action.text}</span>\n          </state.TagName>\n        );\n      })}\n    </TagNameGetter.value>\n  );\n});\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForwardRefComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-MyBasicForwardRefComponent\\\\\"\n        ref={props.inputRef}\n        value={state.name}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n    </div>\n  );\n});\n\nexport default MyBasicForwardRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicForwardRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForwardRefComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-MyBasicForwardRefComponent\\\\\"\n        ref={props.inputRef}\n        value={state.name}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n    </div>\n  );\n});\n\nexport default MyBasicForwardRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicForwardRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicRefAttributePassingComponent = component$((props) => {\n  const buttonRef = useSignal();\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n});\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          import { Fragment, component$, h, useSignal } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicRefAttributePassingCustomRefComponent = component$(\n  (props) => {\n    const buttonRef = useSignal();\n\n    return (\n      <div>\n        <button ref={buttonRef}>Attribute Passing</button>\n      </div>\n    );\n  }\n);\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.jsx\\\\\";\n\nimport { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div class=\\\\\"test2 test div-MyBasicComponent\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > class + css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > className + css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > className 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ClassNameCode = component$((props) => {\n  const state = useStore({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>\n  );\n});\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > classState 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <div\n      class={state.classState + \\\\\" div-MyBasicComponent\\\\\"}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > classnameProps 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return (\n    <div class={props.className}>\n      <Slot></Slot>\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > complexMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ComplexMetaRaw = component$((props) => {\n  return <div></div>;\n});\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > contentState 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useContextProvider,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport const RenderContent = component$((props) => {\n  useContextProvider(\n    BuilderContext,\n    useStore({\n      content: props.content,\n      registeredComponents: props.customComponents,\n    })\n  );\n\n  return <div>setting context</div>;\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > defaultProps 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Button = component$((props) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick$={$((event) => props.onClick())}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Button = component$((props) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick$={$((event) => props.onClick(event))}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\nexport const ComponentWithTypes = component$((props) => {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n});\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const EventInputAndChange = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-EventInputAndChange\\\\\"\n        value={state.name}\n        onInput$={$((event) => (state.name = event.target.value))}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default EventInputAndChange;\n\nexport const STYLES = \\`\n.input-EventInputAndChange {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > eventProps 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const handleClick = function handleClick(props, state) {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass(\\\\\"test\\\\\");\n  }\n};\nexport const EventPropsComponent = component$((props) => {\n  const state = {};\n\n  return (\n    <button onClick$={$((event) => handleClick(props, state))}>Test</button>\n  );\n});\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > expressionState 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > figmaMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const FigmaButton = component$((props) => {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n});\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > functionProps 1`] = `\n\"SyntaxError: Identifier expected. (5:98)\n  3 | export const MyBasicComponent=component$((props)=>{\n  4 |\n> 5 | return (<p f={(()=>{() => x})()} f1={(()=>{x => x})()} f2={(()=>{x => {}})()} f3={(()=>{function () {\n    |                                                                                                  ^\n  6 |   return x;\n  7 | }})()} f4={(()=>{function (x) {\n  8 |   return x;\n========================================================================\nimport{Fragment,component$,h}from\\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent=component$((props)=>{\n\nreturn (<p f={(()=>{() => x})()} f1={(()=>{x => x})()} f2={(()=>{x => {}})()} f3={(()=>{function () {\n  return x;\n}})()} f4={(()=>{function (x) {\n  return x;\n}})()} f5={(()=>{function (x) {\n  return;\n}})()} f6={(()=>{function () {\n  return;\n}})()} f7={(()=>{(a, b, c) => a + b + c})()}></p>)});\n\nexport default MyBasicComponent;\n\n========================================================================\"\n`;\n\nexports[`qwik > jsx > Javascript Test > getterState 1`] = `\n\"import { Fragment, component$, h, useComputed$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const baz = function baz(props, state, foo2, bar, i) {\n  return i + foo2.value.length;\n};\nexport const Button = component$((props) => {\n  const foo2 = useComputed$(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n  const bar = useComputed$(() => {\n    return \\\\\"bar\\\\\";\n  });\n  const state = {};\n\n  return (\n    <div>\n      <p>{foo2.value}</p>\n      <p>{bar.value}</p>\n      <p>{baz(props, state, foo2, bar, 1)}</p>\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > import types 1`] = `\n\"import RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const getRenderContentProps = function getRenderContentProps(\n  props,\n  state,\n  block,\n  index\n) {\n  return {\n    block: block,\n    index: index,\n  };\n};\nexport const RenderContent = component$((props) => {\n  const state = {};\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(\n        props,\n        state,\n        props.renderContentProps.block,\n        0\n      )}\n    ></RenderBlock>\n  );\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > layerName 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyLayerNameComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <section>\n      <div class=\\\\\"layer-name-MyLayerNameComponent\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n});\n\nexport default MyLayerNameComponent;\n\nexport const STYLES = \\`\n.layer-name-MyLayerNameComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MultipleOnUpdate = component$((props) => {\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MultipleOnUpdateWithDeps = component$((props) => {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  });\n  useTask$(({ track }) => {\n    track(() => state.c);\n    track(() => state.d);\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  });\n\n  return <div></div>;\n});\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  const state = useStore({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > nestedShow 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const NestedShow = component$((props) => {\n  return (\n    <>\n      {props.conditionA ? (\n        !props.conditionB ? (\n          <div>if condition A and condition B</div>\n        ) : (\n          <div>else-condition-B</div>\n        )\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n});\n\nexport default NestedShow;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const NestedStyles = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return <div class=\\\\\"div-NestedStyles\\\\\">Hello world</div>;\n});\n\nexport default NestedStyles;\n\nexport const STYLES = \\`\n.div-NestedStyles {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div-NestedStyles {\n    display: block;\n  }\n}\n.div-NestedStyles:hover {\n  display: flex;\n}\n.div-NestedStyles:active {\n  display: inline;\n}\n.div-NestedStyles .nested-selector {\n  display: grid;\n}\n.div-NestedStyles .nested-selector:hover {\n  display: block;\n}\n.div-NestedStyles.nested-selector:active {\n  display: inline-block;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyNormalizedLayerNamesComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <div class=\\\\\"css-0-MyNormalizedLayerNamesComponent\\\\\">Single Number</div>\n      <div class=\\\\\"css-123-MyNormalizedLayerNamesComponent\\\\\">\n        Multiple Numbers\n      </div>\n      <div class=\\\\\"name-123-MyNormalizedLayerNamesComponent\\\\\">\n        Chars with numbers at end\n      </div>\n      <div class=\\\\\"name-MyNormalizedLayerNamesComponent\\\\\">\n        Chars with numbers at start\n      </div>\n      <div class=\\\\\"name-789-MyNormalizedLayerNamesComponent\\\\\">\n        Numnbers separated by dash\n      </div>\n      <div>Emoji</div>\n      <div data-name=\\\\\"1\\\\\" class=\\\\\"div-MyNormalizedLayerNamesComponent\\\\\">\n        Number\n      </div>\n    </section>\n  );\n});\n\nexport default MyNormalizedLayerNamesComponent;\n\nexport const STYLES = \\`\n.css-0-MyNormalizedLayerNamesComponent {\n  margin: 10px;\n}\n.css-123-MyNormalizedLayerNamesComponent {\n  padding: 10px;\n}\n.name-123-MyNormalizedLayerNamesComponent {\n  border: 1px solid;\n}\n.name-MyNormalizedLayerNamesComponent {\n  color: red;\n}\n.name-789-MyNormalizedLayerNamesComponent {\n  background: blue;\n}\n.div-MyNormalizedLayerNamesComponent {\n  background: blue;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onEvent 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useOn,\n  useSignal,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, elem, event) {\n  console.log(\\\\\"test2\\\\\");\n};\nexport const Embed = component$((props) => {\n  const elem = useSignal();\n  const state = {};\n  useOn(\n    \\\\\"initEditingBldr\\\\\",\n    $((event, element) => {\n      console.log(\\\\\"test\\\\\");\n      foo(props, state, elem, event);\n    }) as Parameters<typeof useOn>[1]\n  );\n  useVisibleTask$(() => {\n    elem.value.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n});\n\nexport default Embed;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnInit = component$((props) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n  useTask$(() => {\n    console.log(\\\\\"onInit\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnInit;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onInit 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\nexport const OnInit = component$((props) => {\n  const state = useStore({ name: \\\\\"\\\\\" });\n  useTask$(() => {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  });\n\n  return <div>Default name defined by parent {state.name}</div>;\n});\n\nexport default OnInit;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnInitPlain = component$((props) => {\n  useTask$(() => {\n    console.log(\\\\\"onInit\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onMount 1`] = `\n\"import { Fragment, component$, h, useVisibleTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Comp = component$((props) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default Comp;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Comp = component$((props) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  useVisibleTask$(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  useTask$(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default Comp;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onUpdate 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnUpdate = component$((props) => {\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnUpdateWithDeps = component$((props) => {\n  const state = useStore({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    track(() => props.size);\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const b = 3;\nexport const foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\nexport const MyBasicComponent = component$((props) => {\n  return <div></div>;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      <Slot></Slot>\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > propsInterface 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > propsType 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, params) {};\nexport const bar = function bar(props, state) {};\nexport const zoo = function zoo(props, state) {\n  const params = {\n    cb: state.bar,\n  };\n};\nexport const OnUpdate = component$((props) => {\n  const state = {};\n  useTask$(({ track }) => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\n\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\n\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\n\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\n\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\n\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\n\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\n\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\n\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\n\nimport BlockStyles from \\\\\"./block-styles.jsx\\\\\";\n\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\n\nimport RenderComponent from \\\\\"./render-component.jsx\\\\\";\n\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.jsx\\\\\";\n\nimport { Fragment, component$, h, useComputed$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const RenderBlock = component$((props) => {\n  const component = useComputed$(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n  const tag = useComputed$(() => {\n    return getBlockTag(useBlock.value);\n  });\n  const useBlock = useComputed$(() => {\n    return repeatItemData.value\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n  const actions = useComputed$(() => {\n    return getBlockActions({\n      block: useBlock.value,\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n  const attributes = useComputed$(() => {\n    const blockProperties = getBlockProperties(useBlock.value);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock.value,\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n  const shouldWrap = useComputed$(() => {\n    return !component.value?.noWrap;\n  });\n  const renderComponentProps = useComputed$(() => {\n    return {\n      blockChildren: useChildren.value,\n      componentRef: component.value?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock.value),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap.value\n          ? {}\n          : {\n              attributes: { ...attributes.value, ...actions.value },\n            }),\n        customBreakpoints: childrenContext.value?.content?.meta?.breakpoints,\n      },\n      context: childrenContext.value,\n    };\n  });\n  const useChildren = useComputed$(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock.value.children ?? [];\n  });\n  const childrenWithoutParentComponent = useComputed$(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component.value?.component && !repeatItemData.value;\n    return shouldRenderChildrenOutsideRef ? useChildren.value : [];\n  });\n  const repeatItemData = useComputed$(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n  const inheritedTextStyles = useComputed$(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock.value,\n      context: props.context,\n      blockStyles: attributes.value.style,\n    });\n    return extractTextStyles(styles);\n  });\n  const childrenContext = useComputed$(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles.value,\n    };\n  });\n  const renderComponentTag = useComputed$(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n  const state = {};\n\n  return (\n    <>\n      {shouldWrap.value ? (\n        <>\n          {isEmptyHtmlElement(tag.value) ? (\n            <tag.value {...attributes.value} {...actions.value}></tag.value>\n          ) : null}\n          {!isEmptyHtmlElement(tag.value) && repeatItemData.value\n            ? (repeatItemData.value || []).map((data, index) => {\n                return (\n                  <RenderRepeatedBlock\n                    key={index}\n                    repeatContext={data.context}\n                    block={data.block}\n                  ></RenderRepeatedBlock>\n                );\n              })\n            : null}\n          {!isEmptyHtmlElement(tag.value) && !repeatItemData.value ? (\n            <tag.value {...attributes.value} {...actions.value}>\n              <renderComponentTag.value\n                {...renderComponentProps.value}\n              ></renderComponentTag.value>\n              {(childrenWithoutParentComponent.value || []).map((child) => {\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext.value}\n                  ></RenderBlock>\n                );\n              })}\n              {(childrenWithoutParentComponent.value || []).map((child) => {\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext.value}\n                  ></BlockStyles>\n                );\n              })}\n            </tag.value>\n          ) : null}\n        </>\n      ) : (\n        <renderComponentTag.value\n          {...renderComponentProps.value}\n        ></renderComponentTag.value>\n      )}\n    </>\n  );\n});\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > renderContentExample 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useContextProvider,\n  useStore,\n  useStylesScoped$,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.jsx\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\nexport const RenderContent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  useContextProvider(\n    BuilderContext,\n    useStore({\n      content: (() => {\n        return 3;\n      })(),\n      registeredComponents: (() => {\n        return 4;\n      })(),\n    })\n  );\n  useVisibleTask$(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n  useTask$(({ track }) => {\n    track(() => props.content);\n    dispatchNewContentToVisualEditor(props.content);\n  });\n\n  return (\n    <div\n      class=\\\\\"div-RenderContent\\\\\"\n      onClick$={$((event) => trackClick(props.content.id))}\n    >\n      <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n    </div>\n  );\n});\n\nexport default RenderContent;\n\nexport const STYLES = \\`\n.div-RenderContent {\n  display: flex;\n  flex-direction: columns;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Button = component$((props) => {\n  return (\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > rootShow 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const RenderStyles = component$((props) => {\n  return <>{props.foo === \\\\\"bar\\\\\" ? <div>Bar</div> : <div>Foo</div>}</>;\n});\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n      ) : null}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  return (\n    <div>\n      {props.name}\n      <Slot></Slot>\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > setState 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const someFn = function someFn(props, state) {\n  state.n[0] = \\\\\"123\\\\\";\n};\nexport const SetState = component$((props) => {\n  const state = useStore({ n: [\\\\\"123\\\\\"] });\n\n  return (\n    <div>\n      <button onClick$={$((event) => someFn(props, state))}>Click me</button>\n    </div>\n  );\n});\n\nexport default SetState;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > showExpressions 1`] = `\n\"SyntaxError: Expression expected. (5:115)\n  3 | export const ShowWithOtherValues=component$((props)=>{\n  4 |\n> 5 | return (<div>{props.conditionA?<>Content0</>:<>ContentA</>}{props.conditionA?<>ContentA</>:null}{props.conditionA?:<>ContentA</>}{props.conditionA?<>ContentB</>:<>{undefined}</>}{props.conditionA?<>{undefined}</>:<>ContentB</>}{props.conditionA?<>ContentC</>:null}{props.conditionA?:<>ContentC</>}{props.conditionA?<>ContentD</>:null}{props.conditionA?:<>ContentD</>}{props.conditionA?<>ContentE</>:<>hello</>}{props.conditionA?<>hello</>:<>ContentE</>}{props.conditionA?<>ContentF</>:<>123</>}{props.conditionA?<>123</>:<>ContentF</>}{props.conditionA === 'Default'?<>4mb</>:props.conditionB === 'Complete'?<>20mb</>:<>9mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<>20mb</>:<>9mb</>:<>4mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<div>complete</div>:<>9mb</>:props.conditionC === 'Complete'?<>dff</>:<div>complete else</div>}</div>)});\n    |                                                                                                                   ^\n  6 |\n  7 | export default ShowWithOtherValues;\n========================================================================\nimport{Fragment,component$,h}from\\\\\"@builder.io/qwik\\\\\";\n\nexport const ShowWithOtherValues=component$((props)=>{\n\nreturn (<div>{props.conditionA?<>Content0</>:<>ContentA</>}{props.conditionA?<>ContentA</>:null}{props.conditionA?:<>ContentA</>}{props.conditionA?<>ContentB</>:<>{undefined}</>}{props.conditionA?<>{undefined}</>:<>ContentB</>}{props.conditionA?<>ContentC</>:null}{props.conditionA?:<>ContentC</>}{props.conditionA?<>ContentD</>:null}{props.conditionA?:<>ContentD</>}{props.conditionA?<>ContentE</>:<>hello</>}{props.conditionA?<>hello</>:<>ContentE</>}{props.conditionA?<>ContentF</>:<>123</>}{props.conditionA?<>123</>:<>ContentF</>}{props.conditionA === 'Default'?<>4mb</>:props.conditionB === 'Complete'?<>20mb</>:<>9mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<>20mb</>:<>9mb</>:<>4mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<div>complete</div>:<>9mb</>:props.conditionC === 'Complete'?<>dff</>:<div>complete else</div>}</div>)});\n\nexport default ShowWithOtherValues;\n\n========================================================================\"\n`;\n\nexports[`qwik > jsx > Javascript Test > showWithFor 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const NestedShow = component$((props) => {\n  return (\n    <>\n      {props.conditionA ? (\n        (props.items || []).map((item, idx) => {\n          return <div key={idx}>{item}</div>;\n        })\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n});\n\nexport default NestedShow;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ShowWithOtherValues = component$((props) => {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n});\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ShowRootText = component$((props) => {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n});\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStylesScoped$,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  useTask$(({ track }) => {\n    track(() => props.id);\n    track(() => props.foo.value.bar.baz);\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  });\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return <input {...attrs} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return <input {...props.nested} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > spreadProps 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  return <input {...props} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > store-async-function 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const arrowFunction = async function arrowFunction() {\n  return Promise.resolve();\n};\nexport const namedFunction = async function namedFunction() {\n  return Promise.resolve();\n};\nexport const fetchUsers = async function fetchUsers() {\n  return Promise.resolve();\n};\nexport const StringLiteralStore = component$((props) => {\n  const state = {};\n\n  return <div></div>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const StringLiteralStore = component$((props) => {\n  const state = useStore({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div\n      class=\\\\\"builder-column div-MyComponent\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n    ></div>\n  );\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\n.div-MyComponent {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const StylePropClassAndCss = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div\n      style={props.attributes.style}\n      class={props.attributes.class + \\\\\" div-StylePropClassAndCss\\\\\"}\n    ></div>\n  );\n});\n\nexport default StylePropClassAndCss;\n\nexport const STYLES = \\`\n.div-StylePropClassAndCss {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.jsx\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SubComponent = component$((props) => {\n  return <Foo></Foo>;\n});\n\nexport default SubComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > svgComponent 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SvgComponent = component$((props) => {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            stdDeviation={7}\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  );\n});\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > typeDependency 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TypeDependency = component$((props) => {\n  return <div>{props.foo}</div>;\n});\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TypeExternalProps = component$((props) => {\n  return <div>Hello {props.name}! </div>;\n});\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TypeExternalStore = component$((props) => {\n  const state = useStore({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n});\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const getName = function getName(props, state, test) {\n  if (state.name === \\\\\"a\\\\\") {\n    return \\\\\"b\\\\\";\n  }\n\n  return state.name;\n};\nexport const TypeGetterStore = component$((props) => {\n  const test = useComputed$(() => {\n    return \\\\\"test\\\\\";\n  });\n  const state = useStore({ name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state.name}! </div>;\n});\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > use-style 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <button type=\\\\\"button\\\\\" class=\\\\\"button-MyComponent\\\\\">\n      Button\n    </button>\n  );\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button-MyComponent {\n  background: blue;\n  color: white;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > useTarget 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const UseTargetComponent = component$((props) => {\n  const name = useComputed$(() => {\n    const prefix = \\\\\"q\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n  const state = useStore({ foo: \\\\\"bar\\\\\", lastName: \\\\\"bar\\\\\" });\n  useVisibleTask$(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"qwik\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  });\n\n  return <div>{name.value}</div>;\n});\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`qwik > jsx > Javascript Test > webComponent 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport const MyBasicWebComponent = component$((props) => {\n  useTask$(() => {\n    register();\n  });\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n});\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`qwik > jsx > Remove Internal mitosis package 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Advanced 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForShowComponent = component$((props: any) => {\n  const state = useStore<any>({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  return (\n    <main>\n      {(state.names || []).map((person, i) => {\n        return (\n          <div>\n            {i}: {person}\n          </div>\n        );\n      })}\n      {(state.names || []).map((person) => {\n        return <span>{person}</span>;\n      })}\n      {(state.names || []).map((item) => {\n        return <br />;\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((_, ee) => {\n        return <pre>{ee}</pre>;\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((item) => {\n        return <p>{index}</p>;\n      })}\n      {(state.names || []).map((person, index) => {\n        return (\n          <span>\n            {person}\n            {index}\n          </span>\n        );\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((person, count) => {\n        return (\n          <span>\n            {person}\n            {count}\n          </span>\n        );\n      })}\n      {(state.names || []).map((person, i) => {\n        return (\n          <span>\n            {person}\n            {i}\n          </span>\n        );\n      })}\n      {(\n        Array.from({\n          length: 10,\n        }) || []\n      ).map((person, index) => {\n        return (\n          <span>\n            {person}\n            {index}\n          </span>\n        );\n      })}\n    </main>\n  );\n});\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\nexport const underscore_fn_name = function underscore_fn_name(props, state) {\n  return \\\\\"bar\\\\\";\n};\nexport const MyBasicComponent = component$((props: MyBasicComponentProps) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({ age: 1, name: \\\\\"Steve\\\\\", sports: [\\\\\"\\\\\"] });\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange$={$((event) => (state.name = myEvent.target.value))}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic 2`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForShowComponent = component$((props: any) => {\n  const state = useStore<any>({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  return (\n    <div>\n      {(state.names || []).map((person) => {\n        return person === state.name ? (\n          <>\n            <input\n              value={state.name}\n              onChange$={$((event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              })}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n            or Liquid!\n          </>\n        ) : null;\n      })}\n    </div>\n  );\n});\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic Context 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useContext,\n  useContextProvider,\n  useStore,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport const onChange = function onChange(props, state, myService) {\n  const change = myService.method(\\\\\"change\\\\\");\n  console.log(change);\n};\nexport const MyBasicComponent = component$((props: any) => {\n  const myService = useContext(MyService);\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n  useContextProvider(Injector, createInjector());\n  useVisibleTask$(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n  useTask$(() => {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  });\n\n  return (\n    <div>\n      {myService.method(\\\\\"hello\\\\\") + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange$={$((event) => state.onChange())} />\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\nexport const MyBasicOnMountUpdateComponent = component$((props: Props) => {\n  const state = useStore<any>({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n  useVisibleTask$(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  });\n  useTask$(() => {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n  });\n\n  return <div>Hello {state.name}</div>;\n});\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicOutputsComponent = component$((props: any) => {\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n  useVisibleTask$(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n});\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicOutputsComponent = component$((props: any) => {\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n  useVisibleTask$(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n});\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nexport const MyBooleanAttribute = component$((props: Props) => {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          <Slot></Slot>\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle={true}></MyBooleanAttributeComponent>\n      <MyBooleanAttributeComponent toggle={true}></MyBooleanAttributeComponent>\n      <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n    </div>\n  );\n});\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\n\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\n\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nimport { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const log = function log(props, state, message: string) {\n  console.log(message);\n};\nexport const MyBasicChildComponent = component$((props: any) => {\n  const state = useStore<any>({ dev: \\\\\"PatrickJS\\\\\", name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev}></MyBasicComponent>\n      <div>\n        <MyBasicOnMountUpdateComponent\n          hi={state.name}\n          bye={state.dev}\n        ></MyBasicOnMountUpdateComponent>\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange$={$((event) => (state.name = name))}\n          onEvent$={$((event) => state.log(\\\\\"Test\\\\\"))}\n        ></MyBasicOutputsComponent>\n      </div>\n    </div>\n  );\n});\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicFor 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForComponent = component$((props: any) => {\n  const state = useStore<any>({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <div>\n      {(state.names || []).map((person) => {\n        return (\n          <Fragment>\n            <input\n              value={state.name}\n              onChange$={$((event) => {\n                state.name = event.target.value + \\\\\" and \\\\\" + person;\n              })}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n            or Liquid!\n          </Fragment>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicRef 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\nexport const onBlur = function onBlur(props, state, inputRef, inputNoArgRef) {\n  // Maintain focus\n  inputRef.value.focus();\n};\nexport const lowerCaseName = function lowerCaseName(\n  props,\n  state,\n  inputRef,\n  inputNoArgRef\n) {\n  return state.name.toLowerCase();\n};\nexport const MyBasicRefComponent = component$((props: Props) => {\n  useStylesScoped$(STYLES);\n\n  const inputRef = useSignal<Element>();\n  const inputNoArgRef = useSignal<Element>();\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      {props.showInput ? (\n        <Fragment>\n          <input\n            class=\\\\\"input-MyBasicRefComponent\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onBlur$={$((event) => state.onBlur())}\n            onChange$={$((event) => (state.name = event.target.value))}\n          />\n          <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </Fragment>\n      ) : null}\n      Hello\n      {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n      Component!\n    </div>\n  );\n});\n\nexport default MyBasicRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { $, Fragment, component$, h, useSignal } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\nexport const handlerClick = function handlerClick(\n  props,\n  state,\n  holdValueRef,\n  event: Event\n) {\n  event.preventDefault();\n  console.log(\\\\\"current value\\\\\", holdValueRef.value);\n  holdValueRef.value = holdValueRef.value + \\\\\"JS\\\\\";\n};\nexport const MyBasicRefAssignmentComponent = component$((props: Props) => {\n  const holdValueRef = useSignal<Element>();\n  const state: any = {};\n\n  return (\n    <div>\n      <button onClick$={$((event) => await state.handlerClick(evt))}>\n        Click\n      </button>\n    </div>\n  );\n});\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\nexport const MyPreviousComponent = component$((props: Props) => {\n  const prevCount = useSignal<Element>();\n  const state = useStore<any>({ count: 0 });\n  useTask$(({ track }) => {\n    track(() => state.count);\n    prevCount.value = state.count;\n  });\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.value}\n      </h1>\n      <button onClick$={$((event) => (state.count += 1))}>Increment</button>\n    </div>\n  );\n});\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Button 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\nexport const Button = component$((props: ButtonProps) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Columns 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\nexport const getColumns = function getColumns(props, state) {\n  return props.columns || [];\n};\nexport const getGutterSize = function getGutterSize(props, state) {\n  return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n};\nexport const getWidth = function getWidth(props, state, index: number) {\n  const columns = getColumns(props, state);\n  return (columns[index] && columns[index].width) || 100 / columns.length;\n};\nexport const getColumnCssWidth = function getColumnCssWidth(\n  props,\n  state,\n  index: number\n) {\n  const columns = getColumns(props, state);\n  const gutterSize = getGutterSize(props, state);\n  const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n  return \\`calc(\\${getWidth(props, state, index)}% - \\${subtractWidth}px)\\`;\n};\nexport const Column = component$((props: ColumnProps) => {\n  useStylesScoped$(STYLES);\n\n  const state: any = {};\n\n  return (\n    <div class=\\\\\"builder-columns div-Column\\\\\">\n      {(props.columns || []).map((column, index) => {\n        return (\n          <div class=\\\\\"builder-column div-Column-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default Column;\n\nexport const STYLES = \\`\n.div-Column {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div-Column {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div-Column {\n    flex-direction: row-reverse;\n  }\n}\n.div-Column-2 {\n  flex-grow: 1;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nexport const ContentSlotCode = component$((props: Props) => {\n  return (\n    <div>\n      <Slot name={props.slotTesting}></Slot>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot></Slot>\n      </div>\n    </div>\n  );\n});\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport {\n  $,\n  Fragment,\n  Slot,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nexport const show = function show(props, state, cls) {\n  props.slotContent ? 1 : \\\\\"\\\\\";\n};\nexport const ContentSlotJsxCode = component$((props: Props) => {\n  const cls = useComputed$(() => {\n    return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n  });\n  const state = useStore<any>({ name: \\\\\"king\\\\\", showContent: false });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <div\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick$={$((event) => show(props, state, cls))}\n          class={cls.value}\n        >\n          {state.showContent && props.slotContent ? (\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          ) : null}\n          <div>\n            <hr />\n          </div>\n          <div>\n            <Slot></Slot>\n          </div>\n        </div>\n      ) : null}\n    </>\n  );\n});\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > CustomCode 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\nexport const findAndRunScripts = function findAndRunScripts(\n  props,\n  state,\n  elem\n) {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n};\nexport const CustomCode = component$((props: CustomCodeProps) => {\n  const elem = useSignal<Element>();\n  const state = useStore<any>({ scriptsInserted: [], scriptsRun: [] });\n  useVisibleTask$(() => {\n    findAndRunScripts(props, state, elem);\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={props.code}\n    ></div>\n  );\n});\n\nexport default CustomCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Embed 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\nexport const findAndRunScripts = function findAndRunScripts(\n  props,\n  state,\n  elem\n) {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (state.scriptsInserted.includes(script.src)) {\n          continue;\n        }\n\n        state.scriptsInserted.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (state.scriptsRun.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          state.scriptsRun.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n};\nexport const CustomCode = component$((props: CustomCodeProps) => {\n  const elem = useSignal<Element>();\n  const state = useStore<any>({ scriptsInserted: [], scriptsRun: [] });\n  useVisibleTask$(() => {\n    findAndRunScripts(props, state, elem);\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={props.code}\n    ></div>\n  );\n});\n\nexport default CustomCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Form 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nexport const onSubmit = function onSubmit(\n  props,\n  state,\n  submissionState,\n  formRef,\n  event: Event & {\n    currentTarget: HTMLFormElement;\n  }\n) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n  if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body: any;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs: {\n      key: string;\n      value: File | boolean | number | string | FileList;\n    }[] = Array.from(\n      event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n    )\n      .filter((el) => !!(el as HTMLInputElement).name)\n      .map((el) => {\n        let value: any;\n        const key = (el as HTMLImageElement).name;\n\n        if (el instanceof HTMLInputElement) {\n          if (el.type === \\\\\"radio\\\\\") {\n            if (el.checked) {\n              value = el.name;\n              return {\n                key,\n                value,\n              };\n            }\n          } else if (el.type === \\\\\"checkbox\\\\\") {\n            value = el.checked;\n          } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n            const num = el.valueAsNumber;\n\n            if (!isNaN(num)) {\n              value = num;\n            }\n          } else if (el.type === \\\\\"file\\\\\") {\n            // TODO: one vs multiple files\n            value = el.files;\n          } else {\n            value = el.value;\n          }\n        } else {\n          value = (el as HTMLInputElement).value;\n        }\n\n        return {\n          key,\n          value,\n        };\n      });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n      contentType = \\\\\"multipart/form-data\\\\\";\n    }\n\n    Array.from(formPairs).forEach(({ value }) => {\n      if (\n        value instanceof File ||\n        (Array.isArray(value) && value[0] instanceof File) ||\n        value instanceof FileList\n      ) {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== \\\\\"application/json\\\\\") {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({ value, key }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n      if (\n        /* Zapier doesn't allow content-type header to be sent from browsers */\n        !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n      ) {\n        headers[\\\\\"content-type\\\\\"] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n      detail: {\n        body,\n      },\n    });\n\n    if (formRef.value) {\n      formRef.value.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    state.formState = \\\\\"sending\\\\\";\n    const formUrl = \\`\\${\n      builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n    }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n      props.sendSubmissionsToEmail || \\\\\"\\\\\"\n    )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n    fetch(\n      props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n      /* TODO: throw error if no action URL */\n      {\n        body,\n        headers,\n        method: props.method || \\\\\"post\\\\\",\n      }\n    ).then(\n      async (res) => {\n        let body;\n        const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n        if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n          body = await res.json();\n        } else {\n          body = await res.text();\n        }\n\n        if (!res.ok && props.errorMessagePath) {\n          /* TODO: allow supplying an error formatter function */\n          let message = get(body, props.errorMessagePath);\n\n          if (message) {\n            if (typeof message !== \\\\\"string\\\\\") {\n              /* TODO: ideally convert json to yaml so it woul dbe like\n             error: - email has been taken */\n              message = JSON.stringify(message);\n            }\n\n            state.formErrorMessage = message;\n          }\n        }\n\n        state.responseData = body;\n        state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n        if (res.ok) {\n          const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n            detail: {\n              res,\n              body,\n            },\n          });\n\n          if (formRef.value) {\n            formRef.value.dispatchEvent(submitSuccessEvent);\n\n            if (submitSuccessEvent.defaultPrevented) {\n              return;\n            }\n            /* TODO: option to turn this on/off? */\n\n            if (props.resetFormOnSubmit !== false) {\n              formRef.value.reset();\n            }\n          }\n          /* TODO: client side route event first that can be preventDefaulted */\n\n          if (props.successUrl) {\n            if (formRef.value) {\n              const event = new CustomEvent(\\\\\"route\\\\\", {\n                detail: {\n                  url: props.successUrl,\n                },\n              });\n              formRef.value.dispatchEvent(event);\n\n              if (!event.defaultPrevented) {\n                location.href = props.successUrl;\n              }\n            } else {\n              location.href = props.successUrl;\n            }\n          }\n        }\n      },\n      (err) => {\n        const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n          detail: {\n            error: err,\n          },\n        });\n\n        if (formRef.value) {\n          formRef.value.dispatchEvent(submitErrorEvent);\n\n          if (submitErrorEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.responseData = err;\n        state.formState = \\\\\"error\\\\\";\n      }\n    );\n  }\n};\nexport const FormComponent = component$((props: FormProps) => {\n  useStylesScoped$(STYLES);\n\n  const submissionState = useComputed$(() => {\n    return (Builder.isEditing && props.previewState) || state.formState;\n  });\n  const formRef = useSignal<Element>();\n  const state = useStore<any>({\n    formErrorMessage: \\\\\"\\\\\",\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n  });\n\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={(() => {\n        !props.sendWithJs && props.action;\n      })()}\n      method={props.method}\n      name={props.name}\n      onSubmit$={$((event) =>\n        onSubmit(props, state, submissionState, formRef, event)\n      )}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children\n        ? (props.builderBlock?.children || []).map((block, index) => {\n            return (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              ></BuilderBlockComponent>\n            );\n          })\n        : null}\n      {submissionState.value === \\\\\"error\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"errorMessage\\\\\"\n          blocks={props.errorMessage!}\n        ></BuilderBlocks>\n      ) : null}\n      {submissionState.value === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        ></BuilderBlocks>\n      ) : null}\n      {submissionState.value === \\\\\"error\\\\\" && state.responseData ? (\n        <pre class=\\\\\"builder-form-error-text pre-FormComponent\\\\\">\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      ) : null}\n      {submissionState.value === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        ></BuilderBlocks>\n      ) : null}\n    </form>\n  );\n});\n\nexport default FormComponent;\n\nexport const STYLES = \\`\n.pre-FormComponent {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Image 1`] = `\n\"import {\n  $,\n  Fragment,\n  Slot,\n  component$,\n  h,\n  useSignal,\n  useStore,\n  useStylesScoped$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\nexport const setLoaded = function setLoaded(props, state, pictureRef) {\n  state.imageLoaded = true;\n};\nexport const useLazyLoading = function useLazyLoading(\n  props,\n  state,\n  pictureRef\n) {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && state.isBrowser();\n};\nexport const isBrowser = function isBrowser(props, state, pictureRef) {\n  return (\n    typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n  );\n};\nexport const Image = component$((props: ImageProps) => {\n  useStylesScoped$(STYLES);\n\n  const pictureRef = useSignal<Element>();\n  const state = useStore<any>({\n    imageLoaded: false,\n    load: false,\n    scrollListener: null,\n  });\n  useVisibleTask$(() => {\n    if (useLazyLoading(props, state, pictureRef)) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.value) {\n          const rect = pictureRef.value.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading(props, state, pictureRef) || state.load ? (\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            class={\n              \\\\\"builder-image\\\\\" +\n              (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n              \\\\\" img-Image\\\\\"\n            }\n            src={props.image}\n            onLoad$={$((event) => setLoaded(props, state, pictureRef))}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      <Slot></Slot>\n    </div>\n  );\n});\n\nexport default Image;\n\nexport const STYLES = \\`\n.img-Image {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Image State 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ImgStateComponent = component$((props: any) => {\n  const state = useStore<any>({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {(state.images || []).map((item, itemIndex) => {\n        return (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Img 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\nexport const ImgComponent = component$((props: ImgProps) => {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n});\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Input 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\nexport const FormInputComponent = component$((props: FormInputProps) => {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange$={$((event) => props.onChange?.(event.target.value))}\n    />\n  );\n});\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\nimport { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const handleChange = function handleChange(props, state, value: string) {\n  console.log(value);\n};\nexport const Stepper = component$((props: any) => {\n  const state: any = {};\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange$={$((event) => handleChange(props, state, value))}\n    ></FormInputComponent>\n  );\n});\n\nexport default Stepper;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > NestedStore 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\nexport const NestedStore = component$((props: any) => {\n  const state = useStore<any>({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n});\n\nexport default NestedStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > RawText 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\nexport const RawText = component$((props: RawTextProps) => {\n  return (\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={props.text || \\\\\"\\\\\"}\n    ></span>\n  );\n});\n\nexport default RawText;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Section 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\nexport const SectionComponent = component$((props: SectionProps) => {\n  return (\n    <section\n      {...props.attributes}\n      style={(() => {\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined;\n      })()}\n    >\n      <Slot></Slot>\n    </section>\n  );\n});\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Section 2`] = `\n\"import { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\nexport const SectionStateComponent = component$((props: SectionProps) => {\n  const state = useStore<any>({ items: [42], max: 42 });\n\n  return (\n    <>\n      {state.max\n        ? (state.items || []).map((item) => {\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  maxWidth: item + state.max,\n                }}\n              >\n                <Slot></Slot>\n              </section>\n            );\n          })\n        : null}\n    </>\n  );\n});\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Select 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\nexport const SelectComponent = component$((props: FormSelectProps) => {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {(props.options || []).map((option, index) => {\n        return (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        );\n      })}\n    </select>\n  );\n});\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nexport const SlotCode = component$((props: Props) => {\n  return (\n    <div>\n      <Slot>\n        <div class=\\\\\"default-slot\\\\\">Default content</div>\n      </Slot>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nexport const SlotCode = component$((props: Props) => {\n  return (\n    <div>\n      <ContentSlotCode>\n        <Slot\n          testing={(() => {\n            <div>Hello</div>;\n          })()}\n        ></Slot>\n      </ContentSlotCode>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nexport const SlotCode = component$((props: Props) => {\n  return (\n    <div>\n      <ContentSlotCode\n        slotTesting={(() => {\n          <div>Hello</div>;\n        })()}\n      ></ContentSlotCode>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nexport const SlotCode = component$((props: Props) => {\n  return (\n    <div>\n      <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n      <Slot name=\\\\\"top\\\\\"></Slot>\n      <Slot name=\\\\\"left\\\\\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>\n  );\n});\n\nexport default SlotCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Stamped.io 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nexport const kebabCaseValue = function kebabCaseValue(props, state) {\n  return kebabCase(\\\\\"testThat\\\\\");\n};\nexport const snakeCaseValue = function snakeCaseValue(props, state) {\n  return snakeCase(\\\\\"testThis\\\\\");\n};\nexport const SmileReviews = component$((props: SmileReviewsProps) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({\n    name: \\\\\"test\\\\\",\n    reviews: [],\n    showReviewPrompt: false,\n  });\n  useVisibleTask$(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick$={$((event) => (state.showReviewPrompt = true))}>\n        Write a review\n      </button>\n      {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input-SmileReviews\\\\\" />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            class=\\\\\"textarea-SmileReviews\\\\\"\n          ></textarea>\n          <button\n            preventdefault:click\n            class=\\\\\"button-SmileReviews\\\\\"\n            onClick$={$((event) => {\n              state.showReviewPrompt = false;\n            })}\n          >\n            Submit\n          </button>\n        </>\n      ) : null}\n      {(state.reviews || []).map((review, index) => {\n        return (\n          <div class=\\\\\"review-SmileReviews\\\\\" key={review.id}>\n            <img class=\\\\\"img-SmileReviews\\\\\" src={review.avatar} />\n            <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        );\n      })}\n    </div>\n  );\n});\n\nexport default SmileReviews;\n\nexport const STYLES = \\`\n.input-SmileReviews {\n  display: block;\n}\n.textarea-SmileReviews {\n  display: block;\n}\n.button-SmileReviews {\n  display: block;\n}\n.review-SmileReviews {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img-SmileReviews {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > StoreComment 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const bar = function bar(props, state) {};\nexport const StringLiteralStore = component$((props: any) => {\n  const state = useStore<any>({ foo: true });\n\n  return <Fragment>{state.foo}</Fragment>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, errors) {\n  return errors;\n};\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ errors: {} });\n\n  return <Fragment>{foo(props, state, state.errors)}</Fragment>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const bar = function bar(props, state) {\n  return state.foo;\n};\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ foo: false });\n\n  return <Fragment>{bar(props, state)}</Fragment>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Submit 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\nexport const SubmitButton = component$((props: ButtonProps) => {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n});\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Text 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\nexport const Text = component$((props: TextProps) => {\n  const state = useStore<any>({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={\n        props.text ||\n        props.content ||\n        state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>'\n      }\n    ></div>\n  );\n});\n\nexport default Text;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Textarea 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\nexport const Textarea = component$((props: TextareaProps) => {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    ></textarea>\n  );\n});\n\nexport default Textarea;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\nexport const _do = function _do(props, state, id?: string) {\n  state._active = !!id;\n\n  if (props.onChange) {\n    props.onChange(state._active);\n  }\n};\nexport const UseValueAndFnFromStore = component$((props: MyProps) => {\n  const state = useStore<any>({ _active: false, _id: \\\\\"abc\\\\\" });\n  useTask$(({ track }) => {\n    if (_do.bind(null, props, state)) {\n      _do(props, state, state._id);\n    }\n  });\n\n  return <div>Test</div>;\n});\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > Video 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\nexport const Video = component$((props: VideoProps) => {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    ></video>\n  );\n});\n\nexport default Video;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const setName = function setName(props, state, value) {\n  state.name = value;\n};\nexport const updateNameWithArrowFn = function updateNameWithArrowFn(\n  props,\n  state,\n  value\n) {\n  state.name = value;\n};\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ name: \\\\\"steve\\\\\" });\n\n  return <div>Hello {state.name}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicForFragment = component$((props: any) => {\n  const state = useStore<any>({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {([\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] || []).map((option) => {\n        return (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        );\n      })}\n      {([\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] || []).map((option) => {\n        return (\n          <Fragment key={\\`\\${state.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        );\n      })}\n      <select>\n        {([\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"] || []).map((option) => {\n          return (\n            <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          );\n        })}\n      </select>\n    </div>\n  );\n});\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicForNoTagRefComponent = component$((props: any) => {\n  const TagNameGetter = useComputed$(() => {\n    return \\\\\"span\\\\\";\n  });\n  const state = useStore<any>({\n    TagName: \\\\\"div\\\\\",\n    name: \\\\\"VincentW\\\\\",\n    tag: \\\\\"span\\\\\",\n  });\n\n  return (\n    <TagNameGetter.value>\n      Hello <state.tag>{state.name}</state.tag>\n      {(props.actions || []).map((action) => {\n        return (\n          <state.TagName>\n            <action.icon></action.icon>\n            <span>{action.text}</span>\n          </state.TagName>\n        );\n      })}\n    </TagNameGetter.value>\n  );\n});\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\nexport const MyBasicForwardRefComponent = component$((props: Props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-MyBasicForwardRefComponent\\\\\"\n        ref={props.inputRef}\n        value={state.name}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n    </div>\n  );\n});\n\nexport default MyBasicForwardRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicForwardRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\nexport const MyBasicForwardRefComponent = component$((props: Props) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-MyBasicForwardRefComponent\\\\\"\n        ref={props.inputRef}\n        value={state.name}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n    </div>\n  );\n});\n\nexport default MyBasicForwardRefComponent;\n\nexport const STYLES = \\`\n.input-MyBasicForwardRefComponent {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          import {\n  Fragment,\n  component$,\n  h,\n  useSignal,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicRefAttributePassingComponent = component$((props: any) => {\n  const buttonRef = useSignal<Element>();\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n});\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          import { Fragment, component$, h, useSignal } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const BasicRefAttributePassingCustomRefComponent = component$(\n  (props: any) => {\n    const buttonRef = useSignal<Element>();\n\n    return (\n      <div>\n        <button ref={buttonRef}>Attribute Passing</button>\n      </div>\n    );\n  }\n);\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.jsx\\\\\";\n\nimport { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div>\n      <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div class=\\\\\"test2 test div-MyBasicComponent\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > class + css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > className + css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > className 1`] = `\n\"import { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nexport const ClassNameCode = component$((props: Props) => {\n  const state = useStore<any>({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div class=\\\\\"no binding\\\\\">Without Binding</div>\n      <div class={state.bindings}>With binding</div>\n    </div>\n  );\n});\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > classState 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <div\n      class={state.classState + \\\\\" div-MyBasicComponent\\\\\"}\n      style={state.styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > classnameProps 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\nexport const MyBasicComponent = component$((props: Props) => {\n  return (\n    <div class={props.className}>\n      <Slot></Slot>\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > complexMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const ComplexMetaRaw = component$((props: any) => {\n  return <div></div>;\n});\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > contentState 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useContextProvider,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport const RenderContent = component$((props: any) => {\n  useContextProvider(\n    BuilderContext,\n    useStore({\n      content: props.content,\n      registeredComponents: props.customComponents,\n    })\n  );\n\n  return <div>setting context</div>;\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > defaultProps 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\nexport const Button = component$((props: ButtonProps) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick$={$((event) => props.onClick())}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\nexport const Button = component$((props: ButtonProps) => {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick$={$((event) => props.onClick(event))}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  name: string;\n};\nexport const DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\nexport const ComponentWithTypes = component$((props: Props) => {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n});\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useStylesScoped$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const EventInputAndChange = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  const state = useStore<any>({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        class=\\\\\"input-EventInputAndChange\\\\\"\n        value={state.name}\n        onInput$={$((event) => (state.name = event.target.value))}\n        onChange$={$((event) => (state.name = event.target.value))}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default EventInputAndChange;\n\nexport const STYLES = \\`\n.input-EventInputAndChange {\n  color: red;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > eventProps 1`] = `\n\"import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nimport { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const handleClick = function handleClick(props, state) {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass(\\\\\"test\\\\\");\n  }\n};\nexport const EventPropsComponent = component$((props: EventProps) => {\n  const state: any = {};\n\n  return (\n    <button onClick$={$((event) => handleClick(props, state))}>Test</button>\n  );\n});\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > expressionState 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > figmaMeta 1`] = `\n\"\n          /**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const FigmaButton = component$((props: any) => {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n});\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > functionProps 1`] = `\n\"SyntaxError: Identifier expected. (8:98)\n   6 | export const MyBasicComponent=component$((props:MyBasicComponentProps)=>{\n   7 |\n>  8 | return (<p f={(()=>{() => x})()} f1={(()=>{x => x})()} f2={(()=>{x => {}})()} f3={(()=>{function () {\n     |                                                                                                  ^\n   9 |   return x;\n  10 | }})()} f4={(()=>{function (x) {\n  11 |   return x;\n========================================================================\nimport{Fragment,component$,h}from\\\\\"@builder.io/qwik\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\nexport const MyBasicComponent=component$((props:MyBasicComponentProps)=>{\n\nreturn (<p f={(()=>{() => x})()} f1={(()=>{x => x})()} f2={(()=>{x => {}})()} f3={(()=>{function () {\n  return x;\n}})()} f4={(()=>{function (x) {\n  return x;\n}})()} f5={(()=>{function (x) {\n  return;\n}})()} f6={(()=>{function () {\n  return;\n}})()} f7={(()=>{(a, b, c) => a + b + c})()}></p>)});\n\nexport default MyBasicComponent;\n\n========================================================================\"\n`;\n\nexports[`qwik > jsx > Typescript Test > getterState 1`] = `\n\"import { Fragment, component$, h, useComputed$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\nexport const baz = function baz(props, state, foo2, bar, i: number) {\n  return i + foo2.value.length;\n};\nexport const Button = component$((props: ButtonProps) => {\n  const foo2 = useComputed$(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n  const bar = useComputed$(() => {\n    return \\\\\"bar\\\\\";\n  });\n  const state: any = {};\n\n  return (\n    <div>\n      <p>{foo2.value}</p>\n      <p>{bar.value}</p>\n      <p>{baz(props, state, foo2, bar, 1)}</p>\n    </div>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > import types 1`] = `\n\"import {\n  RenderBlockProps,\n  default as RenderBlock,\n} from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nexport const getRenderContentProps = function getRenderContentProps(\n  props,\n  state,\n  block,\n  index\n) {\n  return {\n    block: block,\n    index: index,\n  };\n};\nexport const RenderContent = component$((props: RenderContentProps) => {\n  const state: any = {};\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(\n        props,\n        state,\n        props.renderContentProps.block,\n        0\n      )}\n    ></RenderBlock>\n  );\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > layerName 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyLayerNameComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <section>\n      <div class=\\\\\"layer-name-MyLayerNameComponent\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n});\n\nexport default MyLayerNameComponent;\n\nexport const STYLES = \\`\n.layer-name-MyLayerNameComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MultipleOnUpdate = component$((props: any) => {\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MultipleOnUpdateWithDeps = component$((props: any) => {\n  const state = useStore<any>({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  });\n  useTask$(({ track }) => {\n    track(() => state.c);\n    track(() => state.d);\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  });\n\n  return <div></div>;\n});\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  const state = useStore<any>({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > nestedShow 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\nexport const NestedShow = component$((props: Props) => {\n  return (\n    <>\n      {props.conditionA ? (\n        !props.conditionB ? (\n          <div>if condition A and condition B</div>\n        ) : (\n          <div>else-condition-B</div>\n        )\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n});\n\nexport default NestedShow;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const NestedStyles = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return <div class=\\\\\"div-NestedStyles\\\\\">Hello world</div>;\n});\n\nexport default NestedStyles;\n\nexport const STYLES = \\`\n.div-NestedStyles {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div-NestedStyles {\n    display: block;\n  }\n}\n.div-NestedStyles:hover {\n  display: flex;\n}\n.div-NestedStyles:active {\n  display: inline;\n}\n.div-NestedStyles .nested-selector {\n  display: grid;\n}\n.div-NestedStyles .nested-selector:hover {\n  display: block;\n}\n.div-NestedStyles.nested-selector:active {\n  display: inline-block;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\nexport const MyNormalizedLayerNamesComponent = component$(\n  (props: MyNormalizedLayerNamesComponentProps) => {\n    useStylesScoped$(STYLES);\n\n    return (\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"css-0-MyNormalizedLayerNamesComponent\\\\\">Single Number</div>\n        <div class=\\\\\"css-123-MyNormalizedLayerNamesComponent\\\\\">\n          Multiple Numbers\n        </div>\n        <div class=\\\\\"name-123-MyNormalizedLayerNamesComponent\\\\\">\n          Chars with numbers at end\n        </div>\n        <div class=\\\\\"name-MyNormalizedLayerNamesComponent\\\\\">\n          Chars with numbers at start\n        </div>\n        <div class=\\\\\"name-789-MyNormalizedLayerNamesComponent\\\\\">\n          Numnbers separated by dash\n        </div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" class=\\\\\"div-MyNormalizedLayerNamesComponent\\\\\">\n          Number\n        </div>\n      </section>\n    );\n  }\n);\n\nexport default MyNormalizedLayerNamesComponent;\n\nexport const STYLES = \\`\n.css-0-MyNormalizedLayerNamesComponent {\n  margin: 10px;\n}\n.css-123-MyNormalizedLayerNamesComponent {\n  padding: 10px;\n}\n.name-123-MyNormalizedLayerNamesComponent {\n  border: 1px solid;\n}\n.name-MyNormalizedLayerNamesComponent {\n  color: red;\n}\n.name-789-MyNormalizedLayerNamesComponent {\n  background: blue;\n}\n.div-MyNormalizedLayerNamesComponent {\n  background: blue;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onEvent 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useOn,\n  useSignal,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, elem, event) {\n  console.log(\\\\\"test2\\\\\");\n};\nexport const Embed = component$((props: any) => {\n  const elem = useSignal<Element>();\n  const state: any = {};\n  useOn(\n    \\\\\"initEditingBldr\\\\\",\n    $((event, element) => {\n      console.log(\\\\\"test\\\\\");\n      foo(props, state, elem, event);\n    }) as Parameters<typeof useOn>[1]\n  );\n  useVisibleTask$(() => {\n    elem.value.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <div class=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n});\n\nexport default Embed;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnInit = component$((props: any) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n  useTask$(() => {\n    console.log(\\\\\"onInit\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnInit;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onInit 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  name: string;\n};\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\nexport const OnInit = component$((props: Props) => {\n  const state = useStore<any>({ name: \\\\\"\\\\\" });\n  useTask$(() => {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  });\n\n  return <div>Default name defined by parent {state.name}</div>;\n});\n\nexport default OnInit;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnInitPlain = component$((props: any) => {\n  useTask$(() => {\n    console.log(\\\\\"onInit\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onMount 1`] = `\n\"import { Fragment, component$, h, useVisibleTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Comp = component$((props: any) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default Comp;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Comp = component$((props: any) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  useVisibleTask$(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  useTask$(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default Comp;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onUpdate 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const OnUpdate = component$((props: any) => {\n  useTask$(({ track }) => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { Fragment, component$, h, useStore, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  size: string;\n};\nexport const OnUpdateWithDeps = component$((props: Props) => {\n  const state = useStore<any>({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    track(() => props.size);\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\nexport const b = 3;\nexport const foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\nexport const MyBasicComponent = component$((props: MyBasicComponentProps) => {\n  return <div></div>;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\nexport const MyBasicComponent = component$((props: MyBasicComponentProps) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nexport const MyBasicComponent = component$((props: Props) => {\n  const state = useStore<any>({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      <Slot></Slot>\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > propsInterface 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\nexport const MyBasicComponent = component$((props: Person | never) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > propsType 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\nexport const MyBasicComponent = component$((props: Person) => {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const foo = function foo(props, state, params) {};\nexport const bar = function bar(props, state) {};\nexport const zoo = function zoo(props, state) {\n  const params = {\n    cb: state.bar,\n  };\n};\nexport const OnUpdate = component$((props: any) => {\n  const state: any = {};\n  useTask$(({ track }) => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div></div>;\n});\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\n\nimport {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\n\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\n\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\n\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\n\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\n\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\n\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\n\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\n\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\n\nimport { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\n\nimport { Nullable } from \\\\\"../../types/typescript.js\\\\\";\n\nimport BlockStyles from \\\\\"./block-styles.jsx\\\\\";\n\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\n\nimport {\n  RenderComponentProps,\n  default as RenderComponent,\n} from \\\\\"./render-component.jsx\\\\\";\n\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.jsx\\\\\";\n\nimport { RepeatData } from \\\\\"./types.js\\\\\";\n\nimport { Fragment, component$, h, useComputed$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nexport const RenderBlock = component$((props: RenderBlockProps) => {\n  const component = useComputed$(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n  const tag = useComputed$(() => {\n    return getBlockTag(useBlock.value);\n  });\n  const useBlock = useComputed$(() => {\n    return repeatItemData.value\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n  const actions = useComputed$(() => {\n    return getBlockActions({\n      block: useBlock.value,\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n  const attributes = useComputed$(() => {\n    const blockProperties = getBlockProperties(useBlock.value);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock.value,\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n  const shouldWrap = useComputed$(() => {\n    return !component.value?.noWrap;\n  });\n  const renderComponentProps = useComputed$(() => {\n    return {\n      blockChildren: useChildren.value,\n      componentRef: component.value?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock.value),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap.value\n          ? {}\n          : {\n              attributes: { ...attributes.value, ...actions.value },\n            }),\n        customBreakpoints: childrenContext.value?.content?.meta?.breakpoints,\n      },\n      context: childrenContext.value,\n    };\n  });\n  const useChildren = useComputed$(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock.value.children ?? [];\n  });\n  const childrenWithoutParentComponent = useComputed$(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component.value?.component && !repeatItemData.value;\n    return shouldRenderChildrenOutsideRef ? useChildren.value : [];\n  });\n  const repeatItemData = useComputed$(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n  const inheritedTextStyles = useComputed$(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock.value,\n      context: props.context,\n      blockStyles: attributes.value.style,\n    });\n    return extractTextStyles(styles);\n  });\n  const childrenContext = useComputed$(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles.value,\n    };\n  });\n  const renderComponentTag = useComputed$(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n  const state: any = {};\n\n  return (\n    <>\n      {shouldWrap.value ? (\n        <>\n          {isEmptyHtmlElement(tag.value) ? (\n            <tag.value {...attributes.value} {...actions.value}></tag.value>\n          ) : null}\n          {!isEmptyHtmlElement(tag.value) && repeatItemData.value\n            ? (repeatItemData.value || []).map((data, index) => {\n                return (\n                  <RenderRepeatedBlock\n                    key={index}\n                    repeatContext={data.context}\n                    block={data.block}\n                  ></RenderRepeatedBlock>\n                );\n              })\n            : null}\n          {!isEmptyHtmlElement(tag.value) && !repeatItemData.value ? (\n            <tag.value {...attributes.value} {...actions.value}>\n              <renderComponentTag.value\n                {...renderComponentProps.value}\n              ></renderComponentTag.value>\n              {(childrenWithoutParentComponent.value || []).map((child) => {\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext.value}\n                  ></RenderBlock>\n                );\n              })}\n              {(childrenWithoutParentComponent.value || []).map((child) => {\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext.value}\n                  ></BlockStyles>\n                );\n              })}\n            </tag.value>\n          ) : null}\n        </>\n      ) : (\n        <renderComponentTag.value\n          {...renderComponentProps.value}\n        ></renderComponentTag.value>\n      )}\n    </>\n  );\n});\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > renderContentExample 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useContextProvider,\n  useStore,\n  useStylesScoped$,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.jsx\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nexport const RenderContent = component$((props: Props) => {\n  useStylesScoped$(STYLES);\n\n  useContextProvider(\n    BuilderContext,\n    useStore({\n      content: (() => {\n        return 3;\n      })(),\n      registeredComponents: (() => {\n        return 4;\n      })(),\n    })\n  );\n  useVisibleTask$(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n  useTask$(({ track }) => {\n    track(() => props.content);\n    dispatchNewContentToVisualEditor(props.content);\n  });\n\n  return (\n    <div\n      class=\\\\\"div-RenderContent\\\\\"\n      onClick$={$((event) => trackClick(props.content.id))}\n    >\n      <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n    </div>\n  );\n});\n\nexport default RenderContent;\n\nexport const STYLES = \\`\n.div-RenderContent {\n  display: flex;\n  flex-direction: columns;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\nexport const Button = component$((props: ButtonProps) => {\n  return (\n    <Fragment>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </Fragment>\n  );\n});\n\nexport default Button;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > rootShow 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\nexport const RenderStyles = component$((props: RenderStylesProps) => {\n  return <>{props.foo === \\\\\"bar\\\\\" ? <div>Bar</div> : <div>Foo</div>}</>;\n});\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n      ) : null}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  return (\n    <div>\n      {props.name}\n      <Slot></Slot>\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > setState 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const someFn = function someFn(props, state) {\n  state.n[0] = \\\\\"123\\\\\";\n};\nexport const SetState = component$((props: any) => {\n  const state = useStore<any>({ n: [\\\\\"123\\\\\"] });\n\n  return (\n    <div>\n      <button onClick$={$((event) => someFn(props, state))}>Click me</button>\n    </div>\n  );\n});\n\nexport default SetState;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > showExpressions 1`] = `\n\"SyntaxError: Expression expected. (9:115)\n   7 | export const ShowWithOtherValues=component$((props:Props)=>{\n   8 |\n>  9 | return (<div>{props.conditionA?<>Content0</>:<>ContentA</>}{props.conditionA?<>ContentA</>:null}{props.conditionA?:<>ContentA</>}{props.conditionA?<>ContentB</>:<>{undefined}</>}{props.conditionA?<>{undefined}</>:<>ContentB</>}{props.conditionA?<>ContentC</>:null}{props.conditionA?:<>ContentC</>}{props.conditionA?<>ContentD</>:null}{props.conditionA?:<>ContentD</>}{props.conditionA?<>ContentE</>:<>hello</>}{props.conditionA?<>hello</>:<>ContentE</>}{props.conditionA?<>ContentF</>:<>123</>}{props.conditionA?<>123</>:<>ContentF</>}{props.conditionA === 'Default'?<>4mb</>:props.conditionB === 'Complete'?<>20mb</>:<>9mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<>20mb</>:<>9mb</>:<>4mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<div>complete</div>:<>9mb</>:props.conditionC === 'Complete'?<>dff</>:<div>complete else</div>}</div>)});\n     |                                                                                                                   ^\n  10 |\n  11 | export default ShowWithOtherValues;\n========================================================================\nimport{Fragment,component$,h}from\\\\\"@builder.io/qwik\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\nexport const ShowWithOtherValues=component$((props:Props)=>{\n\nreturn (<div>{props.conditionA?<>Content0</>:<>ContentA</>}{props.conditionA?<>ContentA</>:null}{props.conditionA?:<>ContentA</>}{props.conditionA?<>ContentB</>:<>{undefined}</>}{props.conditionA?<>{undefined}</>:<>ContentB</>}{props.conditionA?<>ContentC</>:null}{props.conditionA?:<>ContentC</>}{props.conditionA?<>ContentD</>:null}{props.conditionA?:<>ContentD</>}{props.conditionA?<>ContentE</>:<>hello</>}{props.conditionA?<>hello</>:<>ContentE</>}{props.conditionA?<>ContentF</>:<>123</>}{props.conditionA?<>123</>:<>ContentF</>}{props.conditionA === 'Default'?<>4mb</>:props.conditionB === 'Complete'?<>20mb</>:<>9mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<>20mb</>:<>9mb</>:<>4mb</>}{props.conditionA === 'Default'?props.conditionB === 'Complete'?<div>complete</div>:<>9mb</>:props.conditionC === 'Complete'?<>dff</>:<div>complete else</div>}</div>)});\n\nexport default ShowWithOtherValues;\n\n========================================================================\"\n`;\n\nexports[`qwik > jsx > Typescript Test > showWithFor 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\nexport const NestedShow = component$((props: Props) => {\n  return (\n    <>\n      {props.conditionA ? (\n        (props.items || []).map((item, idx) => {\n          return <div key={idx}>{item}</div>;\n        })\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n});\n\nexport default NestedShow;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\nexport const ShowWithOtherValues = component$((props: Props) => {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n});\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\nexport const ShowRootText = component$((props: Props) => {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n});\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useStylesScoped$,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\nexport const MyBasicComponent = component$((props: Props) => {\n  useStylesScoped$(STYLES);\n\n  useTask$(({ track }) => {\n    track(() => props.id);\n    track(() => props.foo.bar.baz);\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  });\n\n  return (\n    <div class=\\\\\"test div-MyBasicComponent\\\\\">\n      {props.id}\n      {props.foo.bar.baz}\n    </div>\n  );\n});\n\nexport default MyBasicComponent;\n\nexport const STYLES = \\`\n.div-MyBasicComponent {\n  padding: 10px;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  return <input {...attrs} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  return <input {...props.nested} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > spreadProps 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyBasicComponent = component$((props: any) => {\n  return <input {...props} />;\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > store-async-function 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const arrowFunction = async function arrowFunction() {\n  return Promise.resolve();\n};\nexport const namedFunction = async function namedFunction() {\n  return Promise.resolve();\n};\nexport const fetchUsers = async function fetchUsers() {\n  return Promise.resolve();\n};\nexport const StringLiteralStore = component$((props: any) => {\n  const state: any = {};\n\n  return <div></div>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const StringLiteralStore = component$((props: any) => {\n  const state = useStore<any>({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n});\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div\n      class=\\\\\"builder-column div-MyComponent\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n    ></div>\n  );\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\n.div-MyComponent {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const StylePropClassAndCss = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <div\n      style={props.attributes.style}\n      class={props.attributes.class + \\\\\" div-StylePropClassAndCss\\\\\"}\n    ></div>\n  );\n});\n\nexport default StylePropClassAndCss;\n\nexport const STYLES = \\`\n.div-StylePropClassAndCss {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.jsx\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SubComponent = component$((props: any) => {\n  return <Foo></Foo>;\n});\n\nexport default SubComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > svgComponent 1`] = `\n\"import { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const SvgComponent = component$((props: any) => {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n          <feBlend\n            in=\\\\\"SourceGraphic\\\\\"\n            in2=\\\\\"BackgroundImageFix\\\\\"\n            result=\\\\\"shape\\\\\"\n          ></feBlend>\n          <feGaussianBlur\n            result=\\\\\"effect1_foregroundBlur\\\\\"\n            stdDeviation={7}\n          ></feGaussianBlur>\n        </filter>\n      </defs>\n    </svg>\n  );\n});\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > typeDependency 1`] = `\n\"import { Foo } from \\\\\"./foo-type\\\\\";\n\nimport { Foo as Foo2 } from \\\\\"./type-export.jsx\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nexport const TypeDependency = component$((props: TypeDependencyProps) => {\n  return <div>{props.foo}</div>;\n});\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nimport { Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TypeExternalProps = component$((props: FooProps) => {\n  return <div>Hello {props.name}! </div>;\n});\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { FooStore } from \\\\\"./foo-store\\\\\";\n\nimport { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TypeExternalStore = component$((props: any) => {\n  const state = useStore<any>({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n});\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\nexport const getName = function getName(props, state, test) {\n  if (state.name === \\\\\"a\\\\\") {\n    return \\\\\"b\\\\\";\n  }\n\n  return state.name;\n};\nexport const TypeGetterStore = component$((props: any) => {\n  const test = useComputed$(() => {\n    return \\\\\"test\\\\\";\n  });\n  const state = useStore<any>({ name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state.name}! </div>;\n});\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > use-style 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return (\n    <button type=\\\\\"button\\\\\" class=\\\\\"button-MyComponent\\\\\">\n      Button\n    </button>\n  );\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button-MyComponent {\n  background: blue;\n  color: white;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return <button type=\\\\\"button\\\\\">Button</button>;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > useTarget 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const UseTargetComponent = component$((props: any) => {\n  const name = useComputed$(() => {\n    const prefix = \\\\\"q\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n  const state = useStore<any>({ foo: \\\\\"bar\\\\\", lastName: \\\\\"bar\\\\\" });\n  useVisibleTask$(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"qwik\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  });\n\n  return <div>{name.value}</div>;\n});\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`qwik > jsx > Typescript Test > webComponent 1`] = `\n\"import { Fragment, component$, h, useTask$ } from \\\\\"@builder.io/qwik\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport const MyBasicWebComponent = component$((props: any) => {\n  useTask$(() => {\n    register();\n  });\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n});\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`qwik > mount 1`] = `\n{\n  \"high.cjs\": \"const __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"low.cjs\": \"const Fragment = require(\\\\\"@builder.io/qwik\\\\\").Fragment;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\nconst useStore = require(\\\\\"@builder.io/qwik\\\\\").useStore;\nconst useStylesScopedQrl = require(\\\\\"@builder.io/qwik\\\\\").useStylesScopedQrl;\n\nexports.MyComponentStyles = \\`.cxfmert{all:unset;display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}\\`;\nexports.MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"title\\\\\")) state.title = '\\\\\"Default title value\\\\\"';\n      if (!state.hasOwnProperty(\\\\\"hiliteTitle\\\\\")) state.hiliteTitle = true;\n      var _virtual_index = 1234;\n      _virtual_index;\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    \\\\\"button\\\\\",\n    {\n      \\\\\"builder-id\\\\\": \\\\\"builder-192569f8d0a943398ec7ab9c327e104f\\\\\",\n      class: \\\\\"cxfmert builder-block\\\\\",\n      style: {\n        backgroundColor: (() => {\n          try {\n            return state.hilitTitle ? \\\\\"red\\\\\" : \\\\\"gray\\\\\";\n          } catch (err) {\n            console.warn(\\\\\"Builder code error\\\\\", err);\n          }\n        })(),\n      },\n    },\n    state.title\n  );\n};\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"med.cjs\": \"const componentQrl = require(\\\\\"@builder.io/qwik\\\\\").componentQrl;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\n\nexports.MyComponent = componentQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", []));\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n}\n`;\n\nexports[`qwik > page-with-symbol 1`] = `\n{\n  \"high.js\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"import { SymbolHeaderSymbol } from \\\\\"./med.js\\\\\";\n\nimport {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.c713ty2{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px}.cxvcn5v{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center;padding-top:1em;padding-bottom:1em;font-weight:700;font-size:24px}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    Fragment,\n    null,\n    h(SymbolHeaderSymbol, {\n      class: \\\\\"c713ty2\\\\\",\n      symbol: {\n        model: \\\\\"page\\\\\",\n        entry: \\\\\"36da1052e57e47f084ea8b1fbde248e4\\\\\",\n        data: {},\n      },\n    }),\n    h(\\\\\"div\\\\\", { class: \\\\\"cxvcn5v\\\\\" }, \\\\\"<p>Main Text</p>\\\\\")\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import { componentQrl, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > show-hide 1`] = `{}`;\n\nexports[`qwik > show-hide 2`] = `\n{\n  \"high.jsx\": \"import { useLexicalScope } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  try {\n    return (state.visible = !state.visible);\n  } catch (err) {\n    console.warn(\\\\\"Builder code error\\\\\", err);\n  }\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.jsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.jsx\": \"import {\n  Fragment,\n  componentQrl,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.c9nzze9{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;appearance:none;padding-top:15px;padding-bottom:15px;padding-left:25px;padding-right:25px;background-color:#3898EC;color:white;border-radius:4px;text-align:center;cursor:pointer}.cjrqfb1{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;line-height:normal;height:auto;text-align:center}.c837pqv{display:flex;flex-direction:column;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:20px;width:100%;min-height:20px;min-width:20px;overflow:hidden}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      if (!state.hasOwnProperty(\\\\\"visible\\\\\")) state.visible = false;\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return (\n    <>\n      <CoreButton\n        builder-id=\\\\\"builder-7ac4d7c20b01404ca338b2f4c59b3f82\\\\\"\n        text=\\\\\"Toggle\\\\\"\n        class=\\\\\"c9nzze9 builder-block\\\\\"\n        onClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"MyComponent_onClick_0\\\\\", [s, l])}\n      ></CoreButton>\n      {state.visible ? (\n        <div\n          builder-id=\\\\\"builder-845ebd803c89485383568d433b6fd517\\\\\"\n          class=\\\\\"cjrqfb1\\\\\"\n        >\n          <p>Show when visible=true</p>\n        </div>\n      ) : null}\n      {!state.visible ? (\n        <div\n          builder-id=\\\\\"builder-67baa3b2073942b99017e846759776aa\\\\\"\n          class=\\\\\"cjrqfb1\\\\\"\n        >\n          <p>Show when visible=false</p>\n        </div>\n      ) : null}\n      {!visible ? (\n        <Image\n          builder-id=\\\\\"builder-e42f7b40d40a442ea72dac7a1ceb2021\\\\\"\n          image=\\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160\\\\\"\n          backgroundSize=\\\\\"cover\\\\\"\n          backgroundPosition=\\\\\"center\\\\\"\n          sizes=\\\\\"(max-width: 638px) 94vw, (max-width: 998px) 96vw, 83vw\\\\\"\n          srcset=\\\\\"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=100 100w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=200 200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=400 400w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=800 800w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1200 1200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1600 1600w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=2000 2000w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160 1160w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=598 598w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=958 958w\\\\\"\n          class=\\\\\"c837pqv\\\\\"\n          lazy={false}\n          fitContent={true}\n          aspectRatio={1}\n          height={1300}\n          width={1300}\n        ></Image>\n      ) : null}\n    </>\n  );\n};\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./med.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const CoreButton = function CoreButton(props) {\n  const hasLink = !!props.link;\n  const hProps = {\n    dangerouslySetInnerHTML: props.text || \\\\\"\\\\\",\n    href: props.link,\n    target: props.openInNewTab ? \\\\\"_blank\\\\\" : \\\\\"_self\\\\\",\n    class: props.class,\n  };\n  return h(\n    hasLink ? \\\\\"a\\\\\" : props.tagName$ || \\\\\"span\\\\\",\n    __passThroughProps__(hProps, props)\n  );\n};\nexport const __passThroughProps__ = function __passThroughProps__(\n  dstProps,\n  srcProps\n) {\n  for (const key in srcProps) {\n    if (\n      Object.prototype.hasOwnProperty.call(srcProps, key) &&\n      ((key.startsWith(\\\\\"on\\\\\") && key.endsWith(\\\\\"$\\\\\")) || key == \\\\\"style\\\\\")\n    ) {\n      dstProps[key] = srcProps[key];\n    }\n  }\n  return dstProps;\n};\nexport const Image = function Image(props) {\n  let jsx = props.children || [];\n  let image = props.image;\n  if (image) {\n    const isBuilderIoImage =\n      !!(image || \\\\\"\\\\\").match(/\\\\\\\\.builder\\\\\\\\.io/) && !props.noWebp;\n    const isPixel = props.builderBlock?.id.startsWith(\\\\\"builder-pixel-\\\\\");\n    const imgProps = {\n      src: props.image,\n      style:\n        \\`object-fit:\\${props.backgroundSize || \\\\\"cover\\\\\"};object-position:\\${\n          props.backgroundPosition || \\\\\"center\\\\\"\n        };\\` +\n        (props.aspectRatio\n          ? \\\\\"position:absolute;height:100%;width:100%;top:0;left:0\\\\\"\n          : \\\\\"\\\\\"),\n      sizes: props.sizes,\n      alt: props.altText,\n      role: !props.altText ? \\\\\"presentation\\\\\" : void 0,\n      loading: isPixel ? \\\\\"eager\\\\\" : \\\\\"lazy\\\\\",\n      srcset: void 0,\n    };\n    const qwikBugWorkaround = (imgProps2) =>\n      Object.keys(imgProps2).forEach(\n        (k) => imgProps2[k] === void 0 && delete imgProps2[k]\n      );\n    qwikBugWorkaround(imgProps);\n    if (isBuilderIoImage) {\n      const webpImage = updateQueryParam(image, \\\\\"format\\\\\", \\\\\"webp\\\\\");\n      const srcset = [\\\\\"100\\\\\", \\\\\"200\\\\\", \\\\\"400\\\\\", \\\\\"800\\\\\", \\\\\"1200\\\\\", \\\\\"1600\\\\\", \\\\\"2000\\\\\"]\n        .concat(props.srcsetSizes ? String(props.srcsetSizes).split(\\\\\" \\\\\") : [])\n        .map((size) => {\n          return updateQueryParam(webpImage, \\\\\"width\\\\\", size) + \\\\\" \\\\\" + size + \\\\\"w\\\\\";\n        })\n        .concat(tryAppendWidth(image))\n        .join(\\\\\",\\\\\");\n      imgProps.srcset = srcset;\n      jsx = jsx = [\n        h(\\\\\"picture\\\\\", {}, [\n          h(\\\\\"source\\\\\", { type: \\\\\"image/webp\\\\\", srcset }),\n          h(\\\\\"img\\\\\", imgProps, jsx),\n        ]),\n      ];\n    } else {\n      jsx = [h(\\\\\"img\\\\\", imgProps, jsx)];\n    }\n    if (\n      props.aspectRatio &&\n      !(props.fitContent && props.children && props.children.length)\n    ) {\n      const sizingDiv = h(\\\\\"div\\\\\", {\n        class: \\\\\"builder-image-sizer\\\\\",\n        style: \\`width:100%;padding-top:\\${\n          (props.aspectRatio || 1) * 100\n        }%;pointer-events:none;font-size:0\\`,\n      });\n      jsx.push(sizingDiv);\n    }\n  }\n  const children = props.children ? [jsx].concat(props.children) : [jsx];\n  return h(\n    props.href ? \\\\\"a\\\\\" : \\\\\"div\\\\\",\n    __passThroughProps__({ href: props.href, class: props.class }, props),\n    children\n  );\n  function updateQueryParam(uri = \\\\\"\\\\\", key, value) {\n    const re = new RegExp(\\\\\"([?&])\\\\\" + key + \\\\\"=.*?(&|$)\\\\\", \\\\\"i\\\\\");\n    const separator = uri.indexOf(\\\\\"?\\\\\") !== -1 ? \\\\\"&\\\\\" : \\\\\"?\\\\\";\n    if (uri.match(re)) {\n      return uri.replace(\n        re,\n        \\\\\"$1\\\\\" + key + \\\\\"=\\\\\" + encodeURIComponent(value) + \\\\\"$2\\\\\"\n      );\n    }\n    return uri + separator + key + \\\\\"=\\\\\" + encodeURIComponent(value);\n  }\n  function tryAppendWidth(url) {\n    const match = url.match(/[?&]width=(\\\\\\\\d+)/);\n    const width = match && match[1];\n    if (width) {\n      return [url + \\\\\" \\\\\" + width + \\\\\"w\\\\\"];\n    }\n    return [];\n  }\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > svelte > Javascript Test > basic 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange$={$((event) => (state.name = event.target.value))}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > bindGroup 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ fillings: [], tortilla: \\\\\"Plain\\\\\" });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Plain\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Whole wheat\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Spinach\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Rice\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Beans\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Cheese\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Guac (extra)\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > bindProperty 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > classDirective 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ focus: true });\n\n  return (\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > context 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useContext,\n  useContextProvider,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const disabled = useContext(\\\\\"disabled\\\\\");\n  const state = useStore({ activeTab: 0 });\n  useContextProvider(\\\\\"activeTab\\\\\", state.activeTab);\n\n  return <div>{state.activeTab}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > each 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {(state.numbers || []).map((num) => {\n        return <li>{num}</li>;\n      })}\n    </ul>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const log = function log(props, state, msg = \\\\\"hello\\\\\") {\n  console.log(msg);\n};\nexport const MyComponent = component$((props) => {\n  const state = {};\n\n  return (\n    <div>\n      <button onClick$={$((event) => state.log(\\\\\"hi\\\\\"))}>Log</button>\n      <button onClick$={$((event) => state.log(event))}>Log</button>\n      <button onClick$={$((event) => state.log(event))}>Log</button>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > html 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={state.html}></div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > ifElse 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const toggle = function toggle(props, state) {\n  state.show = !state.show;\n};\nexport const MyComponent = component$((props) => {\n  const state = useStore({ show: true });\n\n  return (\n    <>\n      {state.show ? (\n        <button onClick$={$((event) => state.toggle(event))}> Hide </button>\n      ) : (\n        <button onClick$={$((event) => state.toggle(event))}> Show </button>\n      )}\n    </>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.jsx\\\\\";\n\nimport { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot></Slot>\n      </Button>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n  useTask$(({ track }) => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > reactive 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const lowercaseName = useComputed$(() => {\n    return state.name.toLowerCase();\n  });\n  const state = useStore({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {lowercaseName.value}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const calculateResult = function calculateResult(props, state, a_, b_) {\n  state.result = a_ * b_;\n};\nexport const MyComponent = component$((props) => {\n  const state = useStore({ a: 2, b: 5, result: null });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    state.calculateResult(state.a, state.b);\n  });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange$={$((event) => (state.a = event.target.value))}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange$={$((event) => (state.b = event.target.value))}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > slots 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  return (\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > style 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(STYLES);\n\n  return <input class=\\\\\"form-input\\\\\" />;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > svelte > Javascript Test > textExpressions 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props) => {\n  const state = useStore({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > basic 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange$={$((event) => (state.name = event.target.value))}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > bindGroup 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ fillings: [], tortilla: \\\\\"Plain\\\\\" });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Plain\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Whole wheat\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={(() => {\n          state.tortilla === \\\\\"Spinach\\\\\";\n        })()}\n        onChange$={$((event) => (state.tortilla = event.target.value))}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Rice\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Beans\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Cheese\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={(() => {\n          state.fillings === \\\\\"Guac (extra)\\\\\";\n        })()}\n        onChange$={$((event) => (state.fillings = event.target.value))}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > bindProperty 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > classDirective 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ focus: true });\n\n  return (\n    <input\n      class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > context 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useContext,\n  useContextProvider,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const disabled = useContext(\\\\\"disabled\\\\\");\n  const state = useStore<any>({ activeTab: 0 });\n  useContextProvider(\\\\\"activeTab\\\\\", state.activeTab);\n\n  return <div>{state.activeTab}</div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > each 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {(state.numbers || []).map((num) => {\n        return <li>{num}</li>;\n      })}\n    </ul>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { $, Fragment, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const log = function log(props, state, msg = \\\\\"hello\\\\\") {\n  console.log(msg);\n};\nexport const MyComponent = component$((props: any) => {\n  const state: any = {};\n\n  return (\n    <div>\n      <button onClick$={$((event) => state.log(\\\\\"hi\\\\\"))}>Log</button>\n      <button onClick$={$((event) => state.log(event))}>Log</button>\n      <button onClick$={$((event) => state.log(event))}>Log</button>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > html 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={state.html}></div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > ifElse 1`] = `\n\"import { $, Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const toggle = function toggle(props, state) {\n  state.show = !state.show;\n};\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ show: true });\n\n  return (\n    <>\n      {state.show ? (\n        <button onClick$={$((event) => state.toggle(event))}> Hide </button>\n      ) : (\n        <button onClick$={$((event) => state.toggle(event))}> Show </button>\n      )}\n    </>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.jsx\\\\\";\n\nimport { Fragment, Slot, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <Slot></Slot>\n      </Button>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useTask$,\n  useVisibleTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useVisibleTask$(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n  useTask$(({ track }) => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n\n  return <div></div>;\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > reactive 1`] = `\n\"import {\n  Fragment,\n  component$,\n  h,\n  useComputed$,\n  useStore,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const lowercaseName = useComputed$(() => {\n    return state.name.toLowerCase();\n  });\n  const state = useStore<any>({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {lowercaseName.value}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import {\n  $,\n  Fragment,\n  component$,\n  h,\n  useStore,\n  useTask$,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const calculateResult = function calculateResult(props, state, a_, b_) {\n  state.result = a_ * b_;\n};\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ a: 2, b: 5, result: null });\n  useTask$(({ track }) => {\n    track(() => state.a);\n    track(() => state.b);\n    state.calculateResult(state.a, state.b);\n  });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange$={$((event) => (state.a = event.target.value))}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange$={$((event) => (state.b = event.target.value))}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > slots 1`] = `\n\"import { Fragment, Slot, component$, h } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  return (\n    <div>\n      <Slot>default</Slot>\n      <Slot name=\\\\\"Test\\\\\">\n        <div>default</div>\n      </Slot>\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > style 1`] = `\n\"import { Fragment, component$, h, useStylesScoped$ } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  useStylesScoped$(STYLES);\n\n  return <input class=\\\\\"form-input\\\\\" />;\n});\n\nexport default MyComponent;\n\nexport const STYLES = \\`\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n\\`;\n\"\n`;\n\nexports[`qwik > svelte > Typescript Test > textExpressions 1`] = `\n\"import { Fragment, component$, h, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = component$((props: any) => {\n  const state = useStore<any>({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`qwik > svg 1`] = `\n{\n  \"high.js\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"import {\n  Fragment,\n  h,\n  qrl,\n  useStore,\n  useStylesScopedQrl,\n} from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponentStyles = \\`.c8xlkz3{display:flex;flex-direction:column;align-items:stretch;position:relative;flex-shrink:0;box-sizing:border-box;margin-top:auto;margin-bottom:auto}\\`;\nexport const MyComponentOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n\n  useStylesScopedQrl(qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentStyles\\\\\", []));\n\n  return h(\n    \\\\\"div\\\\\",\n    {\n      \\\\\"builder-id\\\\\": \\\\\"builder-5bdc93549f3a4c30b28e85aa1fd91a1c\\\\\",\n      class: \\\\\"c8xlkz3 builder-block\\\\\",\n    },\n    h(\\\\\"div\\\\\", {\n      key: \\\\\"builder-5bdc93549f3a4c30b28e85aa1fd91a1c\\\\\",\n      dangerouslySetInnerHTML:\n        '<svg\\\\\\\\n  width=\\\\\"42\\\\\"\\\\\\\\n  height=\\\\\"42\\\\\"\\\\\\\\n  viewBox=\\\\\"0 0 42 42\\\\\"\\\\\\\\n  fill=\\\\\"none\\\\\"\\\\\\\\n  xmlns=\\\\\"http://www.w3.org/2000/svg\\\\\"\\\\\\\\n>\\\\\\\\n  <path\\\\\\\\n    d=\\\\\"M19.626 0.0327762C19.5357 0.0409786 19.2486 0.0696867 18.9903 0.0901925C13.0313 0.627445 7.4496 3.84276 3.9144 8.78466C1.94585 11.5324 0.686788 14.6493 0.211053 17.9508C0.0429057 19.1032 0.0223999 19.4436 0.0223999 21.0061C0.0223999 22.5687 0.0429057 22.9091 0.211053 24.0615C1.35118 31.9398 6.95747 38.5591 14.561 41.0116C15.9226 41.4504 17.358 41.7498 18.9903 41.9302C19.626 42 22.3737 42 23.0094 41.9302C25.8269 41.6186 28.2138 40.9214 30.5679 39.7197C30.9288 39.5352 30.9985 39.486 30.9493 39.4449C30.9165 39.4203 29.3785 37.3575 27.533 34.8639L24.1782 30.3322L19.9746 24.1107C17.6615 20.6903 15.7586 17.8933 15.7422 17.8933C15.7257 17.8892 15.7093 20.6534 15.7011 24.0287C15.6888 29.9385 15.6847 30.1763 15.6109 30.3158C15.5043 30.5167 15.4223 30.5987 15.25 30.689C15.1188 30.7546 15.0039 30.7669 14.3847 30.7669H13.6752L13.4865 30.648C13.3635 30.57 13.2733 30.4675 13.2117 30.3486L13.1256 30.164L13.1338 21.9412L13.1461 13.7143L13.2733 13.5543C13.3389 13.4682 13.4783 13.3575 13.5767 13.3041C13.7449 13.2221 13.8105 13.2139 14.52 13.2139C15.3566 13.2139 15.4961 13.2467 15.7134 13.4846C15.775 13.5502 18.0511 16.9788 20.7743 21.1086C23.4975 25.2385 27.2213 30.8776 29.0504 33.6459L32.3724 38.678L32.5405 38.5673C34.0292 37.5994 35.6041 36.2214 36.8508 34.786C39.5043 31.7389 41.2145 28.0232 41.7886 24.0615C41.9568 22.9091 41.9773 22.5687 41.9773 21.0061C41.9773 19.4436 41.9568 19.1032 41.7886 17.9508C40.6485 10.0724 35.0422 3.45315 27.4387 1.00065C26.0976 0.565927 24.6704 0.266542 23.0709 0.0860913C22.6772 0.0450797 19.9664 -3.30508e-05 19.626 0.0327762ZM28.2138 12.7218C28.4106 12.8202 28.5706 13.0089 28.628 13.2057C28.6608 13.3123 28.669 15.5926 28.6608 20.7313L28.6485 28.1052L27.3484 26.1121L26.0443 24.1189V18.7587C26.0443 15.2932 26.0607 13.3451 26.0853 13.2508C26.1509 13.0212 26.2944 12.8407 26.4913 12.7341C26.6595 12.648 26.721 12.6397 27.3649 12.6397C27.9718 12.6397 28.0785 12.648 28.2138 12.7218Z\\\\\"\\\\\\\\n    fill=\\\\\"#9CD3D7\\\\\"\\\\\\\\n  />\\\\\\\\n  <path\\\\\\\\n    d=\\\\\"M32.1674 38.7681C32.0239 38.8584 31.9787 38.9199 32.1059 38.8502C32.1961 38.7968 32.3437 38.6861 32.3191 38.682C32.3068 38.682 32.2371 38.723 32.1674 38.7681ZM31.8844 38.9527C31.8106 39.0101 31.8106 39.0142 31.9008 38.9691C31.95 38.9445 31.991 38.9158 31.991 38.9076C31.991 38.8748 31.9705 38.883 31.8844 38.9527ZM31.6794 39.0757C31.6055 39.1331 31.6055 39.1372 31.6958 39.0921C31.745 39.0675 31.786 39.0388 31.786 39.0306C31.786 38.9978 31.7655 39.006 31.6794 39.0757ZM31.4743 39.1988C31.4005 39.2562 31.4005 39.2603 31.4907 39.2152C31.5399 39.1906 31.5809 39.1618 31.5809 39.1536C31.5809 39.1208 31.5604 39.129 31.4743 39.1988ZM31.1626 39.3628C31.0068 39.4448 31.015 39.4776 31.1708 39.3997C31.2405 39.3628 31.2938 39.3259 31.2938 39.3177C31.2938 39.289 31.2897 39.2931 31.1626 39.3628Z\\\\\"\\\\\\\\n    fill=\\\\\"#9CD3D7\\\\\"\\\\\\\\n  />\\\\\\\\n</svg>\\\\\\\\n',\n    })\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import { componentQrl, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const MyComponent = componentQrl(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"MyComponentOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > todo > Todo.cjs 1`] = `\n{\n  \"high.cjs\": \"const useLexicalScope = require(\\\\\"@builder.io/qwik\\\\\").useLexicalScope;\n\nexports.Todo_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.toggle();\n};\nexports.Todo_onDblClick_1 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = true;\n};\nexports.Todo_onClick_2 = (event) => {\n  todosState.todos.splice(todosState.todos.indexOf(props.todo));\n};\nexports.Todo_onBlur_3 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = false;\n};\nexports.Todo_onKeyUp_4 = (event) => {\n  props.todo.text = event.target.value;\n};\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"low.cjs\": \"const __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n  \"med.cjs\": \"const Fragment = require(\\\\\"@builder.io/qwik\\\\\").Fragment;\nconst componentQrl = require(\\\\\"@builder.io/qwik\\\\\").componentQrl;\nconst h = require(\\\\\"@builder.io/qwik\\\\\").h;\nconst qrl = require(\\\\\"@builder.io/qwik\\\\\").qrl;\nconst useStore = require(\\\\\"@builder.io/qwik\\\\\").useStore;\n\nexports.TodoOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n  return h(\n    \\\\\"li\\\\\",\n    {\n      class: \\`\\${props.todo.completed ? \\\\\"completed\\\\\" : \\\\\"\\\\\"} \\${\n        state.editing ? \\\\\"editing\\\\\" : \\\\\"\\\\\"\n      }\\`,\n    },\n    h(\n      \\\\\"div\\\\\",\n      { class: \\\\\"view\\\\\" },\n      h(\\\\\"input\\\\\", {\n        class: \\\\\"toggle\\\\\",\n        type: \\\\\"checkbox\\\\\",\n        checked: props.todo.completed,\n        onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_0\\\\\", [s, l]),\n      }),\n      h(\n        \\\\\"label\\\\\",\n        { onDblClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onDblClick_1\\\\\", [s, l]) },\n        props.todo.text\n      ),\n      h(\\\\\"button\\\\\", {\n        class: \\\\\"destroy\\\\\",\n        onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_2\\\\\", [s, l]),\n      })\n    ),\n    state.editing\n      ? h(\\\\\"input\\\\\", {\n          class: \\\\\"edit\\\\\",\n          value: props.todo.text,\n          onBlur$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onBlur_3\\\\\", [s, l]),\n          onKeyUp$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onKeyUp_4\\\\\", [s, l]),\n        })\n      : null\n  );\n};\nexports.Todo = componentQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"TodoOnMount\\\\\", []));\nconst __proxyMerge__ = (exports.__proxyMerge__ = function __proxyMerge__(\n  state,\n  local\n) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n});\n\",\n}\n`;\n\nexports[`qwik > todo > Todo.js 1`] = `\n{\n  \"high.js\": \"import { useLexicalScope } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Todo_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.toggle();\n};\nexport const Todo_onDblClick_1 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = true;\n};\nexport const Todo_onClick_2 = (event) => {\n  todosState.todos.splice(todosState.todos.indexOf(props.todo));\n};\nexport const Todo_onBlur_3 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = false;\n};\nexport const Todo_onKeyUp_4 = (event) => {\n  props.todo.text = event.target.value;\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.js\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.js\": \"import { Fragment, componentQrl, h, qrl, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TodoOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n  return h(\n    \\\\\"li\\\\\",\n    {\n      class: \\`\\${props.todo.completed ? \\\\\"completed\\\\\" : \\\\\"\\\\\"} \\${\n        state.editing ? \\\\\"editing\\\\\" : \\\\\"\\\\\"\n      }\\`,\n    },\n    h(\n      \\\\\"div\\\\\",\n      { class: \\\\\"view\\\\\" },\n      h(\\\\\"input\\\\\", {\n        class: \\\\\"toggle\\\\\",\n        type: \\\\\"checkbox\\\\\",\n        checked: props.todo.completed,\n        onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_0\\\\\", [s, l]),\n      }),\n      h(\n        \\\\\"label\\\\\",\n        { onDblClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onDblClick_1\\\\\", [s, l]) },\n        props.todo.text\n      ),\n      h(\\\\\"button\\\\\", {\n        class: \\\\\"destroy\\\\\",\n        onClick$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_2\\\\\", [s, l]),\n      })\n    ),\n    state.editing\n      ? h(\\\\\"input\\\\\", {\n          class: \\\\\"edit\\\\\",\n          value: props.todo.text,\n          onBlur$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onBlur_3\\\\\", [s, l]),\n          onKeyUp$: qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onKeyUp_4\\\\\", [s, l]),\n        })\n      : null\n  );\n};\nexport const Todo = componentQrl(qrl(\\\\\"./med.js\\\\\", \\\\\"TodoOnMount\\\\\", []));\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > todo > Todo.tsx 1`] = `\n{\n  \"high.tsx\": \"import { useLexicalScope } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Todo_onClick_0 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.toggle();\n};\nexport const Todo_onDblClick_1 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = true;\n};\nexport const Todo_onClick_2 = (event) => {\n  todosState.todos.splice(todosState.todos.indexOf(props.todo));\n};\nexport const Todo_onBlur_3 = (event) => {\n  const [s, l] = useLexicalScope();\n  const state = __proxyMerge__(s, l);\n  state.editing = false;\n};\nexport const Todo_onKeyUp_4 = (event) => {\n  props.todo.text = event.target.value;\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.tsx\": \"export const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.tsx\": \"import { Fragment, componentQrl, h, qrl, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TodoOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n  return (\n    <li\n      class={\\`\\${props.todo.completed ? \\\\\"completed\\\\\" : \\\\\"\\\\\"} \\${\n        state.editing ? \\\\\"editing\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    >\n      <div class=\\\\\"view\\\\\">\n        <input\n          class=\\\\\"toggle\\\\\"\n          type=\\\\\"checkbox\\\\\"\n          checked={props.todo.completed}\n          onClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_0\\\\\", [s, l])}\n        />\n        <label onDblClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onDblClick_1\\\\\", [s, l])}>\n          {props.todo.text}\n        </label>\n        <button\n          class=\\\\\"destroy\\\\\"\n          onClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onClick_2\\\\\", [s, l])}\n        ></button>\n      </div>\n      {state.editing ? (\n        <input\n          class=\\\\\"edit\\\\\"\n          value={props.todo.text}\n          onBlur$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onBlur_3\\\\\", [s, l])}\n          onKeyUp$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todo_onKeyUp_4\\\\\", [s, l])}\n        />\n      ) : null}\n    </li>\n  );\n};\nexport const Todo = componentQrl<any, any>(qrl(\\\\\"./med.js\\\\\", \\\\\"TodoOnMount\\\\\", []));\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n\nexports[`qwik > todos > Todo.tsx 1`] = `\n{\n  \"high.tsx\": \"export const Todos_onClick_0 = (event) => {\n  const newValue = !todosState.allCompleted;\n\n  for (const todoItem of todosState.todos) {\n    todoItem.completed = newValue;\n  }\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"low.tsx\": \"import { Header, Todo } from \\\\\"./med.js\\\\\";\n\nimport { Fragment, h, qrl, useStore } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const TodosOnMount = (p) => {\n  const s = useStore(\n    () => {\n      const state = Object.assign(\n        {},\n        structuredClone(\n          typeof __STATE__ === \\\\\"object\\\\\" && __STATE__[p.serverStateId]\n        ),\n        p\n      );\n      return state;\n    },\n    { deep: true }\n  );\n  const l = {};\n  const state = __proxyMerge__(s, l);\n  return (\n    <section class=\\\\\"main\\\\\">\n      <Header name=\\\\\"World\\\\\">Hello</Header>\n      {todosState.todos.length ? (\n        <input\n          class=\\\\\"toggle-all\\\\\"\n          type=\\\\\"checkbox\\\\\"\n          checked={todosState.allCompleted}\n          onClick$={qrl(\\\\\"./high.js\\\\\", \\\\\"Todos_onClick_0\\\\\", [s, l])}\n        />\n      ) : null}\n      <ul class=\\\\\"todo-list\\\\\">\n        {(todosState.todos || []).map(\n          ((todo) => {\n            const l = {\n              ...this,\n              todosItem: todo == null ? {} : todo,\n              todo: todo,\n            };\n            const state = __proxyMerge__(s, l);\n            return <Todo todo={todo}></Todo>;\n          }).bind(l)\n        )}\n      </ul>\n    </section>\n  );\n};\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n  \"med.tsx\": \"import { componentQrl, h, qrl } from \\\\\"@builder.io/qwik\\\\\";\n\nexport const Todos = componentQrl<any, any>(\n  qrl(\\\\\"./low.js\\\\\", \\\\\"TodosOnMount\\\\\", [])\n);\nexport const __proxyMerge__ = function __proxyMerge__(state, local) {\n  return new Proxy(state, {\n    get: (obj, prop) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj, prop, value) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n};\n\",\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-native.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React Native > Vaild react-native styles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  return (\n    <View>\n      <View style={styles.view1}>\n        <Text>Hey world</Text>\n      </View>\n      <View style={styles.view2}>\n        <Text>Flex container</Text>\n      </View>\n      <View style={styles.view3}>\n        <Text>Testing unsupported properties</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: {\n    backgroundColor: \\\\\"#971f1f\\\\\",\n    paddingTop: 20,\n    paddingRight: 20,\n    paddingBottom: 20,\n    paddingLeft: 20,\n    borderRadius: 10,\n    borderWidth: 2,\n    borderColor: \\\\\"blue\\\\\",\n    borderStyle: \\\\\"solid\\\\\",\n    fontSize: 16,\n    fontWeight: \\\\\"bold\\\\\",\n    fontFamily: \\\\\"Arial\\\\\",\n  },\n  view2: {\n    marginTop: 10,\n    marginRight: 15,\n    marginBottom: 10,\n    marginLeft: 15,\n    display: \\\\\"flex\\\\\",\n    flexDirection: \\\\\"column\\\\\",\n    alignItems: \\\\\"center\\\\\",\n    justifyContent: \\\\\"space-between\\\\\",\n    width: \\\\\"100%\\\\\",\n    height: 200,\n    color: \\\\\"green\\\\\",\n    fontSize: 20,\n  },\n  view3: { opacity: \\\\\"0.8\\\\\", transform: \\\\\"scale(1.1)\\\\\" },\n});\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <View>\n      {props.showInput ? (\n        <>\n          <TextInput\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n            style={styles.textInput1}\n          />\n          <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            <Text>Choose a car:</Text>\n          </View>\n          <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <View value=\\\\\"supra\\\\\">\n              <Text>GR Supra</Text>\n            </View>\n            <View value=\\\\\"86\\\\\">\n              <Text>GR 86</Text>\n            </View>\n          </View>\n        </>\n      ) : null}\n      <Text>Hello</Text>\n      <Text>{lowerCaseName()}</Text>\n      <Text>! I can run in React, Qwik, Vue, Solid, or Web Component!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Basic 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <View style={styles.view1}>\n      <TextInput\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! &gt;</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Basic Context 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <View>\n        <Text>{myService.method(\\\\\"hello\\\\\") + name}</Text>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n        <TextInput onChange={(event) => onChange()} />\n      </View>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return <TextInput autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <View>\n      {props.children ? (\n        <>\n          {props.children}\n          <Text>{props.type}</Text>\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </View>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <View>\n      <MyBasicComponent id={dev} />\n      <View>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </View>\n    </View>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <View>\n      {names?.map((person) => (\n        <>\n          <TextInput\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          <Text>Hello </Text>\n          <Text>{person}</Text>\n          <Text>\n            ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </Text>\n        </>\n      ))}\n    </View>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      {props.showInput ? (\n        <>\n          <TextInput\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n            style={styles.textInput1}\n          />\n          <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            <Text>Choose a car:</Text>\n          </View>\n          <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <View value=\\\\\"supra\\\\\">\n              <Text>GR Supra</Text>\n            </View>\n            <View value=\\\\\"86\\\\\">\n              <Text>GR 86</Text>\n            </View>\n          </View>\n        </>\n      ) : null}\n      <Text>Hello</Text>\n      <Text>{lowerCaseName()}</Text>\n      <Text>! I can run in React, Qwik, Vue, Solid, or Web Component!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onPress={async (evt) => await handlerClick(evt)}>\n        <Text>Click</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <View>\n      <View>\n        <Text>Now: </Text>\n        <Text>{count}</Text>\n        <Text>, before: </Text>\n        <Text>{prevCount.current}</Text>\n      </View>\n      <Button onPress={(event) => setCount(1)}>\n        <Text>Increment</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nfunction Button(props) {\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <View style={styles.view1}>\n      {props.columns?.map((column, index) => (\n        <View style={styles.view2}>\n          <Text>{column.content}</Text>\n          <Text>{index}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n  view2: { flexGrow: \\\\\"1\\\\\" },\n});\n\nexport default Column;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <View>\n      <>{props.slotTesting}</>\n      <View>\n        <View />\n      </View>\n      <View>\n        <>{props.children}</>\n      </View>\n    </View>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Pressable } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <Pressable\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onPress={(event) => show()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || <Text>{props.content}</Text>}</>\n            ) : null}\n            <View>\n              <View />\n            </View>\n            <View>{props.children}</View>\n          </Pressable>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > CustomCode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Embed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Form 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <View\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <View style={styles.view1}>\n          <Text>{JSON.stringify(responseData, null, 2)}</Text>\n        </View>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        />\n      ) : null}\n    </View>\n  );\n}\nconst styles = StyleSheet.create({\n  view1: { padding: 10, color: \\\\\"red\\\\\", textAlign: \\\\\"center\\\\\" },\n});\nexport default FormComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Image 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Image, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <View>\n      <View ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <Image\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            source={{ uri: props.image }}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n            style={styles.image1}\n          />\n        ) : null}\n        <View srcset={props.srcset} />\n      </View>\n      {props.children}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  image1: {\n    opacity: \\\\\"1\\\\\",\n    transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n    objectFit: \\\\\"cover\\\\\",\n    objectPosition: \\\\\"center\\\\\",\n  },\n});\n\nexport default Image;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Image State 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Image } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <View>\n      {images?.map((item, itemIndex) => (\n        <Image source={{ uri: item }} key={itemIndex} />\n      ))}\n    </View>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { StyleSheet, Image } from \\\\\"react-native\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <Image\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      source={{ uri: props.imgSrc }}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Input 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <TextInput\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > NestedStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <View id={_id}>\n      <Text>Test</Text>\n      <View id={_messageId}>\n        <Text>Message</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction RawText(props) {\n  return <View dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }} />;\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <View\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </View>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <View\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <View value={option.value} data-index={index}>\n          <Text>{option.name || option.value}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <>\n        {props.children || (\n          <View>\n            <Text>Default content</Text>\n          </View>\n        )}\n      </>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <ContentSlotCode\n        slotTesting={\n          <View>\n            <Text>Hello</Text>\n          </View>\n        }\n      />\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || <Text>Default left</Text>}</>\n      <>{props.children || <Text>Default Child</Text>}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Stamped.io 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Image, Text, TextInput, Button } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <View data-user={name}>\n      <Button onPress={(event) => setShowReviewPrompt(true)}>\n        <Text>Write a review</Text>\n      </Button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <TextInput placeholder=\\\\\"Email\\\\\" />\n          <TextInput placeholder=\\\\\"Title\\\\\" />\n          <View placeholder=\\\\\"How was your experience?\\\\\" />\n          <Button\n            onPress={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            <Text>Submit</Text>\n          </Button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <View key={review.id} style={styles.view1}>\n          <Image source={{ uri: review.avatar }} style={styles.image1} />\n          <View>\n            <View>\n              <Text>N: </Text>\n              <Text>{index}</Text>\n            </View>\n            <View>\n              <Text>{review.author}</Text>\n            </View>\n            <View>\n              <Text>{review.reviewMessage}</Text>\n            </View>\n          </View>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: {\n    margin: 10,\n    padding: 10,\n    background: \\\\\"white\\\\\",\n    display: \\\\\"flex\\\\\",\n    borderRadius: 5,\n    boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n    WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n  },\n  image1: { height: 30, width: 30, marginRight: 10 },\n});\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > StoreComment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return (\n    <>\n      <Text>{foo}</Text>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <Text>{foo(errors)}</Text>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > StoreWithState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return (\n    <>\n      <Text>{bar()}</Text>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <Button type=\\\\\"submit\\\\\" {...props.attributes}>\n      <Text>{props.text}</Text>\n    </Button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Text 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <View\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return (\n    <View>\n      <Text>Test</Text>\n    </View>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nfunction Video(props) {\n  return (\n    <View\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicForFragment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <View>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <View>\n            <Text>{option}</Text>\n          </View>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <View>\n            <Text>{option}</Text>\n          </View>\n        </React.Fragment>\n      ))}\n      <View>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <View key={\\`\\${id}-\\${option}\\`} value={option}>\n            <Text>{option}</Text>\n          </View>\n        ))}\n      </View>\n    </View>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      <Text>Hello </Text>\n      <Tag>\n        <Text>{name}</Text>\n      </Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <View>\n            <Text>{action.text}</Text>\n          </View>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <View>\n        <TextInput\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n          style={styles.textInput1}\n        />\n      </View>\n    );\n  }\n);\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <View>\n        <TextInput\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n          style={styles.textInput1}\n        />\n      </View>\n    );\n  }\n);\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return (\n    <View>\n      <Text>Hello! </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return (\n    <Button ref={buttonRef}>\n      <Text>Attribute Passing</Text>\n    </Button>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <View>\n      <Button ref={buttonRef}>\n        <Text>Attribute Passing</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      <MyComp>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </MyComp>\n      <View style={styles.view1}>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > className 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <View>\n      <View>\n        <Text>Without Binding</Text>\n      </View>\n      <View>\n        <Text>With binding</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > classState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <View style={{ ...styles.view1, ...styleState }}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      {props.children}\n      <Text>{props.type}</Text>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <View />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > componentWithContext 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <Text>{foo.value}</Text>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>\n            <Text>{foo.value}</Text>\n          </>\n          <View>\n            <Text>other</Text>\n          </View>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > contentState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <View>\n        <Text>setting context</Text>\n      </View>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > defaultProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onPress={(event) => props.onClick()}\n        >\n          <Text>{props.buttonText}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onPress={(event) => props.onClick(event)}\n        >\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return (\n    <View>\n      <Text> Hello </Text>\n      <Text>{props.name || DEFAULT_VALUES.name}</Text>\n    </View>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n        style={styles.textInput1}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > eventProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <Button onPress={(event) => handleClick()}>\n      <Text>Test</Text>\n    </Button>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > expressionState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <View>\n      <Text>{refToUse}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <Button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      <Text>{props.label}</Text>\n    </Button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <View>\n      <View>\n        <Text>{foo2()}</Text>\n      </View>\n      <View>\n        <Text>{bar()}</Text>\n      </View>\n      <View>\n        <Text>{baz(1)}</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > inputToTextInputRN 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        value={name}\n        onChange={(event) => setName(event.target.value)}\n        style={styles.textInput1}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <View>\n      <View style={styles.view1}>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <View />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <TextInput {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <View>\n              <Text>if condition A and condition B</Text>\n            </View>\n          ) : (\n            <View>\n              <Text>else-condition-B</Text>\n            </View>\n          )}\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello world</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: {\n    display: \\\\\"flex\\\\\",\n    \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n    color: \\\\\"var(--bar)\\\\\",\n    \\\\\"&:hover\\\\\": { display: \\\\\"flex\\\\\" },\n    \\\\\":active\\\\\": { display: \\\\\"inline\\\\\" },\n    \\\\\".nested-selector\\\\\": { display: \\\\\"grid\\\\\" },\n    \\\\\".nested-selector:hover\\\\\": { display: \\\\\"block\\\\\" },\n    \\\\\"&.nested-selector:active\\\\\": { display: \\\\\"inline-block\\\\\" },\n  },\n});\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <View>\n      <View>\n        <Text>Emoji</Text>\n      </View>\n      <View>\n        <Text>Dashes</Text>\n      </View>\n      <View>\n        <Text>CamelCase</Text>\n      </View>\n      <View>\n        <Text>Special chars</Text>\n      </View>\n      <View>\n        <Text>Special chars with dashes</Text>\n      </View>\n      <View style={styles.view1}>\n        <Text>Single Number</Text>\n      </View>\n      <View style={styles.view2}>\n        <Text>Multiple Numbers</Text>\n      </View>\n      <View style={styles.view3}>\n        <Text>Chars with numbers at end</Text>\n      </View>\n      <View style={styles.view4}>\n        <Text>Chars with numbers at start</Text>\n      </View>\n      <View style={styles.view5}>\n        <Text>Numnbers separated by dash</Text>\n      </View>\n      <View>\n        <Text>Emoji</Text>\n      </View>\n      <View data-name=\\\\\"1\\\\\" style={styles.view6}>\n        <Text>Number</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { margin: 10 },\n  view2: { padding: 10 },\n  view3: { border: \\\\\"1px solid\\\\\" },\n  view4: { color: \\\\\"red\\\\\" },\n  view5: { background: \\\\\"blue\\\\\" },\n  view6: { background: \\\\\"blue\\\\\" },\n});\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onClickToPressable 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      <Button onPress={(e) => console.log(\\\\\"event\\\\\")}>\n        <Text>Hello</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onEvent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <View ref={elem}>\n      <View>\n        <Text>Test</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onInit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return (\n    <View>\n      <Text>Default name defined by parent </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onMount 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <View />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <View />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > propsDestructure 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View>\n      {props.children}\n      <Text>{props.type}</Text>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > renderBlock 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > renderContentExample 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { StyleSheet, Pressable } from \\\\\"react-native\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <Pressable\n        onPress={(event) => trackClick(props.content.id)}\n        style={styles.pressable1}\n      >\n        <RenderBlocks blocks={props.content.blocks} />\n      </Pressable>\n    </BuilderContext.Provider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  pressable1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"columns\\\\\" },\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <View>\n            <Text>Bar</Text>\n          </View>\n        </>\n      ) : (\n        <View>\n          <Text>Foo</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      <Text>{props.name}</Text>\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      <Text>{props.name}</Text>\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <View>\n            <Text>Wayne</Text>\n          </View>\n        </MyComponent>\n      ) : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > setState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onPress={(event) => someFn()}>\n        <Text>Click me</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <View>\n      {props.conditionA ? (\n        <>\n          <Text>Content0</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentA</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentA</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentB</Text>\n        </>\n      ) : (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentB</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentC</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentC</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentD</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentD</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentE</Text>\n        </>\n      ) : (\n        <>\n          <Text>hello</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>hello</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentE</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentF</Text>\n        </>\n      ) : (\n        <>\n          <Text>123</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>123</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentF</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          <Text>4mb</Text>\n        </>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>\n          <Text>20mb</Text>\n        </>\n      ) : (\n        <>\n          <Text>9mb</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <>\n              <Text>20mb</Text>\n            </>\n          ) : (\n            <>\n              <Text>9mb</Text>\n            </>\n          )}\n        </>\n      ) : (\n        <>\n          <Text>4mb</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <View>\n              <Text>complete</Text>\n            </View>\n          ) : (\n            <>\n              <Text>9mb</Text>\n            </>\n          )}\n        </>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>\n          <Text>dff</Text>\n        </>\n      ) : (\n        <View>\n          <Text>complete else</Text>\n        </View>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <View key={idx}>\n              <Text>{item}</Text>\n            </View>\n          ))}\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <View>\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentB</Text>\n        </>\n      ) : (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentC</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentD</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentE</Text>\n        </>\n      ) : (\n        <>\n          <Text>hello</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentF</Text>\n        </>\n      ) : (\n        <>\n          <Text>123</Text>\n        </>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction ShowRootText(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <View style={styles.view1}>\n      <Text>{props.id}</Text>\n      <Text>{props.foo.value.bar.baz}</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <TextInput {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <TextInput {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <TextInput {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <View />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > string-literal-store 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return (\n    <View>\n      <Text>{foo}</Text>\n    </View>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View\n      style={{\n        width: \\\\\"100%\\\\\",\n        ...styles.view1,\n      }}\n    />\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return <View style={{ ...styles.view1, ...props.attributes.style }} />;\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n});\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <View\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <View>\n        <View id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </View>\n      </View>\n    </View>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction TypeDependency(props) {\n  return (\n    <View>\n      <Text>{props.foo}</Text>\n    </View>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction TypeExternalProps(props) {\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{props.name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{_name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Button type=\\\\\"button\\\\\">\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Button type=\\\\\"button\\\\\" style={styles.button1}>\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nconst styles = StyleSheet.create({\n  button1: { background: \\\\\"blue\\\\\", color: \\\\\"white\\\\\" },\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Button type=\\\\\"button\\\\\">\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > useTarget 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = \\\\\"rn\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return (\n    <View>\n      <Text>{name()}</Text>\n    </View>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React Native > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>\n        <Text>Slide 1</Text>\n      </swiper-slide>\n      <swiper-slide>\n        <Text>Slide 2</Text>\n      </swiper-slide>\n      <swiper-slide>\n        <Text>Slide 3</Text>\n      </swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React Native > jsx > Remove Internal mitosis package 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n      <Text>! I can run in React, Qwik, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <View>\n      {props.showInput ? (\n        <>\n          <TextInput\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n            style={styles.textInput1}\n          />\n          <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            <Text>Choose a car:</Text>\n          </View>\n          <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <View value=\\\\\"supra\\\\\">\n              <Text>GR Supra</Text>\n            </View>\n            <View value=\\\\\"86\\\\\">\n              <Text>GR 86</Text>\n            </View>\n          </View>\n        </>\n      ) : null}\n      <Text>Hello</Text>\n      <Text>{lowerCaseName()}</Text>\n      <Text>! I can run in React, Qwik, Vue, Solid, or Web Component!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Basic 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <View style={styles.view1}>\n      <TextInput\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! &gt;</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Basic Context 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <View>\n        <Text>{myService.method(\\\\\"hello\\\\\") + name}</Text>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n        <TextInput onChange={(event) => onChange()} />\n      </View>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return <TextInput autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <View>\n      {props.children ? (\n        <>\n          {props.children}\n          <Text>{props.type}</Text>\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </View>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <View>\n      <MyBasicComponent id={dev} />\n      <View>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </View>\n    </View>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <View>\n      {names?.map((person) => (\n        <>\n          <TextInput\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          <Text>Hello </Text>\n          <Text>{person}</Text>\n          <Text>\n            ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </Text>\n        </>\n      ))}\n    </View>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      {props.showInput ? (\n        <>\n          <TextInput\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n            style={styles.textInput1}\n          />\n          <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            <Text>Choose a car:</Text>\n          </View>\n          <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <View value=\\\\\"supra\\\\\">\n              <Text>GR Supra</Text>\n            </View>\n            <View value=\\\\\"86\\\\\">\n              <Text>GR 86</Text>\n            </View>\n          </View>\n        </>\n      ) : null}\n      <Text>Hello</Text>\n      <Text>{lowerCaseName()}</Text>\n      <Text>! I can run in React, Qwik, Vue, Solid, or Web Component!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onPress={async (evt) => await handlerClick(evt)}>\n        <Text>Click</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <View>\n      <View>\n        <Text>Now: </Text>\n        <Text>{count}</Text>\n        <Text>, before: </Text>\n        <Text>{prevCount.current}</Text>\n      </View>\n      <Button onPress={(event) => setCount(1)}>\n        <Text>Increment</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <View style={styles.view1}>\n      {props.columns?.map((column, index) => (\n        <View style={styles.view2}>\n          <Text>{column.content}</Text>\n          <Text>{index}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n  view2: { flexGrow: \\\\\"1\\\\\" },\n});\n\nexport default Column;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <View>\n      <>{props.slotTesting}</>\n      <View>\n        <View />\n      </View>\n      <View>\n        <>{props.children}</>\n      </View>\n    </View>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Pressable } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <Pressable\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onPress={(event) => show()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || <Text>{props.content}</Text>}</>\n            ) : null}\n            <View>\n              <View />\n            </View>\n            <View>{props.children}</View>\n          </Pressable>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > CustomCode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Embed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Form 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <View\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <View style={styles.view1}>\n          <Text>{JSON.stringify(responseData, null, 2)}</Text>\n        </View>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        />\n      ) : null}\n    </View>\n  );\n}\nconst styles = StyleSheet.create({\n  view1: { padding: 10, color: \\\\\"red\\\\\", textAlign: \\\\\"center\\\\\" },\n});\nexport default FormComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Image 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Image, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <View>\n      <View ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <Image\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            source={{ uri: props.image }}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n            style={styles.image1}\n          />\n        ) : null}\n        <View srcset={props.srcset} />\n      </View>\n      {props.children}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  image1: {\n    opacity: \\\\\"1\\\\\",\n    transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n    objectFit: \\\\\"cover\\\\\",\n    objectPosition: \\\\\"center\\\\\",\n  },\n});\n\nexport default Image;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Image State 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Image } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <View>\n      {images?.map((item, itemIndex) => (\n        <Image source={{ uri: item }} key={itemIndex} />\n      ))}\n    </View>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { StyleSheet, Image } from \\\\\"react-native\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <Image\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      source={{ uri: props.imgSrc }}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Input 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <TextInput\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > NestedStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <View id={_id}>\n      <Text>Test</Text>\n      <View id={_messageId}>\n        <Text>Message</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return <View dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }} />;\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <View\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </View>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <View\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <View value={option.value} data-index={index}>\n          <Text>{option.name || option.value}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <>\n        {props.children || (\n          <View>\n            <Text>Default content</Text>\n          </View>\n        )}\n      </>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <ContentSlotCode\n        slotTesting={\n          <View>\n            <Text>Hello</Text>\n          </View>\n        }\n      />\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || <Text>Default left</Text>}</>\n      <>{props.children || <Text>Default Child</Text>}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Stamped.io 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Image, Text, TextInput, Button } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <View data-user={name}>\n      <Button onPress={(event) => setShowReviewPrompt(true)}>\n        <Text>Write a review</Text>\n      </Button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <TextInput placeholder=\\\\\"Email\\\\\" />\n          <TextInput placeholder=\\\\\"Title\\\\\" />\n          <View placeholder=\\\\\"How was your experience?\\\\\" />\n          <Button\n            onPress={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            <Text>Submit</Text>\n          </Button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <View key={review.id} style={styles.view1}>\n          <Image source={{ uri: review.avatar }} style={styles.image1} />\n          <View>\n            <View>\n              <Text>N: </Text>\n              <Text>{index}</Text>\n            </View>\n            <View>\n              <Text>{review.author}</Text>\n            </View>\n            <View>\n              <Text>{review.reviewMessage}</Text>\n            </View>\n          </View>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: {\n    margin: 10,\n    padding: 10,\n    background: \\\\\"white\\\\\",\n    display: \\\\\"flex\\\\\",\n    borderRadius: 5,\n    boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n    WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n  },\n  image1: { height: 30, width: 30, marginRight: 10 },\n});\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > StoreComment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return (\n    <>\n      <Text>{foo}</Text>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <Text>{foo(errors)}</Text>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > StoreWithState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return (\n    <>\n      <Text>{bar()}</Text>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <Button type=\\\\\"submit\\\\\" {...props.attributes}>\n      <Text>{props.text}</Text>\n    </Button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Text 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <View\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return (\n    <View>\n      <Text>Test</Text>\n    </View>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <View\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicForFragment 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <View>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <View>\n            <Text>{option}</Text>\n          </View>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <View>\n            <Text>{option}</Text>\n          </View>\n        </React.Fragment>\n      ))}\n      <View>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <View key={\\`\\${id}-\\${option}\\`} value={option}>\n            <Text>{option}</Text>\n          </View>\n        ))}\n      </View>\n    </View>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      <Text>Hello </Text>\n      <Tag>\n        <Text>{name}</Text>\n      </Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <View>\n            <Text>{action.text}</Text>\n          </View>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <View>\n        <TextInput\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n          style={styles.textInput1}\n        />\n      </View>\n    );\n  }\n);\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <View>\n        <TextInput\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n          style={styles.textInput1}\n        />\n      </View>\n    );\n  }\n);\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return (\n    <View>\n      <Text>Hello! </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return (\n    <Button ref={buttonRef}>\n      <Text>Attribute Passing</Text>\n    </Button>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <View>\n      <Button ref={buttonRef}>\n        <Text>Attribute Passing</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <View>\n      <MyComp>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </MyComp>\n      <View style={styles.view1}>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > className 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <View>\n      <View>\n        <Text>Without Binding</Text>\n      </View>\n      <View>\n        <Text>With binding</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > classState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <View style={{ ...styles.view1, ...styleState }}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <View>\n      {props.children}\n      <Text>{props.type}</Text>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <View />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > componentWithContext 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <Text>{foo.value}</Text>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>\n            <Text>{foo.value}</Text>\n          </>\n          <View>\n            <Text>other</Text>\n          </View>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > contentState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <View>\n        <Text>setting context</Text>\n      </View>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > defaultProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onPress={(event) => props.onClick()}\n        >\n          <Text>{props.buttonText}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onPress={(event) => props.onClick(event)}\n        >\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return (\n    <View>\n      <Text> Hello </Text>\n      <Text>{props.name || DEFAULT_VALUES.name}</Text>\n    </View>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n        style={styles.textInput1}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > eventProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <Button onPress={(event) => handleClick()}>\n      <Text>Test</Text>\n    </Button>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > expressionState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <View>\n      <Text>{refToUse}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <Button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      <Text>{props.label}</Text>\n    </Button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <View\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <View>\n      <View>\n        <Text>{foo2()}</Text>\n      </View>\n      <View>\n        <Text>{bar()}</Text>\n      </View>\n      <View>\n        <Text>{baz(1)}</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > inputToTextInputRN 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        value={name}\n        onChange={(event) => setName(event.target.value)}\n        style={styles.textInput1}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ textInput1: { color: \\\\\"red\\\\\" } });\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <View>\n      <View style={styles.view1}>\n        <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <View />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <TextInput {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <View>\n              <Text>if condition A and condition B</Text>\n            </View>\n          ) : (\n            <View>\n              <Text>else-condition-B</Text>\n            </View>\n          )}\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <View style={styles.view1}>\n      <Text>Hello world</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: {\n    display: \\\\\"flex\\\\\",\n    \\\\\"--bar\\\\\": \\\\\"red\\\\\",\n    color: \\\\\"var(--bar)\\\\\",\n    \\\\\"&:hover\\\\\": { display: \\\\\"flex\\\\\" },\n    \\\\\":active\\\\\": { display: \\\\\"inline\\\\\" },\n    \\\\\".nested-selector\\\\\": { display: \\\\\"grid\\\\\" },\n    \\\\\".nested-selector:hover\\\\\": { display: \\\\\"block\\\\\" },\n    \\\\\"&.nested-selector:active\\\\\": { display: \\\\\"inline-block\\\\\" },\n  },\n});\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <View>\n      <View>\n        <Text>Emoji</Text>\n      </View>\n      <View>\n        <Text>Dashes</Text>\n      </View>\n      <View>\n        <Text>CamelCase</Text>\n      </View>\n      <View>\n        <Text>Special chars</Text>\n      </View>\n      <View>\n        <Text>Special chars with dashes</Text>\n      </View>\n      <View style={styles.view1}>\n        <Text>Single Number</Text>\n      </View>\n      <View style={styles.view2}>\n        <Text>Multiple Numbers</Text>\n      </View>\n      <View style={styles.view3}>\n        <Text>Chars with numbers at end</Text>\n      </View>\n      <View style={styles.view4}>\n        <Text>Chars with numbers at start</Text>\n      </View>\n      <View style={styles.view5}>\n        <Text>Numnbers separated by dash</Text>\n      </View>\n      <View>\n        <Text>Emoji</Text>\n      </View>\n      <View data-name=\\\\\"1\\\\\" style={styles.view6}>\n        <Text>Number</Text>\n      </View>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { margin: 10 },\n  view2: { padding: 10 },\n  view3: { border: \\\\\"1px solid\\\\\" },\n  view4: { color: \\\\\"red\\\\\" },\n  view5: { background: \\\\\"blue\\\\\" },\n  view6: { background: \\\\\"blue\\\\\" },\n});\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onClickToPressable 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      <Button onPress={(e) => console.log(\\\\\"event\\\\\")}>\n        <Text>Hello</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onEvent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <View ref={elem}>\n      <View>\n        <Text>Test</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onInit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return (\n    <View>\n      <Text>Default name defined by parent </Text>\n      <Text>{name}</Text>\n    </View>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onMount 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <View />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <View />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > propsDestructure 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View>\n      {props.children}\n      <Text>{props.type}</Text>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <View>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid! </Text>\n      <Text>{props.name}</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > renderBlock 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > renderContentExample 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { StyleSheet, Pressable } from \\\\\"react-native\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <Pressable\n        onPress={(event) => trackClick(props.content.id)}\n        style={styles.pressable1}\n      >\n        <RenderBlocks blocks={props.content.blocks} />\n      </Pressable>\n    </BuilderContext.Provider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  pressable1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"columns\\\\\" },\n});\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TouchableOpacity, Button, Linking } from \\\\\"react-native\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <TouchableOpacity\n          {...props.attributes}\n          onPress={() => Linking.openURL(props.link)}\n        >\n          <Text>{props.text}</Text>\n        </TouchableOpacity>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          <Text>{props.text}</Text>\n        </Button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <View>\n            <Text>Bar</Text>\n          </View>\n        </>\n      ) : (\n        <View>\n          <Text>Foo</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      <Text>{props.name}</Text>\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      <Text>{props.name}</Text>\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <View>\n            <Text>Wayne</Text>\n          </View>\n        </MyComponent>\n      ) : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > setState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onPress={(event) => someFn()}>\n        <Text>Click me</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <View>\n      {props.conditionA ? (\n        <>\n          <Text>Content0</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentA</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentA</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentB</Text>\n        </>\n      ) : (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentB</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentC</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentC</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentD</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <></>\n      ) : (\n        <>\n          <Text>ContentD</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentE</Text>\n        </>\n      ) : (\n        <>\n          <Text>hello</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>hello</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentE</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentF</Text>\n        </>\n      ) : (\n        <>\n          <Text>123</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>123</Text>\n        </>\n      ) : (\n        <>\n          <Text>ContentF</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          <Text>4mb</Text>\n        </>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>\n          <Text>20mb</Text>\n        </>\n      ) : (\n        <>\n          <Text>9mb</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <>\n              <Text>20mb</Text>\n            </>\n          ) : (\n            <>\n              <Text>9mb</Text>\n            </>\n          )}\n        </>\n      ) : (\n        <>\n          <Text>4mb</Text>\n        </>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? (\n            <View>\n              <Text>complete</Text>\n            </View>\n          ) : (\n            <>\n              <Text>9mb</Text>\n            </>\n          )}\n        </>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>\n          <Text>dff</Text>\n        </>\n      ) : (\n        <View>\n          <Text>complete else</Text>\n        </View>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <View key={idx}>\n              <Text>{item}</Text>\n            </View>\n          ))}\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <View>\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentB</Text>\n        </>\n      ) : (\n        <>\n          <Text>{undefined}</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentC</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentD</Text>\n        </>\n      ) : null}\n      {props.conditionA ? (\n        <>\n          <Text>ContentE</Text>\n        </>\n      ) : (\n        <>\n          <Text>hello</Text>\n        </>\n      )}\n      {props.conditionA ? (\n        <>\n          <Text>ContentF</Text>\n        </>\n      ) : (\n        <>\n          <Text>123</Text>\n        </>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          <Text>ContentA</Text>\n        </>\n      ) : (\n        <View>\n          <Text>else-condition-A</Text>\n        </View>\n      )}\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <View style={styles.view1}>\n      <Text>{props.id}</Text>\n      <Text>{props.foo.bar.baz}</Text>\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({ view1: { padding: 10 } });\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <TextInput {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <TextInput {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <TextInput {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <View />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > string-literal-store 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return (\n    <View>\n      <Text>{foo}</Text>\n    </View>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View\n      style={{\n        width: \\\\\"100%\\\\\",\n        ...styles.view1,\n      }}\n    />\n  );\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet } from \\\\\"react-native\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return <View style={{ ...styles.view1, ...props.attributes.style }} />;\n}\n\nconst styles = StyleSheet.create({\n  view1: { display: \\\\\"flex\\\\\", flexDirection: \\\\\"column\\\\\", alignItems: \\\\\"stretch\\\\\" },\n});\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport {} from \\\\\"react-native\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <View\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <View>\n        <View id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </View>\n      </View>\n    </View>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return (\n    <View>\n      <Text>{props.foo}</Text>\n    </View>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{props.name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{_name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return (\n    <View>\n      <Text>Hello </Text>\n      <Text>{name}</Text>\n      <Text>! </Text>\n    </View>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Button type=\\\\\"button\\\\\">\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Button type=\\\\\"button\\\\\" style={styles.button1}>\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nconst styles = StyleSheet.create({\n  button1: { background: \\\\\"blue\\\\\", color: \\\\\"white\\\\\" },\n});\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Button type=\\\\\"button\\\\\">\n      <Text>Button</Text>\n    </Button>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > useTarget 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = \\\\\"rn\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return (\n    <View>\n      <Text>{name()}</Text>\n    </View>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React Native > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>\n        <Text>Slide 1</Text>\n      </swiper-slide>\n      <swiper-slide>\n        <Text>Slide 2</Text>\n      </swiper-slide>\n      <swiper-slide>\n        <Text>Slide 3</Text>\n      </swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React Native > native-wind style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View className=\\\\\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\\\\\">\n      <Button onPress={(e) => console.log(\\\\\"event\\\\\")}>\n        <Text>Hello</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > basic 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        onChange={(event) => setName(event.target.value)}\n        value={name}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > bindGroup 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <View>\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <View />\n      <View />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <View>\n        <Text>Tortilla: </Text>\n        <Text>{tortilla}</Text>\n      </View>\n      <View>\n        <Text>Fillings: </Text>\n        <Text>{fillings}</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > bindProperty 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <TextInput value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > classDirective 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return <TextInput />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><View><Text>{activeTab}</Text></View></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`React Native > svelte > Javascript Test > each 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <View>\n      {numbers?.map((num) => (\n        <View>\n          <Text>{num}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > eventHandlers 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <View>\n      <Button onPress={(a) => log(\\\\\"hi\\\\\")}>\n        <Text>Log</Text>\n      </Button>\n      <Button onPress={(event) => log(event)}>\n        <Text>Log</Text>\n      </Button>\n      <Button onPress={(event) => log(event)}>\n        <Text>Log</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > html 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <View dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > ifElse 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <Button onPress={(event) => toggle(event)}>\n            <Text> Hide </Text>\n          </Button>\n        </>\n      ) : (\n        <Button onPress={(event) => toggle(event)}>\n          <Text> Show </Text>\n        </Button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > imports 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <View>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > reactive 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      <TextInput value={name} />\n      <Text>Lowercase: </Text>\n      <Text>{lowercaseName()}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <View>\n      <TextInput\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <TextInput\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      <Text>Result: </Text>\n      <Text>{result}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      <>{props.children || <Text>default</Text>}</>\n      <>\n        {props.Test || (\n          <View>\n            <Text>default</Text>\n          </View>\n        )}\n      </>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props) {\n  return <TextInput />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Javascript Test > textExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <View>\n      <Text>normal:</Text>\n      <Text>{a + b}</Text>\n      <View />\n      <Text>conditional</Text>\n      <Text>{a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > basic 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <TextInput\n        onChange={(event) => setName(event.target.value)}\n        value={name}\n      />\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > bindGroup 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <View>\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <View />\n      <View />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <TextInput\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <View>\n        <Text>Tortilla: </Text>\n        <Text>{tortilla}</Text>\n      </View>\n      <View>\n        <Text>Fillings: </Text>\n        <Text>{fillings}</Text>\n      </View>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > bindProperty 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <TextInput value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > classDirective 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return <TextInput />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><View><Text>{activeTab}</Text></View></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`React Native > svelte > Typescript Test > each 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <View>\n      {numbers?.map((num) => (\n        <View>\n          <Text>{num}</Text>\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > eventHandlers 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <View>\n      <Button onPress={(a) => log(\\\\\"hi\\\\\")}>\n        <Text>Log</Text>\n      </Button>\n      <Button onPress={(event) => log(event)}>\n        <Text>Log</Text>\n      </Button>\n      <Button onPress={(event) => log(event)}>\n        <Text>Log</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > html 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <View dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > ifElse 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <Button onPress={(event) => toggle(event)}>\n            <Text> Hide </Text>\n          </Button>\n        </>\n      ) : (\n        <Button onPress={(event) => toggle(event)}>\n          <Text> Show </Text>\n        </Button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > imports 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <View>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"react-native\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > reactive 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      <TextInput value={name} />\n      <Text>Lowercase: </Text>\n      <Text>{lowercaseName()}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, TextInput } from \\\\\"react-native\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <View>\n      <TextInput\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <TextInput\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      <Text>Result: </Text>\n      <Text>{result}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      <>{props.children || <Text>default</Text>}</>\n      <>\n        {props.Test || (\n          <View>\n            <Text>default</Text>\n          </View>\n        )}\n      </>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { TextInput } from \\\\\"react-native\\\\\";\n\nfunction MyComponent(props: any) {\n  return <TextInput />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > svelte > Typescript Test > textExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <View>\n      <Text>normal:</Text>\n      <Text>{a + b}</Text>\n      <View />\n      <Text>conditional</Text>\n      <Text>{a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}</Text>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React Native > twrnc state complex style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { StyleSheet, Text, Button } from \\\\\"react-native\\\\\";\nimport tw from \\\\\"twrnc\\\\\";\nimport { clsx } from \\\\\"clsx\\\\\";\n\nfunction Button(props) {\n  function buttonClasses() {\n    return clsx(\\\\\"px-4 py-2 rounded transition-colors\\\\\", {\n      \\\\\"bg-blue-500 hover:bg-blue-600 text-white\\\\\": props.type === \\\\\"primary\\\\\",\n      \\\\\"bg-gray-300 hover:bg-gray-400 text-black\\\\\": props.type === \\\\\"secondary\\\\\",\n    });\n  }\n\n  return (\n    <Button\n      onPress={(event) => props.onClick()}\n      style={tw.style(buttonClasses())}\n    >\n      {props.children}\n    </Button>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React Native > twrnc state style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text } from \\\\\"react-native\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport tw from \\\\\"twrnc\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  return (\n    <View style={tw.style(classState)}>\n      <Text>Hello! I can run in React, Vue, Solid, or Liquid!</Text>\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React Native > twrnc style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, StyleSheet, Text, Button } from \\\\\"react-native\\\\\";\nimport tw from \\\\\"twrnc\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View\n      style={tw\\`bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\\`}\n    >\n      <Button onPress={(e) => console.log(\\\\\"event\\\\\")}>\n        <Text>Hello</Text>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-state-builder.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: builder > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useBuilderState({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const state = useBuilderState({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  const state = useBuilderState({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useBuilderState({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useBuilderState({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useBuilderState({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const state = useBuilderState({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const state = useBuilderState({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const state = useBuilderState({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const state = useBuilderState({\n    handleChange(value) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const state = useBuilderState({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  const state = useBuilderState({});\n\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const state = useBuilderState({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useBuilderState({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  const state = useBuilderState({});\n\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const state = useBuilderState({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  const state = useBuilderState({});\n\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const state = useBuilderState({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  const state = useBuilderState({});\n\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const state = useBuilderState({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const state = useBuilderState({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  const state = useBuilderState({});\n\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const state = useBuilderState({});\n\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const state = useBuilderState({});\n\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  const state = useBuilderState({});\n\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const state = useBuilderState({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  const state = useBuilderState({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  const state = useBuilderState({});\n\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  const state = useBuilderState({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const state = useBuilderState({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const state = useBuilderState({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  const state = useBuilderState({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const state = useBuilderState({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const state = useBuilderState({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  const state = useBuilderState({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const state = useBuilderState({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const state = useBuilderState({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  const state = useBuilderState({});\n\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({});\n\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useBuilderState({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useBuilderState({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  const state = useBuilderState({});\n\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  const state = useBuilderState({});\n\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  const state = useBuilderState({});\n\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const state = useBuilderState({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const state = useBuilderState({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  const state = useBuilderState({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const state = useBuilderState({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useBuilderState({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const state = useBuilderState({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const state = useBuilderState({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useBuilderState({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useBuilderState({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useBuilderState({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const state = useBuilderState({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action! /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const state = useBuilderState({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const state = useBuilderState({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  const state = useBuilderState({});\n\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  const state = useBuilderState({});\n\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const state = useBuilderState({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const state = useBuilderState({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  const state = useBuilderState({});\n\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  const state = useBuilderState({});\n\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  const state = useBuilderState({});\n\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const state = useBuilderState({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useBuilderState({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  const state = useBuilderState({});\n\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const state = useBuilderState({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  const state = useBuilderState({});\n\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const state = useBuilderState({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  const state = useBuilderState({});\n\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const state = useBuilderState({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const state = useBuilderState({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const state = useBuilderState({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  const state = useBuilderState({});\n\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const state = useBuilderState({});\n\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const state = useBuilderState({});\n\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  const state = useBuilderState({});\n\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const state = useBuilderState({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  const state = useBuilderState({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useBuilderState({});\n\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useBuilderState({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const state = useBuilderState({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const state = useBuilderState({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useBuilderState({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const state = useBuilderState({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const state = useBuilderState({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useBuilderState({});\n\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useBuilderState({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  const state = useBuilderState({});\n\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  const state = useBuilderState({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const state = useBuilderState({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const state = useBuilderState({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  const state = useBuilderState({});\n\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useBuilderState({});\n\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useBuilderState({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useBuilderState({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  const state = useBuilderState({});\n\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  const state = useBuilderState({});\n\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  const state = useBuilderState({});\n\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const state = useBuilderState({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const state = useBuilderState({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: builder > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const state = useBuilderState({});\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const state = useBuilderState({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({});\n\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: builder > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useBuilderState({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-state-mobx.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: mobx > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicRefComponent = observer(MyBasicRefComponent);\nexport default observedMyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  }));\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  }));\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  }));\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nconst observedMyBasicOnMountUpdateComponent = observer(\n  MyBasicOnMountUpdateComponent\n);\nexport default observedMyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyBasicOutputsComponent = observer(MyBasicOutputsComponent);\nexport default observedMyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyBasicOutputsComponent = observer(MyBasicOutputsComponent);\nexport default observedMyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nconst observedMyBooleanAttribute = observer(MyBooleanAttribute);\nexport default observedMyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  }));\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nconst observedMyBasicChildComponent = observer(MyBasicChildComponent);\nexport default observedMyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  }));\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nconst observedMyBasicForComponent = observer(MyBasicForComponent);\nexport default observedMyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicRefComponent = observer(MyBasicRefComponent);\nexport default observedMyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useLocalObservable(() => ({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nconst observedMyBasicRefAssignmentComponent = observer(\n  MyBasicRefAssignmentComponent\n);\nexport default observedMyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const state = useLocalObservable(() => ({ count: 0 }));\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nconst observedMyPreviousComponent = observer(MyPreviousComponent);\nexport default observedMyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction Column(props) {\n  const state = useLocalObservable(() => ({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  }));\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedColumn = observer(Column);\nexport default observedColumn;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nconst observedContentSlotCode = observer(ContentSlotCode);\nexport default observedContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useLocalObservable(() => ({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  }));\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nconst observedContentSlotJsxCode = observer(ContentSlotJsxCode);\nexport default observedContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useLocalObservable(() => ({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  }));\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nconst observedCustomCode = observer(CustomCode);\nexport default observedCustomCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useLocalObservable(() => ({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  }));\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nconst observedCustomCode = observer(CustomCode);\nexport default observedCustomCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const state = useLocalObservable(() => ({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  }));\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nconst observedFormComponent = observer(FormComponent);\nexport default observedFormComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const state = useLocalObservable(() => ({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  }));\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedImage = observer(Image);\nexport default observedImage;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction ImgStateComponent(props) {\n  const state = useLocalObservable(() => ({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  }));\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nconst observedImgStateComponent = observer(ImgStateComponent);\nexport default observedImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nconst observedImgComponent = observer(ImgComponent);\nexport default observedImgComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nconst observedFormInputComponent = observer(FormInputComponent);\nexport default observedFormInputComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const state = useLocalObservable(() => ({\n    handleChange(value) {\n      console.log(value);\n    },\n  }));\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nconst observedStepper = observer(Stepper);\nexport default observedStepper;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction NestedStore(props) {\n  const state = useLocalObservable(() => ({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  }));\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nconst observedNestedStore = observer(NestedStore);\nexport default observedNestedStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nconst observedRawText = observer(RawText);\nexport default observedRawText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nconst observedSectionComponent = observer(SectionComponent);\nexport default observedSectionComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nconst observedSelectComponent = observer(SelectComponent);\nexport default observedSelectComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const state = useLocalObservable(() => ({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  }));\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedSmileReviews = observer(SmileReviews);\nexport default observedSmileReviews;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalObservable(() => ({ foo: true, bar() {} }));\n\n  return <>{state.foo}</>;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  }));\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  }));\n\n  return <>{state.bar()}</>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nconst observedSubmitButton = observer(SubmitButton);\nexport default observedSubmitButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Decadef20\\\\\" }));\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nconst observedText = observer(Text);\nexport default observedText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nconst observedTextarea = observer(Textarea);\nexport default observedTextarea;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const state = useLocalObservable(() => ({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  }));\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nconst observedUseValueAndFnFromStore = observer(UseValueAndFnFromStore);\nexport default observedUseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nconst observedVideo = observer(Video);\nexport default observedVideo;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  }));\n\n  return <div>Hello {state.name}</div>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction BasicForFragment(props) {\n  const state = useLocalObservable(() => ({ id: \\\\\"xyz\\\\\" }));\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nconst observedBasicForFragment = observer(BasicForFragment);\nexport default observedBasicForFragment;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  }));\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nconst observedMyBasicForNoTagRefComponent = observer(\n  MyBasicForNoTagRefComponent\n);\nexport default observedMyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nconst observedMyBasicForwardRefComponent = observer(MyBasicForwardRefComponent);\nexport default observedMyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nconst observedMyBasicForwardRefComponent = observer(MyBasicForwardRefComponent);\nexport default observedMyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nconst observedMyBasicOnUpdateReturnComponent = observer(\n  MyBasicOnUpdateReturnComponent\n);\nexport default observedMyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nconst observedBasicRefAttributePassingComponent = observer(\n  BasicRefAttributePassingComponent\n);\nexport default observedBasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nconst observedBasicRefAttributePassingCustomRefComponent = observer(\n  BasicRefAttributePassingCustomRefComponent\n);\nexport default observedBasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction ClassNameCode(props) {\n  const state = useLocalObservable(() => ({ bindings: \\\\\"a binding\\\\\" }));\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nconst observedClassNameCode = observer(ClassNameCode);\nexport default observedClassNameCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  }));\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nconst observedComplexMetaRaw = observer(ComplexMetaRaw);\nexport default observedComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nconst observedComponentWithContext = observer(ComponentWithContext);\nexport default observedComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nconst observedComponentWithContext = observer(ComponentWithContext);\nexport default observedComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nconst observedComponentWithTypes = observer(ComponentWithTypes);\nexport default observedComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction EventInputAndChange(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Steve\\\\\" }));\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedEventInputAndChange = observer(EventInputAndChange);\nexport default observedEventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction EventPropsComponent(props) {\n  const state = useLocalObservable(() => ({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  }));\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nconst observedEventPropsComponent = observer(EventPropsComponent);\nexport default observedEventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  }));\n\n  return <div>{state.refToUse}</div>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nconst observedFigmaButton = observer(FigmaButton);\nexport default observedFigmaButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction Button(props) {\n  const state = useLocalObservable(() => ({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  }));\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const state = useLocalObservable(() => ({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  }));\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyLayerNameComponent = observer(MyLayerNameComponent);\nexport default observedMyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nconst observedMultipleOnUpdate = observer(MultipleOnUpdate);\nexport default observedMultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const state = useLocalObservable(() => ({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" }));\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nconst observedMultipleOnUpdateWithDeps = observer(MultipleOnUpdateWithDeps);\nexport default observedMultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nconst observedNestedShow = observer(NestedShow);\nexport default observedNestedShow;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedNestedStyles = observer(NestedStyles);\nexport default observedNestedStyles;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyNormalizedLayerNamesComponent = observer(\n  MyNormalizedLayerNamesComponent\n);\nexport default observedMyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  const state = useLocalObservable(() => ({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  }));\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nconst observedEmbed = observer(Embed);\nexport default observedEmbed;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nconst observedOnInit = observer(OnInit);\nexport default observedOnInit;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"\\\\\" }));\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nconst observedOnInit = observer(OnInit);\nexport default observedOnInit;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nconst observedOnInitPlain = observer(OnInitPlain);\nexport default observedOnInitPlain;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nconst observedComp = observer(Comp);\nexport default observedComp;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nconst observedComp = observer(Comp);\nexport default observedComp;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nconst observedOnUpdate = observer(OnUpdate);\nexport default observedOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const state = useLocalObservable(() => ({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" }));\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nconst observedOnUpdateWithDeps = observer(OnUpdateWithDeps);\nexport default observedOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Decadef20\\\\\" }));\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction OnUpdate(props) {\n  const state = useLocalObservable(() => ({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  }));\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nconst observedOnUpdate = observer(OnUpdate);\nexport default observedOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const state = useLocalObservable(() => ({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  }));\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nconst observedRenderBlock = observer(RenderBlock);\nexport default observedRenderBlock;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nconst observedRenderStyles = observer(RenderStyles);\nexport default observedRenderStyles;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction SetState(props) {\n  const state = useLocalObservable(() => ({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nconst observedSetState = observer(SetState);\nexport default observedSetState;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nconst observedShowWithOtherValues = observer(ShowWithOtherValues);\nexport default observedShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nconst observedNestedShow = observer(NestedShow);\nexport default observedNestedShow;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nconst observedShowWithOtherValues = observer(ShowWithOtherValues);\nexport default observedShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nconst observedShowRootText = observer(ShowRootText);\nexport default observedShowRootText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalObservable(() => ({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  }));\n\n  return <div />;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalObservable(() => ({ foo: 123 }));\n\n  return <div>{state.foo}</div>;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedStylePropClassAndCss = observer(StylePropClassAndCss);\nexport default observedStylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nconst observedSubComponent = observer(SubComponent);\nexport default observedSubComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nconst observedSvgComponent = observer(SvgComponent);\nexport default observedSvgComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nconst observedTypeDependency = observer(TypeDependency);\nexport default observedTypeDependency;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nconst observedTypeExternalProps = observer(TypeExternalProps);\nexport default observedTypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction TypeExternalStore(props) {\n  const state = useLocalObservable(() => ({ _name: \\\\\"test\\\\\" }));\n\n  return <div>Hello {state._name}! </div>;\n}\n\nconst observedTypeExternalStore = observer(TypeExternalStore);\nexport default observedTypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction TypeGetterStore(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  }));\n\n  return <div>Hello {state.name}! </div>;\n}\n\nconst observedTypeGetterStore = observer(TypeGetterStore);\nexport default observedTypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction UseTargetComponent(props) {\n  const state = useLocalObservable(() => ({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  }));\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nconst observedUseTargetComponent = observer(UseTargetComponent);\nexport default observedUseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nconst observedMyBasicWebComponent = observer(MyBasicWebComponent);\nexport default observedMyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  return (\n    <div>\n      Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicRefComponent = observer(MyBasicRefComponent);\nexport default observedMyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  }));\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  }));\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  }));\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nconst observedMyBasicOnMountUpdateComponent = observer(\n  MyBasicOnMountUpdateComponent\n);\nexport default observedMyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyBasicOutputsComponent = observer(MyBasicOutputsComponent);\nexport default observedMyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyBasicOutputsComponent = observer(MyBasicOutputsComponent);\nexport default observedMyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nconst observedMyBooleanAttribute = observer(MyBooleanAttribute);\nexport default observedMyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  }));\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nconst observedMyBasicChildComponent = observer(MyBasicChildComponent);\nexport default observedMyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  }));\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nconst observedMyBasicForComponent = observer(MyBasicForComponent);\nexport default observedMyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const state = useLocalObservable(() => ({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicRefComponent = observer(MyBasicRefComponent);\nexport default observedMyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useLocalObservable(() => ({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nconst observedMyBasicRefAssignmentComponent = observer(\n  MyBasicRefAssignmentComponent\n);\nexport default observedMyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const state = useLocalObservable(() => ({ count: 0 }));\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nconst observedMyPreviousComponent = observer(MyPreviousComponent);\nexport default observedMyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const state = useLocalObservable(() => ({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  }));\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedColumn = observer(Column);\nexport default observedColumn;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nconst observedContentSlotCode = observer(ContentSlotCode);\nexport default observedContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useLocalObservable(() => ({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  }));\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nconst observedContentSlotJsxCode = observer(ContentSlotJsxCode);\nexport default observedContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalObservable(() => ({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  }));\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nconst observedCustomCode = observer(CustomCode);\nexport default observedCustomCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalObservable(() => ({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  }));\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nconst observedCustomCode = observer(CustomCode);\nexport default observedCustomCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const state = useLocalObservable(() => ({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action! /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  }));\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nconst observedFormComponent = observer(FormComponent);\nexport default observedFormComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const state = useLocalObservable(() => ({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  }));\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedImage = observer(Image);\nexport default observedImage;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  }));\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nconst observedImgStateComponent = observer(ImgStateComponent);\nexport default observedImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nconst observedImgComponent = observer(ImgComponent);\nexport default observedImgComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nconst observedFormInputComponent = observer(FormInputComponent);\nexport default observedFormInputComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const state = useLocalObservable(() => ({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  }));\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nconst observedStepper = observer(Stepper);\nexport default observedStepper;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const state = useLocalObservable(() => ({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  }));\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nconst observedNestedStore = observer(NestedStore);\nexport default observedNestedStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nconst observedRawText = observer(RawText);\nexport default observedRawText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nconst observedSectionComponent = observer(SectionComponent);\nexport default observedSectionComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nconst observedSelectComponent = observer(SelectComponent);\nexport default observedSelectComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nconst observedSlotCode = observer(SlotCode);\nexport default observedSlotCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const state = useLocalObservable(() => ({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  }));\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedSmileReviews = observer(SmileReviews);\nexport default observedSmileReviews;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalObservable(() => ({ foo: true, bar() {} }));\n\n  return <>{state.foo}</>;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  }));\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  }));\n\n  return <>{state.bar()}</>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nconst observedSubmitButton = observer(SubmitButton);\nexport default observedSubmitButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Decadef20\\\\\" }));\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nconst observedText = observer(Text);\nexport default observedText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nconst observedTextarea = observer(Textarea);\nexport default observedTextarea;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const state = useLocalObservable(() => ({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  }));\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nconst observedUseValueAndFnFromStore = observer(UseValueAndFnFromStore);\nexport default observedUseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nconst observedVideo = observer(Video);\nexport default observedVideo;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  }));\n\n  return <div>Hello {state.name}</div>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const state = useLocalObservable(() => ({ id: \\\\\"xyz\\\\\" }));\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nconst observedBasicForFragment = observer(BasicForFragment);\nexport default observedBasicForFragment;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  }));\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nconst observedMyBasicForNoTagRefComponent = observer(\n  MyBasicForNoTagRefComponent\n);\nexport default observedMyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nconst observedMyBasicForwardRefComponent = observer(MyBasicForwardRefComponent);\nexport default observedMyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nconst observedMyBasicForwardRefComponent = observer(MyBasicForwardRefComponent);\nexport default observedMyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const state = useLocalObservable(() => ({ name: \\\\\"PatrickJS\\\\\" }));\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nconst observedMyBasicOnUpdateReturnComponent = observer(\n  MyBasicOnUpdateReturnComponent\n);\nexport default observedMyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nconst observedBasicRefAttributePassingComponent = observer(\n  BasicRefAttributePassingComponent\n);\nexport default observedBasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nconst observedBasicRefAttributePassingCustomRefComponent = observer(\n  BasicRefAttributePassingCustomRefComponent\n);\nexport default observedBasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const state = useLocalObservable(() => ({ bindings: \\\\\"a binding\\\\\" }));\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nconst observedClassNameCode = observer(ClassNameCode);\nexport default observedClassNameCode;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  }));\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nconst observedComplexMetaRaw = observer(ComplexMetaRaw);\nexport default observedComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nconst observedComponentWithContext = observer(ComponentWithContext);\nexport default observedComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nconst observedComponentWithContext = observer(ComponentWithContext);\nexport default observedComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nconst observedComponentWithTypes = observer(ComponentWithTypes);\nexport default observedComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Steve\\\\\" }));\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedEventInputAndChange = observer(EventInputAndChange);\nexport default observedEventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  const state = useLocalObservable(() => ({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  }));\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nconst observedEventPropsComponent = observer(EventPropsComponent);\nexport default observedEventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  }));\n\n  return <div>{state.refToUse}</div>;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nconst observedFigmaButton = observer(FigmaButton);\nexport default observedFigmaButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useLocalObservable(() => ({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  }));\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const state = useLocalObservable(() => ({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  }));\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyLayerNameComponent = observer(MyLayerNameComponent);\nexport default observedMyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nconst observedMultipleOnUpdate = observer(MultipleOnUpdate);\nexport default observedMultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const state = useLocalObservable(() => ({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" }));\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nconst observedMultipleOnUpdateWithDeps = observer(MultipleOnUpdateWithDeps);\nexport default observedMultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nconst observedNestedShow = observer(NestedShow);\nexport default observedNestedShow;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedNestedStyles = observer(NestedStyles);\nexport default observedNestedStyles;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyNormalizedLayerNamesComponent = observer(\n  MyNormalizedLayerNamesComponent\n);\nexport default observedMyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalObservable(() => ({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  }));\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nconst observedEmbed = observer(Embed);\nexport default observedEmbed;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nconst observedOnInit = observer(OnInit);\nexport default observedOnInit;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"\\\\\" }));\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nconst observedOnInit = observer(OnInit);\nexport default observedOnInit;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nconst observedOnInitPlain = observer(OnInitPlain);\nexport default observedOnInitPlain;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nconst observedComp = observer(Comp);\nexport default observedComp;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nconst observedComp = observer(Comp);\nexport default observedComp;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nconst observedOnUpdate = observer(OnUpdate);\nexport default observedOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const state = useLocalObservable(() => ({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" }));\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nconst observedOnUpdateWithDeps = observer(OnUpdateWithDeps);\nexport default observedOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Decadef20\\\\\" }));\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction OnUpdate(props: any) {\n  const state = useLocalObservable(() => ({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  }));\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nconst observedOnUpdate = observer(OnUpdate);\nexport default observedOnUpdate;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const state = useLocalObservable(() => ({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  }));\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nconst observedRenderBlock = observer(RenderBlock);\nexport default observedRenderBlock;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedRenderContent = observer(RenderContent);\nexport default observedRenderContent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nconst observedButton = observer(Button);\nexport default observedButton;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nconst observedRenderStyles = observer(RenderStyles);\nexport default observedRenderStyles;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction SetState(props: any) {\n  const state = useLocalObservable(() => ({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nconst observedSetState = observer(SetState);\nexport default observedSetState;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nconst observedShowWithOtherValues = observer(ShowWithOtherValues);\nexport default observedShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nconst observedNestedShow = observer(NestedShow);\nexport default observedNestedShow;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nconst observedShowWithOtherValues = observer(ShowWithOtherValues);\nexport default observedShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nconst observedShowRootText = observer(ShowRootText);\nexport default observedShowRootText;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nconst observedMyBasicComponent = observer(MyBasicComponent);\nexport default observedMyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalObservable(() => ({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  }));\n\n  return <div />;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalObservable(() => ({ foo: 123 }));\n\n  return <div>{state.foo}</div>;\n}\n\nconst observedStringLiteralStore = observer(StringLiteralStore);\nexport default observedStringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedStylePropClassAndCss = observer(StylePropClassAndCss);\nexport default observedStylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nconst observedSubComponent = observer(SubComponent);\nexport default observedSubComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nconst observedSvgComponent = observer(SvgComponent);\nexport default observedSvgComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nconst observedTypeDependency = observer(TypeDependency);\nexport default observedTypeDependency;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nconst observedTypeExternalProps = observer(TypeExternalProps);\nexport default observedTypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const state = useLocalObservable(() => ({ _name: \\\\\"test\\\\\" }));\n\n  return <div>Hello {state._name}! </div>;\n}\n\nconst observedTypeExternalStore = observer(TypeExternalStore);\nexport default observedTypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  }));\n\n  return <div>Hello {state.name}! </div>;\n}\n\nconst observedTypeGetterStore = observer(TypeGetterStore);\nexport default observedTypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  }));\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nconst observedUseTargetComponent = observer(UseTargetComponent);\nexport default observedUseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nconst observedMyBasicWebComponent = observer(MyBasicWebComponent);\nexport default observedMyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Steve\\\\\" }));\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ tortilla: \\\\\"Plain\\\\\", fillings: [] }));\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ value: \\\\\"hello\\\\\" }));\n\n  return <input value={state.value} />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ focus: true }));\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"],\n  }));\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ html: \\\\\"<b>bold</b>\\\\\" }));\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  }));\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ disabled: false }));\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  }));\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalObservable(() => ({ a: 5, b: 12 }));\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ name: \\\\\"Steve\\\\\" }));\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ tortilla: \\\\\"Plain\\\\\", fillings: [] }));\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ value: \\\\\"hello\\\\\" }));\n\n  return <input value={state.value} />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ focus: true }));\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"],\n  }));\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  }));\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ html: \\\\\"<b>bold</b>\\\\\" }));\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  }));\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ disabled: false }));\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  }));\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  }));\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n\nexports[`React - stateType: mobx > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalObservable(() => ({ a: 5, b: 12 }));\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nconst observedMyComponent = observer(MyComponent);\nexport default observedMyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-state-solid.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: solid > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useMutable({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const state = useMutable({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction Column(props) {\n  const state = useMutable({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useMutable({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useMutable({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useMutable({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const state = useMutable({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const state = useMutable({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction ImgStateComponent(props) {\n  const state = useMutable({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const state = useMutable({\n    handleChange(value) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction NestedStore(props) {\n  const state = useMutable({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const state = useMutable({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useMutable({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const state = useMutable({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const state = useMutable({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction BasicForFragment(props) {\n  const state = useMutable({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const state = useMutable({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction ClassNameCode(props) {\n  const state = useMutable({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction EventInputAndChange(props) {\n  const state = useMutable({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction EventPropsComponent(props) {\n  const state = useMutable({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction Button(props) {\n  const state = useMutable({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const state = useMutable({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const state = useMutable({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  const state = useMutable({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const state = useMutable({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const state = useMutable({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction OnUpdate(props) {\n  const state = useMutable({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const state = useMutable({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction SetState(props) {\n  const state = useMutable({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useMutable({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useMutable({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction TypeExternalStore(props) {\n  const state = useMutable({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction TypeGetterStore(props) {\n  const state = useMutable({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction UseTargetComponent(props) {\n  const state = useMutable({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const state = useMutable({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useMutable({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const state = useMutable({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const state = useMutable({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useMutable({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useMutable({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useMutable({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const state = useMutable({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action! /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const state = useMutable({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const state = useMutable({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const state = useMutable({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const state = useMutable({ _id: \\\\\"abc\\\\\", _messageId: state._id + \\\\\"-message\\\\\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const state = useMutable({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useMutable({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const state = useMutable({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const state = useMutable({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const state = useMutable({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const state = useMutable({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const state = useMutable({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useMutable({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const state = useMutable({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  const state = useMutable({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useMutable({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const state = useMutable({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const state = useMutable({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useMutable({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useMutable({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const state = useMutable({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const state = useMutable({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useMutable({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction OnUpdate(props: any) {\n  const state = useMutable({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const state = useMutable({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction SetState(props: any) {\n  const state = useMutable({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useMutable({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useMutable({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const state = useMutable({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const state = useMutable({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const state = useMutable({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: solid > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props) {\n  const state = useMutable({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: solid > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useMutable } from \\\\\"react-solid-state\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useMutable({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-state-valtio.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: valtio > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useLocalProxy({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const state = useLocalProxy({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction Column(props) {\n  const state = useLocalProxy({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useLocalProxy({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useLocalProxy({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const state = useLocalProxy({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const state = useLocalProxy({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const state = useLocalProxy({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction ImgStateComponent(props) {\n  const state = useLocalProxy({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const state = useLocalProxy({\n    handleChange(value) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction NestedStore(props) {\n  const state = useLocalProxy({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const state = useLocalProxy({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalProxy({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const state = useLocalProxy({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const state = useLocalProxy({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction BasicForFragment(props) {\n  const state = useLocalProxy({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction ClassNameCode(props) {\n  const state = useLocalProxy({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction EventInputAndChange(props) {\n  const state = useLocalProxy({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction EventPropsComponent(props) {\n  const state = useLocalProxy({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction Button(props) {\n  const state = useLocalProxy({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const state = useLocalProxy({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const state = useLocalProxy({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  const state = useLocalProxy({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const state = useLocalProxy({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const state = useLocalProxy({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction OnUpdate(props) {\n  const state = useLocalProxy({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const state = useLocalProxy({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction SetState(props) {\n  const state = useLocalProxy({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalProxy({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props) {\n  const state = useLocalProxy({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction TypeExternalStore(props) {\n  const state = useLocalProxy({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction TypeGetterStore(props) {\n  const state = useLocalProxy({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction UseTargetComponent(props) {\n  const state = useLocalProxy({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  return (\n    <div>\n      Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n    age: 1,\n    sports: [\\\\\"\\\\\"],\n  });\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || state.name}\n          onChange={(myEvent) => (state.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onChange: function onChange() {\n      const change = myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  });\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + state.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => state.onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    state.name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    dev: \\\\\"PatrickJS\\\\\",\n    log: function log(message: string) {\n      console.log(message);\n    },\n  });\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={(event) => state.log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"],\n  });\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {state.names?.map((person) => (\n        <>\n          <input\n            value={state.name}\n            onChange={(event) => {\n              state.name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const state = useLocalProxy({\n    name: \\\\\"PatrickJS\\\\\",\n    onBlur: function onBlur() {\n      // Maintain focus\n      inputRef.current?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => (state.name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {state.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const state = useLocalProxy({\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef.current);\n      holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (evt) => await state.handlerClick(evt)}>\n        Click\n      </button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const state = useLocalProxy({ count: 0 });\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = state.count;\n  }, [state.count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const state = useLocalProxy({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const state = useLocalProxy({\n    name: \\\\\"king\\\\\",\n    showContent: false,\n    get cls() {\n      return props.slotContent && props.children ? \\`\\${state.name}-content\\` : \\\\\"\\\\\";\n    },\n    show() {\n      props.slotContent ? 1 : \\\\\"\\\\\";\n    },\n  });\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => state.show()}\n            className={state.cls}\n          >\n            {state.showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalProxy({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalProxy({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  useEffect(() => {\n    state.findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const state = useLocalProxy({\n    formState: \\\\\"unsubmitted\\\\\",\n    responseData: null,\n    formErrorMessage: \\\\\"\\\\\",\n    get submissionState() {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs =\n        props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n              sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n            )\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: { body },\n        });\n        if (formRef.current) {\n          formRef.current.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n        state.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          props.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          props.sendSubmissionsTo === \\\\\"email\\\\\"\n            ? formUrl\n            : props.action! /* TODO: throw error if no action URL */,\n          { body, headers, method: props.method || \\\\\"post\\\\\" }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */ let message =\n                get(body, props.errorMessagePath);\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                    JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n            state.responseData = body;\n            state.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: { res, body },\n              });\n              if (formRef.current) {\n                formRef.current.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */ if (\n                  props.resetFormOnSubmit !== false\n                ) {\n                  formRef.current.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */ if (\n                props.successUrl\n              ) {\n                if (formRef.current) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: { url: props.successUrl },\n                  });\n                  formRef.current.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: { error: err },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n            state.responseData = err;\n            state.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  });\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => state.onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {state.submissionState === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {state.submissionState === \\\\\"error\\\\\" && state.responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(state.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {state.submissionState === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const state = useLocalProxy({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  useEffect(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (state.scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", state.scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!state.useLazyLoading() || state.load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => state.setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const state = useLocalProxy({\n    canShow: true,\n    images: [\\\\\"http://example.com/qwik.png\\\\\"],\n  });\n\n  return (\n    <div>\n      {state.images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const state = useLocalProxy({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const state = useLocalProxy({\n    _id: \\\\\"abc\\\\\",\n    _messageId: state._id + \\\\\"-message\\\\\",\n  });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const state = useLocalProxy({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalProxy({ foo: true, bar() {} });\n\n  return <>{state.foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    foo: false,\n    bar() {\n      return state.foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const state = useLocalProxy({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: state.name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          state.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const state = useLocalProxy({\n    _id: \\\\\"abc\\\\\",\n    _active: false,\n    _do(id?: string) {\n      state._active = !!id;\n\n      if (props.onChange) {\n        props.onChange(state._active);\n      }\n    },\n  });\n\n  useEffect(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"steve\\\\\",\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const state = useLocalProxy({ id: \\\\\"xyz\\\\\" });\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${state.id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${state.id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"VincentW\\\\\",\n    TagName: \\\\\"div\\\\\",\n    tag: \\\\\"span\\\\\",\n    get TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      {props.actions?.map((action) => (\n        <state.TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </state.TagName>\n      ))}\n    </state.TagNameGetter>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={state.name}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const state = useLocalProxy({ name: \\\\\"PatrickJS\\\\\" });\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const state = useLocalProxy({ bindings: \\\\\"a binding\\\\\" });\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalProxy({\n    classState: \\\\\"testClassName\\\\\",\n    styleState: {\n      color: \\\\\"red\\\\\",\n    },\n  });\n\n  return (\n    <>\n      <div className={state.classState + \\\\\" div\\\\\"} style={state.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const state = useLocalProxy({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={state.name}\n          onInput={(event) => (state.name = event.target.value)}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  const state = useLocalProxy({\n    handleClick() {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n\n      if (props.onPass) {\n        props.onPass(\\\\\"test\\\\\");\n      }\n    },\n  });\n\n  return <button onClick={(event) => state.handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    refToUse: !(props.componentRef instanceof Function)\n      ? props.componentRef\n      : null,\n  });\n\n  return <div>{state.refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const state = useLocalProxy({\n    get foo2() {\n      return props.foo + \\\\\"foo\\\\\";\n    },\n    get bar() {\n      return \\\\\"bar\\\\\";\n    },\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const state = useLocalProxy({\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const state = useLocalProxy({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", state.a, state.b);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.a, state.b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", state.c, state.d);\n\n    if (state.a === \\\\\"a\\\\\") {\n      state.a = \\\\\"b\\\\\";\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const state = useLocalProxy({\n    attrs: {\n      hello: \\\\\"world\\\\\",\n    },\n  });\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  const state = useLocalProxy({\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      state.foo(event);\n    },\n  });\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const state = useLocalProxy({ name: \\\\\"\\\\\" });\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    state.name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const state = useLocalProxy({ a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" });\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const state = useLocalProxy({ name: \\\\\"Decadef20\\\\\" });\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction OnUpdate(props: any) {\n  const state = useLocalProxy({\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: state.bar,\n      };\n    },\n  });\n\n  useEffect(() => {\n    state.foo({\n      someOption: state.bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const state = useLocalProxy({\n    get component() {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock() {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n    get renderComponentProps() {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: { ...state.attributes, ...state.actions },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !state.component?.component && !state.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n    get repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    get inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    get childrenContext() {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n    get renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n    componentInfo: null,\n  });\n\n  return (\n    <>\n      {state.shouldWrap ? (\n        <>\n          {isEmptyHtmlElement(state.tag) ? (\n            <state.tag {...state.attributes} {...state.actions} />\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && state.repeatItemData ? (\n            <>\n              {state.repeatItemData?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(state.tag) && !state.repeatItemData ? (\n            <state.tag {...state.attributes} {...state.actions}>\n              <state.renderComponentTag {...state.renderComponentProps} />\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n              {state.childrenWithoutParentComponent?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={state.childrenContext}\n                />\n              ))}\n            </state.tag>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <state.renderComponentTag {...state.renderComponentProps} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction SetState(props: any) {\n  const state = useLocalProxy({\n    n: [\\\\\"123\\\\\"],\n    someFn() {\n      state.n[0] = \\\\\"123\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(event) => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalProxy({\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const state = useLocalProxy({ foo: 123 });\n\n  return <div>{state.foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const state = useLocalProxy({ _name: \\\\\"test\\\\\" });\n\n  return <div>Hello {state._name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"test\\\\\",\n    getName() {\n      if (state.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return state.name;\n    },\n    get test() {\n      return \\\\\"test\\\\\";\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const state = useLocalProxy({\n    get name() {\n      const prefix = 123;\n      return prefix + \\\\\"foo\\\\\";\n    },\n    lastName: \\\\\"bar\\\\\",\n    foo: \\\\\"bar\\\\\",\n  });\n\n  useEffect(() => {\n    console.log(state.foo);\n    state.foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    state.lastName = \\\\\"baz\\\\\";\n    console.log(state.foo);\n    state.foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{state.name}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props) {\n  const state = useLocalProxy({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ name: \\\\\"Steve\\\\\" });\n\n  return (\n    <div>\n      <input\n        onChange={(event) => (state.name = event.target.value)}\n        value={state.name}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ tortilla: \\\\\"Plain\\\\\", fillings: [] });\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={state.tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={state.tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={state.tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (state.tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={state.fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={state.fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={state.fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={state.fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (state.fillings = event.target.value)}\n      />\n      <p>Tortilla: {state.tortilla}</p>\n      <p>Fillings: {state.fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ value: \\\\\"hello\\\\\" });\n\n  return <input value={state.value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ focus: true });\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={state.activeTab}><div>{state.activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] });\n\n  return (\n    <ul>\n      {state.numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={(a) => state.log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n      <button onClick={(event) => state.log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ html: \\\\\"<b>bold</b>\\\\\" });\n\n  return <div dangerouslySetInnerHTML={{ __html: state.html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    show: true,\n    toggle: function toggle() {\n      state.show = !state.show;\n    },\n  });\n\n  return (\n    <>\n      {state.show ? (\n        <>\n          <button onClick={(event) => state.toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => state.toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ disabled: false });\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={state.disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    name: \\\\\"Steve\\\\\",\n    get lowercaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <input value={state.name} />\n      Lowercase: {state.lowercaseName}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({\n    a: 2,\n    b: 5,\n    result: null,\n    calculateResult: function calculateResult(a_, b_) {\n      state.result = a_ * b_;\n    },\n  });\n\n  useEffect(() => {\n    state.calculateResult(state.a, state.b);\n  }, [state.a, state.b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.a = event.target.value)}\n        value={state.a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (state.b = event.target.value)}\n        value={state.b}\n      />\n      Result: {state.result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: valtio > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useLocalProxy } from \\\\\"valtio/utils\\\\\";\n\nfunction MyComponent(props: any) {\n  const state = useLocalProxy({ a: 5, b: 12 });\n\n  return (\n    <div>\n      normal:\n      {state.a + state.b}\n      <br />\n      conditional\n      {state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react-state-variables.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: variables > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const name = \\\\\"PatrickJS\\\\\";\n  const onBlur = function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  };\n  const lowerCaseName = function lowerCaseName() {\n    return name.toLowerCase();\n  };\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => (name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const name = \\\\\"Steve\\\\\";\n  const underscore_fn_name = function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  };\n  const age = 1;\n  const sports = [\\\\\"\\\\\"];\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => (name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const name = \\\\\"Steve\\\\\";\n  const dev = \\\\\"PatrickJS\\\\\";\n  const log = function log(message) {\n    console.log(message);\n  };\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (name = name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const name = \\\\\"PatrickJS\\\\\";\n  const onBlur = function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  };\n  const lowerCaseName = function lowerCaseName() {\n    return name.toLowerCase();\n  };\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => (name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  };\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const count = 0;\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  const getColumns = function getColumns() {\n    return props.columns || [];\n  };\n  const getGutterSize = function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  };\n  const getWidth = function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  };\n  const getColumnCssWidth = function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  };\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const name = \\\\\"king\\\\\";\n  const showContent = false;\n  const cls = function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  };\n  const show = function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  };\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const scriptsInserted = [];\n  const scriptsRun = [];\n  const findAndRunScripts = function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const scriptsInserted = [];\n  const scriptsRun = [];\n  const findAndRunScripts = function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Form 1`] = `\n\"',' expected. (109:2792)\n  107 | if (contentType && contentType !== 'multipart/form-data') {\n  108 |   if (\n> 109 |   /* Zapier doesn't allow content-type header to be sent from browsers */   !(sendWithJs && props.action?.includes('zapier.com'))) {     headers['content-type'] = contentType;   } }  const presubmitEvent = new CustomEvent('presubmit', {   detail: {     body   } });  if (formRef.current) {   formRef.current.dispatchEvent(presubmitEvent);    if (presubmitEvent.defaultPrevented) {     return;   } }  formState = 'sending'; const formUrl = \\`\\${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(props.sendSubmissionsToEmail || '')}&name=\\${encodeURIComponent(props.name || '')}\\`; fetch(props.sendSubmissionsTo === 'email' ? formUrl : props.action /* TODO: throw error if no action URL */ , {   body,   headers,   method: props.method || 'post' }).then(async res => {   let body;   const contentType = res.headers.get('content-type');    if (contentType && contentType.indexOf('application/json') !== -1) {     body = await res.json();   } else {     body = await res.text();   }    if (!res.ok && props.errorMessagePath) {     /* TODO: allow supplying an error formatter function */     let message = get(body, props.errorMessagePath);      if (message) {       if (typeof message !== 'string') {         /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */         message = JSON.stringify(message);       }        formErrorMessage = message;     }   }    responseData = body;   formState = res.ok ? 'success' : 'error';    if (res.ok) {     const submitSuccessEvent = new CustomEvent('submit:success', {       detail: {         res,         body       }     });      if (formRef.current) {       formRef.current.dispatchEvent(submitSuccessEvent);        if (submitSuccessEvent.defaultPrevented) {         return;       }       /* TODO: option to turn this on/off? */         if (props.resetFormOnSubmit !== false) {         formRef.current.reset();       }     }     /* TODO: client side route event first that can be preventDefaulted */       if (props.successUrl) {       if (formRef.current) {         const event = new CustomEvent('route', {           detail: {             url: props.successUrl           }         });         formRef.current.dispatchEvent(event);          if (!event.defaultPrevented) {           location.href = props.successUrl;         }       } else {         location.href = props.successUrl;       }     }   } }, err => {   const submitErrorEvent = new CustomEvent('submit:error', {     detail: {       error: err     }   });    if (formRef.current) {     formRef.current.dispatchEvent(submitErrorEvent);      if (submitErrorEvent.defaultPrevented) {       return;     }   }    responseData = err;   formState = 'error'; }); } }             return (   <>    <form  validate={props.validate}  ref={formRef}  action={!props.sendWithJs && props.action}  method={props.method}  name={props.name}  onSubmit={(event) => onSubmit(event) }  {...(props.attributes)}>{props.builderBlock && props.builderBlock.children ? (   <>{props.builderBlock?.children?.map((block, index) => (   <BuilderBlockComponent  key={block.id}  block={block}  index={index}  /> ))}</> ) : null}{submissionState() === 'error' ? (   <BuilderBlocks  dataPath=\\\\\"errorMessage\\\\\"  blocks={props.errorMessage}  /> ) : null}{submissionState() === 'sending' ? (   <BuilderBlocks  dataPath=\\\\\"sendingMessage\\\\\"  blocks={props.sendingMessage}  /> ) : null}{submissionState() === 'error' && responseData ? (   <pre className=\\\\\"builder-form-error-text pre\\\\\">{JSON.stringify(responseData, null, 2)}</pre> ) : null}{submissionState() === 'success' ? (   <BuilderBlocks  dataPath=\\\\\"successMessage\\\\\"  blocks={props.successMessage}  /> ) : null}</form>   <style jsx>{\\`.pre {   padding: 10px;   color: red;   text-align: center; }\\`}</style>   </> ); }       export default FormComponent;\n      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ^\n  110 |\n  111 |\n  112 |\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const scrollListener = null;\n  const imageLoaded = false;\n  const setLoaded = function setLoaded() {\n    imageLoaded = true;\n  };\n  const useLazyLoading = function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  };\n  const isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  const load = false;\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            load = true;\n            scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const canShow = true;\n  const images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const handleChange = function handleChange(value) {\n    console.log(value);\n  };\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const _id = \\\\\"abc\\\\\";\n  const _messageId = _id + \\\\\"-message\\\\\";\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const reviews = [];\n  const name = \\\\\"test\\\\\";\n  const showReviewPrompt = false;\n  const kebabCaseValue = function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  };\n  const snakeCaseValue = function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  };\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => (showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const foo = true;\n  const bar = function bar() {};\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const errors = {};\n  const foo = function foo(errors) {\n    return errors;\n  };\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const foo = false;\n  const bar = function bar() {\n    return foo;\n  };\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const name = \\\\\"Decadef20\\\\\";\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const _id = \\\\\"abc\\\\\";\n  const _active = false;\n  const _do = function _do(id) {\n    _active = !!id;\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  };\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const name = \\\\\"steve\\\\\";\n  const setName = function setName(value) {\n    name = value;\n  };\n  const updateNameWithArrowFn = function updateNameWithArrowFn(value) {\n    name = value;\n  };\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const id = \\\\\"xyz\\\\\";\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"Identifier expected. (37:17)\n  35 |\n  36 |\n> 37 |   <TagNameGetter()>\n     |                 ^\n  38 |   Hello <tag>{name}</tag>{props.actions?.map((action) => (\n  39 |   <TagName><action.icon  /><span>{action.text}</span></TagName>\n  40 | ))}</TagNameGetter()>\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const name = \\\\\"PatrickJS\\\\\";\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => (name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const name = \\\\\"PatrickJS\\\\\";\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => (name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const bindings = \\\\\"a binding\\\\\";\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const classState = \\\\\"testClassName\\\\\";\n  const styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const name = \\\\\"Steve\\\\\";\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => (name = event.target.value)}\n          onChange={(event) => (name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  const handleClick = function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  };\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const refToUse = !(props.componentRef instanceof Function)\n    ? props.componentRef\n    : null;\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  const foo2 = function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  };\n  const bar = function bar() {\n    return \\\\\"bar\\\\\";\n  };\n  const baz = function baz(i) {\n    return i + foo2().length;\n  };\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const getRenderContentProps = function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  };\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const a = \\\\\"a\\\\\";\n  const b = \\\\\"b\\\\\";\n  const c = \\\\\"c\\\\\";\n  const d = \\\\\"d\\\\\";\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  return <input {...attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  const foo = function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  };\n  const elem_onInitEditingBldr = function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  };\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const name = \\\\\"\\\\\";\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const a = \\\\\"a\\\\\";\n  const b = \\\\\"b\\\\\";\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const name = \\\\\"Decadef20\\\\\";\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  const foo = function foo(params) {};\n  const bar = function bar() {};\n  const zoo = function zoo() {\n    const params = {\n      cb: bar,\n    };\n  };\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > renderBlock 1`] = `\n\"Identifier expected. (212:8)\n  210 |    {shouldWrap() ? (\n  211 |    <>{isEmptyHtmlElement(tag()) ? (\n> 212 |    <tag()  {...(attributes())}  {...(actions())}  />\n      |        ^\n  213 |  ) : null}\n  214 | {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n  215 |    <>{repeatItemData()?.map((data, index) => (\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const n = [\\\\\"123\\\\\"];\n  const someFn = function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  };\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  const namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  const fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const foo = 123;\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const _name = \\\\\"test\\\\\";\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const name = \\\\\"test\\\\\";\n  const getName = function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  };\n  const test = function test() {\n    return \\\\\"test\\\\\";\n  };\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  const name = function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  };\n  const lastName = \\\\\"bar\\\\\";\n  const foo = \\\\\"bar\\\\\";\n\n  useEffect(() => {\n    console.log(foo);\n    foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    lastName = \\\\\"baz\\\\\";\n    console.log(foo);\n    foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const name = \\\\\"PatrickJS\\\\\";\n  const onBlur = function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  };\n  const lowerCaseName = function lowerCaseName() {\n    return name.toLowerCase();\n  };\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => (name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const name = \\\\\"Steve\\\\\";\n  const underscore_fn_name = function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  };\n  const age = 1;\n  const sports = [\\\\\"\\\\\"];\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => (name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const onChange = function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    name = \\\\\"PatrickJS onInit\\\\\" + props.hi;\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    name = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const name = \\\\\"Steve\\\\\";\n  const dev = \\\\\"PatrickJS\\\\\";\n  const log = function log(message: string) {\n    console.log(message);\n  };\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => (name = name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const name = \\\\\"PatrickJS\\\\\";\n  const names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              name = event.target.value + \\\\\" and \\\\\" + person;\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const name = \\\\\"PatrickJS\\\\\";\n  const onBlur = function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  };\n  const lowerCaseName = function lowerCaseName() {\n    return name.toLowerCase();\n  };\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => (name = event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  const handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  };\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const count = 0;\n\n  const prevCount = useRef(state.count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => (count += 1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const getColumns = function getColumns() {\n    return props.columns || [];\n  };\n  const getGutterSize = function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  };\n  const getWidth = function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  };\n  const getColumnCssWidth = function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  };\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const name = \\\\\"king\\\\\";\n  const showContent = false;\n  const cls = function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  };\n  const show = function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  };\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const scriptsInserted = [];\n  const scriptsRun = [];\n  const findAndRunScripts = function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const scriptsInserted = [];\n  const scriptsRun = [];\n  const findAndRunScripts = function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  };\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Form 1`] = `\n\"',' expected. (136:2793)\n  134 | if (contentType && contentType !== 'multipart/form-data') {\n  135 |   if (\n> 136 |   /* Zapier doesn't allow content-type header to be sent from browsers */   !(sendWithJs && props.action?.includes('zapier.com'))) {     headers['content-type'] = contentType;   } }  const presubmitEvent = new CustomEvent('presubmit', {   detail: {     body   } });  if (formRef.current) {   formRef.current.dispatchEvent(presubmitEvent);    if (presubmitEvent.defaultPrevented) {     return;   } }  formState = 'sending'; const formUrl = \\`\\${builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'}/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(props.sendSubmissionsToEmail || '')}&name=\\${encodeURIComponent(props.name || '')}\\`; fetch(props.sendSubmissionsTo === 'email' ? formUrl : props.action! /* TODO: throw error if no action URL */ , {   body,   headers,   method: props.method || 'post' }).then(async res => {   let body;   const contentType = res.headers.get('content-type');    if (contentType && contentType.indexOf('application/json') !== -1) {     body = await res.json();   } else {     body = await res.text();   }    if (!res.ok && props.errorMessagePath) {     /* TODO: allow supplying an error formatter function */     let message = get(body, props.errorMessagePath);      if (message) {       if (typeof message !== 'string') {         /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */         message = JSON.stringify(message);       }        formErrorMessage = message;     }   }    responseData = body;   formState = res.ok ? 'success' : 'error';    if (res.ok) {     const submitSuccessEvent = new CustomEvent('submit:success', {       detail: {         res,         body       }     });      if (formRef.current) {       formRef.current.dispatchEvent(submitSuccessEvent);        if (submitSuccessEvent.defaultPrevented) {         return;       }       /* TODO: option to turn this on/off? */         if (props.resetFormOnSubmit !== false) {         formRef.current.reset();       }     }     /* TODO: client side route event first that can be preventDefaulted */       if (props.successUrl) {       if (formRef.current) {         const event = new CustomEvent('route', {           detail: {             url: props.successUrl           }         });         formRef.current.dispatchEvent(event);          if (!event.defaultPrevented) {           location.href = props.successUrl;         }       } else {         location.href = props.successUrl;       }     }   } }, err => {   const submitErrorEvent = new CustomEvent('submit:error', {     detail: {       error: err     }   });    if (formRef.current) {     formRef.current.dispatchEvent(submitErrorEvent);      if (submitErrorEvent.defaultPrevented) {       return;     }   }    responseData = err;   formState = 'error'; }); } }             return (   <>    <form  validate={props.validate}  ref={formRef}  action={!props.sendWithJs && props.action}  method={props.method}  name={props.name}  onSubmit={(event) => onSubmit(event) }  {...(props.attributes)}>{props.builderBlock && props.builderBlock.children ? (   <>{props.builderBlock?.children?.map((block, index) => (   <BuilderBlockComponent  key={block.id}  block={block}  index={index}  /> ))}</> ) : null}{submissionState() === 'error' ? (   <BuilderBlocks  dataPath=\\\\\"errorMessage\\\\\"  blocks={props.errorMessage!}  /> ) : null}{submissionState() === 'sending' ? (   <BuilderBlocks  dataPath=\\\\\"sendingMessage\\\\\"  blocks={props.sendingMessage!}  /> ) : null}{submissionState() === 'error' && responseData ? (   <pre className=\\\\\"builder-form-error-text pre\\\\\">{JSON.stringify(responseData, null, 2)}</pre> ) : null}{submissionState() === 'success' ? (   <BuilderBlocks  dataPath=\\\\\"successMessage\\\\\"  blocks={props.successMessage!}  /> ) : null}</form>   <style jsx>{\\`.pre {   padding: 10px;   color: red;   text-align: center; }\\`}</style>   </> ); }       export default FormComponent;\n      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ^\n  137 |\n  138 |\n  139 |\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const scrollListener = null;\n  const imageLoaded = false;\n  const setLoaded = function setLoaded() {\n    imageLoaded = true;\n  };\n  const useLazyLoading = function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  };\n  const isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n  const load = false;\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            load = true;\n            scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const canShow = true;\n  const images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const handleChange = function handleChange(value: string) {\n    console.log(value);\n  };\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const _id = \\\\\"abc\\\\\";\n  const _messageId = _id + \\\\\"-message\\\\\";\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const reviews = [];\n  const name = \\\\\"test\\\\\";\n  const showReviewPrompt = false;\n  const kebabCaseValue = function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  };\n  const snakeCaseValue = function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  };\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => (showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const foo = true;\n  const bar = function bar() {};\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const errors = {};\n  const foo = function foo(errors) {\n    return errors;\n  };\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const foo = false;\n  const bar = function bar() {\n    return foo;\n  };\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const name = \\\\\"Decadef20\\\\\";\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const _id = \\\\\"abc\\\\\";\n  const _active = false;\n  const _do = function _do(id?: string) {\n    _active = !!id;\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  };\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const name = \\\\\"steve\\\\\";\n  const setName = function setName(value) {\n    name = value;\n  };\n  const updateNameWithArrowFn = function updateNameWithArrowFn(value) {\n    name = value;\n  };\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const id = \\\\\"xyz\\\\\";\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"Identifier expected. (37:17)\n  35 |\n  36 |\n> 37 |   <TagNameGetter()>\n     |                 ^\n  38 |   Hello <tag>{name}</tag>{props.actions?.map((action) => (\n  39 |   <TagName><action.icon  /><span>{action.text}</span></TagName>\n  40 | ))}</TagNameGetter()>\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const name = \\\\\"PatrickJS\\\\\";\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => (name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const name = \\\\\"PatrickJS\\\\\";\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => (name = event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const name = \\\\\"PatrickJS\\\\\";\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const bindings = \\\\\"a binding\\\\\";\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const classState = \\\\\"testClassName\\\\\";\n  const styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const name = \\\\\"Steve\\\\\";\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => (name = event.target.value)}\n          onChange={(event) => (name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  const handleClick = function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  };\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const refToUse = !(props.componentRef instanceof Function)\n    ? props.componentRef\n    : null;\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const foo2 = function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  };\n  const bar = function bar() {\n    return \\\\\"bar\\\\\";\n  };\n  const baz = function baz(i: number) {\n    return i + foo2().length;\n  };\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const getRenderContentProps = function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  };\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const a = \\\\\"a\\\\\";\n  const b = \\\\\"b\\\\\";\n  const c = \\\\\"c\\\\\";\n  const d = \\\\\"d\\\\\";\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  return <input {...attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  const foo = function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  };\n  const elem_onInitEditingBldr = function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  };\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const name = \\\\\"\\\\\";\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    name = defaultValues.name || props.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const a = \\\\\"a\\\\\";\n  const b = \\\\\"b\\\\\";\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const name = \\\\\"Decadef20\\\\\";\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  const foo = function foo(params) {};\n  const bar = function bar() {};\n  const zoo = function zoo() {\n    const params = {\n      cb: bar,\n    };\n  };\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > renderBlock 1`] = `\n\"Identifier expected. (220:8)\n  218 |    {shouldWrap() ? (\n  219 |    <>{isEmptyHtmlElement(tag()) ? (\n> 220 |    <tag()  {...(attributes())}  {...(actions())}  />\n      |        ^\n  221 |  ) : null}\n  222 | {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n  223 |    <>{repeatItemData()?.map((data, index) => (\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const n = [\\\\\"123\\\\\"];\n  const someFn = function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  };\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  const namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  const fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const foo = 123;\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const _name = \\\\\"test\\\\\";\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const name = \\\\\"test\\\\\";\n  const getName = function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  };\n  const test = function test() {\n    return \\\\\"test\\\\\";\n  };\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const name = function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  };\n  const lastName = \\\\\"bar\\\\\";\n  const foo = \\\\\"bar\\\\\";\n\n  useEffect(() => {\n    console.log(foo);\n    foo = \\\\\"bar\\\\\";\n    console.log(\\\\\"react\\\\\");\n    lastName = \\\\\"baz\\\\\";\n    console.log(foo);\n    foo = \\\\\"baz\\\\\";\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: variables > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const name = \\\\\"Steve\\\\\";\n\n  return (\n    <div>\n      <input onChange={(event) => (name = event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const tortilla = \\\\\"Plain\\\\\";\n  const fillings = [];\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const value = \\\\\"hello\\\\\";\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const focus = true;\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const html = \\\\\"<b>bold</b>\\\\\";\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const show = true;\n  const toggle = function toggle() {\n    show = !show;\n  };\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const disabled = false;\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const name = \\\\\"Steve\\\\\";\n  const lowercaseName = function lowercaseName() {\n    return name.toLowerCase();\n  };\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const a = 2;\n  const b = 5;\n  const result = null;\n  const calculateResult = function calculateResult(a_, b_) {\n    result = a_ * b_;\n  };\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (a = event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (b = event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const a = 5;\n  const b = 12;\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const name = \\\\\"Steve\\\\\";\n\n  return (\n    <div>\n      <input onChange={(event) => (name = event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const tortilla = \\\\\"Plain\\\\\";\n  const fillings = [];\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => (tortilla = event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => (fillings = event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const value = \\\\\"hello\\\\\";\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const focus = true;\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (34:13)\n  32 |\n  33 |\n> 34 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  35 |\n  36 |\n  37 | );\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const html = \\\\\"<b>bold</b>\\\\\";\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const show = true;\n  const toggle = function toggle() {\n    show = !show;\n  };\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const disabled = false;\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const name = \\\\\"Steve\\\\\";\n  const lowercaseName = function lowercaseName() {\n    return name.toLowerCase();\n  };\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const a = 2;\n  const b = 5;\n  const result = null;\n  const calculateResult = function calculateResult(a_, b_) {\n    result = a_ * b_;\n  };\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (a = event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => (b = event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: variables > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const a = 5;\n  const b = 12;\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/react.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`React - stateType: useState > (style-tag, top) 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <style>{\\`.div-2411fb2a {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}@media (max-width: 999px) { .div-2411fb2a {   flex-direction: row; } }@media (max-width: 639px) { .div-2411fb2a {   flex-direction: row-reverse; } }.div-2411fb2a-2 {\n  flex-grow: 1;\n}\\`}</style>\n      <div className=\\\\\"builder-columns div-2411fb2a\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2411fb2a-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > AdvancedRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <Input\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <Div className=\\\\\"test\\\\\">\n      <input\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Context 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic OnMount Update 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Outputs 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicAttribute 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicBooleanAttribute 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicChildComponent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicFor 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <Input\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRefAssignment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > BasicRefPrevious 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Button 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Columns 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <Div className=\\\\\"builder-columns\\\\\">\n      {props.columns?.map((column, index) => (\n        <Div2 className=\\\\\"builder-column\\\\\">\n          {column.content}\n          {index}\n        </Div2>\n      ))}\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n  @media (max-width: 999px) {\n    flex-direction: row;\n  }\n  @media (max-width: 639px) {\n    flex-direction: row-reverse;\n  }\n\\`;\n\nconst Div2 = styled.div\\`\n  flex-grow: 1;\n\\`;\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > ContentSlotHtml 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > ContentSlotJSX 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > CustomCode 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Embed 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Form 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <Pre className=\\\\\"builder-form-error-text\\\\\">\n          {JSON.stringify(responseData, null, 2)}\n        </Pre>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage}\n        />\n      ) : null}\n    </form>\n  );\n}\nconst Pre = styled.pre\\`\n  padding: 10px;\n  color: red;\n  text-align: center;\n\\`;\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Image 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <Img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            className={\n              \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")\n            }\n            src={props.image}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\nconst Img = styled.img\\`\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n\\`;\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Image State 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Img 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Input 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > InputParent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > NestedStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > RawText 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Section 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Select 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotDefault 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotHtml 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotJsx 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > SlotNamed 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Stamped.io 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <div data-user={name}>\n      <button onClick={(event) => setShowReviewPrompt(true)}>\n        Write a review\n      </button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <Input placeholder=\\\\\"Title\\\\\" />\n          <Textarea placeholder=\\\\\"How was your experience?\\\\\" />\n          <Button\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </Button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <Review key={review.id}>\n          <Img src={review.avatar} />\n          <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>N: {index}</div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </Review>\n      ))}\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  display: block;\n\\`;\n\nconst Textarea = styled.textarea\\`\n  display: block;\n\\`;\n\nconst Button = styled.button\\`\n  display: block;\n\\`;\n\nconst Review = styled.div\\`\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n\\`;\n\nconst Img = styled.img\\`\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n\\`;\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreComment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreShadowVars 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > StoreWithState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Submit 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Text 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Textarea 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > UseValueAndFnFromStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > Video 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > arrowFunctionInUseStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForFragment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForNoTagReference 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForwardRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <Input\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <Input\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicOnUpdateReturn 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > class + ClassName + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>\n      <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <Div className=\\\\\"test2 test\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </Div>\n    </div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > class + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <Div className=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > className + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <Div className=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > className 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > classState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <Div className={classState} style={styleState}>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > componentWithContext 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > componentWithContextMultiRoot 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > contentState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultProps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultPropsOutsideComponent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > defaultValsWithTypes 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > eventInputAndChange 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <Input\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > eventProps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > expressionState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > functionProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > getterState 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > import types 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > layerName 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <section>\n      <LayerName>Hello! I can run in React, Vue, Solid, or Liquid!</LayerName>\n    </section>\n  );\n}\n\nconst LayerName = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleOnUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleOnUpdateWithDeps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > multipleSpreads 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > nestedShow 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > nestedStyles 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction NestedStyles(props) {\n  return <Div>Hello world</Div>;\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n  @media (max-width: env(--mobile)) {\n    display: block;\n  }\n  &:hover {\n    display: flex;\n  }\n  :active {\n    display: inline;\n  }\n  .nested-selector {\n    display: grid;\n  }\n  .nested-selector:hover {\n    display: block;\n  }\n  &.nested-selector:active {\n    display: inline-block;\n  }\n\\`;\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > normalizeLayerNames 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <Css0>Single Number</Css0>\n      <Css123>Multiple Numbers</Css123>\n      <Name123>Chars with numbers at end</Name123>\n      <Name>Chars with numbers at start</Name>\n      <Name789>Numnbers separated by dash</Name789>\n      <div>Emoji</div>\n      <Div data-name=\\\\\"1\\\\\">Number</Div>\n    </section>\n  );\n}\n\nconst Css0 = styled.div\\`\n  margin: 10px;\n\\`;\n\nconst Css123 = styled.div\\`\n  padding: 10px;\n\\`;\n\nconst Name123 = styled.div\\`\n  border: 1px solid;\n\\`;\n\nconst Name = styled.div\\`\n  color: red;\n\\`;\n\nconst Name789 = styled.div\\`\n  background: blue;\n\\`;\n\nconst Div = styled.div\\`\n  background: blue;\n\\`;\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onEvent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInit & onMount 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInit 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onInitPlain 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onMount 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onMountMultiple 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > onUpdateWithDeps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > preserveExportOrLocalStatement 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > preserveTyping 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsDestructure 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsInterface 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > propsType 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > referencingFunInsideHook 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > renderBlock 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > renderContentExample 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <Div onClick={(event) => trackClick(props.content.id)}>\n        <RenderBlocks blocks={props.content.blocks} />\n      </Div>\n    </BuilderContext.Provider>\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: columns;\n\\`;\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > rootFragmentMultiNode 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > rootShow 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > self-referencing component 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > self-referencing component with children 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > setState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showExpressions 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithFor 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithOtherValues 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > showWithRootText 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > signalsOnUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <Div className=\\\\\"test\\\\\">\n      {props.id}\n      {props.foo.value.bar.baz}\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadAttrs 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadNestedProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > spreadProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > store-async-function 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > string-literal-store 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > styleClassAndCss 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <Div\n      className=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n    />\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n\\`;\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > stylePropClassAndCss 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <Div style={props.attributes.style} className={props.attributes.class} />\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n\\`;\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > subComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > svgComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeDependency 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeExternalProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeExternalStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > typeGetterStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style-and-css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nconst Button = styled.button\\`\n  background: blue;\n  color: white;\n\\`;\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > use-style-outside-component 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > useTarget 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Javascript Test > webComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Remove Internal mitosis package 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > AdvancedRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <Input\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <Div className=\\\\\"test\\\\\">\n      <input\n        value={DEFAULT_VALUES.name || name}\n        onChange={(myEvent) => setName(myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Context 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic OnMount Update 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Outputs 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicAttribute 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicBooleanAttribute 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicChildComponent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicFor 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      {props.showInput ? (\n        <>\n          <Input\n            ref={inputRef}\n            value={name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => setName(event.target.value)}\n          />\n          <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n            Choose a car:\n          </label>\n          <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </>\n      ) : null}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRefAssignment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > BasicRefPrevious 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Button 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Columns 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <Div className=\\\\\"builder-columns\\\\\">\n      {props.columns?.map((column, index) => (\n        <Div2 className=\\\\\"builder-column\\\\\">\n          {column.content}\n          {index}\n        </Div2>\n      ))}\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n  @media (max-width: 999px) {\n    flex-direction: row;\n  }\n  @media (max-width: 639px) {\n    flex-direction: row-reverse;\n  }\n\\`;\n\nconst Div2 = styled.div\\`\n  flex-grow: 1;\n\\`;\n\nexport default Column;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > ContentSlotHtml 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > ContentSlotJSX 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > CustomCode 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Embed 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Form 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => onSubmit(event)}\n      {...props.attributes}\n    >\n      {props.builderBlock && props.builderBlock.children ? (\n        <>\n          {props.builderBlock?.children?.map((block, index) => (\n            <BuilderBlockComponent key={block.id} block={block} index={index} />\n          ))}\n        </>\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" ? (\n        <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n      ) : null}\n      {submissionState() === \\\\\"sending\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"sendingMessage\\\\\"\n          blocks={props.sendingMessage!}\n        />\n      ) : null}\n      {submissionState() === \\\\\"error\\\\\" && responseData ? (\n        <Pre className=\\\\\"builder-form-error-text\\\\\">\n          {JSON.stringify(responseData, null, 2)}\n        </Pre>\n      ) : null}\n      {submissionState() === \\\\\"success\\\\\" ? (\n        <BuilderBlocks\n          dataPath=\\\\\"successMessage\\\\\"\n          blocks={props.successMessage!}\n        />\n      ) : null}\n    </form>\n  );\n}\nconst Pre = styled.pre\\`\n  padding: 10px;\n  color: red;\n  text-align: center;\n\\`;\nexport default FormComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Image 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        {!useLazyLoading() || load ? (\n          <Img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            className={\n              \\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")\n            }\n            src={props.image}\n            onLoad={(event) => setLoaded()}\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        ) : null}\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n\nconst Img = styled.img\\`\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n\\`;\n\nexport default Image;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Image State 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Img 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Input 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > InputParent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > NestedStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > RawText 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Section 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Select 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotDefault 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotHtml 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotJsx 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > SlotNamed 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Stamped.io 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <div data-user={name}>\n      <button onClick={(event) => setShowReviewPrompt(true)}>\n        Write a review\n      </button>\n      {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n        <>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <Input placeholder=\\\\\"Title\\\\\" />\n          <Textarea placeholder=\\\\\"How was your experience?\\\\\" />\n          <Button\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </Button>\n        </>\n      ) : null}\n      {reviews?.map((review, index) => (\n        <Review key={review.id}>\n          <Img src={review.avatar} />\n          <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n            <div>N: {index}</div>\n            <div>{review.author}</div>\n            <div>{review.reviewMessage}</div>\n          </div>\n        </Review>\n      ))}\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  display: block;\n\\`;\n\nconst Textarea = styled.textarea\\`\n  display: block;\n\\`;\n\nconst Button = styled.button\\`\n  display: block;\n\\`;\n\nconst Review = styled.div\\`\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n\\`;\n\nconst Img = styled.img\\`\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n\\`;\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreComment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreShadowVars 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > StoreWithState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Submit 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Text 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Textarea 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > UseValueAndFnFromStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > Video 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > arrowFunctionInUseStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForFragment 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForNoTagReference 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForwardRef 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <Input\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <div>\n        <Input\n          ref={inputRef}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n      </div>\n    );\n  }\n);\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicOnUpdateReturn 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > class + ClassName + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <div>\n      <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <Div className=\\\\\"test2 test\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </Div>\n    </div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > class + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <Div className=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > className + css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <Div className=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > className 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > classState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <Div className={classState} style={styleState}>\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > componentWithContext 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > componentWithContextMultiRoot 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > contentState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultProps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultPropsOutsideComponent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > defaultValsWithTypes 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > eventInputAndChange 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <Input\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nconst Input = styled.input\\`\n  color: red;\n\\`;\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > eventProps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > expressionState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > functionProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > getterState 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > import types 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > layerName 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <section>\n      <LayerName>Hello! I can run in React, Vue, Solid, or Liquid!</LayerName>\n    </section>\n  );\n}\n\nconst LayerName = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleOnUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleOnUpdateWithDeps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > multipleSpreads 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > nestedShow 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > nestedStyles 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction NestedStyles(props: any) {\n  return <Div>Hello world</Div>;\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n  @media (max-width: env(--mobile)) {\n    display: block;\n  }\n  &:hover {\n    display: flex;\n  }\n  :active {\n    display: inline;\n  }\n  .nested-selector {\n    display: grid;\n  }\n  .nested-selector:hover {\n    display: block;\n  }\n  &.nested-selector:active {\n    display: inline-block;\n  }\n\\`;\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > normalizeLayerNames 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <section>\n      <div>Emoji</div>\n      <div>Dashes</div>\n      <div>CamelCase</div>\n      <div>Special chars</div>\n      <div>Special chars with dashes</div>\n      <Css0>Single Number</Css0>\n      <Css123>Multiple Numbers</Css123>\n      <Name123>Chars with numbers at end</Name123>\n      <Name>Chars with numbers at start</Name>\n      <Name789>Numnbers separated by dash</Name789>\n      <div>Emoji</div>\n      <Div data-name=\\\\\"1\\\\\">Number</Div>\n    </section>\n  );\n}\n\nconst Css0 = styled.div\\`\n  margin: 10px;\n\\`;\n\nconst Css123 = styled.div\\`\n  padding: 10px;\n\\`;\n\nconst Name123 = styled.div\\`\n  border: 1px solid;\n\\`;\n\nconst Name = styled.div\\`\n  color: red;\n\\`;\n\nconst Name789 = styled.div\\`\n  background: blue;\n\\`;\n\nconst Div = styled.div\\`\n  background: blue;\n\\`;\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onEvent 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInit & onMount 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInit 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onInitPlain 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onMount 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onMountMultiple 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > onUpdateWithDeps 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > preserveExportOrLocalStatement 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > preserveTyping 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsDestructure 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsInterface 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > propsType 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > referencingFunInsideHook 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > renderBlock 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n  const TagRef = tag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <TagRef {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <TagRef {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </TagRef>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > renderContentExample 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <BuilderContext.Provider\n      value={{\n        get content() {\n          return 3;\n        },\n\n        get registeredComponents() {\n          return 4;\n        },\n      }}\n    >\n      <Div onClick={(event) => trackClick(props.content.id)}>\n        <RenderBlocks blocks={props.content.blocks} />\n      </Div>\n    </BuilderContext.Provider>\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: columns;\n\\`;\n\nexport default RenderContent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > rootFragmentMultiNode 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > rootShow 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > self-referencing component 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > self-referencing component with children 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > setState 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showExpressions 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithFor 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithOtherValues 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > showWithRootText 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > signalsOnUpdate 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <Div className=\\\\\"test\\\\\">\n      {props.id}\n      {props.foo.bar.baz}\n    </Div>\n  );\n}\n\nconst Div = styled.div\\`\n  padding: 10px;\n\\`;\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadAttrs 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadNestedProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > spreadProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > store-async-function 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > string-literal-store 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > styleClassAndCss 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <Div\n      className=\\\\\"builder-column\\\\\"\n      style={{\n        width: \\\\\"100%\\\\\",\n      }}\n    />\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n\\`;\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > stylePropClassAndCss 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <Div style={props.attributes.style} className={props.attributes.class} />\n  );\n}\n\nconst Div = styled.div\\`\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n\\`;\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > subComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > svgComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeDependency 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeExternalProps 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeExternalStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > typeGetterStore 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style-and-css 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport styled from \\\\\"styled-components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    \\`}</style>\n    </>\n  );\n}\n\nconst Button = styled.button\\`\n  background: blue;\n  color: white;\n\\`;\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > use-style-outside-component 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > useTarget 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = 123;\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n    console.log(\\\\\"react\\\\\");\n    setLastName(\\\\\"baz\\\\\");\n    console.log(foo);\n    setFoo(\\\\\"baz\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: useState > jsx > Typescript Test > webComponent 2`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`React - stateType: useState > stamped (mobx) 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { useLocalObservable, observer } from \\\\\"mobx-react-lite\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const state = useLocalObservable(() => ({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  }));\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={state.name}>\n        <button onClick={(event) => (state.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {state.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input-4b8e7e0e\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea-4b8e7e0e\\\\\"\n            />\n            <button\n              className=\\\\\"button-4b8e7e0e\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                state.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {state.reviews?.map((review, index) => (\n          <div className=\\\\\"review-4b8e7e0e\\\\\" key={review.id}>\n            <img className=\\\\\"img-4b8e7e0e\\\\\" src={review.avatar} />\n            <div\n              className={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}\n            >\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style>{\\`.input-4b8e7e0e {\n  display: block;\n}.textarea-4b8e7e0e {\n  display: block;\n}.button-4b8e7e0e {\n  display: block;\n}.review-4b8e7e0e {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-4b8e7e0e {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nconst observedSmileReviews = observer(SmileReviews);\nexport default observedSmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > stamped (useState) 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input-fb2f23de\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea-fb2f23de\\\\\"\n            />\n            <button\n              className=\\\\\"button-fb2f23de\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review-fb2f23de\\\\\" key={review.id}>\n            <img className=\\\\\"img-fb2f23de\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style>{\\`.input-fb2f23de {\n  display: block;\n}.textarea-fb2f23de {\n  display: block;\n}.button-fb2f23de {\n  display: block;\n}.review-fb2f23de {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-fb2f23de {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > bindGroup 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > bindProperty 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > classDirective 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > context 2`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > each 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > eventHandlers 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > html 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > ifElse 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > imports 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > lifecycleHooks 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > reactive 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > reactiveWithFn 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > slots 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > style 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Javascript Test > textExpressions 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > basic 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > bindGroup 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > bindProperty 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > classDirective 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > context 2`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > each 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > eventHandlers 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > html 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > ifElse 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > imports 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > lifecycleHooks 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > reactive 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > reactiveWithFn 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > slots 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > style 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`React - stateType: useState > svelte > Typescript Test > textExpressions 2`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/rsc.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`RSC > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicAttribute 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Button 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Columns 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Column(props) {\n  const getColumns = function getColumns() {\n    return props.columns || [];\n  };\n  const getGutterSize = function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  };\n  const getWidth = function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  };\n  const getColumnCssWidth = function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  };\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Img 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > InputParent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  const handleChange = function handleChange(value) {\n    console.log(value);\n  };\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > RawText 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction RawText(props) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Section 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Select 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > SlotDefault 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > SlotHtml 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > SlotJsx 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > SlotNamed 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Submit 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Textarea 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > Video 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Video(props) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > class + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > className + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > functionProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > getterState 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  const foo2 = function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  };\n  const bar = function bar() {\n    return \\\\\"bar\\\\\";\n  };\n  const baz = function baz(i) {\n    return i + foo2().length;\n  };\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > import types 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  const getRenderContentProps = function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  };\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > layerName 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > nestedShow 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > nestedStyles 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onInitPlain 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > preserveTyping 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > propsInterface 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > propsType 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > renderBlock 1`] = `\n\"Identifier expected. (217:8)\n  215 |    {shouldWrap() ? (\n  216 |    <>{isEmptyHtmlElement(tag()) ? (\n> 217 |    <tag()  {...(attributes())}  {...(actions())}  />\n      |        ^\n  218 |  ) : null}\n  219 | {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n  220 |    <>{repeatItemData()?.map((data, index) => (\"\n`;\n\nexports[`RSC > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > rootShow 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > self-referencing component 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > showExpressions 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > showWithFor 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > showWithRootText 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ShowRootText(props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > spreadAttrs 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > spreadProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > store-async-function 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  const namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  const fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > subComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > svgComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > typeDependency 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeDependency(props) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > typeExternalProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > use-style 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > use-style-and-css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = \\\\\"rsc\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`RSC > jsx > Javascript Test > webComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  register();\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`RSC > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <div>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={(event) => onChange()} />\n      </div>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <div />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicAttribute 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return <input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </div>\n    </div>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <div>\n      {names?.map((person) => (\n        <>\n          <input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </div>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <div>\n        {props.showInput ? (\n          <>\n            <input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <label htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <div>\n      <h1>\n        Now: {count}, before: {prevCount.current}\n      </h1>\n      <button onClick={(event) => setCount(1)}>Increment</button>\n    </div>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Button 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Columns 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  const getColumns = function getColumns() {\n    return props.columns || [];\n  };\n  const getGutterSize = function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  };\n  const getWidth = function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  };\n  const getColumnCssWidth = function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  };\n\n  return (\n    <>\n      <div className=\\\\\"builder-columns div\\\\\">\n        {props.columns?.map((column, index) => (\n          <div className=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.slotTesting}</>\n      <div>\n        <hr />\n      </div>\n      <div>\n        <>{props.children}</>\n      </div>\n    </div>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <div\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n            className={cls()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>{props.children}</div>\n          </div>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return (\n    <div\n      ref={elem}\n      className={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      dangerouslySetInnerHTML={{ __html: props.code }}\n    />\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <pre className=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(responseData, null, 2)}\n          </pre>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <img\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              className={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style jsx>{\\`\n        .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <div>\n      {images?.map((item, itemIndex) => (\n        <img className=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n      ))}\n    </div>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Img 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Input 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > InputParent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  const handleChange = function handleChange(value: string) {\n    console.log(value);\n  };\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <div id={_id}>\n      Test\n      <p id={_messageId}>Message</p>\n    </div>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > RawText 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <span\n      className={props.attributes?.class || props.attributes?.className}\n      dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }}\n    />\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Section 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Select 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <option value={option.value} data-index={index}>\n          {option.name || option.value}\n        </option>\n      ))}\n    </select>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > SlotDefault 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>\n        {props.children || <div className=\\\\\"default-slot\\\\\">Default content</div>}\n      </>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > SlotHtml 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > SlotJsx 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > SlotNamed 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <div>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </div>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <div data-user={name}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <div className=\\\\\"review\\\\\" key={review.id}>\n            <img className=\\\\\"img\\\\\" src={review.avatar} />\n            <div className={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Submit 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Textarea 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > Video 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <video\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <div>Hello {name}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <div>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <div>{option}</div>\n        </React.Fragment>\n      ))}\n      <select>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <option key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </option>\n        ))}\n      </select>\n    </div>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const [Tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <Tag>{name}</Tag>\n      {props.actions?.map((action) => (\n        <TagName>\n          <action.icon />\n          <span>{action.text}</span>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <div>\n          <input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </div>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <div>Hello! {name}</div>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp className=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div className=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > class + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > className + css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <div>\n      <div className=\\\\\"no binding\\\\\">Without Binding</div>\n      <div className={bindings}>With binding</div>\n    </div>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <div className={classState + \\\\\" div\\\\\"} style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <div className={props.className}>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <div />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <div>other</div>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <div>setting context</div>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > defaultProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <div>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </button>\n      ) : null}\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > eventProps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <button onClick={(event) => handleClick()}>Test</button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <div>{refToUse}</div>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}},\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > functionProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > getterState 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const foo2 = function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  };\n  const bar = function bar() {\n    return \\\\\"bar\\\\\";\n  };\n  const baz = function baz(i: number) {\n    return i + foo2().length;\n  };\n\n  return (\n    <div>\n      <p>{foo2()}</p>\n      <p>{bar()}</p>\n      <p>{baz(1)}</p>\n    </div>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > import types 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  const getRenderContentProps = function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  };\n\n  return (\n    <RenderBlock\n      {...getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > layerName 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <div />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > nestedShow 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <div>if condition A and condition B</div>\n          ) : (\n            <div>else-condition-B</div>\n          )}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > nestedStyles 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <div className=\\\\\"div\\\\\">Hello world</div>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div className=\\\\\"css-0\\\\\">Single Number</div>\n        <div className=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div className=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div className=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div className=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" className=\\\\\"div\\\\\">\n          Number\n        </div>\n      </section>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <div className=\\\\\"builder-embed\\\\\" ref={elem}>\n      <div>Test</div>\n    </div>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <div>Default name defined by parent {name}</div>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onInitPlain 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction OnInitPlain(props: any) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return <div />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <div />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <div />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <div />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > preserveTyping 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <div>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > propsInterface 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > propsType 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <div />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > renderBlock 1`] = `\n\"Identifier expected. (225:8)\n  223 |    {shouldWrap() ? (\n  224 |    <>{isEmptyHtmlElement(tag()) ? (\n> 225 |    <tag()  {...(attributes())}  {...(actions())}  />\n      |        ^\n  226 |  ) : null}\n  227 | {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n  228 |    <>{repeatItemData()?.map((data, index) => (\"\n`;\n\nexports[`RSC > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div className=\\\\\"div\\\\\" onClick={(event) => trackClick(props.content.id)}>\n          <RenderBlocks blocks={props.content.blocks} />\n        </div>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </a>\n      ) : null}\n      {!props.link ? (\n        <button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > rootShow 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <div>Bar</div>\n        </>\n      ) : (\n        <div>Foo</div>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > self-referencing component 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <div>Wayne</div>\n        </MyComponent>\n      ) : null}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <div>\n      <button onClick={(event) => someFn()}>Click me</button>\n    </div>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > showExpressions 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <div>complete</div> : <>9mb</>}</>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > showWithFor 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <div key={idx}>{item}</div>\n          ))}\n        </>\n      ) : (\n        <div>else-condition-A</div>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </div>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > showWithRootText 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return <>{props.conditionA ? <>ContentA</> : <div>else-condition-A</div>}</>;\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <div className=\\\\\"test div\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style jsx>{\\`\n        .div {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > spreadAttrs 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > spreadProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > store-async-function 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  const namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  const fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  return <div />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <div>{foo}</div>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div\n        className=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        style={props.attributes.style}\n        className={props.attributes.class + \\\\\" div\\\\\"}\n      />\n      <style jsx>{\\`\n        .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > subComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > svgComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <svg\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <defs>\n        <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > typeDependency 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > typeExternalProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return <div>Hello {_name}! </div>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return <div>Hello {name}! </div>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > use-style 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > use-style-and-css 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = \\\\\"rsc\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <div>{name()}</div>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`RSC > jsx > Typescript Test > webComponent 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  register();\n\n  return (\n    <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`RSC > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > slots 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > style 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <div>\n      <input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <br />\n      <br />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <p>Tortilla: {tortilla}</p>\n      <p>Fillings: {fillings}</p>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return (\n    <input\n      className={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n        focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n      }\\`}\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (33:13)\n  31 |\n  32 |\n> 33 | <'activeTab'.Provider  value={activeTab}><div>{activeTab}</div></'activeTab'.Provider>\n     |             ^\n  34 |\n  35 |\n  36 | );\"\n`;\n\nexports[`RSC > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <ul>\n      {numbers?.map((num) => (\n        <li>{num}</li>\n      ))}\n    </ul>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > eventHandlers 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <div>\n      <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n      <button onClick={(event) => log(event)}>Log</button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <div dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <button onClick={(event) => toggle(event)}> Hide </button>\n        </>\n      ) : (\n        <button onClick={(event) => toggle(event)}> Show </button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <div>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <div />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName()}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <div>\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > slots 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <div>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <div>default</div>}</>\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > style 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"rsc\\\\\":{\\\\\"componentType\\\\\":\\\\\"server\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <input className=\\\\\"form-input\\\\\" />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`RSC > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <div>\n      normal:\n      {a + b}\n      <br />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/solid.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Solid > jsx > Javascript Test > Advanced 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <main>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <div>\n                {i}:{person}\n              </div>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return <span>{person}</span>;\n          }}\n        </For>\n        <For each={names()}>\n          {(undefined, _index) => {\n            const index = _index();\n            return <br />;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(_, _index) => {\n            const ee = _index();\n            return <pre>{ee}</pre>;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(undefined, _index) => {\n            const index = _index();\n            return <p>{index}</p>;\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const count = _index();\n            return (\n              <span>\n                {person}\n                {count}\n              </span>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <span>\n                {person}\n                {i}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n      </main>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Advanced 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <main>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <div>\n                {i}:{person}\n              </div>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return <span>{person}</span>;\n          }}\n        </For>\n        <For each={names()}>\n          {(undefined, _index) => {\n            const index = _index();\n            return <br />;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(_, _index) => {\n            const ee = _index();\n            return <pre>{ee}</pre>;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(undefined, _index) => {\n            const index = _index();\n            return <p>{index}</p>;\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const count = _index();\n            return (\n              <span>\n                {person}\n                {count}\n              </span>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <span>\n                {person}\n                {i}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n      </main>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { Show, on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  const onUpdateFn_0_inputRef = createMemo(() => inputRef);\n  const onUpdateFn_0_inputNoArgRef = createMemo(() => inputNoArgRef);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_inputRef(), onUpdateFn_0_inputNoArgRef()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-7ce4aba6\\\\\"\n              ref={inputRef}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-7ce4aba6 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > AdvancedRef 2`] = `\n\"import { Show, on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  const onUpdateFn_0_inputRef = createMemo(() => inputRef);\n  const onUpdateFn_0_inputNoArgRef = createMemo(() => inputNoArgRef);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_inputRef(), onUpdateFn_0_inputNoArgRef()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-7ce4aba6\\\\\"\n              ref={inputRef}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-7ce4aba6 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [age, setAge] = createSignal(1);\n\n  const [sports, setSports] = createSignal([\\\\\"\\\\\"]);\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  return (\n    <>\n      <div class=\\\\\"test div-25b4b1ee\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name()}\n          onInput={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>{\\`.div-25b4b1ee {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <Show when={person === name()}>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </Show>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic 3`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [age, setAge] = createSignal(1);\n\n  const [sports, setSports] = createSignal([\\\\\"\\\\\"]);\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  return (\n    <>\n      <div class=\\\\\"test div-25b4b1ee\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name()}\n          onInput={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>{\\`.div-25b4b1ee {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic 4`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <Show when={person === name()}>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </Show>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Context 1`] = `\n\"import { useContext, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <>\n      <Injector.Provider value={createInjector()}>\n        <div>\n          {myService.method(\\\\\"hello\\\\\") + name()}\n          Hello! I can run in React, Vue, Solid, or Liquid!\n          <input onInput={(event) => onChange()} />\n        </div>\n      </Injector.Provider>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Context 2`] = `\n\"import { useContext, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <>\n      <Injector.Provider value={createInjector()}>\n        <div>\n          {myService.method(\\\\\"hello\\\\\") + name()}\n          Hello! I can run in React, Vue, Solid, or Liquid!\n          <input onInput={(event) => onChange()} />\n        </div>\n      </Injector.Provider>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n\n  onMount(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic OnMount Update 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n\n  onMount(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Outputs 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicAttribute 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicAttribute 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.children}>\n          {props.children}\n          {props.type}\n        </Show>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n      </div>\n    </>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicBooleanAttribute 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.children}>\n          {props.children}\n          {props.type}\n        </Show>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n      </div>\n    </>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [dev, setDev] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <>\n      <div>\n        <MyBasicComponent id={dev()}></MyBasicComponent>\n        <div>\n          <MyBasicOnMountUpdateComponent\n            hi={name()}\n            bye={dev()}\n          ></MyBasicOnMountUpdateComponent>\n          <MyBasicOutputsComponent\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => setName(name)}\n            onEvent={(event) => log(\\\\\"Test\\\\\")}\n          ></MyBasicOutputsComponent>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicChildComponent 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [dev, setDev] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <>\n      <div>\n        <MyBasicComponent id={dev()}></MyBasicComponent>\n        <div>\n          <MyBasicOnMountUpdateComponent\n            hi={name()}\n            bye={dev()}\n          ></MyBasicOnMountUpdateComponent>\n          <MyBasicOutputsComponent\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => setName(name)}\n            onEvent={(event) => log(\\\\\"Test\\\\\")}\n          ></MyBasicOutputsComponent>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicFor 1`] = `\n\"import { For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicFor 2`] = `\n\"import { For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRef 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-6e0f3c16\\\\\"\n              ref={inputRef}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-6e0f3c16 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRef 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-6e0f3c16\\\\\"\n              ref={inputRef}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-6e0f3c16 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRefAssignment 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = createSignal(0);\n\n  const onUpdateFn_0_count__ = createMemo(() => count());\n  function onUpdateFn_0() {\n    prevCount = count();\n  }\n  createEffect(on(() => [onUpdateFn_0_count__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        <h1>\n          Now:\n          {count()}, before:\n          {prevCount}\n        </h1>\n        <button onClick={(event) => setCount(1)}>Increment</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > BasicRefPrevious 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = createSignal(0);\n\n  const onUpdateFn_0_count__ = createMemo(() => count());\n  function onUpdateFn_0() {\n    prevCount = count();\n  }\n  createEffect(on(() => [onUpdateFn_0_count__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        <h1>\n          Now:\n          {count()}, before:\n          {prevCount}\n        </h1>\n        <button onClick={(event) => setCount(1)}>Increment</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Button 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Button 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Columns 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div class=\\\\\"builder-columns div-2411fb2a\\\\\">\n        <For each={props.columns}>\n          {(column, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"builder-column div-2411fb2a-2\\\\\">\n                {column.content}\n                {index}\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.div-2411fb2a {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}@media (max-width: 999px) { .div-2411fb2a {   flex-direction: row; } }@media (max-width: 639px) { .div-2411fb2a {   flex-direction: row-reverse; } }.div-2411fb2a-2 {\n  flex-grow: 1;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Columns 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div class=\\\\\"builder-columns div-2411fb2a\\\\\">\n        <For each={props.columns}>\n          {(column, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"builder-column div-2411fb2a-2\\\\\">\n                {column.content}\n                {index}\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.div-2411fb2a {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}@media (max-width: 999px) { .div-2411fb2a {   flex-direction: row; } }@media (max-width: 639px) { .div-2411fb2a {   flex-direction: row-reverse; } }.div-2411fb2a-2 {\n  flex-grow: 1;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"function ContentSlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot name={props.slotTesting}></Slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <Slot></Slot>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > ContentSlotHtml 2`] = `\n\"function ContentSlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot name={props.slotTesting}></Slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <Slot></Slot>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  const [name, setName] = createSignal(\\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = createSignal(false);\n\n  const cls = createMemo(() => {\n    return props.slotContent && props.children ? \\`\\${name()}-content\\` : \\\\\"\\\\\";\n  });\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      <Show when={props.slotReference}>\n        <div\n          class={cls()}\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick={(event) => show()}\n        >\n          <Show when={showContent() && props.slotContent}>\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          </Show>\n          <div>\n            <hr />\n          </div>\n          <div>{props.children}</div>\n        </div>\n      </Show>\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > ContentSlotJSX 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  const [name, setName] = createSignal(\\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = createSignal(false);\n\n  const cls = createMemo(() => {\n    return props.slotContent && props.children ? \\`\\${name()}-content\\` : \\\\\"\\\\\";\n  });\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      <Show when={props.slotReference}>\n        <div\n          class={cls()}\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick={(event) => show()}\n        >\n          <Show when={showContent() && props.slotContent}>\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          </Show>\n          <div>\n            <hr />\n          </div>\n          <div>{props.children}</div>\n        </div>\n      </Show>\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > CustomCode 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction CustomCode(props) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > CustomCode 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction CustomCode(props) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Embed 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction CustomCode(props) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Embed 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction CustomCode(props) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Form 1`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const [formState, setFormState] = createSignal(\\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = createSignal(null);\n\n  const [formErrorMessage, setFormErrorMessage] = createSignal(\\\\\"\\\\\");\n\n  const submissionState = createMemo(() => {\n    return (Builder.isEditing && props.previewState) || formState();\n  });\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: props.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, props.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              setFormErrorMessage(message);\n            }\n          }\n\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (props.resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (props.successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: props.successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n\n  let formRef;\n\n  return (\n    <>\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        <Show when={props.builderBlock && props.builderBlock.children}>\n          <For each={props.builderBlock?.children}>\n            {(block, _index) => {\n              const index = _index();\n              return (\n                <BuilderBlockComponent\n                  key={block.id}\n                  block={block}\n                  index={index}\n                ></BuilderBlockComponent>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={props.errorMessage}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"sending\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\" && responseData()}>\n          <pre class=\\\\\"builder-form-error-text pre-fa9e99a4\\\\\">\n            {JSON.stringify(responseData(), null, 2)}\n          </pre>\n        </Show>\n        <Show when={submissionState() === \\\\\"success\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          ></BuilderBlocks>\n        </Show>\n      </form>\n      <style>{\\`.pre-fa9e99a4 {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default FormComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Form 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props) {\n  const [formState, setFormState] = createSignal(\\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = createSignal(null);\n\n  const [formErrorMessage, setFormErrorMessage] = createSignal(\\\\\"\\\\\");\n\n  const submissionState = createMemo(() => {\n    return (Builder.isEditing && props.previewState) || formState();\n  });\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: props.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, props.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              setFormErrorMessage(message);\n            }\n          }\n\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (props.resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (props.successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: props.successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n\n  let formRef;\n\n  return (\n    <>\n      <form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        <Show when={props.builderBlock && props.builderBlock.children}>\n          <For each={props.builderBlock?.children}>\n            {(block, _index) => {\n              const index = _index();\n              return (\n                <BuilderBlockComponent\n                  key={block.id}\n                  block={block}\n                  index={index}\n                ></BuilderBlockComponent>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={props.errorMessage}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"sending\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\" && responseData()}>\n          <pre class=\\\\\"builder-form-error-text pre-fa9e99a4\\\\\">\n            {JSON.stringify(responseData(), null, 2)}\n          </pre>\n        </Show>\n        <Show when={submissionState() === \\\\\"success\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          ></BuilderBlocks>\n        </Show>\n      </form>\n      <style>{\\`.pre-fa9e99a4 {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default FormComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Image 1`] = `\n\"import { Show, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Image(props) {\n  const [scrollListener, setScrollListener] = createSignal(null);\n\n  const [imageLoaded, setImageLoaded] = createSignal(false);\n\n  const [load, setLoad] = createSignal(false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          <Show when={!useLazyLoading() || load()}>\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img-4221eb95\\\\\"\n              }\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          </Show>\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style>{\\`.img-4221eb95 {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Image 2`] = `\n\"import { Show, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Image(props) {\n  const [scrollListener, setScrollListener] = createSignal(null);\n\n  const [imageLoaded, setImageLoaded] = createSignal(false);\n\n  const [load, setLoad] = createSignal(false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef}>\n          <Show when={!useLazyLoading() || load()}>\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img-4221eb95\\\\\"\n              }\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          </Show>\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style>{\\`.img-4221eb95 {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Image State 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = createSignal(true);\n\n  const [images, setImages] = createSignal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={images()}>\n          {(item, _index) => {\n            const itemIndex = _index();\n            return (\n              <>\n                <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Image State 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = createSignal(true);\n\n  const [images, setImages] = createSignal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={images()}>\n          {(item, _index) => {\n            const itemIndex = _index();\n            return (\n              <>\n                <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <>\n      <img\n        style={{\n          \\\\\"object-fit\\\\\": props.backgroundSize || \\\\\"cover\\\\\",\n          \\\\\"object-position\\\\\": props.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...props.attributes}\n        key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={props.altText}\n        src={props.imgSrc}\n      />\n    </>\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Img 2`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <>\n      <img\n        style={{\n          \\\\\"object-fit\\\\\": props.backgroundSize || \\\\\"cover\\\\\",\n          \\\\\"object-position\\\\\": props.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...props.attributes}\n        key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={props.altText}\n        src={props.imgSrc}\n      />\n    </>\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <>\n      <input\n        {...props.attributes}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={props.placeholder}\n        type={props.type}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n        required={props.required}\n        onInput={(event) => props.onChange?.(event.target.value)}\n      />\n    </>\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Input 2`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <>\n      <input\n        {...props.attributes}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={props.placeholder}\n        type={props.type}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n        required={props.required}\n        onInput={(event) => props.onChange?.(event.target.value)}\n      />\n    </>\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > InputParent 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <>\n      <FormInputComponent\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => handleChange(value)}\n      ></FormInputComponent>\n    </>\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > InputParent 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <>\n      <FormInputComponent\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => handleChange(value)}\n      ></FormInputComponent>\n    </>\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > NestedStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = createSignal(_id() + \\\\\"-message\\\\\");\n\n  return (\n    <>\n      <div id={_id()}>\n        Test\n        <p id={_messageId()}>Message</p>\n      </div>\n    </>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > NestedStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = createSignal(_id() + \\\\\"-message\\\\\");\n\n  return (\n    <>\n      <div id={_id()}>\n        Test\n        <p id={_messageId()}>Message</p>\n      </div>\n    </>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > RawText 1`] = `\n\"function RawText(props) {\n  return (\n    <>\n      <span\n        class={props.attributes?.class || props.attributes?.className}\n        innerHTML={props.text || \\\\\"\\\\\"}\n      ></span>\n    </>\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > RawText 2`] = `\n\"function RawText(props) {\n  return (\n    <>\n      <span\n        class={props.attributes?.class || props.attributes?.className}\n        innerHTML={props.text || \\\\\"\\\\\"}\n      ></span>\n    </>\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Section 1`] = `\n\"function SectionComponent(props) {\n  return (\n    <>\n      <section\n        {...props.attributes}\n        style={\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                \\\\\"max-width\\\\\": props.maxWidth,\n              }\n            : undefined\n        }\n      >\n        {props.children}\n      </section>\n    </>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Section 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SectionStateComponent(props) {\n  const [max, setMax] = createSignal(42);\n\n  const [items, setItems] = createSignal([42]);\n\n  return (\n    <>\n      <Show when={max()}>\n        <For each={items()}>\n          {(item, _index) => {\n            const index = _index();\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  \\\\\"max-width\\\\\": item + max(),\n                }}\n              >\n                {props.children}\n              </section>\n            );\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Section 3`] = `\n\"function SectionComponent(props) {\n  return (\n    <>\n      <section\n        {...props.attributes}\n        style={\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                \\\\\"max-width\\\\\": props.maxWidth,\n              }\n            : undefined\n        }\n      >\n        {props.children}\n      </section>\n    </>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Section 4`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SectionStateComponent(props) {\n  const [max, setMax] = createSignal(42);\n\n  const [items, setItems] = createSignal([42]);\n\n  return (\n    <>\n      <Show when={max()}>\n        <For each={items()}>\n          {(item, _index) => {\n            const index = _index();\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  \\\\\"max-width\\\\\": item + max(),\n                }}\n              >\n                {props.children}\n              </section>\n            );\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Select 1`] = `\n\"import { For } from \\\\\"solid-js\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <>\n      <select\n        {...props.attributes}\n        value={props.value}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={props.defaultValue}\n        name={props.name}\n      >\n        <For each={props.options}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <option value={option.value} data-index={index}>\n                {option.name || option.value}\n              </option>\n            );\n          }}\n        </For>\n      </select>\n    </>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Select 2`] = `\n\"import { For } from \\\\\"solid-js\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <>\n      <select\n        {...props.attributes}\n        value={props.value}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={props.defaultValue}\n        name={props.name}\n      >\n        <For each={props.options}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <option value={option.value} data-index={index}>\n                {option.name || option.value}\n              </option>\n            );\n          }}\n        </For>\n      </select>\n    </>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotDefault 1`] = `\n\"function SlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotDefault 2`] = `\n\"function SlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode>\n          <Slot testing={<div>Hello</div>}></Slot>\n        </ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotHtml 2`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode>\n          <Slot testing={<div>Hello</div>}></Slot>\n        </ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode slotTesting={<div>Hello</div>}></ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotJsx 2`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode slotTesting={<div>Hello</div>}></ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotNamed 1`] = `\n\"function SlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n        <Slot name=\\\\\"top\\\\\"></Slot>\n        <Slot name=\\\\\"left\\\\\">Default left</Slot>\n        <Slot>Default Child</Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > SlotNamed 2`] = `\n\"function SlotCode(props) {\n  return (\n    <>\n      <div>\n        <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n        <Slot name=\\\\\"top\\\\\"></Slot>\n        <Slot name=\\\\\"left\\\\\">Default left</Slot>\n        <Slot>Default Child</Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { Show, For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = createSignal([]);\n\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = createSignal(false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  });\n\n  return (\n    <>\n      <div data-user={name()}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        <Show when={showReviewPrompt() || \\\\\"asdf\\\\\"}>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input class=\\\\\"input-e8a1be16\\\\\" placeholder=\\\\\"Title\\\\\" />\n          <textarea\n            class=\\\\\"textarea-e8a1be16\\\\\"\n            placeholder=\\\\\"How was your experience?\\\\\"\n          ></textarea>\n          <button\n            class=\\\\\"button-e8a1be16\\\\\"\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </Show>\n        <For each={reviews()}>\n          {(review, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"div-e8a1be16\\\\\" key={review.id}>\n                <img class=\\\\\"img-e8a1be16\\\\\" src={review.avatar} />\n                <div class={showReviewPrompt() ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n                  <div>\n                    N:\n                    {index}\n                  </div>\n                  <div>{review.author}</div>\n                  <div>{review.reviewMessage}</div>\n                </div>\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.input-e8a1be16 {\n  display: block;\n}.textarea-e8a1be16 {\n  display: block;\n}.button-e8a1be16 {\n  display: block;\n}.div-e8a1be16 {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-e8a1be16 {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Stamped.io 2`] = `\n\"import { Show, For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = createSignal([]);\n\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = createSignal(false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  });\n\n  return (\n    <>\n      <div data-user={name()}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        <Show when={showReviewPrompt() || \\\\\"asdf\\\\\"}>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input class=\\\\\"input-e8a1be16\\\\\" placeholder=\\\\\"Title\\\\\" />\n          <textarea\n            class=\\\\\"textarea-e8a1be16\\\\\"\n            placeholder=\\\\\"How was your experience?\\\\\"\n          ></textarea>\n          <button\n            class=\\\\\"button-e8a1be16\\\\\"\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </Show>\n        <For each={reviews()}>\n          {(review, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"div-e8a1be16\\\\\" key={review.id}>\n                <img class=\\\\\"img-e8a1be16\\\\\" src={review.avatar} />\n                <div class={showReviewPrompt() ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n                  <div>\n                    N:\n                    {index}\n                  </div>\n                  <div>{review.author}</div>\n                  <div>{review.reviewMessage}</div>\n                </div>\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.input-e8a1be16 {\n  display: block;\n}.textarea-e8a1be16 {\n  display: block;\n}.button-e8a1be16 {\n  display: block;\n}.div-e8a1be16 {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-e8a1be16 {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreComment 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = createSignal(true);\n\n  function bar() {}\n\n  return (\n    <>\n      <>{foo()}</>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreComment 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = createSignal(true);\n\n  function bar() {}\n\n  return (\n    <>\n      <>{foo()}</>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = createSignal({});\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <>{foo(errors())}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreShadowVars 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = createSignal({});\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <>{foo(errors())}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = createSignal(false);\n\n  function bar() {\n    return foo();\n  }\n\n  return (\n    <>\n      <>{bar()}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > StoreWithState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = createSignal(false);\n\n  function bar() {\n    return foo();\n  }\n\n  return (\n    <>\n      <>{bar()}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Submit 1`] = `\n\"function SubmitButton(props) {\n  return (\n    <>\n      <button type=\\\\\"submit\\\\\" {...props.attributes}>\n        {props.text}\n      </button>\n    </>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Submit 2`] = `\n\"function SubmitButton(props) {\n  return (\n    <>\n      <button type=\\\\\"submit\\\\\" {...props.attributes}>\n        {props.text}\n      </button>\n    </>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Text 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: name() || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          props.text ||\n          props.content ||\n          name() ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    </>\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Text 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: name() || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          props.text ||\n          props.content ||\n          name() ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    </>\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Textarea 1`] = `\n\"function Textarea(props) {\n  return (\n    <>\n      <textarea\n        {...props.attributes}\n        placeholder={props.placeholder}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n      ></textarea>\n    </>\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Textarea 2`] = `\n\"function Textarea(props) {\n  return (\n    <>\n      <textarea\n        {...props.attributes}\n        placeholder={props.placeholder}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n      ></textarea>\n    </>\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_active, set_active] = createSignal(false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active());\n    }\n  }\n\n  return (\n    <>\n      <div>Test</div>\n    </>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > UseValueAndFnFromStore 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_active, set_active] = createSignal(false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active());\n    }\n  }\n\n  return (\n    <>\n      <div>Test</div>\n    </>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Video 1`] = `\n\"function Video(props) {\n  return (\n    <>\n      <video\n        preload=\\\\\"none\\\\\"\n        {...props.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          \\\\\"object-fit\\\\\": props.fit,\n          \\\\\"object-position\\\\\": props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          \\\\\"border-radius\\\\\": 1,\n        }}\n        key={props.video || \\\\\"no-src\\\\\"}\n        poster={props.posterImage}\n        autoplay={props.autoPlay}\n        muted={props.muted}\n        controls={props.controls}\n        loop={props.loop}\n      ></video>\n    </>\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > Video 2`] = `\n\"function Video(props) {\n  return (\n    <>\n      <video\n        preload=\\\\\"none\\\\\"\n        {...props.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          \\\\\"object-fit\\\\\": props.fit,\n          \\\\\"object-position\\\\\": props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          \\\\\"border-radius\\\\\": 1,\n        }}\n        key={props.video || \\\\\"no-src\\\\\"}\n        poster={props.posterImage}\n        autoplay={props.autoPlay}\n        muted={props.muted}\n        controls={props.controls}\n        loop={props.loop}\n      ></video>\n    </>\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > arrowFunctionInUseStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = createSignal(\\\\\"xyz\\\\\");\n\n  return (\n    <>\n      <div>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <select>\n          <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n            {(option, _index) => {\n              const index = _index();\n              return (\n                <option key={\\`\\${id()}-\\${option}\\`} value={option}>\n                  {option}\n                </option>\n              );\n            }}\n          </For>\n        </select>\n      </div>\n    </>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForFragment 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = createSignal(\\\\\"xyz\\\\\");\n\n  return (\n    <>\n      <div>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <select>\n          <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n            {(option, _index) => {\n              const index = _index();\n              return (\n                <option key={\\`\\${id()}-\\${option}\\`} value={option}>\n                  {option}\n                </option>\n              );\n            }}\n          </For>\n        </select>\n      </div>\n    </>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = createSignal(\\\\\"div\\\\\");\n\n  const [tag, setTag] = createSignal(\\\\\"span\\\\\");\n\n  const TagNameGetter = createMemo(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  return (\n    <>\n      <Dynamic component={TagNameGetter()}>\n        Hello\n        <Dynamic component={tag()}>{name()}</Dynamic>\n        <For each={props.actions}>\n          {(action, _index) => {\n            const index = _index();\n            return (\n              <Dynamic component={TagName()}>\n                <Dynamic component={action.icon}></Dynamic>\n                <span>{action.text}</span>\n              </Dynamic>\n            );\n          }}\n        </For>\n      </Dynamic>\n    </>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForNoTagReference 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = createSignal(\\\\\"div\\\\\");\n\n  const [tag, setTag] = createSignal(\\\\\"span\\\\\");\n\n  const TagNameGetter = createMemo(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  return (\n    <>\n      <Dynamic component={TagNameGetter()}>\n        Hello\n        <Dynamic component={tag()}>{name()}</Dynamic>\n        <For each={props.actions}>\n          {(action, _index) => {\n            const index = _index();\n            return (\n              <Dynamic component={TagName()}>\n                <Dynamic component={action.icon}></Dynamic>\n                <span>{action.text}</span>\n              </Dynamic>\n            );\n          }}\n        </For>\n      </Dynamic>\n    </>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-4dcaad7b\\\\\"\n          ref={props.inputRef}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-4dcaad7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForwardRef 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-4dcaad7b\\\\\"\n          ref={props.inputRef}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-4dcaad7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-a906ceca\\\\\"\n          ref={props.inputRef}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-a906ceca {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForwardRefComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-a906ceca\\\\\"\n          ref={props.inputRef}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-a906ceca {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const onUpdateFn_0_name__ = createMemo(() => name());\n  function onUpdateFn_0() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n  createEffect(on(() => [onUpdateFn_0_name__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        Hello!\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicOnUpdateReturn 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const onUpdateFn_0_name__ = createMemo(() => name());\n  function onUpdateFn_0() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n  createEffect(on(() => [onUpdateFn_0_name__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        Hello!\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { onMount } from \\\\\"solid-js\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  let buttonRef;\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { onMount } from \\\\\"solid-js\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  let buttonRef;\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  let buttonRef;\n\n  return (\n    <>\n      <div>\n        <button ref={buttonRef}>Attribute Passing</button>\n      </div>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  let buttonRef;\n\n  return (\n    <>\n      <div>\n        <button ref={buttonRef}>Attribute Passing</button>\n      </div>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>{\\`.div-6ef0b03e {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > class + ClassName + css 2`] = `\n\"import MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        <MyComp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>{\\`.div-6ef0b03e {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > class + css 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > class + css 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > className + css 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > className + css 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > className 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = createSignal(\\\\\"a binding\\\\\");\n\n  return (\n    <>\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={bindings()}>With binding</div>\n      </div>\n    </>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > className 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = createSignal(\\\\\"a binding\\\\\");\n\n  return (\n    <>\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={bindings()}>With binding</div>\n      </div>\n    </>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > classState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = createSignal(\\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = createSignal({\n    color: \\\\\"red\\\\\",\n  });\n\n  return (\n    <>\n      <div class={classState() + \\\\\" div-023ce23d\\\\\"} style={styleState()}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-023ce23d {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > classState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = createSignal(\\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = createSignal({\n    color: \\\\\"red\\\\\",\n  });\n\n  return (\n    <>\n      <div class={classState() + \\\\\" div-023ce23d\\\\\"} style={styleState()}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-023ce23d {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div class={props.className}>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div class={props.className}>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nfunction ComplexMetaRaw(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nfunction ComplexMetaRaw(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > componentWithContext 1`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > componentWithContext 2`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n            <div>other</div>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > componentWithContextMultiRoot 2`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n            <div>other</div>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          content: props.content,\n          registeredComponents: props.customComponents,\n        }}\n      >\n        <div>setting context</div>\n      </BuilderContext.Provider>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > contentState 2`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          content: props.content,\n          registeredComponents: props.customComponents,\n        }}\n      >\n        <div>setting context</div>\n      </BuilderContext.Provider>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick()}\n          >\n            {props.buttonText}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultProps 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick()}\n          >\n            {props.buttonText}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick(event)}\n          >\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultPropsOutsideComponent 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick(event)}\n          >\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return (\n    <>\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {props.name || DEFAULT_VALUES.name}\n      </div>\n    </>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > defaultValsWithTypes 2`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return (\n    <>\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {props.name || DEFAULT_VALUES.name}\n      </div>\n    </>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-1ee0ab7b\\\\\"\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n          onInput={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.input-1ee0ab7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > eventInputAndChange 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-1ee0ab7b\\\\\"\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n          onInput={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.input-1ee0ab7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > eventProps 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <>\n      <button onClick={(event) => handleClick()}>Test</button>\n    </>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > eventProps 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <>\n      <button onClick={(event) => handleClick()}>Test</button>\n    </>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > expressionState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = createSignal(\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <>\n      <div>{refToUse()}</div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > expressionState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = createSignal(\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <>\n      <div>{refToUse()}</div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nfunction FigmaButton(props) {\n  return (\n    <>\n      <button\n        data-icon={props.icon}\n        data-disabled={props.interactiveState}\n        data-width={props.width}\n        data-size={props.size}\n      >\n        {props.label}\n      </button>\n    </>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nfunction FigmaButton(props) {\n  return (\n    <>\n      <button\n        data-icon={props.icon}\n        data-disabled={props.interactiveState}\n        data-width={props.width}\n        data-size={props.size}\n      >\n        {props.label}\n      </button>\n    </>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > functionProps 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > functionProps 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > getterState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  const foo2 = createMemo(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n\n  const bar = createMemo(() => {\n    return \\\\\"bar\\\\\";\n  });\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <>\n      <div>\n        <p>{foo2()}</p>\n        <p>{bar()}</p>\n        <p>{baz(1)}</p>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > getterState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  const foo2 = createMemo(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n\n  const bar = createMemo(() => {\n    return \\\\\"bar\\\\\";\n  });\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <>\n      <div>\n        <p>{foo2()}</p>\n        <p>{bar()}</p>\n        <p>{baz(1)}</p>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > import types 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <>\n      <RenderBlock\n        {...getRenderContentProps(props.renderContentProps.block, 0)}\n      ></RenderBlock>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > import types 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <>\n      <RenderBlock\n        {...getRenderContentProps(props.renderContentProps.block, 0)}\n      ></RenderBlock>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > layerName 1`] = `\n\"function MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div class=\\\\\"div-033af2fa\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>{\\`.div-033af2fa {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > layerName 2`] = `\n\"function MyLayerNameComponent(props) {\n  return (\n    <>\n      <section>\n        <div class=\\\\\"div-033af2fa\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>{\\`.div-033af2fa {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleOnUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const [c, setC] = createSignal(\\\\\"c\\\\\");\n\n  const [d, setD] = createSignal(\\\\\"d\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a(), b());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  const onUpdateFn_1_c__ = createMemo(() => c());\n  const onUpdateFn_1_d__ = createMemo(() => d());\n  function onUpdateFn_1() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c(), d());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_1_c__(), onUpdateFn_1_d__()], onUpdateFn_1)\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleOnUpdateWithDeps 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const [c, setC] = createSignal(\\\\\"c\\\\\");\n\n  const [d, setD] = createSignal(\\\\\"d\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a(), b());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  const onUpdateFn_1_c__ = createMemo(() => c());\n  const onUpdateFn_1_d__ = createMemo(() => d());\n  function onUpdateFn_1() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c(), d());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_1_c__(), onUpdateFn_1_d__()], onUpdateFn_1)\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = createSignal({\n    hello: \\\\\"world\\\\\",\n  });\n\n  return (\n    <>\n      <input {...attrs()} {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > multipleSpreads 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = createSignal({\n    hello: \\\\\"world\\\\\",\n  });\n\n  return (\n    <>\n      <input {...attrs()} {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <Show fallback={<div>else-condition-B</div>} when={!props.conditionB}>\n          <div>if condition A and condition B</div>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > nestedShow 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <Show fallback={<div>else-condition-B</div>} when={!props.conditionB}>\n          <div>if condition A and condition B</div>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > nestedStyles 1`] = `\n\"function NestedStyles(props) {\n  return (\n    <>\n      <div class=\\\\\"div-7671878a\\\\\">Hello world</div>\n      <style>{\\`.div-7671878a {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}@media (max-width: env(--mobile)) { .div-7671878a {   display: block; } }.div-7671878a:hover {\n  display: flex;\n}.div-7671878a:active {\n  display: inline;\n}.div-7671878a .nested-selector {\n  display: grid;\n}.div-7671878a .nested-selector:hover {\n  display: block;\n}.div-7671878a.nested-selector:active {\n  display: inline-block;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > nestedStyles 2`] = `\n\"function NestedStyles(props) {\n  return (\n    <>\n      <div class=\\\\\"div-7671878a\\\\\">Hello world</div>\n      <style>{\\`.div-7671878a {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}@media (max-width: env(--mobile)) { .div-7671878a {   display: block; } }.div-7671878a:hover {\n  display: flex;\n}.div-7671878a:active {\n  display: inline;\n}.div-7671878a .nested-selector {\n  display: grid;\n}.div-7671878a .nested-selector:hover {\n  display: block;\n}.div-7671878a.nested-selector:active {\n  display: inline-block;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"function MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"div-130cf56c\\\\\">Single Number</div>\n        <div class=\\\\\"div-130cf56c-2\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"div-130cf56c-3\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"div-130cf56c-4\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"div-130cf56c-5\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div-130cf56c-6\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n      <style>{\\`.div-130cf56c {\n  margin: 10px;\n}.div-130cf56c-2 {\n  padding: 10px;\n}.div-130cf56c-3 {\n  border: 1px solid;\n}.div-130cf56c-4 {\n  color: red;\n}.div-130cf56c-5 {\n  background: blue;\n}.div-130cf56c-6 {\n  background: blue;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > normalizeLayerNames 2`] = `\n\"function MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"div-130cf56c\\\\\">Single Number</div>\n        <div class=\\\\\"div-130cf56c-2\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"div-130cf56c-3\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"div-130cf56c-4\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"div-130cf56c-5\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div-130cf56c-6\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n      <style>{\\`.div-130cf56c {\n  margin: 10px;\n}.div-130cf56c-2 {\n  padding: 10px;\n}.div-130cf56c-3 {\n  border: 1px solid;\n}.div-130cf56c-4 {\n  color: red;\n}.div-130cf56c-5 {\n  background: blue;\n}.div-130cf56c-6 {\n  background: blue;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onEvent 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Embed(props) {\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <>\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={elem}\n        onInitEditingBldr={(event) => elem_onInitEditingBldr(event)}\n      >\n        <div>Test</div>\n      </div>\n    </>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onEvent 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Embed(props) {\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <>\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={elem}\n        onInitEditingBldr={(event) => elem_onInitEditingBldr(event)}\n      >\n        <div>Test</div>\n      </div>\n    </>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction OnInit(props) {\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInit & onMount 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction OnInit(props) {\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInit 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = createSignal(\\\\\"\\\\\");\n\n  setName(defaultValues.name || props.name);\n  console.log(\\\\\"set defaults with props\\\\\");\n\n  return (\n    <>\n      <div>\n        Default name defined by parent\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInit 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = createSignal(\\\\\"\\\\\");\n\n  setName(defaultValues.name || props.name);\n  console.log(\\\\\"set defaults with props\\\\\");\n\n  return (\n    <>\n      <div>\n        Default name defined by parent\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInitPlain 1`] = `\n\"function OnInitPlain(props) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onInitPlain 2`] = `\n\"function OnInitPlain(props) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onMount 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onMount 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onMountMultiple 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  const onUpdateFn_0_props_size = createMemo(() => props.size);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a(), b(), props.size);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_a__(), onUpdateFn_0_b__(), onUpdateFn_0_props_size()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > onUpdateWithDeps 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  const onUpdateFn_0_props_size = createMemo(() => props.size);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a(), b(), props.size);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_a__(), onUpdateFn_0_b__(), onUpdateFn_0_props_size()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > preserveExportOrLocalStatement 2`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > preserveTyping 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > preserveTyping 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsDestructure 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsInterface 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsInterface 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsType 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > propsType 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > referencingFunInsideHook 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > renderBlock 1`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const component = createMemo(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n\n  const tag = createMemo(() => {\n    return getBlockTag(useBlock());\n  });\n\n  const useBlock = createMemo(() => {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n\n  const actions = createMemo(() => {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n\n  const attributes = createMemo(() => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n\n  const shouldWrap = createMemo(() => {\n    return !component()?.noWrap;\n  });\n\n  const renderComponentProps = createMemo(() => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  });\n\n  const useChildren = createMemo(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock().children ?? [];\n  });\n\n  const childrenWithoutParentComponent = createMemo(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  });\n\n  const repeatItemData = createMemo(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n\n  const inheritedTextStyles = createMemo(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n\n  const childrenContext = createMemo(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  });\n\n  const renderComponentTag = createMemo(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n\n  return (\n    <>\n      <Show\n        fallback={\n          <Dynamic\n            {...renderComponentProps()}\n            component={renderComponentTag()}\n          ></Dynamic>\n        }\n        when={shouldWrap()}\n      >\n        <Show when={isEmptyHtmlElement(tag())}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}></Dynamic>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && repeatItemData()}>\n          <For each={repeatItemData()}>\n            {(data, _index) => {\n              const index = _index();\n              return (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                ></RenderRepeatedBlock>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && !repeatItemData()}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}>\n            <Dynamic\n              {...renderComponentProps()}\n              component={renderComponentTag()}\n            ></Dynamic>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></RenderBlock>\n                );\n              }}\n            </For>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></BlockStyles>\n                );\n              }}\n            </For>\n          </Dynamic>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > renderBlock 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\n\nfunction RenderBlock(props) {\n  const component = createMemo(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n\n  const tag = createMemo(() => {\n    return getBlockTag(useBlock());\n  });\n\n  const useBlock = createMemo(() => {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n\n  const actions = createMemo(() => {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n\n  const attributes = createMemo(() => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n\n  const shouldWrap = createMemo(() => {\n    return !component()?.noWrap;\n  });\n\n  const renderComponentProps = createMemo(() => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  });\n\n  const useChildren = createMemo(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock().children ?? [];\n  });\n\n  const childrenWithoutParentComponent = createMemo(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  });\n\n  const repeatItemData = createMemo(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n\n  const inheritedTextStyles = createMemo(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n\n  const childrenContext = createMemo(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  });\n\n  const renderComponentTag = createMemo(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n\n  return (\n    <>\n      <Show\n        fallback={\n          <Dynamic\n            {...renderComponentProps()}\n            component={renderComponentTag()}\n          ></Dynamic>\n        }\n        when={shouldWrap()}\n      >\n        <Show when={isEmptyHtmlElement(tag())}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}></Dynamic>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && repeatItemData()}>\n          <For each={repeatItemData()}>\n            {(data, _index) => {\n              const index = _index();\n              return (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                ></RenderRepeatedBlock>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && !repeatItemData()}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}>\n            <Dynamic\n              {...renderComponentProps()}\n              component={renderComponentTag()}\n            ></Dynamic>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></RenderBlock>\n                );\n              }}\n            </For>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></BlockStyles>\n                );\n              }}\n            </For>\n          </Dynamic>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > renderContentExample 1`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  const onUpdateFn_0_props_content = createMemo(() => props.content);\n  function onUpdateFn_0() {\n    dispatchNewContentToVisualEditor(props.content);\n  }\n  createEffect(on(() => [onUpdateFn_0_props_content()], onUpdateFn_0));\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div\n          class=\\\\\"div-197af3ee\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n        </div>\n      </BuilderContext.Provider>\n      <style>{\\`.div-197af3ee {\n  display: flex;\n  flex-direction: columns;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > renderContentExample 2`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  const onUpdateFn_0_props_content = createMemo(() => props.content);\n  function onUpdateFn_0() {\n    dispatchNewContentToVisualEditor(props.content);\n  }\n  createEffect(on(() => [onUpdateFn_0_props_content()], onUpdateFn_0));\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div\n          class=\\\\\"div-197af3ee\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n        </div>\n      </BuilderContext.Provider>\n      <style>{\\`.div-197af3ee {\n  display: flex;\n  flex-direction: columns;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > rootFragmentMultiNode 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      <>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      <Show fallback={<div>Foo</div>} when={props.foo === \\\\\"bar\\\\\"}>\n        <div>Bar</div>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > rootShow 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      <Show fallback={<div>Foo</div>} when={props.foo === \\\\\"bar\\\\\"}>\n        <div>Bar</div>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div>\n        {props.name}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > self-referencing component 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div>\n        {props.name}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div>\n        {props.name}\n        {props.children}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > self-referencing component with children 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <div>\n        {props.name}\n        {props.children}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > setState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = createSignal([\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n()[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(event) => someFn()}>Click me</button>\n      </div>\n    </>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > setState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = createSignal([\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n()[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(event) => someFn()}>Click me</button>\n      </div>\n    </>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <>\n      <div>\n        <Show fallback={<>ContentA</>} when={props.conditionA}>\n          Content0\n        </Show>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={<>ContentA</>} when={props.conditionA}></Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show fallback={<>ContentB</>} when={props.conditionA}>\n          {undefined}\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show fallback={<>ContentC</>} when={props.conditionA}></Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>ContentD</>} when={props.conditionA}></Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>ContentE</>} when={props.conditionA}>\n          hello\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n        <Show fallback={<>ContentF</>} when={props.conditionA}>\n          123\n        </Show>\n        <Show\n          fallback={\n            <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n              20mb\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          4mb\n        </Show>\n        <Show fallback={<>4mb</>} when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            20mb\n          </Show>\n        </Show>\n        <Show\n          fallback={\n            <Show\n              fallback={<div>complete else</div>}\n              when={props.conditionC === \\\\\"Complete\\\\\"}\n            >\n              dff\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            <div>complete</div>\n          </Show>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showExpressions 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <>\n      <div>\n        <Show fallback={<>ContentA</>} when={props.conditionA}>\n          Content0\n        </Show>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={<>ContentA</>} when={props.conditionA}></Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show fallback={<>ContentB</>} when={props.conditionA}>\n          {undefined}\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show fallback={<>ContentC</>} when={props.conditionA}></Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>ContentD</>} when={props.conditionA}></Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>ContentE</>} when={props.conditionA}>\n          hello\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n        <Show fallback={<>ContentF</>} when={props.conditionA}>\n          123\n        </Show>\n        <Show\n          fallback={\n            <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n              20mb\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          4mb\n        </Show>\n        <Show fallback={<>4mb</>} when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            20mb\n          </Show>\n        </Show>\n        <Show\n          fallback={\n            <Show\n              fallback={<div>complete else</div>}\n              when={props.conditionC === \\\\\"Complete\\\\\"}\n            >\n              dff\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            <div>complete</div>\n          </Show>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"solid-js\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <For each={props.items}>\n          {(item, _index) => {\n            const idx = _index();\n            return <div key={idx}>{item}</div>;\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithFor 2`] = `\n\"import { Show, For } from \\\\\"solid-js\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <For each={props.items}>\n          {(item, _index) => {\n            const idx = _index();\n            return <div key={idx}>{item}</div>;\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithOtherValues 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <>\n      <div>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowRootText(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        ContentA\n      </Show>\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > showWithRootText 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction ShowRootText(props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        ContentA\n      </Show>\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const onUpdateFn_0_props_id = createMemo(() => props.id);\n  const onUpdateFn_0_props_foo_value_bar_baz = createMemo(\n    () => props.foo.value.bar.baz\n  );\n  function onUpdateFn_0() {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_props_id(), onUpdateFn_0_props_foo_value_bar_baz()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div class=\\\\\"test div-d239523c\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style>{\\`.div-d239523c {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > signalsOnUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const onUpdateFn_0_props_id = createMemo(() => props.id);\n  const onUpdateFn_0_props_foo_value_bar_baz = createMemo(\n    () => props.foo.value.bar.baz\n  );\n  function onUpdateFn_0() {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_props_id(), onUpdateFn_0_props_foo_value_bar_baz()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div class=\\\\\"test div-d239523c\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </div>\n      <style>{\\`.div-d239523c {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadAttrs 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...attrs} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadAttrs 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...attrs} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...props.nested} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadNestedProps 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...props.nested} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadProps 1`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > spreadProps 2`] = `\n\"function MyBasicComponent(props) {\n  return (\n    <>\n      <input {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > store-async-function 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > store-async-function 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = createSignal(123);\n\n  return (\n    <>\n      <div>{foo()}</div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > string-literal-store 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = createSignal(123);\n\n  return (\n    <>\n      <div>{foo()}</div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <div\n        class=\\\\\"builder-column div-35e34a45\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n      <style>{\\`.div-35e34a45 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > styleClassAndCss 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <div\n        class=\\\\\"builder-column div-35e34a45\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n      <style>{\\`.div-35e34a45 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"function StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        class={props.attributes.class + \\\\\" div-bee7e1a8\\\\\"}\n        style={props.attributes.style}\n      ></div>\n      <style>{\\`.div-bee7e1a8 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > stylePropClassAndCss 2`] = `\n\"function StylePropClassAndCss(props) {\n  return (\n    <>\n      <div\n        class={props.attributes.class + \\\\\" div-bee7e1a8\\\\\"}\n        style={props.attributes.style}\n      ></div>\n      <style>{\\`.div-bee7e1a8 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return (\n    <>\n      <Foo></Foo>\n    </>\n  );\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > subComponent 2`] = `\n\"import Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props) {\n  return (\n    <>\n      <Foo></Foo>\n    </>\n  );\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > svgComponent 1`] = `\n\"function SvgComponent(props) {\n  return (\n    <>\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    </>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > svgComponent 2`] = `\n\"function SvgComponent(props) {\n  return (\n    <>\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    </>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeDependency 1`] = `\n\"function TypeDependency(props) {\n  return (\n    <>\n      <div>{props.foo}</div>\n    </>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeDependency 2`] = `\n\"function TypeDependency(props) {\n  return (\n    <>\n      <div>{props.foo}</div>\n    </>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeExternalProps 1`] = `\n\"function TypeExternalProps(props) {\n  return (\n    <>\n      <div>\n        Hello\n        {props.name}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeExternalProps 2`] = `\n\"function TypeExternalProps(props) {\n  return (\n    <>\n      <div>\n        Hello\n        {props.name}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = createSignal(\\\\\"test\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {_name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeExternalStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = createSignal(\\\\\"test\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {_name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  function getName() {\n    if (name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name();\n  }\n\n  const test = createMemo(() => {\n    return \\\\\"test\\\\\";\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > typeGetterStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  function getName() {\n    if (name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name();\n  }\n\n  const test = createMemo(() => {\n    return \\\\\"test\\\\\";\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style-and-css 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button class=\\\\\"button-49a5373c\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n.button-49a5373c {\n  background: blue;\n  color: white;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style-and-css 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button class=\\\\\"button-49a5373c\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n.button-49a5373c {\n  background: blue;\n  color: white;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > use-style-outside-component 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > useTarget 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction UseTargetComponent(props) {\n  const [lastName, setLastName] = createSignal(\\\\\"bar\\\\\");\n\n  const [foo, setFoo] = createSignal(\\\\\"bar\\\\\");\n\n  const name = createMemo(() => {\n    const prefix = \\\\\"so\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  onMount(() => {\n    console.log(foo());\n    setFoo(\\\\\"bar\\\\\");\n  });\n\n  return (\n    <>\n      <div>{name()}</div>\n    </>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > useTarget 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction UseTargetComponent(props) {\n  const [lastName, setLastName] = createSignal(\\\\\"bar\\\\\");\n\n  const [foo, setFoo] = createSignal(\\\\\"bar\\\\\");\n\n  const name = createMemo(() => {\n    const prefix = \\\\\"so\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  onMount(() => {\n    console.log(foo());\n    setFoo(\\\\\"bar\\\\\");\n  });\n\n  return (\n    <>\n      <div>{name()}</div>\n    </>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  register();\n\n  return (\n    <>\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    </>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Solid > jsx > Javascript Test > webComponent 2`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  register();\n\n  return (\n    <>\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    </>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Solid > jsx > Remove Internal mitosis package 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}! I can run in React, Qwik, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Remove Internal mitosis package 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}! I can run in React, Qwik, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Advanced 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <main>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <div>\n                {i}:{person}\n              </div>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return <span>{person}</span>;\n          }}\n        </For>\n        <For each={names()}>\n          {(undefined, _index) => {\n            const index = _index();\n            return <br />;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(_, _index) => {\n            const ee = _index();\n            return <pre>{ee}</pre>;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(undefined, _index) => {\n            const index = _index();\n            return <p>{index}</p>;\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const count = _index();\n            return (\n              <span>\n                {person}\n                {count}\n              </span>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <span>\n                {person}\n                {i}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n      </main>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Advanced 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <main>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <div>\n                {i}:{person}\n              </div>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return <span>{person}</span>;\n          }}\n        </For>\n        <For each={names()}>\n          {(undefined, _index) => {\n            const index = _index();\n            return <br />;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(_, _index) => {\n            const ee = _index();\n            return <pre>{ee}</pre>;\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(undefined, _index) => {\n            const index = _index();\n            return <p>{index}</p>;\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const count = _index();\n            return (\n              <span>\n                {person}\n                {count}\n              </span>\n            );\n          }}\n        </For>\n        <For each={names()}>\n          {(person, _index) => {\n            const i = _index();\n            return (\n              <span>\n                {person}\n                {i}\n              </span>\n            );\n          }}\n        </For>\n        <For\n          each={Array.from({\n            length: 10,\n          })}\n        >\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <span>\n                {person}\n                {index}\n              </span>\n            );\n          }}\n        </For>\n      </main>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { Show, on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef: HTMLInputElement;\n  let inputNoArgRef: HTMLLabelElement;\n\n  const onUpdateFn_0_inputRef = createMemo(() => inputRef);\n  const onUpdateFn_0_inputNoArgRef = createMemo(() => inputNoArgRef);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_inputRef(), onUpdateFn_0_inputNoArgRef()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-013bf54d\\\\\"\n              ref={inputRef!}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef!}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-013bf54d {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > AdvancedRef 2`] = `\n\"import { Show, on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef: HTMLInputElement;\n  let inputNoArgRef: HTMLLabelElement;\n\n  const onUpdateFn_0_inputRef = createMemo(() => inputRef);\n  const onUpdateFn_0_inputNoArgRef = createMemo(() => inputNoArgRef);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_inputRef(), onUpdateFn_0_inputNoArgRef()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-013bf54d\\\\\"\n              ref={inputRef!}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef!}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-013bf54d {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [age, setAge] = createSignal(1);\n\n  const [sports, setSports] = createSignal([\\\\\"\\\\\"]);\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  return (\n    <>\n      <div class=\\\\\"test div-6ed3c989\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name()}\n          onInput={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>{\\`.div-6ed3c989 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <Show when={person === name()}>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </Show>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic 3`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [age, setAge] = createSignal(1);\n\n  const [sports, setSports] = createSignal([\\\\\"\\\\\"]);\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  return (\n    <>\n      <div class=\\\\\"test div-6ed3c989\\\\\">\n        <input\n          value={DEFAULT_VALUES.name || name()}\n          onInput={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>{\\`.div-6ed3c989 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic 4`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForShowComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <Show when={person === name()}>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </Show>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForShowComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Context 1`] = `\n\"import { useContext, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <>\n      <Injector.Provider value={createInjector()}>\n        <div>\n          {myService.method(\\\\\"hello\\\\\") + name()}\n          Hello! I can run in React, Vue, Solid, or Liquid!\n          <input onInput={(event) => onChange()} />\n        </div>\n      </Injector.Provider>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Context 2`] = `\n\"import { useContext, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  return (\n    <>\n      <Injector.Provider value={createInjector()}>\n        <div>\n          {myService.method(\\\\\"hello\\\\\") + name()}\n          Hello! I can run in React, Vue, Solid, or Liquid!\n          <input onInput={(event) => onChange()} />\n        </div>\n      </Injector.Provider>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n\n  onMount(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic OnMount Update 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n\n  onMount(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Outputs 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Basic Outputs Meta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  onMount(() => {\n    props.onMessageChange(name());\n    props.onEvent(props.message);\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicAttribute 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicAttribute 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <>\n      <div>\n        <Show when={props.children}>\n          {props.children}\n          {props.type}\n        </Show>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n      </div>\n    </>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicBooleanAttribute 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <>\n      <div>\n        <Show when={props.children}>\n          {props.children}\n          {props.type}\n        </Show>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent\n          toggle={true}\n        ></MyBooleanAttributeComponent>\n        <MyBooleanAttributeComponent list={null}></MyBooleanAttributeComponent>\n      </div>\n    </>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [dev, setDev] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <>\n      <div>\n        <MyBasicComponent id={dev()}></MyBasicComponent>\n        <div>\n          <MyBasicOnMountUpdateComponent\n            hi={name()}\n            bye={dev()}\n          ></MyBasicOnMountUpdateComponent>\n          <MyBasicOutputsComponent\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => setName(name)}\n            onEvent={(event) => log(\\\\\"Test\\\\\")}\n          ></MyBasicOutputsComponent>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicChildComponent 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const [dev, setDev] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <>\n      <div>\n        <MyBasicComponent id={dev()}></MyBasicComponent>\n        <div>\n          <MyBasicOnMountUpdateComponent\n            hi={name()}\n            bye={dev()}\n          ></MyBasicOnMountUpdateComponent>\n          <MyBasicOutputsComponent\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => setName(name)}\n            onEvent={(event) => log(\\\\\"Test\\\\\")}\n          ></MyBasicOutputsComponent>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicFor 1`] = `\n\"import { For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicFor 2`] = `\n\"import { For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = createSignal([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n\n  return (\n    <>\n      <div>\n        <For each={names()}>\n          {(person, _index) => {\n            const index = _index();\n            return (\n              <>\n                <input\n                  value={name()}\n                  onInput={(event) => {\n                    setName(event.target.value + \\\\\" and \\\\\" + person);\n                  }}\n                />\n                Hello\n                {person}! I can run in Qwik, Web Component, React, Vue, Solid,\n                or Liquid!\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRef 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef: HTMLInputElement | null;\n  let inputNoArgRef: HTMLLabelElement | null;\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-7e4ae779\\\\\"\n              ref={inputRef!}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef!}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-7e4ae779 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRef 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name().toLowerCase();\n  }\n\n  let inputRef: HTMLInputElement | null;\n  let inputNoArgRef: HTMLLabelElement | null;\n\n  return (\n    <>\n      <div>\n        <Show when={props.showInput}>\n          <>\n            <input\n              class=\\\\\"input-7e4ae779\\\\\"\n              ref={inputRef!}\n              value={name()}\n              onBlur={(event) => onBlur()}\n              onInput={(event) => setName(event.target.value)}\n            />\n            <label for=\\\\\"cars\\\\\" ref={inputNoArgRef!}>\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </>\n        </Show>\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n      <style>{\\`.input-7e4ae779 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRefAssignment 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = createSignal(0);\n\n  const onUpdateFn_0_count__ = createMemo(() => count());\n  function onUpdateFn_0() {\n    prevCount = count();\n  }\n  createEffect(on(() => [onUpdateFn_0_count__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        <h1>\n          Now:\n          {count()}, before:\n          {prevCount}\n        </h1>\n        <button onClick={(event) => setCount(1)}>Increment</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > BasicRefPrevious 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = createSignal(0);\n\n  const onUpdateFn_0_count__ = createMemo(() => count());\n  function onUpdateFn_0() {\n    prevCount = count();\n  }\n  createEffect(on(() => [onUpdateFn_0_count__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        <h1>\n          Now:\n          {count()}, before:\n          {prevCount}\n        </h1>\n        <button onClick={(event) => setCount(1)}>Increment</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Button 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Button 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Columns 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div class=\\\\\"builder-columns div-7a1249a4\\\\\">\n        <For each={props.columns}>\n          {(column, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"builder-column div-7a1249a4-2\\\\\">\n                {column.content}\n                {index}\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.div-7a1249a4 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}@media (max-width: 999px) { .div-7a1249a4 {   flex-direction: row; } }@media (max-width: 639px) { .div-7a1249a4 {   flex-direction: row-reverse; } }.div-7a1249a4-2 {\n  flex-grow: 1;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Columns 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <div class=\\\\\"builder-columns div-7a1249a4\\\\\">\n        <For each={props.columns}>\n          {(column, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"builder-column div-7a1249a4-2\\\\\">\n                {column.content}\n                {index}\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.div-7a1249a4 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}@media (max-width: 999px) { .div-7a1249a4 {   flex-direction: row; } }@media (max-width: 639px) { .div-7a1249a4 {   flex-direction: row-reverse; } }.div-7a1249a4-2 {\n  flex-grow: 1;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot name={props.slotTesting}></Slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <Slot></Slot>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > ContentSlotHtml 2`] = `\n\"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot name={props.slotTesting}></Slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <Slot></Slot>\n        </div>\n      </div>\n    </>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  const [name, setName] = createSignal(\\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = createSignal(false);\n\n  const cls = createMemo(() => {\n    return props.slotContent && props.children ? \\`\\${name()}-content\\` : \\\\\"\\\\\";\n  });\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      <Show when={props.slotReference}>\n        <div\n          class={cls()}\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick={(event) => show()}\n        >\n          <Show when={showContent() && props.slotContent}>\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          </Show>\n          <div>\n            <hr />\n          </div>\n          <div>{props.children}</div>\n        </div>\n      </Show>\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > ContentSlotJSX 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  const [name, setName] = createSignal(\\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = createSignal(false);\n\n  const cls = createMemo(() => {\n    return props.slotContent && props.children ? \\`\\${name()}-content\\` : \\\\\"\\\\\";\n  });\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      <Show when={props.slotReference}>\n        <div\n          class={cls()}\n          name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n          title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n          {...props.attributes}\n          onClick={(event) => show()}\n        >\n          <Show when={showContent() && props.slotContent}>\n            <Slot name=\\\\\"content\\\\\">{props.content}</Slot>\n          </Show>\n          <div>\n            <hr />\n          </div>\n          <div>{props.children}</div>\n        </div>\n      </Show>\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > CustomCode 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem!}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > CustomCode 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem!}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Embed 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem!}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Embed 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nfunction CustomCode(props: CustomCodeProps) {\n  const [scriptsInserted, setScriptsInserted] = createSignal([]);\n\n  const [scriptsRun, setScriptsRun] = createSignal([]);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted().includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted().push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun().includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun().push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n\n  return (\n    <>\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={elem!}\n        innerHTML={props.code}\n      ></div>\n    </>\n  );\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Form 1`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const [formState, setFormState] = createSignal(\\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = createSignal(null);\n\n  const [formErrorMessage, setFormErrorMessage] = createSignal(\\\\\"\\\\\");\n\n  const submissionState = createMemo(() => {\n    return (Builder.isEditing && props.previewState) || formState();\n  });\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: props.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, props.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              setFormErrorMessage(message);\n            }\n          }\n\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (props.resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (props.successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: props.successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n\n  let formRef: HTMLFormElement;\n\n  return (\n    <>\n      <form\n        validate={props.validate}\n        ref={formRef!}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        <Show when={props.builderBlock && props.builderBlock.children}>\n          <For each={props.builderBlock?.children}>\n            {(block, _index) => {\n              const index = _index();\n              return (\n                <BuilderBlockComponent\n                  key={block.id}\n                  block={block}\n                  index={index}\n                ></BuilderBlockComponent>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={props.errorMessage!}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"sending\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\" && responseData()}>\n          <pre class=\\\\\"builder-form-error-text pre-1e982027\\\\\">\n            {JSON.stringify(responseData(), null, 2)}\n          </pre>\n        </Show>\n        <Show when={submissionState() === \\\\\"success\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          ></BuilderBlocks>\n        </Show>\n      </form>\n      <style>{\\`.pre-1e982027 {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default FormComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Form 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const [formState, setFormState] = createSignal(\\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = createSignal(null);\n\n  const [formErrorMessage, setFormErrorMessage] = createSignal(\\\\\"\\\\\");\n\n  const submissionState = createMemo(() => {\n    return (Builder.isEditing && props.previewState) || formState();\n  });\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: props.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, props.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              setFormErrorMessage(message);\n            }\n          }\n\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (props.resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (props.successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: props.successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n\n  let formRef: HTMLFormElement;\n\n  return (\n    <>\n      <form\n        validate={props.validate}\n        ref={formRef!}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        <Show when={props.builderBlock && props.builderBlock.children}>\n          <For each={props.builderBlock?.children}>\n            {(block, _index) => {\n              const index = _index();\n              return (\n                <BuilderBlockComponent\n                  key={block.id}\n                  block={block}\n                  index={index}\n                ></BuilderBlockComponent>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={props.errorMessage!}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"sending\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          ></BuilderBlocks>\n        </Show>\n        <Show when={submissionState() === \\\\\"error\\\\\" && responseData()}>\n          <pre class=\\\\\"builder-form-error-text pre-1e982027\\\\\">\n            {JSON.stringify(responseData(), null, 2)}\n          </pre>\n        </Show>\n        <Show when={submissionState() === \\\\\"success\\\\\"}>\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          ></BuilderBlocks>\n        </Show>\n      </form>\n      <style>{\\`.pre-1e982027 {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default FormComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Image 1`] = `\n\"import { Show, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const [scrollListener, setScrollListener] = createSignal(null);\n\n  const [imageLoaded, setImageLoaded] = createSignal(false);\n\n  const [load, setLoad] = createSignal(false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef: HTMLElement;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef!}>\n          <Show when={!useLazyLoading() || load()}>\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img-0d7c0a02\\\\\"\n              }\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          </Show>\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style>{\\`.img-0d7c0a02 {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Image 2`] = `\n\"import { Show, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nfunction Image(props: ImageProps) {\n  const [scrollListener, setScrollListener] = createSignal(null);\n\n  const [imageLoaded, setImageLoaded] = createSignal(false);\n\n  const [load, setLoad] = createSignal(false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef: HTMLElement;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <>\n      <div>\n        <picture ref={pictureRef!}>\n          <Show when={!useLazyLoading() || load()}>\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\") +\n                \\\\\" img-0d7c0a02\\\\\"\n              }\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={props.image}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          </Show>\n          <source srcset={props.srcset} />\n        </picture>\n        {props.children}\n      </div>\n      <style>{\\`.img-0d7c0a02 {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Image State 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = createSignal(true);\n\n  const [images, setImages] = createSignal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={images()}>\n          {(item, _index) => {\n            const itemIndex = _index();\n            return (\n              <>\n                <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Image State 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = createSignal(true);\n\n  const [images, setImages] = createSignal([\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <For each={images()}>\n          {(item, _index) => {\n            const itemIndex = _index();\n            return (\n              <>\n                <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n              </>\n            );\n          }}\n        </For>\n      </div>\n    </>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Img 1`] = `\n\"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <>\n      <img\n        style={{\n          \\\\\"object-fit\\\\\": props.backgroundSize || \\\\\"cover\\\\\",\n          \\\\\"object-position\\\\\": props.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...props.attributes}\n        key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={props.altText}\n        src={props.imgSrc}\n      />\n    </>\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Img 2`] = `\n\"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <>\n      <img\n        style={{\n          \\\\\"object-fit\\\\\": props.backgroundSize || \\\\\"cover\\\\\",\n          \\\\\"object-position\\\\\": props.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...props.attributes}\n        key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={props.altText}\n        src={props.imgSrc}\n      />\n    </>\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Input 1`] = `\n\"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <>\n      <input\n        {...props.attributes}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={props.placeholder}\n        type={props.type}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n        required={props.required}\n        onInput={(event) => props.onChange?.(event.target.value)}\n      />\n    </>\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Input 2`] = `\n\"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <>\n      <input\n        {...props.attributes}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={props.placeholder}\n        type={props.type}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n        required={props.required}\n        onInput={(event) => props.onChange?.(event.target.value)}\n      />\n    </>\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > InputParent 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <>\n      <FormInputComponent\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => handleChange(value)}\n      ></FormInputComponent>\n    </>\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > InputParent 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <>\n      <FormInputComponent\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => handleChange(value)}\n      ></FormInputComponent>\n    </>\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > NestedStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = createSignal(_id() + \\\\\"-message\\\\\");\n\n  return (\n    <>\n      <div id={_id()}>\n        Test\n        <p id={_messageId()}>Message</p>\n      </div>\n    </>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > NestedStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = createSignal(_id() + \\\\\"-message\\\\\");\n\n  return (\n    <>\n      <div id={_id()}>\n        Test\n        <p id={_messageId()}>Message</p>\n      </div>\n    </>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > RawText 1`] = `\n\"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <>\n      <span\n        class={props.attributes?.class || props.attributes?.className}\n        innerHTML={props.text || \\\\\"\\\\\"}\n      ></span>\n    </>\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > RawText 2`] = `\n\"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nfunction RawText(props: RawTextProps) {\n  return (\n    <>\n      <span\n        class={props.attributes?.class || props.attributes?.className}\n        innerHTML={props.text || \\\\\"\\\\\"}\n      ></span>\n    </>\n  );\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Section 1`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <>\n      <section\n        {...props.attributes}\n        style={\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                \\\\\"max-width\\\\\": props.maxWidth,\n              }\n            : undefined\n        }\n      >\n        {props.children}\n      </section>\n    </>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Section 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionStateComponent(props: SectionProps) {\n  const [max, setMax] = createSignal(42);\n\n  const [items, setItems] = createSignal([42]);\n\n  return (\n    <>\n      <Show when={max()}>\n        <For each={items()}>\n          {(item, _index) => {\n            const index = _index();\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  \\\\\"max-width\\\\\": item + max(),\n                }}\n              >\n                {props.children}\n              </section>\n            );\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Section 3`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <>\n      <section\n        {...props.attributes}\n        style={\n          props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                \\\\\"max-width\\\\\": props.maxWidth,\n              }\n            : undefined\n        }\n      >\n        {props.children}\n      </section>\n    </>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Section 4`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nfunction SectionStateComponent(props: SectionProps) {\n  const [max, setMax] = createSignal(42);\n\n  const [items, setItems] = createSignal([42]);\n\n  return (\n    <>\n      <Show when={max()}>\n        <For each={items()}>\n          {(item, _index) => {\n            const index = _index();\n            return (\n              <section\n                {...props.attributes}\n                style={{\n                  \\\\\"max-width\\\\\": item + max(),\n                }}\n              >\n                {props.children}\n              </section>\n            );\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default SectionStateComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Select 1`] = `\n\"import { For } from \\\\\"solid-js\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <>\n      <select\n        {...props.attributes}\n        value={props.value}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={props.defaultValue}\n        name={props.name}\n      >\n        <For each={props.options}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <option value={option.value} data-index={index}>\n                {option.name || option.value}\n              </option>\n            );\n          }}\n        </For>\n      </select>\n    </>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Select 2`] = `\n\"import { For } from \\\\\"solid-js\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <>\n      <select\n        {...props.attributes}\n        value={props.value}\n        key={\n          Builder.isEditing && props.defaultValue\n            ? props.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={props.defaultValue}\n        name={props.name}\n      >\n        <For each={props.options}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <option value={option.value} data-index={index}>\n                {option.name || option.value}\n              </option>\n            );\n          }}\n        </For>\n      </select>\n    </>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotDefault 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotDefault 2`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotHtml 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode>\n          <Slot testing={<div>Hello</div>}></Slot>\n        </ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotHtml 2`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode>\n          <Slot testing={<div>Hello</div>}></Slot>\n        </ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotJsx 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode slotTesting={<div>Hello</div>}></ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotJsx 2`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <ContentSlotCode slotTesting={<div>Hello</div>}></ContentSlotCode>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotNamed 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n        <Slot name=\\\\\"top\\\\\"></Slot>\n        <Slot name=\\\\\"left\\\\\">Default left</Slot>\n        <Slot>Default Child</Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > SlotNamed 2`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nfunction SlotCode(props: Props) {\n  return (\n    <>\n      <div>\n        <Slot name=\\\\\"myAwesomeSlot\\\\\"></Slot>\n        <Slot name=\\\\\"top\\\\\"></Slot>\n        <Slot name=\\\\\"left\\\\\">Default left</Slot>\n        <Slot>Default Child</Slot>\n      </div>\n    </>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { Show, For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = createSignal([]);\n\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = createSignal(false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  });\n\n  return (\n    <>\n      <div data-user={name()}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        <Show when={showReviewPrompt() || \\\\\"asdf\\\\\"}>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input class=\\\\\"input-276a9616\\\\\" placeholder=\\\\\"Title\\\\\" />\n          <textarea\n            class=\\\\\"textarea-276a9616\\\\\"\n            placeholder=\\\\\"How was your experience?\\\\\"\n          ></textarea>\n          <button\n            class=\\\\\"button-276a9616\\\\\"\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </Show>\n        <For each={reviews()}>\n          {(review, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"div-276a9616\\\\\" key={review.id}>\n                <img class=\\\\\"img-276a9616\\\\\" src={review.avatar} />\n                <div class={showReviewPrompt() ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n                  <div>\n                    N:\n                    {index}\n                  </div>\n                  <div>{review.author}</div>\n                  <div>{review.reviewMessage}</div>\n                </div>\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.input-276a9616 {\n  display: block;\n}.textarea-276a9616 {\n  display: block;\n}.button-276a9616 {\n  display: block;\n}.div-276a9616 {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-276a9616 {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Stamped.io 2`] = `\n\"import { Show, For, onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = createSignal([]);\n\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = createSignal(false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  });\n\n  return (\n    <>\n      <div data-user={name()}>\n        <button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </button>\n        <Show when={showReviewPrompt() || \\\\\"asdf\\\\\"}>\n          <input placeholder=\\\\\"Email\\\\\" />\n          <input class=\\\\\"input-276a9616\\\\\" placeholder=\\\\\"Title\\\\\" />\n          <textarea\n            class=\\\\\"textarea-276a9616\\\\\"\n            placeholder=\\\\\"How was your experience?\\\\\"\n          ></textarea>\n          <button\n            class=\\\\\"button-276a9616\\\\\"\n            onClick={(ev) => {\n              ev.preventDefault();\n              setShowReviewPrompt(false);\n            }}\n          >\n            Submit\n          </button>\n        </Show>\n        <For each={reviews()}>\n          {(review, _index) => {\n            const index = _index();\n            return (\n              <div class=\\\\\"div-276a9616\\\\\" key={review.id}>\n                <img class=\\\\\"img-276a9616\\\\\" src={review.avatar} />\n                <div class={showReviewPrompt() ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n                  <div>\n                    N:\n                    {index}\n                  </div>\n                  <div>{review.author}</div>\n                  <div>{review.reviewMessage}</div>\n                </div>\n              </div>\n            );\n          }}\n        </For>\n      </div>\n      <style>{\\`.input-276a9616 {\n  display: block;\n}.textarea-276a9616 {\n  display: block;\n}.button-276a9616 {\n  display: block;\n}.div-276a9616 {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}.img-276a9616 {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreComment 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = createSignal(true);\n\n  function bar() {}\n\n  return (\n    <>\n      <>{foo()}</>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreComment 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = createSignal(true);\n\n  function bar() {}\n\n  return (\n    <>\n      <>{foo()}</>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = createSignal({});\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <>{foo(errors())}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreShadowVars 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = createSignal({});\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return (\n    <>\n      <>{foo(errors())}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = createSignal(false);\n\n  function bar() {\n    return foo();\n  }\n\n  return (\n    <>\n      <>{bar()}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > StoreWithState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = createSignal(false);\n\n  function bar() {\n    return foo();\n  }\n\n  return (\n    <>\n      <>{bar()}</>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Submit 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <>\n      <button type=\\\\\"submit\\\\\" {...props.attributes}>\n        {props.text}\n      </button>\n    </>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Submit 2`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <>\n      <button type=\\\\\"submit\\\\\" {...props.attributes}>\n        {props.text}\n      </button>\n    </>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Text 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: name() || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          props.text ||\n          props.content ||\n          name() ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    </>\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Text 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: name() || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          props.text ||\n          props.content ||\n          name() ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    </>\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Textarea 1`] = `\n\"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <>\n      <textarea\n        {...props.attributes}\n        placeholder={props.placeholder}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n      ></textarea>\n    </>\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Textarea 2`] = `\n\"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <>\n      <textarea\n        {...props.attributes}\n        placeholder={props.placeholder}\n        name={props.name}\n        value={props.value}\n        defaultValue={props.defaultValue}\n      ></textarea>\n    </>\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_active, set_active] = createSignal(false);\n\n  function _do(id?: string) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active());\n    }\n  }\n\n  return (\n    <>\n      <div>Test</div>\n    </>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > UseValueAndFnFromStore 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = createSignal(\\\\\"abc\\\\\");\n\n  const [_active, set_active] = createSignal(false);\n\n  function _do(id?: string) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active());\n    }\n  }\n\n  return (\n    <>\n      <div>Test</div>\n    </>\n  );\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Video 1`] = `\n\"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <>\n      <video\n        preload=\\\\\"none\\\\\"\n        {...props.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          \\\\\"object-fit\\\\\": props.fit,\n          \\\\\"object-position\\\\\": props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          \\\\\"border-radius\\\\\": 1,\n        }}\n        key={props.video || \\\\\"no-src\\\\\"}\n        poster={props.posterImage}\n        autoplay={props.autoPlay}\n        muted={props.muted}\n        controls={props.controls}\n        loop={props.loop}\n      ></video>\n    </>\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > Video 2`] = `\n\"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nfunction Video(props: VideoProps) {\n  return (\n    <>\n      <video\n        preload=\\\\\"none\\\\\"\n        {...props.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...props.attributes?.style,\n          \\\\\"object-fit\\\\\": props.fit,\n          \\\\\"object-position\\\\\": props.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          \\\\\"border-radius\\\\\": 1,\n        }}\n        key={props.video || \\\\\"no-src\\\\\"}\n        poster={props.posterImage}\n        autoplay={props.autoPlay}\n        muted={props.muted}\n        controls={props.controls}\n        loop={props.loop}\n      ></video>\n    </>\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > arrowFunctionInUseStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = createSignal(\\\\\"xyz\\\\\");\n\n  return (\n    <>\n      <div>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <select>\n          <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n            {(option, _index) => {\n              const index = _index();\n              return (\n                <option key={\\`\\${id()}-\\${option}\\`} value={option}>\n                  {option}\n                </option>\n              );\n            }}\n          </For>\n        </select>\n      </div>\n    </>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForFragment 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = createSignal(\\\\\"xyz\\\\\");\n\n  return (\n    <>\n      <div>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <For each={[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]}>\n          {(option, _index) => {\n            const index = _index();\n            return (\n              <>\n                <div>{option}</div>\n              </>\n            );\n          }}\n        </For>\n        <select>\n          <For each={[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]}>\n            {(option, _index) => {\n              const index = _index();\n              return (\n                <option key={\\`\\${id()}-\\${option}\\`} value={option}>\n                  {option}\n                </option>\n              );\n            }}\n          </For>\n        </select>\n      </div>\n    </>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = createSignal(\\\\\"div\\\\\");\n\n  const [tag, setTag] = createSignal(\\\\\"span\\\\\");\n\n  const TagNameGetter = createMemo(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  return (\n    <>\n      <Dynamic component={TagNameGetter()}>\n        Hello\n        <Dynamic component={tag()}>{name()}</Dynamic>\n        <For each={props.actions}>\n          {(action, _index) => {\n            const index = _index();\n            return (\n              <Dynamic component={TagName()}>\n                <Dynamic component={action.icon}></Dynamic>\n                <span>{action.text}</span>\n              </Dynamic>\n            );\n          }}\n        </For>\n      </Dynamic>\n    </>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForNoTagReference 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = createSignal(\\\\\"div\\\\\");\n\n  const [tag, setTag] = createSignal(\\\\\"span\\\\\");\n\n  const TagNameGetter = createMemo(() => {\n    return \\\\\"span\\\\\";\n  });\n\n  return (\n    <>\n      <Dynamic component={TagNameGetter()}>\n        Hello\n        <Dynamic component={tag()}>{name()}</Dynamic>\n        <For each={props.actions}>\n          {(action, _index) => {\n            const index = _index();\n            return (\n              <Dynamic component={TagName()}>\n                <Dynamic component={action.icon}></Dynamic>\n                <span>{action.text}</span>\n              </Dynamic>\n            );\n          }}\n        </For>\n      </Dynamic>\n    </>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-0b6a3ec8\\\\\"\n          ref={props.inputRef!}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-0b6a3ec8 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForwardRef 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-0b6a3ec8\\\\\"\n          ref={props.inputRef!}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-0b6a3ec8 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-478df522\\\\\"\n          ref={props.inputRef!}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-478df522 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicForwardRefMetadata 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nfunction MyBasicForwardRefComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-478df522\\\\\"\n          ref={props.inputRef!}\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n        />\n      </div>\n      <style>{\\`.input-478df522 {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const onUpdateFn_0_name__ = createMemo(() => name());\n  function onUpdateFn_0() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n  createEffect(on(() => [onUpdateFn_0_name__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        Hello!\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicOnUpdateReturn 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"PatrickJS\\\\\");\n\n  const onUpdateFn_0_name__ = createMemo(() => name());\n  function onUpdateFn_0() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n  createEffect(on(() => [onUpdateFn_0_name__()], onUpdateFn_0));\n\n  return (\n    <>\n      <div>\n        Hello!\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { onMount } from \\\\\"solid-js\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  let buttonRef: HTMLButtonElement | null;\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <button ref={buttonRef!}>Attribute Passing</button>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicRefAttributePassing 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { onMount } from \\\\\"solid-js\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  let buttonRef: HTMLButtonElement | null;\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <button ref={buttonRef!}>Attribute Passing</button>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  let buttonRef: HTMLButtonElement | null;\n\n  return (\n    <>\n      <div>\n        <button ref={buttonRef!}>Attribute Passing</button>\n      </div>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > basicRefAttributePassingCustomRef 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  let buttonRef: HTMLButtonElement | null;\n\n  return (\n    <>\n      <div>\n        <button ref={buttonRef!}>Attribute Passing</button>\n      </div>\n    </>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>{\\`.div-6ef0b03e {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > class + ClassName + css 2`] = `\n\"import MyComp from \\\\\"./my-component\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <div>\n        <MyComp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </MyComp>\n        <div class=\\\\\"test2 test div-6ef0b03e\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>{\\`.div-6ef0b03e {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > class + css 1`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > class + css 2`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > className + css 1`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > className + css 2`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <div class=\\\\\"test div-defca3e2\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-defca3e2 {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > className 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = createSignal(\\\\\"a binding\\\\\");\n\n  return (\n    <>\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={bindings()}>With binding</div>\n      </div>\n    </>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > className 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = createSignal(\\\\\"a binding\\\\\");\n\n  return (\n    <>\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={bindings()}>With binding</div>\n      </div>\n    </>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > classState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = createSignal(\\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = createSignal({\n    color: \\\\\"red\\\\\",\n  });\n\n  return (\n    <>\n      <div class={classState() + \\\\\" div-023ce23d\\\\\"} style={styleState()}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-023ce23d {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > classState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = createSignal(\\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = createSignal({\n    color: \\\\\"red\\\\\",\n  });\n\n  return (\n    <>\n      <div class={classState() + \\\\\" div-023ce23d\\\\\"} style={styleState()}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.div-023ce23d {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <>\n      <div class={props.className}>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > classnameProps 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <>\n      <div class={props.className}>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nfunction ComplexMetaRaw(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > complexMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nfunction ComplexMetaRaw(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > componentWithContext 1`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > componentWithContext 2`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n            <div>other</div>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > componentWithContextMultiRoot 2`] = `\n\"import { useContext } from \\\\\"solid-js\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <>\n      <Context2.Provider\n        value={{\n          bar: \\\\\"baz\\\\\",\n        }}\n      >\n        <Context1.Provider\n          value={{\n            foo: \\\\\"bar\\\\\",\n\n            content() {\n              return props.content;\n            },\n          }}\n        >\n          <>\n            <>{foo.value}</>\n            <div>other</div>\n          </>\n        </Context1.Provider>\n      </Context2.Provider>\n    </>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          content: props.content,\n          registeredComponents: props.customComponents,\n        }}\n      >\n        <div>setting context</div>\n      </BuilderContext.Provider>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > contentState 2`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          content: props.content,\n          registeredComponents: props.customComponents,\n        }}\n      >\n        <div>setting context</div>\n      </BuilderContext.Provider>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultProps 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick()}\n          >\n            {props.buttonText}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultProps 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick()}\n          >\n            {props.buttonText}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick(event)}\n          >\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultPropsOutsideComponent 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <div>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button\n            type=\\\\\"button\\\\\"\n            {...props.attributes}\n            onClick={(event) => props.onClick(event)}\n          >\n            {props.text}\n          </button>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return (\n    <>\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {props.name || DEFAULT_VALUES.name}\n      </div>\n    </>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > defaultValsWithTypes 2`] = `\n\"type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return (\n    <>\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {props.name || DEFAULT_VALUES.name}\n      </div>\n    </>\n  );\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-1ee0ab7b\\\\\"\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n          onInput={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.input-1ee0ab7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > eventInputAndChange 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          class=\\\\\"input-1ee0ab7b\\\\\"\n          value={name()}\n          onInput={(event) => setName(event.target.value)}\n          onInput={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>{\\`.input-1ee0ab7b {\n  color: red;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > eventProps 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <>\n      <button onClick={(event) => handleClick()}>Test</button>\n    </>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > eventProps 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return (\n    <>\n      <button onClick={(event) => handleClick()}>Test</button>\n    </>\n  );\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > expressionState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = createSignal(\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <>\n      <div>{refToUse()}</div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > expressionState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = createSignal(\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return (\n    <>\n      <div>{refToUse()}</div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nfunction FigmaButton(props: any) {\n  return (\n    <>\n      <button\n        data-icon={props.icon}\n        data-disabled={props.interactiveState}\n        data-width={props.width}\n        data-size={props.size}\n      >\n        {props.label}\n      </button>\n    </>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > figmaMeta 2`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nfunction FigmaButton(props: any) {\n  return (\n    <>\n      <button\n        data-icon={props.icon}\n        data-disabled={props.interactiveState}\n        data-width={props.width}\n        data-size={props.size}\n      >\n        {props.label}\n      </button>\n    </>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > functionProps 1`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > functionProps 2`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > getterState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const foo2 = createMemo(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n\n  const bar = createMemo(() => {\n    return \\\\\"bar\\\\\";\n  });\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <>\n      <div>\n        <p>{foo2()}</p>\n        <p>{bar()}</p>\n        <p>{baz(1)}</p>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > getterState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nfunction Button(props: ButtonProps) {\n  const foo2 = createMemo(() => {\n    return props.foo + \\\\\"foo\\\\\";\n  });\n\n  const bar = createMemo(() => {\n    return \\\\\"bar\\\\\";\n  });\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <>\n      <div>\n        <p>{foo2()}</p>\n        <p>{bar()}</p>\n        <p>{baz(1)}</p>\n      </div>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > import types 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <>\n      <RenderBlock\n        {...getRenderContentProps(props.renderContentProps.block, 0)}\n      ></RenderBlock>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > import types 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <>\n      <RenderBlock\n        {...getRenderContentProps(props.renderContentProps.block, 0)}\n      ></RenderBlock>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > layerName 1`] = `\n\"function MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div class=\\\\\"div-033af2fa\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>{\\`.div-033af2fa {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > layerName 2`] = `\n\"function MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <section>\n        <div class=\\\\\"div-033af2fa\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>{\\`.div-033af2fa {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleOnUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const [c, setC] = createSignal(\\\\\"c\\\\\");\n\n  const [d, setD] = createSignal(\\\\\"d\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a(), b());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  const onUpdateFn_1_c__ = createMemo(() => c());\n  const onUpdateFn_1_d__ = createMemo(() => d());\n  function onUpdateFn_1() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c(), d());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_1_c__(), onUpdateFn_1_d__()], onUpdateFn_1)\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleOnUpdateWithDeps 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const [c, setC] = createSignal(\\\\\"c\\\\\");\n\n  const [d, setD] = createSignal(\\\\\"d\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a(), b());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  const onUpdateFn_1_c__ = createMemo(() => c());\n  const onUpdateFn_1_d__ = createMemo(() => d());\n  function onUpdateFn_1() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c(), d());\n\n    if (a() === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }\n  createEffect(\n    on(() => [onUpdateFn_1_c__(), onUpdateFn_1_d__()], onUpdateFn_1)\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = createSignal({\n    hello: \\\\\"world\\\\\",\n  });\n\n  return (\n    <>\n      <input {...attrs()} {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > multipleSpreads 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = createSignal({\n    hello: \\\\\"world\\\\\",\n  });\n\n  return (\n    <>\n      <input {...attrs()} {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > nestedShow 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <Show fallback={<div>else-condition-B</div>} when={!props.conditionB}>\n          <div>if condition A and condition B</div>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > nestedShow 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <Show fallback={<div>else-condition-B</div>} when={!props.conditionB}>\n          <div>if condition A and condition B</div>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > nestedStyles 1`] = `\n\"function NestedStyles(props: any) {\n  return (\n    <>\n      <div class=\\\\\"div-7671878a\\\\\">Hello world</div>\n      <style>{\\`.div-7671878a {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}@media (max-width: env(--mobile)) { .div-7671878a {   display: block; } }.div-7671878a:hover {\n  display: flex;\n}.div-7671878a:active {\n  display: inline;\n}.div-7671878a .nested-selector {\n  display: grid;\n}.div-7671878a .nested-selector:hover {\n  display: block;\n}.div-7671878a.nested-selector:active {\n  display: inline-block;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > nestedStyles 2`] = `\n\"function NestedStyles(props: any) {\n  return (\n    <>\n      <div class=\\\\\"div-7671878a\\\\\">Hello world</div>\n      <style>{\\`.div-7671878a {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}@media (max-width: env(--mobile)) { .div-7671878a {   display: block; } }.div-7671878a:hover {\n  display: flex;\n}.div-7671878a:active {\n  display: inline;\n}.div-7671878a .nested-selector {\n  display: grid;\n}.div-7671878a .nested-selector:hover {\n  display: block;\n}.div-7671878a.nested-selector:active {\n  display: inline-block;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"div-e49cb49c\\\\\">Single Number</div>\n        <div class=\\\\\"div-e49cb49c-2\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"div-e49cb49c-3\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"div-e49cb49c-4\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"div-e49cb49c-5\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div-e49cb49c-6\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n      <style>{\\`.div-e49cb49c {\n  margin: 10px;\n}.div-e49cb49c-2 {\n  padding: 10px;\n}.div-e49cb49c-3 {\n  border: 1px solid;\n}.div-e49cb49c-4 {\n  color: red;\n}.div-e49cb49c-5 {\n  background: blue;\n}.div-e49cb49c-6 {\n  background: blue;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > normalizeLayerNames 2`] = `\n\"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"div-e49cb49c\\\\\">Single Number</div>\n        <div class=\\\\\"div-e49cb49c-2\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"div-e49cb49c-3\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"div-e49cb49c-4\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"div-e49cb49c-5\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div-e49cb49c-6\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n      <style>{\\`.div-e49cb49c {\n  margin: 10px;\n}.div-e49cb49c-2 {\n  padding: 10px;\n}.div-e49cb49c-3 {\n  border: 1px solid;\n}.div-e49cb49c-4 {\n  color: red;\n}.div-e49cb49c-5 {\n  background: blue;\n}.div-e49cb49c-6 {\n  background: blue;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onEvent 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Embed(props: any) {\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <>\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={elem!}\n        onInitEditingBldr={(event) => elem_onInitEditingBldr(event)}\n      >\n        <div>Test</div>\n      </div>\n    </>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onEvent 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction Embed(props: any) {\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem: HTMLDivElement;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n\n  return (\n    <>\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={elem!}\n        onInitEditingBldr={(event) => elem_onInitEditingBldr(event)}\n      >\n        <div>Test</div>\n      </div>\n    </>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction OnInit(props: any) {\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInit & onMount 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction OnInit(props: any) {\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInit 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = createSignal(\\\\\"\\\\\");\n\n  setName(defaultValues.name || props.name);\n  console.log(\\\\\"set defaults with props\\\\\");\n\n  return (\n    <>\n      <div>\n        Default name defined by parent\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInit 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = createSignal(\\\\\"\\\\\");\n\n  setName(defaultValues.name || props.name);\n  console.log(\\\\\"set defaults with props\\\\\");\n\n  return (\n    <>\n      <div>\n        Default name defined by parent\n        {name()}\n      </div>\n    </>\n  );\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInitPlain 1`] = `\n\"function OnInitPlain(props: any) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onInitPlain 2`] = `\n\"function OnInitPlain(props: any) {\n  console.log(\\\\\"onInit\\\\\");\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onMount 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props: any) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onMount 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props: any) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props: any) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onMountMultiple 2`] = `\n\"import { onMount } from \\\\\"solid-js\\\\\";\n\nfunction Comp(props: any) {\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props: any) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  const onUpdateFn_0_props_size = createMemo(() => props.size);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a(), b(), props.size);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_a__(), onUpdateFn_0_b__(), onUpdateFn_0_props_size()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > onUpdateWithDeps 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = createSignal(\\\\\"a\\\\\");\n\n  const [b, setB] = createSignal(\\\\\"b\\\\\");\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  const onUpdateFn_0_props_size = createMemo(() => props.size);\n  function onUpdateFn_0() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a(), b(), props.size);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_a__(), onUpdateFn_0_b__(), onUpdateFn_0_props_size()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"type Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > preserveExportOrLocalStatement 2`] = `\n\"type Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > preserveTyping 1`] = `\n\"export type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > preserveTyping 2`] = `\n\"export type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsDestructure 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = createSignal(\\\\\"Decadef20\\\\\");\n\n  return (\n    <>\n      <div>\n        {props.children}\n        {props.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsInterface 1`] = `\n\"interface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsInterface 2`] = `\n\"interface Person {\n  name: string;\n  age?: number;\n}\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsType 1`] = `\n\"type Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > propsType 2`] = `\n\"type Person = {\n  name: string;\n  age?: number;\n};\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <>\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {props.name}\n      </div>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > referencingFunInsideHook 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > renderBlock 1`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const component = createMemo(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n\n  const tag = createMemo(() => {\n    return getBlockTag(useBlock());\n  });\n\n  const useBlock = createMemo(() => {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n\n  const actions = createMemo(() => {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n\n  const attributes = createMemo(() => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n\n  const shouldWrap = createMemo(() => {\n    return !component()?.noWrap;\n  });\n\n  const renderComponentProps = createMemo(() => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  });\n\n  const useChildren = createMemo(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock().children ?? [];\n  });\n\n  const childrenWithoutParentComponent = createMemo(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  });\n\n  const repeatItemData = createMemo(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n\n  const inheritedTextStyles = createMemo(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n\n  const childrenContext = createMemo(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  });\n\n  const renderComponentTag = createMemo(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n\n  return (\n    <>\n      <Show\n        fallback={\n          <Dynamic\n            {...renderComponentProps()}\n            component={renderComponentTag()}\n          ></Dynamic>\n        }\n        when={shouldWrap()}\n      >\n        <Show when={isEmptyHtmlElement(tag())}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}></Dynamic>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && repeatItemData()}>\n          <For each={repeatItemData()}>\n            {(data, _index) => {\n              const index = _index();\n              return (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                ></RenderRepeatedBlock>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && !repeatItemData()}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}>\n            <Dynamic\n              {...renderComponentProps()}\n              component={renderComponentTag()}\n            ></Dynamic>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></RenderBlock>\n                );\n              }}\n            </For>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></BlockStyles>\n                );\n              }}\n            </For>\n          </Dynamic>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > renderBlock 2`] = `\n\"import { Show, For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\nimport { Dynamic } from \\\\\"solid-js/web\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  const component = createMemo(() => {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  });\n\n  const tag = createMemo(() => {\n    return getBlockTag(useBlock());\n  });\n\n  const useBlock = createMemo(() => {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  });\n\n  const actions = createMemo(() => {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  });\n\n  const attributes = createMemo(() => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  });\n\n  const shouldWrap = createMemo(() => {\n    return !component()?.noWrap;\n  });\n\n  const renderComponentProps = createMemo(() => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  });\n\n  const useChildren = createMemo(() => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return useBlock().children ?? [];\n  });\n\n  const childrenWithoutParentComponent = createMemo(() => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  });\n\n  const repeatItemData = createMemo(() => {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  });\n\n  const inheritedTextStyles = createMemo(() => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  });\n\n  const childrenContext = createMemo(() => {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  });\n\n  const renderComponentTag = createMemo(() => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  });\n\n  return (\n    <>\n      <Show\n        fallback={\n          <Dynamic\n            {...renderComponentProps()}\n            component={renderComponentTag()}\n          ></Dynamic>\n        }\n        when={shouldWrap()}\n      >\n        <Show when={isEmptyHtmlElement(tag())}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}></Dynamic>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && repeatItemData()}>\n          <For each={repeatItemData()}>\n            {(data, _index) => {\n              const index = _index();\n              return (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                ></RenderRepeatedBlock>\n              );\n            }}\n          </For>\n        </Show>\n        <Show when={!isEmptyHtmlElement(tag()) && !repeatItemData()}>\n          <Dynamic {...attributes()} {...actions()} component={tag()}>\n            <Dynamic\n              {...renderComponentProps()}\n              component={renderComponentTag()}\n            ></Dynamic>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <RenderBlock\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></RenderBlock>\n                );\n              }}\n            </For>\n            <For each={childrenWithoutParentComponent()}>\n              {(child, _index) => {\n                const index = _index();\n                return (\n                  <BlockStyles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={childrenContext()}\n                  ></BlockStyles>\n                );\n              }}\n            </For>\n          </Dynamic>\n        </Show>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > renderContentExample 1`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  const onUpdateFn_0_props_content = createMemo(() => props.content);\n  function onUpdateFn_0() {\n    dispatchNewContentToVisualEditor(props.content);\n  }\n  createEffect(on(() => [onUpdateFn_0_props_content()], onUpdateFn_0));\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div\n          class=\\\\\"div-7a3852fa\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n        </div>\n      </BuilderContext.Provider>\n      <style>{\\`.div-7a3852fa {\n  display: flex;\n  flex-direction: columns;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > renderContentExample 2`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\n\nfunction RenderContent(props: Props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  const onUpdateFn_0_props_content = createMemo(() => props.content);\n  function onUpdateFn_0() {\n    dispatchNewContentToVisualEditor(props.content);\n  }\n  createEffect(on(() => [onUpdateFn_0_props_content()], onUpdateFn_0));\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <div\n          class=\\\\\"div-7a3852fa\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks}></RenderBlocks>\n        </div>\n      </BuilderContext.Provider>\n      <style>{\\`.div-7a3852fa {\n  display: flex;\n  flex-direction: columns;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > rootFragmentMultiNode 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      <>\n        <Show when={props.link}>\n          <a\n            {...props.attributes}\n            href={props.link}\n            target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {props.text}\n          </a>\n        </Show>\n        <Show when={!props.link}>\n          <button type=\\\\\"button\\\\\" {...props.attributes}>\n            {props.text}\n          </button>\n        </Show>\n      </>\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > rootShow 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      <Show fallback={<div>Foo</div>} when={props.foo === \\\\\"bar\\\\\"}>\n        <div>Bar</div>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > rootShow 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      <Show fallback={<div>Foo</div>} when={props.foo === \\\\\"bar\\\\\"}>\n        <div>Bar</div>\n      </Show>\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        {props.name}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > self-referencing component 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        {props.name}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        {props.name}\n        {props.children}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > self-referencing component with children 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        {props.name}\n        {props.children}\n        <Show when={props.name === \\\\\"Batman\\\\\"}>\n          <MyComponent name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </MyComponent>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > setState 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = createSignal([\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n()[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(event) => someFn()}>Click me</button>\n      </div>\n    </>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > setState 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = createSignal([\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n()[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(event) => someFn()}>Click me</button>\n      </div>\n    </>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showExpressions 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <>\n      <div>\n        <Show fallback={<>ContentA</>} when={props.conditionA}>\n          Content0\n        </Show>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={<>ContentA</>} when={props.conditionA}></Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show fallback={<>ContentB</>} when={props.conditionA}>\n          {undefined}\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show fallback={<>ContentC</>} when={props.conditionA}></Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>ContentD</>} when={props.conditionA}></Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>ContentE</>} when={props.conditionA}>\n          hello\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n        <Show fallback={<>ContentF</>} when={props.conditionA}>\n          123\n        </Show>\n        <Show\n          fallback={\n            <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n              20mb\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          4mb\n        </Show>\n        <Show fallback={<>4mb</>} when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            20mb\n          </Show>\n        </Show>\n        <Show\n          fallback={\n            <Show\n              fallback={<div>complete else</div>}\n              when={props.conditionC === \\\\\"Complete\\\\\"}\n            >\n              dff\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            <div>complete</div>\n          </Show>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showExpressions 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <>\n      <div>\n        <Show fallback={<>ContentA</>} when={props.conditionA}>\n          Content0\n        </Show>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={<>ContentA</>} when={props.conditionA}></Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show fallback={<>ContentB</>} when={props.conditionA}>\n          {undefined}\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show fallback={<>ContentC</>} when={props.conditionA}></Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>ContentD</>} when={props.conditionA}></Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>ContentE</>} when={props.conditionA}>\n          hello\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n        <Show fallback={<>ContentF</>} when={props.conditionA}>\n          123\n        </Show>\n        <Show\n          fallback={\n            <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n              20mb\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          4mb\n        </Show>\n        <Show fallback={<>4mb</>} when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            20mb\n          </Show>\n        </Show>\n        <Show\n          fallback={\n            <Show\n              fallback={<div>complete else</div>}\n              when={props.conditionC === \\\\\"Complete\\\\\"}\n            >\n              dff\n            </Show>\n          }\n          when={props.conditionA === \\\\\"Default\\\\\"}\n        >\n          <Show fallback={<>9mb</>} when={props.conditionB === \\\\\"Complete\\\\\"}>\n            <div>complete</div>\n          </Show>\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithFor 1`] = `\n\"import { Show, For } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <For each={props.items}>\n          {(item, _index) => {\n            const idx = _index();\n            return <div key={idx}>{item}</div>;\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithFor 2`] = `\n\"import { Show, For } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        <For each={props.items}>\n          {(item, _index) => {\n            const idx = _index();\n            return <div key={idx}>{item}</div>;\n          }}\n        </For>\n      </Show>\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <>\n      <div>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithOtherValues 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <>\n      <div>\n        <Show when={props.conditionA}>ContentA</Show>\n        <Show fallback={undefined} when={props.conditionA}>\n          ContentB\n        </Show>\n        <Show when={props.conditionA}>ContentC</Show>\n        <Show when={props.conditionA}>ContentD</Show>\n        <Show fallback={<>hello</>} when={props.conditionA}>\n          ContentE\n        </Show>\n        <Show fallback={<>123</>} when={props.conditionA}>\n          ContentF\n        </Show>\n      </div>\n    </>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithRootText 1`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        ContentA\n      </Show>\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > showWithRootText 2`] = `\n\"import { Show } from \\\\\"solid-js\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nfunction ShowRootText(props: Props) {\n  return (\n    <>\n      <Show fallback={<div>else-condition-A</div>} when={props.conditionA}>\n        ContentA\n      </Show>\n    </>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  const onUpdateFn_0_props_id = createMemo(() => props.id);\n  const onUpdateFn_0_props_foo_bar_baz = createMemo(() => props.foo.bar.baz);\n  function onUpdateFn_0() {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_props_id(), onUpdateFn_0_props_foo_bar_baz()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div class=\\\\\"test div-6c56607a\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style>{\\`.div-6c56607a {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > signalsOnUpdate 2`] = `\n\"import { on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nfunction MyBasicComponent(props: Props) {\n  const onUpdateFn_0_props_id = createMemo(() => props.id);\n  const onUpdateFn_0_props_foo_bar_baz = createMemo(() => props.foo.bar.baz);\n  function onUpdateFn_0() {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }\n  createEffect(\n    on(\n      () => [onUpdateFn_0_props_id(), onUpdateFn_0_props_foo_bar_baz()],\n      onUpdateFn_0\n    )\n  );\n\n  return (\n    <>\n      <div class=\\\\\"test div-6c56607a\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </div>\n      <style>{\\`.div-6c56607a {\n  padding: 10px;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadAttrs 1`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...attrs} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadAttrs 2`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...attrs} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...props.nested} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadNestedProps 2`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...props.nested} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadProps 1`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > spreadProps 2`] = `\n\"function MyBasicComponent(props: any) {\n  return (\n    <>\n      <input {...props} />\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > store-async-function 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > store-async-function 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = createSignal(123);\n\n  return (\n    <>\n      <div>{foo()}</div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > string-literal-store 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = createSignal(123);\n\n  return (\n    <>\n      <div>{foo()}</div>\n    </>\n  );\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <div\n        class=\\\\\"builder-column div-35e34a45\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n      <style>{\\`.div-35e34a45 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > styleClassAndCss 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <div\n        class=\\\\\"builder-column div-35e34a45\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n      <style>{\\`.div-35e34a45 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"function StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        class={props.attributes.class + \\\\\" div-bee7e1a8\\\\\"}\n        style={props.attributes.style}\n      ></div>\n      <style>{\\`.div-bee7e1a8 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > stylePropClassAndCss 2`] = `\n\"function StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <div\n        class={props.attributes.class + \\\\\" div-bee7e1a8\\\\\"}\n        style={props.attributes.style}\n      ></div>\n      <style>{\\`.div-bee7e1a8 {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return (\n    <>\n      <Foo></Foo>\n    </>\n  );\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > subComponent 2`] = `\n\"import Foo from \\\\\"./foo-sub-component\\\\\";\n\nfunction SubComponent(props: any) {\n  return (\n    <>\n      <Foo></Foo>\n    </>\n  );\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > svgComponent 1`] = `\n\"function SvgComponent(props: any) {\n  return (\n    <>\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    </>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > svgComponent 2`] = `\n\"function SvgComponent(props: any) {\n  return (\n    <>\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    </>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeDependency 1`] = `\n\"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return (\n    <>\n      <div>{props.foo}</div>\n    </>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeDependency 2`] = `\n\"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return (\n    <>\n      <div>{props.foo}</div>\n    </>\n  );\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return (\n    <>\n      <div>\n        Hello\n        {props.name}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeExternalProps 2`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return (\n    <>\n      <div>\n        Hello\n        {props.name}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = createSignal(\\\\\"test\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {_name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeExternalStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = createSignal(\\\\\"test\\\\\");\n\n  return (\n    <>\n      <div>\n        Hello\n        {_name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  function getName() {\n    if (name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name();\n  }\n\n  const test = createMemo(() => {\n    return \\\\\"test\\\\\";\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > typeGetterStore 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = createSignal(\\\\\"test\\\\\");\n\n  function getName() {\n    if (name() === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name();\n  }\n\n  const test = createMemo(() => {\n    return \\\\\"test\\\\\";\n  });\n\n  return (\n    <>\n      <div>\n        Hello\n        {name()}!{\\\\\" \\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style-and-css 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button class=\\\\\"button-49a5373c\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n.button-49a5373c {\n  background: blue;\n  color: white;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style-and-css 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button class=\\\\\"button-49a5373c\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n      <style>{\\`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n\n.button-49a5373c {\n  background: blue;\n  color: white;\n}\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > use-style-outside-component 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>{\\`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > useTarget 1`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const [lastName, setLastName] = createSignal(\\\\\"bar\\\\\");\n\n  const [foo, setFoo] = createSignal(\\\\\"bar\\\\\");\n\n  const name = createMemo(() => {\n    const prefix = \\\\\"so\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  onMount(() => {\n    console.log(foo());\n    setFoo(\\\\\"bar\\\\\");\n  });\n\n  return (\n    <>\n      <div>{name()}</div>\n    </>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > useTarget 2`] = `\n\"import { onMount, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  const [lastName, setLastName] = createSignal(\\\\\"bar\\\\\");\n\n  const [foo, setFoo] = createSignal(\\\\\"bar\\\\\");\n\n  const name = createMemo(() => {\n    const prefix = \\\\\"so\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  });\n\n  onMount(() => {\n    console.log(foo());\n    setFoo(\\\\\"bar\\\\\");\n  });\n\n  return (\n    <>\n      <div>{name()}</div>\n    </>\n  );\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  register();\n\n  return (\n    <>\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    </>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Solid > jsx > Typescript Test > webComponent 2`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  register();\n\n  return (\n    <>\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    </>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > basic 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          onInput={(event) => setName(event.target.value)}\n          value={name()}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > basic 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          onInput={(event) => setName(event.target.value)}\n          value={name()}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > bindGroup 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = createSignal(\\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = createSignal([]);\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={tortilla() === \\\\\"Plain\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={tortilla() === \\\\\"Whole wheat\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={tortilla() === \\\\\"Spinach\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={fillings() === \\\\\"Rice\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={fillings() === \\\\\"Beans\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={fillings() === \\\\\"Cheese\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={fillings() === \\\\\"Guac (extra)\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {tortilla()}\n        </p>\n        <p>\n          Fillings:\n          {fillings()}\n        </p>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > bindGroup 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = createSignal(\\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = createSignal([]);\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={tortilla() === \\\\\"Plain\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={tortilla() === \\\\\"Whole wheat\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={tortilla() === \\\\\"Spinach\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={fillings() === \\\\\"Rice\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={fillings() === \\\\\"Beans\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={fillings() === \\\\\"Cheese\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={fillings() === \\\\\"Guac (extra)\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {tortilla()}\n        </p>\n        <p>\n          Fillings:\n          {fillings()}\n        </p>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > bindProperty 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = createSignal(\\\\\"hello\\\\\");\n\n  return (\n    <>\n      <input value={value()} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > bindProperty 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = createSignal(\\\\\"hello\\\\\");\n\n  return (\n    <>\n      <input value={value()} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > classDirective 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = createSignal(true);\n\n  return (\n    <>\n      <input\n        class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > classDirective 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = createSignal(true);\n\n  return (\n    <>\n      <input\n        class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > context 1`] = `\n\"Identifier expected. (29:8)\n  27 |\n  28 |     return (<>\n> 29 |       <'activeTab'.Provider  value={activeTab()} ><div >{activeTab()}</div></'activeTab'.Provider>\n     |        ^\n  30 |\n  31 |\n  32 |       </>)\"\n`;\n\nexports[`Solid > svelte > Javascript Test > context 2`] = `\n\"Identifier expected. (29:8)\n  27 |\n  28 |     return (<>\n> 29 |       <'activeTab'.Provider  value={activeTab()} ><div >{activeTab()}</div></'activeTab'.Provider>\n     |        ^\n  30 |\n  31 |\n  32 |       </>)\"\n`;\n\nexports[`Solid > svelte > Javascript Test > each 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = createSignal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <>\n      <ul>\n        <For each={numbers()}>\n          {(num, _index) => {\n            const index = _index();\n            return <li>{num}</li>;\n          }}\n        </For>\n      </ul>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > each 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = createSignal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <>\n      <ul>\n        <For each={numbers()}>\n          {(num, _index) => {\n            const index = _index();\n            return <li>{num}</li>;\n          }}\n        </For>\n      </ul>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > eventHandlers 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > html 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = createSignal(\\\\\"<b>bold</b>\\\\\");\n\n  return (\n    <>\n      <div innerHTML={html()}></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > html 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = createSignal(\\\\\"<b>bold</b>\\\\\");\n\n  return (\n    <>\n      <div innerHTML={html()}></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > ifElse 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = createSignal(true);\n\n  function toggle() {\n    setShow(!show());\n  }\n\n  return (\n    <>\n      <Show\n        fallback={<button onClick={(event) => toggle(event)}> Show </button>}\n        when={show()}\n      >\n        <button onClick={(event) => toggle(event)}> Hide </button>\n      </Show>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > ifElse 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = createSignal(true);\n\n  function toggle() {\n    setShow(!show());\n  }\n\n  return (\n    <>\n      <Show\n        fallback={<button onClick={(event) => toggle(event)}> Show </button>}\n        when={show()}\n      >\n        <button onClick={(event) => toggle(event)}> Hide </button>\n      </Show>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > imports 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = createSignal(false);\n\n  return (\n    <>\n      <div>\n        <Button type=\\\\\"button\\\\\" disabled={disabled()}>\n          <Slot></Slot>\n        </Button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > imports 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = createSignal(false);\n\n  return (\n    <>\n      <div>\n        <Button type=\\\\\"button\\\\\" disabled={disabled()}>\n          <Slot></Slot>\n        </Button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > lifecycleHooks 2`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > reactive 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const lowercaseName = createMemo(() => {\n    return name().toLowerCase();\n  });\n\n  return (\n    <>\n      <div>\n        <input value={name()} />\n        Lowercase:\n        {lowercaseName()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > reactive 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const lowercaseName = createMemo(() => {\n    return name().toLowerCase();\n  });\n\n  return (\n    <>\n      <div>\n        <input value={name()} />\n        Lowercase:\n        {lowercaseName()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = createSignal(2);\n\n  const [b, setB] = createSignal(5);\n\n  const [result, setResult] = createSignal(null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    calculateResult(a(), b());\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setA(event.target.value)}\n          value={a()}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setB(event.target.value)}\n          value={b()}\n        />\n        Result:\n        {result()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > reactiveWithFn 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = createSignal(2);\n\n  const [b, setB] = createSignal(5);\n\n  const [result, setResult] = createSignal(null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    calculateResult(a(), b());\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setA(event.target.value)}\n          value={a()}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setB(event.target.value)}\n          value={b()}\n        />\n        Result:\n        {result()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > slots 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <div>\n        <Slot>default</Slot>\n        <Slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > slots 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <div>\n        <Slot>default</Slot>\n        <Slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > style 1`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <input class=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > style 2`] = `\n\"function MyComponent(props) {\n  return (\n    <>\n      <input class=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > textExpressions 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = createSignal(5);\n\n  const [b, setB] = createSignal(12);\n\n  return (\n    <>\n      <div>\n        normal:\n        {a() + b()}\n        <br />\n        conditional\n        {a() > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Javascript Test > textExpressions 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = createSignal(5);\n\n  const [b, setB] = createSignal(12);\n\n  return (\n    <>\n      <div>\n        normal:\n        {a() + b()}\n        <br />\n        conditional\n        {a() > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > basic 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          onInput={(event) => setName(event.target.value)}\n          value={name()}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > basic 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <div>\n        <input\n          onInput={(event) => setName(event.target.value)}\n          value={name()}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > bindGroup 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = createSignal(\\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = createSignal([]);\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={tortilla() === \\\\\"Plain\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={tortilla() === \\\\\"Whole wheat\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={tortilla() === \\\\\"Spinach\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={fillings() === \\\\\"Rice\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={fillings() === \\\\\"Beans\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={fillings() === \\\\\"Cheese\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={fillings() === \\\\\"Guac (extra)\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {tortilla()}\n        </p>\n        <p>\n          Fillings:\n          {fillings()}\n        </p>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > bindGroup 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = createSignal(\\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = createSignal([]);\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={tortilla() === \\\\\"Plain\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={tortilla() === \\\\\"Whole wheat\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={tortilla() === \\\\\"Spinach\\\\\"}\n          onInput={(event) => setTortilla(event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={fillings() === \\\\\"Rice\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={fillings() === \\\\\"Beans\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={fillings() === \\\\\"Cheese\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={fillings() === \\\\\"Guac (extra)\\\\\"}\n          onInput={(event) => setFillings(event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {tortilla()}\n        </p>\n        <p>\n          Fillings:\n          {fillings()}\n        </p>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > bindProperty 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = createSignal(\\\\\"hello\\\\\");\n\n  return (\n    <>\n      <input value={value()} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > bindProperty 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = createSignal(\\\\\"hello\\\\\");\n\n  return (\n    <>\n      <input value={value()} />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > classDirective 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = createSignal(true);\n\n  return (\n    <>\n      <input\n        class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > classDirective 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = createSignal(true);\n\n  return (\n    <>\n      <input\n        class={\\`form-input \\${props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          focus() ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > context 1`] = `\n\"Identifier expected. (29:8)\n  27 |\n  28 |     return (<>\n> 29 |       <'activeTab'.Provider  value={activeTab()} ><div >{activeTab()}</div></'activeTab'.Provider>\n     |        ^\n  30 |\n  31 |\n  32 |       </>)\"\n`;\n\nexports[`Solid > svelte > Typescript Test > context 2`] = `\n\"Identifier expected. (29:8)\n  27 |\n  28 |     return (<>\n> 29 |       <'activeTab'.Provider  value={activeTab()} ><div >{activeTab()}</div></'activeTab'.Provider>\n     |        ^\n  30 |\n  31 |\n  32 |       </>)\"\n`;\n\nexports[`Solid > svelte > Typescript Test > each 1`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = createSignal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <>\n      <ul>\n        <For each={numbers()}>\n          {(num, _index) => {\n            const index = _index();\n            return <li>{num}</li>;\n          }}\n        </For>\n      </ul>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > each 2`] = `\n\"import { For, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = createSignal([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <>\n      <ul>\n        <For each={numbers()}>\n          {(num, _index) => {\n            const index = _index();\n            return <li>{num}</li>;\n          }}\n        </For>\n      </ul>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > eventHandlers 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <>\n      <div>\n        <button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n        <button onClick={(event) => log(event)}>Log</button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > html 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = createSignal(\\\\\"<b>bold</b>\\\\\");\n\n  return (\n    <>\n      <div innerHTML={html()}></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > html 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = createSignal(\\\\\"<b>bold</b>\\\\\");\n\n  return (\n    <>\n      <div innerHTML={html()}></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > ifElse 1`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = createSignal(true);\n\n  function toggle() {\n    setShow(!show());\n  }\n\n  return (\n    <>\n      <Show\n        fallback={<button onClick={(event) => toggle(event)}> Show </button>}\n        when={show()}\n      >\n        <button onClick={(event) => toggle(event)}> Hide </button>\n      </Show>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > ifElse 2`] = `\n\"import { Show, createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = createSignal(true);\n\n  function toggle() {\n    setShow(!show());\n  }\n\n  return (\n    <>\n      <Show\n        fallback={<button onClick={(event) => toggle(event)}> Show </button>}\n        when={show()}\n      >\n        <button onClick={(event) => toggle(event)}> Hide </button>\n      </Show>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > imports 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = createSignal(false);\n\n  return (\n    <>\n      <div>\n        <Button type=\\\\\"button\\\\\" disabled={disabled()}>\n          <Slot></Slot>\n        </Button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > imports 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nimport Button from \\\\\"./Button\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = createSignal(false);\n\n  return (\n    <>\n      <div>\n        <Button type=\\\\\"button\\\\\" disabled={disabled()}>\n          <Slot></Slot>\n        </Button>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > lifecycleHooks 2`] = `\n\"import { onMount, on, createEffect, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  return (\n    <>\n      <div></div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > reactive 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const lowercaseName = createMemo(() => {\n    return name().toLowerCase();\n  });\n\n  return (\n    <>\n      <div>\n        <input value={name()} />\n        Lowercase:\n        {lowercaseName()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > reactive 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = createSignal(\\\\\"Steve\\\\\");\n\n  const lowercaseName = createMemo(() => {\n    return name().toLowerCase();\n  });\n\n  return (\n    <>\n      <div>\n        <input value={name()} />\n        Lowercase:\n        {lowercaseName()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = createSignal(2);\n\n  const [b, setB] = createSignal(5);\n\n  const [result, setResult] = createSignal(null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    calculateResult(a(), b());\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setA(event.target.value)}\n          value={a()}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setB(event.target.value)}\n          value={b()}\n        />\n        Result:\n        {result()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > reactiveWithFn 2`] = `\n\"import { on, createEffect, createMemo, createSignal } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = createSignal(2);\n\n  const [b, setB] = createSignal(5);\n\n  const [result, setResult] = createSignal(null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  const onUpdateFn_0_a__ = createMemo(() => a());\n  const onUpdateFn_0_b__ = createMemo(() => b());\n  function onUpdateFn_0() {\n    calculateResult(a(), b());\n  }\n  createEffect(\n    on(() => [onUpdateFn_0_a__(), onUpdateFn_0_b__()], onUpdateFn_0)\n  );\n\n  return (\n    <>\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setA(event.target.value)}\n          value={a()}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onInput={(event) => setB(event.target.value)}\n          value={b()}\n        />\n        Result:\n        {result()}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > slots 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        <Slot>default</Slot>\n        <Slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > slots 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <div>\n        <Slot>default</Slot>\n        <Slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </Slot>\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > style 1`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <input class=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > style 2`] = `\n\"function MyComponent(props: any) {\n  return (\n    <>\n      <input class=\\\\\"form-input\\\\\" />\n      <style>{\\`\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n\n\\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > textExpressions 1`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = createSignal(5);\n\n  const [b, setB] = createSignal(12);\n\n  return (\n    <>\n      <div>\n        normal:\n        {a() + b()}\n        <br />\n        conditional\n        {a() > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Solid > svelte > Typescript Test > textExpressions 2`] = `\n\"import { createSignal, createMemo } from \\\\\"solid-js\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = createSignal(5);\n\n  const [b, setB] = createSignal(12);\n\n  return (\n    <>\n      <div>\n        normal:\n        {a() + b()}\n        <br />\n        conditional\n        {a() > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/stencil.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Stencil > jsx > Javascript Test > Advanced 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-show-component\\\\\",\n})\nexport class MyBasicForShowComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <main>\n        {this.names?.map((person, i) => (\n          <div>\n            {i}:{person}\n          </div>\n        ))}\n        {this.names?.map((person) => (\n          <span>{person}</span>\n        ))}\n        {this.names?.map((item) => (\n          <br />\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((_, ee) => (\n          <pre>{ee}</pre>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((item) => (\n          <p>{index}</p>\n        ))}\n        {this.names?.map((person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((person, count) => (\n          <span>\n            {person}\n            {count}\n          </span>\n        ))}\n        {this.names?.map((person, i) => (\n          <span>\n            {person}\n            {i}\n          </span>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        ))}\n      </main>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > AdvancedRef 1`] = `\n\"import { Component, h, Fragment, Watch, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  private inputRef!: HTMLElement;\n  private inputNoArgRef!: HTMLElement;\n  @Prop() showInput: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  watch0Fn() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  @Watch(\\\\\"inputRef\\\\\")\n  @Watch(\\\\\"inputNoArgRef\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        {this.showInput ? (\n          <Fragment>\n            <input\n              class=\\\\\"input\\\\\"\n              ref={(el: any) => {\n                this.inputRef = el;\n              }}\n              value={this.name}\n              onBlur={(event) => this.onBlur()}\n              onChange={(event) => (this.name = event.target.value)}\n            />\n            <label\n              htmlFor=\\\\\"cars\\\\\"\n              ref={(el: any) => {\n                this.inputNoArgRef = el;\n              }}\n            >\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {this.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @State() name = \\\\\"Steve\\\\\";\n  @State() age = 1;\n  @State() sports = [\\\\\"\\\\\"];\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  DEFAULT_VALUES = {\n    name: \\\\\"Steve\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        <input\n          value={this.DEFAULT_VALUES.name || this.name}\n          onChange={(myEvent) => (this.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic 2`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-show-component\\\\\",\n})\nexport class MyBasicForShowComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.names?.map((person) =>\n          person === this.name ? (\n            <Fragment>\n              <input\n                value={this.name}\n                onChange={(event) => {\n                  this.name = event.target.value + \\\\\" and \\\\\" + person;\n                }}\n              />\n              Hello\n              {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n              Liquid!\n            </Fragment>\n          ) : null\n        )}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  componentDidLoad() {\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  render() {\n    return (\n      <div>\n        {this.myService.method(\\\\\"hello\\\\\") + this.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={() => this.onChange()} />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-on-mount-update-component\\\\\",\n})\nexport class MyBasicOnMountUpdateComponent {\n  @Prop() bye: any;\n  @Prop() hi: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  }\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic Outputs 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-outputs-component\\\\\",\n})\nexport class MyBasicOutputsComponent {\n  @Event() messageChange: any;\n  @Event() event: any;\n  @Prop() message: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {\n    this.messageChange.emit(this.name);\n    this.event.emit(this.message);\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-outputs-component\\\\\",\n})\nexport class MyBasicOutputsComponent {\n  @Event() messageChange: any;\n  @Event() event: any;\n  @Prop() message: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {\n    this.messageChange.emit(this.name);\n    this.event.emit(this.message);\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import { MyBooleanAttributeComponent } from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-boolean-attribute\\\\\",\n})\nexport class MyBooleanAttribute {\n  @Prop() type: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.children ? (\n          <Fragment>\n            <slot></slot>\n            {this.type}\n          </Fragment>\n        ) : null}\n        <my-boolean-attribute-component\n          toggle={true}\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          toggle={true}\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          list={null}\n        ></my-boolean-attribute-component>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import { MyBasicOnMountUpdateComponent } from \\\\\"./basic-onMount-update.raw\\\\\";\nimport { MyBasicOutputsComponent } from \\\\\"./basic-outputs.raw\\\\\";\nimport { MyBasicComponent } from \\\\\"./basic.raw\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-child-component\\\\\",\n})\nexport class MyBasicChildComponent {\n  @State() name = \\\\\"Steve\\\\\";\n  @State() dev = \\\\\"PatrickJS\\\\\";\n\n  log = function log(message) {\n    console.log(message);\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <my-basic-component id={this.dev}></my-basic-component>\n        <div>\n          <my-basic-on-mount-update-component\n            hi={this.name}\n            bye={this.dev}\n          ></my-basic-on-mount-update-component>\n          <my-basic-outputs-component\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => (this.name = name)}\n            onEvent={() => this.log(\\\\\"Test\\\\\")}\n          ></my-basic-outputs-component>\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicFor 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-component\\\\\",\n})\nexport class MyBasicForComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  render() {\n    return (\n      <div>\n        {this.names?.map((person) => (\n          <Fragment>\n            <input\n              value={this.name}\n              onChange={(event) => {\n                this.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Fragment>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicRef 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  private inputRef!: HTMLElement;\n  private inputNoArgRef!: HTMLElement;\n  @Prop() showInput: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.showInput ? (\n          <Fragment>\n            <input\n              class=\\\\\"input\\\\\"\n              ref={(el: any) => {\n                this.inputRef = el;\n              }}\n              value={this.name}\n              onBlur={(event) => this.onBlur()}\n              onChange={(event) => (this.name = event.target.value)}\n            />\n            <label\n              htmlFor=\\\\\"cars\\\\\"\n              ref={(el: any) => {\n                this.inputNoArgRef = el;\n              }}\n            >\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {this.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-assignment-component\\\\\",\n})\nexport class MyBasicRefAssignmentComponent {\n  private holdValueRef!: HTMLElement;\n\n  handlerClick = function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={async (evt) => await this.handlerClick(evt)}>\n          Click\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-previous-component\\\\\",\n})\nexport class MyPreviousComponent {\n  private prevCount!: HTMLElement;\n\n  @State() count = 0;\n\n  watch0Fn() {\n    this.prevCount = this.count;\n  }\n\n  @Watch(\\\\\"count\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        <h1>\n          Now:\n          {this.count}, before:\n          {this.prevCount}\n        </h1>\n        <button onClick={() => (this.count += 1)}>Increment</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Button 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any;\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button type=\\\\\"button\\\\\" {...this.attributes}>\n            {this.text}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Columns 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"column\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n\\`,\n})\nexport class Column {\n  @Prop() columns: any;\n  @Prop() space: any;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"builder-columns div\\\\\">\n        {this.columns?.map((column, index) => (\n          <div class=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"content-slot-code\\\\\",\n})\nexport class ContentSlotCode {\n  @Prop() slotTesting: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot name={this.slotTesting}></slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <slot></slot>\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"import { Component, h, Fragment, Host, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"content-slot-jsx-code\\\\\",\n})\nexport class ContentSlotJsxCode {\n  @Prop() slotContent: any = undefined;\n  @Prop() slotReference: any = undefined;\n  @Prop() attributes: any;\n  @Prop() content: any = \\\\\"\\\\\";\n  @State() name = \\\\\"king\\\\\";\n  @State() showContent = false;\n\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.slotReference ? (\n          <div\n            class={this.cls}\n            name={this.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={this.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...this.attributes}\n            onClick={() => this.show()}\n          >\n            {this.showContent && this.slotContent ? (\n              <slot name=\\\\\"content\\\\\">{this.content}</slot>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>\n              <slot></slot>\n            </div>\n          </div>\n        ) : null}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > CustomCode 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"custom-code\\\\\",\n})\nexport class CustomCode {\n  private elem!: HTMLElement;\n  @Prop() replaceNodes: any;\n  @Prop() code: any;\n  @State() scriptsInserted = [];\n  @State() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return (\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n        innerHTML={this.code}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Embed 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"custom-code\\\\\",\n})\nexport class CustomCode {\n  private elem!: HTMLElement;\n  @Prop() replaceNodes: any;\n  @Prop() code: any;\n  @State() scriptsInserted = [];\n  @State() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return (\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n        innerHTML={this.code}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Form 1`] = `\n\"import { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"form-component\\\\\",\n\n  styles: \\`\n          .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n\\`,\n})\nexport class FormComponent {\n  private formRef!: HTMLElement;\n  @Prop() previewState: any;\n  @Prop() sendWithJs: any;\n  @Prop() sendSubmissionsTo: any;\n  @Prop() action: any;\n  @Prop() customHeaders: any;\n  @Prop() contentType: any;\n  @Prop() sendSubmissionsToEmail: any;\n  @Prop() name: any;\n  @Prop() method: any;\n  @Prop() errorMessagePath: any;\n  @Prop() resetFormOnSubmit: any;\n  @Prop() successUrl: any;\n  @Prop() validate: any;\n  @Prop() attributes: any;\n  @Prop() builderBlock: any;\n  @Prop() errorMessage: any;\n  @Prop() sendingMessage: any;\n  @Prop() successMessage: any;\n  @State() formState = \\\\\"unsubmitted\\\\\";\n  @State() responseData = null;\n  @State() formErrorMessage = \\\\\"\\\\\";\n\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(event) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <form\n        validate={this.validate}\n        ref={(el: any) => {\n          this.formRef = el;\n        }}\n        action={!this.sendWithJs && this.action}\n        method={this.method}\n        name={this.name}\n        onSubmit={(event) => this.onSubmit(event)}\n        {...this.attributes}\n      >\n        {this.builderBlock && this.builderBlock.children\n          ? this.builderBlock?.children?.map((block, index) => (\n              <builder-block-component\n                key={block.id}\n                block={block}\n                index={index}\n              ></builder-block-component>\n            ))\n          : null}\n        {this.submissionState === \\\\\"error\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={this.errorMessage}\n          ></builder-blocks>\n        ) : null}\n        {this.submissionState === \\\\\"sending\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={this.sendingMessage}\n          ></builder-blocks>\n        ) : null}\n        {this.submissionState === \\\\\"error\\\\\" && this.responseData ? (\n          <pre class=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(this.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {this.submissionState === \\\\\"success\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={this.successMessage}\n          ></builder-blocks>\n        ) : null}\n      </form>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Image 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"image\\\\\",\n\n  styles: \\`\n          .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n\\`,\n})\nexport class Image {\n  private pictureRef!: HTMLElement;\n  @Prop() lazy: any;\n  @Prop() altText: any;\n  @Prop() _class: any;\n  @Prop() image: any;\n  @Prop() srcset: any;\n  @Prop() sizes: any;\n  @State() scrollListener = null;\n  @State() imageLoaded = false;\n  @State() load = false;\n\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  componentDidLoad() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  disconnectedCallback() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n\n  render() {\n    return (\n      <div>\n        <picture\n          ref={(el: any) => {\n            this.pictureRef = el;\n          }}\n        >\n          {!this.useLazyLoading() || this.load ? (\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              alt={this.altText}\n              aria-role={this.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={this.image}\n              onLoad={() => this.setLoaded()}\n              srcset={this.srcset}\n              sizes={this.sizes}\n            />\n          ) : null}\n          <source srcset={this.srcset} />\n        </picture>\n        <slot></slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Image State 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"img-state-component\\\\\",\n})\nexport class ImgStateComponent {\n  @State() canShow = true;\n  @State() images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.images?.map((item, itemIndex) => (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"img-component\\\\\",\n})\nexport class ImgComponent {\n  @Prop() backgroundSize: any;\n  @Prop() backgroundPosition: any;\n  @Prop() attributes: any;\n  @Prop() imgSrc: any;\n  @Prop() altText: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <img\n        style={{\n          objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...this.attributes}\n        key={(Builder.isEditing && this.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={this.altText}\n        src={this.imgSrc}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"form-input-component\\\\\",\n})\nexport class FormInputComponent {\n  @Prop() attributes: any;\n  @Prop() defaultValue: any;\n  @Prop() placeholder: any;\n  @Prop() type: any;\n  @Prop() name: any;\n  @Prop() value: any;\n  @Prop() required: any;\n  @Event() change: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <input\n        {...this.attributes}\n        key={\n          Builder.isEditing && this.defaultValue\n            ? this.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={this.placeholder}\n        type={this.type}\n        name={this.name}\n        value={this.value}\n        defaultValue={this.defaultValue}\n        required={this.required}\n        onChange={(event) => this.change?.(event.target.value)}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > InputParent 1`] = `\n\"import { FormInputComponent } from \\\\\"./input.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"stepper\\\\\",\n})\nexport class Stepper {\n  handleChange(value) {\n    console.log(value);\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <form-input-component\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => this.handleChange(value)}\n      ></form-input-component>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > NestedStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"nested-store\\\\\",\n})\nexport class NestedStore {\n  @State() _id = \\\\\"abc\\\\\";\n  @State() _messageId = this._id + \\\\\"-message\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div id={this._id}>\n        Test\n        <p id={this._messageId}>Message</p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > RawText 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"raw-text\\\\\",\n})\nexport class RawText {\n  @Prop() attributes: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <span\n        class={this.attributes?.class || this.attributes?.className}\n        innerHTML={this.text || \\\\\"\\\\\"}\n      ></span>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Section 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"section-component\\\\\",\n})\nexport class SectionComponent {\n  @Prop() attributes: any;\n  @Prop() maxWidth: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section\n        {...this.attributes}\n        style={\n          this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: this.maxWidth,\n              }\n            : undefined\n        }\n      >\n        <slot></slot>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Section 2`] = `\n\"import { Component, h, Fragment, Host, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"section-state-component\\\\\",\n})\nexport class SectionStateComponent {\n  @Prop() attributes: any;\n  @State() max = 42;\n  @State() items = [42];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.max\n          ? this.items?.map((item) => (\n              <section\n                {...this.attributes}\n                style={{\n                  maxWidth: item + this.max,\n                }}\n              >\n                <slot></slot>\n              </section>\n            ))\n          : null}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"select-component\\\\\",\n})\nexport class SelectComponent {\n  @Prop() attributes: any;\n  @Prop() value: any;\n  @Prop() defaultValue: any;\n  @Prop() name: any;\n  @Prop() options: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <select\n        {...this.attributes}\n        value={this.value}\n        key={\n          Builder.isEditing && this.defaultValue\n            ? this.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={this.defaultValue}\n        name={this.name}\n      >\n        {this.options?.map((option, index) => (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        ))}\n      </select>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > SlotDefault 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <content-slot-code>\n          <slot testing={<div>Hello</div>}></slot>\n        </content-slot-code>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <content-slot-code slotTesting={<div>Hello</div>}></content-slot-code>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > SlotNamed 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n        <slot name=\\\\\"top\\\\\"></slot>\n        <slot name=\\\\\"left\\\\\">Default left</slot>\n        <slot>Default Child</slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"smile-reviews\\\\\",\n\n  styles: \\`\n          .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n\\`,\n})\nexport class SmileReviews {\n  @Prop() apiKey: any;\n  @Prop() productId: any;\n  @State() reviews = [];\n  @State() name = \\\\\"test\\\\\";\n  @State() showReviewPrompt = false;\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  componentDidLoad() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  }\n\n  render() {\n    return (\n      <div data-user={this.name}>\n        <button onClick={() => (this.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {this.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <Fragment>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input class=\\\\\"input\\\\\" placeholder=\\\\\"Title\\\\\" />\n            <textarea\n              class=\\\\\"textarea\\\\\"\n              placeholder=\\\\\"How was your experience?\\\\\"\n            ></textarea>\n            <button\n              class=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                this.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </Fragment>\n        ) : null}\n        {this.reviews?.map((review, index) => (\n          <div class=\\\\\"review\\\\\" key={review.id}>\n            <img class=\\\\\"img\\\\\" src={review.avatar} />\n            <div class={this.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>\n                N:\n                {index}\n              </div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > StoreComment 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  @State() foo = true;\n\n  bar() {}\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.foo}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() errors = {};\n\n  foo(errors) {\n    return errors;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.foo(this.errors)}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > StoreWithState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() foo = false;\n\n  bar() {\n    return this.foo;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.bar()}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Submit 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"submit-button\\\\\",\n})\nexport class SubmitButton {\n  @Prop() attributes: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button type=\\\\\"submit\\\\\" {...this.attributes}>\n        {this.text}\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"text\\\\\",\n})\nexport class Text {\n  @Prop() text: any;\n  @Prop() content: any;\n  @State() name = \\\\\"Decadef20\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: this.name || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          this.text ||\n          this.content ||\n          this.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Textarea 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"textarea\\\\\",\n})\nexport class Textarea {\n  @Prop() attributes: any;\n  @Prop() placeholder: any;\n  @Prop() name: any;\n  @Prop() value: any;\n  @Prop() defaultValue: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <textarea\n        {...this.attributes}\n        placeholder={this.placeholder}\n        name={this.name}\n        value={this.value}\n        defaultValue={this.defaultValue}\n      ></textarea>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"use-value-and-fn-from-store\\\\\",\n})\nexport class UseValueAndFnFromStore {\n  @Event() change: any;\n  @State() _id = \\\\\"abc\\\\\";\n  @State() _active = false;\n\n  _do(id) {\n    this._active = !!id;\n\n    if (this.change) {\n      this.change.emit(this._active);\n    }\n  }\n\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  }\n\n  render() {\n    return <div>Test</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > Video 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"video\\\\\",\n})\nexport class Video {\n  @Prop() attributes: any;\n  @Prop() fit: any;\n  @Prop() position: any;\n  @Prop() video: any;\n  @Prop() posterImage: any;\n  @Prop() autoPlay: any;\n  @Prop() muted: any;\n  @Prop() controls: any;\n  @Prop() loop: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <video\n        preload=\\\\\"none\\\\\"\n        {...this.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...this.attributes?.style,\n          objectFit: this.fit,\n          objectPosition: this.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          borderRadius: 1,\n        }}\n        key={this.video || \\\\\"no-src\\\\\"}\n        poster={this.posterImage}\n        autoplay={this.autoPlay}\n        muted={this.muted}\n        controls={this.controls}\n        loop={this.loop}\n      ></video>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"steve\\\\\";\n\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicForFragment 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-for-fragment\\\\\",\n})\nexport class BasicForFragment {\n  @State() id = \\\\\"xyz\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        ))}\n        {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n          <Fragment key={\\`\\${this.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        ))}\n        <select>\n          {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n            <option key={\\`\\${this.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          ))}\n        </select>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n})\nexport class MyBasicForNoTagRefComponent {\n  @Prop() actions: any;\n  @State() name = \\\\\"VincentW\\\\\";\n  @State() TagName = \\\\\"div\\\\\";\n  @State() tag = \\\\\"span\\\\\";\n\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <this.TagNameGetter>\n        Hello\n        <this.tag>{this.name}</this.tag>\n        {this.actions?.map((action) => (\n          <this.TagName>\n            <action.icon></action.icon>\n            <span>{action.text}</span>\n          </this.TagName>\n        ))}\n      </this.TagNameGetter>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicForwardRef 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicForwardRefComponent {\n  @Prop() inputRef: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          ref={(el: any) => {\n            this.inputRef = el;\n          }}\n          value={this.name}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicForwardRefComponent {\n  @Prop() inputRef: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          ref={(el: any) => {\n            this.inputRef = el;\n          }}\n          value={this.name}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-on-update-return-component\\\\\",\n})\nexport class MyBasicOnUpdateReturnComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  watch0Fn() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  @Watch(\\\\\"name\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        Hello!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-ref-attribute-passing-component\\\\\",\n})\nexport class BasicRefAttributePassingComponent {\n  private buttonRef!: HTMLElement;\n  private _root!: HTMLElement;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.enableAttributePassing(\n      this._root,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return (\n      <button\n        ref={(el: any) => {\n          this._root = el;\n          this.buttonRef = el;\n        }}\n      >\n        Attribute Passing\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n})\nexport class BasicRefAttributePassingCustomRefComponent {\n  private buttonRef!: HTMLElement;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.enableAttributePassing(\n      this.buttonRef,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n\n  render() {\n    return (\n      <div>\n        <button\n          ref={(el: any) => {\n            this.buttonRef = el;\n          }}\n        >\n          Attribute Passing\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"./my-component.lite\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <my-comp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </my-comp>\n        <div class=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > class + css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > className + css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > className 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"class-name-code\\\\\",\n})\nexport class ClassNameCode {\n  @State() bindings = \\\\\"a binding\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={this.bindings}>With binding</div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > classState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @State() classState = \\\\\"testClassName\\\\\";\n  @State() styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class={this.classState + \\\\\" div\\\\\"} style={this.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop({ attribute: \\\\\"classname\\\\\", mutable: false, reflect: false })\n  className: any;\n  @Prop() type: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class={this.className}>\n        <slot></slot>\n        {this.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"complex-meta-raw\\\\\",\n})\nexport class ComplexMetaRaw {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-context\\\\\",\n})\nexport class ComponentWithContext {\n  @Prop() content: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        <Fragment>{this.foo.value}</Fragment>\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-context\\\\\",\n})\nexport class ComponentWithContext {\n  @Prop() content: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        <Fragment>{this.foo.value}</Fragment>\n        <div>other</div>\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n})\nexport class RenderContent {\n  @Prop() content: any;\n  @Prop() customComponents: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>setting context</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > defaultProps 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any = \\\\\"https://builder.io/\\\\\";\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any = false;\n  @Prop() text: any = \\\\\"default text\\\\\";\n  @Event() click: any = () => {\n    console.log(\\\\\"hi\\\\\");\n  };\n  @Prop() buttonText: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button\n            type=\\\\\"button\\\\\"\n            {...this.attributes}\n            onClick={() => this.click.emit()}\n          >\n            {this.buttonText}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any = \\\\\"https://builder.io/\\\\\";\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any = false;\n  @Prop() text: any = \\\\\"default text\\\\\";\n  @Event() click: any = () => {};\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button\n            type=\\\\\"button\\\\\"\n            {...this.attributes}\n            onClick={(event) => this.click.emit(event)}\n          >\n            {this.text}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-types\\\\\",\n})\nexport class ComponentWithTypes {\n  @Prop() name: any;\n\n  DEFAULT_VALUES = {\n    name: \\\\\"Sami\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {this.name || this.DEFAULT_VALUES.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"event-input-and-change\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class EventInputAndChange {\n  @State() name = \\\\\"Steve\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          value={this.name}\n          onInput={(event) => (this.name = event.target.value)}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > eventProps 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"event-props-component\\\\\",\n})\nexport class EventPropsComponent {\n  @Event() getVoid: any;\n  @Event() enter: any;\n  @Event() pass: any;\n\n  handleClick() {\n    if (this.getVoid) {\n      this.getVoid.emit();\n    }\n\n    if (this.enter) {\n      console.log(this.enter.emit());\n    }\n\n    if (this.pass) {\n      this.pass.emit(\\\\\"test\\\\\");\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <button onClick={() => this.handleClick()}>Test</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > expressionState 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() componentRef: any;\n  @State() refToUse = !(this.componentRef instanceof Function)\n    ? this.componentRef\n    : null;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.refToUse}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"figma-button\\\\\",\n})\nexport class FigmaButton {\n  @Prop() icon: any;\n  @Prop() interactiveState: any;\n  @Prop() width: any;\n  @Prop() size: any;\n  @Prop() label: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button\n        data-icon={this.icon}\n        data-disabled={this.interactiveState}\n        data-width={this.width}\n        data-size={this.size}\n      >\n        {this.label}\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > functionProps 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > getterState 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() foo: any;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i) {\n    return i + this.foo2.length;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <p>{this.foo2}</p>\n        <p>{this.bar}</p>\n        <p>{this.baz(1)}</p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > import types 1`] = `\n\"import { RenderBlock } from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n})\nexport class RenderContent {\n  @Prop() renderContentProps: any;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <render-block\n        {...this.getRenderContentProps(this.renderContentProps.block, 0)}\n      ></render-block>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > layerName 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-layer-name-component\\\\\",\n\n  styles: \\`\n          .layer-name {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyLayerNameComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section>\n        <div class=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"multiple-on-update\\\\\",\n})\nexport class MultipleOnUpdate {\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"multiple-on-update-with-deps\\\\\",\n})\nexport class MultipleOnUpdateWithDeps {\n  @State() a = \\\\\"a\\\\\";\n  @State() b = \\\\\"b\\\\\";\n  @State() c = \\\\\"c\\\\\";\n  @State() d = \\\\\"d\\\\\";\n\n  watch0Fn() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  watch1Fn() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  @Watch(\\\\\"c\\\\\")\n  @Watch(\\\\\"d\\\\\")\n  watch1() {\n    this.watch1Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n    this.watch1Fn();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > multipleSpreads 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @State() attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this.attrs} {...this} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > nestedStyles 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"nested-styles\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n\\`,\n})\nexport class NestedStyles {\n  componentDidLoad() {}\n\n  render() {\n    return <div class=\\\\\"div\\\\\">Hello world</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-normalized-layer-names-component\\\\\",\n\n  styles: \\`\n          .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n\\`,\n})\nexport class MyNormalizedLayerNamesComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"css-0\\\\\">Single Number</div>\n        <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onEvent 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"embed\\\\\",\n})\nexport class Embed {\n  private elem!: HTMLElement;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  componentDidLoad() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  render() {\n    return (\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n      >\n        <div>Test</div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onInit & onMount 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init\\\\\",\n})\nexport class OnInit {\n  componentDidLoad() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onInit 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init\\\\\",\n})\nexport class OnInit {\n  @Prop() name: any;\n  @State() name = \\\\\"\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Default name defined by parent\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onInitPlain 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init-plain\\\\\",\n})\nexport class OnInitPlain {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onMount 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"comp\\\\\",\n})\nexport class Comp {\n  componentDidLoad() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onMountMultiple 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"comp\\\\\",\n})\nexport class Comp {\n  componentDidLoad() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n    onMountHook_0();\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n    onMountHook_1();\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n    onMountHook_2();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onUpdate 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update\\\\\",\n})\nexport class OnUpdate {\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"import { Component, h, Fragment, Watch, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update-with-deps\\\\\",\n})\nexport class OnUpdateWithDeps {\n  @Prop() size: any;\n  @State() a = \\\\\"a\\\\\";\n  @State() b = \\\\\"b\\\\\";\n\n  watch0Fn() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  @Watch(\\\\\"size\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > preserveTyping 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > propsDestructure 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() type: any;\n  @State() name = \\\\\"Decadef20\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot></slot>\n        {this.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > propsInterface 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > propsType 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update\\\\\",\n})\nexport class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport { BlockStyles } from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport { RenderRepeatedBlock } from \\\\\"./render-repeated-block.lite\\\\\";\n\nimport { Component, h, Fragment, Host, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-block\\\\\",\n})\nexport class RenderBlock {\n  @Prop() block: any;\n  @Prop() context: any;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.shouldWrap ? (\n          <Fragment>\n            {isEmptyHtmlElement(this.tag) ? (\n              <this.tag {...this.attributes} {...this.actions}></this.tag>\n            ) : null}\n            {!isEmptyHtmlElement(this.tag) && this.repeatItemData\n              ? this.repeatItemData?.map((data, index) => (\n                  <render-repeated-block\n                    key={index}\n                    repeatContext={data.context}\n                    block={data.block}\n                  ></render-repeated-block>\n                ))\n              : null}\n            {!isEmptyHtmlElement(this.tag) && !this.repeatItemData ? (\n              <this.tag {...this.attributes} {...this.actions}>\n                <this.renderComponentTag\n                  {...this.renderComponentProps}\n                ></this.renderComponentTag>\n                {this.childrenWithoutParentComponent?.map((child) => (\n                  <render-block\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={this.childrenContext}\n                  ></render-block>\n                ))}\n                {this.childrenWithoutParentComponent?.map((child) => (\n                  <block-styles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={this.childrenContext}\n                  ></block-styles>\n                ))}\n              </this.tag>\n            ) : null}\n          </Fragment>\n        ) : (\n          <this.renderComponentTag\n            {...this.renderComponentProps}\n          ></this.renderComponentTag>\n        )}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport { RenderBlocks } from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\nimport { Component, h, Fragment, Watch, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: columns;\n        }\n\\`,\n})\nexport class RenderContent {\n  @Prop() customComponents: any;\n  @Prop() content: any;\n\n  watch0Fn() {\n    dispatchNewContentToVisualEditor(this.content);\n  }\n\n  @Watch(\\\\\"content\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    sendComponentsToVisualEditor(this.customComponents);\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div class=\\\\\"div\\\\\" onClick={() => trackClick(this.content.id)}>\n        <render-blocks blocks={this.content.blocks}></render-blocks>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any;\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button type=\\\\\"button\\\\\" {...this.attributes}>\n            {this.text}\n          </button>\n        ) : null}\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > self-referencing component 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.name}\n        {this.name === \\\\\"Batman\\\\\" ? (\n          <my-component name=\\\\\"Bruce Wayne\\\\\"></my-component>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.name}\n        <slot></slot>\n        {this.name === \\\\\"Batman\\\\\" ? (\n          <my-component name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </my-component>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > setState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"set-state\\\\\",\n})\nexport class SetState {\n  @State() n = [\\\\\"123\\\\\"];\n\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={() => this.someFn()}>Click me</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"import { Component, h, Fragment, Watch, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @Prop() id: any;\n  @Prop() foo: any;\n\n  watch0Fn() {\n    console.log(\\\\\"props.id changed\\\\\", this.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n  }\n\n  @Watch(\\\\\"id\\\\\")\n  @Watch(\\\\\"foo.value.bar.baz\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        {this.id}\n        {this.foo.value.bar.baz}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input {...attrs} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() nested: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this.nested} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > spreadProps 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > store-async-function 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > string-literal-store 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  @State() foo = 123;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.foo}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        class=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"style-prop-class-and-css\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class StylePropClassAndCss {\n  @Prop() attributes: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        class={this.attributes.class + \\\\\" div\\\\\"}\n        style={this.attributes.style}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"./foo-sub-component.lite\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"sub-component\\\\\",\n})\nexport class SubComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <foo></foo>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > svgComponent 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"svg-component\\\\\",\n})\nexport class SvgComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > typeDependency 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-dependency\\\\\",\n})\nexport class TypeDependency {\n  @Prop() foo: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.foo}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-external-props\\\\\",\n})\nexport class TypeExternalProps {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > typeExternalStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-external-store\\\\\",\n})\nexport class TypeExternalStore {\n  @State() _name = \\\\\"test\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this._name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > typeGetterStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-getter-store\\\\\",\n})\nexport class TypeGetterStore {\n  @State() name = \\\\\"test\\\\\";\n\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > use-style 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <button type=\\\\\"button\\\\\">Button</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button class=\\\\\"button\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <button type=\\\\\"button\\\\\">Button</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > useTarget 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"use-target-component\\\\\",\n})\nexport class UseTargetComponent {\n  @State() lastName = \\\\\"bar\\\\\";\n  @State() foo = \\\\\"bar\\\\\";\n\n  get name() {\n    const prefix = \\\\\"st\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  componentDidLoad() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return <div>{this.name}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-web-component\\\\\",\n})\nexport class MyBasicWebComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Remove Internal mitosis package 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}! I can run in React, Qwik, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Advanced 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-show-component\\\\\",\n})\nexport class MyBasicForShowComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <main>\n        {this.names?.map((person, i) => (\n          <div>\n            {i}:{person}\n          </div>\n        ))}\n        {this.names?.map((person) => (\n          <span>{person}</span>\n        ))}\n        {this.names?.map((item) => (\n          <br />\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((_, ee) => (\n          <pre>{ee}</pre>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((item) => (\n          <p>{index}</p>\n        ))}\n        {this.names?.map((person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((person, count) => (\n          <span>\n            {person}\n            {count}\n          </span>\n        ))}\n        {this.names?.map((person, i) => (\n          <span>\n            {person}\n            {i}\n          </span>\n        ))}\n        {Array.from({\n          length: 10,\n        })?.map((person, index) => (\n          <span>\n            {person}\n            {index}\n          </span>\n        ))}\n      </main>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > AdvancedRef 1`] = `\n\"import { Component, h, Fragment, Watch, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  private inputRef!: HTMLInputElement;\n  private inputNoArgRef!: HTMLLabelElement;\n  @Prop() showInput: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  watch0Fn() {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  @Watch(\\\\\"inputRef\\\\\")\n  @Watch(\\\\\"inputNoArgRef\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        {this.showInput ? (\n          <Fragment>\n            <input\n              class=\\\\\"input\\\\\"\n              ref={(el: any) => {\n                this.inputRef = el;\n              }}\n              value={this.name}\n              onBlur={(event) => this.onBlur()}\n              onChange={(event) => (this.name = event.target.value)}\n            />\n            <label\n              htmlFor=\\\\\"cars\\\\\"\n              ref={(el: any) => {\n                this.inputNoArgRef = el;\n              }}\n            >\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {this.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @State() name = \\\\\"Steve\\\\\";\n  @State() age = 1;\n  @State() sports = [\\\\\"\\\\\"];\n\n  underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  DEFAULT_VALUES = {\n    name: \\\\\"Steve\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        <input\n          value={this.DEFAULT_VALUES.name || this.name}\n          onChange={(myEvent) => (this.name = myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic 2`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-show-component\\\\\",\n})\nexport class MyBasicForShowComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.names?.map((person) =>\n          person === this.name ? (\n            <Fragment>\n              <input\n                value={this.name}\n                onChange={(event) => {\n                  this.name = event.target.value + \\\\\" and \\\\\" + person;\n                }}\n              />\n              Hello\n              {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n              Liquid!\n            </Fragment>\n          ) : null\n        )}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onChange = function onChange() {\n    const change = this.myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  };\n\n  componentDidLoad() {\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  render() {\n    return (\n      <div>\n        {this.myService.method(\\\\\"hello\\\\\") + this.name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <input onChange={() => this.onChange()} />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-on-mount-update-component\\\\\",\n})\nexport class MyBasicOnMountUpdateComponent {\n  @Prop() bye: any;\n  @Prop() hi: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  }\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic Outputs 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-outputs-component\\\\\",\n})\nexport class MyBasicOutputsComponent {\n  @Event() messageChange: any;\n  @Event() event: any;\n  @Prop() message: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {\n    this.messageChange.emit(this.name);\n    this.event.emit(this.message);\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\nimport {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-outputs-component\\\\\",\n})\nexport class MyBasicOutputsComponent {\n  @Event() messageChange: any;\n  @Event() event: any;\n  @Prop() message: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {\n    this.messageChange.emit(this.name);\n    this.event.emit(this.message);\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import { MyBooleanAttributeComponent } from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-boolean-attribute\\\\\",\n})\nexport class MyBooleanAttribute {\n  @Prop() type: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.children ? (\n          <Fragment>\n            <slot></slot>\n            {this.type}\n          </Fragment>\n        ) : null}\n        <my-boolean-attribute-component\n          toggle={true}\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          toggle={true}\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          list={null}\n        ></my-boolean-attribute-component>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import { MyBasicOnMountUpdateComponent } from \\\\\"./basic-onMount-update.raw\\\\\";\nimport { MyBasicOutputsComponent } from \\\\\"./basic-outputs.raw\\\\\";\nimport { MyBasicComponent } from \\\\\"./basic.raw\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-child-component\\\\\",\n})\nexport class MyBasicChildComponent {\n  @State() name = \\\\\"Steve\\\\\";\n  @State() dev = \\\\\"PatrickJS\\\\\";\n\n  log = function log(message: string) {\n    console.log(message);\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <my-basic-component id={this.dev}></my-basic-component>\n        <div>\n          <my-basic-on-mount-update-component\n            hi={this.name}\n            bye={this.dev}\n          ></my-basic-on-mount-update-component>\n          <my-basic-outputs-component\n            message=\\\\\"Test\\\\\"\n            onMessageChange={(name) => (this.name = name)}\n            onEvent={() => this.log(\\\\\"Test\\\\\")}\n          ></my-basic-outputs-component>\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicFor 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-component\\\\\",\n})\nexport class MyBasicForComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n  @State() names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  componentDidLoad() {\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  render() {\n    return (\n      <div>\n        {this.names?.map((person) => (\n          <Fragment>\n            <input\n              value={this.name}\n              onChange={(event) => {\n                this.name = event.target.value + \\\\\" and \\\\\" + person;\n              }}\n            />\n            Hello\n            {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n            Liquid!\n          </Fragment>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicRef 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicRefComponent {\n  private inputRef!: HTMLInputElement | null;\n  private inputNoArgRef!: HTMLLabelElement | null;\n  @Prop() showInput: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  onBlur = function onBlur() {\n    // Maintain focus\n    this.inputRef?.focus();\n  };\n  lowerCaseName = function lowerCaseName() {\n    return this.name.toLowerCase();\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.showInput ? (\n          <Fragment>\n            <input\n              class=\\\\\"input\\\\\"\n              ref={(el: any) => {\n                this.inputRef = el;\n              }}\n              value={this.name}\n              onBlur={(event) => this.onBlur()}\n              onChange={(event) => (this.name = event.target.value)}\n            />\n            <label\n              htmlFor=\\\\\"cars\\\\\"\n              ref={(el: any) => {\n                this.inputNoArgRef = el;\n              }}\n            >\n              Choose a car:\n            </label>\n            <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <option value=\\\\\"supra\\\\\">GR Supra</option>\n              <option value=\\\\\"86\\\\\">GR 86</option>\n            </select>\n          </Fragment>\n        ) : null}\n        Hello\n        {this.lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-ref-assignment-component\\\\\",\n})\nexport class MyBasicRefAssignmentComponent {\n  private holdValueRef!: HTMLElement;\n\n  handlerClick = function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", this.holdValueRef);\n    this.holdValueRef = this.holdValueRef + \\\\\"JS\\\\\";\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={async (evt) => await this.handlerClick(evt)}>\n          Click\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-previous-component\\\\\",\n})\nexport class MyPreviousComponent {\n  private prevCount!: HTMLElement;\n\n  @State() count = 0;\n\n  watch0Fn() {\n    this.prevCount = this.count;\n  }\n\n  @Watch(\\\\\"count\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        <h1>\n          Now:\n          {this.count}, before:\n          {this.prevCount}\n        </h1>\n        <button onClick={() => (this.count += 1)}>Increment</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Button 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any;\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button type=\\\\\"button\\\\\" {...this.attributes}>\n            {this.text}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Columns 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"column\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-2 {\n          flex-grow: 1;\n        }\n\\`,\n})\nexport class Column {\n  @Prop() columns: any;\n  @Prop() space: any;\n\n  getColumns() {\n    return this.columns || [];\n  }\n  getGutterSize() {\n    return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n  }\n  getWidth(index: number) {\n    const columns = this.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n  getColumnCssWidth(index: number) {\n    const columns = this.getColumns();\n    const gutterSize = this.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"builder-columns div\\\\\">\n        {this.columns?.map((column, index) => (\n          <div class=\\\\\"builder-column div-2\\\\\">\n            {column.content}\n            {index}\n          </div>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"content-slot-code\\\\\",\n})\nexport class ContentSlotCode {\n  @Prop() slotTesting: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot name={this.slotTesting}></slot>\n        <div>\n          <hr />\n        </div>\n        <div>\n          <slot></slot>\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { Component, h, Fragment, Host, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"content-slot-jsx-code\\\\\",\n})\nexport class ContentSlotJsxCode {\n  @Prop() slotContent: any = undefined;\n  @Prop() slotReference: any = undefined;\n  @Prop() attributes: any;\n  @Prop() content: any = \\\\\"\\\\\";\n  @State() name = \\\\\"king\\\\\";\n  @State() showContent = false;\n\n  get cls() {\n    return this.slotContent && this.children ? \\`\\${this.name}-content\\` : \\\\\"\\\\\";\n  }\n  show() {\n    this.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.slotReference ? (\n          <div\n            class={this.cls}\n            name={this.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={this.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...this.attributes}\n            onClick={() => this.show()}\n          >\n            {this.showContent && this.slotContent ? (\n              <slot name=\\\\\"content\\\\\">{this.content}</slot>\n            ) : null}\n            <div>\n              <hr />\n            </div>\n            <div>\n              <slot></slot>\n            </div>\n          </div>\n        ) : null}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > CustomCode 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"custom-code\\\\\",\n})\nexport class CustomCode {\n  private elem!: HTMLDivElement;\n  @Prop() replaceNodes: any;\n  @Prop() code: any;\n  @State() scriptsInserted = [];\n  @State() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return (\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n        innerHTML={this.code}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Embed 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"custom-code\\\\\",\n})\nexport class CustomCode {\n  private elem!: HTMLDivElement;\n  @Prop() replaceNodes: any;\n  @Prop() code: any;\n  @State() scriptsInserted = [];\n  @State() scriptsRun = [];\n\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (this.elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = this.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (this.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          this.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (this.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            this.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.findAndRunScripts();\n  }\n\n  render() {\n    return (\n      <div\n        class={\n          \\\\\"builder-custom-code\\\\\" + (this.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n        }\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n        innerHTML={this.code}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Form 1`] = `\n\"import { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"form-component\\\\\",\n\n  styles: \\`\n          .pre {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n\\`,\n})\nexport class FormComponent {\n  private formRef!: HTMLFormElement;\n  @Prop() previewState: any;\n  @Prop() sendWithJs: any;\n  @Prop() sendSubmissionsTo: any;\n  @Prop() action: any;\n  @Prop() customHeaders: any;\n  @Prop() contentType: any;\n  @Prop() sendSubmissionsToEmail: any;\n  @Prop() name: any;\n  @Prop() method: any;\n  @Prop() errorMessagePath: any;\n  @Prop() resetFormOnSubmit: any;\n  @Prop() successUrl: any;\n  @Prop() validate: any;\n  @Prop() attributes: any;\n  @Prop() builderBlock: any;\n  @Prop() errorMessage: any;\n  @Prop() sendingMessage: any;\n  @Prop() successMessage: any;\n  @State() formState = \\\\\"unsubmitted\\\\\";\n  @State() responseData = null;\n  @State() formErrorMessage = \\\\\"\\\\\";\n\n  get submissionState() {\n    return (Builder.isEditing && this.previewState) || this.formState;\n  }\n  onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = this.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = this.contentType;\n\n      if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (this.formRef) {\n        this.formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      this.formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        this.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: this.method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && this.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, this.errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n            error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              this.formErrorMessage = message;\n            }\n          }\n\n          this.responseData = body;\n          this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (this.formRef) {\n              this.formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (this.resetFormOnSubmit !== false) {\n                this.formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (this.successUrl) {\n              if (this.formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: this.successUrl,\n                  },\n                });\n                this.formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = this.successUrl;\n                }\n              } else {\n                location.href = this.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (this.formRef) {\n            this.formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          this.responseData = err;\n          this.formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <form\n        validate={this.validate}\n        ref={(el: any) => {\n          this.formRef = el;\n        }}\n        action={!this.sendWithJs && this.action}\n        method={this.method}\n        name={this.name}\n        onSubmit={(event) => this.onSubmit(event)}\n        {...this.attributes}\n      >\n        {this.builderBlock && this.builderBlock.children\n          ? this.builderBlock?.children?.map((block, index) => (\n              <builder-block-component\n                key={block.id}\n                block={block}\n                index={index}\n              ></builder-block-component>\n            ))\n          : null}\n        {this.submissionState === \\\\\"error\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"errorMessage\\\\\"\n            blocks={this.errorMessage!}\n          ></builder-blocks>\n        ) : null}\n        {this.submissionState === \\\\\"sending\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={this.sendingMessage!}\n          ></builder-blocks>\n        ) : null}\n        {this.submissionState === \\\\\"error\\\\\" && this.responseData ? (\n          <pre class=\\\\\"builder-form-error-text pre\\\\\">\n            {JSON.stringify(this.responseData, null, 2)}\n          </pre>\n        ) : null}\n        {this.submissionState === \\\\\"success\\\\\" ? (\n          <builder-blocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={this.successMessage!}\n          ></builder-blocks>\n        ) : null}\n      </form>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Image 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"image\\\\\",\n\n  styles: \\`\n          .img {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n\\`,\n})\nexport class Image {\n  private pictureRef!: HTMLElement;\n  @Prop() lazy: any;\n  @Prop() altText: any;\n  @Prop() _class: any;\n  @Prop() image: any;\n  @Prop() srcset: any;\n  @Prop() sizes: any;\n  @State() scrollListener = null;\n  @State() imageLoaded = false;\n  @State() load = false;\n\n  setLoaded() {\n    this.imageLoaded = true;\n  }\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!this.lazy && this.isBrowser();\n  }\n  isBrowser = function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  };\n\n  componentDidLoad() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.pictureRef) {\n          const rect = this.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n  disconnectedCallback() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  }\n\n  render() {\n    return (\n      <div>\n        <picture\n          ref={(el: any) => {\n            this.pictureRef = el;\n          }}\n        >\n          {!this.useLazyLoading() || this.load ? (\n            <img\n              class={\n                \\\\\"builder-image\\\\\" +\n                (this._class ? \\\\\" \\\\\" + this._class : \\\\\"\\\\\") +\n                \\\\\" img\\\\\"\n              }\n              alt={this.altText}\n              aria-role={this.altText ? \\\\\"presentation\\\\\" : undefined}\n              src={this.image}\n              onLoad={() => this.setLoaded()}\n              srcset={this.srcset}\n              sizes={this.sizes}\n            />\n          ) : null}\n          <source srcset={this.srcset} />\n        </picture>\n        <slot></slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Image State 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"img-state-component\\\\\",\n})\nexport class ImgStateComponent {\n  @State() canShow = true;\n  @State() images = [\\\\\"http://example.com/qwik.png\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.images?.map((item, itemIndex) => (\n          <Fragment>\n            <img class=\\\\\"custom-class\\\\\" src={item} key={itemIndex} />\n          </Fragment>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"img-component\\\\\",\n})\nexport class ImgComponent {\n  @Prop() backgroundSize: any;\n  @Prop() backgroundPosition: any;\n  @Prop() attributes: any;\n  @Prop() imgSrc: any;\n  @Prop() altText: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <img\n        style={{\n          objectFit: this.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: this.backgroundPosition || \\\\\"center\\\\\",\n        }}\n        {...this.attributes}\n        key={(Builder.isEditing && this.imgSrc) || \\\\\"default-key\\\\\"}\n        alt={this.altText}\n        src={this.imgSrc}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"form-input-component\\\\\",\n})\nexport class FormInputComponent {\n  @Prop() attributes: any;\n  @Prop() defaultValue: any;\n  @Prop() placeholder: any;\n  @Prop() type: any;\n  @Prop() name: any;\n  @Prop() value: any;\n  @Prop() required: any;\n  @Event() change: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <input\n        {...this.attributes}\n        key={\n          Builder.isEditing && this.defaultValue\n            ? this.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        placeholder={this.placeholder}\n        type={this.type}\n        name={this.name}\n        value={this.value}\n        defaultValue={this.defaultValue}\n        required={this.required}\n        onChange={(event) => this.change?.(event.target.value)}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > InputParent 1`] = `\n\"import { FormInputComponent } from \\\\\"./input.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"stepper\\\\\",\n})\nexport class Stepper {\n  handleChange(value: string) {\n    console.log(value);\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <form-input-component\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        onChange={(value) => this.handleChange(value)}\n      ></form-input-component>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > NestedStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"nested-store\\\\\",\n})\nexport class NestedStore {\n  @State() _id = \\\\\"abc\\\\\";\n  @State() _messageId = this._id + \\\\\"-message\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div id={this._id}>\n        Test\n        <p id={this._messageId}>Message</p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > RawText 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"raw-text\\\\\",\n})\nexport class RawText {\n  @Prop() attributes: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <span\n        class={this.attributes?.class || this.attributes?.className}\n        innerHTML={this.text || \\\\\"\\\\\"}\n      ></span>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Section 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"section-component\\\\\",\n})\nexport class SectionComponent {\n  @Prop() attributes: any;\n  @Prop() maxWidth: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section\n        {...this.attributes}\n        style={\n          this.maxWidth && typeof this.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: this.maxWidth,\n              }\n            : undefined\n        }\n      >\n        <slot></slot>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Section 2`] = `\n\"import { Component, h, Fragment, Host, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"section-state-component\\\\\",\n})\nexport class SectionStateComponent {\n  @Prop() attributes: any;\n  @State() max = 42;\n  @State() items = [42];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.max\n          ? this.items?.map((item) => (\n              <section\n                {...this.attributes}\n                style={{\n                  maxWidth: item + this.max,\n                }}\n              >\n                <slot></slot>\n              </section>\n            ))\n          : null}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"select-component\\\\\",\n})\nexport class SelectComponent {\n  @Prop() attributes: any;\n  @Prop() value: any;\n  @Prop() defaultValue: any;\n  @Prop() name: any;\n  @Prop() options: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <select\n        {...this.attributes}\n        value={this.value}\n        key={\n          Builder.isEditing && this.defaultValue\n            ? this.defaultValue\n            : \\\\\"default-key\\\\\"\n        }\n        defaultValue={this.defaultValue}\n        name={this.name}\n      >\n        {this.options?.map((option, index) => (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        ))}\n      </select>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > SlotDefault 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot>\n          <div class=\\\\\"default-slot\\\\\">Default content</div>\n        </slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > SlotHtml 1`] = `\n\"import { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <content-slot-code>\n          <slot testing={<div>Hello</div>}></slot>\n        </content-slot-code>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > SlotJsx 1`] = `\n\"import { ContentSlotCode } from \\\\\"./content-slot-jsx.raw\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <content-slot-code slotTesting={<div>Hello</div>}></content-slot-code>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > SlotNamed 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"slot-code\\\\\",\n})\nexport class SlotCode {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n        <slot name=\\\\\"top\\\\\"></slot>\n        <slot name=\\\\\"left\\\\\">Default left</slot>\n        <slot>Default Child</slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"smile-reviews\\\\\",\n\n  styles: \\`\n          .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n\\`,\n})\nexport class SmileReviews {\n  @Prop() apiKey: any;\n  @Prop() productId: any;\n  @State() reviews = [];\n  @State() name = \\\\\"test\\\\\";\n  @State() showReviewPrompt = false;\n\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  componentDidLoad() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  }\n\n  render() {\n    return (\n      <div data-user={this.name}>\n        <button onClick={() => (this.showReviewPrompt = true)}>\n          Write a review\n        </button>\n        {this.showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <Fragment>\n            <input placeholder=\\\\\"Email\\\\\" />\n            <input class=\\\\\"input\\\\\" placeholder=\\\\\"Title\\\\\" />\n            <textarea\n              class=\\\\\"textarea\\\\\"\n              placeholder=\\\\\"How was your experience?\\\\\"\n            ></textarea>\n            <button\n              class=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                this.showReviewPrompt = false;\n              }}\n            >\n              Submit\n            </button>\n          </Fragment>\n        ) : null}\n        {this.reviews?.map((review, index) => (\n          <div class=\\\\\"review\\\\\" key={review.id}>\n            <img class=\\\\\"img\\\\\" src={review.avatar} />\n            <div class={this.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>\n                N:\n                {index}\n              </div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        ))}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > StoreComment 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  @State() foo = true;\n\n  bar() {}\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.foo}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() errors = {};\n\n  foo(errors) {\n    return errors;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.foo(this.errors)}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > StoreWithState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() foo = false;\n\n  bar() {\n    return this.foo;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <Fragment>{this.bar()}</Fragment>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Submit 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"submit-button\\\\\",\n})\nexport class SubmitButton {\n  @Prop() attributes: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button type=\\\\\"submit\\\\\" {...this.attributes}>\n        {this.text}\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"text\\\\\",\n})\nexport class Text {\n  @Prop() text: any;\n  @Prop() content: any;\n  @State() name = \\\\\"Decadef20\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        contentEditable={allowEditingText || undefined}\n        data-name={{\n          test: this.name || \\\\\"any name\\\\\",\n        }}\n        innerHTML={\n          this.text ||\n          this.content ||\n          this.name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>'\n        }\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Textarea 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"textarea\\\\\",\n})\nexport class Textarea {\n  @Prop() attributes: any;\n  @Prop() placeholder: any;\n  @Prop() name: any;\n  @Prop() value: any;\n  @Prop() defaultValue: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <textarea\n        {...this.attributes}\n        placeholder={this.placeholder}\n        name={this.name}\n        value={this.value}\n        defaultValue={this.defaultValue}\n      ></textarea>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n  State,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"use-value-and-fn-from-store\\\\\",\n})\nexport class UseValueAndFnFromStore {\n  @Event() change: any;\n  @State() _id = \\\\\"abc\\\\\";\n  @State() _active = false;\n\n  _do(id?: string) {\n    this._active = !!id;\n\n    if (this.change) {\n      this.change.emit(this._active);\n    }\n  }\n\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  }\n\n  render() {\n    return <div>Test</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > Video 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"video\\\\\",\n})\nexport class Video {\n  @Prop() attributes: any;\n  @Prop() fit: any;\n  @Prop() position: any;\n  @Prop() video: any;\n  @Prop() posterImage: any;\n  @Prop() autoPlay: any;\n  @Prop() muted: any;\n  @Prop() controls: any;\n  @Prop() loop: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <video\n        preload=\\\\\"none\\\\\"\n        {...this.attributes}\n        style={{\n          width: \\\\\"100%\\\\\",\n          height: \\\\\"100%\\\\\",\n          ...this.attributes?.style,\n          objectFit: this.fit,\n          objectPosition: this.position,\n          // Hack to get object fit to work as expected and\n          // not have the video overflow\n          borderRadius: 1,\n        }}\n        key={this.video || \\\\\"no-src\\\\\"}\n        poster={this.posterImage}\n        autoplay={this.autoPlay}\n        muted={this.muted}\n        controls={this.controls}\n        loop={this.loop}\n      ></video>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"steve\\\\\";\n\n  setName(value) {\n    this.name = value;\n  }\n  updateNameWithArrowFn(value) {\n    this.name = value;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicForFragment 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-for-fragment\\\\\",\n})\nexport class BasicForFragment {\n  @State() id = \\\\\"xyz\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n          <Fragment key={\\`key-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        ))}\n        {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n          <Fragment key={\\`\\${this.id}-\\${option}\\`}>\n            <div>{option}</div>\n          </Fragment>\n        ))}\n        <select>\n          {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n            <option key={\\`\\${this.id}-\\${option}\\`} value={option}>\n              {option}\n            </option>\n          ))}\n        </select>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n})\nexport class MyBasicForNoTagRefComponent {\n  @Prop() actions: any;\n  @State() name = \\\\\"VincentW\\\\\";\n  @State() TagName = \\\\\"div\\\\\";\n  @State() tag = \\\\\"span\\\\\";\n\n  get TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <this.TagNameGetter>\n        Hello\n        <this.tag>{this.name}</this.tag>\n        {this.actions?.map((action) => (\n          <this.TagName>\n            <action.icon></action.icon>\n            <span>{action.text}</span>\n          </this.TagName>\n        ))}\n      </this.TagNameGetter>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicForwardRef 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicForwardRefComponent {\n  @Prop() inputRef: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          ref={(el: any) => {\n            this.inputRef = el;\n          }}\n          value={this.name}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nimport { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class MyBasicForwardRefComponent {\n  @Prop() inputRef: any;\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          ref={(el: any) => {\n            this.inputRef = el;\n          }}\n          value={this.name}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-on-update-return-component\\\\\",\n})\nexport class MyBasicOnUpdateReturnComponent {\n  @State() name = \\\\\"PatrickJS\\\\\";\n\n  watch0Fn() {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        this.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  @Watch(\\\\\"name\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        Hello!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-ref-attribute-passing-component\\\\\",\n})\nexport class BasicRefAttributePassingComponent {\n  private buttonRef!: HTMLButtonElement | null;\n  private _root!: HTMLElement;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.enableAttributePassing(\n      this._root,\n      \\\\\"basic-ref-attribute-passing-component\\\\\"\n    );\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return (\n      <button\n        ref={(el: any) => {\n          this._root = el;\n          this.buttonRef = el;\n        }}\n      >\n        Attribute Passing\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n})\nexport class BasicRefAttributePassingCustomRefComponent {\n  private buttonRef!: HTMLButtonElement | null;\n\n  /**\n   * Passes \\`aria-*\\`, \\`data-*\\` & \\`class\\` attributes to correct child. Used in angular and stencil.\n   * @param element  the ref for the component\n   * @param customElementSelector  the custom element like \\`my-component\\`\n   */\n  private enableAttributePassing(\n    element: HTMLElement | null,\n    customElementSelector: string\n  ) {\n    const parent = element?.closest(customElementSelector);\n    if (element && parent) {\n      const attributes = parent.attributes;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes.item(i);\n        if (\n          attr &&\n          (attr.name.startsWith(\\\\\"data-\\\\\") || attr.name.startsWith(\\\\\"aria-\\\\\"))\n        ) {\n          element.setAttribute(attr.name, attr.value);\n          parent.removeAttribute(attr.name);\n        }\n        if (attr && attr.name === \\\\\"class\\\\\") {\n          const isWebComponent = attr.value.includes(\\\\\"hydrated\\\\\");\n          const value = attr.value.replace(\\\\\"hydrated\\\\\", \\\\\"\\\\\").trim();\n          const currentClass = element.getAttribute(\\\\\"class\\\\\");\n          element.setAttribute(\n            attr.name,\n            \\`\\${currentClass ? \\`\\${currentClass} \\` : \\\\\"\\\\\"}\\${value}\\`\n          );\n          if (isWebComponent) {\n            // Stencil is using this class for lazy loading component\n            parent.setAttribute(\\\\\"class\\\\\", \\\\\"hydrated\\\\\");\n          } else {\n            parent.removeAttribute(attr.name);\n          }\n        }\n      }\n    }\n  }\n\n  componentDidLoad() {\n    this.enableAttributePassing(\n      this.buttonRef,\n      \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\"\n    );\n  }\n\n  render() {\n    return (\n      <div>\n        <button\n          ref={(el: any) => {\n            this.buttonRef = el;\n          }}\n        >\n          Attribute Passing\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import { MyComp } from \\\\\"./my-component.lite\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <my-comp class=\\\\\"test test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </my-comp>\n        <div class=\\\\\"test2 test div\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > class + css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > className + css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > className 1`] = `\n\"import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"class-name-code\\\\\",\n})\nexport class ClassNameCode {\n  @State() bindings = \\\\\"a binding\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div class={this.bindings}>With binding</div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > classState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @State() classState = \\\\\"testClassName\\\\\";\n  @State() styleState = {\n    color: \\\\\"red\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class={this.classState + \\\\\" div\\\\\"} style={this.styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop({ attribute: \\\\\"classname\\\\\", mutable: false, reflect: false })\n  className: any;\n  @Prop() type: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div class={this.className}>\n        <slot></slot>\n        {this.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"complex-meta-raw\\\\\",\n})\nexport class ComplexMetaRaw {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-context\\\\\",\n})\nexport class ComponentWithContext {\n  @Prop() content: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        <Fragment>{this.foo.value}</Fragment>\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-context\\\\\",\n})\nexport class ComponentWithContext {\n  @Prop() content: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        <Fragment>{this.foo.value}</Fragment>\n        <div>other</div>\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n})\nexport class RenderContent {\n  @Prop() content: any;\n  @Prop() customComponents: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>setting context</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > defaultProps 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any = \\\\\"https://builder.io/\\\\\";\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any = false;\n  @Prop() text: any = \\\\\"default text\\\\\";\n  @Event() click: any = () => {\n    console.log(\\\\\"hi\\\\\");\n  };\n  @Prop() buttonText: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button\n            type=\\\\\"button\\\\\"\n            {...this.attributes}\n            onClick={() => this.click.emit()}\n          >\n            {this.buttonText}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any = \\\\\"https://builder.io/\\\\\";\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any = false;\n  @Prop() text: any = \\\\\"default text\\\\\";\n  @Event() click: any = () => {};\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button\n            type=\\\\\"button\\\\\"\n            {...this.attributes}\n            onClick={(event) => this.click.emit(event)}\n          >\n            {this.text}\n          </button>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"component-with-types\\\\\",\n})\nexport class ComponentWithTypes {\n  @Prop() name: any;\n\n  DEFAULT_VALUES = {\n    name: \\\\\"Sami\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {\\\\\" \\\\\"}\n        Hello\n        {this.name || this.DEFAULT_VALUES.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"event-input-and-change\\\\\",\n\n  styles: \\`\n          .input {\n          color: red;\n        }\n\\`,\n})\nexport class EventInputAndChange {\n  @State() name = \\\\\"Steve\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          class=\\\\\"input\\\\\"\n          value={this.name}\n          onInput={(event) => (this.name = event.target.value)}\n          onChange={(event) => (this.name = event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > eventProps 1`] = `\n\"import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nimport {\n  Component,\n  h,\n  Fragment,\n  Event,\n  EventEmitter,\n  Prop,\n} from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"event-props-component\\\\\",\n})\nexport class EventPropsComponent {\n  @Event() getVoid: EventEmitter<\n    Parameters<Required<EventProps>[\\\\\"onGetVoid\\\\\"]>[number]\n  > | void;\n  @Event() enter: EventEmitter<\n    Parameters<Required<EventProps>[\\\\\"onEnter\\\\\"]>[number]\n  > | void;\n  @Event() pass: EventEmitter<\n    Parameters<Required<EventProps>[\\\\\"onPass\\\\\"]>[number]\n  > | void;\n\n  handleClick() {\n    if (this.getVoid) {\n      this.getVoid.emit();\n    }\n\n    if (this.enter) {\n      console.log(this.enter.emit());\n    }\n\n    if (this.pass) {\n      this.pass.emit(\\\\\"test\\\\\");\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return <button onClick={() => this.handleClick()}>Test</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > expressionState 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() componentRef: any;\n  @State() refToUse = !(this.componentRef instanceof Function)\n    ? this.componentRef\n    : null;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.refToUse}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"figma-button\\\\\",\n})\nexport class FigmaButton {\n  @Prop() icon: any;\n  @Prop() interactiveState: any;\n  @Prop() width: any;\n  @Prop() size: any;\n  @Prop() label: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button\n        data-icon={this.icon}\n        data-disabled={this.interactiveState}\n        data-width={this.width}\n        data-size={this.size}\n      >\n        {this.label}\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > functionProps 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <p\n        f={() => x}\n        f1={(x) => x}\n        f2={(x) => {}}\n        f3={function () {\n          return x;\n        }}\n        f4={function (x) {\n          return x;\n        }}\n        f5={function (x) {\n          return;\n        }}\n        f6={function () {\n          return;\n        }}\n        f7={(a, b, c) => a + b + c}\n      ></p>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > getterState 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() foo: any;\n\n  get foo2() {\n    return this.foo + \\\\\"foo\\\\\";\n  }\n  get bar() {\n    return \\\\\"bar\\\\\";\n  }\n  baz(i: number) {\n    return i + this.foo2.length;\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <p>{this.foo2}</p>\n        <p>{this.bar}</p>\n        <p>{this.baz(1)}</p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > import types 1`] = `\n\"import { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport { RenderBlock } from \\\\\"./builder-render-block.raw\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n})\nexport class RenderContent {\n  @Prop() renderContentProps: any;\n\n  getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <render-block\n        {...this.getRenderContentProps(this.renderContentProps.block, 0)}\n      ></render-block>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > layerName 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-layer-name-component\\\\\",\n\n  styles: \\`\n          .layer-name {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyLayerNameComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section>\n        <div class=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"multiple-on-update\\\\\",\n})\nexport class MultipleOnUpdate {\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"multiple-on-update-with-deps\\\\\",\n})\nexport class MultipleOnUpdateWithDeps {\n  @State() a = \\\\\"a\\\\\";\n  @State() b = \\\\\"b\\\\\";\n  @State() c = \\\\\"c\\\\\";\n  @State() d = \\\\\"d\\\\\";\n\n  watch0Fn() {\n    console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  watch1Fn() {\n    console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n    if (this.a === \\\\\"a\\\\\") {\n      this.a = \\\\\"b\\\\\";\n    }\n  }\n\n  @Watch(\\\\\"c\\\\\")\n  @Watch(\\\\\"d\\\\\")\n  watch1() {\n    this.watch1Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n    this.watch1Fn();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > multipleSpreads 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @State() attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this.attrs} {...this} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > nestedStyles 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"nested-styles\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div {\n            display: block;\n          }\n        }\n        .div:hover {\n          display: flex;\n        }\n        .div:active {\n          display: inline;\n        }\n        .div .nested-selector {\n          display: grid;\n        }\n        .div .nested-selector:hover {\n          display: block;\n        }\n        .div.nested-selector:active {\n          display: inline-block;\n        }\n\\`,\n})\nexport class NestedStyles {\n  componentDidLoad() {}\n\n  render() {\n    return <div class=\\\\\"div\\\\\">Hello world</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-normalized-layer-names-component\\\\\",\n\n  styles: \\`\n          .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .div {\n          background: blue;\n        }\n\\`,\n})\nexport class MyNormalizedLayerNamesComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"css-0\\\\\">Single Number</div>\n        <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n        <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n        <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n        <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n        <div>Emoji</div>\n        <div class=\\\\\"div\\\\\" data-name=\\\\\"1\\\\\">\n          Number\n        </div>\n      </section>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onEvent 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"embed\\\\\",\n})\nexport class Embed {\n  private elem!: HTMLDivElement;\n\n  foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  componentDidLoad() {\n    this.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  render() {\n    return (\n      <div\n        class=\\\\\"builder-embed\\\\\"\n        ref={(el: any) => {\n          this.elem = el;\n        }}\n      >\n        <div>Test</div>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onInit & onMount 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init\\\\\",\n})\nexport class OnInit {\n  componentDidLoad() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onInit 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init\\\\\",\n})\nexport class OnInit {\n  @Prop() name: any;\n  @State() name = \\\\\"\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Default name defined by parent\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onInitPlain 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-init-plain\\\\\",\n})\nexport class OnInitPlain {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onMount 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"comp\\\\\",\n})\nexport class Comp {\n  componentDidLoad() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onMountMultiple 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"comp\\\\\",\n})\nexport class Comp {\n  componentDidLoad() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n    onMountHook_0();\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n    onMountHook_1();\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n    onMountHook_2();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onUpdate 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update\\\\\",\n})\nexport class OnUpdate {\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"import { Component, h, Fragment, Watch, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update-with-deps\\\\\",\n})\nexport class OnUpdateWithDeps {\n  @Prop() size: any;\n  @State() a = \\\\\"a\\\\\";\n  @State() b = \\\\\"b\\\\\";\n\n  watch0Fn() {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", this.a, this.b, this.size);\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  @Watch(\\\\\"size\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > preserveTyping 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > propsDestructure 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() type: any;\n  @State() name = \\\\\"Decadef20\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot></slot>\n        {this.type}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > propsInterface 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: Person | never[\\\\\"name\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > propsType 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        {this.name}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"on-update\\\\\",\n})\nexport class OnUpdate {\n  foo = function foo(params) {};\n  bar = function bar() {};\n  zoo = function zoo() {\n    const params = {\n      cb: this.bar,\n    };\n  };\n\n  componentDidLoad() {}\n\n  componentDidUpdate() {\n    this.foo({\n      someOption: this.bar,\n    });\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport { BlockStyles } from \\\\\"./block-styles.lite\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport { RenderRepeatedBlock } from \\\\\"./render-repeated-block.lite\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nimport { Component, h, Fragment, Host, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-block\\\\\",\n})\nexport class RenderBlock {\n  @Prop() block: any;\n  @Prop() context: any;\n\n  get component() {\n    const componentName = getProcessedBlock({\n      block: this.block,\n      state: this.context.state,\n      context: this.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = this.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n  get tag() {\n    return getBlockTag(this.useBlock);\n  }\n  get useBlock() {\n    return this.repeatItemData\n      ? this.block\n      : getProcessedBlock({\n          block: this.block,\n          state: this.context.state,\n          context: this.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n  get actions() {\n    return getBlockActions({\n      block: this.useBlock,\n      state: this.context.state,\n      context: this.context.context,\n    });\n  }\n  get attributes() {\n    const blockProperties = getBlockProperties(this.useBlock);\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: this.useBlock,\n              context: this.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n  get shouldWrap() {\n    return !this.component?.noWrap;\n  }\n  get renderComponentProps() {\n    return {\n      blockChildren: this.useChildren,\n      componentRef: this.component?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(this.useBlock),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(this.shouldWrap\n          ? {}\n          : {\n              attributes: { ...this.attributes, ...this.actions },\n            }),\n        customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n      },\n      context: this.childrenContext,\n    };\n  }\n  get useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n    return this.useBlock.children ?? [];\n  }\n  get childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !this.component?.component && !this.repeatItemData;\n    return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n  }\n  get repeatItemData() {\n    /**\n     * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = this.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: this.context.state,\n      context: this.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...this.context,\n        state: {\n          ...this.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n  get inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: this.useBlock,\n      context: this.context,\n      blockStyles: this.attributes.style,\n    });\n    return extractTextStyles(styles);\n  }\n  get childrenContext() {\n    return {\n      apiKey: this.context.apiKey,\n      state: this.context.state,\n      content: this.context.content,\n      context: this.context.context,\n      registeredComponents: this.context.registeredComponents,\n      inheritedStyles: this.inheritedTextStyles,\n    };\n  }\n  get renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.shouldWrap ? (\n          <Fragment>\n            {isEmptyHtmlElement(this.tag) ? (\n              <this.tag {...this.attributes} {...this.actions}></this.tag>\n            ) : null}\n            {!isEmptyHtmlElement(this.tag) && this.repeatItemData\n              ? this.repeatItemData?.map((data, index) => (\n                  <render-repeated-block\n                    key={index}\n                    repeatContext={data.context}\n                    block={data.block}\n                  ></render-repeated-block>\n                ))\n              : null}\n            {!isEmptyHtmlElement(this.tag) && !this.repeatItemData ? (\n              <this.tag {...this.attributes} {...this.actions}>\n                <this.renderComponentTag\n                  {...this.renderComponentProps}\n                ></this.renderComponentTag>\n                {this.childrenWithoutParentComponent?.map((child) => (\n                  <render-block\n                    key={\\\\\"render-block-\\\\\" + child.id}\n                    block={child}\n                    context={this.childrenContext}\n                  ></render-block>\n                ))}\n                {this.childrenWithoutParentComponent?.map((child) => (\n                  <block-styles\n                    key={\\\\\"block-style-\\\\\" + child.id}\n                    block={child}\n                    context={this.childrenContext}\n                  ></block-styles>\n                ))}\n              </this.tag>\n            ) : null}\n          </Fragment>\n        ) : (\n          <this.renderComponentTag\n            {...this.renderComponentProps}\n          ></this.renderComponentTag>\n        )}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport { RenderBlocks } from \\\\\"@dummy/RenderBlocks.lite.tsx\\\\\";\n\nimport { Component, h, Fragment, Watch, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"render-content\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: columns;\n        }\n\\`,\n})\nexport class RenderContent {\n  @Prop() customComponents: any;\n  @Prop() content: any;\n\n  watch0Fn() {\n    dispatchNewContentToVisualEditor(this.content);\n  }\n\n  @Watch(\\\\\"content\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    sendComponentsToVisualEditor(this.customComponents);\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div class=\\\\\"div\\\\\" onClick={() => trackClick(this.content.id)}>\n        <render-blocks blocks={this.content.blocks}></render-blocks>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"button\\\\\",\n})\nexport class Button {\n  @Prop() link: any;\n  @Prop() attributes: any;\n  @Prop() openLinkInNewTab: any;\n  @Prop() text: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Fragment>\n        {this.link ? (\n          <a\n            {...this.attributes}\n            href={this.link}\n            target={this.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n          >\n            {this.text}\n          </a>\n        ) : null}\n        {!this.link ? (\n          <button type=\\\\\"button\\\\\" {...this.attributes}>\n            {this.text}\n          </button>\n        ) : null}\n      </Fragment>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > self-referencing component 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.name}\n        {this.name === \\\\\"Batman\\\\\" ? (\n          <my-component name=\\\\\"Bruce Wayne\\\\\"></my-component>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() name: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        {this.name}\n        <slot></slot>\n        {this.name === \\\\\"Batman\\\\\" ? (\n          <my-component name=\\\\\"Bruce\\\\\">\n            <div>Wayne</div>\n          </my-component>\n        ) : null}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > setState 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"set-state\\\\\",\n})\nexport class SetState {\n  @State() n = [\\\\\"123\\\\\"];\n\n  someFn() {\n    this.n[0] = \\\\\"123\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={() => this.someFn()}>Click me</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"import { Component, h, Fragment, Watch, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n\n  styles: \\`\n          .div {\n          padding: 10px;\n        }\n\\`,\n})\nexport class MyBasicComponent {\n  @Prop() id: any;\n  @Prop() foo: any;\n\n  watch0Fn() {\n    console.log(\\\\\"props.id changed\\\\\", this.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n  }\n\n  @Watch(\\\\\"id\\\\\")\n  @Watch(\\\\\"foo.bar.baz\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div class=\\\\\"test div\\\\\">\n        {this.id}\n        {this.foo.bar.baz}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input {...attrs} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  @Prop() nested: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this.nested} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > spreadProps 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-component\\\\\",\n})\nexport class MyBasicComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input {...this} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > store-async-function 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  arrowFunction = async function arrowFunction() {\n    return Promise.resolve();\n  };\n  namedFunction = async function namedFunction() {\n    return Promise.resolve();\n  };\n  fetchUsers = async function fetchUsers() {\n    return Promise.resolve();\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > string-literal-store 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"string-literal-store\\\\\",\n})\nexport class StringLiteralStore {\n  @State() foo = 123;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.foo}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        class=\\\\\"builder-column div\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"style-prop-class-and-css\\\\\",\n\n  styles: \\`\n          .div {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n\\`,\n})\nexport class StylePropClassAndCss {\n  @Prop() attributes: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div\n        class={this.attributes.class + \\\\\" div\\\\\"}\n        style={this.attributes.style}\n      ></div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > subComponent 1`] = `\n\"import { Foo } from \\\\\"./foo-sub-component.lite\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"sub-component\\\\\",\n})\nexport class SubComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <foo></foo>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > svgComponent 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"svg-component\\\\\",\n})\nexport class SvgComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <svg\n        fill=\\\\\"none\\\\\"\n        role=\\\\\"img\\\\\"\n        viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n        width={42}\n        height={42}\n      >\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              stdDeviation={7}\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > typeDependency 1`] = `\n\"import type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-dependency\\\\\",\n})\nexport class TypeDependency {\n  @Prop() foo: any;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.foo}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\nimport { Component, h, Fragment, Prop } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-external-props\\\\\",\n})\nexport class TypeExternalProps {\n  @Prop() name: FooProps[\\\\\"name\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { FooStore } from \\\\\"./foo-store\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-external-store\\\\\",\n})\nexport class TypeExternalStore {\n  @State() _name = \\\\\"test\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this._name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > typeGetterStore 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"type-getter-store\\\\\",\n})\nexport class TypeGetterStore {\n  @State() name = \\\\\"test\\\\\";\n\n  getName() {\n    if (this.name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return this.name;\n  }\n  get test() {\n    return \\\\\"test\\\\\";\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        Hello\n        {this.name}!{\\\\\" \\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > use-style 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <button type=\\\\\"button\\\\\">Button</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <button class=\\\\\"button\\\\\" type=\\\\\"button\\\\\">\n        Button\n      </button>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <button type=\\\\\"button\\\\\">Button</button>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > useTarget 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"use-target-component\\\\\",\n})\nexport class UseTargetComponent {\n  @State() lastName = \\\\\"bar\\\\\";\n  @State() foo = \\\\\"bar\\\\\";\n\n  get name() {\n    const prefix = \\\\\"st\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  componentDidLoad() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  }\n\n  render() {\n    return <div>{this.name}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\nimport { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-basic-web-component\\\\\",\n})\nexport class MyBasicWebComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > basic 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"Steve\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          onChange={(event) => (this.name = event.target.value)}\n          value={this.name}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > bindGroup 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() tortilla = \\\\\"Plain\\\\\";\n  @State() fillings = [];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={this.tortilla === \\\\\"Plain\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={this.tortilla === \\\\\"Whole wheat\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={this.tortilla === \\\\\"Spinach\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={this.fillings === \\\\\"Rice\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={this.fillings === \\\\\"Beans\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={this.fillings === \\\\\"Cheese\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={this.fillings === \\\\\"Guac (extra)\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {this.tortilla}\n        </p>\n        <p>\n          Fillings:\n          {this.fillings}\n        </p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > bindProperty 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() value = \\\\\"hello\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return <input value={this.value} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > classDirective 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() disabled: any;\n  @State() focus = true;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <input\n        class={\\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > context 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() activeTab = 0;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.activeTab}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > each 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <ul>\n        {this.numbers?.map((num) => (\n          <li>{num}</li>\n        ))}\n      </ul>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > eventHandlers 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={(a) => this.log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={() => this.log(event)}>Log</button>\n        <button onClick={() => this.log(event)}>Log</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > html 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() html = \\\\\"<b>bold</b>\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return <div innerHTML={this.html}></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > ifElse 1`] = `\n\"import { Component, h, Fragment, Host, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() show = true;\n\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.show ? (\n          <button onClick={() => this.toggle(event)}> Hide </button>\n        ) : (\n          <button onClick={() => this.toggle(event)}> Show </button>\n        )}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > imports 1`] = `\n\"import { Button } from \\\\\"./Button.lite\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() disabled = false;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button type=\\\\\"button\\\\\" disabled={this.disabled}>\n          <slot></slot>\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  componentDidUpdate() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > reactive 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"Steve\\\\\";\n\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input value={this.name} />\n        Lowercase:\n        {this.lowercaseName}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() a = 2;\n  @State() b = 5;\n  @State() result = null;\n\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  watch0Fn() {\n    this.calculateResult(this.a, this.b);\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onChange={(event) => (this.a = event.target.value)}\n          value={this.a}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onChange={(event) => (this.b = event.target.value)}\n          value={this.b}\n        />\n        Result:\n        {this.result}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > slots 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot>default</slot>\n        <slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > style 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input class=\\\\\"form-input\\\\\" />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Javascript Test > textExpressions 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() a = 5;\n  @State() b = 12;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        normal:\n        {this.a + this.b}\n        <br />\n        conditional\n        {this.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > basic 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"Steve\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          onChange={(event) => (this.name = event.target.value)}\n          value={this.name}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > bindGroup 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() tortilla = \\\\\"Plain\\\\\";\n  @State() fillings = [];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          checked={this.tortilla === \\\\\"Plain\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          checked={this.tortilla === \\\\\"Whole wheat\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          checked={this.tortilla === \\\\\"Spinach\\\\\"}\n          onChange={(event) => (this.tortilla = event.target.value)}\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          checked={this.fillings === \\\\\"Rice\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          checked={this.fillings === \\\\\"Beans\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          checked={this.fillings === \\\\\"Cheese\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          checked={this.fillings === \\\\\"Guac (extra)\\\\\"}\n          onChange={(event) => (this.fillings = event.target.value)}\n        />\n        <p>\n          Tortilla:\n          {this.tortilla}\n        </p>\n        <p>\n          Fillings:\n          {this.fillings}\n        </p>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > bindProperty 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() value = \\\\\"hello\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return <input value={this.value} />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > classDirective 1`] = `\n\"import { Component, h, Fragment, Prop, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @Prop() disabled: any;\n  @State() focus = true;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <input\n        class={\\`form-input \\${this.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          this.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`}\n      />\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > context 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() activeTab = 0;\n\n  componentDidLoad() {}\n\n  render() {\n    return <div>{this.activeTab}</div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > each 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <ul>\n        {this.numbers?.map((num) => (\n          <li>{num}</li>\n        ))}\n      </ul>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > eventHandlers 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  log = function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button onClick={(a) => this.log(\\\\\"hi\\\\\")}>Log</button>\n        <button onClick={() => this.log(event)}>Log</button>\n        <button onClick={() => this.log(event)}>Log</button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > html 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() html = \\\\\"<b>bold</b>\\\\\";\n\n  componentDidLoad() {}\n\n  render() {\n    return <div innerHTML={this.html}></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > ifElse 1`] = `\n\"import { Component, h, Fragment, Host, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() show = true;\n\n  toggle = function toggle() {\n    this.show = !this.show;\n  };\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <Host>\n        {this.show ? (\n          <button onClick={() => this.toggle(event)}> Hide </button>\n        ) : (\n          <button onClick={() => this.toggle(event)}> Show </button>\n        )}\n      </Host>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > imports 1`] = `\n\"import { Button } from \\\\\"./Button.lite\\\\\";\n\nimport { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() disabled = false;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <button type=\\\\\"button\\\\\" disabled={this.disabled}>\n          <slot></slot>\n        </button>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {\n    console.log(\\\\\"onMount\\\\\");\n  }\n  disconnectedCallback() {\n    console.log(\\\\\"onDestroy\\\\\");\n  }\n  componentDidUpdate() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  render() {\n    return <div></div>;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > reactive 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() name = \\\\\"Steve\\\\\";\n\n  get lowercaseName() {\n    return this.name.toLowerCase();\n  }\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <input value={this.name} />\n        Lowercase:\n        {this.lowercaseName}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import { Component, h, Fragment, Watch, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() a = 2;\n  @State() b = 5;\n  @State() result = null;\n\n  calculateResult = function calculateResult(a_, b_) {\n    this.result = a_ * b_;\n  };\n\n  watch0Fn() {\n    this.calculateResult(this.a, this.b);\n  }\n\n  @Watch(\\\\\"a\\\\\")\n  @Watch(\\\\\"b\\\\\")\n  watch0() {\n    this.watch0Fn();\n  }\n\n  componentDidLoad() {\n    this.watch0Fn();\n  }\n\n  render() {\n    return (\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          onChange={(event) => (this.a = event.target.value)}\n          value={this.a}\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          onChange={(event) => (this.b = event.target.value)}\n          value={this.b}\n        />\n        Result:\n        {this.result}\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > slots 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        <slot>default</slot>\n        <slot name=\\\\\"Test\\\\\">\n          <div>default</div>\n        </slot>\n      </div>\n    );\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > style 1`] = `\n\"import { Component, h, Fragment } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n\n  styles: \\`\n          input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n\\`,\n})\nexport class MyComponent {\n  componentDidLoad() {}\n\n  render() {\n    return <input class=\\\\\"form-input\\\\\" />;\n  }\n}\n\"\n`;\n\nexports[`Stencil > svelte > Typescript Test > textExpressions 1`] = `\n\"import { Component, h, Fragment, State } from \\\\\"@stencil/core\\\\\";\n\n@Component({\n  tag: \\\\\"my-component\\\\\",\n})\nexport class MyComponent {\n  @State() a = 5;\n  @State() b = 12;\n\n  componentDidLoad() {}\n\n  render() {\n    return (\n      <div>\n        normal:\n        {this.a + this.b}\n        <br />\n        conditional\n        {this.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n      </div>\n    );\n  }\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/styles.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Styles > class and CSS are merged 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Styles > class and className are merged 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"MyComp\",\n          \"properties\": {\n            \"class\": \"test\",\n            \"className\": \"test2\",\n          },\n          \"scope\": {},\n        },\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"css\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"{\n  padding: '10px'\n}\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"bindings\": {},\n              \"children\": [],\n              \"meta\": {},\n              \"name\": \"div\",\n              \"properties\": {\n                \"_text\": \"\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \",\n              },\n              \"scope\": {},\n            },\n          ],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"class\": \"test2 test\",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"MyComp\": \"default\",\n      },\n      \"path\": \"./my-component.lite\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Styles > className and CSS are merged 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  padding: '10px'\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"div\",\n          \"properties\": {\n            \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n          },\n          \"scope\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {\n        \"class\": \"test\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyBasicComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/svelte.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Svelte > jsx > Javascript Test > Advanced 1`] = `\n\"<script>\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n</script>\n\n<main>\n  {#each names as person, i}\n    <div>{i}: {person}</div>\n  {/each}\n\n  {#each names as person}\n    <span>{person}</span>\n  {/each}\n\n  {#each names as item}\n    <br />\n  {/each}\n\n  {#each Array.from({ length: 10 }) as _, ee}\n    <pre>{ee}</pre>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as item}\n    <p>{index}</p>\n  {/each}\n\n  {#each names as person, index}\n    <span>{person}{index}</span>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as person, count}\n    <span>{person}{count}</span>\n  {/each}\n\n  {#each names as person, i}\n    <span>{person}{i}</span>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as person, index}\n    <span>{person}{index}</span>\n  {/each}\n</main>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<script>\n  export let showInput;\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  let name = \\\\\"PatrickJS\\\\\";\n\n  function onUpdateFn_0(..._args) {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  $: onUpdateFn_0(...[inputRef, inputNoArgRef]);\n</script>\n\n<div>\n  {#if showInput}\n    <input\n      class=\\\\\"input\\\\\"\n      bind:this={inputRef}\n      on:blur={(event) => {\n        onBlur();\n      }}\n      bind:value={name}\n    />\n    <label for=\\\\\"cars\\\\\" bind:this={inputNoArgRef}> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\"\n      ><option value=\\\\\"supra\\\\\">GR Supra</option><option value=\\\\\"86\\\\\">GR 86</option\n      ></select\n    >\n  {/if}\n  Hello\n  {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic 1`] = `\n\"<script>\n  export const DEFAULT_VALUES = {\n    name: \\\\\"Steve\\\\\",\n  };\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  let name = \\\\\"Steve\\\\\";\n  let age = 1;\n  let sports = [\\\\\"\\\\\"];\n</script>\n\n<div class=\\\\\"test div\\\\\">\n  <input\n    value={DEFAULT_VALUES.name || name}\n    on:change={(myEvent) => {\n      name = myEvent.target.value;\n    }}\n  />\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic 2`] = `\n\"<script>\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n</script>\n\n<div>\n  {#each names as person}\n    {#if person === name}\n      <input\n        value={name}\n        on:change={(event) => {\n          name = event.target.value + \\\\\" and \\\\\" + person;\n        }}\n      />\n\n      Hello\n      {person}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    {/if}\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic Context 1`] = `\n\"<script>\n  import { getContext, onMount, setContext } from \\\\\"svelte\\\\\";\n\n  import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n  let myService = getContext(MyService.key);\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  let name = \\\\\"PatrickJS\\\\\";\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  setContext(Injector.key, createInjector());\n</script>\n\n<div>\n  {myService.method(\\\\\"hello\\\\\") + name}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <input\n    on:change={(event) => {\n      onChange();\n    }}\n  />\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let bye;\n  export let hi;\n\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  name = \\\\\"PatrickJS onInit\\\\\" + hi;\n\n  onMount(() => {\n    name = \\\\\"PatrickJS onMount\\\\\" + bye;\n  });\n</script>\n\n<div>Hello {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let onMessageChange;\n  export let onEvent;\n  export let message;\n\n  let name = \\\\\"PatrickJS\\\\\";\n\n  onMount(() => {\n    onMessageChange(name);\n    onEvent(message);\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          <script >\n  import { onMount } from 'svelte'\n\n\n\n\n\n\n\n\n\n  export let onMessageChange;\nexport let onEvent;\nexport let message;\n\n\n\n\n\n\n\n\n  let name = 'PatrickJS';\n\n\n  onMount(() => { onMessageChange(name);\nonEvent(message); });\n\n\n\n\n\n\n</script>\n\n<div ></div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicAttribute 1`] = `\"<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\"`;\n\nexports[`Svelte > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<script>\n  import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n  export let type;\n</script>\n\n<div>\n  {#if $$slots.default}\n    <slot />\n    {type}\n  {/if}<MyBooleanAttributeComponent toggle={true} /><MyBooleanAttributeComponent\n    toggle={true}\n  /><MyBooleanAttributeComponent list={null} />\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<script>\n  import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\n  import MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\n  import MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n  function log(message) {\n    console.log(message);\n  }\n\n  let name = \\\\\"Steve\\\\\";\n  let dev = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div>\n  <MyBasicComponent id={dev} />\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi={name}\n      bye={dev}\n    /><MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      onMessageChange={(name) => (name = name)}\n      onEvent={(event) => log(\\\\\"Test\\\\\")}\n    />\n  </div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicFor 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n</script>\n\n<div>\n  {#each names as person}\n    <input\n      value={name}\n      on:change={(event) => {\n        name = event.target.value + \\\\\" and \\\\\" + person;\n      }}\n    />\n\n    Hello\n    {person}\n    ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicRef 1`] = `\n\"<script>\n  export let showInput;\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  let name = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div>\n  {#if showInput}\n    <input\n      class=\\\\\"input\\\\\"\n      bind:this={inputRef}\n      on:blur={(event) => {\n        onBlur();\n      }}\n      bind:value={name}\n    />\n    <label for=\\\\\"cars\\\\\" bind:this={inputNoArgRef}> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\"\n      ><option value=\\\\\"supra\\\\\">GR Supra</option><option value=\\\\\"86\\\\\">GR 86</option\n      ></select\n    >\n  {/if}\n  Hello\n  {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<script>\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n</script>\n\n<div>\n  <button\n    on:click={async (evt) => {\n      await handlerClick(evt);\n    }}>Click</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<script>\n  export function usePrevious(value) {\n    // The ref object is a generic container whose current property is mutable ...\n    // ... and can hold any value, similar to an instance property on a class\n    let ref = useRef(null); // Store current value in ref\n\n    onUpdate(() => {\n      ref = value;\n    }, [value]); // Only re-run if value changes\n    // Return previous value (happens before update in useEffect above)\n\n    return ref;\n  }\n\n  let count = 0;\n\n  function onUpdateFn_0(..._args) {\n    prevCount = count;\n  }\n\n  $: onUpdateFn_0(...[count]);\n</script>\n\n<div>\n  <h1>\n    Now: {count}, before: {prevCount}\n  </h1>\n  <button\n    on:click={(event) => {\n      count += 1;\n    }}>Increment</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Button 1`] = `\n\"<script>\n  export let link;\n  export let attributes;\n  export let openLinkInNewTab;\n  export let text;\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button type=\\\\\"button\\\\\" {...attributes}>{text}</button>\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Columns 1`] = `\n\"<script>\n  export let columns;\n  export let space;\n\n  function getColumns() {\n    return columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof space === \\\\\"number\\\\\" ? space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n</script>\n\n<div class=\\\\\"builder-columns div\\\\\">\n  {#each columns as column, index}\n    <div class=\\\\\"builder-column div-2\\\\\">{column.content}{index}</div>\n  {/each}\n</div>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<div>\n  <slot name=\\\\\"testing\\\\\" />\n  <div><hr /></div>\n  <div><slot /></div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"<script>\n  export let attributes;\n  export let content = \\\\\"\\\\\";\n\n  function show() {\n    $$slots.content ? 1 : \\\\\"\\\\\";\n  }\n  $: cls = () => {\n    return $$slots.content && $$slots.default ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  };\n\n  let name = \\\\\"king\\\\\";\n  let showContent = false;\n</script>\n\n{#if $$slots.reference}\n  <div\n    name={$$slots.content ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n    title={$$slots.content ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n    {...attributes}\n    on:click={(event) => {\n      show();\n    }}\n    class={cls()}\n  >\n    {#if showContent && $$slots.content}\n      <slot name=\\\\\"content\\\\\">{content}</slot>\n    {/if}\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > CustomCode 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let replaceNodes;\n  export let code;\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  let scriptsInserted = [];\n  let scriptsRun = [];\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n</script>\n\n<div\n  bind:this={elem}\n  class={\\\\\"builder-custom-code\\\\\" + (replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")}\n>\n  {@html code}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Embed 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let replaceNodes;\n  export let code;\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  let scriptsInserted = [];\n  let scriptsRun = [];\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n</script>\n\n<div\n  bind:this={elem}\n  class={\\\\\"builder-custom-code\\\\\" + (replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")}\n>\n  {@html code}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Form 1`] = `\n\"<script>\n  import { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\n  import {\n    BuilderBlock as BuilderBlockComponent,\n    BuilderBlocks,\n    get,\n    set,\n  } from \\\\\"@fake\\\\\";\n\n  export let previewState;\n  export let sendWithJs;\n  export let sendSubmissionsTo;\n  export let action;\n  export let customHeaders;\n  export let contentType;\n  export let sendSubmissionsToEmail;\n  export let name;\n  export let method;\n  export let errorMessagePath;\n  export let resetFormOnSubmit;\n  export let successUrl;\n  export let validate;\n  export let attributes;\n  export let builderBlock;\n  export let errorMessage;\n  export let sendingMessage;\n  export let successMessage;\n\n  function onSubmit(event) {\n    const sendWithJs = sendWithJs || sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(action || sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = contentType;\n\n      if (sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(name || \\\\\"\\\\\")}\\`;\n      fetch(\n        sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : action,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              formErrorMessage = message;\n            }\n          }\n\n          responseData = body;\n          formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = successUrl;\n                }\n              } else {\n                location.href = successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          responseData = err;\n          formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  $: submissionState = () => {\n    return (Builder.isEditing && previewState) || formState;\n  };\n\n  let formRef;\n\n  let formState = \\\\\"unsubmitted\\\\\";\n  let responseData = null;\n  let formErrorMessage = \\\\\"\\\\\";\n</script>\n\n<form\n  {validate}\n  bind:this={formRef}\n  action={!sendWithJs && action}\n  {method}\n  {name}\n  on:submit={(event) => {\n    onSubmit(event);\n  }}\n  {...attributes}\n>\n  {#if builderBlock && builderBlock.children}\n    {#each builderBlock?.children as block, index (block.id)}\n      <BuilderBlockComponent {block} {index} />\n    {/each}\n  {/if}\n  {#if submissionState() === \\\\\"error\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={errorMessage} />\n  {/if}\n  {#if submissionState() === \\\\\"sending\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"sendingMessage\\\\\" blocks={sendingMessage} />\n  {/if}\n  {#if submissionState() === \\\\\"error\\\\\" && responseData}\n    <pre class=\\\\\"builder-form-error-text pre\\\\\">{JSON.stringify(\n        responseData,\n        null,\n        2\n      )}</pre>\n  {/if}\n  {#if submissionState() === \\\\\"success\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"successMessage\\\\\" blocks={successMessage} />\n  {/if}\n</form>\n\n<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Image 1`] = `\n\"<script>\n  import { onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  export let lazy;\n  export let altText;\n  export let _class;\n  export let image;\n  export let srcset;\n  export let sizes;\n\n  function setLoaded() {\n    imageLoaded = true;\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef;\n\n  let scrollListener = null;\n  let imageLoaded = false;\n  let load = false;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            load = true;\n            scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onDestroy(() => {\n    if (scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n    }\n  });\n</script>\n\n<div>\n  <picture bind:this={pictureRef}>\n    {#if !useLazyLoading() || load}\n      <img\n        alt={altText}\n        aria-role={altText ? \\\\\"presentation\\\\\" : undefined}\n        class={\\\\\"builder-image\\\\\" + (_class ? \\\\\" \\\\\" + _class : \\\\\"\\\\\") + \\\\\" img\\\\\"}\n        src={image}\n        on:load={(event) => {\n          setLoaded();\n        }}\n        {srcset}\n        {sizes}\n      />\n    {/if}<source {srcset} /></picture\n  ><slot />\n</div>\n\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Image State 1`] = `\n\"<script>\n  let canShow = true;\n  let images = [\\\\\"http://example.com/qwik.png\\\\\"];\n</script>\n\n<div>\n  {#each images as item, itemIndex}\n    {#key itemIndex}\n      <img class=\\\\\"custom-class\\\\\" src={item} />\n    {/key}\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Img 1`] = `\n\"<script>\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let backgroundSize;\n  export let backgroundPosition;\n  export let attributes;\n  export let imgSrc;\n  export let altText;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n{#key (Builder.isEditing && imgSrc) || \\\\\"default-key\\\\\"}\n  <img\n    style={stringifyStyles({\n      objectFit: backgroundSize || \\\\\"cover\\\\\",\n      objectPosition: backgroundPosition || \\\\\"center\\\\\",\n    })}\n    {...attributes}\n    alt={altText}\n    src={imgSrc}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Input 1`] = `\n\"<script>\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let attributes;\n  export let defaultValue;\n  export let placeholder;\n  export let type;\n  export let name;\n  export let value;\n  export let required;\n  export let onChange;\n</script>\n\n{#key Builder.isEditing && defaultValue ? defaultValue : \\\\\"default-key\\\\\"}\n  <input\n    {...attributes}\n    {placeholder}\n    {type}\n    {name}\n    {value}\n    {defaultValue}\n    {required}\n    on:change={(event) => {\n      onChange?.(event.target.value);\n    }}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > InputParent 1`] = `\n\"<script>\n  import FormInputComponent from \\\\\"./input.raw\\\\\";\n\n  function handleChange(value) {\n    console.log(value);\n  }\n</script>\n\n<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  onChange={(value) => handleChange(value)}\n/>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > NestedStore 1`] = `\n\"<script>\n  let _id = \\\\\"abc\\\\\";\n\n  let _messageId = _id + \\\\\"-message\\\\\";\n</script>\n\n<div id={_id}>\n  Test\n  <p id={_messageId}>Message</p>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > RawText 1`] = `\n\"<script>\n  export let attributes;\n  export let text;\n</script>\n\n<span class={attributes?.class || attributes?.className}\n  >{@html text || \\\\\"\\\\\"}</span\n>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Section 1`] = `\n\"<script>\n  export let attributes;\n  export let maxWidth;\n\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<section\n  style={stringifyStyles(\n    maxWidth && typeof maxWidth === \\\\\"number\\\\\"\n      ? {\n          maxWidth: maxWidth,\n        }\n      : undefined\n  )}\n  {...attributes}\n>\n  <slot />\n</section>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Section 2`] = `\n\"<script>\n  export let attributes;\n\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n\n  let max = 42;\n  let items = [42];\n</script>\n\n{#if max}\n  {#each items as item}\n    <section\n      style={stringifyStyles({\n        maxWidth: item + max,\n      })}\n      {...attributes}\n    >\n      <slot />\n    </section>\n  {/each}\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Select 1`] = `\n\"<script>\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let attributes;\n  export let value;\n  export let defaultValue;\n  export let name;\n  export let options;\n</script>\n\n{#key Builder.isEditing && defaultValue ? defaultValue : \\\\\"default-key\\\\\"}\n  <select {...attributes} {value} {defaultValue} {name}>\n    {#each options as option, index}\n      <option value={option.value} data-index={index}\n        >{option.name || option.value}</option\n      >\n    {/each}\n  </select>\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > SlotDefault 1`] = `\"<div><slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot></div>\"`;\n\nexports[`Svelte > jsx > Javascript Test > SlotHtml 1`] = `\n\"<script>\n  import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n</script>\n\n<div>\n  <ContentSlotCode>\n    <span #testing>\n      <div>Hello</div>\n    </span>\n  </ContentSlotCode>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > SlotJsx 1`] = `\n\"<script >\n\n\n\n\nimport  ContentSlotCode from './content-slot-jsx.raw';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ><ContentSlotCode  slotTesting={<div>Hello</div>} ></ContentSlotCode></div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > SlotNamed 1`] = `\n\"<div>\n  <slot name=\\\\\"my-awesome-slot\\\\\" /><slot name=\\\\\"top\\\\\" /><slot name=\\\\\"left\\\\\"\n    >Default left</slot\n  ><slot>Default Child</slot>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Stamped.io 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n  export let apiKey;\n  export let productId;\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  let reviews = [];\n  let name = \\\\\"test\\\\\";\n  let showReviewPrompt = false;\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        reviews = data.data;\n      });\n  });\n</script>\n\n<div data-user={name}>\n  <button\n    on:click={(event) => {\n      showReviewPrompt = true;\n    }}>Write a review</button\n  >\n  {#if showReviewPrompt || \\\\\"asdf\\\\\"}\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea placeholder=\\\\\"How was your experience?\\\\\" class=\\\\\"textarea\\\\\" />\n    <button\n      class=\\\\\"button\\\\\"\n      on:click={(ev) => {\n        ev.preventDefault();\n        showReviewPrompt = false;\n      }}\n    >\n      Submit\n    </button>\n  {/if}\n  {#each reviews as review, index (review.id)}\n    <div class=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" src={review.avatar} />\n      <div class={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n        <div>N: {index}</div>\n        <div>{review.author}</div>\n        <div>{review.reviewMessage}</div>\n      </div>\n    </div>\n  {/each}\n</div>\n\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > StoreComment 1`] = `\n\"<script>\n  function bar() {}\n\n  let foo = true;\n</script>\n\n{foo}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<script>\n  function foo(errors) {\n    return errors;\n  }\n\n  let errors = {};\n</script>\n\n{foo(errors)}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > StoreWithState 1`] = `\n\"<script>\n  function bar() {\n    return foo;\n  }\n\n  let foo = false;\n</script>\n\n{bar()}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Submit 1`] = `\n\"<script>\n  export let attributes;\n  export let text;\n</script>\n\n<button type=\\\\\"submit\\\\\" {...attributes}>{text}</button>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Text 1`] = `\n\"<script>\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let text;\n  export let content;\n\n  let name = \\\\\"Decadef20\\\\\";\n</script>\n\n<div\n  contentEditable={allowEditingText || undefined}\n  data-name={{\n    test: name || \\\\\"any name\\\\\",\n  }}\n>\n  {@html text || content || name || '<p class=\\\\\"text-lg\\\\\">my name</p>'}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Textarea 1`] = `\n\"<script>\n  export let attributes;\n  export let placeholder;\n  export let name;\n  export let value;\n  export let defaultValue;\n</script>\n\n<textarea {...attributes} {placeholder} {name} {value} {defaultValue} />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<script>\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  export let onChange;\n\n  function _do(id) {\n    _active = !!id;\n\n    if (onChange) {\n      onChange(_active);\n    }\n  }\n\n  let _id = \\\\\"abc\\\\\";\n  let _active = false;\n\n  afterUpdate(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n</script>\n\n<div>Test</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > Video 1`] = `\n\"<script>\n  export let attributes;\n  export let fit;\n  export let position;\n  export let video;\n  export let posterImage;\n  export let autoPlay;\n  export let muted;\n  export let controls;\n  export let loop;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n{#key video || \\\\\"no-src\\\\\"}\n  <video\n    style={stringifyStyles({\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    })}\n    preload=\\\\\"none\\\\\"\n    {...attributes}\n    poster={posterImage}\n    autoplay={autoPlay}\n    {muted}\n    {controls}\n    {loop}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<script>\n  function setName(value) {\n    name = value;\n  }\n\n  function updateNameWithArrowFn(value) {\n    name = value;\n  }\n\n  let name = \\\\\"steve\\\\\";\n</script>\n\n<div>Hello {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicForFragment 1`] = `\n\"<script>\n  let id = \\\\\"xyz\\\\\";\n</script>\n\n<div>\n  {#each [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] as option (\\`key-\\${option}\\`)}\n    <div>{option}</div>\n  {/each}\n\n  {#each [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] as option (\\`\\${id}-\\${option}\\`)}\n    <div>{option}</div>\n  {/each}\n  <select>\n    {#each [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"] as option (\\`\\${id}-\\${option}\\`)}\n      <option value={option}>{option}</option>\n    {/each}\n  </select>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<script>\n  export let actions;\n\n  $: TagNameGetter = () => {\n    return \\\\\"span\\\\\";\n  };\n\n  let name = \\\\\"VincentW\\\\\";\n  let TagName = \\\\\"div\\\\\";\n  let tag = \\\\\"span\\\\\";\n</script>\n\n<svelte:component this={TagNameGetter()}>\n  Hello <svelte:component this={tag}>{name}</svelte:component>\n  {#each actions as action}\n    <svelte:component this={TagName}\n      ><svelte:component this={action.icon} /><span>{action.text}</span\n      ></svelte:component\n    >\n  {/each}\n</svelte:component>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<script>\n  export let inputRef;\n\n  let name = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div><input class=\\\\\"input\\\\\" bind:this={inputRef} bind:value={name} /></div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          <script >\n\n\n\n\n\n\n\n\n\n\n    export let inputRef;\n\n\n\n\n\n\n\n\n    let name = 'PatrickJS';\n\n\n\n\n\n\n\n\n\n  </script>\n\n  <div ><input  class=\\\\\"input\\\\\"  bind:this={inputRef}  bind:value={name}  /></div>\n\n  <style>\n    .input {\ncolor: red;\n}\n  </style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<script>\n  let name = \\\\\"PatrickJS\\\\\";\n\n  function onUpdateFn_0(..._args) {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  $: onUpdateFn_0(...[name]);\n</script>\n\n<div>Hello! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          <script >\n  import { onMount } from 'svelte'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  let buttonRef\n\n\n\n\n  onMount(() => { console.log('onMount'); });\n\n\n\n\n\n\n</script>\n\n<button  bind:this={buttonRef} >Attribute Passing</button>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          <script >\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  let buttonRef\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ><button  bind:this={buttonRef} >Attribute Passing</button></div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<script>\n  import MyComp from \\\\\"./my-component.svelte\\\\\";\n</script>\n\n<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > class + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > className + css 1`] = `\n\"<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > className 1`] = `\n\"<script>\n  let bindings = \\\\\"a binding\\\\\";\n</script>\n\n<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class={bindings}>With binding</div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > classState 1`] = `\n\"<script>\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n\n  let classState = \\\\\"testClassName\\\\\";\n  let styleState = {\n    color: \\\\\"red\\\\\",\n  };\n</script>\n\n<div style={stringifyStyles(styleState)} class={classState + \\\\\" div\\\\\"}>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          <script >\n\n\n\n\n\n\n\n\n\n\n  export let className;\n\nexport let type;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div  class={className} ><slot></slot>{type}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          <script >\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ></div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > componentWithContext 1`] = `\n\"<script>\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  import Context1 from \\\\\"@dummy/1\\\\\";\n  import Context2 from \\\\\"@dummy/2\\\\\";\n\n  export let content;\n\n  let foo = getContext(Context1.key);\n\n  setContext(Context1.key, {\n    foo: \\\\\"bar\\\\\",\n\n    content() {\n      return content;\n    },\n  });\n  setContext(Context2.key, {\n    bar: \\\\\"baz\\\\\",\n  });\n</script>\n\n{foo.value}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<script>\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  import Context1 from \\\\\"@dummy/1\\\\\";\n  import Context2 from \\\\\"@dummy/2\\\\\";\n\n  export let content;\n\n  let foo = getContext(Context1.key);\n\n  setContext(Context1.key, {\n    foo: \\\\\"bar\\\\\",\n\n    content() {\n      return content;\n    },\n  });\n  setContext(Context2.key, {\n    bar: \\\\\"baz\\\\\",\n  });\n</script>\n\n{foo.value}\n<div>other</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > contentState 1`] = `\n\"<script>\n  import { setContext } from \\\\\"svelte\\\\\";\n\n  import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n  export let content;\n  export let customComponents;\n\n  setContext(BuilderContext.key, {\n    content: content,\n    registeredComponents: customComponents,\n  });\n</script>\n\n<div>setting context</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > defaultProps 1`] = `\n\"<script>\n  export let link = \\\\\"https://builder.io/\\\\\";\n  export let attributes;\n  export let openLinkInNewTab = false;\n  export let text = \\\\\"default text\\\\\";\n  export let onClick = () => {\n    console.log(\\\\\"hi\\\\\");\n  };\n  export let buttonText;\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button\n      type=\\\\\"button\\\\\"\n      {...attributes}\n      on:click={(event) => {\n        onClick();\n      }}>{buttonText}</button\n    >\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<script>\n  export let link = \\\\\"https://builder.io/\\\\\";\n  export let attributes;\n  export let openLinkInNewTab = false;\n  export let text = \\\\\"default text\\\\\";\n  export let onClick = () => {};\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button\n      type=\\\\\"button\\\\\"\n      {...attributes}\n      on:click={(event) => {\n        onClick(event);\n      }}>{text}</button\n    >\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<script>\n  const DEFAULT_VALUES = {\n    name: \\\\\"Sami\\\\\",\n  };\n\n  export let name;\n</script>\n\n<div>Hello {name || DEFAULT_VALUES.name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<script>\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input\n    class=\\\\\"input\\\\\"\n    on:input={(event) => {\n      name = event.target.value;\n    }}\n    bind:value={name}\n  />\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > eventProps 1`] = `\n\"<script>\n  export let onGetVoid;\n  export let onEnter;\n  export let onPass;\n\n  function handleClick() {\n    if (onGetVoid) {\n      onGetVoid();\n    }\n\n    if (onEnter) {\n      console.log(onEnter());\n    }\n\n    if (onPass) {\n      onPass(\\\\\"test\\\\\");\n    }\n  }\n</script>\n\n<button\n  on:click={(event) => {\n    handleClick();\n  }}>Test</button\n>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > expressionState 1`] = `\n\"<script>\n  export let componentRef;\n\n  let refToUse = !(componentRef instanceof Function) ? componentRef : null;\n</script>\n\n<div>{refToUse}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          <script >\n\n\n\n\n\n\n\n\n\n\n  export let icon;\nexport let interactiveState;\nexport let width;\nexport let size;\nexport let label;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<button  data-icon={icon}  data-disabled={interactiveState}  data-width={width}  data-size={size} >{label}</button>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > functionProps 1`] = `\n\"<p\n  f={() => x}\n  f1={(x) => x}\n  f2={(x) => {}}\n  f3={function () {\n    return x;\n  }}\n  f4={function (x) {\n    return x;\n  }}\n  f5={function (x) {\n    return;\n  }}\n  f6={function () {\n    return;\n  }}\n  f7={(a, b, c) => a + b + c}\n/>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > getterState 1`] = `\n\"<script>\n  export let foo;\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n  $: foo2 = () => {\n    return foo + \\\\\"foo\\\\\";\n  };\n\n  $: bar = () => {\n    return \\\\\"bar\\\\\";\n  };\n</script>\n\n<div>\n  <p>{foo2()}</p>\n  <p>{bar()}</p>\n  <p>{baz(1)}</p>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > import types 1`] = `\n\"<script>\n  import RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n  export let renderContentProps;\n\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n</script>\n\n<RenderBlock {...getRenderContentProps(renderContentProps.block, 0)} />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > layerName 1`] = `\n\"<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<script>\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<script>\n  let a = \\\\\"a\\\\\";\n  let b = \\\\\"b\\\\\";\n  let c = \\\\\"c\\\\\";\n  let d = \\\\\"d\\\\\";\n\n  function onUpdateFn_0(..._args) {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }\n\n  $: onUpdateFn_0(...[a, b]);\n\n  function onUpdateFn_1(..._args) {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }\n\n  $: onUpdateFn_1(...[c, d]);\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<script>\n  let attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n</script>\n\n<input {...attrs} {...$$props} />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > nestedShow 1`] = `\n\"<script>\n  export let conditionA;\n  export let conditionB;\n</script>\n\n{#if conditionA}\n  {#if !conditionB}\n    <div>if condition A and condition B</div>\n  {:else}\n    <div>else-condition-B</div>\n  {/if}\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > nestedStyles 1`] = `\n\"<div class=\\\\\"div\\\\\">Hello world</div>\n\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onEvent 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n</script>\n\n<div\n  class=\\\\\"builder-embed\\\\\"\n  bind:this={elem}\n  on:initeditingbldr={(event) => {\n    elem_onInitEditingBldr(event);\n  }}\n>\n  <div>Test</div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onInit 1`] = `\n\"<script>\n  export const defaultValues = {\n    name: \\\\\"PatrickJS\\\\\",\n  };\n\n  export let name;\n\n  let name = \\\\\"\\\\\";\n  name = defaultValues.name || name;\n  console.log(\\\\\"set defaults with props\\\\\");\n</script>\n\n<div>Default name defined by parent {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onInitPlain 1`] = `\n\"<script>\n  console.log(\\\\\"onInit\\\\\");\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onMount 1`] = `\n\"<script>\n  import { onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onDestroy(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onUpdate 1`] = `\n\"<script>\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<script>\n  export let size;\n\n  let a = \\\\\"a\\\\\";\n  let b = \\\\\"b\\\\\";\n\n  function onUpdateFn_0(..._args) {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, size);\n  }\n\n  $: onUpdateFn_0(...[a, b, size]);\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<script>\n  const b = 3;\n  const foo = () => {};\n  export const a = 3;\n  export const bar = () => {};\n  export function run(value) {}\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > preserveTyping 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > propsDestructure 1`] = `\n\"<script>\n  export let type;\n\n  let name = \\\\\"Decadef20\\\\\";\n</script>\n\n<div>\n  <slot />{type}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > propsInterface 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > propsType 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<script>\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  afterUpdate(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > renderBlock 1`] = `\n\"<script>\n  import { TARGET } from \\\\\"../../constants/target.js\\\\\";\n  import { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\n  import { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\n  import { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\n  import { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\n  import { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\n  import { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\n  import { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\n  import { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\n  import BlockStyles from \\\\\"./block-styles.svelte\\\\\";\n  import { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n  import RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\n  import RenderComponent from \\\\\"./render-component.svelte\\\\\";\n  import RenderRepeatedBlock from \\\\\"./render-repeated-block.svelte\\\\\";\n\n  export let block;\n  export let context;\n\n  $: component = () => {\n    const componentName = getProcessedBlock({\n      block: block,\n      state: context.state,\n      context: context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  };\n\n  $: tag = () => {\n    return getBlockTag(useBlock());\n  };\n\n  $: useBlock = () => {\n    return repeatItemData()\n      ? block\n      : getProcessedBlock({\n          block: block,\n          state: context.state,\n          context: context.context,\n          shouldEvaluateBindings: true,\n        });\n  };\n\n  $: actions = () => {\n    return getBlockActions({\n      block: useBlock(),\n      state: context.state,\n      context: context.context,\n    });\n  };\n\n  $: attributes = () => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  };\n\n  $: shouldWrap = () => {\n    return !component?.()?.noWrap;\n  };\n\n  $: renderComponentProps = () => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  };\n\n  $: useChildren = () => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  };\n\n  $: childrenWithoutParentComponent = () => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  };\n\n  $: repeatItemData = () => {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: context.state,\n      context: context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...context,\n        state: {\n          ...context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  };\n\n  $: inheritedTextStyles = () => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  };\n\n  $: childrenContext = () => {\n    return {\n      apiKey: context.apiKey,\n      state: context.state,\n      content: context.content,\n      context: context.context,\n      registeredComponents: context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  };\n\n  $: renderComponentTag = () => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  };\n</script>\n\n{#if shouldWrap()}\n  {#if isEmptyHtmlElement(tag())}\n    <svelte:component this={tag()} {...attributes()} {...actions()} />\n  {/if}\n\n  {#if !isEmptyHtmlElement(tag()) && repeatItemData()}\n    {#each repeatItemData() as data, index (index)}\n      <RenderRepeatedBlock repeatContext={data.context} block={data.block} />\n    {/each}\n  {/if}\n\n  {#if !isEmptyHtmlElement(tag()) && !repeatItemData()}\n    <svelte:component this={tag()} {...attributes()} {...actions()}\n      ><svelte:component\n        this={renderComponentTag()}\n        {...renderComponentProps()}\n      />\n      {#each childrenWithoutParentComponent() as child (\\\\\"render-block-\\\\\" + child.id)}\n        <svelte:self block={child} context={childrenContext()} />\n      {/each}\n\n      {#each childrenWithoutParentComponent() as child (\\\\\"block-style-\\\\\" + child.id)}\n        <BlockStyles block={child} context={childrenContext()} />\n      {/each}\n    </svelte:component>\n  {/if}\n{:else}\n  <svelte:component this={renderComponentTag()} {...renderComponentProps()} />\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > renderContentExample 1`] = `\n\"<script>\n  import { onMount, setContext } from \\\\\"svelte\\\\\";\n\n  import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n  import {\n    dispatchNewContentToVisualEditor,\n    sendComponentsToVisualEditor,\n    trackClick,\n  } from \\\\\"@dummy/injection-js\\\\\";\n  import RenderBlocks from \\\\\"@dummy/RenderBlocks.svelte\\\\\";\n\n  export let customComponents;\n  export let content;\n\n  onMount(() => {\n    sendComponentsToVisualEditor(customComponents);\n  });\n\n  function onUpdateFn_0(..._args) {\n    dispatchNewContentToVisualEditor(content);\n  }\n\n  $: onUpdateFn_0(...[content]);\n\n  setContext(BuilderContext.key, {\n    get content() {\n      return 3;\n    },\n\n    get registeredComponents() {\n      return 4;\n    },\n  });\n</script>\n\n<div\n  class=\\\\\"div\\\\\"\n  on:click={(event) => {\n    trackClick(content.id);\n  }}\n>\n  <RenderBlocks blocks={content.blocks} />\n</div>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<script>\n  export let link;\n  export let attributes;\n  export let openLinkInNewTab;\n  export let text;\n</script>\n\n{#if link}\n  <a\n    {...attributes}\n    href={link}\n    target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n  >\n{/if}\n\n{#if !link}\n  <button type=\\\\\"button\\\\\" {...attributes}>{text}</button>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > rootShow 1`] = `\n\"<script>\n  export let foo;\n</script>\n\n{#if foo === \\\\\"bar\\\\\"}\n  <div>Bar</div>\n{:else}\n  <div>Foo</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > self-referencing component 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>\n  {name}\n  {#if name === \\\\\"Batman\\\\\"}\n    <svelte:self name=\\\\\"Bruce Wayne\\\\\" />\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>\n  {name}<slot />\n  {#if name === \\\\\"Batman\\\\\"}\n    <svelte:self name=\\\\\"Bruce\\\\\"><div>Wayne</div></svelte:self>\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > setState 1`] = `\n\"<script>\n  import { writable } from \\\\\"svelte/store\\\\\";\n\n  function someFn() {\n    $n[0] = \\\\\"123\\\\\";\n  }\n\n  let n = writable([\\\\\"123\\\\\"]);\n</script>\n\n<div>\n  <button\n    on:click={(event) => {\n      someFn();\n    }}>Click me</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > showExpressions 1`] = `\n\"<script>\n  export let conditionA;\n  export let conditionB;\n  export let conditionC;\n</script>\n\n<div>\n  {#if conditionA}\n    Content0\n  {:else}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentA\n  {/if}\n  {#if conditionA}{:else}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentB\n  {:else}\n    {undefined}\n  {/if}\n  {#if conditionA}\n    {undefined}\n  {:else}\n    ContentB\n  {/if}\n  {#if conditionA}\n    ContentC\n  {/if}\n  {#if conditionA}{:else}\n    ContentC\n  {/if}\n  {#if conditionA}\n    ContentD\n  {/if}\n  {#if conditionA}{:else}\n    ContentD\n  {/if}\n  {#if conditionA}\n    ContentE\n  {:else}\n    hello\n  {/if}\n  {#if conditionA}\n    hello\n  {:else}\n    ContentE\n  {/if}\n  {#if conditionA}\n    ContentF\n  {:else}\n    123\n  {/if}\n  {#if conditionA}\n    123\n  {:else}\n    ContentF\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    4mb\n  {:else if conditionB === \\\\\"Complete\\\\\"}\n    20mb\n  {:else}\n    9mb\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    {#if conditionB === \\\\\"Complete\\\\\"}\n      20mb\n    {:else}\n      9mb\n    {/if}\n  {:else}\n    4mb\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    {#if conditionB === \\\\\"Complete\\\\\"}\n      <div>complete</div>\n    {:else}\n      9mb\n    {/if}\n  {:else}\n    {#if conditionC === \\\\\"Complete\\\\\"}\n      dff\n    {:else}\n      <div>complete else</div>\n    {/if}\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > showWithFor 1`] = `\n\"<script>\n  export let conditionA;\n  export let items;\n</script>\n\n{#if conditionA}\n  {#each items as item, idx (idx)}\n    <div>{item}</div>\n  {/each}\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<script>\n  export let conditionA;\n</script>\n\n<div>\n  {#if conditionA}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentB\n  {:else}\n    {undefined}\n  {/if}\n  {#if conditionA}\n    ContentC\n  {/if}\n  {#if conditionA}\n    ContentD\n  {/if}\n  {#if conditionA}\n    ContentE\n  {:else}\n    hello\n  {/if}\n  {#if conditionA}\n    ContentF\n  {:else}\n    123\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > showWithRootText 1`] = `\n\"<script>\n  export let conditionA;\n</script>\n\n{#if conditionA}\n  ContentA\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<script>\n  export let id;\n  export let foo;\n\n  function onUpdateFn_0(..._args) {\n    console.log(\\\\\"props.id changed\\\\\", id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", foo.value.bar.baz);\n  }\n\n  $: onUpdateFn_0(...[id, foo.value.bar.baz]);\n</script>\n\n<div class=\\\\\"test div\\\\\">{id}{foo.value.bar.baz}</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > spreadAttrs 1`] = `\"<input {...attrs} />\"`;\n\nexports[`Svelte > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<script>\n  export let nested;\n</script>\n\n<input {...nested} />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > spreadProps 1`] = `\"<input {...$$props} />\"`;\n\nexports[`Svelte > jsx > Javascript Test > store-async-function 1`] = `\n\"<script>\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > string-literal-store 1`] = `\n\"<script>\n  let foo = 123;\n</script>\n\n<div>{foo}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<script>\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<div\n  style={stringifyStyles({\n    width: \\\\\"100%\\\\\",\n  })}\n  class=\\\\\"builder-column div\\\\\"\n/>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<script>\n  export let attributes;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<div\n  style={stringifyStyles(attributes.style)}\n  class={attributes.classfdsa + \\\\\" div\\\\\"}\n/>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > subComponent 1`] = `\n\"<script>\n  import Foo from \\\\\"./foo-sub-component.svelte\\\\\";\n</script>\n\n<Foo />\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > svgComponent 1`] = `\n\"<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n  width={42}\n  height={42}\n  ><defs\n    ><filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\"\n      ><feFlood result=\\\\\"BackgroundImageFix\\\\\" /><feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      /><feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation={7}\n      /></filter\n    ></defs\n  ></svg\n>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > typeDependency 1`] = `\n\"<script>\n  export let foo;\n</script>\n\n<div>{foo}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<script>\n  export let name;\n</script>\n\n<div>Hello {name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<script>\n  let _name = \\\\\"test\\\\\";\n</script>\n\n<div>Hello {_name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<script>\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n  $: test = () => {\n    return \\\\\"test\\\\\";\n  };\n\n  let name = \\\\\"test\\\\\";\n</script>\n\n<div>Hello {name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > use-style 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\"> Button </button>\n\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<button type=\\\\\"button\\\\\">Button</button>\n\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > useTarget 1`] = `\n\"<script>\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  $: name = () => {\n    const prefix = \\\\\"s\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  };\n\n  let lastName = \\\\\"bar\\\\\";\n  let foo = \\\\\"bar\\\\\";\n\n  onMount(() => {\n    console.log(foo);\n    foo = \\\\\"bar\\\\\";\n  });\n</script>\n\n<div>{name()}</div>\"\n`;\n\nexports[`Svelte > jsx > Javascript Test > webComponent 1`] = `\n\"<script>\n  import { register } from \\\\\"swiper/element/bundle\\\\\";\n\n  register();\n</script>\n\n<svelte:component\n  this={swiper - container}\n  slides-per-view=\\\\\"3\\\\\"\n  navigation=\\\\\"true\\\\\"\n  pagination=\\\\\"true\\\\\"\n  ><svelte:component this={swiper - slide}>Slide 1</svelte:component\n  ><svelte:component this={swiper - slide}>Slide 2</svelte:component\n  ><svelte:component this={swiper - slide}>Slide 3</svelte:component\n  ></svelte:component\n>\"\n`;\n\nexports[`Svelte > jsx > Remove Internal mitosis package 1`] = `\n\"<script>\n  let name = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Advanced 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n</script>\n\n<main>\n  {#each names as person, i}\n    <div>{i}: {person}</div>\n  {/each}\n\n  {#each names as person}\n    <span>{person}</span>\n  {/each}\n\n  {#each names as item}\n    <br />\n  {/each}\n\n  {#each Array.from({ length: 10 }) as _, ee}\n    <pre>{ee}</pre>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as item}\n    <p>{index}</p>\n  {/each}\n\n  {#each names as person, index}\n    <span>{person}{index}</span>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as person, count}\n    <span>{person}{count}</span>\n  {/each}\n\n  {#each names as person, i}\n    <span>{person}{i}</span>\n  {/each}\n\n  {#each Array.from({ length: 10 }) as person, index}\n    <span>{person}{index}</span>\n  {/each}\n</main>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    showInput: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let showInput: Props[\\\\\"showInput\\\\\"];\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  let name = \\\\\"PatrickJS\\\\\";\n\n  function onUpdateFn_0(..._args: any[]) {\n    console.log(\\\\\"Received an update\\\\\");\n  }\n\n  $: onUpdateFn_0(...[inputRef, inputNoArgRef]);\n</script>\n\n<div>\n  {#if showInput}\n    <input\n      class=\\\\\"input\\\\\"\n      bind:this={inputRef}\n      on:blur={(event) => {\n        onBlur();\n      }}\n      bind:value={name}\n    />\n    <label for=\\\\\"cars\\\\\" bind:this={inputNoArgRef}> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\"\n      ><option value=\\\\\"supra\\\\\">GR Supra</option><option value=\\\\\"86\\\\\">GR 86</option\n      ></select\n    >\n  {/if}\n  Hello\n  {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface MyBasicComponentProps {\n    id: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export const DEFAULT_VALUES = {\n    name: \\\\\"Steve\\\\\",\n  };\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  let name = \\\\\"Steve\\\\\";\n  let age = 1;\n  let sports = [\\\\\"\\\\\"];\n</script>\n\n<div class=\\\\\"test div\\\\\">\n  <input\n    value={DEFAULT_VALUES.name || name}\n    on:change={(myEvent) => {\n      name = myEvent.target.value;\n    }}\n  />\n  Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic 2`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n</script>\n\n<div>\n  {#each names as person}\n    {#if person === name}\n      <input\n        value={name}\n        on:change={(event) => {\n          name = event.target.value + \\\\\" and \\\\\" + person;\n        }}\n      />\n\n      Hello\n      {person}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    {/if}\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic Context 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { getContext, onMount, setContext } from \\\\\"svelte\\\\\";\n\n  import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n  let myService = getContext(MyService.key);\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  let name = \\\\\"PatrickJS\\\\\";\n  const hi = myService.method(\\\\\"hi\\\\\");\n  console.log(hi);\n\n  onMount(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  });\n\n  setContext(Injector.key, createInjector());\n</script>\n\n<div>\n  {myService.method(\\\\\"hello\\\\\") + name}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n  <input\n    on:change={(event) => {\n      onChange();\n    }}\n  />\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    hi: string;\n    bye: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let bye: Props[\\\\\"bye\\\\\"];\n  export let hi: Props[\\\\\"hi\\\\\"];\n\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n  name = \\\\\"PatrickJS onInit\\\\\" + hi;\n\n  onMount(() => {\n    name = \\\\\"PatrickJS onMount\\\\\" + bye;\n  });\n</script>\n\n<div>Hello {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let onMessageChange;\n  export let onEvent;\n  export let message;\n\n  let name = \\\\\"PatrickJS\\\\\";\n\n  onMount(() => {\n    onMessageChange(name);\n    onEvent(message);\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n          <script lang='ts'>\n  import { onMount } from 'svelte'\n\n\n\n\n\n\n\n\n\n  export let onMessageChange;\nexport let onEvent;\nexport let message;\n\n\n\n\n\n\n\n\n  let name = 'PatrickJS';\n\n\n  onMount(() => { onMessageChange(name);\nonEvent(message); });\n\n\n\n\n\n\n</script>\n\n<div ></div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" spellcheck={true} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    children: any;\n    type: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n  export let type: Props[\\\\\"type\\\\\"];\n</script>\n\n<div>\n  {#if $$slots.default}\n    <slot />\n    {type}\n  {/if}<MyBooleanAttributeComponent toggle={true} /><MyBooleanAttributeComponent\n    toggle={true}\n  /><MyBooleanAttributeComponent list={null} />\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\n  import MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\n  import MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  let name = \\\\\"Steve\\\\\";\n  let dev = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div>\n  <MyBasicComponent id={dev} />\n  <div>\n    <MyBasicOnMountUpdateComponent\n      hi={name}\n      bye={dev}\n    /><MyBasicOutputsComponent\n      message=\\\\\"Test\\\\\"\n      onMessageChange={(name) => (name = name)}\n      onEvent={(event) => log(\\\\\"Test\\\\\")}\n    />\n  </div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicFor 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  let name = \\\\\"PatrickJS\\\\\";\n  let names = [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"];\n\n  onMount(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  });\n</script>\n\n<div>\n  {#each names as person}\n    <input\n      value={name}\n      on:change={(event) => {\n        name = event.target.value + \\\\\" and \\\\\" + person;\n      }}\n    />\n\n    Hello\n    {person}\n    ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicRef 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    showInput: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let showInput: Props[\\\\\"showInput\\\\\"];\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  let inputRef;\n  let inputNoArgRef;\n\n  let name = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div>\n  {#if showInput}\n    <input\n      class=\\\\\"input\\\\\"\n      bind:this={inputRef}\n      on:blur={(event) => {\n        onBlur();\n      }}\n      bind:value={name}\n    />\n    <label for=\\\\\"cars\\\\\" bind:this={inputNoArgRef}> Choose a car: </label>\n    <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\"\n      ><option value=\\\\\"supra\\\\\">GR Supra</option><option value=\\\\\"86\\\\\">GR 86</option\n      ></select\n    >\n  {/if}\n  Hello\n  {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    showInput: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  }\n</script>\n\n<div>\n  <button\n    on:click={async (evt) => {\n      await handlerClick(evt);\n    }}>Click</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    showInput: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export function usePrevious<T>(value: T) {\n    // The ref object is a generic container whose current property is mutable ...\n    // ... and can hold any value, similar to an instance property on a class\n    let ref = useRef<T>(null); // Store current value in ref\n\n    onUpdate(() => {\n      ref = value;\n    }, [value]); // Only re-run if value changes\n    // Return previous value (happens before update in useEffect above)\n\n    return ref;\n  }\n\n  let count = 0;\n\n  function onUpdateFn_0(..._args: any[]) {\n    prevCount = count;\n  }\n\n  $: onUpdateFn_0(...[count]);\n</script>\n\n<div>\n  <h1>\n    Now: {count}, before: {prevCount}\n  </h1>\n  <button\n    on:click={(event) => {\n      count += 1;\n    }}>Increment</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Button 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    attributes?: any;\n    text?: string;\n    link?: string;\n    openLinkInNewTab?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let link: ButtonProps[\\\\\"link\\\\\"] = undefined;\n  export let attributes: ButtonProps[\\\\\"attributes\\\\\"] = undefined;\n  export let openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] = undefined;\n  export let text: ButtonProps[\\\\\"text\\\\\"] = undefined;\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button type=\\\\\"button\\\\\" {...attributes}>{text}</button>\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Columns 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Column = {\n    content: any; // TODO: Implement this when support for dynamic CSS lands\n\n    width?: number;\n  };\n\n  export interface ColumnProps {\n    columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n    space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n    stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n    reverseColumnsWhenStacked?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let columns: ColumnProps[\\\\\"columns\\\\\"] = undefined;\n  export let space: ColumnProps[\\\\\"space\\\\\"] = undefined;\n\n  function getColumns() {\n    return columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof space === \\\\\"number\\\\\" ? space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n</script>\n\n<div class=\\\\\"builder-columns div\\\\\">\n  {#each columns as column, index}\n    <div class=\\\\\"builder-column div-2\\\\\">{column.content}{index}</div>\n  {/each}\n</div>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n    line-height: normal;\n  }\n  @media (max-width: 999px) {\n    .div {\n      flex-direction: row;\n    }\n  }\n  @media (max-width: 639px) {\n    .div {\n      flex-direction: row-reverse;\n    }\n  }\n  .div-2 {\n    flex-grow: 1;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string | JSX.Element;\n    slotTesting: JSX.Element;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n</script>\n\n<div>\n  <slot name=\\\\\"testing\\\\\" />\n  <div><hr /></div>\n  <div><slot /></div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string | JSX.Element;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n  export let attributes: Props[\\\\\"attributes\\\\\"];\n  export let content: Props[\\\\\"content\\\\\"] = \\\\\"\\\\\";\n\n  function show() {\n    $$slots.content ? 1 : \\\\\"\\\\\";\n  }\n  $: cls = () => {\n    return $$slots.content && $$slots.default ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  };\n\n  let name = \\\\\"king\\\\\";\n  let showContent = false;\n</script>\n\n{#if $$slots.reference}\n  <div\n    name={$$slots.content ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n    title={$$slots.content ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n    {...attributes}\n    on:click={(event) => {\n      show();\n    }}\n    class={cls()}\n  >\n    {#if showContent && $$slots.content}\n      <slot name=\\\\\"content\\\\\">{content}</slot>\n    {/if}\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > CustomCode 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface CustomCodeProps {\n    code: string;\n    replaceNodes?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let replaceNodes: CustomCodeProps[\\\\\"replaceNodes\\\\\"] = undefined;\n  export let code: CustomCodeProps[\\\\\"code\\\\\"];\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  let scriptsInserted = [];\n  let scriptsRun = [];\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n</script>\n\n<div\n  bind:this={elem}\n  class={\\\\\"builder-custom-code\\\\\" + (replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")}\n>\n  {@html code}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Embed 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface CustomCodeProps {\n    code: string;\n    replaceNodes?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  export let replaceNodes: CustomCodeProps[\\\\\"replaceNodes\\\\\"] = undefined;\n  export let code: CustomCodeProps[\\\\\"code\\\\\"];\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  let elem;\n\n  let scriptsInserted = [];\n  let scriptsRun = [];\n\n  onMount(() => {\n    findAndRunScripts();\n  });\n</script>\n\n<div\n  bind:this={elem}\n  class={\\\\\"builder-custom-code\\\\\" + (replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")}\n>\n  {@html code}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Form 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface FormProps {\n    attributes?: any;\n    name?: string;\n    action?: string;\n    validate?: boolean;\n    method?: string;\n    builderBlock?: BuilderElement;\n    sendSubmissionsTo?: string;\n    sendSubmissionsToEmail?: string;\n    sendWithJs?: boolean;\n    contentType?: string;\n    customHeaders?: {\n      [key: string]: string;\n    };\n    successUrl?: string;\n    previewState?: FormState;\n    successMessage?: BuilderElement[];\n    errorMessage?: BuilderElement[];\n    sendingMessage?: BuilderElement[];\n    resetFormOnSubmit?: boolean;\n    errorMessagePath?: string;\n  }\n\n  export type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\n  import {\n    BuilderBlock as BuilderBlockComponent,\n    BuilderBlocks,\n    get,\n    set,\n  } from \\\\\"@fake\\\\\";\n\n  export let previewState: FormProps[\\\\\"previewState\\\\\"] = undefined;\n  export let sendWithJs: FormProps[\\\\\"sendWithJs\\\\\"] = undefined;\n  export let sendSubmissionsTo: FormProps[\\\\\"sendSubmissionsTo\\\\\"] = undefined;\n  export let action: FormProps[\\\\\"action\\\\\"] = undefined;\n  export let customHeaders: FormProps[\\\\\"customHeaders\\\\\"] = undefined;\n  export let contentType: FormProps[\\\\\"contentType\\\\\"] = undefined;\n  export let sendSubmissionsToEmail: FormProps[\\\\\"sendSubmissionsToEmail\\\\\"] =\n    undefined;\n  export let name: FormProps[\\\\\"name\\\\\"] = undefined;\n  export let method: FormProps[\\\\\"method\\\\\"] = undefined;\n  export let errorMessagePath: FormProps[\\\\\"errorMessagePath\\\\\"] = undefined;\n  export let resetFormOnSubmit: FormProps[\\\\\"resetFormOnSubmit\\\\\"] = undefined;\n  export let successUrl: FormProps[\\\\\"successUrl\\\\\"] = undefined;\n  export let validate: FormProps[\\\\\"validate\\\\\"] = undefined;\n  export let attributes: FormProps[\\\\\"attributes\\\\\"] = undefined;\n  export let builderBlock: FormProps[\\\\\"builderBlock\\\\\"] = undefined;\n  export let errorMessage: FormProps[\\\\\"errorMessage\\\\\"] = undefined;\n  export let sendingMessage: FormProps[\\\\\"sendingMessage\\\\\"] = undefined;\n  export let successMessage: FormProps[\\\\\"successMessage\\\\\"] = undefined;\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = sendWithJs || sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(action || sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = contentType;\n\n      if (sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */\n          !(sendWithJs && action?.includes(\\\\\"zapier.com\\\\\"))\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n        detail: {\n          body,\n        },\n      });\n\n      if (formRef) {\n        formRef.dispatchEvent(presubmitEvent);\n\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n\n      formState = \\\\\"sending\\\\\";\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(name || \\\\\"\\\\\")}\\`;\n      fetch(\n        sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : action!,\n        /* TODO: throw error if no action URL */\n        {\n          body,\n          headers,\n          method: method || \\\\\"post\\\\\",\n        }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n\n          if (!res.ok && errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */\n            let message = get(body, errorMessagePath);\n\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                message = JSON.stringify(message);\n              }\n\n              formErrorMessage = message;\n            }\n          }\n\n          responseData = body;\n          formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: {\n                res,\n                body,\n              },\n            });\n\n            if (formRef) {\n              formRef.dispatchEvent(submitSuccessEvent);\n\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */\n\n              if (resetFormOnSubmit !== false) {\n                formRef.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */\n\n            if (successUrl) {\n              if (formRef) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: {\n                    url: successUrl,\n                  },\n                });\n                formRef.dispatchEvent(event);\n\n                if (!event.defaultPrevented) {\n                  location.href = successUrl;\n                }\n              } else {\n                location.href = successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: {\n              error: err,\n            },\n          });\n\n          if (formRef) {\n            formRef.dispatchEvent(submitErrorEvent);\n\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n\n          responseData = err;\n          formState = \\\\\"error\\\\\";\n        }\n      );\n    }\n  }\n  $: submissionState = () => {\n    return (Builder.isEditing && previewState) || formState;\n  };\n\n  let formRef;\n\n  let formState = \\\\\"unsubmitted\\\\\";\n  let responseData = null;\n  let formErrorMessage = \\\\\"\\\\\";\n</script>\n\n<form\n  {validate}\n  bind:this={formRef}\n  action={!sendWithJs && action}\n  {method}\n  {name}\n  on:submit={(event) => {\n    onSubmit(event);\n  }}\n  {...attributes}\n>\n  {#if builderBlock && builderBlock.children}\n    {#each builderBlock?.children as block, index (block.id)}\n      <BuilderBlockComponent {block} {index} />\n    {/each}\n  {/if}\n  {#if submissionState() === \\\\\"error\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={errorMessage} />\n  {/if}\n  {#if submissionState() === \\\\\"sending\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"sendingMessage\\\\\" blocks={sendingMessage} />\n  {/if}\n  {#if submissionState() === \\\\\"error\\\\\" && responseData}\n    <pre class=\\\\\"builder-form-error-text pre\\\\\">{JSON.stringify(\n        responseData,\n        null,\n        2\n      )}</pre>\n  {/if}\n  {#if submissionState() === \\\\\"success\\\\\"}\n    <BuilderBlocks dataPath=\\\\\"successMessage\\\\\" blocks={successMessage} />\n  {/if}\n</form>\n\n<style>\n  .pre {\n    padding: 10px;\n    color: red;\n    text-align: center;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Image 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  // TODO: AMP Support?\n  export interface ImageProps {\n    _class?: string;\n    image: string;\n    sizes?: string;\n    lazy?: boolean;\n    height?: number;\n    width?: number;\n    altText?: string;\n    backgroundSize?: string;\n    backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n    srcset?: string; // TODO: Implement support for custom aspect ratios\n\n    aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n    children?: any;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  export let lazy: ImageProps[\\\\\"lazy\\\\\"] = undefined;\n  export let altText: ImageProps[\\\\\"altText\\\\\"] = undefined;\n  export let _class: ImageProps[\\\\\"_class\\\\\"] = undefined;\n  export let image: ImageProps[\\\\\"image\\\\\"];\n  export let srcset: ImageProps[\\\\\"srcset\\\\\"] = undefined;\n  export let sizes: ImageProps[\\\\\"sizes\\\\\"] = undefined;\n\n  function setLoaded() {\n    imageLoaded = true;\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  let pictureRef;\n\n  let scrollListener = null;\n  let imageLoaded = false;\n  let load = false;\n\n  onMount(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            load = true;\n            scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onDestroy(() => {\n    if (scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n    }\n  });\n</script>\n\n<div>\n  <picture bind:this={pictureRef}>\n    {#if !useLazyLoading() || load}\n      <img\n        alt={altText}\n        aria-role={altText ? \\\\\"presentation\\\\\" : undefined}\n        class={\\\\\"builder-image\\\\\" + (_class ? \\\\\" \\\\\" + _class : \\\\\"\\\\\") + \\\\\" img\\\\\"}\n        src={image}\n        on:load={(event) => {\n          setLoaded();\n        }}\n        {srcset}\n        {sizes}\n      />\n    {/if}<source {srcset} /></picture\n  ><slot />\n</div>\n\n<style>\n  .img {\n    opacity: 1;\n    transition: opacity 0.2s ease-in-out;\n    object-fit: cover;\n    object-position: center;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Image State 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let canShow = true;\n  let images = [\\\\\"http://example.com/qwik.png\\\\\"];\n</script>\n\n<div>\n  {#each images as item, itemIndex}\n    {#key itemIndex}\n      <img class=\\\\\"custom-class\\\\\" src={item} />\n    {/key}\n  {/each}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Img 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ImgProps {\n    attributes?: any;\n    imgSrc?: string;\n    altText?: string;\n    backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n    backgroundPosition?:\n      | \\\\\"center\\\\\"\n      | \\\\\"top\\\\\"\n      | \\\\\"left\\\\\"\n      | \\\\\"right\\\\\"\n      | \\\\\"bottom\\\\\"\n      | \\\\\"top left\\\\\"\n      | \\\\\"top right\\\\\"\n      | \\\\\"bottom left\\\\\"\n      | \\\\\"bottom right\\\\\";\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let backgroundSize: ImgProps[\\\\\"backgroundSize\\\\\"] = undefined;\n  export let backgroundPosition: ImgProps[\\\\\"backgroundPosition\\\\\"] = undefined;\n  export let attributes: ImgProps[\\\\\"attributes\\\\\"] = undefined;\n  export let imgSrc: ImgProps[\\\\\"imgSrc\\\\\"] = undefined;\n  export let altText: ImgProps[\\\\\"altText\\\\\"] = undefined;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n{#key (Builder.isEditing && imgSrc) || \\\\\"default-key\\\\\"}\n  <img\n    style={stringifyStyles({\n      objectFit: backgroundSize || \\\\\"cover\\\\\",\n      objectPosition: backgroundPosition || \\\\\"center\\\\\",\n    })}\n    {...attributes}\n    alt={altText}\n    src={imgSrc}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Input 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface FormInputProps {\n    type?: string;\n    attributes?: any;\n    name?: string;\n    value?: string;\n    placeholder?: string;\n    defaultValue?: string;\n    required?: boolean;\n    onChange?: (value: string) => void;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let attributes: FormInputProps[\\\\\"attributes\\\\\"] = undefined;\n  export let defaultValue: FormInputProps[\\\\\"defaultValue\\\\\"] = undefined;\n  export let placeholder: FormInputProps[\\\\\"placeholder\\\\\"] = undefined;\n  export let type: FormInputProps[\\\\\"type\\\\\"] = undefined;\n  export let name: FormInputProps[\\\\\"name\\\\\"] = undefined;\n  export let value: FormInputProps[\\\\\"value\\\\\"] = undefined;\n  export let required: FormInputProps[\\\\\"required\\\\\"] = undefined;\n  export let onChange: FormInputProps[\\\\\"onChange\\\\\"] = undefined;\n</script>\n\n{#key Builder.isEditing && defaultValue ? defaultValue : \\\\\"default-key\\\\\"}\n  <input\n    {...attributes}\n    {placeholder}\n    {type}\n    {name}\n    {value}\n    {defaultValue}\n    {required}\n    on:change={(event) => {\n      onChange?.(event.target.value);\n    }}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > InputParent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import FormInputComponent from \\\\\"./input.raw\\\\\";\n\n  function handleChange(value: string) {\n    console.log(value);\n  }\n</script>\n\n<FormInputComponent\n  name=\\\\\"kingzez\\\\\"\n  type=\\\\\"text\\\\\"\n  onChange={(value) => handleChange(value)}\n/>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > NestedStore 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type MyStore = {\n    _id?: string;\n    _messageId?: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  let _id = \\\\\"abc\\\\\";\n\n  let _messageId = _id + \\\\\"-message\\\\\";\n</script>\n\n<div id={_id}>\n  Test\n  <p id={_messageId}>Message</p>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > RawText 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface RawTextProps {\n    attributes?: any;\n    text?: string; // builderBlock?: any;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: RawTextProps[\\\\\"attributes\\\\\"] = undefined;\n  export let text: RawTextProps[\\\\\"text\\\\\"] = undefined;\n</script>\n\n<span class={attributes?.class || attributes?.className}\n  >{@html text || \\\\\"\\\\\"}</span\n>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Section 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface SectionProps {\n    maxWidth?: number;\n    attributes?: any;\n    children?: any;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: SectionProps[\\\\\"attributes\\\\\"] = undefined;\n  export let maxWidth: SectionProps[\\\\\"maxWidth\\\\\"] = undefined;\n\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<section\n  style={stringifyStyles(\n    maxWidth && typeof maxWidth === \\\\\"number\\\\\"\n      ? {\n          maxWidth: maxWidth,\n        }\n      : undefined\n  )}\n  {...attributes}\n>\n  <slot />\n</section>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Section 2`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface SectionProps {\n    maxWidth?: number;\n    attributes?: any;\n    children?: any;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: SectionProps[\\\\\"attributes\\\\\"] = undefined;\n\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n\n  let max = 42;\n  let items = [42];\n</script>\n\n{#if max}\n  {#each items as item}\n    <section\n      style={stringifyStyles({\n        maxWidth: item + max,\n      })}\n      {...attributes}\n    >\n      <slot />\n    </section>\n  {/each}\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Select 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface FormSelectProps {\n    options?: {\n      name?: string;\n      value: string;\n    }[];\n    attributes?: any;\n    name?: string;\n    value?: string;\n    defaultValue?: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let attributes: FormSelectProps[\\\\\"attributes\\\\\"] = undefined;\n  export let value: FormSelectProps[\\\\\"value\\\\\"] = undefined;\n  export let defaultValue: FormSelectProps[\\\\\"defaultValue\\\\\"] = undefined;\n  export let name: FormSelectProps[\\\\\"name\\\\\"] = undefined;\n  export let options: FormSelectProps[\\\\\"options\\\\\"] = undefined;\n</script>\n\n{#key Builder.isEditing && defaultValue ? defaultValue : \\\\\"default-key\\\\\"}\n  <select {...attributes} {value} {defaultValue} {name}>\n    {#each options as option, index}\n      <option value={option.value} data-index={index}\n        >{option.name || option.value}</option\n      >\n    {/each}\n  </select>\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > SlotDefault 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div><slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot></div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > SlotHtml 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n</script>\n\n<div>\n  <ContentSlotCode>\n    <span #testing>\n      <div>Hello</div>\n    </span>\n  </ContentSlotCode>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > SlotJsx 1`] = `\n\"<script context='module' lang='ts'>\n      type Props = {\n[key: string]: string;\n}\n\n    </script>\n    \n\n    \n<script lang='ts'>\n\n\n\n\nimport  ContentSlotCode from './content-slot-jsx.raw';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ><ContentSlotCode  slotTesting={<div>Hello</div>} ></ContentSlotCode></div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > SlotNamed 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div>\n  <slot name=\\\\\"my-awesome-slot\\\\\" /><slot name=\\\\\"top\\\\\" /><slot name=\\\\\"left\\\\\"\n    >Default left</slot\n  ><slot>Default Child</slot>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Stamped.io 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type SmileReviewsProps = {\n    productId: string;\n    apiKey: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n  export let apiKey: SmileReviewsProps[\\\\\"apiKey\\\\\"];\n  export let productId: SmileReviewsProps[\\\\\"productId\\\\\"];\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  let reviews = [];\n  let name = \\\\\"test\\\\\";\n  let showReviewPrompt = false;\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        reviews = data.data;\n      });\n  });\n</script>\n\n<div data-user={name}>\n  <button\n    on:click={(event) => {\n      showReviewPrompt = true;\n    }}>Write a review</button\n  >\n  {#if showReviewPrompt || \\\\\"asdf\\\\\"}\n    <input placeholder=\\\\\"Email\\\\\" />\n    <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n    <textarea placeholder=\\\\\"How was your experience?\\\\\" class=\\\\\"textarea\\\\\" />\n    <button\n      class=\\\\\"button\\\\\"\n      on:click={(ev) => {\n        ev.preventDefault();\n        showReviewPrompt = false;\n      }}\n    >\n      Submit\n    </button>\n  {/if}\n  {#each reviews as review, index (review.id)}\n    <div class=\\\\\"review\\\\\">\n      <img class=\\\\\"img\\\\\" src={review.avatar} />\n      <div class={showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n        <div>N: {index}</div>\n        <div>{review.author}</div>\n        <div>{review.reviewMessage}</div>\n      </div>\n    </div>\n  {/each}\n</div>\n\n<style>\n  .input {\n    display: block;\n  }\n  .textarea {\n    display: block;\n  }\n  .button {\n    display: block;\n  }\n  .review {\n    margin: 10px;\n    padding: 10px;\n    background: white;\n    display: flex;\n    border-radius: 5px;\n    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n    -webkit-font-smoothing: antialiased;\n  }\n  .img {\n    height: 30px;\n    width: 30px;\n    margin-right: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > StoreComment 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function bar() {}\n\n  let foo = true;\n</script>\n\n{foo}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function foo(errors) {\n    return errors;\n  }\n\n  let errors = {};\n</script>\n\n{foo(errors)}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > StoreWithState 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function bar() {\n    return foo;\n  }\n\n  let foo = false;\n</script>\n\n{bar()}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Submit 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    attributes?: any;\n    text?: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: ButtonProps[\\\\\"attributes\\\\\"] = undefined;\n  export let text: ButtonProps[\\\\\"text\\\\\"] = undefined;\n</script>\n\n<button type=\\\\\"submit\\\\\" {...attributes}>{text}</button>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Text 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface TextProps {\n    attributes?: any;\n    rtlMode: boolean;\n    text?: string;\n    content?: string;\n    builderBlock?: any;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n  export let text: TextProps[\\\\\"text\\\\\"] = undefined;\n  export let content: TextProps[\\\\\"content\\\\\"] = undefined;\n\n  let name = \\\\\"Decadef20\\\\\";\n</script>\n\n<div\n  contentEditable={allowEditingText || undefined}\n  data-name={{\n    test: name || \\\\\"any name\\\\\",\n  }}\n>\n  {@html text || content || name || '<p class=\\\\\"text-lg\\\\\">my name</p>'}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Textarea 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface TextareaProps {\n    attributes?: any;\n    name?: string;\n    value?: string;\n    defaultValue?: string;\n    placeholder?: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: TextareaProps[\\\\\"attributes\\\\\"] = undefined;\n  export let placeholder: TextareaProps[\\\\\"placeholder\\\\\"] = undefined;\n  export let name: TextareaProps[\\\\\"name\\\\\"] = undefined;\n  export let value: TextareaProps[\\\\\"value\\\\\"] = undefined;\n  export let defaultValue: TextareaProps[\\\\\"defaultValue\\\\\"] = undefined;\n</script>\n\n<textarea {...attributes} {placeholder} {name} {value} {defaultValue} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type MyProps = {\n    onChange?: (active: boolean) => void;\n  };\n\n  type MyStore = {\n    _id?: string;\n    _active?: boolean;\n    _do?: (id?: string) => void;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  export let onChange: MyProps[\\\\\"onChange\\\\\"] = undefined;\n\n  function _do(id?: string) {\n    _active = !!id;\n\n    if (onChange) {\n      onChange(_active);\n    }\n  }\n\n  let _id = \\\\\"abc\\\\\";\n  let _active = false;\n\n  afterUpdate(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n</script>\n\n<div>Test</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > Video 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface VideoProps {\n    attributes?: any;\n    video?: string;\n    autoPlay?: boolean;\n    controls?: boolean;\n    muted?: boolean;\n    loop?: boolean;\n    playsInline?: boolean;\n    aspectRatio?: number;\n    width?: number;\n    height?: number;\n    fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n    position?:\n      | \\\\\"center\\\\\"\n      | \\\\\"top\\\\\"\n      | \\\\\"left\\\\\"\n      | \\\\\"right\\\\\"\n      | \\\\\"bottom\\\\\"\n      | \\\\\"top left\\\\\"\n      | \\\\\"top right\\\\\"\n      | \\\\\"bottom left\\\\\"\n      | \\\\\"bottom right\\\\\";\n    posterImage?: string;\n    lazyLoad?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let attributes: VideoProps[\\\\\"attributes\\\\\"] = undefined;\n  export let fit: VideoProps[\\\\\"fit\\\\\"] = undefined;\n  export let position: VideoProps[\\\\\"position\\\\\"] = undefined;\n  export let video: VideoProps[\\\\\"video\\\\\"] = undefined;\n  export let posterImage: VideoProps[\\\\\"posterImage\\\\\"] = undefined;\n  export let autoPlay: VideoProps[\\\\\"autoPlay\\\\\"] = undefined;\n  export let muted: VideoProps[\\\\\"muted\\\\\"] = undefined;\n  export let controls: VideoProps[\\\\\"controls\\\\\"] = undefined;\n  export let loop: VideoProps[\\\\\"loop\\\\\"] = undefined;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n{#key video || \\\\\"no-src\\\\\"}\n  <video\n    style={stringifyStyles({\n      width: \\\\\"100%\\\\\",\n      height: \\\\\"100%\\\\\",\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    })}\n    preload=\\\\\"none\\\\\"\n    {...attributes}\n    poster={posterImage}\n    autoplay={autoPlay}\n    {muted}\n    {controls}\n    {loop}\n  />\n{/key}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function setName(value) {\n    name = value;\n  }\n\n  function updateNameWithArrowFn(value) {\n    name = value;\n  }\n\n  let name = \\\\\"steve\\\\\";\n</script>\n\n<div>Hello {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicForFragment 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let id = \\\\\"xyz\\\\\";\n</script>\n\n<div>\n  {#each [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] as option (\\`key-\\${option}\\`)}\n    <div>{option}</div>\n  {/each}\n\n  {#each [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"] as option (\\`\\${id}-\\${option}\\`)}\n    <div>{option}</div>\n  {/each}\n  <select>\n    {#each [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"] as option (\\`\\${id}-\\${option}\\`)}\n      <option value={option}>{option}</option>\n    {/each}\n  </select>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let actions;\n\n  $: TagNameGetter = () => {\n    return \\\\\"span\\\\\";\n  };\n\n  let name = \\\\\"VincentW\\\\\";\n  let TagName = \\\\\"div\\\\\";\n  let tag = \\\\\"span\\\\\";\n</script>\n\n<svelte:component this={TagNameGetter()}>\n  Hello <svelte:component this={tag}>{name}</svelte:component>\n  {#each actions as action}\n    <svelte:component this={TagName}\n      ><svelte:component this={action.icon} /><span>{action.text}</span\n      ></svelte:component\n    >\n  {/each}\n</svelte:component>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface Props {\n    showInput: boolean;\n    inputRef: HTMLInputElement;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let inputRef: Props[\\\\\"inputRef\\\\\"];\n\n  let name = \\\\\"PatrickJS\\\\\";\n</script>\n\n<div><input class=\\\\\"input\\\\\" bind:this={inputRef} bind:value={name} /></div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n          <script context='module' lang='ts'>\n      export interface Props {\nshowInput: boolean;\ninputRef: HTMLInputElement;\n}\n\n    </script>\n    \n\n    \n<script lang='ts'>\n\n\n\n\n\n\n\n\n\n\n    export let inputRef: Props['inputRef'];\n\n\n\n\n\n\n\n\n    let name = 'PatrickJS';\n\n\n\n\n\n\n\n\n\n  </script>\n\n  <div ><input  class=\\\\\"input\\\\\"  bind:this={inputRef}  bind:value={name}  /></div>\n\n  <style>\n    .input {\ncolor: red;\n}\n  </style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let name = \\\\\"PatrickJS\\\\\";\n\n  function onUpdateFn_0(..._args: any[]) {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }\n\n  $: onUpdateFn_0(...[name]);\n</script>\n\n<div>Hello! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n          <script lang='ts'>\n  import { onMount } from 'svelte'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  let buttonRef\n\n\n\n\n  onMount(() => { console.log('onMount'); });\n\n\n\n\n\n\n</script>\n\n<button  bind:this={buttonRef} >Attribute Passing</button>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n          <script lang='ts'>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  let buttonRef\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ><button  bind:this={buttonRef} >Attribute Passing</button></div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import MyComp from \\\\\"./my-component.svelte\\\\\";\n</script>\n\n<div>\n  <MyComp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </MyComp>\n  <div class=\\\\\"test2 test div\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > class + css 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > className + css 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > className 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    [key: string]: string | JSX.Element;\n    slotTesting: JSX.Element;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n  let bindings = \\\\\"a binding\\\\\";\n</script>\n\n<div>\n  <div class=\\\\\"no binding\\\\\">Without Binding</div>\n  <div class={bindings}>With binding</div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > classState 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n\n  let classState = \\\\\"testClassName\\\\\";\n  let styleState = {\n    color: \\\\\"red\\\\\",\n  };\n</script>\n\n<div style={stringifyStyles(styleState)} class={classState + \\\\\" div\\\\\"}>\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n          <script context='module' lang='ts'>\n      type Props = {\nchildren: any;\nclassName: string;\ntype: string;\n}\n\n    </script>\n    \n\n    \n<script lang='ts'>\n\n\n\n\n\n\n\n\n\n\n  export let className: Props['className'];\n\nexport let type: Props['type'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div  class={className} ><slot></slot>{type}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n          <script lang='ts'>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<div ></div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > componentWithContext 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ComponentWithContextProps {\n    content: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  import Context1 from \\\\\"@dummy/1\\\\\";\n  import Context2 from \\\\\"@dummy/2\\\\\";\n\n  export let content: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  let foo = getContext(Context1.key);\n\n  setContext(Context1.key, {\n    foo: \\\\\"bar\\\\\",\n\n    content() {\n      return content;\n    },\n  });\n  setContext(Context2.key, {\n    bar: \\\\\"baz\\\\\",\n  });\n</script>\n\n{foo.value}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ComponentWithContextProps {\n    content: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  import Context1 from \\\\\"@dummy/1\\\\\";\n  import Context2 from \\\\\"@dummy/2\\\\\";\n\n  export let content: ComponentWithContextProps[\\\\\"content\\\\\"];\n\n  let foo = getContext(Context1.key);\n\n  setContext(Context1.key, {\n    foo: \\\\\"bar\\\\\",\n\n    content() {\n      return content;\n    },\n  });\n  setContext(Context2.key, {\n    bar: \\\\\"baz\\\\\",\n  });\n</script>\n\n{foo.value}\n<div>other</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > contentState 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { setContext } from \\\\\"svelte\\\\\";\n\n  import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n  export let content;\n  export let customComponents;\n\n  setContext(BuilderContext.key, {\n    content: content,\n    registeredComponents: customComponents,\n  });\n</script>\n\n<div>setting context</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > defaultProps 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    attributes?: any;\n    text?: string;\n    buttonText?: string; // no default value\n\n    link?: string;\n    openLinkInNewTab?: boolean;\n    onClick?: () => void;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let link: ButtonProps[\\\\\"link\\\\\"] = \\\\\"https://builder.io/\\\\\";\n  export let attributes: ButtonProps[\\\\\"attributes\\\\\"] = undefined;\n  export let openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] = false;\n  export let text: ButtonProps[\\\\\"text\\\\\"] = \\\\\"default text\\\\\";\n  export let onClick: ButtonProps[\\\\\"onClick\\\\\"] = () => {\n    console.log(\\\\\"hi\\\\\");\n  };\n  export let buttonText: ButtonProps[\\\\\"buttonText\\\\\"] = undefined;\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button\n      type=\\\\\"button\\\\\"\n      {...attributes}\n      on:click={(event) => {\n        onClick();\n      }}>{buttonText}</button\n    >\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    attributes?: any;\n    text?: string;\n    link?: string;\n    openLinkInNewTab?: boolean;\n    onClick: () => void;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let link: ButtonProps[\\\\\"link\\\\\"] = \\\\\"https://builder.io/\\\\\";\n  export let attributes: ButtonProps[\\\\\"attributes\\\\\"] = undefined;\n  export let openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] = false;\n  export let text: ButtonProps[\\\\\"text\\\\\"] = \\\\\"default text\\\\\";\n  export let onClick: ButtonProps[\\\\\"onClick\\\\\"] = () => {};\n</script>\n\n<div>\n  {#if link}\n    <a\n      {...attributes}\n      href={link}\n      target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n    >\n  {/if}\n  {#if !link}\n    <button\n      type=\\\\\"button\\\\\"\n      {...attributes}\n      on:click={(event) => {\n        onClick(event);\n      }}>{text}</button\n    >\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    name: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  const DEFAULT_VALUES: Props = {\n    name: \\\\\"Sami\\\\\",\n  };\n\n  export let name: Props[\\\\\"name\\\\\"];\n</script>\n\n<div>Hello {name || DEFAULT_VALUES.name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input\n    class=\\\\\"input\\\\\"\n    on:input={(event) => {\n      name = event.target.value;\n    }}\n    bind:value={name}\n  />\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > eventProps 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n  export let onGetVoid: EventProps[\\\\\"onGetVoid\\\\\"];\n  export let onEnter: EventProps[\\\\\"onEnter\\\\\"];\n  export let onPass: EventProps[\\\\\"onPass\\\\\"];\n\n  function handleClick() {\n    if (onGetVoid) {\n      onGetVoid();\n    }\n\n    if (onEnter) {\n      console.log(onEnter());\n    }\n\n    if (onPass) {\n      onPass(\\\\\"test\\\\\");\n    }\n  }\n</script>\n\n<button\n  on:click={(event) => {\n    handleClick();\n  }}>Test</button\n>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > expressionState 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let componentRef;\n\n  let refToUse = !(componentRef instanceof Function) ? componentRef : null;\n</script>\n\n<div>{refToUse}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n          <script lang='ts'>\n\n\n\n\n\n\n\n\n\n\n  export let icon;\nexport let interactiveState;\nexport let width;\nexport let size;\nexport let label;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n</script>\n\n<button  data-icon={icon}  data-disabled={interactiveState}  data-width={width}  data-size={size} >{label}</button>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > functionProps 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface MyBasicComponentProps {\n    id: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n</script>\n\n<p\n  f={() => x}\n  f1={(x) => x}\n  f2={(x) => {}}\n  f3={function () {\n    return x;\n  }}\n  f4={function (x) {\n    return x;\n  }}\n  f5={function (x) {\n    return;\n  }}\n  f6={function () {\n    return;\n  }}\n  f7={(a, b, c) => a + b + c}\n/>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > getterState 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    foo: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let foo: ButtonProps[\\\\\"foo\\\\\"];\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n  $: foo2 = () => {\n    return foo + \\\\\"foo\\\\\";\n  };\n\n  $: bar = () => {\n    return \\\\\"bar\\\\\";\n  };\n</script>\n\n<div>\n  <p>{foo2()}</p>\n  <p>{bar()}</p>\n  <p>{baz(1)}</p>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > import types 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type RenderContentProps = {\n    options?: GetContentOptions;\n    content: BuilderContent;\n    renderContentProps: RenderBlockProps;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\n  import RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n  export let renderContentProps: RenderContentProps[\\\\\"renderContentProps\\\\\"];\n\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n</script>\n\n<RenderBlock {...getRenderContentProps(renderContentProps.block, 0)} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > layerName 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<section>\n  <div class=\\\\\"layer-name\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</section>\n\n<style>\n  .layer-name {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let a = \\\\\"a\\\\\";\n  let b = \\\\\"b\\\\\";\n  let c = \\\\\"c\\\\\";\n  let d = \\\\\"d\\\\\";\n\n  function onUpdateFn_0(..._args: any[]) {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }\n\n  $: onUpdateFn_0(...[a, b]);\n\n  function onUpdateFn_1(..._args: any[]) {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      a = \\\\\"b\\\\\";\n    }\n  }\n\n  $: onUpdateFn_1(...[c, d]);\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let attrs = {\n    hello: \\\\\"world\\\\\",\n  };\n</script>\n\n<input {...attrs} {...$$props} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > nestedShow 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Props {\n    conditionA: boolean;\n    conditionB: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let conditionA: Props[\\\\\"conditionA\\\\\"];\n  export let conditionB: Props[\\\\\"conditionB\\\\\"];\n</script>\n\n{#if conditionA}\n  {#if !conditionB}\n    <div>if condition A and condition B</div>\n  {:else}\n    <div>else-condition-B</div>\n  {/if}\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > nestedStyles 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div class=\\\\\"div\\\\\">Hello world</div>\n\n<style>\n  .div {\n    display: flex;\n    --bar: red;\n    color: var(--bar);\n  }\n  @media (max-width: env(--mobile)) {\n    .div {\n      display: block;\n    }\n  }\n  .div:hover {\n    display: flex;\n  }\n  .div:active {\n    display: inline;\n  }\n  .div .nested-selector {\n    display: grid;\n  }\n  .div .nested-selector:hover {\n    display: block;\n  }\n  .div.nested-selector:active {\n    display: inline-block;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface MyNormalizedLayerNamesComponentProps {\n    id: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n</script>\n\n<section>\n  <div>Emoji</div>\n  <div>Dashes</div>\n  <div>CamelCase</div>\n  <div>Special chars</div>\n  <div>Special chars with dashes</div>\n  <div class=\\\\\"css-0\\\\\">Single Number</div>\n  <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n  <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n  <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n  <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n  <div>Emoji</div>\n  <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n</section>\n\n<style>\n  .css-0 {\n    margin: 10px;\n  }\n  .css-123 {\n    padding: 10px;\n  }\n  .name-123 {\n    border: 1px solid;\n  }\n  .name {\n    color: red;\n  }\n  .name-789 {\n    background: blue;\n  }\n  .div {\n    background: blue;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onEvent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  let elem;\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  });\n</script>\n\n<div\n  class=\\\\\"builder-embed\\\\\"\n  bind:this={elem}\n  on:initeditingbldr={(event) => {\n    elem_onInitEditingBldr(event);\n  }}\n>\n  <div>Test</div>\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  console.log(\\\\\"onInit\\\\\");\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onInit 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    name: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export const defaultValues = {\n    name: \\\\\"PatrickJS\\\\\",\n  };\n\n  export let name: Props[\\\\\"name\\\\\"];\n\n  let name = \\\\\"\\\\\";\n  name = defaultValues.name || name;\n  console.log(\\\\\"set defaults with props\\\\\");\n</script>\n\n<div>Default name defined by parent {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onInitPlain 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  console.log(\\\\\"onInit\\\\\");\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onMount 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n\n  onDestroy(() => {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  });\n  onMount(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onUpdate 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  afterUpdate(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    size: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let size: Props[\\\\\"size\\\\\"];\n\n  let a = \\\\\"a\\\\\";\n  let b = \\\\\"b\\\\\";\n\n  function onUpdateFn_0(..._args: any[]) {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, size);\n  }\n\n  $: onUpdateFn_0(...[a, b, size]);\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Types = {\n    s: any[];\n  };\n\n  interface IPost {\n    len: number;\n  }\n\n  export interface MyBasicComponentProps {\n    id: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  const b = 3;\n  const foo = () => {};\n  export const a = 3;\n  export const bar = () => {};\n  export function run<T>(value: T) {}\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > preserveTyping 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export type A = \\\\\"test\\\\\";\n\n  export interface C {\n    n: \\\\\"test\\\\\";\n  }\n\n  type B = \\\\\"test2\\\\\";\n\n  interface D {\n    n: \\\\\"test\\\\\";\n  }\n\n  export interface MyBasicComponentProps {\n    name: string;\n    age?: number;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let name: MyBasicComponentProps[\\\\\"name\\\\\"];\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > propsDestructure 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    children: any;\n    type: string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let type: Props[\\\\\"type\\\\\"];\n\n  let name = \\\\\"Decadef20\\\\\";\n</script>\n\n<div>\n  <slot />{type}\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > propsInterface 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Person {\n    name: string;\n    age?: number;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let name: Person[\\\\\"name\\\\\"];\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > propsType 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Person = {\n    name: string;\n    age?: number;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let name: Person[\\\\\"name\\\\\"];\n</script>\n\n<div>Hello! I can run in React, Vue, Solid, or Liquid! {name}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { afterUpdate } from \\\\\"svelte\\\\\";\n\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  afterUpdate(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > renderBlock 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export type RenderBlockProps = {\n    block: BuilderBlock;\n    context: BuilderContextInterface;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { TARGET } from \\\\\"../../constants/target.js\\\\\";\n  import type {\n    BuilderContextInterface,\n    RegisteredComponent,\n  } from \\\\\"../../context/types.js\\\\\";\n  import { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\n  import { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\n  import { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\n  import { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\n  import { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\n  import { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\n  import { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\n  import { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\n  import type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\n  import type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\n  import BlockStyles from \\\\\"./block-styles.svelte\\\\\";\n  import { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\n  import RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\n  import type { RenderComponentProps } from \\\\\"./render-component.svelte\\\\\";\n  import RenderComponent from \\\\\"./render-component.svelte\\\\\";\n  import RenderRepeatedBlock from \\\\\"./render-repeated-block.svelte\\\\\";\n  import type { RepeatData } from \\\\\"./types.js\\\\\";\n\n  export let block: RenderBlockProps[\\\\\"block\\\\\"];\n  export let context: RenderBlockProps[\\\\\"context\\\\\"];\n\n  $: component = () => {\n    const componentName = getProcessedBlock({\n      block: block,\n      state: context.state,\n      context: context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  };\n\n  $: tag = () => {\n    return getBlockTag(useBlock());\n  };\n\n  $: useBlock = () => {\n    return repeatItemData()\n      ? block\n      : getProcessedBlock({\n          block: block,\n          state: context.state,\n          context: context.context,\n          shouldEvaluateBindings: true,\n        });\n  };\n\n  $: actions = () => {\n    return getBlockActions({\n      block: useBlock(),\n      state: context.state,\n      context: context.context,\n    });\n  };\n\n  $: attributes = () => {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  };\n\n  $: shouldWrap = () => {\n    return !component?.()?.noWrap;\n  };\n\n  $: renderComponentProps = () => {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  };\n\n  $: useChildren = () => {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  };\n\n  $: childrenWithoutParentComponent = () => {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  };\n\n  $: repeatItemData = () => {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: context.state,\n      context: context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...context,\n        state: {\n          ...context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  };\n\n  $: inheritedTextStyles = () => {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  };\n\n  $: childrenContext = () => {\n    return {\n      apiKey: context.apiKey,\n      state: context.state,\n      content: context.content,\n      context: context.context,\n      registeredComponents: context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  };\n\n  $: renderComponentTag = () => {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  };\n</script>\n\n{#if shouldWrap()}\n  {#if isEmptyHtmlElement(tag())}\n    <svelte:component this={tag()} {...attributes()} {...actions()} />\n  {/if}\n\n  {#if !isEmptyHtmlElement(tag()) && repeatItemData()}\n    {#each repeatItemData() as data, index (index)}\n      <RenderRepeatedBlock repeatContext={data.context} block={data.block} />\n    {/each}\n  {/if}\n\n  {#if !isEmptyHtmlElement(tag()) && !repeatItemData()}\n    <svelte:component this={tag()} {...attributes()} {...actions()}\n      ><svelte:component\n        this={renderComponentTag()}\n        {...renderComponentProps()}\n      />\n      {#each childrenWithoutParentComponent() as child (\\\\\"render-block-\\\\\" + child.id)}\n        <svelte:self block={child} context={childrenContext()} />\n      {/each}\n\n      {#each childrenWithoutParentComponent() as child (\\\\\"block-style-\\\\\" + child.id)}\n        <BlockStyles block={child} context={childrenContext()} />\n      {/each}\n    </svelte:component>\n  {/if}\n{:else}\n  <svelte:component this={renderComponentTag()} {...renderComponentProps()} />\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > renderContentExample 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    customComponents: string[];\n    content: {\n      blocks: any[];\n      id: string;\n    };\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import { onMount, setContext } from \\\\\"svelte\\\\\";\n\n  import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n  import {\n    dispatchNewContentToVisualEditor,\n    sendComponentsToVisualEditor,\n    trackClick,\n  } from \\\\\"@dummy/injection-js\\\\\";\n  import RenderBlocks from \\\\\"@dummy/RenderBlocks.svelte\\\\\";\n\n  export let customComponents: Props[\\\\\"customComponents\\\\\"];\n  export let content: Props[\\\\\"content\\\\\"];\n\n  onMount(() => {\n    sendComponentsToVisualEditor(customComponents);\n  });\n\n  function onUpdateFn_0(..._args: any[]) {\n    dispatchNewContentToVisualEditor(content);\n  }\n\n  $: onUpdateFn_0(...[content]);\n\n  setContext(BuilderContext.key, {\n    get content() {\n      return 3;\n    },\n\n    get registeredComponents() {\n      return 4;\n    },\n  });\n</script>\n\n<div\n  class=\\\\\"div\\\\\"\n  on:click={(event) => {\n    trackClick(content.id);\n  }}\n>\n  <RenderBlocks blocks={content.blocks} />\n</div>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: columns;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface ButtonProps {\n    attributes?: any;\n    text?: string;\n    link?: string;\n    openLinkInNewTab?: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let link: ButtonProps[\\\\\"link\\\\\"] = undefined;\n  export let attributes: ButtonProps[\\\\\"attributes\\\\\"] = undefined;\n  export let openLinkInNewTab: ButtonProps[\\\\\"openLinkInNewTab\\\\\"] = undefined;\n  export let text: ButtonProps[\\\\\"text\\\\\"] = undefined;\n</script>\n\n{#if link}\n  <a\n    {...attributes}\n    href={link}\n    target={openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}>{text}</a\n  >\n{/if}\n\n{#if !link}\n  <button type=\\\\\"button\\\\\" {...attributes}>{text}</button>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > rootShow 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export interface RenderStylesProps {\n    foo: string;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let foo: RenderStylesProps[\\\\\"foo\\\\\"];\n</script>\n\n{#if foo === \\\\\"bar\\\\\"}\n  <div>Bar</div>\n{:else}\n  <div>Foo</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > self-referencing component 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let name;\n</script>\n\n<div>\n  {name}\n  {#if name === \\\\\"Batman\\\\\"}\n    <svelte:self name=\\\\\"Bruce Wayne\\\\\" />\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let name;\n</script>\n\n<div>\n  {name}<slot />\n  {#if name === \\\\\"Batman\\\\\"}\n    <svelte:self name=\\\\\"Bruce\\\\\"><div>Wayne</div></svelte:self>\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > setState 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { writable } from \\\\\"svelte/store\\\\\";\n\n  function someFn() {\n    $n[0] = \\\\\"123\\\\\";\n  }\n\n  let n = writable([\\\\\"123\\\\\"]);\n</script>\n\n<div>\n  <button\n    on:click={(event) => {\n      someFn();\n    }}>Click me</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > showExpressions 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Props {\n    conditionA: boolean;\n    conditionB: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let conditionA: Props[\\\\\"conditionA\\\\\"];\n  export let conditionB: Props[\\\\\"conditionB\\\\\"];\n  export let conditionC: Props[\\\\\"conditionC\\\\\"];\n</script>\n\n<div>\n  {#if conditionA}\n    Content0\n  {:else}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentA\n  {/if}\n  {#if conditionA}{:else}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentB\n  {:else}\n    {undefined}\n  {/if}\n  {#if conditionA}\n    {undefined}\n  {:else}\n    ContentB\n  {/if}\n  {#if conditionA}\n    ContentC\n  {/if}\n  {#if conditionA}{:else}\n    ContentC\n  {/if}\n  {#if conditionA}\n    ContentD\n  {/if}\n  {#if conditionA}{:else}\n    ContentD\n  {/if}\n  {#if conditionA}\n    ContentE\n  {:else}\n    hello\n  {/if}\n  {#if conditionA}\n    hello\n  {:else}\n    ContentE\n  {/if}\n  {#if conditionA}\n    ContentF\n  {:else}\n    123\n  {/if}\n  {#if conditionA}\n    123\n  {:else}\n    ContentF\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    4mb\n  {:else if conditionB === \\\\\"Complete\\\\\"}\n    20mb\n  {:else}\n    9mb\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    {#if conditionB === \\\\\"Complete\\\\\"}\n      20mb\n    {:else}\n      9mb\n    {/if}\n  {:else}\n    4mb\n  {/if}\n  {#if conditionA === \\\\\"Default\\\\\"}\n    {#if conditionB === \\\\\"Complete\\\\\"}\n      <div>complete</div>\n    {:else}\n      9mb\n    {/if}\n  {:else}\n    {#if conditionC === \\\\\"Complete\\\\\"}\n      dff\n    {:else}\n      <div>complete else</div>\n    {/if}\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > showWithFor 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Props {\n    conditionA: boolean;\n    items: string[];\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let conditionA: Props[\\\\\"conditionA\\\\\"];\n  export let items: Props[\\\\\"items\\\\\"];\n</script>\n\n{#if conditionA}\n  {#each items as item, idx (idx)}\n    <div>{item}</div>\n  {/each}\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Props {\n    conditionA: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let conditionA: Props[\\\\\"conditionA\\\\\"];\n</script>\n\n<div>\n  {#if conditionA}\n    ContentA\n  {/if}\n  {#if conditionA}\n    ContentB\n  {:else}\n    {undefined}\n  {/if}\n  {#if conditionA}\n    ContentC\n  {/if}\n  {#if conditionA}\n    ContentD\n  {/if}\n  {#if conditionA}\n    ContentE\n  {:else}\n    hello\n  {/if}\n  {#if conditionA}\n    ContentF\n  {:else}\n    123\n  {/if}\n</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > showWithRootText 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  interface Props {\n    conditionA: boolean;\n  }\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  export let conditionA: Props[\\\\\"conditionA\\\\\"];\n</script>\n\n{#if conditionA}\n  ContentA\n{:else}\n  <div>else-condition-A</div>\n{/if}\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type Props = {\n    id: Writable<string>;\n    foo: Writable<{\n      bar: {\n        baz: number;\n      };\n    }>;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import type { Writable } from \\\\\"svelte/store\\\\\";\n\n  export let id: Props[\\\\\"id\\\\\"];\n  export let foo: Props[\\\\\"foo\\\\\"];\n\n  function onUpdateFn_0(..._args: any[]) {\n    console.log(\\\\\"props.id changed\\\\\", id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", $foo.bar.baz);\n  }\n  $: onUpdateFn_0_foo_bar_baz = $foo.bar.baz;\n  $: onUpdateFn_0(...[id, onUpdateFn_0_foo_bar_baz]);\n</script>\n\n<div class=\\\\\"test div\\\\\">{id}{$foo.bar.baz}</div>\n\n<style>\n  .div {\n    padding: 10px;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<input {...attrs} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let nested;\n</script>\n\n<input {...nested} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > spreadProps 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<input {...$$props} />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > store-async-function 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > string-literal-store 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let foo = 123;\n</script>\n\n<div>{foo}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<div\n  style={stringifyStyles({\n    width: \\\\\"100%\\\\\",\n  })}\n  class=\\\\\"builder-column div\\\\\"\n/>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let attributes;\n  function stringifyStyles(stylesObj) {\n    let styles = \\\\\"\\\\\";\n    for (let key in stylesObj) {\n      const dashedKey = key.replace(/[A-Z]/g, function (match) {\n        return \\\\\"-\\\\\" + match.toLowerCase();\n      });\n      styles += dashedKey + \\\\\":\\\\\" + stylesObj[key] + \\\\\";\\\\\";\n    }\n    return styles;\n  }\n</script>\n\n<div\n  style={stringifyStyles(attributes.style)}\n  class={attributes.classfdsa + \\\\\" div\\\\\"}\n/>\n\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    align-items: stretch;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > subComponent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import Foo from \\\\\"./foo-sub-component.svelte\\\\\";\n</script>\n\n<Foo />\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > svgComponent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<svg\n  fill=\\\\\"none\\\\\"\n  role=\\\\\"img\\\\\"\n  viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n  width={42}\n  height={42}\n  ><defs\n    ><filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\"\n      ><feFlood result=\\\\\"BackgroundImageFix\\\\\" /><feBlend\n        in=\\\\\"SourceGraphic\\\\\"\n        in2=\\\\\"BackgroundImageFix\\\\\"\n        result=\\\\\"shape\\\\\"\n      /><feGaussianBlur\n        result=\\\\\"effect1_foregroundBlur\\\\\"\n        stdDeviation={7}\n      /></filter\n    ></defs\n  ></svg\n>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > typeDependency 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  export type TypeDependencyProps = {\n    foo: Foo;\n    foo2: Foo2;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  import type { Foo } from \\\\\"./foo-type\\\\\";\n  import type { Foo as Foo2 } from \\\\\"./type-export.svelte\\\\\";\n\n  export let foo: TypeDependencyProps[\\\\\"foo\\\\\"];\n</script>\n\n<div>{foo}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { FooProps } from \\\\\"./foo-props\\\\\";\n\n  export let name: FooProps[\\\\\"name\\\\\"] = undefined;\n</script>\n\n<div>Hello {name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { FooStore } from \\\\\"./foo-store\\\\\";\n\n  let _name = \\\\\"test\\\\\";\n</script>\n\n<div>Hello {_name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<script context=\\\\\"module\\\\\" lang=\\\\\"ts\\\\\">\n  type GetterStore = {\n    getName: () => string;\n    name: string;\n    get test(): string;\n  };\n</script>\n\n<script lang=\\\\\"ts\\\\\">\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n  $: test = () => {\n    return \\\\\"test\\\\\";\n  };\n\n  let name = \\\\\"test\\\\\";\n</script>\n\n<div>Hello {name}!</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > use-style 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<button type=\\\\\"button\\\\\">Button</button>\n\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\"> Button </button>\n\n<style>\n  button {\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n\n  .button {\n    background: blue;\n    color: white;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<button type=\\\\\"button\\\\\">Button</button>\n\n<style>\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n</style>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > useTarget 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { onMount } from \\\\\"svelte\\\\\";\n\n  $: name = () => {\n    const prefix = \\\\\"s\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  };\n\n  let lastName = \\\\\"bar\\\\\";\n  let foo = \\\\\"bar\\\\\";\n\n  onMount(() => {\n    console.log(foo);\n    foo = \\\\\"bar\\\\\";\n  });\n</script>\n\n<div>{name()}</div>\"\n`;\n\nexports[`Svelte > jsx > Typescript Test > webComponent 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { register } from \\\\\"swiper/element/bundle\\\\\";\n\n  register();\n</script>\n\n<svelte:component\n  this={swiper - container}\n  slides-per-view=\\\\\"3\\\\\"\n  navigation=\\\\\"true\\\\\"\n  pagination=\\\\\"true\\\\\"\n  ><svelte:component this={swiper - slide}>Slide 1</svelte:component\n  ><svelte:component this={swiper - slide}>Slide 2</svelte:component\n  ><svelte:component this={swiper - slide}>Slide 3</svelte:component\n  ></svelte:component\n>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > basic 1`] = `\n\"<script>\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input bind:value={name} />\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > bindGroup 1`] = `\n\"<script>\n  let tortilla = \\\\\"Plain\\\\\";\n  let fillings = [];\n</script>\n\n<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    checked={tortilla === \\\\\"Plain\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    checked={tortilla === \\\\\"Whole wheat\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    checked={tortilla === \\\\\"Spinach\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><br /><br /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    checked={fillings === \\\\\"Rice\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    checked={fillings === \\\\\"Beans\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    checked={fillings === \\\\\"Cheese\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    checked={fillings === \\\\\"Guac (extra)\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  />\n  <p>Tortilla: {tortilla}</p>\n  <p>Fillings: {fillings}</p>\n</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > bindProperty 1`] = `\n\"<script>\n  let value = \\\\\"hello\\\\\";\n</script>\n\n<input {value} />\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > classDirective 1`] = `\n\"<script>\n  export let disabled;\n\n  let focus = true;\n</script>\n\n<input\n  class={\\`form-input \\${disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"}\\`}\n/>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > context 1`] = `\n\"<script>\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  let disabled = getContext(\\\\\"disabled\\\\\".key);\n\n  let activeTab = 0;\n\n  setContext(\\\\\"activeTab\\\\\", activeTab);\n</script>\n\n<div>{activeTab}</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > each 1`] = `\n\"<script>\n  let numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n</script>\n\n<ul>\n  {#each numbers as num}\n    <li>{num}</li>\n  {/each}\n</ul>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > eventHandlers 1`] = `\n\"<script>\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n</script>\n\n<div>\n  <button\n    on:click={(a) => {\n      log(\\\\\"hi\\\\\");\n    }}>Log</button\n  ><button\n    on:click={(event) => {\n      log(event);\n    }}>Log</button\n  ><button\n    on:click={(event) => {\n      log(event);\n    }}>Log</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > html 1`] = `\n\"<script>\n  let html = \\\\\"<b>bold</b>\\\\\";\n</script>\n\n<div>{@html html}</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > ifElse 1`] = `\n\"<script>\n  function toggle() {\n    show = !show;\n  }\n\n  let show = true;\n</script>\n\n{#if show}\n  <button\n    on:click={(event) => {\n      toggle(event);\n    }}\n  >\n    Hide\n  </button>\n{:else}\n  <button\n    on:click={(event) => {\n      toggle(event);\n    }}\n  >\n    Show\n  </button>\n{/if}\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > imports 1`] = `\n\"<script>\n  import Button from \\\\\"./Button.svelte\\\\\";\n\n  let disabled = false;\n</script>\n\n<div><Button type=\\\\\"button\\\\\" {disabled}><slot /></Button></div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<script>\n  import { afterUpdate, onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  afterUpdate(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n\n  onDestroy(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > reactive 1`] = `\n\"<script>\n  $: lowercaseName = () => {\n    return name.toLowerCase();\n  };\n\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input value={name} />\n  Lowercase: {lowercaseName()}\n</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<script>\n  function calculateResult(a_, b_) {\n    result = a_ * b_;\n  }\n\n  let a = 2;\n  let b = 5;\n  let result = null;\n\n  function onUpdateFn_0(..._args) {\n    calculateResult(a, b);\n  }\n\n  $: onUpdateFn_0(...[a, b]);\n</script>\n\n<div>\n  <input type=\\\\\"number\\\\\" bind:value={a} /><input type=\\\\\"number\\\\\" bind:value={b} />\n  Result: {result}\n</div>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > slots 1`] = `\"<div><slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot></div>\"`;\n\nexports[`Svelte > svelte > Javascript Test > style 1`] = `\n\"<input class=\\\\\"form-input\\\\\" />\n\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\"\n`;\n\nexports[`Svelte > svelte > Javascript Test > textExpressions 1`] = `\n\"<script>\n  let a = 5;\n  let b = 12;\n</script>\n\n<div>\n  normal:\n  {a + b}<br />\n  conditional\n  {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > basic 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input bind:value={name} />\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > bindGroup 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let tortilla = \\\\\"Plain\\\\\";\n  let fillings = [];\n</script>\n\n<div>\n  <input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Plain\\\\\"\n    checked={tortilla === \\\\\"Plain\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Whole wheat\\\\\"\n    checked={tortilla === \\\\\"Whole wheat\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><input\n    type=\\\\\"radio\\\\\"\n    value=\\\\\"Spinach\\\\\"\n    checked={tortilla === \\\\\"Spinach\\\\\"}\n    on:change={(event) => {\n      tortilla = event.target.value;\n    }}\n  /><br /><br /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Rice\\\\\"\n    checked={fillings === \\\\\"Rice\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Beans\\\\\"\n    checked={fillings === \\\\\"Beans\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Cheese\\\\\"\n    checked={fillings === \\\\\"Cheese\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  /><input\n    type=\\\\\"checkbox\\\\\"\n    value=\\\\\"Guac (extra)\\\\\"\n    checked={fillings === \\\\\"Guac (extra)\\\\\"}\n    on:change={(event) => {\n      fillings = event.target.value;\n    }}\n  />\n  <p>Tortilla: {tortilla}</p>\n  <p>Fillings: {fillings}</p>\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > bindProperty 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let value = \\\\\"hello\\\\\";\n</script>\n\n<input {value} />\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > classDirective 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  export let disabled;\n\n  let focus = true;\n</script>\n\n<input\n  class={\\`form-input \\${disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"}\\`}\n/>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > context 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { getContext, setContext } from \\\\\"svelte\\\\\";\n\n  let disabled = getContext(\\\\\"disabled\\\\\".key);\n\n  let activeTab = 0;\n\n  setContext(\\\\\"activeTab\\\\\", activeTab);\n</script>\n\n<div>{activeTab}</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > each 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let numbers = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"];\n</script>\n\n<ul>\n  {#each numbers as num}\n    <li>{num}</li>\n  {/each}\n</ul>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > eventHandlers 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n</script>\n\n<div>\n  <button\n    on:click={(a) => {\n      log(\\\\\"hi\\\\\");\n    }}>Log</button\n  ><button\n    on:click={(event) => {\n      log(event);\n    }}>Log</button\n  ><button\n    on:click={(event) => {\n      log(event);\n    }}>Log</button\n  >\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > html 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let html = \\\\\"<b>bold</b>\\\\\";\n</script>\n\n<div>{@html html}</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > ifElse 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function toggle() {\n    show = !show;\n  }\n\n  let show = true;\n</script>\n\n{#if show}\n  <button\n    on:click={(event) => {\n      toggle(event);\n    }}\n  >\n    Hide\n  </button>\n{:else}\n  <button\n    on:click={(event) => {\n      toggle(event);\n    }}\n  >\n    Show\n  </button>\n{/if}\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > imports 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import Button from \\\\\"./Button.svelte\\\\\";\n\n  let disabled = false;\n</script>\n\n<div><Button type=\\\\\"button\\\\\" {disabled}><slot /></Button></div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  import { afterUpdate, onDestroy, onMount } from \\\\\"svelte\\\\\";\n\n  onMount(() => {\n    console.log(\\\\\"onMount\\\\\");\n  });\n\n  afterUpdate(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n\n  onDestroy(() => {\n    console.log(\\\\\"onDestroy\\\\\");\n  });\n</script>\n\n<div />\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > reactive 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  $: lowercaseName = () => {\n    return name.toLowerCase();\n  };\n\n  let name = \\\\\"Steve\\\\\";\n</script>\n\n<div>\n  <input value={name} />\n  Lowercase: {lowercaseName()}\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  function calculateResult(a_, b_) {\n    result = a_ * b_;\n  }\n\n  let a = 2;\n  let b = 5;\n  let result = null;\n\n  function onUpdateFn_0(..._args: any[]) {\n    calculateResult(a, b);\n  }\n\n  $: onUpdateFn_0(...[a, b]);\n</script>\n\n<div>\n  <input type=\\\\\"number\\\\\" bind:value={a} /><input type=\\\\\"number\\\\\" bind:value={b} />\n  Result: {result}\n</div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > slots 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<div><slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot></div>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > style 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n</script>\n\n<input class=\\\\\"form-input\\\\\" />\n\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\"\n`;\n\nexports[`Svelte > svelte > Typescript Test > textExpressions 1`] = `\n\"<script lang=\\\\\"ts\\\\\">\n  let a = 5;\n  let b = 12;\n</script>\n\n<div>\n  normal:\n  {a + b}<br />\n  conditional\n  {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n</div>\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/swift.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`swift > jsx > Javascript Test > SwiftPlainComponent 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    ForEach(0..<10, id: \\\\\\\\.self) { item in\n      Text(\\\\\"\\\\\")\n    }\n    VStack(alignment: .leading, spacing: 8) {\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"\\\\\"\\\\\"\n        WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n        \\\\\"\\\\\"\\\\\")\n      }\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"\\\\\"\\\\\"\n        At Shopaholic, we're revolutionizing the online shopping experience through our commitment\n        to sustainability, innovation, and customer satisfaction. Our unique approach combines\n        lightning-fast delivery, eco-friendly practices, and cutting-edge technology to ensure you\n        get the best products while minimizing environmental impact.\n        \\\\\"\\\\\"\\\\\")\n      }\n      VStack(alignment: .leading, spacing: 8) {\n        VStack(alignment: .leading, spacing: 8) {\n          VStack(alignment: .leading, spacing: 8) {\n\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            2-Day Shipping\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n        VStack(alignment: .leading, spacing: 8) {\n          Image(\\\\\"placeholder\\\\\").resizable().aspectRatio(contentMode: .fit)\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Carbon Neutral\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n        VStack(alignment: .leading, spacing: 8) {\n          Image(\\\\\"placeholder\\\\\").resizable().aspectRatio(contentMode: .fit)\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Advanced Dye Tech\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n      }\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > jsx > Javascript Test > SwiftSingleQuotesReplacement 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Text(\\\\\"\\\\\"\\\\\"\n    WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n    \\\\\"\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > jsx > Remove Internal mitosis package 1`] = `\n\"import SwiftUI\n\nstruct MyBasicComponent: View {\n\n@State private var name: String = \\\\\"PatrickJS\\\\\"\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Text(\\\\\"Hello \\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n    Text(\\\\\"! I can run in React, Qwik, Vue, Solid, or Liquid!\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyBasicComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyBasicComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > jsx > Typescript Test > SwiftPlainComponent 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    ForEach(0..<10, id: \\\\\\\\.self) { item in\n      Text(\\\\\"\\\\\")\n    }\n    VStack(alignment: .leading, spacing: 8) {\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"\\\\\"\\\\\"\n        WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n        \\\\\"\\\\\"\\\\\")\n      }\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"\\\\\"\\\\\"\n        At Shopaholic, we're revolutionizing the online shopping experience through our commitment\n        to sustainability, innovation, and customer satisfaction. Our unique approach combines\n        lightning-fast delivery, eco-friendly practices, and cutting-edge technology to ensure you\n        get the best products while minimizing environmental impact.\n        \\\\\"\\\\\"\\\\\")\n      }\n      VStack(alignment: .leading, spacing: 8) {\n        VStack(alignment: .leading, spacing: 8) {\n          VStack(alignment: .leading, spacing: 8) {\n\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            2-Day Shipping\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n        VStack(alignment: .leading, spacing: 8) {\n          Image(\\\\\"placeholder\\\\\").resizable().aspectRatio(contentMode: .fit)\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Carbon Neutral\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n        VStack(alignment: .leading, spacing: 8) {\n          Image(\\\\\"placeholder\\\\\").resizable().aspectRatio(contentMode: .fit)\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Advanced Dye Tech\n            \\\\\"\\\\\"\\\\\")\n          }\n          VStack(alignment: .leading, spacing: 8) {\n            Text(\\\\\"\\\\\"\\\\\"\n            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n            vestibulum, in volutpat ligula elementum.\n            \\\\\"\\\\\"\\\\\")\n          }\n        }\n      }\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > jsx > Typescript Test > SwiftSingleQuotesReplacement 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Text(\\\\\"\\\\\"\\\\\"\n    WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n    \\\\\"\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > basic 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar name: String = \\\\\"Steve\\\\\"\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $name)\n    .onChange(self.name = event.target.value)\n    Text(\\\\\"\\\\\"\\\\\"\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    \\\\\"\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > bindGroup 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar tortilla: String = \\\\\"Plain\\\\\"\nvar fillings: [Any] = []\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Plain\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Whole wheat\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Spinach\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    Br()\n    Br()\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Rice\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Beans\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Cheese\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Guac (extra)\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    Text(\\\\\"\\\\\")\n    Text(\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > bindProperty 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar value: String = \\\\\"hello\\\\\"\n\nvar body: some View {\n  TextField(\\\\\"\\\\\", text: $value)\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > classDirective 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n  let disabled: Any\n\n  var focus: Bool = true\n\n  var body: some View {\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"\\\\\"))\n\n    }\n\n    }\n\n    #if DEBUG\n    struct MyComponent_Previews: PreviewProvider {\n      static var previews: some View {\n        MyComponent(\n          disabled: /* provide preview value */\n        )\n      }\n    }\n    #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > context 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar activeTab: Double = 0\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > each 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar numbers: String = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]\n\nvar body: some View {\n  List {\n    ForEach(self.numbers, id: \\\\\\\\.self) { item in\n      Text(\\\\\"\\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > eventHandlers 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\n// Function state variables\nvar log: (Any) -> Void = { (msg = \\\\\"hello\\\\\": Any) -> Void in\n  print(msg);\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Button(action: { self.log(\\\\\"hi\\\\\") }) {\n      Text(\\\\\"Log\\\\\")\n    }\n    Button(action: { self.log(event) }) {\n      Text(\\\\\"Log\\\\\")\n    }\n    Button(action: { self.log(event) }) {\n      Text(\\\\\"Log\\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > html 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar html: String = \\\\\"<b>bold</b>\\\\\"\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > ifElse 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar show: Bool = true\n\n// Function state variables\nvar toggle: () -> Void = { () -> Void in\n  self.show = !self.show;\n}\n\nvar body: some View {\n  Show {\n    Button(action: { self.toggle(event) }) {\n      Text(\\\\\" Hide \\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > imports 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar disabled: Bool = false\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Button(action: { {} }) {\n      Slot()\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > reactive 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar name: String = \\\\\"Steve\\\\\"\nvar lowercaseName: Any = lowercaseName() {\n  return self.name.toLowerCase();\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $name)\n    Text(\\\\\"\\\\\"\\\\\"\n    Lowercase: \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar a: Double = 2\nvar b: Double = 5\nvar result: Any = null\n\n// Function state variables\nvar calculateResult: (Any, Any) -> Void = { (a_: Any, b_: Any) -> Void in\n  self.result = a_ * b_;\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $a)\n    .onChange(self.a = event.target.value)\n    TextField(\\\\\"\\\\\", text: $b)\n    .onChange(self.b = event.target.value)\n    Text(\\\\\"\\\\\"\\\\\"\n    Result: \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > slots 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Slot {\n      Text(\\\\\"default\\\\\")\n    }\n    Slot {\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"default\\\\\")\n      }\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > style 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  TextField(\\\\\"\\\\\", text: .constant(\\\\\"\\\\\"))\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Javascript Test > textExpressions 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar a: Double = 5\nvar b: Double = 12\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Text(\\\\\"\\\\\"\\\\\"\n    normal:\n    \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n    Br()\n    Text(\\\\\"\\\\\"\\\\\"\n    conditional\n    \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > basic 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar name: String = \\\\\"Steve\\\\\"\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $name)\n    .onChange(self.name = event.target.value)\n    Text(\\\\\"\\\\\"\\\\\"\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    \\\\\"\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > bindGroup 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar tortilla: String = \\\\\"Plain\\\\\"\nvar fillings: [Any] = []\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Plain\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Whole wheat\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Spinach\\\\\"))\n    .onChange(self.tortilla = event.target.value)\n    Br()\n    Br()\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Rice\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Beans\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Cheese\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"Guac (extra)\\\\\"))\n    .onChange(self.fillings = event.target.value)\n    Text(\\\\\"\\\\\")\n    Text(\\\\\"\\\\\")\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > bindProperty 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar value: String = \\\\\"hello\\\\\"\n\nvar body: some View {\n  TextField(\\\\\"\\\\\", text: $value)\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > classDirective 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n  let disabled: Any\n\n  var focus: Bool = true\n\n  var body: some View {\n    TextField(\\\\\"\\\\\", text: .constant(\\\\\"\\\\\"))\n\n    }\n\n    }\n\n    #if DEBUG\n    struct MyComponent_Previews: PreviewProvider {\n      static var previews: some View {\n        MyComponent(\n          disabled: /* provide preview value */\n        )\n      }\n    }\n    #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > context 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar activeTab: Double = 0\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > each 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar numbers: String = [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]\n\nvar body: some View {\n  List {\n    ForEach(self.numbers, id: \\\\\\\\.self) { item in\n      Text(\\\\\"\\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > eventHandlers 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\n// Function state variables\nvar log: (Any) -> Void = { (msg = \\\\\"hello\\\\\": Any) -> Void in\n  print(msg);\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Button(action: { self.log(\\\\\"hi\\\\\") }) {\n      Text(\\\\\"Log\\\\\")\n    }\n    Button(action: { self.log(event) }) {\n      Text(\\\\\"Log\\\\\")\n    }\n    Button(action: { self.log(event) }) {\n      Text(\\\\\"Log\\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > html 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar html: String = \\\\\"<b>bold</b>\\\\\"\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > ifElse 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar show: Bool = true\n\n// Function state variables\nvar toggle: () -> Void = { () -> Void in\n  self.show = !self.show;\n}\n\nvar body: some View {\n  Show {\n    Button(action: { self.toggle(event) }) {\n      Text(\\\\\" Hide \\\\\")\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > imports 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar disabled: Bool = false\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Button(action: { {} }) {\n      Slot()\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > reactive 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar name: String = \\\\\"Steve\\\\\"\nvar lowercaseName: Any = lowercaseName() {\n  return self.name.toLowerCase();\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $name)\n    Text(\\\\\"\\\\\"\\\\\"\n    Lowercase: \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar a: Double = 2\nvar b: Double = 5\nvar result: Any = null\n\n// Function state variables\nvar calculateResult: (Any, Any) -> Void = { (a_: Any, b_: Any) -> Void in\n  self.result = a_ * b_;\n}\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    TextField(\\\\\"\\\\\", text: $a)\n    .onChange(self.a = event.target.value)\n    TextField(\\\\\"\\\\\", text: $b)\n    .onChange(self.b = event.target.value)\n    Text(\\\\\"\\\\\"\\\\\"\n    Result: \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > slots 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Slot {\n      Text(\\\\\"default\\\\\")\n    }\n    Slot {\n      VStack(alignment: .leading, spacing: 8) {\n        Text(\\\\\"default\\\\\")\n      }\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > style 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar body: some View {\n  TextField(\\\\\"\\\\\", text: .constant(\\\\\"\\\\\"))\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n\nexports[`swift > svelte > Typescript Test > textExpressions 1`] = `\n\"import SwiftUI\n\nstruct MyComponent: View {\n\nvar a: Double = 5\nvar b: Double = 12\n\nvar body: some View {\n  VStack(alignment: .leading, spacing: 8) {\n    Text(\\\\\"\\\\\"\\\\\"\n    normal:\n    \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n    Br()\n    Text(\\\\\"\\\\\"\\\\\"\n    conditional\n    \\\\\"\\\\\"\\\\\")\n    VStack(alignment: .leading, spacing: 8) {\n\n    }\n  }\n\n  }\n\n  }\n\n  #if DEBUG\n  struct MyComponent_Previews: PreviewProvider {\n    static var previews: some View {\n      MyComponent(\n\n      )\n    }\n  }\n  #endif\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/taro.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Taro > jsx > Javascript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <View>\n        {props.showInput ? (\n          <>\n            <Input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </View>\n            <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <View value=\\\\\"supra\\\\\">GR Supra</View>\n              <View value=\\\\\"86\\\\\">GR 86</View>\n            </View>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState(() => 1);\n\n  const [sports, setSports] = useState(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        <Input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\nimport { View, Text, Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <View>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <Input onChange={(event) => onChange()} />\n      </View>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <View>Hello {name}</View>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOutputsComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return <Input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBooleanAttribute(props) {\n  return (\n    <View>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </View>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicChildComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message) {\n    console.log(message);\n  }\n\n  return (\n    <View>\n      <MyBasicComponent id={dev} />\n      <View>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </View>\n    </View>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicForComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <View>\n      {names?.map((person) => (\n        <>\n          <Input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </View>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefComponent(props) {\n  const inputRef = useRef(null);\n  const inputNoArgRef = useRef(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <View>\n        {props.showInput ? (\n          <>\n            <Input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </View>\n            <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <View value=\\\\\"supra\\\\\">GR Supra</View>\n              <View value=\\\\\"86\\\\\">GR 86</View>\n            </View>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onClick={async (evt) => await handlerClick(evt)}>Click</Button>\n    </View>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <View>\n      <View>\n        Now: {count}, before: {prevCount.current}\n      </View>\n      <Button onClick={(event) => setCount(1)}>Increment</Button>\n    </View>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props) {\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Column(props) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        {props.columns?.map((column, index) => (\n          <View className=\\\\\"view-2\\\\\">\n            {column.content}\n            {index}\n          </View>\n        ))}\n      </View>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .view {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .view {\n            flex-direction: row-reverse;\n          }\n        }\n        .view-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction ContentSlotCode(props) {\n  return (\n    <View>\n      <>{props.slotTesting}</>\n      <View>\n        <View />\n      </View>\n      <View>\n        <>{props.children}</>\n      </View>\n    </View>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ContentSlotJsxCode(props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <View\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <View>\n              <View />\n            </View>\n            <View>{props.children}</View>\n          </View>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction CustomCode(props) {\n  const elem = useRef(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\nimport { Form, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction FormComponent(props) {\n  const formRef = useRef(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(event) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!el.name)\n        .map((el) => {\n          let value;\n          const key = el.name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = el.value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <Form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <View className=\\\\\"view\\\\\">{JSON.stringify(responseData, null, 2)}</View>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage}\n          />\n        ) : null}\n      </Form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Image, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Image(props) {\n  const pictureRef = useRef(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <View>\n        <View ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <Image\n              className=\\\\\"image\\\\\"\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              source={{ uri: props.image }}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <View srcset={props.srcset} />\n        </View>\n        {props.children}\n      </View>\n      <style jsx>{\\`\n        .image {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction ImgStateComponent(props) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <View>\n      {images?.map((item, itemIndex) => (\n        <Image source={{ uri: item }} key={itemIndex} />\n      ))}\n    </View>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction ImgComponent(props) {\n  return (\n    <Image\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      source={{ uri: props.imgSrc }}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Input 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction FormInputComponent(props) {\n  return (\n    <Input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction Stepper(props) {\n  function handleChange(value) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState(() => _id + \\\\\"-message\\\\\");\n\n  return (\n    <View id={_id}>\n      Test\n      <View id={_messageId}>Message</View>\n    </View>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RawText(props) {\n  return <Text dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }} />;\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SectionComponent(props) {\n  return (\n    <View\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </View>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SelectComponent(props) {\n  return (\n    <View\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <View value={option.value} data-index={index}>\n          {option.name || option.value}\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <>{props.children || <View>Default content</View>}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <ContentSlotCode slotTesting={<View>Hello</View>} />\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props) {\n  return (\n    <View>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\nimport { View, Button, Text, Input, Textarea, Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction SmileReviews(props) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <View data-user={name}>\n        <Button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </Button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <Input placeholder=\\\\\"Email\\\\\" />\n            <Input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <Textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <Button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </Button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <View className=\\\\\"review\\\\\" key={review.id}>\n            <Image className=\\\\\"image\\\\\" source={{ uri: review.avatar }} />\n            <View>\n              <View>N: {index}</View>\n              <View>{review.author}</View>\n              <View>{review.reviewMessage}</View>\n            </View>\n          </View>\n        ))}\n      </View>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .image {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SubmitButton(props) {\n  return (\n    <Button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </Button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Text(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Textarea } from \\\\\"@tarojs/components\\\\\";\n\nfunction Textarea(props) {\n  return (\n    <Textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction UseValueAndFnFromStore(props) {\n  const [_id, set_id] = useState(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState(() => false);\n\n  function _do(id) {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <View>Test</View>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Video(props) {\n  return (\n    <View\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <View>Hello {name}</View>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicForFragment(props) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <View>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <View>{option}</View>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <View>{option}</View>\n        </React.Fragment>\n      ))}\n      <View>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <View key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </View>\n        ))}\n      </View>\n    </View>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  const [tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <View>{name}</View>\n      {props.actions?.map((action) => (\n        <TagName>\n          <View />\n          <Text>{action.text}</Text>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\nimport { View, Input } from \\\\\"@tarojs/components\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <View>\n          <Input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </View>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\nimport { View, Input } from \\\\\"@tarojs/components\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef(\n  function MyBasicForwardRefComponent(props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <View>\n          <Input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </View>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <View>Hello! {name}</View>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicRefAttributePassingComponent(props) {\n  const buttonRef = useRef(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <Button ref={buttonRef}>Attribute Passing</Button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props) {\n  const buttonRef = useRef(null);\n\n  return (\n    <View>\n      <Button ref={buttonRef}>Attribute Passing</Button>\n    </View>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <View>\n        <MyComp>Hello! I can run in React, Vue, Solid, or Liquid!</MyComp>\n        <View className=\\\\\"view\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </View>\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ClassNameCode(props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <View>\n      <View>Without Binding</View>\n      <View>With binding</View>\n    </View>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\" style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComplexMetaRaw(props) {\n  return <View />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComponentWithContext(props) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <View>other</View>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <View>setting context</View>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > defaultProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props) {\n  return <View> Hello {props.name || DEFAULT_VALUES.name}</View>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction EventInputAndChange(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <View>\n        <Input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > eventProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction EventPropsComponent(props) {\n  function handleClick() {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <Button onClick={(event) => handleClick()}>Test</Button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <View>{refToUse}</View>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction FigmaButton(props) {\n  return (\n    <Button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </Button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i) {\n    return i + foo2().length;\n  }\n\n  return (\n    <View>\n      <View>{foo2()}</View>\n      <View>{bar()}</View>\n      <View>{baz(1)}</View>\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyLayerNameComponent(props) {\n  return (\n    <>\n      <View>\n        <View className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </View>\n      </View>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MultipleOnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <View />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <Input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <View>if condition A and condition B</View>\n          ) : (\n            <View>else-condition-B</View>\n          )}\n        </>\n      ) : (\n        <View>else-condition-A</View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedStyles(props) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">Hello world</View>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .view {\n            display: block;\n          }\n        }\n        .view:hover {\n          display: flex;\n        }\n        .view:active {\n          display: inline;\n        }\n        .view .nested-selector {\n          display: grid;\n        }\n        .view .nested-selector:hover {\n          display: block;\n        }\n        .view.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(props) {\n  return (\n    <>\n      <View>\n        <View>Emoji</View>\n        <View>Dashes</View>\n        <View>CamelCase</View>\n        <View>Special chars</View>\n        <View>Special chars with dashes</View>\n        <View className=\\\\\"css-0\\\\\">Single Number</View>\n        <View className=\\\\\"css-123\\\\\">Multiple Numbers</View>\n        <View className=\\\\\"name-123\\\\\">Chars with numbers at end</View>\n        <View className=\\\\\"name\\\\\">Chars with numbers at start</View>\n        <View className=\\\\\"name-789\\\\\">Numnbers separated by dash</View>\n        <View>Emoji</View>\n        <View data-name=\\\\\"1\\\\\" className=\\\\\"view\\\\\">\n          Number\n        </View>\n      </View>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .view {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Embed(props) {\n  const elem = useRef(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <View ref={elem}>\n      <View>Test</View>\n    </View>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnInit(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View>Default name defined by parent {name}</View>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnInitPlain(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Comp(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdate(props) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdateWithDeps(props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <View />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nfunction MyBasicComponent(props) {\n  return <View />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdate(props) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderBlock(props) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <View {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <View {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </View>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <View\n          className=\\\\\"view\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks} />\n        </View>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props) {\n  return (\n    <>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </Button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderStyles(props) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <View>Bar</View>\n        </>\n      ) : (\n        <View>Foo</View>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <View>Wayne</View>\n        </MyComponent>\n      ) : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SetState(props) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onClick={(event) => someFn()}>Click me</Button>\n    </View>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <View>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? <View>complete</View> : <>9mb</>}\n        </>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <View>complete else</View>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedShow(props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <View key={idx}>{item}</View>\n          ))}\n        </>\n      ) : (\n        <View>else-condition-A</View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowWithOtherValues(props) {\n  return (\n    <View>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowRootText(props) {\n  return (\n    <>{props.conditionA ? <>ContentA</> : <View>else-condition-A</View>}</>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        {props.id}\n        {props.foo.value.bar.baz}\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <Input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <Input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  return <Input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <View />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <View>{foo}</View>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <View\n        className=\\\\\"view\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction StylePropClassAndCss(props) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\" style={props.attributes.style} />\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction SubComponent(props) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction SvgComponent(props) {\n  return (\n    <View\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <View>\n        <View id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </View>\n      </View>\n    </View>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeDependency(props) {\n  return <View>{props.foo}</View>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeExternalProps(props) {\n  return <View>Hello {props.name}! </View>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeExternalStore(props) {\n  const [_name, set_name] = useState(() => \\\\\"test\\\\\");\n\n  return <View>Hello {_name}! </View>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeGetterStore(props) {\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  function getName() {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test() {\n    return \\\\\"test\\\\\";\n  }\n\n  return <View>Hello {name}! </View>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </Button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction UseTargetComponent(props) {\n  function name() {\n    const prefix = \\\\\"t\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <View>{name()}</View>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Taro > jsx > Javascript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicWebComponent(props) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <View slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <View>Slide 1</View>\n      <View>Slide 2</View>\n      <View>Slide 3</View>\n    </View>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Taro > jsx > Remove Internal mitosis package 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  return (\n    <View>Hello {name}! I can run in React, Qwik, Vue, Solid, or Liquid!</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > AdvancedRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"Received an update\\\\\");\n  }, [inputRef.current, inputNoArgRef.current]);\n\n  return (\n    <>\n      <View>\n        {props.showInput ? (\n          <>\n            <Input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </View>\n            <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <View value=\\\\\"supra\\\\\">GR Supra</View>\n              <View value=\\\\\"86\\\\\">GR 86</View>\n            </View>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function underscore_fn_name() {\n    return \\\\\"bar\\\\\";\n  }\n\n  const [age, setAge] = useState<number>(() => 1);\n\n  const [sports, setSports] = useState<Array<string>>(() => [\\\\\"\\\\\"]);\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        <Input\n          value={DEFAULT_VALUES.name || name}\n          onChange={(myEvent) => setName(myEvent.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Basic Context 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useContext, useRef, useEffect } from \\\\\"react\\\\\";\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\nimport { View, Text, Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onChange() {\n    const change = myService.method(\\\\\"change\\\\\");\n    console.log(change);\n  }\n\n  const myService = useContext(MyService);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    const hi = myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    const bye = myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }, []);\n\n  return (\n    <Injector.Provider value={createInjector()}>\n      <View>\n        {myService.method(\\\\\"hello\\\\\") + name}\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <Input onChange={(event) => onChange()} />\n      </View>\n    </Injector.Provider>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOnMountUpdateComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(\\\\\"PatrickJS onInit\\\\\" + props.hi);\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    setName(\\\\\"PatrickJS onMount\\\\\" + props.bye);\n  }, []);\n\n  return <View>Hello {name}</View>;\n}\n\nexport default MyBasicOnMountUpdateComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Basic Outputs 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOutputsComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    props.onMessageChange(name);\n    props.onEvent(props.message);\n  }, []);\n\n  return <View />;\n}\n\nexport default MyBasicOutputsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return <Input autoCapitalize=\\\\\"on\\\\\" autoComplete=\\\\\"on\\\\\" spellCheck />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBooleanAttribute(props: Props) {\n  return (\n    <View>\n      {props.children ? (\n        <>\n          {props.children}\n          {props.type}\n        </>\n      ) : null}\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent list={null} />\n    </View>\n  );\n}\n\nexport default MyBooleanAttribute;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicChildComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  const [dev, setDev] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <View>\n      <MyBasicComponent id={dev} />\n      <View>\n        <MyBasicOnMountUpdateComponent hi={name} bye={dev} />\n        <MyBasicOutputsComponent\n          message=\\\\\"Test\\\\\"\n          onMessageChange={(name) => setName(name)}\n          onEvent={(event) => log(\\\\\"Test\\\\\")}\n        />\n      </View>\n    </View>\n  );\n}\n\nexport default MyBasicChildComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicFor 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicForComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  const [names, setNames] = useState(() => [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount code\\\\\");\n  }, []);\n\n  return (\n    <View>\n      {names?.map((person) => (\n        <>\n          <Input\n            value={name}\n            onChange={(event) => {\n              setName(event.target.value + \\\\\" and \\\\\" + person);\n            }}\n          />\n          Hello\n          {person}! I can run in Qwik, Web Component, React, Vue, Solid, or\n          Liquid!\n        </>\n      ))}\n    </View>\n  );\n}\n\nexport default MyBasicForComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.current?.focus();\n  }\n\n  function lowerCaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <>\n      <View>\n        {props.showInput ? (\n          <>\n            <Input\n              className=\\\\\"input\\\\\"\n              ref={inputRef}\n              value={name}\n              onBlur={(event) => onBlur()}\n              onChange={(event) => setName(event.target.value)}\n            />\n            <View htmlFor=\\\\\"cars\\\\\" ref={inputNoArgRef}>\n              Choose a car:\n            </View>\n            <View name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n              <View value=\\\\\"supra\\\\\">GR Supra</View>\n              <View value=\\\\\"86\\\\\">GR 86</View>\n            </View>\n          </>\n        ) : null}\n        Hello\n        {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web\n        Component!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicRefAssignmentComponent(props: Props) {\n  const holdValueRef = useRef(\\\\\"Patrick\\\\\");\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef.current);\n    holdValueRef.current = holdValueRef.current + \\\\\"JS\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onClick={async (evt) => await handlerClick(evt)}>Click</Button>\n    </View>\n  );\n}\n\nexport default MyBasicRefAssignmentComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nfunction MyPreviousComponent(props: Props) {\n  const [count, setCount] = useState(() => 0);\n\n  const prevCount = useRef(count);\n\n  useEffect(() => {\n    prevCount.current = count;\n  }, [count]);\n\n  return (\n    <View>\n      <View>\n        Now: {count}, before: {prevCount.current}\n      </View>\n      <Button onClick={(event) => setCount(1)}>Increment</Button>\n    </View>\n  );\n}\n\nexport default MyPreviousComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Button 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props: ButtonProps) {\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Columns 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Column(props: ColumnProps) {\n  function getColumns() {\n    return props.columns || [];\n  }\n\n  function getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  }\n\n  function getWidth(index: number) {\n    const columns = getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  }\n\n  function getColumnCssWidth(index: number) {\n    const columns = getColumns();\n    const gutterSize = getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n  }\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        {props.columns?.map((column, index) => (\n          <View className=\\\\\"view-2\\\\\">\n            {column.content}\n            {index}\n          </View>\n        ))}\n      </View>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .view {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .view {\n            flex-direction: row-reverse;\n          }\n        }\n        .view-2 {\n          flex-grow: 1;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Column;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction ContentSlotCode(props: Props) {\n  return (\n    <View>\n      <>{props.slotTesting}</>\n      <View>\n        <View />\n      </View>\n      <View>\n        <>{props.children}</>\n      </View>\n    </View>\n  );\n}\n\nexport default ContentSlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ContentSlotJsxCode(props: Props) {\n  props = {\n    content: \\\\\"\\\\\",\n    slotReference: undefined,\n    slotContent: undefined,\n    ...props,\n  };\n  const [name, setName] = useState(() => \\\\\"king\\\\\");\n\n  const [showContent, setShowContent] = useState(() => false);\n\n  function cls() {\n    return props.slotContent && props.children ? \\`\\${name}-content\\` : \\\\\"\\\\\";\n  }\n\n  function show() {\n    props.slotContent ? 1 : \\\\\"\\\\\";\n  }\n\n  return (\n    <>\n      {props.slotReference ? (\n        <>\n          <View\n            name={props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\"}\n            title={props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\"}\n            {...props.attributes}\n            onClick={(event) => show()}\n          >\n            {showContent && props.slotContent ? (\n              <>{props.content || \\\\\"{props.content}\\\\\"}</>\n            ) : null}\n            <View>\n              <View />\n            </View>\n            <View>{props.children}</View>\n          </View>\n        </>\n      ) : null}\n    </>\n  );\n}\n\nexport default ContentSlotJsxCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > CustomCode 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Embed 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n  const [scriptsInserted, setScriptsInserted] = useState(() => []);\n\n  const [scriptsRun, setScriptsRun] = useState(() => []);\n\n  function findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  }\n\n  useEffect(() => {\n    findAndRunScripts();\n  }, []);\n\n  return <View ref={elem} dangerouslySetInnerHTML={{ __html: props.code }} />;\n}\n\nexport default CustomCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Form 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\nimport { Form, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction FormComponent(props: FormProps) {\n  const formRef = useRef<HTMLFormElement>(null);\n  const [formState, setFormState] = useState(() => \\\\\"unsubmitted\\\\\");\n\n  const [responseData, setResponseData] = useState(() => null);\n\n  const [formErrorMessage, setFormErrorMessage] = useState(() => \\\\\"\\\\\");\n\n  function submissionState() {\n    return (Builder.isEditing && props.previewState) || formState;\n  }\n\n  function onSubmit(\n    event: Event & {\n      currentTarget: HTMLFormElement;\n    }\n  ) {\n    const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n    if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n      event.preventDefault();\n    } else if (sendWithJs) {\n      if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n        event.preventDefault();\n        return;\n      }\n\n      event.preventDefault();\n      const el = event.currentTarget;\n      const headers = props.customHeaders || {};\n      let body: any;\n      const formData = new FormData(el); // TODO: maybe support null\n\n      const formPairs: {\n        key: string;\n        value: File | boolean | number | string | FileList;\n      }[] = Array.from(\n        event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n      )\n        .filter((el) => !!(el as HTMLInputElement).name)\n        .map((el) => {\n          let value: any;\n          const key = (el as HTMLImageElement).name;\n\n          if (el instanceof HTMLInputElement) {\n            if (el.type === \\\\\"radio\\\\\") {\n              if (el.checked) {\n                value = el.name;\n                return {\n                  key,\n                  value,\n                };\n              }\n            } else if (el.type === \\\\\"checkbox\\\\\") {\n              value = el.checked;\n            } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n              const num = el.valueAsNumber;\n\n              if (!isNaN(num)) {\n                value = num;\n              }\n            } else if (el.type === \\\\\"file\\\\\") {\n              // TODO: one vs multiple files\n              value = el.files;\n            } else {\n              value = el.value;\n            }\n          } else {\n            value = (el as HTMLInputElement).value;\n          }\n\n          return {\n            key,\n            value,\n          };\n        });\n      let contentType = props.contentType;\n\n      if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n\n      Array.from(formPairs).forEach(({ value }) => {\n        if (\n          value instanceof File ||\n          (Array.isArray(value) && value[0] instanceof File) ||\n          value instanceof FileList\n        ) {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n      }); // TODO: send as urlEncoded or multipart by default\n      // because of ease of use and reliability in browser API\n      // for encoding the form?\n\n      if (contentType !== \\\\\"application/json\\\\\") {\n        body = formData;\n      } else {\n        // Json\n        const json = {};\n        Array.from(formPairs).forEach(({ value, key }) => {\n          set(json, key, value);\n        });\n        body = JSON.stringify(json);\n      }\n\n      if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n        if (\n          /* Zapier doesn't allow content-type header to be sent from browsers */ !(\n            sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\")\n          )\n        ) {\n          headers[\\\\\"content-type\\\\\"] = contentType;\n        }\n      }\n      const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", { detail: { body } });\n      if (formRef.current) {\n        formRef.current.dispatchEvent(presubmitEvent);\n        if (presubmitEvent.defaultPrevented) {\n          return;\n        }\n      }\n      setFormState(\\\\\"sending\\\\\");\n      const formUrl = \\`\\${\n        builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n      }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n        props.sendSubmissionsToEmail || \\\\\"\\\\\"\n      )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n      fetch(\n        props.sendSubmissionsTo === \\\\\"email\\\\\"\n          ? formUrl\n          : props.action! /* TODO: throw error if no action URL */,\n        { body, headers, method: props.method || \\\\\"post\\\\\" }\n      ).then(\n        async (res) => {\n          let body;\n          const contentType = res.headers.get(\\\\\"content-type\\\\\");\n          if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n            body = await res.json();\n          } else {\n            body = await res.text();\n          }\n          if (!res.ok && props.errorMessagePath) {\n            /* TODO: allow supplying an error formatter function */ let message =\n              get(body, props.errorMessagePath);\n            if (message) {\n              if (typeof message !== \\\\\"string\\\\\") {\n                /* TODO: ideally convert json to yaml so it woul dbe like          error: - email has been taken */ message =\n                  JSON.stringify(message);\n              }\n              setFormErrorMessage(message);\n            }\n          }\n          setResponseData(body);\n          setFormState(res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\");\n          if (res.ok) {\n            const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n              detail: { res, body },\n            });\n            if (formRef.current) {\n              formRef.current.dispatchEvent(submitSuccessEvent);\n              if (submitSuccessEvent.defaultPrevented) {\n                return;\n              }\n              /* TODO: option to turn this on/off? */ if (\n                props.resetFormOnSubmit !== false\n              ) {\n                formRef.current.reset();\n              }\n            }\n            /* TODO: client side route event first that can be preventDefaulted */ if (\n              props.successUrl\n            ) {\n              if (formRef.current) {\n                const event = new CustomEvent(\\\\\"route\\\\\", {\n                  detail: { url: props.successUrl },\n                });\n                formRef.current.dispatchEvent(event);\n                if (!event.defaultPrevented) {\n                  location.href = props.successUrl;\n                }\n              } else {\n                location.href = props.successUrl;\n              }\n            }\n          }\n        },\n        (err) => {\n          const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n            detail: { error: err },\n          });\n          if (formRef.current) {\n            formRef.current.dispatchEvent(submitErrorEvent);\n            if (submitErrorEvent.defaultPrevented) {\n              return;\n            }\n          }\n          setResponseData(err);\n          setFormState(\\\\\"error\\\\\");\n        }\n      );\n    }\n  }\n  return (\n    <>\n      {\\\\\" \\\\\"}\n      <Form\n        validate={props.validate}\n        ref={formRef}\n        action={!props.sendWithJs && props.action}\n        method={props.method}\n        name={props.name}\n        onSubmit={(event) => onSubmit(event)}\n        {...props.attributes}\n      >\n        {props.builderBlock && props.builderBlock.children ? (\n          <>\n            {props.builderBlock?.children?.map((block, index) => (\n              <BuilderBlockComponent\n                key={block.id}\n                block={block}\n                index={index}\n              />\n            ))}\n          </>\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" ? (\n          <BuilderBlocks dataPath=\\\\\"errorMessage\\\\\" blocks={props.errorMessage!} />\n        ) : null}\n        {submissionState() === \\\\\"sending\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"sendingMessage\\\\\"\n            blocks={props.sendingMessage!}\n          />\n        ) : null}\n        {submissionState() === \\\\\"error\\\\\" && responseData ? (\n          <View className=\\\\\"view\\\\\">{JSON.stringify(responseData, null, 2)}</View>\n        ) : null}\n        {submissionState() === \\\\\"success\\\\\" ? (\n          <BuilderBlocks\n            dataPath=\\\\\"successMessage\\\\\"\n            blocks={props.successMessage!}\n          />\n        ) : null}\n      </Form>{\\\\\" \\\\\"}\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n          color: red;\n          text-align: center;\n        }\n      \\`}</style>{\\\\\" \\\\\"}\n    </>\n  );\n}\nexport default FormComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef, useEffect } from \\\\\"react\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nimport { View, Image, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>(null);\n  const [scrollListener, setScrollListener] = useState(() => null);\n\n  const [imageLoaded, setImageLoaded] = useState(() => false);\n\n  function setLoaded() {\n    setImageLoaded(true);\n  }\n\n  function useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && isBrowser();\n  }\n\n  function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  }\n\n  const [load, setLoad] = useState(() => false);\n\n  useEffect(() => {\n    if (useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            setScrollListener(null);\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      setScrollListener(listener);\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      if (scrollListener) {\n        window.removeEventListener(\\\\\"scroll\\\\\", scrollListener);\n      }\n    };\n  }, []);\n\n  return (\n    <>\n      <View>\n        <View ref={pictureRef}>\n          {!useLazyLoading() || load ? (\n            <Image\n              className=\\\\\"image\\\\\"\n              alt={props.altText}\n              aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n              source={{ uri: props.image }}\n              onLoad={(event) => setLoaded()}\n              srcset={props.srcset}\n              sizes={props.sizes}\n            />\n          ) : null}\n          <View srcset={props.srcset} />\n        </View>\n        {props.children}\n      </View>\n      <style jsx>{\\`\n        .image {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default Image;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Image State 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction ImgStateComponent(props: any) {\n  const [canShow, setCanShow] = useState(() => true);\n\n  const [images, setImages] = useState(() => [\\\\\"http://example.com/qwik.png\\\\\"]);\n\n  return (\n    <View>\n      {images?.map((item, itemIndex) => (\n        <Image source={{ uri: item }} key={itemIndex} />\n      ))}\n    </View>\n  );\n}\n\nexport default ImgStateComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Img 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction ImgComponent(props: ImgProps) {\n  return (\n    <Image\n      style={{\n        objectFit: props.backgroundSize || \\\\\"cover\\\\\",\n        objectPosition: props.backgroundPosition || \\\\\"center\\\\\",\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || \\\\\"default-key\\\\\"}\n      alt={props.altText}\n      source={{ uri: props.imgSrc }}\n    />\n  );\n}\n\nexport default ImgComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Input 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction FormInputComponent(props: FormInputProps) {\n  return (\n    <Input\n      {...props.attributes}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n\nexport default FormInputComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > InputParent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction Stepper(props: any) {\n  function handleChange(value: string) {\n    console.log(value);\n  }\n\n  return (\n    <FormInputComponent\n      name=\\\\\"kingzez\\\\\"\n      type=\\\\\"text\\\\\"\n      onChange={(value) => handleChange(value)}\n    />\n  );\n}\n\nexport default Stepper;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > NestedStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedStore(props: any) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_messageId, set_messageId] = useState<MyStore[\\\\\"_messageId\\\\\"]>(\n    () => _id + \\\\\"-message\\\\\"\n  );\n\n  return (\n    <View id={_id}>\n      Test\n      <View id={_messageId}>Message</View>\n    </View>\n  );\n}\n\nexport default NestedStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > RawText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nimport { Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RawText(props: RawTextProps) {\n  return <Text dangerouslySetInnerHTML={{ __html: props.text || \\\\\"\\\\\" }} />;\n}\n\nexport default RawText;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Section 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SectionComponent(props: SectionProps) {\n  return (\n    <View\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === \\\\\"number\\\\\"\n          ? {\n              maxWidth: props.maxWidth,\n            }\n          : undefined\n      }\n    >\n      {props.children}\n    </View>\n  );\n}\n\nexport default SectionComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Select 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SelectComponent(props: FormSelectProps) {\n  return (\n    <View\n      {...props.attributes}\n      value={props.value}\n      key={\n        Builder.isEditing && props.defaultValue\n          ? props.defaultValue\n          : \\\\\"default-key\\\\\"\n      }\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      {props.options?.map((option, index) => (\n        <View value={option.value} data-index={index}>\n          {option.name || option.value}\n        </View>\n      ))}\n    </View>\n  );\n}\n\nexport default SelectComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > SlotDefault 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <>{props.children || <View>Default content</View>}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > SlotHtml 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <ContentSlotCode testing={<div>Hello</div>}></ContentSlotCode>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > SlotJsx 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <ContentSlotCode slotTesting={<View>Hello</View>} />\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > SlotNamed 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SlotCode(props: Props) {\n  return (\n    <View>\n      <>{props.myAwesomeSlot}</>\n      <>{props.top}</>\n      <>{props.left || \\\\\"Default left\\\\\"}</>\n      <>{props.children || \\\\\"Default Child\\\\\"}</>\n    </View>\n  );\n}\n\nexport default SlotCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Stamped.io 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\nimport { View, Button, Text, Input, Textarea, Image } from \\\\\"@tarojs/components\\\\\";\n\nfunction SmileReviews(props: SmileReviewsProps) {\n  const [reviews, setReviews] = useState(() => []);\n\n  const [name, setName] = useState(() => \\\\\"test\\\\\");\n\n  const [showReviewPrompt, setShowReviewPrompt] = useState(() => false);\n\n  function kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  }\n\n  function snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  }\n\n  useEffect(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        setReviews(data.data);\n      });\n  }, []);\n\n  return (\n    <>\n      <View data-user={name}>\n        <Button onClick={(event) => setShowReviewPrompt(true)}>\n          Write a review\n        </Button>\n        {showReviewPrompt || \\\\\"asdf\\\\\" ? (\n          <>\n            <Input placeholder=\\\\\"Email\\\\\" />\n            <Input placeholder=\\\\\"Title\\\\\" className=\\\\\"input\\\\\" />\n            <Textarea\n              placeholder=\\\\\"How was your experience?\\\\\"\n              className=\\\\\"textarea\\\\\"\n            />\n            <Button\n              className=\\\\\"button\\\\\"\n              onClick={(ev) => {\n                ev.preventDefault();\n                setShowReviewPrompt(false);\n              }}\n            >\n              Submit\n            </Button>\n          </>\n        ) : null}\n        {reviews?.map((review, index) => (\n          <View className=\\\\\"review\\\\\" key={review.id}>\n            <Image className=\\\\\"image\\\\\" source={{ uri: review.avatar }} />\n            <View>\n              <View>N: {index}</View>\n              <View>{review.author}</View>\n              <View>{review.reviewMessage}</View>\n            </View>\n          </View>\n        ))}\n      </View>\n      <style jsx>{\\`\n        .input {\n          display: block;\n        }\n        .textarea {\n          display: block;\n        }\n        .button {\n          display: block;\n        }\n        .review {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .image {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default SmileReviews;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > StoreComment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => true);\n\n  function bar() {}\n\n  return <>{foo}</>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [errors, setErrors] = useState(() => ({}));\n\n  function foo(errors) {\n    return errors;\n  }\n\n  return <>{foo(errors)}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > StoreWithState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [foo, setFoo] = useState(() => false);\n\n  function bar() {\n    return foo;\n  }\n\n  return <>{bar()}</>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Submit 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SubmitButton(props: ButtonProps) {\n  return (\n    <Button type=\\\\\"submit\\\\\" {...props.attributes}>\n      {props.text}\n    </Button>\n  );\n}\n\nexport default SubmitButton;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Text 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Text(props: TextProps) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View\n      contentEditable={allowEditingText || undefined}\n      data-name={{\n        test: name || \\\\\"any name\\\\\",\n      }}\n      dangerouslySetInnerHTML={{\n        __html:\n          props.text ||\n          props.content ||\n          name ||\n          '<p class=\\\\\"text-lg\\\\\">my name</p>',\n      }}\n    />\n  );\n}\n\nexport default Text;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Textarea 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nimport { Textarea } from \\\\\"@tarojs/components\\\\\";\n\nfunction Textarea(props: TextareaProps) {\n  return (\n    <Textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n\nexport default Textarea;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction UseValueAndFnFromStore(props: MyProps) {\n  const [_id, set_id] = useState<MyStore[\\\\\"_id\\\\\"]>(() => \\\\\"abc\\\\\");\n\n  const [_active, set_active] = useState<MyStore[\\\\\"_active\\\\\"]>(() => false);\n\n  function _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n    set_active(!!id);\n\n    if (props.onChange) {\n      props.onChange(_active);\n    }\n  }\n\n  useEffect(() => {\n    if (_do) {\n      _do(_id);\n    }\n  });\n\n  return <View>Test</View>;\n}\n\nexport default UseValueAndFnFromStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > Video 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Video(props: VideoProps) {\n  return (\n    <View\n      preload=\\\\\"none\\\\\"\n      {...props.attributes}\n      style={{\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      key={props.video || \\\\\"no-src\\\\\"}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n\nexport default Video;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"steve\\\\\");\n\n  function setName(value) {\n    setName(value);\n  }\n\n  function updateNameWithArrowFn(value) {\n    setName(value);\n  }\n\n  return <View>Hello {name}</View>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicForFragment 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicForFragment(props: any) {\n  const [id, setId] = useState(() => \\\\\"xyz\\\\\");\n\n  return (\n    <View>\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`key-\\${option}\\`}>\n          <View>{option}</View>\n        </React.Fragment>\n      ))}\n      {[\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"]?.map((option) => (\n        <React.Fragment key={\\`\\${id}-\\${option}\\`}>\n          <View>{option}</View>\n        </React.Fragment>\n      ))}\n      <View>\n        {[\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"]?.map((option) => (\n          <View key={\\`\\${id}-\\${option}\\`} value={option}>\n            {option}\n          </View>\n        ))}\n      </View>\n    </View>\n  );\n}\n\nexport default BasicForFragment;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicForNoTagRefComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"VincentW\\\\\");\n\n  const [TagName, setTagName] = useState(() => \\\\\"div\\\\\");\n\n  const [tag, setTag] = useState(() => \\\\\"span\\\\\");\n\n  function TagNameGetter() {\n    return \\\\\"span\\\\\";\n  }\n\n  const TagNameGetterRef = TagNameGetter();\n\n  return (\n    <TagNameGetterRef>\n      Hello <View>{name}</View>\n      {props.actions?.map((action) => (\n        <TagName>\n          <View />\n          <Text>{action.text}</Text>\n        </TagName>\n      ))}\n    </TagNameGetterRef>\n  );\n}\n\nexport default MyBasicForNoTagRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicForwardRef 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nimport { View, Input } from \\\\\"@tarojs/components\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <View>\n          <Input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </View>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, forwardRef } from \\\\\"react\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nimport { View, Input } from \\\\\"@tarojs/components\\\\\";\n\nconst MyBasicForwardRefComponent = forwardRef<Props[\\\\\"inputRef\\\\\"]>(\n  function MyBasicForwardRefComponent(props: Props, inputRef) {\n    const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n    return (\n      <>\n        <View>\n          <Input\n            className=\\\\\"input\\\\\"\n            ref={inputRef}\n            value={name}\n            onChange={(event) => setName(event.target.value)}\n          />\n        </View>\n        <style jsx>{\\`\n          .input {\n            color: red;\n          }\n        \\`}</style>\n      </>\n    );\n  }\n);\n\nexport default MyBasicForwardRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicOnUpdateReturnComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"PatrickJS\\\\\");\n\n  useEffect(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        setName(data.name);\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [name]);\n\n  return <View>Hello! {name}</View>;\n}\n\nexport default MyBasicOnUpdateReturnComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicRefAttributePassingComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <Button ref={buttonRef}>Attribute Passing</Button>;\n}\n\nexport default BasicRefAttributePassingComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction BasicRefAttributePassingCustomRefComponent(props: any) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <View>\n      <Button ref={buttonRef}>Attribute Passing</Button>\n    </View>\n  );\n}\n\nexport default BasicRefAttributePassingCustomRefComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport MyComp from \\\\\"./my-component\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <View>\n        <MyComp>Hello! I can run in React, Vue, Solid, or Liquid!</MyComp>\n        <View className=\\\\\"view\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </View>\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > class + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > className + css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > className 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ClassNameCode(props: Props) {\n  const [bindings, setBindings] = useState(() => \\\\\"a binding\\\\\");\n\n  return (\n    <View>\n      <View>Without Binding</View>\n      <View>With binding</View>\n    </View>\n  );\n}\n\nexport default ClassNameCode;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > classState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [classState, setClassState] = useState(() => \\\\\"testClassName\\\\\");\n\n  const [styleState, setStyleState] = useState(() => ({\n    color: \\\\\"red\\\\\",\n  }));\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\" style={styleState}>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: Props) {\n  return (\n    <View>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComplexMetaRaw(props: any) {\n  return <View />;\n}\n\nexport default ComplexMetaRaw;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > componentWithContext 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>{foo.value}</>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ComponentWithContext(props: ComponentWithContextProps) {\n  const foo = useContext(Context1);\n\n  return (\n    <Context2.Provider\n      value={{\n        bar: \\\\\"baz\\\\\",\n      }}\n    >\n      <Context1.Provider\n        value={{\n          foo: \\\\\"bar\\\\\",\n\n          content() {\n            return props.content;\n          },\n        }}\n      >\n        <>\n          <>{foo.value}</>\n          <View>other</View>\n        </>\n      </Context1.Provider>\n    </Context2.Provider>\n  );\n}\n\nexport default ComponentWithContext;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > contentState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext } from \\\\\"react\\\\\";\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props: any) {\n  return (\n    <BuilderContext.Provider\n      value={{\n        content: props.content,\n        registeredComponents: props.customComponents,\n      }}\n    >\n      <View>setting context</View>\n    </BuilderContext.Provider>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > defaultProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log(\\\\\"hi\\\\\");\n    },\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick()}\n        >\n          {props.buttonText}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props: ButtonProps) {\n  props = {\n    text: \\\\\"default text\\\\\",\n    link: \\\\\"https://builder.io/\\\\\",\n    openLinkInNewTab: false,\n    onClick: () => {},\n    ...props,\n  };\n  return (\n    <View>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button\n          type=\\\\\"button\\\\\"\n          {...props.attributes}\n          onClick={(event) => props.onClick(event)}\n        >\n          {props.text}\n        </Button>\n      ) : null}\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\nfunction ComponentWithTypes(props: Props) {\n  return <View> Hello {props.name || DEFAULT_VALUES.name}</View>;\n}\n\nexport default ComponentWithTypes;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction EventInputAndChange(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <>\n      <View>\n        <Input\n          className=\\\\\"input\\\\\"\n          value={name}\n          onInput={(event) => setName(event.target.value)}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </View>\n      <style jsx>{\\`\n        .input {\n          color: red;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default EventInputAndChange;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > eventProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction EventPropsComponent(props: EventProps) {\n  function handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n    if (props.onGetVoid) {\n      props.onGetVoid();\n    }\n\n    if (props.onEnter) {\n      console.log(props.onEnter());\n    }\n\n    if (props.onPass) {\n      props.onPass(\\\\\"test\\\\\");\n    }\n  }\n\n  return <Button onClick={(event) => handleClick()}>Test</Button>;\n}\n\nexport default EventPropsComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > expressionState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [refToUse, setRefToUse] = useState(() =>\n    !(props.componentRef instanceof Function) ? props.componentRef : null\n  );\n\n  return <View>{refToUse}</View>;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\nimport * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction FigmaButton(props: any) {\n  return (\n    <Button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </Button>\n  );\n}\n\nexport default FigmaButton;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > functionProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <View\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > getterState 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props: ButtonProps) {\n  function foo2() {\n    return props.foo + \\\\\"foo\\\\\";\n  }\n\n  function bar() {\n    return \\\\\"bar\\\\\";\n  }\n\n  function baz(i: number) {\n    return i + foo2().length;\n  }\n\n  return (\n    <View>\n      <View>{foo2()}</View>\n      <View>{bar()}</View>\n      <View>{baz(1)}</View>\n    </View>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > import types 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props: RenderContentProps) {\n  function getRenderContentProps(block, index) {\n    return {\n      block: block,\n      index: index,\n    };\n  }\n\n  return (\n    <RenderBlock\n      {...state.getRenderContentProps(props.renderContentProps.block, 0)}\n    />\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > layerName 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyLayerNameComponent(props: any) {\n  return (\n    <>\n      <View>\n        <View className=\\\\\"layer-name\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </View>\n      </View>\n      <style jsx>{\\`\n        .layer-name {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyLayerNameComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MultipleOnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default MultipleOnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MultipleOnUpdateWithDeps(props: any) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  const [c, setC] = useState(() => \\\\\"c\\\\\");\n\n  const [d, setD] = useState(() => \\\\\"d\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a, b);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [a, b]);\n  useEffect(() => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c, d);\n\n    if (a === \\\\\"a\\\\\") {\n      setA(\\\\\"b\\\\\");\n    }\n  }, [c, d]);\n\n  return <View />;\n}\n\nexport default MultipleOnUpdateWithDeps;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > multipleSpreads 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState(() => ({\n    hello: \\\\\"world\\\\\",\n  }));\n\n  return <Input {...state.attrs} {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > nestedShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {!props.conditionB ? (\n            <View>if condition A and condition B</View>\n          ) : (\n            <View>else-condition-B</View>\n          )}\n        </>\n      ) : (\n        <View>else-condition-A</View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > nestedStyles 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedStyles(props: any) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">Hello world</View>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .view {\n            display: block;\n          }\n        }\n        .view:hover {\n          display: flex;\n        }\n        .view:active {\n          display: inline;\n        }\n        .view .nested-selector {\n          display: grid;\n        }\n        .view .nested-selector:hover {\n          display: block;\n        }\n        .view.nested-selector:active {\n          display: inline-block;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default NestedStyles;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyNormalizedLayerNamesComponent(\n  props: MyNormalizedLayerNamesComponentProps\n) {\n  return (\n    <>\n      <View>\n        <View>Emoji</View>\n        <View>Dashes</View>\n        <View>CamelCase</View>\n        <View>Special chars</View>\n        <View>Special chars with dashes</View>\n        <View className=\\\\\"css-0\\\\\">Single Number</View>\n        <View className=\\\\\"css-123\\\\\">Multiple Numbers</View>\n        <View className=\\\\\"name-123\\\\\">Chars with numbers at end</View>\n        <View className=\\\\\"name\\\\\">Chars with numbers at start</View>\n        <View className=\\\\\"name-789\\\\\">Numnbers separated by dash</View>\n        <View>Emoji</View>\n        <View data-name=\\\\\"1\\\\\" className=\\\\\"view\\\\\">\n          Number\n        </View>\n      </View>\n      <style jsx>{\\`\n        .css-0 {\n          margin: 10px;\n        }\n        .css-123 {\n          padding: 10px;\n        }\n        .name-123 {\n          border: 1px solid;\n        }\n        .name {\n          color: red;\n        }\n        .name-789 {\n          background: blue;\n        }\n        .view {\n          background: blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyNormalizedLayerNamesComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onEvent 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction Embed(props: any) {\n  const elem = useRef<HTMLDivElement>(null);\n  function foo(event) {\n    console.log(\\\\\"test2\\\\\");\n  }\n\n  function elem_onInitEditingBldr(event) {\n    console.log(\\\\\"test\\\\\");\n    foo(event);\n  }\n\n  useEffect(() => {\n    elem.current?.addEventListener(\\\\\"initEditingBldr\\\\\", elem_onInitEditingBldr);\n    return () =>\n      elem.current?.removeEventListener(\n        \\\\\"initEditingBldr\\\\\",\n        elem_onInitEditingBldr\n      );\n  }, []);\n\n  useEffect(() => {\n    elem.current.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }, []);\n\n  return (\n    <View ref={elem}>\n      <View>Test</View>\n    </View>\n  );\n}\n\nexport default Embed;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onInit & onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useRef, useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnInit(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onInit 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useRef } from \\\\\"react\\\\\";\n\ntype Props = {\n  name: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nfunction OnInit(props: Props) {\n  const [name, setName] = useState(() => \\\\\"\\\\\");\n\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    setName(defaultValues.name || props.name);\n    console.log(\\\\\"set defaults with props\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View>Default name defined by parent {name}</View>;\n}\n\nexport default OnInit;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onInitPlain 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnInitPlain(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    console.log(\\\\\"onInit\\\\\");\n    hasInitialized.current = true;\n  }\n\n  return <View />;\n}\n\nexport default OnInitPlain;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onMount 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"Runs on unMount\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onMountMultiple 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction Comp(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"Another one runs on Mount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"SSR runs on Mount\\\\\");\n  }, []);\n\n  return <View />;\n}\n\nexport default Comp;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdate(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  size: string;\n};\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdateWithDeps(props: Props) {\n  const [a, setA] = useState(() => \\\\\"a\\\\\");\n\n  const [b, setB] = useState(() => \\\\\"b\\\\\");\n\n  useEffect(() => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a, b, props.size);\n  }, [a, b, props.size]);\n\n  return <View />;\n}\n\nexport default OnUpdateWithDeps;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nimport { View } from \\\\\"@tarojs/components\\\\\";\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return <View />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > preserveTyping 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: MyBasicComponentProps) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > propsDestructure 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: Props) {\n  const [name, setName] = useState(() => \\\\\"Decadef20\\\\\");\n\n  return (\n    <View>\n      {props.children}\n      {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > propsInterface 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: Person | never) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > propsType 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: Person) {\n  return (\n    <View>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</View>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction OnUpdate(props: any) {\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  useEffect(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  return <View />;\n}\n\nexport default OnUpdate;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > renderBlock 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component\\\\\";\nimport RenderComponent from \\\\\"./render-component\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderBlock(props: RenderBlockProps) {\n  function component() {\n    const componentName = getProcessedBlock({\n      block: props.block,\n      state: props.context.state,\n      context: props.context.context,\n      shouldEvaluateBindings: false,\n    }).component?.name;\n\n    if (!componentName) {\n      return null;\n    }\n\n    const ref = props.context.registeredComponents[componentName];\n\n    if (!ref) {\n      // TODO: Public doc page with more info about this message\n      console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n      return undefined;\n    } else {\n      return ref;\n    }\n  }\n\n  function tag() {\n    return getBlockTag(useBlock());\n  }\n\n  function useBlock() {\n    return repeatItemData()\n      ? props.block\n      : getProcessedBlock({\n          block: props.block,\n          state: props.context.state,\n          context: props.context.context,\n          shouldEvaluateBindings: true,\n        });\n  }\n\n  function actions() {\n    return getBlockActions({\n      block: useBlock(),\n      state: props.context.state,\n      context: props.context.context,\n    });\n  }\n\n  function attributes() {\n    const blockProperties = getBlockProperties(useBlock());\n    return {\n      ...blockProperties,\n      ...(TARGET === \\\\\"reactNative\\\\\"\n        ? {\n            style: getReactNativeBlockStyles({\n              block: useBlock(),\n              context: props.context,\n              blockStyles: blockProperties.style,\n            }),\n          }\n        : {}),\n    };\n  }\n\n  function shouldWrap() {\n    return !component?.()?.noWrap;\n  }\n\n  function renderComponentProps() {\n    return {\n      blockChildren: useChildren(),\n      componentRef: component?.()?.component,\n      componentOptions: {\n        ...getBlockComponentOptions(useBlock()),\n\n        /**\n         * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n         * they are provided to the component itself directly.\n         */\n        ...(shouldWrap()\n          ? {}\n          : {\n              attributes: { ...attributes(), ...actions() },\n            }),\n        customBreakpoints: childrenContext?.()?.content?.meta?.breakpoints,\n      },\n      context: childrenContext(),\n    };\n  }\n\n  function useChildren() {\n    // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n    // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n    // but still receive and need to render children.\n    // return state.componentInfo?.canHaveChildren ? useBlock().children : [];\n    return useBlock().children ?? [];\n  }\n\n  function childrenWithoutParentComponent() {\n    /**\n     * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n     * we render them outside of \\`componentRef\\`.\n     * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n     * blocks, and the children will be repeated within those blocks.\n     */\n    const shouldRenderChildrenOutsideRef =\n      !component?.()?.component && !repeatItemData();\n    return shouldRenderChildrenOutsideRef ? useChildren() : [];\n  }\n\n  function repeatItemData() {\n    /**\n     * we don't use \\`useBlock()\\` here because the processing done within its logic includes evaluating the block's bindings,\n     * which will not work if there is a repeat.\n     */\n    const { repeat, ...blockWithoutRepeat } = props.block;\n\n    if (!repeat?.collection) {\n      return undefined;\n    }\n\n    const itemsArray = evaluate({\n      code: repeat.collection,\n      state: props.context.state,\n      context: props.context.context,\n    });\n\n    if (!Array.isArray(itemsArray)) {\n      return undefined;\n    }\n\n    const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n    const itemNameToUse =\n      repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n    const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n      context: {\n        ...props.context,\n        state: {\n          ...props.context.state,\n          $index: index,\n          $item: item,\n          [itemNameToUse]: item,\n          [\\`$\\${itemNameToUse}Index\\`]: index,\n        },\n      },\n      block: blockWithoutRepeat,\n    }));\n    return repeatArray;\n  }\n\n  function inheritedTextStyles() {\n    if (TARGET !== \\\\\"reactNative\\\\\") {\n      return {};\n    }\n\n    const styles = getReactNativeBlockStyles({\n      block: useBlock(),\n      context: props.context,\n      blockStyles: attributes().style,\n    });\n    return extractTextStyles(styles);\n  }\n\n  function childrenContext() {\n    return {\n      apiKey: props.context.apiKey,\n      state: props.context.state,\n      content: props.context.content,\n      context: props.context.context,\n      registeredComponents: props.context.registeredComponents,\n      inheritedStyles: inheritedTextStyles(),\n    };\n  }\n\n  function renderComponentTag() {\n    if (TARGET === \\\\\"reactNative\\\\\") {\n      return RenderComponentWithContext;\n    } else if (TARGET === \\\\\"vue3\\\\\") {\n      // vue3 expects a string for the component tag\n      return \\\\\"RenderComponent\\\\\";\n    } else {\n      return RenderComponent;\n    }\n  }\n\n  const [componentInfo, setComponentInfo] = useState(() => null);\n\n  const RenderComponentTagRef = renderComponentTag();\n\n  return (\n    <>\n      {shouldWrap() ? (\n        <>\n          {isEmptyHtmlElement(tag()) ? (\n            <View {...attributes()} {...actions()} />\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && repeatItemData() ? (\n            <>\n              {repeatItemData()?.map((data, index) => (\n                <RenderRepeatedBlock\n                  key={index}\n                  repeatContext={data.context}\n                  block={data.block}\n                />\n              ))}\n            </>\n          ) : null}\n          {!isEmptyHtmlElement(tag()) && !repeatItemData() ? (\n            <View {...attributes()} {...actions()}>\n              <RenderComponentTagRef {...renderComponentProps()} />\n              {childrenWithoutParentComponent()?.map((child) => (\n                <RenderBlock\n                  key={\\\\\"render-block-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n              {childrenWithoutParentComponent()?.map((child) => (\n                <BlockStyles\n                  key={\\\\\"block-style-\\\\\" + child.id}\n                  block={child}\n                  context={childrenContext()}\n                />\n              ))}\n            </View>\n          ) : null}\n        </>\n      ) : (\n        <>\n          <RenderComponentTagRef {...renderComponentProps()} />\n        </>\n      )}\n    </>\n  );\n}\n\nexport default RenderBlock;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > renderContentExample 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useContext, useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderContent(props: Props) {\n  useEffect(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  }, []);\n  useEffect(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  return (\n    <>\n      <BuilderContext.Provider\n        value={{\n          get content() {\n            return 3;\n          },\n\n          get registeredComponents() {\n            return 4;\n          },\n        }}\n      >\n        <View\n          className=\\\\\"view\\\\\"\n          onClick={(event) => trackClick(props.content.id)}\n        >\n          <RenderBlocks blocks={props.content.blocks} />\n        </View>\n      </BuilderContext.Provider>\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: columns;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default RenderContent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nimport { View, Text, Button } from \\\\\"@tarojs/components\\\\\";\n\nfunction Button(props: ButtonProps) {\n  return (\n    <>\n      {props.link ? (\n        <View\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined}\n        >\n          {props.text}\n        </View>\n      ) : null}\n      {!props.link ? (\n        <Button type=\\\\\"button\\\\\" {...props.attributes}>\n          {props.text}\n        </Button>\n      ) : null}\n    </>\n  );\n}\n\nexport default Button;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > rootShow 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction RenderStyles(props: RenderStylesProps) {\n  return (\n    <>\n      {props.foo === \\\\\"bar\\\\\" ? (\n        <>\n          <View>Bar</View>\n        </>\n      ) : (\n        <View>Foo</View>\n      )}\n    </>\n  );\n}\n\nexport default RenderStyles;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > self-referencing component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      {props.name}\n      {props.name === \\\\\"Batman\\\\\" ? <MyComponent name=\\\\\"Bruce Wayne\\\\\" /> : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      {props.name}\n      {props.children}\n      {props.name === \\\\\"Batman\\\\\" ? (\n        <MyComponent name=\\\\\"Bruce\\\\\">\n          <View>Wayne</View>\n        </MyComponent>\n      ) : null}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > setState 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction SetState(props: any) {\n  const [n, setN] = useState(() => [\\\\\"123\\\\\"]);\n\n  function someFn() {\n    n[0] = \\\\\"123\\\\\";\n  }\n\n  return (\n    <View>\n      <Button onClick={(event) => someFn()}>Click me</Button>\n    </View>\n  );\n}\n\nexport default SetState;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > showExpressions 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <View>\n      {props.conditionA ? <>Content0</> : <>ContentA</>}\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <></> : <>ContentA</>}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>{undefined}</> : <>ContentB</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <></> : <>ContentC</>}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <></> : <>ContentD</>}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>hello</> : <>ContentE</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n      {props.conditionA ? <>123</> : <>ContentF</>}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>4mb</>\n      ) : props.conditionB === \\\\\"Complete\\\\\" ? (\n        <>20mb</>\n      ) : (\n        <>9mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>{props.conditionB === \\\\\"Complete\\\\\" ? <>20mb</> : <>9mb</>}</>\n      ) : (\n        <>4mb</>\n      )}\n      {props.conditionA === \\\\\"Default\\\\\" ? (\n        <>\n          {props.conditionB === \\\\\"Complete\\\\\" ? <View>complete</View> : <>9mb</>}\n        </>\n      ) : props.conditionC === \\\\\"Complete\\\\\" ? (\n        <>dff</>\n      ) : (\n        <View>complete else</View>\n      )}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > showWithFor 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction NestedShow(props: Props) {\n  return (\n    <>\n      {props.conditionA ? (\n        <>\n          {props.items?.map((item, idx) => (\n            <View key={idx}>{item}</View>\n          ))}\n        </>\n      ) : (\n        <View>else-condition-A</View>\n      )}\n    </>\n  );\n}\n\nexport default NestedShow;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowWithOtherValues(props: Props) {\n  return (\n    <View>\n      {props.conditionA ? <>ContentA</> : null}\n      {props.conditionA ? <>ContentB</> : <>{undefined}</>}\n      {props.conditionA ? <>ContentC</> : null}\n      {props.conditionA ? <>ContentD</> : null}\n      {props.conditionA ? <>ContentE</> : <>hello</>}\n      {props.conditionA ? <>ContentF</> : <>123</>}\n    </View>\n  );\n}\n\nexport default ShowWithOtherValues;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > showWithRootText 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction ShowRootText(props: Props) {\n  return (\n    <>{props.conditionA ? <>ContentA</> : <View>else-condition-A</View>}</>\n  );\n}\n\nexport default ShowRootText;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: Props) {\n  useEffect(() => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  }, [props.id, props.foo.bar.baz]);\n\n  return (\n    <>\n      <View className=\\\\\"view\\\\\">\n        {props.id}\n        {props.foo.bar.baz}\n      </View>\n      <style jsx>{\\`\n        .view {\n          padding: 10px;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > spreadAttrs 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <Input {...attrs} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <Input {...props.nested} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > spreadProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicComponent(props: any) {\n  return <Input {...props} />;\n}\n\nexport default MyBasicComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > store-async-function 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  async function arrowFunction() {\n    return Promise.resolve();\n  }\n\n  async function namedFunction() {\n    return Promise.resolve();\n  }\n\n  async function fetchUsers() {\n    return Promise.resolve();\n  }\n\n  return <View />;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > string-literal-store 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction StringLiteralStore(props: any) {\n  const [foo, setFoo] = useState(() => 123);\n\n  return <View>{foo}</View>;\n}\n\nexport default StringLiteralStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <View\n        className=\\\\\"view\\\\\"\n        style={{\n          width: \\\\\"100%\\\\\",\n        }}\n      />\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction StylePropClassAndCss(props: any) {\n  return (\n    <>\n      <View className=\\\\\"view\\\\\" style={props.attributes.style} />\n      <style jsx>{\\`\n        .view {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default StylePropClassAndCss;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > subComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport Foo from \\\\\"./foo-sub-component\\\\\";\nimport \\\\\"@tarojs/components\\\\\";\n\nfunction SubComponent(props: any) {\n  return <Foo />;\n}\n\nexport default SubComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > svgComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction SvgComponent(props: any) {\n  return (\n    <View\n      fill=\\\\\"none\\\\\"\n      role=\\\\\"img\\\\\"\n      viewBox={\\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42}\n      width={42}\n      height={42}\n    >\n      <View>\n        <View id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n          <feFlood result=\\\\\"BackgroundImageFix\\\\\" />\n          <feBlend in=\\\\\"SourceGraphic\\\\\" in2=\\\\\"BackgroundImageFix\\\\\" result=\\\\\"shape\\\\\" />\n          <feGaussianBlur result=\\\\\"effect1_foregroundBlur\\\\\" stdDeviation={7} />\n        </View>\n      </View>\n    </View>\n  );\n}\n\nexport default SvgComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > typeDependency 1`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeDependency(props: TypeDependencyProps) {\n  return <View>{props.foo}</View>;\n}\n\nexport default TypeDependency;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { FooProps } from \\\\\"./foo-props\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeExternalProps(props: FooProps) {\n  return <View>Hello {props.name}! </View>;\n}\n\nexport default TypeExternalProps;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > typeExternalStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { FooStore } from \\\\\"./foo-store\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeExternalStore(props: any) {\n  const [_name, set_name] = useState<FooStore[\\\\\"_name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  return <View>Hello {_name}! </View>;\n}\n\nexport default TypeExternalStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > typeGetterStore 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction TypeGetterStore(props: any) {\n  const [name, setName] = useState<GetterStore[\\\\\"name\\\\\"]>(() => \\\\\"test\\\\\");\n\n  function getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n    if (name === \\\\\"a\\\\\") {\n      return \\\\\"b\\\\\";\n    }\n\n    return name;\n  }\n\n  function test(): ReturnType<GetterStore[\\\\\"test\\\\\"]> {\n    return \\\\\"test\\\\\";\n  }\n\n  return <View>Hello {name}! </View>;\n}\n\nexport default TypeGetterStore;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > use-style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > use-style-and-css 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\" className=\\\\\"button\\\\\">\n        Button\n      </Button>\n      <style jsx>{\\`\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n\n        .button {\n          background: blue;\n          color: white;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <Button type=\\\\\"button\\\\\">Button</Button>\n      <style jsx>{\\`\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > useTarget 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction UseTargetComponent(props: any) {\n  function name() {\n    const prefix = \\\\\"t\\\\\";\n    return prefix + \\\\\"foo\\\\\";\n  }\n\n  const [lastName, setLastName] = useState(() => \\\\\"bar\\\\\");\n\n  const [foo, setFoo] = useState(() => \\\\\"bar\\\\\");\n\n  useEffect(() => {\n    console.log(foo);\n    setFoo(\\\\\"bar\\\\\");\n  }, []);\n\n  return <View>{name()}</View>;\n}\n\nexport default UseTargetComponent;\n\"\n`;\n\nexports[`Taro > jsx > Typescript Test > webComponent 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { useRef } from \\\\\"react\\\\\";\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyBasicWebComponent(props: any) {\n  const hasInitialized = useRef(false);\n  if (!hasInitialized.current) {\n    register();\n    hasInitialized.current = true;\n  }\n\n  return (\n    <View slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n      <View>Slide 1</View>\n      <View>Slide 2</View>\n      <View>Slide 3</View>\n    </View>\n  );\n}\n\nexport default MyBasicWebComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <Input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <View>\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <View />\n      <View />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <View>Tortilla: {tortilla}</View>\n      <View>Fillings: {fillings}</View>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <Input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [focus, setFocus] = useState(() => true);\n\n  return <Input />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > context 1`] = `\n\"'>' expected. (35:13)\n  33 |\n  34 |\n> 35 | <'activeTab'.Provider  value={activeTab}><View>{activeTab}</View></'activeTab'.Provider>\n     |             ^\n  36 |\n  37 |\n  38 | );\"\n`;\n\nexports[`Taro > svelte > Javascript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <View>\n      {numbers?.map((num) => (\n        <View>{num}</View>\n      ))}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > eventHandlers 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <View>\n      <Button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</Button>\n      <Button onClick={(event) => log(event)}>Log</Button>\n      <Button onClick={(event) => log(event)}>Log</Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <View dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <Button onClick={(event) => toggle(event)}> Hide </Button>\n        </>\n      ) : (\n        <Button onClick={(event) => toggle(event)}> Show </Button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <View>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      <Input value={name} />\n      Lowercase: {lowercaseName()}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <View>\n      <Input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <Input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <View>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <View>default</View>}</>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Input />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Javascript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <View>\n      normal:\n      {a + b}\n      <View />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > basic 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  return (\n    <View>\n      <Input onChange={(event) => setName(event.target.value)} value={name} />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > bindGroup 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [tortilla, setTortilla] = useState(() => \\\\\"Plain\\\\\");\n\n  const [fillings, setFillings] = useState(() => []);\n\n  return (\n    <View>\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Plain\\\\\"\n        checked={tortilla === \\\\\"Plain\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Whole wheat\\\\\"\n        checked={tortilla === \\\\\"Whole wheat\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <Input\n        type=\\\\\"radio\\\\\"\n        value=\\\\\"Spinach\\\\\"\n        checked={tortilla === \\\\\"Spinach\\\\\"}\n        onChange={(event) => setTortilla(event.target.value)}\n      />\n      <View />\n      <View />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Rice\\\\\"\n        checked={fillings === \\\\\"Rice\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Beans\\\\\"\n        checked={fillings === \\\\\"Beans\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Cheese\\\\\"\n        checked={fillings === \\\\\"Cheese\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <Input\n        type=\\\\\"checkbox\\\\\"\n        value=\\\\\"Guac (extra)\\\\\"\n        checked={fillings === \\\\\"Guac (extra)\\\\\"}\n        onChange={(event) => setFillings(event.target.value)}\n      />\n      <View>Tortilla: {tortilla}</View>\n      <View>Fillings: {fillings}</View>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > bindProperty 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [value, setValue] = useState(() => \\\\\"hello\\\\\");\n\n  return <Input value={value} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > classDirective 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [focus, setFocus] = useState(() => true);\n\n  return <Input />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > context 1`] = `\n\"'>' expected. (35:13)\n  33 |\n  34 |\n> 35 | <'activeTab'.Provider  value={activeTab}><View>{activeTab}</View></'activeTab'.Provider>\n     |             ^\n  36 |\n  37 |\n  38 | );\"\n`;\n\nexports[`Taro > svelte > Typescript Test > each 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [numbers, setNumbers] = useState(() => [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n\n  return (\n    <View>\n      {numbers?.map((num) => (\n        <View>{num}</View>\n      ))}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > eventHandlers 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Button, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  function log(msg = \\\\\"hello\\\\\") {\n    console.log(msg);\n  }\n\n  return (\n    <View>\n      <Button onClick={(a) => log(\\\\\"hi\\\\\")}>Log</Button>\n      <Button onClick={(event) => log(event)}>Log</Button>\n      <Button onClick={(event) => log(event)}>Log</Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > html 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [html, setHtml] = useState(() => \\\\\"<b>bold</b>\\\\\");\n\n  return <View dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > ifElse 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Button, View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [show, setShow] = useState(() => true);\n\n  function toggle() {\n    setShow(!show);\n  }\n\n  return (\n    <>\n      {show ? (\n        <>\n          <Button onClick={(event) => toggle(event)}> Hide </Button>\n        </>\n      ) : (\n        <Button onClick={(event) => toggle(event)}> Show </Button>\n      )}\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > imports 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport Button from \\\\\"./Button\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [disabled, setDisabled] = useState(() => false);\n\n  return (\n    <View>\n      <Button type=\\\\\"button\\\\\" disabled={disabled}>\n        <>{props.children}</>\n      </Button>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useEffect } from \\\\\"react\\\\\";\nimport { View } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  useEffect(() => {\n    console.log(\\\\\"onMount\\\\\");\n  }, []);\n  useEffect(() => {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  });\n  useEffect(() => {\n    return () => {\n      console.log(\\\\\"onDestroy\\\\\");\n    };\n  }, []);\n\n  return <View />;\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > reactive 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n  function lowercaseName() {\n    return name.toLowerCase();\n  }\n\n  return (\n    <View>\n      <Input value={name} />\n      Lowercase: {lowercaseName()}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState, useEffect } from \\\\\"react\\\\\";\nimport { View, Input, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 2);\n\n  const [b, setB] = useState(() => 5);\n\n  const [result, setResult] = useState(() => null);\n\n  function calculateResult(a_, b_) {\n    setResult(a_ * b_);\n  }\n\n  useEffect(() => {\n    calculateResult(a, b);\n  }, [a, b]);\n\n  return (\n    <View>\n      <Input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setA(event.target.value)}\n        value={a}\n      />\n      <Input\n        type=\\\\\"number\\\\\"\n        onChange={(event) => setB(event.target.value)}\n        value={b}\n      />\n      Result: {result}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > slots 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <View>\n      <>{props.children || \\\\\"default\\\\\"}</>\n      <>{props.Test || <View>default</View>}</>\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > style 1`] = `\n\"import * as React from \\\\\"react\\\\\";\nimport { Input } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  return (\n    <>\n      <Input />\n      <style jsx>{\\`\n        input {\n          color: red;\n          font-size: 12px;\n        }\n\n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Taro > svelte > Typescript Test > textExpressions 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { View, Text } from \\\\\"@tarojs/components\\\\\";\n\nfunction MyComponent(props: any) {\n  const [a, setA] = useState(() => 5);\n\n  const [b, setB] = useState(() => 12);\n\n  return (\n    <View>\n      normal:\n      {a + b}\n      <View />\n      conditional\n      {a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\"}\n    </View>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/vue-composition.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Vue > jsx > Javascript Test > Advanced 1`] = `\n\"<template>\n  <main>\n    <template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <div>{{ i }}: {{ person }}</div> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}</span> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(_, index) in names\\\\\">\n      <br /> </template\n    ><template\n      :key=\\\\\"ee\\\\\"\n      v-for=\\\\\"(_, ee) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <pre>{{ ee }}</pre></template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(_, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <p>{{ index }}</p> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}{{ index }}</span> </template\n    ><template\n      :key=\\\\\"count\\\\\"\n      v-for=\\\\\"(person, count) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ count }}</span> </template\n    ><template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <span>{{ person }}{{ i }}</span> </template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(person, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ index }}</span>\n    </template>\n  </main>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"showInput\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst inputRef = ref(null);\nconst inputNoArgRef = ref(null);\n\nwatch(\n  () => [inputRef.value, inputNoArgRef.value],\n  () => {\n    console.log(\\\\\"Received an update\\\\\");\n  },\n  { immediate: true }\n);\nfunction onBlur() {\n  // Maintain focus\n  inputRef.value.focus();\n}\nfunction lowerCaseName() {\n  return name.value.toLowerCase();\n}\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">\n    <input\n      :value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n      @change=\\\\\"async (myEvent) => (name = myEvent.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nconst name = ref(\\\\\"Steve\\\\\");\nconst age = ref(1);\nconst sports = ref([\\\\\"\\\\\"]);\n\nfunction underscore_fn_name() {\n  return \\\\\"bar\\\\\";\n}\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic 2`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <template v-if=\\\\\"person === name\\\\\">\n        <input\n          :value=\\\\\"name\\\\\"\n          @change=\\\\\"\n            async (event) => {\n              name = event.target.value + ' and ' + person;\n            }\n          \\\\\"\n        />\n\n        Hello\n        {{ person }}\n        ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n      </template>\n    </template>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Context 1`] = `\n\"<template>\n  <div>\n    {{ myService.method(\\\\\"hello\\\\\") + name }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    <input @change=\\\\\"async (event) => onChange()\\\\\" />\n  </div>\n</template>\n\n<script setup>\nimport { inject, onMounted, provide, ref } from \\\\\"vue\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst myService = inject(MyService.key);\n\nprovide(Injector.key, createInjector());\n\nconst hi = myService.method(\\\\\"hi\\\\\");\nconsole.log(hi);\nonMounted(() => {\n  const bye = myService.method(\\\\\"hi\\\\\");\n  console.log(bye);\n});\n\nfunction onChange() {\n  const change = myService.method(\\\\\"change\\\\\");\n  console.log(change);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"bye\\\\\", \\\\\"hi\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\nname.value = \\\\\"PatrickJS onInit\\\\\" + props.hi;\nonMounted(() => {\n  name.value = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nonMounted(() => {\n  props.onMessageChange(name.value);\n  props.onEvent(props.message);\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nonMounted(() => {\n  props.onMessageChange(name.value);\n  props.onEvent(props.message);\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicAttribute 1`] = `\n\"<template>\n  <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" :spellcheck=\\\\\"true\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"$slots.default\\\\\">\n      <slot />\n      {{ type }}\n    </template>\n\n    <MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n  </div>\n</template>\n\n<script setup>\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nconst props = defineProps([\\\\\"children\\\\\", \\\\\"type\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<template>\n  <div>\n    <MyBasicComponent :id=\\\\\"dev\\\\\"></MyBasicComponent>\n    <div>\n      <MyBasicOnMountUpdateComponent\n        :hi=\\\\\"name\\\\\"\n        :bye=\\\\\"dev\\\\\"\n      ></MyBasicOnMountUpdateComponent\n      ><MyBasicOutputsComponent\n        message=\\\\\"Test\\\\\"\n        :onMessageChange=\\\\\"(name) => (name = name)\\\\\"\n        :onEvent=\\\\\"(event) => log('Test')\\\\\"\n      ></MyBasicOutputsComponent>\n    </div>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\nconst dev = ref(\\\\\"PatrickJS\\\\\");\n\nfunction log(message) {\n  console.log(message);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicFor 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <input\n        :value=\\\\\"name\\\\\"\n        @change=\\\\\"\n          async (event) => {\n            name = event.target.value + ' and ' + person;\n          }\n        \\\\\"\n      />\n\n      Hello\n      {{ person }}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\nonMounted(() => {\n  console.log(\\\\\"onMount code\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"showInput\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst inputRef = ref(null);\nconst inputNoArgRef = ref(null);\n\nfunction onBlur() {\n  // Maintain focus\n  inputRef.value?.focus();\n}\nfunction lowerCaseName() {\n  return name.value.toLowerCase();\n}\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<template>\n  <div><button @click=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst holdValueRef = ref(null);\n\nfunction handlerClick(event) {\n  event.preventDefault();\n  console.log(\\\\\"current value\\\\\", holdValueRef.value);\n  holdValueRef.value = holdValueRef.value + \\\\\"JS\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<template>\n  <div>\n    <h1>Now: {{ count }}, before: {{ prevCount }}</h1>\n    <button @click=\\\\\"async (event) => (count += 1)\\\\\">Increment</button>\n  </div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nconst count = ref(0);\n\nconst prevCount = ref(null);\n\nwatch(\n  () => [count.value],\n  () => {\n    prevCount.value = count.value;\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Button 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Columns 1`] = `\n\"<template>\n  <div class=\\\\\"builder-columns div\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(column, index) in columns\\\\\">\n      <div class=\\\\\"builder-column div-2\\\\\">{{ column.content }}{{ index }}</div>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"columns\\\\\", \\\\\"space\\\\\"]);\n\nfunction getColumns() {\n  return props.columns || [];\n}\nfunction getGutterSize() {\n  return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n}\nfunction getWidth(index) {\n  const columns = getColumns();\n  return (columns[index] && columns[index].width) || 100 / columns.length;\n}\nfunction getColumnCssWidth(index) {\n  const columns = getColumns();\n  const gutterSize = getGutterSize();\n  const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n  return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n}\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"testing\\\\\"></slot>\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n</template>\n\n<script setup>\nimport { useSlots } from \\\\\"vue\\\\\";\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"<template>\n  <template v-if=\\\\\"$slots.reference\\\\\">\n    <div\n      :name=\\\\\"$slots.content ? 'name1' : 'name2'\\\\\"\n      :title=\\\\\"$slots.content ? 'title1' : 'title2'\\\\\"\n      @click=\\\\\"async (event) => show()\\\\\"\n      :class=\\\\\"cls\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n    >\n      <template v-if=\\\\\"showContent && $slots.content\\\\\">\n        <slot name=\\\\\"content\\\\\">{{ content }}</slot>\n      </template>\n\n      <div><hr /></div>\n      <div><slot /></div>\n    </div>\n  </template>\n</template>\n\n<script setup>\nimport { computed, ref, useSlots } from \\\\\"vue\\\\\";\n\nconst props = withDefaults(defineProps(), {\n  children: undefined,\n  attributes: undefined,\n  content: \\\\\"\\\\\",\n});\nconst name = ref(\\\\\"king\\\\\");\nconst showContent = ref(false);\n\nconst cls = computed(() => {\n  return useSlots().content && useSlots().default\n    ? \\`\\${name.value}-content\\`\n    : \\\\\"\\\\\";\n});\n\nfunction show() {\n  useSlots().content ? 1 : \\\\\"\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > CustomCode 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"]);\nconst scriptsInserted = ref([]);\nconst scriptsRun = ref([]);\n\nconst elem = ref(null);\n\nonMounted(() => {\n  findAndRunScripts();\n});\n\nfunction findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (scriptsInserted.value.includes(script.src)) {\n          continue;\n        }\n\n        scriptsInserted.value.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (scriptsRun.value.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          scriptsRun.value.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Embed 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"]);\nconst scriptsInserted = ref([]);\nconst scriptsRun = ref([]);\n\nconst elem = ref(null);\n\nonMounted(() => {\n  findAndRunScripts();\n});\n\nfunction findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (scriptsInserted.value.includes(script.src)) {\n          continue;\n        }\n\n        scriptsInserted.value.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (scriptsRun.value.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          scriptsRun.value.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Form 1`] = `\n\"<template>\n  <form\n    :validate=\\\\\"validate\\\\\"\n    ref=\\\\\"formRef\\\\\"\n    :action=\\\\\"!sendWithJs && action\\\\\"\n    :method=\\\\\"method\\\\\"\n    :name=\\\\\"name\\\\\"\n    @submit=\\\\\"async (event) => onSubmit(event)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template v-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n      <template\n        :key=\\\\\"block.id\\\\\"\n        v-for=\\\\\"(block, index) in builderBlock?.children\\\\\"\n      >\n        <BuilderBlockComponent\n          :block=\\\\\"block\\\\\"\n          :index=\\\\\"index\\\\\"\n        ></BuilderBlockComponent>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"errorMessage\\\\\"\n        :blocks=\\\\\"errorMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'sending'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"sendingMessage\\\\\"\n        :blocks=\\\\\"sendingMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n      <pre class=\\\\\"builder-form-error-text pre\\\\\">{{\n        JSON.stringify(responseData, null, 2)\n      }}</pre>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'success'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"successMessage\\\\\"\n        :blocks=\\\\\"successMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n  </form>\n</template>\n\n<script setup>\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nconst props = defineProps([\n  \\\\\"previewState\\\\\",\n  \\\\\"sendWithJs\\\\\",\n  \\\\\"sendSubmissionsTo\\\\\",\n  \\\\\"action\\\\\",\n  \\\\\"customHeaders\\\\\",\n  \\\\\"contentType\\\\\",\n  \\\\\"sendSubmissionsToEmail\\\\\",\n  \\\\\"name\\\\\",\n  \\\\\"method\\\\\",\n  \\\\\"errorMessagePath\\\\\",\n  \\\\\"resetFormOnSubmit\\\\\",\n  \\\\\"successUrl\\\\\",\n  \\\\\"validate\\\\\",\n  \\\\\"attributes\\\\\",\n  \\\\\"builderBlock\\\\\",\n  \\\\\"errorMessage\\\\\",\n  \\\\\"sendingMessage\\\\\",\n  \\\\\"successMessage\\\\\",\n]);\nconst formState = ref(\\\\\"unsubmitted\\\\\");\nconst responseData = ref(null);\nconst formErrorMessage = ref(\\\\\"\\\\\");\n\nconst formRef = ref(null);\n\nconst submissionState = computed(() => {\n  return (Builder.isEditing && props.previewState) || formState.value;\n});\n\nfunction onSubmit(event) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n  if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs = Array.from(\n      event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n    )\n      .filter((el) => !!el.name)\n      .map((el) => {\n        let value;\n        const key = el.name;\n\n        if (el instanceof HTMLInputElement) {\n          if (el.type === \\\\\"radio\\\\\") {\n            if (el.checked) {\n              value = el.name;\n              return {\n                key,\n                value,\n              };\n            }\n          } else if (el.type === \\\\\"checkbox\\\\\") {\n            value = el.checked;\n          } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n            const num = el.valueAsNumber;\n\n            if (!isNaN(num)) {\n              value = num;\n            }\n          } else if (el.type === \\\\\"file\\\\\") {\n            // TODO: one vs multiple files\n            value = el.files;\n          } else {\n            value = el.value;\n          }\n        } else {\n          value = el.value;\n        }\n\n        return {\n          key,\n          value,\n        };\n      });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n      contentType = \\\\\"multipart/form-data\\\\\";\n    }\n\n    Array.from(formPairs).forEach(({ value }) => {\n      if (\n        value instanceof File ||\n        (Array.isArray(value) && value[0] instanceof File) ||\n        value instanceof FileList\n      ) {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== \\\\\"application/json\\\\\") {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({ value, key }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n      if (\n        /* Zapier doesn't allow content-type header to be sent from browsers */\n        !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n      ) {\n        headers[\\\\\"content-type\\\\\"] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n      detail: {\n        body,\n      },\n    });\n\n    if (formRef.value) {\n      formRef.value.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    formState.value = \\\\\"sending\\\\\";\n    const formUrl = \\`\\${\n      builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n    }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n      props.sendSubmissionsToEmail || \\\\\"\\\\\"\n    )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n    fetch(\n      props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action,\n      /* TODO: throw error if no action URL */\n      {\n        body,\n        headers,\n        method: props.method || \\\\\"post\\\\\",\n      }\n    ).then(\n      async (res) => {\n        let body;\n        const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n        if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n          body = await res.json();\n        } else {\n          body = await res.text();\n        }\n\n        if (!res.ok && props.errorMessagePath) {\n          /* TODO: allow supplying an error formatter function */\n          let message = get(body, props.errorMessagePath);\n\n          if (message) {\n            if (typeof message !== \\\\\"string\\\\\") {\n              /* TODO: ideally convert json to yaml so it woul dbe like\n         error: - email has been taken */\n              message = JSON.stringify(message);\n            }\n\n            formErrorMessage.value = message;\n          }\n        }\n\n        responseData.value = body;\n        formState.value = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n        if (res.ok) {\n          const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n            detail: {\n              res,\n              body,\n            },\n          });\n\n          if (formRef.value) {\n            formRef.value.dispatchEvent(submitSuccessEvent);\n\n            if (submitSuccessEvent.defaultPrevented) {\n              return;\n            }\n            /* TODO: option to turn this on/off? */\n\n            if (props.resetFormOnSubmit !== false) {\n              formRef.value.reset();\n            }\n          }\n          /* TODO: client side route event first that can be preventDefaulted */\n\n          if (props.successUrl) {\n            if (formRef.value) {\n              const event = new CustomEvent(\\\\\"route\\\\\", {\n                detail: {\n                  url: props.successUrl,\n                },\n              });\n              formRef.value.dispatchEvent(event);\n\n              if (!event.defaultPrevented) {\n                location.href = props.successUrl;\n              }\n            } else {\n              location.href = props.successUrl;\n            }\n          }\n        }\n      },\n      (err) => {\n        const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n          detail: {\n            error: err,\n          },\n        });\n\n        if (formRef.value) {\n          formRef.value.dispatchEvent(submitErrorEvent);\n\n          if (submitErrorEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        responseData.value = err;\n        formState.value = \\\\\"error\\\\\";\n      }\n    );\n  }\n}\n</script>\n\n<style scoped>\n.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Image 1`] = `\n\"<template>\n  <div>\n    <picture ref=\\\\\"pictureRef\\\\\">\n      <template v-if=\\\\\"!useLazyLoading() || load\\\\\">\n        <img\n          :alt=\\\\\"altText\\\\\"\n          :aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n          :class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n          :src=\\\\\"image\\\\\"\n          @load=\\\\\"async (event) => setLoaded()\\\\\"\n          :srcset=\\\\\"srcset\\\\\"\n          :sizes=\\\\\"sizes\\\\\"\n        />\n      </template>\n\n      <source :srcset=\\\\\"srcset\\\\\" /></picture\n    ><slot />\n  </div>\n</template>\n\n<script setup>\nimport { onMounted, onUnmounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\n  \\\\\"lazy\\\\\",\n  \\\\\"altText\\\\\",\n  \\\\\"_class\\\\\",\n  \\\\\"image\\\\\",\n  \\\\\"srcset\\\\\",\n  \\\\\"sizes\\\\\",\n  \\\\\"children\\\\\",\n]);\nconst scrollListener = ref(null);\nconst imageLoaded = ref(false);\nconst load = ref(false);\n\nconst pictureRef = ref(null);\n\nonMounted(() => {\n  if (useLazyLoading()) {\n    // throttled scroll capture listener\n    const listener = () => {\n      if (pictureRef.value) {\n        const rect = pictureRef.value.getBoundingClientRect();\n        const buffer = window.innerHeight / 2;\n\n        if (rect.top < window.innerHeight + buffer) {\n          load.value = true;\n          scrollListener.value = null;\n          window.removeEventListener(\\\\\"scroll\\\\\", listener);\n        }\n      }\n    };\n\n    scrollListener.value = listener;\n    window.addEventListener(\\\\\"scroll\\\\\", listener, {\n      capture: true,\n      passive: true,\n    });\n    listener();\n  }\n});\nonUnmounted(() => {\n  if (scrollListener.value) {\n    window.removeEventListener(\\\\\"scroll\\\\\", scrollListener.value);\n  }\n});\n\nfunction setLoaded() {\n  imageLoaded.value = true;\n}\nfunction useLazyLoading() {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && isBrowser();\n}\nfunction isBrowser() {\n  return (\n    typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n  );\n}\n</script>\n\n<style scoped>\n.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Image State 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"itemIndex\\\\\" v-for=\\\\\"(item, itemIndex) in images\\\\\">\n      <img class=\\\\\"custom-class\\\\\" :src=\\\\\"item\\\\\" :key=\\\\\"itemIndex\\\\\" />\n    </template>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst canShow = ref(true);\nconst images = ref([\\\\\"http://example.com/qwik.png\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Img 1`] = `\n\"<template>\n  <img\n    :style=\\\\\"{\n      objectFit: backgroundSize || 'cover',\n      objectPosition: backgroundPosition || 'center',\n    }\\\\\"\n    :key=\\\\\"(Builder.isEditing && imgSrc) || 'default-key'\\\\\"\n    :alt=\\\\\"altText\\\\\"\n    :src=\\\\\"imgSrc\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script setup>\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nconst props = defineProps([\n  \\\\\"backgroundSize\\\\\",\n  \\\\\"backgroundPosition\\\\\",\n  \\\\\"attributes\\\\\",\n  \\\\\"imgSrc\\\\\",\n  \\\\\"altText\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Input 1`] = `\n\"<template>\n  <input\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :placeholder=\\\\\"placeholder\\\\\"\n    :type=\\\\\"type\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :required=\\\\\"required\\\\\"\n    @change=\\\\\"async (event) => onChange?.(event.target.value)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script setup>\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nconst props = defineProps([\n  \\\\\"attributes\\\\\",\n  \\\\\"defaultValue\\\\\",\n  \\\\\"placeholder\\\\\",\n  \\\\\"type\\\\\",\n  \\\\\"name\\\\\",\n  \\\\\"value\\\\\",\n  \\\\\"required\\\\\",\n  \\\\\"onChange\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > InputParent 1`] = `\n\"<template>\n  <FormInputComponent\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    :onChange=\\\\\"(value) => handleChange(value)\\\\\"\n  ></FormInputComponent>\n</template>\n\n<script setup>\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction handleChange(value) {\n  console.log(value);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > NestedStore 1`] = `\n\"<template>\n  <div :id=\\\\\"_id\\\\\">\n    Test\n    <p :id=\\\\\"_messageId\\\\\">Message</p>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst _id = ref(\\\\\"abc\\\\\");\nconst _messageId = ref(_id.value + \\\\\"-message\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > RawText 1`] = `\n\"<template>\n  <span\n    :class=\\\\\"attributes?.class || attributes?.className\\\\\"\n    v-html=\\\\\"text || ''\\\\\"\n  ></span>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"attributes\\\\\", \\\\\"text\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Section 1`] = `\n\"<template>\n  <section\n    :style=\\\\\"\n      maxWidth && typeof maxWidth === 'number'\n        ? {\n            maxWidth: maxWidth,\n          }\n        : undefined\n    \\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <slot />\n  </section>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"attributes\\\\\", \\\\\"maxWidth\\\\\", \\\\\"children\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Section 2`] = `\n\"<template>\n  <template v-if=\\\\\"max\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(item, index) in items\\\\\">\n      <section\n        :style=\\\\\"{\n          maxWidth: item + max,\n        }\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        <slot />\n      </section>\n    </template>\n  </template>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"attributes\\\\\", \\\\\"children\\\\\"]);\nconst max = ref(42);\nconst items = ref([42]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Select 1`] = `\n\"<template>\n  <select\n    :value=\\\\\"value\\\\\"\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :name=\\\\\"name\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(option, index) in options\\\\\">\n      <option :value=\\\\\"option.value\\\\\" :data-index=\\\\\"index\\\\\">\n        {{ option.name || option.value }}\n      </option>\n    </template>\n  </select>\n</template>\n\n<script setup>\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nconst props = defineProps([\n  \\\\\"attributes\\\\\",\n  \\\\\"value\\\\\",\n  \\\\\"defaultValue\\\\\",\n  \\\\\"name\\\\\",\n  \\\\\"options\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotDefault 1`] = `\n\"<template>\n  <div>\n    <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n  </div>\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotHtml 1`] = `\n\"<template>\n  <div>\n    <ContentSlotCode>\n      <template #testing>\n        <div>Hello</div>\n      </template>\n    </ContentSlotCode>\n  </div>\n</template>\n\n<script setup>\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotJsx 1`] = `\n\"<template>\n  <div><ContentSlotCode :slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode></div>\n</template>\n\n<script setup>\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotNamed 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"my-awesome-slot\\\\\"></slot><slot name=\\\\\"top\\\\\"></slot\n    ><slot name=\\\\\"left\\\\\">Default left</slot><slot>Default Child</slot>\n  </div>\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Stamped.io 1`] = `\n\"<template>\n  <div :data-user=\\\\\"name\\\\\">\n    <button @click=\\\\\"async (event) => (showReviewPrompt = true)\\\\\">\n      Write a review\n    </button>\n    <template v-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n      <input placeholder=\\\\\"Email\\\\\" />\n      <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n      <textarea\n        placeholder=\\\\\"How was your experience?\\\\\"\n        class=\\\\\"textarea\\\\\"\n      ></textarea>\n      <button\n        class=\\\\\"button\\\\\"\n        @click=\\\\\"\n          async (ev) => {\n            ev.preventDefault();\n            showReviewPrompt = false;\n          }\n        \\\\\"\n      >\n        Submit\n      </button>\n    </template>\n\n    <template :key=\\\\\"review.id\\\\\" v-for=\\\\\"(review, index) in reviews\\\\\">\n      <div class=\\\\\"review\\\\\">\n        <img class=\\\\\"img\\\\\" :src=\\\\\"review.avatar\\\\\" />\n        <div :class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n          <div>N: {{ index }}</div>\n          <div>{{ review.author }}</div>\n          <div>{{ review.reviewMessage }}</div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nconst props = defineProps([\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"]);\nconst reviews = ref([]);\nconst name = ref(\\\\\"test\\\\\");\nconst showReviewPrompt = ref(false);\n\nonMounted(() => {\n  fetch(\n    \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n      props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n    }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n  )\n    .then((res) => res.json())\n    .then((data) => {\n      reviews.value = data.data;\n    });\n});\n\nfunction kebabCaseValue() {\n  return kebabCase(\\\\\"testThat\\\\\");\n}\nfunction snakeCaseValue() {\n  return snakeCase(\\\\\"testThis\\\\\");\n}\n</script>\n\n<style scoped>\n.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreComment 1`] = `\n\"<template>\n  {{ foo }}\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(true);\n\nfunction bar() {}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<template>\n  {{ foo(errors) }}\n</template>\n\n<script setup>\n   import { ref } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\n   const errors= ref({})\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction foo(errors.value) {\nreturn errors.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreWithState 1`] = `\n\"<template>\n  {{ bar() }}\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(false);\n\nfunction bar() {\n  return foo.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Submit 1`] = `\n\"<template>\n  <button type=\\\\\"submit\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"attributes\\\\\", \\\\\"text\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Text 1`] = `\n\"<template>\n  <div\n    :contentEditable=\\\\\"allowEditingText || undefined\\\\\"\n    :data-name=\\\\\"{\n      test: name || 'any name',\n    }\\\\\"\n    v-html=\\\\\"text || content || name || '<p class=\\\\\\\\'text-lg\\\\\\\\'>my name</p>'\\\\\"\n  ></div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nconst props = defineProps([\\\\\"text\\\\\", \\\\\"content\\\\\"]);\nconst name = ref(\\\\\"Decadef20\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Textarea 1`] = `\n\"<template>\n  <textarea\n    :placeholder=\\\\\"placeholder\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></textarea>\n</template>\n\n<script setup>\nconst props = defineProps([\n  \\\\\"attributes\\\\\",\n  \\\\\"placeholder\\\\\",\n  \\\\\"name\\\\\",\n  \\\\\"value\\\\\",\n  \\\\\"defaultValue\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<template>\n  <div>Test</div>\n</template>\n\n<script setup>\nimport { onUpdated, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"onChange\\\\\"]);\nconst _id = ref(\\\\\"abc\\\\\");\nconst _active = ref(false);\n\nonUpdated(() => {\n  if (_do) {\n    _do(_id.value);\n  }\n});\n\nfunction _do(id) {\n  _active.value = !!id;\n\n  if (props.onChange) {\n    props.onChange(_active.value);\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Video 1`] = `\n\"<template>\n  <video\n    preload=\\\\\"none\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n      height: '100%',\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }\\\\\"\n    :key=\\\\\"video || 'no-src'\\\\\"\n    :poster=\\\\\"posterImage\\\\\"\n    :autoplay=\\\\\"autoPlay\\\\\"\n    :muted=\\\\\"muted\\\\\"\n    :controls=\\\\\"controls\\\\\"\n    :loop=\\\\\"loop\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></video>\n</template>\n\n<script setup>\nconst props = defineProps([\n  \\\\\"attributes\\\\\",\n  \\\\\"fit\\\\\",\n  \\\\\"position\\\\\",\n  \\\\\"video\\\\\",\n  \\\\\"posterImage\\\\\",\n  \\\\\"autoPlay\\\\\",\n  \\\\\"muted\\\\\",\n  \\\\\"controls\\\\\",\n  \\\\\"loop\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"steve\\\\\");\n\nfunction setName(value) {\n  name.value = value;\n}\nfunction updateNameWithArrowFn(value) {\n  name.value = value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForFragment 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"\\`key-\\${option}\\`\\\\\" v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\">\n      <div>{{ option }}</div> </template\n    ><template\n      :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n      v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\"\n    >\n      <div>{{ option }}</div> </template\n    ><select>\n      <template\n        :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n        v-for=\\\\\"(option, index) in ['d', 'e', 'f']\\\\\"\n      >\n        <option :value=\\\\\"option\\\\\">{{ option }}</option>\n      </template>\n    </select>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst id = ref(\\\\\"xyz\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<template>\n  <component :is=\\\\\"TagNameGetter\\\\\">\n    Hello <component :is=\\\\\"tag\\\\\">{{ name }}</component\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(action, index) in actions\\\\\">\n      <component :is=\\\\\"TagName\\\\\"\n        ><component :is=\\\\\"action.icon\\\\\"></component\n        ><span>{{ action.text }}</span></component\n      >\n    </template></component\n  >\n</template>\n\n<script setup>\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"actions\\\\\"]);\nconst name = ref(\\\\\"VincentW\\\\\");\nconst TagName = ref(\\\\\"div\\\\\");\nconst tag = ref(\\\\\"span\\\\\");\n\nconst TagNameGetter = computed(() => {\n  return \\\\\"span\\\\\";\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"inputRef\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"inputRef\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<template>\n  <div>Hello! {{ name }}</div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nwatch(\n  () => [name.value],\n  () => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name.value = data.name.value;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<template>\n  <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst buttonRef = ref(null);\n\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<template>\n  <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst buttonRef = ref(null);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<template>\n  <div>\n    <MyComp class=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </MyComp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div>\n</template>\n\n<script setup>\nimport MyComp from \\\\\"./my-component.vue\\\\\";\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > class + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > className + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > className 1`] = `\n\"<template>\n  <div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div :class=\\\\\"bindings\\\\\">With binding</div>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst bindings = ref(\\\\\"a binding\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > classState 1`] = `\n\"<template>\n  <div :class=\\\\\"classState + ' div'\\\\\" :style=\\\\\"styleState\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst classState = ref(\\\\\"testClassName\\\\\");\nconst styleState = ref({\n  color: \\\\\"red\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<template>\n  <div :class=\\\\\"className\\\\\">\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"className\\\\\", \\\\\"children\\\\\", \\\\\"type\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<template>\n  <div></div>\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > componentWithContext 1`] = `\n\"<template>\n  {{ foo.value }}\n</template>\n\n<script setup>\nimport { inject, provide } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nconst props = defineProps([\\\\\"content\\\\\"]);\n\nconst foo = inject(Context1.key);\n\nprovide(Context1.key, {\n  foo: \\\\\"bar\\\\\",\n  content() {\n    return props.content;\n  },\n});\nprovide(Context2.key, { bar: \\\\\"baz\\\\\" });\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<template>\n  {{ foo.value }}\n  <div>other</div>\n</template>\n\n<script setup>\nimport { inject, provide } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nconst props = defineProps([\\\\\"content\\\\\"]);\n\nconst foo = inject(Context1.key);\n\nprovide(Context1.key, {\n  foo: \\\\\"bar\\\\\",\n  content() {\n    return props.content;\n  },\n});\nprovide(Context2.key, { bar: \\\\\"baz\\\\\" });\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > contentState 1`] = `\n\"<template>\n  <div>setting context</div>\n</template>\n\n<script setup>\nimport { provide } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nconst props = defineProps([\\\\\"content\\\\\", \\\\\"customComponents\\\\\"]);\n\nprovide(BuilderContext.key, {\n  content: props.content,\n  registeredComponents: props.customComponents,\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultProps 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick()\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ buttonText }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = withDefaults(defineProps(), {\n  link: \\\\\"https://builder.io/\\\\\",\n  attributes: undefined,\n  openLinkInNewTab: false,\n  text: \\\\\"default text\\\\\",\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n  buttonText: undefined,\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick(event)\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ text }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = withDefaults(defineProps(), {\n  link: \\\\\"https://builder.io/\\\\\",\n  attributes: undefined,\n  openLinkInNewTab: false,\n  text: \\\\\"default text\\\\\",\n  onClick: () => {},\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<template>\n  <div>Hello {{ name || DEFAULT_VALUES.name }}</div>\n</template>\n\n<script setup>\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      :value=\\\\\"name\\\\\"\n      @input=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > eventProps 1`] = `\n\"<template>\n  <button @click=\\\\\"async (event) => handleClick()\\\\\">Test</button>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"onGetVoid\\\\\", \\\\\"onEnter\\\\\", \\\\\"onPass\\\\\"]);\n\nfunction handleClick() {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass(\\\\\"test\\\\\");\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > expressionState 1`] = `\n\"<template>\n  <div>{{ refToUse }}</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"componentRef\\\\\"]);\nconst refToUse = ref(\n  !(props.componentRef instanceof Function) ? props.componentRef : null\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<template>\n  <button\n    :data-icon=\\\\\"icon\\\\\"\n    :data-disabled=\\\\\"interactiveState\\\\\"\n    :data-width=\\\\\"width\\\\\"\n    :data-size=\\\\\"size\\\\\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script setup>\nconst props = defineProps([\n  \\\\\"icon\\\\\",\n  \\\\\"interactiveState\\\\\",\n  \\\\\"width\\\\\",\n  \\\\\"size\\\\\",\n  \\\\\"label\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > functionProps 1`] = `\n\"<template>\n  <p\n    :f=\\\\\"() => x\\\\\"\n    :f1=\\\\\"(x) => x\\\\\"\n    :f2=\\\\\"(x) => {}\\\\\"\n    :f3=\\\\\"\n      function () {\n        return x;\n      }\n    \\\\\"\n    :f4=\\\\\"\n      function (x) {\n        return x;\n      }\n    \\\\\"\n    :f5=\\\\\"\n      function (x) {\n        return;\n      }\n    \\\\\"\n    :f6=\\\\\"\n      function () {\n        return;\n      }\n    \\\\\"\n    :f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p>\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > getterState 1`] = `\n\"<template>\n  <div>\n    <p>{{ foo2 }}</p>\n    <p>{{ bar }}</p>\n    <p>{{ baz(1) }}</p>\n  </div>\n</template>\n\n<script setup>\nimport { computed } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"foo\\\\\"]);\n\nconst foo2 = computed(() => {\n  return props.foo + \\\\\"foo\\\\\";\n});\nconst bar = computed(() => {\n  return \\\\\"bar\\\\\";\n});\n\nfunction baz(i) {\n  return i + foo2.length;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > import types 1`] = `\n\"<template>\n  <RenderBlock\n    v-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n  ></RenderBlock>\n</template>\n\n<script setup>\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nconst props = defineProps([\\\\\"renderContentProps\\\\\"]);\n\nfunction getRenderContentProps(block, index) {\n  return {\n    block: block,\n    index: index,\n  };\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > layerName 1`] = `\n\"<template>\n  <section>\n    <div class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section>\n</template>\n\n\n\n<style scoped>\n.layer-name {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender\\\\\");\n});\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst a = ref(\\\\\"a\\\\\");\nconst b = ref(\\\\\"b\\\\\");\nconst c = ref(\\\\\"c\\\\\");\nconst d = ref(\\\\\"d\\\\\");\n\nwatch(\n  () => [a.value, b.value],\n  () => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a.value, b.value);\n\n    if (a.value === \\\\\"a\\\\\") {\n      a.value = \\\\\"b\\\\\";\n    }\n  },\n  { immediate: true }\n);\nwatch(\n  () => [c.value, d.value],\n  () => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c.value, d.value);\n\n    if (a.value === \\\\\"a\\\\\") {\n      a.value = \\\\\"b\\\\\";\n    }\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<template>\n  <input v-bind=\\\\\"{ ...attrs, ...$props }\\\\\" />\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst attrs = ref({\n  hello: \\\\\"world\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > nestedShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template v-if=\\\\\"!conditionB\\\\\">\n      <div>if condition A and condition B</div>\n    </template>\n\n    <template v-else>\n      <div>else-condition-B</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > nestedStyles 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\">Hello world</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<template>\n  <section>\n    <div>Emoji</div>\n    <div>Dashes</div>\n    <div>CamelCase</div>\n    <div>Special chars</div>\n    <div>Special chars with dashes</div>\n    <div class=\\\\\"css-0\\\\\">Single Number</div>\n    <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div>Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section>\n</template>\n\n\n\n<style scoped>\n.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onEvent 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-embed\\\\\"\n    ref=\\\\\"elem\\\\\"\n    @initeditingbldr=\\\\\"async (event) => elem_onInitEditingBldr(event)\\\\\"\n  >\n    <div>Test</div>\n  </div>\n</template>\n\n<script setup>\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst elem = ref(null);\n\nonMounted(() => {\n  elem.value.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n});\n\nfunction foo(event) {\n  console.log(\\\\\"test2\\\\\");\n}\nfunction elem_onInitEditingBldr(event) {\n  console.log(\\\\\"test\\\\\");\n  foo(event);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted } from \\\\\"vue\\\\\";\n\nconsole.log(\\\\\"onInit\\\\\");\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInit 1`] = `\n\"<template>\n  <div>Default name defined by parent {{ name }}</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nconst props = defineProps([\\\\\"name\\\\\"]);\nconst name = ref(\\\\\"\\\\\");\n\nname.value = defaultValues.name.value || props.name.value;\nconsole.log(\\\\\"set defaults with props\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInitPlain 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nconsole.log(\\\\\"onInit\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted, onUnmounted } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"Runs on mount\\\\\");\n});\nonUnmounted(() => {\n  console.log(\\\\\"Runs on unMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"Runs on mount\\\\\");\n});\nonMounted(() => {\n  console.log(\\\\\"Another one runs on Mount\\\\\");\n});\nonMounted(() => {\n  console.log(\\\\\"SSR runs on Mount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"size\\\\\"]);\nconst a = ref(\\\\\"a\\\\\");\nconst b = ref(\\\\\"b\\\\\");\n\nwatch(\n  () => [a.value, b.value, props.size],\n  () => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a.value, b.value, props.size);\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > preserveTyping 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsDestructure 1`] = `\n\"<template>\n  <div>\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"children\\\\\", \\\\\"type\\\\\"]);\nconst name = ref(\\\\\"Decadef20\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsInterface 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsType 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  foo({\n    someOption: bar,\n  });\n});\n\nfunction foo(params) {}\nfunction bar() {}\nfunction zoo() {\n  const params = {\n    cb: bar,\n  };\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > renderBlock 1`] = `\n\"<template>\n  <template v-if=\\\\\"shouldWrap\\\\\">\n    <template v-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"></component>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n      <template :key=\\\\\"index\\\\\" v-for=\\\\\"(data, index) in repeatItemData\\\\\">\n        <RenderRepeatedBlock\n          :repeatContext=\\\\\"data.context\\\\\"\n          :block=\\\\\"data.block\\\\\"\n        ></RenderRepeatedBlock>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"\n        ><component\n          :is=\\\\\"renderComponentTag\\\\\"\n          v-bind=\\\\\"renderComponentProps\\\\\"\n        ></component\n        ><template\n          :key=\\\\\"'render-block-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <RenderBlock\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></RenderBlock> </template\n        ><template\n          :key=\\\\\"'block-style-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <BlockStyles\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></BlockStyles> </template\n      ></component>\n    </template>\n  </template>\n\n  <template v-else>\n    <component\n      :is=\\\\\"renderComponentTag\\\\\"\n      v-bind=\\\\\"renderComponentProps\\\\\"\n    ></component>\n  </template>\n</template>\n\n<script setup>\nimport { computed } from \\\\\"vue\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.vue\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.vue\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.vue\\\\\";\n\nconst props = defineProps([\\\\\"block\\\\\", \\\\\"context\\\\\"]);\n\nconst component = computed(() => {\n  const componentName = getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: false,\n  }).component?.name;\n\n  if (!componentName) {\n    return null;\n  }\n\n  const ref = props.context.registeredComponents[componentName];\n\n  if (!ref) {\n    // TODO: Public doc page with more info about this message\n    console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n    return undefined;\n  } else {\n    return ref;\n  }\n});\nconst tag = computed(() => {\n  return getBlockTag(useBlock);\n});\nconst useBlock = computed(() => {\n  return repeatItemData\n    ? props.block\n    : getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: true,\n      });\n});\nconst actions = computed(() => {\n  return getBlockActions({\n    block: useBlock,\n    state: props.context.state,\n    context: props.context.context,\n  });\n});\nconst attributes = computed(() => {\n  const blockProperties = getBlockProperties(useBlock);\n  return {\n    ...blockProperties,\n    ...(TARGET === \\\\\"reactNative\\\\\"\n      ? {\n          style: getReactNativeBlockStyles({\n            block: useBlock,\n            context: props.context,\n            blockStyles: blockProperties.style,\n          }),\n        }\n      : {}),\n  };\n});\nconst shouldWrap = computed(() => {\n  return !component?.noWrap;\n});\nconst renderComponentProps = computed(() => {\n  return {\n    blockChildren: useChildren,\n    componentRef: component?.component,\n    componentOptions: {\n      ...getBlockComponentOptions(useBlock),\n\n      /**\n       * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n       * they are provided to the component itself directly.\n       */\n      ...(shouldWrap\n        ? {}\n        : {\n            attributes: { ...attributes, ...actions },\n          }),\n      customBreakpoints: childrenContext?.content?.meta?.breakpoints,\n    },\n    context: childrenContext,\n  };\n});\nconst useChildren = computed(() => {\n  // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n  // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n  // but still receive and need to render children.\n  // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n  return useBlock.children ?? [];\n});\nconst childrenWithoutParentComponent = computed(() => {\n  /**\n   * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n   * we render them outside of \\`componentRef\\`.\n   * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n   * blocks, and the children will be repeated within those blocks.\n   */\n  const shouldRenderChildrenOutsideRef =\n    !component?.component && !repeatItemData;\n  return shouldRenderChildrenOutsideRef ? useChildren : [];\n});\nconst repeatItemData = computed(() => {\n  /**\n   * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n   * which will not work if there is a repeat.\n   */\n  const { repeat, ...blockWithoutRepeat } = props.block;\n\n  if (!repeat?.collection) {\n    return undefined;\n  }\n\n  const itemsArray = evaluate({\n    code: repeat.collection,\n    state: props.context.state,\n    context: props.context.context,\n  });\n\n  if (!Array.isArray(itemsArray)) {\n    return undefined;\n  }\n\n  const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n  const itemNameToUse =\n    repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n  const repeatArray = itemsArray.map((item, index) => ({\n    context: {\n      ...props.context,\n      state: {\n        ...props.context.state,\n        $index: index,\n        $item: item,\n        [itemNameToUse]: item,\n        [\\`$\\${itemNameToUse}Index\\`]: index,\n      },\n    },\n    block: blockWithoutRepeat,\n  }));\n  return repeatArray;\n});\nconst inheritedTextStyles = computed(() => {\n  if (TARGET !== \\\\\"reactNative\\\\\") {\n    return {};\n  }\n\n  const styles = getReactNativeBlockStyles({\n    block: useBlock,\n    context: props.context,\n    blockStyles: attributes.style,\n  });\n  return extractTextStyles(styles);\n});\nconst childrenContext = computed(() => {\n  return {\n    apiKey: props.context.apiKey,\n    state: props.context.state,\n    content: props.context.content,\n    context: props.context.context,\n    registeredComponents: props.context.registeredComponents,\n    inheritedStyles: inheritedTextStyles,\n  };\n});\nconst renderComponentTag = computed(() => {\n  if (TARGET === \\\\\"reactNative\\\\\") {\n    return RenderComponentWithContext;\n  } else if (TARGET === \\\\\"vue3\\\\\") {\n    // vue3 expects a string for the component tag\n    return \\\\\"RenderComponent\\\\\";\n  } else {\n    return RenderComponent;\n  }\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > renderContentExample 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\" @click=\\\\\"async (event) => trackClick(content.id)\\\\\">\n    <RenderBlocks :blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n  </div>\n</template>\n\n<script setup>\nimport { onMounted, provide, watch } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.vue\\\\\";\n\nconst props = defineProps([\\\\\"customComponents\\\\\", \\\\\"content\\\\\"]);\n\nprovide(BuilderContext.key, {\n  get content() {\n    return 3;\n  },\n  get registeredComponents() {\n    return 4;\n  },\n});\n\nonMounted(() => {\n  sendComponentsToVisualEditor(props.customComponents);\n});\n\nwatch(\n  () => [props.content],\n  () => {\n    dispatchNewContentToVisualEditor(props.content);\n  },\n  { immediate: true }\n);\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<template>\n  <template v-if=\\\\\"link\\\\\">\n    <a\n      :href=\\\\\"link\\\\\"\n      :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n      >{{ text }}</a\n    >\n  </template>\n\n  <template v-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n  </template>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > rootShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"foo === 'bar'\\\\\">\n    <div>Bar</div>\n  </template>\n\n  <template v-else>\n    <div>Foo</div>\n  </template>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"foo\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > self-referencing component 1`] = `\n\"<template>\n  <div>\n    {{ name }}\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<template>\n  <div>\n    {{ name }}<slot />\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\", \\\\\"children\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > setState 1`] = `\n\"<template>\n  <div><button @click=\\\\\"async (event) => someFn()\\\\\">Click me</button></div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst n = ref([\\\\\"123\\\\\"]);\n\nfunction someFn() {\n  n.value[0] = \\\\\"123\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showExpressions 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> Content0 </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\">\n      {{ undefined }}\n    </template>\n\n    <template v-else> ContentB </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> hello </template>\n\n    <template v-else> ContentE </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> 123 </template>\n\n    <template v-else> ContentF </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\"> 4mb </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else> 4mb </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\">\n        <div>complete</div>\n      </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionC === 'Complete'\\\\\"> dff </template>\n\n      <template v-else>\n        <div>complete else</div>\n      </template>\n    </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\", \\\\\"conditionC\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithFor 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template :key=\\\\\"idx\\\\\" v-for=\\\\\"(item, idx) in items\\\\\">\n      <div>{{ item }}</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"conditionA\\\\\", \\\\\"items\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n  </div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"conditionA\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithRootText 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"conditionA\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">{{ id }}{{ foo.value.bar.baz }}</div>\n</template>\n\n<script setup>\nimport { watch } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"id\\\\\", \\\\\"foo\\\\\"]);\n\nwatch(\n  () => [props.id, props.foo.value.bar.baz],\n  () => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.value.bar.baz);\n  },\n  { immediate: true }\n);\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadAttrs 1`] = `\n\"<template>\n  <input v-bind=\\\\\"attrs\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"nested\\\\\" />\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"nested\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"$props\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > store-async-function 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nasync function arrowFunction() {\n  return Promise.resolve();\n}\nasync function namedFunction() {\n  return Promise.resolve();\n}\nasync function fetchUsers() {\n  return Promise.resolve();\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > string-literal-store 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(123);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"<template>\n  <div>{{ \\\\\"foo-bar\\\\\" }}</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\nconst foo-bar= ref(123)\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-column div\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n    }\\\\\"\n  ></div>\n</template>\n\n\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<template>\n  <div :style=\\\\\"attributes.style\\\\\" :class=\\\\\"attributes.className + ' div'\\\\\"></div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"attributes\\\\\"]);\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > subComponent 1`] = `\n\"<template>\n  <Foo></Foo>\n</template>\n\n<script setup>\nimport Foo from \\\\\"./foo-sub-component.vue\\\\\";\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > svgComponent 1`] = `\n\"<template>\n  <svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    :viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    :width=\\\\\"42\\\\\"\n    :height=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          :stdDeviation=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg>\n</template>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeDependency 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"foo\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script setup>\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<template>\n  <div>Hello {{ _name }}!</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst _name = ref(\\\\\"test\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script setup>\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"test\\\\\");\n\nconst test = computed(() => {\n  return \\\\\"test\\\\\";\n});\n\nfunction getName() {\n  if (name.value === \\\\\"a\\\\\") {\n    return \\\\\"b\\\\\";\n  }\n\n  return name.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > useTarget 1`] = `\n\"<template>\n  <div>{{ name }}</div>\n</template>\n\n<script setup>\nimport { computed, onMounted, ref } from \\\\\"vue\\\\\";\n\nconst lastName = ref(\\\\\"bar\\\\\");\nconst foo = ref(\\\\\"bar\\\\\");\n\nonMounted(() => {\n  console.log(foo.value);\n  foo.value = \\\\\"bar\\\\\";\n});\n\nconst name = computed(() => {\n  const prefix = \\\\\"v\\\\\";\n  return prefix + \\\\\"foo\\\\\";\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > webComponent 1`] = `\n\"<template>\n  <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide><swiper-slide>Slide 2</swiper-slide\n    ><swiper-slide>Slide 3</swiper-slide></swiper-container\n  >\n</template>\n\n<script setup>\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nregister();\n</script>\"\n`;\n\nexports[`Vue > jsx > Remove Internal mitosis package 1`] = `\n\"<template>\n  <div>Hello {{ name }}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Advanced 1`] = `\n\"<template>\n  <main>\n    <template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <div>{{ i }}: {{ person }}</div> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}</span> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(_, index) in names\\\\\">\n      <br /> </template\n    ><template\n      :key=\\\\\"ee\\\\\"\n      v-for=\\\\\"(_, ee) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <pre>{{ ee }}</pre></template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(_, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <p>{{ index }}</p> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}{{ index }}</span> </template\n    ><template\n      :key=\\\\\"count\\\\\"\n      v-for=\\\\\"(person, count) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ count }}</span> </template\n    ><template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <span>{{ person }}{{ i }}</span> </template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(person, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ index }}</span>\n    </template>\n  </main>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst inputRef = ref<HTMLInputElement>(null);\nconst inputNoArgRef = ref<HTMLLabelElement>(null);\n\nwatch(\n  () => [inputRef.value, inputNoArgRef.value],\n  () => {\n    console.log(\\\\\"Received an update\\\\\");\n  },\n  { immediate: true }\n);\nfunction onBlur() {\n  // Maintain focus\n  inputRef.value.focus();\n}\nfunction lowerCaseName() {\n  return name.value.toLowerCase();\n}\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">\n    <input\n      :value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n      @change=\\\\\"async (myEvent) => (name = myEvent.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst name = ref(\\\\\"Steve\\\\\");\nconst age = ref<number>(1);\nconst sports = ref<Array<string>>([\\\\\"\\\\\"]);\n\nfunction underscore_fn_name() {\n  return \\\\\"bar\\\\\";\n}\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic 2`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <template v-if=\\\\\"person === name\\\\\">\n        <input\n          :value=\\\\\"name\\\\\"\n          @change=\\\\\"\n            async (event) => {\n              name = event.target.value + ' and ' + person;\n            }\n          \\\\\"\n        />\n\n        Hello\n        {{ person }}\n        ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n      </template>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Context 1`] = `\n\"<template>\n  <div>\n    {{ myService.method(\\\\\"hello\\\\\") + name }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    <input @change=\\\\\"async (event) => onChange()\\\\\" />\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { inject, onMounted, provide, ref } from \\\\\"vue\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst myService = inject(MyService.key);\n\nprovide(Injector.key, createInjector());\n\nconst hi = myService.method(\\\\\"hi\\\\\");\nconsole.log(hi);\nonMounted(() => {\n  const bye = myService.method(\\\\\"hi\\\\\");\n  console.log(bye);\n});\n\nfunction onChange() {\n  const change = myService.method(\\\\\"change\\\\\");\n  console.log(change);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\nname.value = \\\\\"PatrickJS onInit\\\\\" + props.hi;\nonMounted(() => {\n  name.value = \\\\\"PatrickJS onMount\\\\\" + props.bye;\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nonMounted(() => {\n  props.onMessageChange(name.value);\n  props.onEvent(props.message);\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"]);\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nonMounted(() => {\n  props.onMessageChange(name.value);\n  props.onEvent(props.message);\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<template>\n  <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" :spellcheck=\\\\\"true\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"$slots.default\\\\\">\n      <slot />\n      {{ type }}\n    </template>\n\n    <MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<template>\n  <div>\n    <MyBasicComponent :id=\\\\\"dev\\\\\"></MyBasicComponent>\n    <div>\n      <MyBasicOnMountUpdateComponent\n        :hi=\\\\\"name\\\\\"\n        :bye=\\\\\"dev\\\\\"\n      ></MyBasicOnMountUpdateComponent\n      ><MyBasicOutputsComponent\n        message=\\\\\"Test\\\\\"\n        :onMessageChange=\\\\\"(name) => (name = name)\\\\\"\n        :onEvent=\\\\\"(event) => log('Test')\\\\\"\n      ></MyBasicOutputsComponent>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\nconst dev = ref(\\\\\"PatrickJS\\\\\");\n\nfunction log(message: string) {\n  console.log(message);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicFor 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <input\n        :value=\\\\\"name\\\\\"\n        @change=\\\\\"\n          async (event) => {\n            name = event.target.value + ' and ' + person;\n          }\n        \\\\\"\n      />\n\n      Hello\n      {{ person }}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\nconst names = ref([\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"]);\n\nonMounted(() => {\n  console.log(\\\\\"onMount code\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nconst inputRef = ref<HTMLInputElement | null>(null);\nconst inputNoArgRef = ref<HTMLLabelElement | null>(null);\n\nfunction onBlur() {\n  // Maintain focus\n  inputRef.value?.focus();\n}\nfunction lowerCaseName() {\n  return name.value.toLowerCase();\n}\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<template>\n  <div><button @click=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nconst holdValueRef = ref<any>(null);\n\nfunction handlerClick(event: Event) {\n  event.preventDefault();\n  console.log(\\\\\"current value\\\\\", holdValueRef.value);\n  holdValueRef.value = holdValueRef.value + \\\\\"JS\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<template>\n  <div>\n    <h1>Now: {{ count }}, before: {{ prevCount }}</h1>\n    <button @click=\\\\\"async (event) => (count += 1)\\\\\">Increment</button>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport interface Props {\n  showInput: boolean;\n}\n\nconst count = ref(0);\n\nconst prevCount = ref<any>(null);\n\nwatch(\n  () => [count.value],\n  () => {\n    prevCount.value = count.value;\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Button 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nconst props = defineProps<ButtonProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Columns 1`] = `\n\"<template>\n  <div class=\\\\\"builder-columns div\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(column, index) in columns\\\\\">\n      <div class=\\\\\"builder-column div-2\\\\\">{{ column.content }}{{ index }}</div>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nconst props = defineProps<ColumnProps>();\n\nfunction getColumns() {\n  return props.columns || [];\n}\nfunction getGutterSize() {\n  return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n}\nfunction getWidth(index: number) {\n  const columns = getColumns();\n  return (columns[index] && columns[index].width) || 100 / columns.length;\n}\nfunction getColumnCssWidth(index: number) {\n  const columns = getColumns();\n  const gutterSize = getGutterSize();\n  const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n  return \\`calc(\\${getWidth(index)}% - \\${subtractWidth}px)\\`;\n}\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"testing\\\\\"></slot>\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { useSlots } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"<template>\n  <template v-if=\\\\\"$slots.reference\\\\\">\n    <div\n      :name=\\\\\"$slots.content ? 'name1' : 'name2'\\\\\"\n      :title=\\\\\"$slots.content ? 'title1' : 'title2'\\\\\"\n      @click=\\\\\"async (event) => show()\\\\\"\n      :class=\\\\\"cls\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n    >\n      <template v-if=\\\\\"showContent && $slots.content\\\\\">\n        <slot name=\\\\\"content\\\\\">{{ content }}</slot>\n      </template>\n\n      <div><hr /></div>\n      <div><slot /></div>\n    </div>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, ref, useSlots } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nconst props = withDefaults(defineProps<Props>(), {\n  children: undefined,\n  attributes: undefined,\n  content: \\\\\"\\\\\",\n});\nconst name = ref(\\\\\"king\\\\\");\nconst showContent = ref(false);\n\nconst cls = computed(() => {\n  return useSlots().content && useSlots().default\n    ? \\`\\${name.value}-content\\`\n    : \\\\\"\\\\\";\n});\n\nfunction show() {\n  useSlots().content ? 1 : \\\\\"\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > CustomCode 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nconst props = defineProps<CustomCodeProps>();\nconst scriptsInserted = ref([]);\nconst scriptsRun = ref([]);\n\nconst elem = ref<HTMLDivElement>(null);\n\nonMounted(() => {\n  findAndRunScripts();\n});\n\nfunction findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (scriptsInserted.value.includes(script.src)) {\n          continue;\n        }\n\n        scriptsInserted.value.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (scriptsRun.value.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          scriptsRun.value.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Embed 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nconst props = defineProps<CustomCodeProps>();\nconst scriptsInserted = ref([]);\nconst scriptsRun = ref([]);\n\nconst elem = ref<HTMLDivElement>(null);\n\nonMounted(() => {\n  findAndRunScripts();\n});\n\nfunction findAndRunScripts() {\n  // TODO: Move this function to standalone one in '@builder.io/utils'\n  if (elem.value && typeof window !== \\\\\"undefined\\\\\") {\n    /** @type {HTMLScriptElement[]} */\n    const scripts = elem.value.getElementsByTagName(\\\\\"script\\\\\");\n\n    for (let i = 0; i < scripts.length; i++) {\n      const script = scripts[i];\n\n      if (script.src) {\n        if (scriptsInserted.value.includes(script.src)) {\n          continue;\n        }\n\n        scriptsInserted.value.push(script.src);\n        const newScript = document.createElement(\\\\\"script\\\\\");\n        newScript.async = true;\n        newScript.src = script.src;\n        document.head.appendChild(newScript);\n      } else if (\n        !script.type ||\n        [\n          \\\\\"text/javascript\\\\\",\n          \\\\\"application/javascript\\\\\",\n          \\\\\"application/ecmascript\\\\\",\n        ].includes(script.type)\n      ) {\n        if (scriptsRun.value.includes(script.innerText)) {\n          continue;\n        }\n\n        try {\n          scriptsRun.value.push(script.innerText);\n          new Function(script.innerText)();\n        } catch (error) {\n          console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n        }\n      }\n    }\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Form 1`] = `\n\"<template>\n  <form\n    :validate=\\\\\"validate\\\\\"\n    ref=\\\\\"formRef\\\\\"\n    :action=\\\\\"!sendWithJs && action\\\\\"\n    :method=\\\\\"method\\\\\"\n    :name=\\\\\"name\\\\\"\n    @submit=\\\\\"async (event) => onSubmit(event)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template v-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n      <template\n        :key=\\\\\"block.id\\\\\"\n        v-for=\\\\\"(block, index) in builderBlock?.children\\\\\"\n      >\n        <BuilderBlockComponent\n          :block=\\\\\"block\\\\\"\n          :index=\\\\\"index\\\\\"\n        ></BuilderBlockComponent>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"errorMessage\\\\\"\n        :blocks=\\\\\"errorMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'sending'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"sendingMessage\\\\\"\n        :blocks=\\\\\"sendingMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n      <pre class=\\\\\"builder-form-error-text pre\\\\\">{{\n        JSON.stringify(responseData, null, 2)\n      }}</pre>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'success'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"successMessage\\\\\"\n        :blocks=\\\\\"successMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n  </form>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nconst props = defineProps<FormProps>();\nconst formState = ref(\\\\\"unsubmitted\\\\\");\nconst responseData = ref(null);\nconst formErrorMessage = ref(\\\\\"\\\\\");\n\nconst formRef = ref<HTMLFormElement>(null);\n\nconst submissionState = computed(() => {\n  return (Builder.isEditing && props.previewState) || formState.value;\n});\n\nfunction onSubmit(\n  event: Event & {\n    currentTarget: HTMLFormElement;\n  }\n) {\n  const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === \\\\\"email\\\\\";\n\n  if (props.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n    event.preventDefault();\n  } else if (sendWithJs) {\n    if (!(props.action || props.sendSubmissionsTo === \\\\\"email\\\\\")) {\n      event.preventDefault();\n      return;\n    }\n\n    event.preventDefault();\n    const el = event.currentTarget;\n    const headers = props.customHeaders || {};\n    let body: any;\n    const formData = new FormData(el); // TODO: maybe support null\n\n    const formPairs: {\n      key: string;\n      value: File | boolean | number | string | FileList;\n    }[] = Array.from(\n      event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n    )\n      .filter((el) => !!(el as HTMLInputElement).name)\n      .map((el) => {\n        let value: any;\n        const key = (el as HTMLImageElement).name;\n\n        if (el instanceof HTMLInputElement) {\n          if (el.type === \\\\\"radio\\\\\") {\n            if (el.checked) {\n              value = el.name;\n              return {\n                key,\n                value,\n              };\n            }\n          } else if (el.type === \\\\\"checkbox\\\\\") {\n            value = el.checked;\n          } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n            const num = el.valueAsNumber;\n\n            if (!isNaN(num)) {\n              value = num;\n            }\n          } else if (el.type === \\\\\"file\\\\\") {\n            // TODO: one vs multiple files\n            value = el.files;\n          } else {\n            value = el.value;\n          }\n        } else {\n          value = (el as HTMLInputElement).value;\n        }\n\n        return {\n          key,\n          value,\n        };\n      });\n    let contentType = props.contentType;\n\n    if (props.sendSubmissionsTo === \\\\\"email\\\\\") {\n      contentType = \\\\\"multipart/form-data\\\\\";\n    }\n\n    Array.from(formPairs).forEach(({ value }) => {\n      if (\n        value instanceof File ||\n        (Array.isArray(value) && value[0] instanceof File) ||\n        value instanceof FileList\n      ) {\n        contentType = \\\\\"multipart/form-data\\\\\";\n      }\n    }); // TODO: send as urlEncoded or multipart by default\n    // because of ease of use and reliability in browser API\n    // for encoding the form?\n\n    if (contentType !== \\\\\"application/json\\\\\") {\n      body = formData;\n    } else {\n      // Json\n      const json = {};\n      Array.from(formPairs).forEach(({ value, key }) => {\n        set(json, key, value);\n      });\n      body = JSON.stringify(json);\n    }\n\n    if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n      if (\n        /* Zapier doesn't allow content-type header to be sent from browsers */\n        !(sendWithJs && props.action?.includes(\\\\\"zapier.com\\\\\"))\n      ) {\n        headers[\\\\\"content-type\\\\\"] = contentType;\n      }\n    }\n\n    const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n      detail: {\n        body,\n      },\n    });\n\n    if (formRef.value) {\n      formRef.value.dispatchEvent(presubmitEvent);\n\n      if (presubmitEvent.defaultPrevented) {\n        return;\n      }\n    }\n\n    formState.value = \\\\\"sending\\\\\";\n    const formUrl = \\`\\${\n      builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n    }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n      props.sendSubmissionsToEmail || \\\\\"\\\\\"\n    )}&name=\\${encodeURIComponent(props.name || \\\\\"\\\\\")}\\`;\n    fetch(\n      props.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : props.action!,\n      /* TODO: throw error if no action URL */\n      {\n        body,\n        headers,\n        method: props.method || \\\\\"post\\\\\",\n      }\n    ).then(\n      async (res) => {\n        let body;\n        const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n        if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n          body = await res.json();\n        } else {\n          body = await res.text();\n        }\n\n        if (!res.ok && props.errorMessagePath) {\n          /* TODO: allow supplying an error formatter function */\n          let message = get(body, props.errorMessagePath);\n\n          if (message) {\n            if (typeof message !== \\\\\"string\\\\\") {\n              /* TODO: ideally convert json to yaml so it woul dbe like\n         error: - email has been taken */\n              message = JSON.stringify(message);\n            }\n\n            formErrorMessage.value = message;\n          }\n        }\n\n        responseData.value = body;\n        formState.value = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n        if (res.ok) {\n          const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n            detail: {\n              res,\n              body,\n            },\n          });\n\n          if (formRef.value) {\n            formRef.value.dispatchEvent(submitSuccessEvent);\n\n            if (submitSuccessEvent.defaultPrevented) {\n              return;\n            }\n            /* TODO: option to turn this on/off? */\n\n            if (props.resetFormOnSubmit !== false) {\n              formRef.value.reset();\n            }\n          }\n          /* TODO: client side route event first that can be preventDefaulted */\n\n          if (props.successUrl) {\n            if (formRef.value) {\n              const event = new CustomEvent(\\\\\"route\\\\\", {\n                detail: {\n                  url: props.successUrl,\n                },\n              });\n              formRef.value.dispatchEvent(event);\n\n              if (!event.defaultPrevented) {\n                location.href = props.successUrl;\n              }\n            } else {\n              location.href = props.successUrl;\n            }\n          }\n        }\n      },\n      (err) => {\n        const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n          detail: {\n            error: err,\n          },\n        });\n\n        if (formRef.value) {\n          formRef.value.dispatchEvent(submitErrorEvent);\n\n          if (submitErrorEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        responseData.value = err;\n        formState.value = \\\\\"error\\\\\";\n      }\n    );\n  }\n}\n</script>\n\n<style scoped>\n.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Image 1`] = `\n\"<template>\n  <div>\n    <picture ref=\\\\\"pictureRef\\\\\">\n      <template v-if=\\\\\"!useLazyLoading() || load\\\\\">\n        <img\n          :alt=\\\\\"altText\\\\\"\n          :aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n          :class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n          :src=\\\\\"image\\\\\"\n          @load=\\\\\"async (event) => setLoaded()\\\\\"\n          :srcset=\\\\\"srcset\\\\\"\n          :sizes=\\\\\"sizes\\\\\"\n        />\n      </template>\n\n      <source :srcset=\\\\\"srcset\\\\\" /></picture\n    ><slot />\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, onUnmounted, ref } from \\\\\"vue\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nconst props = defineProps<ImageProps>();\nconst scrollListener = ref(null);\nconst imageLoaded = ref(false);\nconst load = ref(false);\n\nconst pictureRef = ref<HTMLElement>(null);\n\nonMounted(() => {\n  if (useLazyLoading()) {\n    // throttled scroll capture listener\n    const listener = () => {\n      if (pictureRef.value) {\n        const rect = pictureRef.value.getBoundingClientRect();\n        const buffer = window.innerHeight / 2;\n\n        if (rect.top < window.innerHeight + buffer) {\n          load.value = true;\n          scrollListener.value = null;\n          window.removeEventListener(\\\\\"scroll\\\\\", listener);\n        }\n      }\n    };\n\n    scrollListener.value = listener;\n    window.addEventListener(\\\\\"scroll\\\\\", listener, {\n      capture: true,\n      passive: true,\n    });\n    listener();\n  }\n});\nonUnmounted(() => {\n  if (scrollListener.value) {\n    window.removeEventListener(\\\\\"scroll\\\\\", scrollListener.value);\n  }\n});\n\nfunction setLoaded() {\n  imageLoaded.value = true;\n}\nfunction useLazyLoading() {\n  // TODO: Add more checks here, like testing for real web browsers\n  return !!props.lazy && isBrowser();\n}\nfunction isBrowser() {\n  return (\n    typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n  );\n}\n</script>\n\n<style scoped>\n.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Image State 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"itemIndex\\\\\" v-for=\\\\\"(item, itemIndex) in images\\\\\">\n      <img class=\\\\\"custom-class\\\\\" :src=\\\\\"item\\\\\" :key=\\\\\"itemIndex\\\\\" />\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst canShow = ref(true);\nconst images = ref([\\\\\"http://example.com/qwik.png\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Img 1`] = `\n\"<template>\n  <img\n    :style=\\\\\"{\n      objectFit: backgroundSize || 'cover',\n      objectPosition: backgroundPosition || 'center',\n    }\\\\\"\n    :key=\\\\\"(Builder.isEditing && imgSrc) || 'default-key'\\\\\"\n    :alt=\\\\\"altText\\\\\"\n    :src=\\\\\"imgSrc\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nconst props = defineProps<ImgProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Input 1`] = `\n\"<template>\n  <input\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :placeholder=\\\\\"placeholder\\\\\"\n    :type=\\\\\"type\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :required=\\\\\"required\\\\\"\n    @change=\\\\\"async (event) => onChange?.(event.target.value)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nconst props = defineProps<FormInputProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > InputParent 1`] = `\n\"<template>\n  <FormInputComponent\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    :onChange=\\\\\"(value) => handleChange(value)\\\\\"\n  ></FormInputComponent>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nfunction handleChange(value: string) {\n  console.log(value);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > NestedStore 1`] = `\n\"<template>\n  <div :id=\\\\\"_id\\\\\">\n    Test\n    <p :id=\\\\\"_messageId\\\\\">Message</p>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nconst _id = ref<MyStore[\\\\\"_id\\\\\"]>(\\\\\"abc\\\\\");\nconst _messageId = ref<MyStore[\\\\\"_messageId\\\\\"]>(_id.value + \\\\\"-message\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > RawText 1`] = `\n\"<template>\n  <span\n    :class=\\\\\"attributes?.class || attributes?.className\\\\\"\n    v-html=\\\\\"text || ''\\\\\"\n  ></span>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nconst props = defineProps<RawTextProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Section 1`] = `\n\"<template>\n  <section\n    :style=\\\\\"\n      maxWidth && typeof maxWidth === 'number'\n        ? {\n            maxWidth: maxWidth,\n          }\n        : undefined\n    \\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <slot />\n  </section>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nconst props = defineProps<SectionProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Section 2`] = `\n\"<template>\n  <template v-if=\\\\\"max\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(item, index) in items\\\\\">\n      <section\n        :style=\\\\\"{\n          maxWidth: item + max,\n        }\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        <slot />\n      </section>\n    </template>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nconst props = defineProps<SectionProps>();\nconst max = ref(42);\nconst items = ref([42]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Select 1`] = `\n\"<template>\n  <select\n    :value=\\\\\"value\\\\\"\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :name=\\\\\"name\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(option, index) in options\\\\\">\n      <option :value=\\\\\"option.value\\\\\" :data-index=\\\\\"index\\\\\">\n        {{ option.name || option.value }}\n      </option>\n    </template>\n  </select>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nconst props = defineProps<FormSelectProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotDefault 1`] = `\n\"<template>\n  <div>\n    <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ntype Props = {\n  [key: string]: string;\n};\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotHtml 1`] = `\n\"<template>\n  <div>\n    <ContentSlotCode>\n      <template #testing>\n        <div>Hello</div>\n      </template>\n    </ContentSlotCode>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotJsx 1`] = `\n\"<template>\n  <div><ContentSlotCode :slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotNamed 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"my-awesome-slot\\\\\"></slot><slot name=\\\\\"top\\\\\"></slot\n    ><slot name=\\\\\"left\\\\\">Default left</slot><slot>Default Child</slot>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ntype Props = {\n  [key: string]: string;\n};\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Stamped.io 1`] = `\n\"<template>\n  <div :data-user=\\\\\"name\\\\\">\n    <button @click=\\\\\"async (event) => (showReviewPrompt = true)\\\\\">\n      Write a review\n    </button>\n    <template v-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n      <input placeholder=\\\\\"Email\\\\\" />\n      <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n      <textarea\n        placeholder=\\\\\"How was your experience?\\\\\"\n        class=\\\\\"textarea\\\\\"\n      ></textarea>\n      <button\n        class=\\\\\"button\\\\\"\n        @click=\\\\\"\n          async (ev) => {\n            ev.preventDefault();\n            showReviewPrompt = false;\n          }\n        \\\\\"\n      >\n        Submit\n      </button>\n    </template>\n\n    <template :key=\\\\\"review.id\\\\\" v-for=\\\\\"(review, index) in reviews\\\\\">\n      <div class=\\\\\"review\\\\\">\n        <img class=\\\\\"img\\\\\" :src=\\\\\"review.avatar\\\\\" />\n        <div :class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n          <div>N: {{ index }}</div>\n          <div>{{ review.author }}</div>\n          <div>{{ review.reviewMessage }}</div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nconst props = defineProps<SmileReviewsProps>();\nconst reviews = ref([]);\nconst name = ref(\\\\\"test\\\\\");\nconst showReviewPrompt = ref(false);\n\nonMounted(() => {\n  fetch(\n    \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n      props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n    }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n  )\n    .then((res) => res.json())\n    .then((data) => {\n      reviews.value = data.data;\n    });\n});\n\nfunction kebabCaseValue() {\n  return kebabCase(\\\\\"testThat\\\\\");\n}\nfunction snakeCaseValue() {\n  return snakeCase(\\\\\"testThis\\\\\");\n}\n</script>\n\n<style scoped>\n.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreComment 1`] = `\n\"<template>\n  {{ foo }}\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(true);\n\nfunction bar() {}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<template>\n  {{ foo(errors) }}\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\n   import { ref } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\n   const errors= ref({})\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction foo(errors.value) {\nreturn errors.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreWithState 1`] = `\n\"<template>\n  {{ bar() }}\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(false);\n\nfunction bar() {\n  return foo.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Submit 1`] = `\n\"<template>\n  <button type=\\\\\"submit\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nconst props = defineProps<ButtonProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Text 1`] = `\n\"<template>\n  <div\n    :contentEditable=\\\\\"allowEditingText || undefined\\\\\"\n    :data-name=\\\\\"{\n      test: name || 'any name',\n    }\\\\\"\n    v-html=\\\\\"text || content || name || '<p class=\\\\\\\\'text-lg\\\\\\\\'>my name</p>'\\\\\"\n  ></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nconst props = defineProps<TextProps>();\nconst name = ref(\\\\\"Decadef20\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Textarea 1`] = `\n\"<template>\n  <textarea\n    :placeholder=\\\\\"placeholder\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></textarea>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nconst props = defineProps<TextareaProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<template>\n  <div>Test</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onUpdated, ref } from \\\\\"vue\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nconst props = defineProps<MyProps>();\nconst _id = ref<MyStore[\\\\\"_id\\\\\"]>(\\\\\"abc\\\\\");\nconst _active = ref<MyStore[\\\\\"_active\\\\\"]>(false);\n\nonUpdated(() => {\n  if (_do) {\n    _do(_id.value);\n  }\n});\n\nfunction _do(id?: string): ReturnType<MyStore[\\\\\"_do\\\\\"]> {\n  _active.value = !!id;\n\n  if (props.onChange) {\n    props.onChange(_active.value);\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Video 1`] = `\n\"<template>\n  <video\n    preload=\\\\\"none\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n      height: '100%',\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }\\\\\"\n    :key=\\\\\"video || 'no-src'\\\\\"\n    :poster=\\\\\"posterImage\\\\\"\n    :autoplay=\\\\\"autoPlay\\\\\"\n    :muted=\\\\\"muted\\\\\"\n    :controls=\\\\\"controls\\\\\"\n    :loop=\\\\\"loop\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></video>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nconst props = defineProps<VideoProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"steve\\\\\");\n\nfunction setName(value) {\n  name.value = value;\n}\nfunction updateNameWithArrowFn(value) {\n  name.value = value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForFragment 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"\\`key-\\${option}\\`\\\\\" v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\">\n      <div>{{ option }}</div> </template\n    ><template\n      :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n      v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\"\n    >\n      <div>{{ option }}</div> </template\n    ><select>\n      <template\n        :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n        v-for=\\\\\"(option, index) in ['d', 'e', 'f']\\\\\"\n      >\n        <option :value=\\\\\"option\\\\\">{{ option }}</option>\n      </template>\n    </select>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst id = ref(\\\\\"xyz\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<template>\n  <component :is=\\\\\"TagNameGetter\\\\\">\n    Hello <component :is=\\\\\"tag\\\\\">{{ name }}</component\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(action, index) in actions\\\\\">\n      <component :is=\\\\\"TagName\\\\\"\n        ><component :is=\\\\\"action.icon\\\\\"></component\n        ><span>{{ action.text }}</span></component\n      >\n    </template></component\n  >\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"actions\\\\\"]);\nconst name = ref(\\\\\"VincentW\\\\\");\nconst TagName = ref(\\\\\"div\\\\\");\nconst tag = ref(\\\\\"span\\\\\");\n\nconst TagNameGetter = computed(() => {\n  return \\\\\"span\\\\\";\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"PatrickJS\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"PatrickJS\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<template>\n  <div>Hello! {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"PatrickJS\\\\\");\n\nwatch(\n  () => [name.value],\n  () => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n      signal,\n    })\n      .then((response) => response.json())\n      .then((data) => {\n        name.value = data.name.value;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<template>\n  <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst buttonRef = ref<HTMLButtonElement | null>(null);\n\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<template>\n  <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst buttonRef = ref<HTMLButtonElement | null>(null);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<template>\n  <div>\n    <MyComp class=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </MyComp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport MyComp from \\\\\"./my-component.vue\\\\\";\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > class + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > className + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > className 1`] = `\n\"<template>\n  <div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div :class=\\\\\"bindings\\\\\">With binding</div>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nconst bindings = ref(\\\\\"a binding\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > classState 1`] = `\n\"<template>\n  <div :class=\\\\\"classState + ' div'\\\\\" :style=\\\\\"styleState\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst classState = ref(\\\\\"testClassName\\\\\");\nconst styleState = ref({\n  color: \\\\\"red\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<template>\n  <div :class=\\\\\"className\\\\\">\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<template>\n  <div></div>\n</template>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > componentWithContext 1`] = `\n\"<template>\n  {{ foo.value }}\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { inject, provide } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nconst props = defineProps<ComponentWithContextProps>();\n\nconst foo = inject(Context1.key);\n\nprovide(Context1.key, {\n  foo: \\\\\"bar\\\\\",\n  content() {\n    return props.content;\n  },\n});\nprovide(Context2.key, { bar: \\\\\"baz\\\\\" });\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<template>\n  {{ foo.value }}\n  <div>other</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { inject, provide } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nconst props = defineProps<ComponentWithContextProps>();\n\nconst foo = inject(Context1.key);\n\nprovide(Context1.key, {\n  foo: \\\\\"bar\\\\\",\n  content() {\n    return props.content;\n  },\n});\nprovide(Context2.key, { bar: \\\\\"baz\\\\\" });\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > contentState 1`] = `\n\"<template>\n  <div>setting context</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { provide } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nconst props = defineProps([\\\\\"content\\\\\", \\\\\"customComponents\\\\\"]);\n\nprovide(BuilderContext.key, {\n  content: props.content,\n  registeredComponents: props.customComponents,\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultProps 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick()\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ buttonText }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n  link: \\\\\"https://builder.io/\\\\\",\n  attributes: undefined,\n  openLinkInNewTab: false,\n  text: \\\\\"default text\\\\\",\n  onClick: () => {\n    console.log(\\\\\"hi\\\\\");\n  },\n  buttonText: undefined,\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick(event)\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ text }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n  link: \\\\\"https://builder.io/\\\\\",\n  attributes: undefined,\n  openLinkInNewTab: false,\n  text: \\\\\"default text\\\\\",\n  onClick: () => {},\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<template>\n  <div>Hello {{ name || DEFAULT_VALUES.name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\ntype Props = {\n  name: string;\n};\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      :value=\\\\\"name\\\\\"\n      @input=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > eventProps 1`] = `\n\"<template>\n  <button @click=\\\\\"async (event) => handleClick()\\\\\">Test</button>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nconst props = defineProps<EventProps>();\n\nfunction handleClick(): ReturnType<EventState[\\\\\"handleClick\\\\\"]> {\n  if (props.onGetVoid) {\n    props.onGetVoid();\n  }\n\n  if (props.onEnter) {\n    console.log(props.onEnter());\n  }\n\n  if (props.onPass) {\n    props.onPass(\\\\\"test\\\\\");\n  }\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > expressionState 1`] = `\n\"<template>\n  <div>{{ refToUse }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = defineProps([\\\\\"componentRef\\\\\"]);\nconst refToUse = ref(\n  !(props.componentRef instanceof Function) ? props.componentRef : null\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<template>\n  <button\n    :data-icon=\\\\\"icon\\\\\"\n    :data-disabled=\\\\\"interactiveState\\\\\"\n    :data-width=\\\\\"width\\\\\"\n    :data-size=\\\\\"size\\\\\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst props = defineProps([\n  \\\\\"icon\\\\\",\n  \\\\\"interactiveState\\\\\",\n  \\\\\"width\\\\\",\n  \\\\\"size\\\\\",\n  \\\\\"label\\\\\",\n]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > functionProps 1`] = `\n\"<template>\n  <p\n    :f=\\\\\"() => x\\\\\"\n    :f1=\\\\\"(x) => x\\\\\"\n    :f2=\\\\\"(x) => {}\\\\\"\n    :f3=\\\\\"\n      function () {\n        return x;\n      }\n    \\\\\"\n    :f4=\\\\\"\n      function (x) {\n        return x;\n      }\n    \\\\\"\n    :f5=\\\\\"\n      function (x) {\n        return;\n      }\n    \\\\\"\n    :f6=\\\\\"\n      function () {\n        return;\n      }\n    \\\\\"\n    :f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface MyBasicComponentProps {\n  id: string;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > getterState 1`] = `\n\"<template>\n  <div>\n    <p>{{ foo2 }}</p>\n    <p>{{ bar }}</p>\n    <p>{{ baz(1) }}</p>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nconst props = defineProps<ButtonProps>();\n\nconst foo2 = computed(() => {\n  return props.foo + \\\\\"foo\\\\\";\n});\nconst bar = computed(() => {\n  return \\\\\"bar\\\\\";\n});\n\nfunction baz(i: number) {\n  return i + foo2.length;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > import types 1`] = `\n\"<template>\n  <RenderBlock\n    v-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n  ></RenderBlock>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nconst props = defineProps<RenderContentProps>();\n\nfunction getRenderContentProps(block, index) {\n  return {\n    block: block,\n    index: index,\n  };\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > layerName 1`] = `\n\"<template>\n  <section>\n    <div class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section>\n</template>\n\n\n\n<style scoped>\n.layer-name {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender\\\\\");\n});\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst a = ref(\\\\\"a\\\\\");\nconst b = ref(\\\\\"b\\\\\");\nconst c = ref(\\\\\"c\\\\\");\nconst d = ref(\\\\\"d\\\\\");\n\nwatch(\n  () => [a.value, b.value],\n  () => {\n    console.log(\\\\\"Runs when a or b changes\\\\\", a.value, b.value);\n\n    if (a.value === \\\\\"a\\\\\") {\n      a.value = \\\\\"b\\\\\";\n    }\n  },\n  { immediate: true }\n);\nwatch(\n  () => [c.value, d.value],\n  () => {\n    console.log(\\\\\"Runs when c or d changes\\\\\", c.value, d.value);\n\n    if (a.value === \\\\\"a\\\\\") {\n      a.value = \\\\\"b\\\\\";\n    }\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<template>\n  <input v-bind=\\\\\"{ ...attrs, ...$props }\\\\\" />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst attrs = ref({\n  hello: \\\\\"world\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > nestedShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template v-if=\\\\\"!conditionB\\\\\">\n      <div>if condition A and condition B</div>\n    </template>\n\n    <template v-else>\n      <div>else-condition-B</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > nestedStyles 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\">Hello world</div>\n</template>\n\n\n\n<style scoped>\n.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<template>\n  <section>\n    <div>Emoji</div>\n    <div>Dashes</div>\n    <div>CamelCase</div>\n    <div>Special chars</div>\n    <div>Special chars with dashes</div>\n    <div class=\\\\\"css-0\\\\\">Single Number</div>\n    <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div>Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n</script>\n\n<style scoped>\n.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onEvent 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-embed\\\\\"\n    ref=\\\\\"elem\\\\\"\n    @initeditingbldr=\\\\\"async (event) => elem_onInitEditingBldr(event)\\\\\"\n  >\n    <div>Test</div>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, ref } from \\\\\"vue\\\\\";\n\nconst elem = ref<HTMLDivElement>(null);\n\nonMounted(() => {\n  elem.value.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n});\n\nfunction foo(event) {\n  console.log(\\\\\"test2\\\\\");\n}\nfunction elem_onInitEditingBldr(event) {\n  console.log(\\\\\"test\\\\\");\n  foo(event);\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted } from \\\\\"vue\\\\\";\n\nconsole.log(\\\\\"onInit\\\\\");\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInit 1`] = `\n\"<template>\n  <div>Default name defined by parent {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\ntype Props = {\n  name: string;\n};\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"\\\\\");\n\nname.value = defaultValues.name.value || props.name.value;\nconsole.log(\\\\\"set defaults with props\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInitPlain 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconsole.log(\\\\\"onInit\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, onUnmounted } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"Runs on mount\\\\\");\n});\nonUnmounted(() => {\n  console.log(\\\\\"Runs on unMount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"Runs on mount\\\\\");\n});\nonMounted(() => {\n  console.log(\\\\\"Another one runs on Mount\\\\\");\n});\nonMounted(() => {\n  console.log(\\\\\"SSR runs on Mount\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  console.log(\\\\\"Runs on every update/rerender\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nconst props = defineProps<Props>();\nconst a = ref(\\\\\"a\\\\\");\nconst b = ref(\\\\\"b\\\\\");\n\nwatch(\n  () => [a.value, b.value, props.size],\n  () => {\n    console.log(\\\\\"Runs when a, b or size changes\\\\\", a.value, b.value, props.size);\n  },\n  { immediate: true }\n);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > preserveTyping 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nconst props = defineProps<MyBasicComponentProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsDestructure 1`] = `\n\"<template>\n  <div>\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nconst props = defineProps<Props>();\nconst name = ref(\\\\\"Decadef20\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsInterface 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nconst props = defineProps<Person | never>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsType 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nconst props = defineProps<Person>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onUpdated } from \\\\\"vue\\\\\";\n\nonUpdated(() => {\n  foo({\n    someOption: bar,\n  });\n});\n\nfunction foo(params) {}\nfunction bar() {}\nfunction zoo() {\n  const params = {\n    cb: bar,\n  };\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > renderBlock 1`] = `\n\"<template>\n  <template v-if=\\\\\"shouldWrap\\\\\">\n    <template v-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"></component>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n      <template :key=\\\\\"index\\\\\" v-for=\\\\\"(data, index) in repeatItemData\\\\\">\n        <RenderRepeatedBlock\n          :repeatContext=\\\\\"data.context\\\\\"\n          :block=\\\\\"data.block\\\\\"\n        ></RenderRepeatedBlock>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"\n        ><component\n          :is=\\\\\"renderComponentTag\\\\\"\n          v-bind=\\\\\"renderComponentProps\\\\\"\n        ></component\n        ><template\n          :key=\\\\\"'render-block-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <RenderBlock\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></RenderBlock> </template\n        ><template\n          :key=\\\\\"'block-style-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <BlockStyles\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></BlockStyles> </template\n      ></component>\n    </template>\n  </template>\n\n  <template v-else>\n    <component\n      :is=\\\\\"renderComponentTag\\\\\"\n      v-bind=\\\\\"renderComponentProps\\\\\"\n    ></component>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed } from \\\\\"vue\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.vue\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.vue\\\\\";\nimport RenderComponent from \\\\\"./render-component.vue\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.vue\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nconst props = defineProps<RenderBlockProps>();\n\nconst component = computed(() => {\n  const componentName = getProcessedBlock({\n    block: props.block,\n    state: props.context.state,\n    context: props.context.context,\n    shouldEvaluateBindings: false,\n  }).component?.name;\n\n  if (!componentName) {\n    return null;\n  }\n\n  const ref = props.context.registeredComponents[componentName];\n\n  if (!ref) {\n    // TODO: Public doc page with more info about this message\n    console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n    return undefined;\n  } else {\n    return ref;\n  }\n});\nconst tag = computed(() => {\n  return getBlockTag(useBlock);\n});\nconst useBlock = computed(() => {\n  return repeatItemData\n    ? props.block\n    : getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: true,\n      });\n});\nconst actions = computed(() => {\n  return getBlockActions({\n    block: useBlock,\n    state: props.context.state,\n    context: props.context.context,\n  });\n});\nconst attributes = computed(() => {\n  const blockProperties = getBlockProperties(useBlock);\n  return {\n    ...blockProperties,\n    ...(TARGET === \\\\\"reactNative\\\\\"\n      ? {\n          style: getReactNativeBlockStyles({\n            block: useBlock,\n            context: props.context,\n            blockStyles: blockProperties.style,\n          }),\n        }\n      : {}),\n  };\n});\nconst shouldWrap = computed(() => {\n  return !component?.noWrap;\n});\nconst renderComponentProps = computed(() => {\n  return {\n    blockChildren: useChildren,\n    componentRef: component?.component,\n    componentOptions: {\n      ...getBlockComponentOptions(useBlock),\n\n      /**\n       * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n       * they are provided to the component itself directly.\n       */\n      ...(shouldWrap\n        ? {}\n        : {\n            attributes: { ...attributes, ...actions },\n          }),\n      customBreakpoints: childrenContext?.content?.meta?.breakpoints,\n    },\n    context: childrenContext,\n  };\n});\nconst useChildren = computed(() => {\n  // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n  // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n  // but still receive and need to render children.\n  // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n  return useBlock.children ?? [];\n});\nconst childrenWithoutParentComponent = computed(() => {\n  /**\n   * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n   * we render them outside of \\`componentRef\\`.\n   * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n   * blocks, and the children will be repeated within those blocks.\n   */\n  const shouldRenderChildrenOutsideRef =\n    !component?.component && !repeatItemData;\n  return shouldRenderChildrenOutsideRef ? useChildren : [];\n});\nconst repeatItemData = computed(() => {\n  /**\n   * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n   * which will not work if there is a repeat.\n   */\n  const { repeat, ...blockWithoutRepeat } = props.block;\n\n  if (!repeat?.collection) {\n    return undefined;\n  }\n\n  const itemsArray = evaluate({\n    code: repeat.collection,\n    state: props.context.state,\n    context: props.context.context,\n  });\n\n  if (!Array.isArray(itemsArray)) {\n    return undefined;\n  }\n\n  const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n  const itemNameToUse =\n    repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n  const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n    context: {\n      ...props.context,\n      state: {\n        ...props.context.state,\n        $index: index,\n        $item: item,\n        [itemNameToUse]: item,\n        [\\`$\\${itemNameToUse}Index\\`]: index,\n      },\n    },\n    block: blockWithoutRepeat,\n  }));\n  return repeatArray;\n});\nconst inheritedTextStyles = computed(() => {\n  if (TARGET !== \\\\\"reactNative\\\\\") {\n    return {};\n  }\n\n  const styles = getReactNativeBlockStyles({\n    block: useBlock,\n    context: props.context,\n    blockStyles: attributes.style,\n  });\n  return extractTextStyles(styles);\n});\nconst childrenContext = computed(() => {\n  return {\n    apiKey: props.context.apiKey,\n    state: props.context.state,\n    content: props.context.content,\n    context: props.context.context,\n    registeredComponents: props.context.registeredComponents,\n    inheritedStyles: inheritedTextStyles,\n  };\n});\nconst renderComponentTag = computed(() => {\n  if (TARGET === \\\\\"reactNative\\\\\") {\n    return RenderComponentWithContext;\n  } else if (TARGET === \\\\\"vue3\\\\\") {\n    // vue3 expects a string for the component tag\n    return \\\\\"RenderComponent\\\\\";\n  } else {\n    return RenderComponent;\n  }\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > renderContentExample 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\" @click=\\\\\"async (event) => trackClick(content.id)\\\\\">\n    <RenderBlocks :blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, provide, watch } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.vue\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nconst props = defineProps<Props>();\n\nprovide(BuilderContext.key, {\n  get content() {\n    return 3;\n  },\n  get registeredComponents() {\n    return 4;\n  },\n});\n\nonMounted(() => {\n  sendComponentsToVisualEditor(props.customComponents);\n});\n\nwatch(\n  () => [props.content],\n  () => {\n    dispatchNewContentToVisualEditor(props.content);\n  },\n  { immediate: true }\n);\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<template>\n  <template v-if=\\\\\"link\\\\\">\n    <a\n      :href=\\\\\"link\\\\\"\n      :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n      >{{ text }}</a\n    >\n  </template>\n\n  <template v-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nconst props = defineProps<ButtonProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > rootShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"foo === 'bar'\\\\\">\n    <div>Bar</div>\n  </template>\n\n  <template v-else>\n    <div>Foo</div>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nconst props = defineProps<RenderStylesProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > self-referencing component 1`] = `\n\"<template>\n  <div>\n    {{ name }}\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst props = defineProps([\\\\\"name\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<template>\n  <div>\n    {{ name }}<slot />\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst props = defineProps([\\\\\"name\\\\\", \\\\\"children\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > setState 1`] = `\n\"<template>\n  <div><button @click=\\\\\"async (event) => someFn()\\\\\">Click me</button></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst n = ref([\\\\\"123\\\\\"]);\n\nfunction someFn() {\n  n.value[0] = \\\\\"123\\\\\";\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showExpressions 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> Content0 </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\">\n      {{ undefined }}\n    </template>\n\n    <template v-else> ContentB </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> hello </template>\n\n    <template v-else> ContentE </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> 123 </template>\n\n    <template v-else> ContentF </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\"> 4mb </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else> 4mb </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\">\n        <div>complete</div>\n      </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionC === 'Complete'\\\\\"> dff </template>\n\n      <template v-else>\n        <div>complete else</div>\n      </template>\n    </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithFor 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template :key=\\\\\"idx\\\\\" v-for=\\\\\"(item, idx) in items\\\\\">\n      <div>{{ item }}</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Props {\n  conditionA: boolean;\n}\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithRootText 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\ninterface Props {\n  conditionA: boolean;\n}\n\nconst props = defineProps<Props>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">{{ id }}{{ foo.bar.baz }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { watch } from \\\\\"vue\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nconst props = defineProps<Props>();\n\nwatch(\n  () => [props.id, props.foo.bar.baz],\n  () => {\n    console.log(\\\\\"props.id changed\\\\\", props.id);\n    console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", props.foo.bar.baz);\n  },\n  { immediate: true }\n);\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<template>\n  <input v-bind=\\\\\"attrs\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"nested\\\\\" />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst props = defineProps([\\\\\"nested\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"$props\\\\\" />\n</template>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > store-async-function 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nasync function arrowFunction() {\n  return Promise.resolve();\n}\nasync function namedFunction() {\n  return Promise.resolve();\n}\nasync function fetchUsers() {\n  return Promise.resolve();\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > string-literal-store 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst foo = ref(123);\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"<template>\n  <div>{{ \\\\\"foo-bar\\\\\" }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\nconst foo-bar= ref(123)\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-column div\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n    }\\\\\"\n  ></div>\n</template>\n\n\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<template>\n  <div :style=\\\\\"attributes.style\\\\\" :class=\\\\\"attributes.className + ' div'\\\\\"></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nconst props = defineProps([\\\\\"attributes\\\\\"]);\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > subComponent 1`] = `\n\"<template>\n  <Foo></Foo>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport Foo from \\\\\"./foo-sub-component.vue\\\\\";\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > svgComponent 1`] = `\n\"<template>\n  <svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    :viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    :width=\\\\\"42\\\\\"\n    :height=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          :stdDeviation=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg>\n</template>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeDependency 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.vue\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nconst props = defineProps<TypeDependencyProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nconst props = defineProps<FooProps>();\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<template>\n  <div>Hello {{ _name }}!</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nconst _name = ref<FooStore[\\\\\"_name\\\\\"]>(\\\\\"test\\\\\");\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, ref } from \\\\\"vue\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nconst name = ref<GetterStore[\\\\\"name\\\\\"]>(\\\\\"test\\\\\");\n\nconst test = computed(() => {\n  return \\\\\"test\\\\\";\n});\n\nfunction getName(): ReturnType<GetterStore[\\\\\"getName\\\\\"]> {\n  if (name.value === \\\\\"a\\\\\") {\n    return \\\\\"b\\\\\";\n  }\n\n  return name.value;\n}\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > useTarget 1`] = `\n\"<template>\n  <div>{{ name }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, onMounted, ref } from \\\\\"vue\\\\\";\n\nconst lastName = ref(\\\\\"bar\\\\\");\nconst foo = ref(\\\\\"bar\\\\\");\n\nonMounted(() => {\n  console.log(foo.value);\n  foo.value = \\\\\"bar\\\\\";\n});\n\nconst name = computed(() => {\n  const prefix = \\\\\"v\\\\\";\n  return prefix + \\\\\"foo\\\\\";\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > webComponent 1`] = `\n\"<template>\n  <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide><swiper-slide>Slide 2</swiper-slide\n    ><swiper-slide>Slide 3</swiper-slide></swiper-container\n  >\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nregister();\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > basic 1`] = `\n\"<template>\n  <div>\n    <input\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      :value=\\\\\"name\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > bindGroup 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      :checked=\\\\\"tortilla === 'Plain'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      :checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      :checked=\\\\\"tortilla === 'Spinach'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><br /><br /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      :checked=\\\\\"fillings === 'Rice'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      :checked=\\\\\"fillings === 'Beans'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      :checked=\\\\\"fillings === 'Cheese'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      :checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{ tortilla }}</p>\n    <p>Fillings: {{ fillings }}</p>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst tortilla = ref(\\\\\"Plain\\\\\");\nconst fillings = ref([]);\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > bindProperty 1`] = `\n\"<template>\n  <input :value=\\\\\"value\\\\\" />\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst value = ref(\\\\\"hello\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > classDirective 1`] = `\n\"<template>\n  <input\n    :class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n  />\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = withDefaults(defineProps(), { disabled: undefined });\nconst focus = ref(true);\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > context 1`] = `\n\"<template>\n  <div>{{ activeTab }}</div>\n</template>\n\n<script setup>\nimport { inject, provide, ref } from \\\\\"vue\\\\\";\n\nconst activeTab = ref(0);\n\nconst disabled = inject(\\\\\"disabled\\\\\");\n\nprovide(\\\\\"activeTab\\\\\", activeTab.value);\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > each 1`] = `\n\"<template>\n  <ul>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(num, index) in numbers\\\\\">\n      <li>{{ num }}</li>\n    </template>\n  </ul>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst numbers = ref([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > eventHandlers 1`] = `\n\"<template>\n  <div>\n    <button @click=\\\\\"async (a) => log('hi')\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button>\n  </div>\n</template>\n\n<script setup>\nfunction log(msg = \\\\\"hello\\\\\") {\n  console.log(msg);\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > html 1`] = `\n\"<template>\n  <div v-html=\\\\\"html\\\\\"></div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst html = ref(\\\\\"<b>bold</b>\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > ifElse 1`] = `\n\"<template>\n  <template v-if=\\\\\"show\\\\\">\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Hide</button>\n  </template>\n\n  <template v-else>\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Show</button>\n  </template>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst show = ref(true);\n\nfunction toggle() {\n  show.value = !show.value;\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > imports 1`] = `\n\"<template>\n  <div>\n    <Button type=\\\\\"button\\\\\" :disabled=\\\\\"disabled\\\\\"><slot /></Button>\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nimport Button from \\\\\"./Button.vue\\\\\";\n\nconst disabled = ref(false);\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup>\nimport { onMounted, onUnmounted, onUpdated } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\nonUnmounted(() => {\n  console.log(\\\\\"onDestroy\\\\\");\n});\n\nonUpdated(() => {\n  console.log(\\\\\"onAfterUpdate\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > reactive 1`] = `\n\"<template>\n  <div><input :value=\\\\\"name\\\\\" /> Lowercase: {{ lowercaseName }}</div>\n</template>\n\n<script setup>\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n\nconst lowercaseName = computed(() => {\n  return name.value.toLowerCase();\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (a = event.target.value)\\\\\"\n      :value=\\\\\"a\\\\\"\n    /><input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (b = event.target.value)\\\\\"\n      :value=\\\\\"b\\\\\"\n    />\n    Result: {{ result }}\n  </div>\n</template>\n\n<script setup>\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst a = ref(2);\nconst b = ref(5);\nconst result = ref(null);\n\nwatch(\n  () => [a.value, b.value],\n  () => {\n    calculateResult(a.value, b.value);\n  },\n  { immediate: true }\n);\nfunction calculateResult(a_, b_) {\n  result.value = a_ * b_;\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > slots 1`] = `\n\"<template>\n  <div>\n    <slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot>\n  </div>\n</template>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > style 1`] = `\n\"<template>\n  <input class=\\\\\"form-input\\\\\" />\n</template>\n\n\n\n<style scoped>\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > textExpressions 1`] = `\n\"<template>\n  <div>\n    normal:\n    {{ a + b }}<br />\n    conditional\n    {{ a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\" }}\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \\\\\"vue\\\\\";\n\nconst a = ref(5);\nconst b = ref(12);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > basic 1`] = `\n\"<template>\n  <div>\n    <input\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      :value=\\\\\"name\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > bindGroup 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      :checked=\\\\\"tortilla === 'Plain'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      :checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      :checked=\\\\\"tortilla === 'Spinach'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><br /><br /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      :checked=\\\\\"fillings === 'Rice'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      :checked=\\\\\"fillings === 'Beans'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      :checked=\\\\\"fillings === 'Cheese'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      :checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{ tortilla }}</p>\n    <p>Fillings: {{ fillings }}</p>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst tortilla = ref(\\\\\"Plain\\\\\");\nconst fillings = ref([]);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > bindProperty 1`] = `\n\"<template>\n  <input :value=\\\\\"value\\\\\" />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst value = ref(\\\\\"hello\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > classDirective 1`] = `\n\"<template>\n  <input\n    :class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n  />\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst props = withDefaults(defineProps<undefined>(), { disabled: undefined });\nconst focus = ref(true);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > context 1`] = `\n\"<template>\n  <div>{{ activeTab }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { inject, provide, ref } from \\\\\"vue\\\\\";\n\nconst activeTab = ref(0);\n\nconst disabled = inject(\\\\\"disabled\\\\\");\n\nprovide(\\\\\"activeTab\\\\\", activeTab.value);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > each 1`] = `\n\"<template>\n  <ul>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(num, index) in numbers\\\\\">\n      <li>{{ num }}</li>\n    </template>\n  </ul>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst numbers = ref([\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"]);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > eventHandlers 1`] = `\n\"<template>\n  <div>\n    <button @click=\\\\\"async (a) => log('hi')\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nfunction log(msg = \\\\\"hello\\\\\") {\n  console.log(msg);\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > html 1`] = `\n\"<template>\n  <div v-html=\\\\\"html\\\\\"></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst html = ref(\\\\\"<b>bold</b>\\\\\");\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > ifElse 1`] = `\n\"<template>\n  <template v-if=\\\\\"show\\\\\">\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Hide</button>\n  </template>\n\n  <template v-else>\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Show</button>\n  </template>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst show = ref(true);\n\nfunction toggle() {\n  show.value = !show.value;\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > imports 1`] = `\n\"<template>\n  <div>\n    <Button type=\\\\\"button\\\\\" :disabled=\\\\\"disabled\\\\\"><slot /></Button>\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nimport Button from \\\\\"./Button.vue\\\\\";\n\nconst disabled = ref(false);\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { onMounted, onUnmounted, onUpdated } from \\\\\"vue\\\\\";\n\nonMounted(() => {\n  console.log(\\\\\"onMount\\\\\");\n});\nonUnmounted(() => {\n  console.log(\\\\\"onDestroy\\\\\");\n});\n\nonUpdated(() => {\n  console.log(\\\\\"onAfterUpdate\\\\\");\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > reactive 1`] = `\n\"<template>\n  <div><input :value=\\\\\"name\\\\\" /> Lowercase: {{ lowercaseName }}</div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { computed, ref } from \\\\\"vue\\\\\";\n\nconst name = ref(\\\\\"Steve\\\\\");\n\nconst lowercaseName = computed(() => {\n  return name.value.toLowerCase();\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (a = event.target.value)\\\\\"\n      :value=\\\\\"a\\\\\"\n    /><input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (b = event.target.value)\\\\\"\n      :value=\\\\\"b\\\\\"\n    />\n    Result: {{ result }}\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref, watch } from \\\\\"vue\\\\\";\n\nconst a = ref(2);\nconst b = ref(5);\nconst result = ref(null);\n\nwatch(\n  () => [a.value, b.value],\n  () => {\n    calculateResult(a.value, b.value);\n  },\n  { immediate: true }\n);\nfunction calculateResult(a_, b_) {\n  result.value = a_ * b_;\n}\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > slots 1`] = `\n\"<template>\n  <div>\n    <slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot>\n  </div>\n</template>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > style 1`] = `\n\"<template>\n  <input class=\\\\\"form-input\\\\\" />\n</template>\n\n\n\n<style scoped>\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > textExpressions 1`] = `\n\"<template>\n  <div>\n    normal:\n    {{ a + b }}<br />\n    conditional\n    {{ a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\" }}\n  </div>\n</template>\n\n<script setup lang=\\\\\"ts\\\\\">\nimport { ref } from \\\\\"vue\\\\\";\n\nconst a = ref(5);\nconst b = ref(12);\n</script>\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/vue.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Vue > jsx > Javascript Test > Advanced 1`] = `\n\"<template>\n  <main>\n    <template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <div>{{ i }}: {{ person }}</div> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}</span> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(_, index) in names\\\\\">\n      <br /> </template\n    ><template\n      :key=\\\\\"ee\\\\\"\n      v-for=\\\\\"(_, ee) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <pre>{{ ee }}</pre></template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(_, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <p>{{ index }}</p> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}{{ index }}</span> </template\n    ><template\n      :key=\\\\\"count\\\\\"\n      v-for=\\\\\"(person, count) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ count }}</span> </template\n    ><template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <span>{{ person }}{{ i }}</span> </template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(person, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ index }}</span>\n    </template>\n  </main>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-show-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > AdvancedRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-component\\\\\",\n\n  props: [\\\\\"showInput\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"Received an update\\\\\");\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.$refs.inputRef,\n        1: this.$refs.inputNoArgRef,\n      };\n    },\n  },\n\n  methods: {\n    onBlur: function onBlur() {\n      // Maintain focus\n      this.$refs.inputRef.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">\n    <input\n      :value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n      @change=\\\\\"async (myEvent) => (name = myEvent.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\", age: 1, sports: [\\\\\"\\\\\"], DEFAULT_VALUES };\n  },\n\n  methods: {\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic 2`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <template v-if=\\\\\"person === name\\\\\">\n        <input\n          :value=\\\\\"name\\\\\"\n          @change=\\\\\"\n            async (event) => {\n              name = event.target.value + ' and ' + person;\n            }\n          \\\\\"\n        />\n\n        Hello\n        {{ person }}\n        ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n      </template>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-show-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Context 1`] = `\n\"<template>\n  <div>\n    {{ myService.method(\\\\\"hello\\\\\") + name }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    <input @change=\\\\\"async (event) => onChange()\\\\\" />\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [Injector.key]: createInjector(),\n    };\n  },\n  inject: {\n    myService: MyService.key,\n  },\n  created() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  },\n  mounted() {\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  },\n\n  methods: {\n    onChange: function onChange() {\n      const change = this.myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-on-mount-update-component\\\\\",\n\n  props: [\\\\\"bye\\\\\", \\\\\"hi\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n\n  created() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n  },\n  mounted() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Outputs 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-outputs-component\\\\\",\n\n  props: [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  mounted() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-outputs-component\\\\\",\n\n  props: [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  mounted() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicAttribute 1`] = `\n\"<template>\n  <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" :spellcheck=\\\\\"true\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"$slots.default\\\\\">\n      <slot />\n      {{ type }}\n    </template>\n\n    <MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-boolean-attribute\\\\\",\n  components: { MyBooleanAttributeComponent: MyBooleanAttributeComponent },\n  props: [\\\\\"type\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"<template>\n  <div>\n    <MyBasicComponent :id=\\\\\"dev\\\\\"></MyBasicComponent>\n    <div>\n      <MyBasicOnMountUpdateComponent\n        :hi=\\\\\"name\\\\\"\n        :bye=\\\\\"dev\\\\\"\n      ></MyBasicOnMountUpdateComponent\n      ><MyBasicOutputsComponent\n        message=\\\\\"Test\\\\\"\n        :onMessageChange=\\\\\"(name) => (name = name)\\\\\"\n        :onEvent=\\\\\"(event) => log('Test')\\\\\"\n      ></MyBasicOutputsComponent>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-child-component\\\\\",\n  components: {\n    MyBasicComponent: MyBasicComponent,\n    MyBasicOnMountUpdateComponent: MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent: MyBasicOutputsComponent,\n  },\n\n  data() {\n    return { name: \\\\\"Steve\\\\\", dev: \\\\\"PatrickJS\\\\\" };\n  },\n\n  methods: {\n    log: function log(message) {\n      console.log(message);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicFor 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <input\n        :value=\\\\\"name\\\\\"\n        @change=\\\\\"\n          async (event) => {\n            name = event.target.value + ' and ' + person;\n          }\n        \\\\\"\n      />\n\n      Hello\n      {{ person }}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n\n  mounted() {\n    console.log(\\\\\"onMount code\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-component\\\\\",\n\n  props: [\\\\\"showInput\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  methods: {\n    onBlur: function onBlur() {\n      // Maintain focus\n      this.$refs.inputRef?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"<template>\n  <div><button @click=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-assignment-component\\\\\",\n\n  methods: {\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", this.$refs.holdValueRef);\n      this.$refs.holdValueRef = this.$refs.holdValueRef + \\\\\"JS\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"<template>\n  <div>\n    <h1>Now: {{ count }}, before: {{ this.$refs.prevCount }}</h1>\n    <button @click=\\\\\"async (event) => (count += 1)\\\\\">Increment</button>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-previous-component\\\\\",\n\n  data() {\n    return { count: 0 };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        this.$refs.prevCount = this.count;\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.count,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Button 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Columns 1`] = `\n\"<template>\n  <div class=\\\\\"builder-columns div\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(column, index) in columns\\\\\">\n      <div class=\\\\\"builder-column div-2\\\\\">{{ column.content }}{{ index }}</div>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"column\\\\\",\n\n  props: [\\\\\"columns\\\\\", \\\\\"space\\\\\"],\n\n  methods: {\n    getColumns() {\n      return this.columns || [];\n    },\n    getGutterSize() {\n      return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = this.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = this.getColumns();\n      const gutterSize = this.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"testing\\\\\"></slot>\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"content-slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"<template>\n  <template v-if=\\\\\"$slots.reference\\\\\">\n    <div\n      :name=\\\\\"$slots.content ? 'name1' : 'name2'\\\\\"\n      :title=\\\\\"$slots.content ? 'title1' : 'title2'\\\\\"\n      @click=\\\\\"async (event) => show()\\\\\"\n      :class=\\\\\"cls\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n    >\n      <template v-if=\\\\\"showContent && $slots.content\\\\\">\n        <slot name=\\\\\"content\\\\\">{{ content }}</slot>\n      </template>\n\n      <div><hr /></div>\n      <div><slot /></div>\n    </div>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"content-slot-jsx-code\\\\\",\n\n  props: { attributes: { default: undefined }, content: { default: \\\\\"\\\\\" } },\n\n  data() {\n    return { name: \\\\\"king\\\\\", showContent: false };\n  },\n\n  computed: {\n    cls() {\n      return this.$slots.content && this.$slots.default\n        ? \\`\\${this.name}-content\\`\n        : \\\\\"\\\\\";\n    },\n  },\n\n  methods: {\n    show() {\n      this.$slots.content ? 1 : \\\\\"\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > CustomCode 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"custom-code\\\\\",\n\n  props: [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"],\n\n  data() {\n    return { scriptsInserted: [], scriptsRun: [] };\n  },\n\n  mounted() {\n    this.findAndRunScripts();\n  },\n\n  methods: {\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (this.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            this.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (this.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              this.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Embed 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"custom-code\\\\\",\n\n  props: [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"],\n\n  data() {\n    return { scriptsInserted: [], scriptsRun: [] };\n  },\n\n  mounted() {\n    this.findAndRunScripts();\n  },\n\n  methods: {\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (this.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            this.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (this.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              this.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Form 1`] = `\n\"<template>\n  <form\n    :validate=\\\\\"validate\\\\\"\n    ref=\\\\\"formRef\\\\\"\n    :action=\\\\\"!sendWithJs && action\\\\\"\n    :method=\\\\\"method\\\\\"\n    :name=\\\\\"name\\\\\"\n    @submit=\\\\\"async (event) => onSubmit(event)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template v-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n      <template\n        :key=\\\\\"block.id\\\\\"\n        v-for=\\\\\"(block, index) in builderBlock?.children\\\\\"\n      >\n        <BuilderBlockComponent\n          :block=\\\\\"block\\\\\"\n          :index=\\\\\"index\\\\\"\n        ></BuilderBlockComponent>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"errorMessage\\\\\"\n        :blocks=\\\\\"errorMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'sending'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"sendingMessage\\\\\"\n        :blocks=\\\\\"sendingMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n      <pre class=\\\\\"builder-form-error-text pre\\\\\">{{\n        JSON.stringify(responseData, null, 2)\n      }}</pre>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'success'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"successMessage\\\\\"\n        :blocks=\\\\\"successMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n  </form>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"form-component\\\\\",\n  components: {\n    BuilderBlockComponent: BuilderBlockComponent,\n    BuilderBlocks: BuilderBlocks,\n  },\n  props: [\n    \\\\\"previewState\\\\\",\n    \\\\\"sendWithJs\\\\\",\n    \\\\\"sendSubmissionsTo\\\\\",\n    \\\\\"action\\\\\",\n    \\\\\"customHeaders\\\\\",\n    \\\\\"contentType\\\\\",\n    \\\\\"sendSubmissionsToEmail\\\\\",\n    \\\\\"name\\\\\",\n    \\\\\"method\\\\\",\n    \\\\\"errorMessagePath\\\\\",\n    \\\\\"resetFormOnSubmit\\\\\",\n    \\\\\"successUrl\\\\\",\n    \\\\\"validate\\\\\",\n    \\\\\"attributes\\\\\",\n    \\\\\"builderBlock\\\\\",\n    \\\\\"errorMessage\\\\\",\n    \\\\\"sendingMessage\\\\\",\n    \\\\\"successMessage\\\\\",\n  ],\n\n  data() {\n    return {\n      formState: \\\\\"unsubmitted\\\\\",\n      responseData: null,\n      formErrorMessage: \\\\\"\\\\\",\n      builder,\n    };\n  },\n\n  computed: {\n    submissionState() {\n      return (Builder.isEditing && this.previewState) || this.formState;\n    },\n  },\n\n  methods: {\n    onSubmit(event) {\n      const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = this.customHeaders || {};\n        let body;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!el.name)\n          .map((el) => {\n            let value;\n            const key = el.name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = el.value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = this.contentType;\n\n        if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (this.$refs.formRef) {\n          this.$refs.formRef.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        this.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          this.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: this.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && this.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, this.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                this.formErrorMessage = message;\n              }\n            }\n\n            this.responseData = body;\n            this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (this.$refs.formRef) {\n                this.$refs.formRef.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (this.resetFormOnSubmit !== false) {\n                  this.$refs.formRef.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (this.successUrl) {\n                if (this.$refs.formRef) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: this.successUrl,\n                    },\n                  });\n                  this.$refs.formRef.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = this.successUrl;\n                  }\n                } else {\n                  location.href = this.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (this.$refs.formRef) {\n              this.$refs.formRef.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            this.responseData = err;\n            this.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  },\n});\n</script>\n\n<style scoped>\n.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Image 1`] = `\n\"<template>\n  <div>\n    <picture ref=\\\\\"pictureRef\\\\\">\n      <template v-if=\\\\\"!useLazyLoading() || load\\\\\">\n        <img\n          :alt=\\\\\"altText\\\\\"\n          :aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n          :class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n          :src=\\\\\"image\\\\\"\n          @load=\\\\\"async (event) => setLoaded()\\\\\"\n          :srcset=\\\\\"srcset\\\\\"\n          :sizes=\\\\\"sizes\\\\\"\n        />\n      </template>\n\n      <source :srcset=\\\\\"srcset\\\\\" /></picture\n    ><slot />\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"image\\\\\",\n\n  props: [\\\\\"lazy\\\\\", \\\\\"altText\\\\\", \\\\\"_class\\\\\", \\\\\"image\\\\\", \\\\\"srcset\\\\\", \\\\\"sizes\\\\\"],\n\n  data() {\n    return { scrollListener: null, imageLoaded: false, load: false };\n  },\n\n  mounted() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.$refs.pictureRef) {\n          const rect = this.$refs.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  },\n\n  unmounted() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  },\n\n  methods: {\n    setLoaded() {\n      this.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!this.lazy && this.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n  },\n});\n</script>\n\n<style scoped>\n.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Image State 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"itemIndex\\\\\" v-for=\\\\\"(item, itemIndex) in images\\\\\">\n      <img class=\\\\\"custom-class\\\\\" :src=\\\\\"item\\\\\" :key=\\\\\"itemIndex\\\\\" />\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"img-state-component\\\\\",\n\n  data() {\n    return { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Img 1`] = `\n\"<template>\n  <img\n    :style=\\\\\"{\n      objectFit: backgroundSize || 'cover',\n      objectPosition: backgroundPosition || 'center',\n    }\\\\\"\n    :key=\\\\\"(Builder.isEditing && imgSrc) || 'default-key'\\\\\"\n    :alt=\\\\\"altText\\\\\"\n    :src=\\\\\"imgSrc\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"img-component\\\\\",\n\n  props: [\n    \\\\\"backgroundSize\\\\\",\n    \\\\\"backgroundPosition\\\\\",\n    \\\\\"attributes\\\\\",\n    \\\\\"imgSrc\\\\\",\n    \\\\\"altText\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Input 1`] = `\n\"<template>\n  <input\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :placeholder=\\\\\"placeholder\\\\\"\n    :type=\\\\\"type\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :required=\\\\\"required\\\\\"\n    @change=\\\\\"async (event) => onChange?.(event.target.value)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"form-input-component\\\\\",\n\n  props: [\n    \\\\\"attributes\\\\\",\n    \\\\\"defaultValue\\\\\",\n    \\\\\"placeholder\\\\\",\n    \\\\\"type\\\\\",\n    \\\\\"name\\\\\",\n    \\\\\"value\\\\\",\n    \\\\\"required\\\\\",\n    \\\\\"onChange\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > InputParent 1`] = `\n\"<template>\n  <FormInputComponent\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    :onChange=\\\\\"(value) => handleChange(value)\\\\\"\n  ></FormInputComponent>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"stepper\\\\\",\n  components: { FormInputComponent: FormInputComponent },\n\n  methods: {\n    handleChange(value) {\n      console.log(value);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > NestedStore 1`] = `\n\"<template>\n  <div :id=\\\\\"_id\\\\\">\n    Test\n    <p :id=\\\\\"_messageId\\\\\">Message</p>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"nested-store\\\\\",\n\n  data() {\n    return { _id: \\\\\"abc\\\\\", _messageId: this._id + \\\\\"-message\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > RawText 1`] = `\n\"<template>\n  <span\n    :class=\\\\\"attributes?.class || attributes?.className\\\\\"\n    v-html=\\\\\"text || ''\\\\\"\n  ></span>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"raw-text\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Section 1`] = `\n\"<template>\n  <section\n    :style=\\\\\"\n      maxWidth && typeof maxWidth === 'number'\n        ? {\n            maxWidth: maxWidth,\n          }\n        : undefined\n    \\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <slot />\n  </section>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"section-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"maxWidth\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Section 2`] = `\n\"<template>\n  <template v-if=\\\\\"max\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(item, index) in items\\\\\">\n      <section\n        :style=\\\\\"{\n          maxWidth: item + max,\n        }\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        <slot />\n      </section>\n    </template>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"section-state-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\"],\n\n  data() {\n    return { max: 42, items: [42] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Select 1`] = `\n\"<template>\n  <select\n    :value=\\\\\"value\\\\\"\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :name=\\\\\"name\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(option, index) in options\\\\\">\n      <option :value=\\\\\"option.value\\\\\" :data-index=\\\\\"index\\\\\">\n        {{ option.name || option.value }}\n      </option>\n    </template>\n  </select>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"select-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"value\\\\\", \\\\\"defaultValue\\\\\", \\\\\"name\\\\\", \\\\\"options\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotDefault 1`] = `\n\"<template>\n  <div>\n    <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotHtml 1`] = `\n\"<template>\n  <div>\n    <ContentSlotCode>\n      <template #testing>\n        <div>Hello</div>\n      </template>\n    </ContentSlotCode>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n  components: { ContentSlotCode: ContentSlotCode },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotJsx 1`] = `\n\"<template>\n  <div><ContentSlotCode :slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n  components: { ContentSlotCode: ContentSlotCode },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > SlotNamed 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"my-awesome-slot\\\\\"></slot><slot name=\\\\\"top\\\\\"></slot\n    ><slot name=\\\\\"left\\\\\">Default left</slot><slot>Default Child</slot>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Stamped.io 1`] = `\n\"<template>\n  <div :data-user=\\\\\"name\\\\\">\n    <button @click=\\\\\"async (event) => (showReviewPrompt = true)\\\\\">\n      Write a review\n    </button>\n    <template v-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n      <input placeholder=\\\\\"Email\\\\\" />\n      <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n      <textarea\n        placeholder=\\\\\"How was your experience?\\\\\"\n        class=\\\\\"textarea\\\\\"\n      ></textarea>\n      <button\n        class=\\\\\"button\\\\\"\n        @click=\\\\\"\n          async (ev) => {\n            ev.preventDefault();\n            showReviewPrompt = false;\n          }\n        \\\\\"\n      >\n        Submit\n      </button>\n    </template>\n\n    <template :key=\\\\\"review.id\\\\\" v-for=\\\\\"(review, index) in reviews\\\\\">\n      <div class=\\\\\"review\\\\\">\n        <img class=\\\\\"img\\\\\" :src=\\\\\"review.avatar\\\\\" />\n        <div :class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n          <div>N: {{ index }}</div>\n          <div>{{ review.author }}</div>\n          <div>{{ review.reviewMessage }}</div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"smile-reviews\\\\\",\n\n  props: [\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"],\n\n  data() {\n    return { reviews: [], name: \\\\\"test\\\\\", showReviewPrompt: false };\n  },\n\n  mounted() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  },\n\n  methods: {\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreComment 1`] = `\n\"<template>\n  {{ foo }}\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  data() {\n    return { foo: true };\n  },\n\n  methods: { bar() {} },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"<template>\n  {{ foo(errors) }}\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { errors: {} };\n  },\n\n  methods: {\n    foo(errors) {\n      return errors;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > StoreWithState 1`] = `\n\"<template>\n  {{ bar() }}\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { foo: false };\n  },\n\n  methods: {\n    bar() {\n      return this.foo;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Submit 1`] = `\n\"<template>\n  <button type=\\\\\"submit\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"submit-button\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Text 1`] = `\n\"<template>\n  <div\n    :contentEditable=\\\\\"allowEditingText || undefined\\\\\"\n    :data-name=\\\\\"{\n      test: name || 'any name',\n    }\\\\\"\n    v-html=\\\\\"text || content || name || '<p class=\\\\\\\\'text-lg\\\\\\\\'>my name</p>'\\\\\"\n  ></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"text\\\\\",\n\n  props: [\\\\\"text\\\\\", \\\\\"content\\\\\"],\n\n  data() {\n    return { name: \\\\\"Decadef20\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Textarea 1`] = `\n\"<template>\n  <textarea\n    :placeholder=\\\\\"placeholder\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></textarea>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"textarea\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"placeholder\\\\\", \\\\\"name\\\\\", \\\\\"value\\\\\", \\\\\"defaultValue\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"<template>\n  <div>Test</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"use-value-and-fn-from-store\\\\\",\n\n  props: [\\\\\"onChange\\\\\"],\n\n  data() {\n    return { _id: \\\\\"abc\\\\\", _active: false };\n  },\n\n  updated() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  },\n\n  methods: {\n    _do(id) {\n      this._active = !!id;\n\n      if (this.onChange) {\n        this.onChange(this._active);\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > Video 1`] = `\n\"<template>\n  <video\n    preload=\\\\\"none\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n      height: '100%',\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }\\\\\"\n    :key=\\\\\"video || 'no-src'\\\\\"\n    :poster=\\\\\"posterImage\\\\\"\n    :autoplay=\\\\\"autoPlay\\\\\"\n    :muted=\\\\\"muted\\\\\"\n    :controls=\\\\\"controls\\\\\"\n    :loop=\\\\\"loop\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></video>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"video\\\\\",\n\n  props: [\n    \\\\\"attributes\\\\\",\n    \\\\\"fit\\\\\",\n    \\\\\"position\\\\\",\n    \\\\\"video\\\\\",\n    \\\\\"posterImage\\\\\",\n    \\\\\"autoPlay\\\\\",\n    \\\\\"muted\\\\\",\n    \\\\\"controls\\\\\",\n    \\\\\"loop\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"steve\\\\\" };\n  },\n\n  methods: {\n    setName(value) {\n      this.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      this.name = value;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForFragment 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"\\`key-\\${option}\\`\\\\\" v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\">\n      <div>{{ option }}</div> </template\n    ><template\n      :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n      v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\"\n    >\n      <div>{{ option }}</div> </template\n    ><select>\n      <template\n        :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n        v-for=\\\\\"(option, index) in ['d', 'e', 'f']\\\\\"\n      >\n        <option :value=\\\\\"option\\\\\">{{ option }}</option>\n      </template>\n    </select>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-for-fragment\\\\\",\n\n  data() {\n    return { id: \\\\\"xyz\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"<template>\n  <component :is=\\\\\"TagNameGetter\\\\\">\n    Hello <component :is=\\\\\"tag\\\\\">{{ name }}</component\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(action, index) in actions\\\\\">\n      <component :is=\\\\\"TagName\\\\\"\n        ><component :is=\\\\\"action.icon\\\\\"></component\n        ><span>{{ action.text }}</span></component\n      >\n    </template></component\n  >\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n\n  props: [\\\\\"actions\\\\\"],\n\n  data() {\n    return { name: \\\\\"VincentW\\\\\", TagName: \\\\\"div\\\\\", tag: \\\\\"span\\\\\" };\n  },\n\n  computed: {\n    TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForwardRef 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  props: [\\\\\"inputRef\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  props: [\\\\\"inputRef\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"<template>\n  <div>Hello! {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-on-update-return-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        const controller = new AbortController();\n        const signal = controller.signal;\n        fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n          signal,\n        })\n          .then((response) => response.json())\n          .then((data) => {\n            this.name = data.name;\n          });\n        return () => {\n          if (!signal.aborted) {\n            controller.abort();\n          }\n        };\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.name,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<template>\n  <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-ref-attribute-passing-component\\\\\",\n\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<template>\n  <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"<template>\n  <div>\n    <MyComp class=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </MyComp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyComp from \\\\\"./my-component.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n  components: { MyComp: MyComp },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > class + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > className + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > className 1`] = `\n\"<template>\n  <div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div :class=\\\\\"bindings\\\\\">With binding</div>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"class-name-code\\\\\",\n\n  data() {\n    return { bindings: \\\\\"a binding\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > classState 1`] = `\n\"<template>\n  <div :class=\\\\\"classState + ' div'\\\\\" :style=\\\\\"styleState\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<template>\n  <div :class=\\\\\"className\\\\\">\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"className\\\\\", \\\\\"type\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"complex-meta-raw\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > componentWithContext 1`] = `\n\"<template>\n  {{ foo.value }}\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"component-with-context\\\\\",\n\n  props: [\\\\\"content\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [Context1.key]: {\n        foo: \\\\\"bar\\\\\",\n        content() {\n          return _this.content;\n        },\n      },\n      [Context2.key]: { bar: \\\\\"baz\\\\\" },\n    };\n  },\n  inject: {\n    foo: Context1.key,\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"<template>\n  {{ foo.value }}\n  <div>other</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"component-with-context\\\\\",\n\n  props: [\\\\\"content\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [Context1.key]: {\n        foo: \\\\\"bar\\\\\",\n        content() {\n          return _this.content;\n        },\n      },\n      [Context2.key]: { bar: \\\\\"baz\\\\\" },\n    };\n  },\n  inject: {\n    foo: Context1.key,\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > contentState 1`] = `\n\"<template>\n  <div>setting context</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n\n  props: [\\\\\"content\\\\\", \\\\\"customComponents\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [BuilderContext.key]: {\n        content: _this.content,\n        registeredComponents: _this.customComponents,\n      },\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultProps 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick()\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ buttonText }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: {\n    link: { default: \\\\\"https://builder.io/\\\\\" },\n    attributes: { default: undefined },\n    openLinkInNewTab: { default: false },\n    text: { default: \\\\\"default text\\\\\" },\n    onClick: {\n      default: () => {\n        console.log(\\\\\"hi\\\\\");\n      },\n    },\n    buttonText: { default: undefined },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick(event)\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ text }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: {\n    link: { default: \\\\\"https://builder.io/\\\\\" },\n    attributes: { default: undefined },\n    openLinkInNewTab: { default: false },\n    text: { default: \\\\\"default text\\\\\" },\n    onClick: { default: () => {} },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"<template>\n  <div>Hello {{ name || DEFAULT_VALUES.name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nconst DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\nexport default defineComponent({\n  name: \\\\\"component-with-types\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n\n  data() {\n    return { DEFAULT_VALUES };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      :value=\\\\\"name\\\\\"\n      @input=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"event-input-and-change\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > eventProps 1`] = `\n\"<template>\n  <button @click=\\\\\"async (event) => handleClick()\\\\\">Test</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"event-props-component\\\\\",\n\n  props: [\\\\\"onGetVoid\\\\\", \\\\\"onEnter\\\\\", \\\\\"onPass\\\\\"],\n\n  methods: {\n    handleClick() {\n      if (this.onGetVoid) {\n        this.onGetVoid();\n      }\n\n      if (this.onEnter) {\n        console.log(this.onEnter());\n      }\n\n      if (this.onPass) {\n        this.onPass(\\\\\"test\\\\\");\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > expressionState 1`] = `\n\"<template>\n  <div>{{ refToUse }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"componentRef\\\\\"],\n\n  data() {\n    return {\n      refToUse: !(this.componentRef instanceof Function)\n        ? this.componentRef\n        : null,\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<template>\n  <button\n    :data-icon=\\\\\"icon\\\\\"\n    :data-disabled=\\\\\"interactiveState\\\\\"\n    :data-width=\\\\\"width\\\\\"\n    :data-size=\\\\\"size\\\\\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"figma-button\\\\\",\n\n  props: [\\\\\"icon\\\\\", \\\\\"interactiveState\\\\\", \\\\\"width\\\\\", \\\\\"size\\\\\", \\\\\"label\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > functionProps 1`] = `\n\"<template>\n  <p\n    :f=\\\\\"() => x\\\\\"\n    :f1=\\\\\"(x) => x\\\\\"\n    :f2=\\\\\"(x) => {}\\\\\"\n    :f3=\\\\\"\n      function () {\n        return x;\n      }\n    \\\\\"\n    :f4=\\\\\"\n      function (x) {\n        return x;\n      }\n    \\\\\"\n    :f5=\\\\\"\n      function (x) {\n        return;\n      }\n    \\\\\"\n    :f6=\\\\\"\n      function () {\n        return;\n      }\n    \\\\\"\n    :f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > getterState 1`] = `\n\"<template>\n  <div>\n    <p>{{ foo2 }}</p>\n    <p>{{ bar }}</p>\n    <p>{{ baz(1) }}</p>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n\n  computed: {\n    foo2() {\n      return this.foo + \\\\\"foo\\\\\";\n    },\n    bar() {\n      return \\\\\"bar\\\\\";\n    },\n  },\n\n  methods: {\n    baz(i) {\n      return i + this.foo2.length;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > import types 1`] = `\n\"<template>\n  <RenderBlock\n    v-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n  ></RenderBlock>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n  components: { RenderBlock: RenderBlock },\n  props: [\\\\\"renderContentProps\\\\\"],\n\n  methods: {\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > layerName 1`] = `\n\"<template>\n  <section>\n    <div class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-layer-name-component\\\\\",\n});\n</script>\n\n<style scoped>\n.layer-name {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"multiple-on-update\\\\\",\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"multiple-on-update-with-deps\\\\\",\n\n  data() {\n    return { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n        if (this.a === \\\\\"a\\\\\") {\n          this.a = \\\\\"b\\\\\";\n        }\n      },\n      immediate: true,\n    },\n    onUpdateHook1: {\n      handler() {\n        console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n        if (this.a === \\\\\"a\\\\\") {\n          this.a = \\\\\"b\\\\\";\n        }\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n      };\n    },\n    onUpdateHook1() {\n      return {\n        0: this.c,\n        1: this.d,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > multipleSpreads 1`] = `\n\"<template>\n  <input v-bind=\\\\\"{ ...attrs, ...$props }\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > nestedShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template v-if=\\\\\"!conditionB\\\\\">\n      <div>if condition A and condition B</div>\n    </template>\n\n    <template v-else>\n      <div>else-condition-B</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"nested-show\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > nestedStyles 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\">Hello world</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"nested-styles\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"<template>\n  <section>\n    <div>Emoji</div>\n    <div>Dashes</div>\n    <div>CamelCase</div>\n    <div>Special chars</div>\n    <div>Special chars with dashes</div>\n    <div class=\\\\\"css-0\\\\\">Single Number</div>\n    <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div>Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-normalized-layer-names-component\\\\\",\n});\n</script>\n\n<style scoped>\n.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onEvent 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-embed\\\\\"\n    ref=\\\\\"elem\\\\\"\n    @initeditingbldr=\\\\\"async (event) => elem_onInitEditingBldr(event)\\\\\"\n  >\n    <div>Test</div>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"embed\\\\\",\n\n  mounted() {\n    this.$refs.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  },\n\n  methods: {\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      this.foo(event);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInit & onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-init\\\\\",\n\n  created() {\n    console.log(\\\\\"onInit\\\\\");\n  },\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInit 1`] = `\n\"<template>\n  <div>Default name defined by parent {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\nexport default defineComponent({\n  name: \\\\\"on-init\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n\n  data() {\n    return { name: \\\\\"\\\\\" };\n  },\n\n  created() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onInitPlain 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-init-plain\\\\\",\n\n  created() {\n    console.log(\\\\\"onInit\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"comp\\\\\",\n\n  mounted() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  },\n\n  unmounted() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onMountMultiple 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"comp\\\\\",\n\n  mounted() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n    onMountHook_0();\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n    onMountHook_1();\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n    onMountHook_2();\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-update\\\\\",\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-update-with-deps\\\\\",\n\n  props: [\\\\\"size\\\\\"],\n\n  data() {\n    return { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\n          \\\\\"Runs when a, b or size changes\\\\\",\n          this.a,\n          this.b,\n          this.size\n        );\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n        2: this.size,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > preserveTyping 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsDestructure 1`] = `\n\"<template>\n  <div>\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"type\\\\\"],\n\n  data() {\n    return { name: \\\\\"Decadef20\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsInterface 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > propsType 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-update\\\\\",\n\n  updated() {\n    this.foo({\n      someOption: this.bar,\n    });\n  },\n\n  methods: {\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: this.bar,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > renderBlock 1`] = `\n\"<template>\n  <template v-if=\\\\\"shouldWrap\\\\\">\n    <template v-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"></component>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n      <template :key=\\\\\"index\\\\\" v-for=\\\\\"(data, index) in repeatItemData\\\\\">\n        <RenderRepeatedBlock\n          :repeatContext=\\\\\"data.context\\\\\"\n          :block=\\\\\"data.block\\\\\"\n        ></RenderRepeatedBlock>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"\n        ><component\n          :is=\\\\\"renderComponentTag\\\\\"\n          v-bind=\\\\\"renderComponentProps\\\\\"\n        ></component\n        ><template\n          :key=\\\\\"'render-block-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <RenderBlock\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></RenderBlock> </template\n        ><template\n          :key=\\\\\"'block-style-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <BlockStyles\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></BlockStyles> </template\n      ></component>\n    </template>\n  </template>\n\n  <template v-else>\n    <component\n      :is=\\\\\"renderComponentTag\\\\\"\n      v-bind=\\\\\"renderComponentProps\\\\\"\n    ></component>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.vue\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.vue\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-block\\\\\",\n  components: {\n    RenderRepeatedBlock: RenderRepeatedBlock,\n    BlockStyles: BlockStyles,\n    RenderComponent: RenderComponent,\n  },\n  props: [\\\\\"block\\\\\", \\\\\"context\\\\\"],\n\n  data() {\n    return { isEmptyHtmlElement };\n  },\n\n  computed: {\n    component() {\n      const componentName = getProcessedBlock({\n        block: this.block,\n        state: this.context.state,\n        context: this.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = this.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    tag() {\n      return getBlockTag(this.useBlock);\n    },\n    useBlock() {\n      return this.repeatItemData\n        ? this.block\n        : getProcessedBlock({\n            block: this.block,\n            state: this.context.state,\n            context: this.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    actions() {\n      return getBlockActions({\n        block: this.useBlock,\n        state: this.context.state,\n        context: this.context.context,\n      });\n    },\n    attributes() {\n      const blockProperties = getBlockProperties(this.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: this.useBlock,\n                context: this.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    shouldWrap() {\n      return !this.component?.noWrap;\n    },\n    renderComponentProps() {\n      return {\n        blockChildren: this.useChildren,\n        componentRef: this.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(this.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(this.shouldWrap\n            ? {}\n            : {\n                attributes: { ...this.attributes, ...this.actions },\n              }),\n          customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: this.childrenContext,\n      };\n    },\n    useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return this.useBlock.children ?? [];\n    },\n    childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !this.component?.component && !this.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n    },\n    repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = this.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: this.context.state,\n        context: this.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map((item, index) => ({\n        context: {\n          ...this.context,\n          state: {\n            ...this.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: this.useBlock,\n        context: this.context,\n        blockStyles: this.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    childrenContext() {\n      return {\n        apiKey: this.context.apiKey,\n        state: this.context.state,\n        content: this.context.content,\n        context: this.context.context,\n        registeredComponents: this.context.registeredComponents,\n        inheritedStyles: this.inheritedTextStyles,\n      };\n    },\n    renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > renderContentExample 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\" @click=\\\\\"async (event) => trackClick(content.id)\\\\\">\n    <RenderBlocks :blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n  components: { RenderBlocks: RenderBlocks },\n  props: [\\\\\"customComponents\\\\\", \\\\\"content\\\\\"],\n\n  data() {\n    return { trackClick };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [BuilderContext.key]: {\n        get content() {\n          return 3;\n        },\n        get registeredComponents() {\n          return 4;\n        },\n      },\n    };\n  },\n\n  mounted() {\n    sendComponentsToVisualEditor(this.customComponents);\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        dispatchNewContentToVisualEditor(this.content);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.content,\n      };\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"<template>\n  <template v-if=\\\\\"link\\\\\">\n    <a\n      :href=\\\\\"link\\\\\"\n      :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n      >{{ text }}</a\n    >\n  </template>\n\n  <template v-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > rootShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"foo === 'bar'\\\\\">\n    <div>Bar</div>\n  </template>\n\n  <template v-else>\n    <div>Foo</div>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-styles\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > self-referencing component 1`] = `\n\"<template>\n  <div>\n    {{ name }}\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"<template>\n  <div>\n    {{ name }}<slot />\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > setState 1`] = `\n\"<template>\n  <div><button @click=\\\\\"async (event) => someFn()\\\\\">Click me</button></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"set-state\\\\\",\n\n  data() {\n    return { n: [\\\\\"123\\\\\"] };\n  },\n\n  methods: {\n    someFn() {\n      this.n[0] = \\\\\"123\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showExpressions 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> Content0 </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\">\n      {{ undefined }}\n    </template>\n\n    <template v-else> ContentB </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> hello </template>\n\n    <template v-else> ContentE </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> 123 </template>\n\n    <template v-else> ContentF </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\"> 4mb </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else> 4mb </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\">\n        <div>complete</div>\n      </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionC === 'Complete'\\\\\"> dff </template>\n\n      <template v-else>\n        <div>complete else</div>\n      </template>\n    </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"show-with-other-values\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\", \\\\\"conditionC\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithFor 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template :key=\\\\\"idx\\\\\" v-for=\\\\\"(item, idx) in items\\\\\">\n      <div>{{ item }}</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"nested-show\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"items\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"show-with-other-values\\\\\",\n\n  props: [\\\\\"conditionA\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > showWithRootText 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"show-root-text\\\\\",\n\n  props: [\\\\\"conditionA\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">{{ id }}{{ foo.value.bar.baz }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"id\\\\\", \\\\\"foo\\\\\"],\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"props.id changed\\\\\", this.id);\n        console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.value.bar.baz);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.id,\n        1: this.foo.value.bar.baz,\n      };\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadAttrs 1`] = `\n\"<template>\n  <input v-bind=\\\\\"attrs\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"nested\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"nested\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > spreadProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"$props\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > store-async-function 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  methods: {\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > string-literal-store 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  data() {\n    return { foo: 123 };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > string-literal-store-kebab 1`] = `\n\"<template>\n  <div>{{ \\\\\"foo-bar\\\\\" }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\n\n  export default defineComponent( {\n  name: 'string-literal-store',\n\n\n\n  data() {\n    return { foo-bar: 123,}\n  },\n\n\n\n\n\n\n\n\n\n\n\n\n\n  }\n  )\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-column div\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n    }\\\\\"\n  ></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"<template>\n  <div :style=\\\\\"attributes.style\\\\\" :class=\\\\\"attributes.className + ' div'\\\\\"></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"style-prop-class-and-css\\\\\",\n\n  props: [\\\\\"attributes\\\\\"],\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > subComponent 1`] = `\n\"<template>\n  <Foo></Foo>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"sub-component\\\\\",\n  components: { Foo: Foo },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > svgComponent 1`] = `\n\"<template>\n  <svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    :viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    :width=\\\\\"42\\\\\"\n    :height=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          :stdDeviation=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"svg-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeDependency 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-dependency\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeExternalProps 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-external-props\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeExternalStore 1`] = `\n\"<template>\n  <div>Hello {{ _name }}!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-external-store\\\\\",\n\n  data() {\n    return { _name: \\\\\"test\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > typeGetterStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-getter-store\\\\\",\n\n  data() {\n    return { name: \\\\\"test\\\\\" };\n  },\n\n  computed: {\n    test() {\n      return \\\\\"test\\\\\";\n    },\n  },\n\n  methods: {\n    getName() {\n      if (this.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return this.name;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style-and-css 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > useTarget 1`] = `\n\"<template>\n  <div>{{ name }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"use-target-component\\\\\",\n\n  data() {\n    return { lastName: \\\\\"bar\\\\\", foo: \\\\\"bar\\\\\" };\n  },\n\n  mounted() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  },\n\n  computed: {\n    name() {\n      const prefix = \\\\\"v\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Javascript Test > webComponent 1`] = `\n\"<template>\n  <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide><swiper-slide>Slide 2</swiper-slide\n    ><swiper-slide>Slide 3</swiper-slide></swiper-container\n  >\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-web-component\\\\\",\n\n  created() {\n    register();\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Remove Internal mitosis package 1`] = `\n\"<template>\n  <div>Hello {{ name }}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Advanced 1`] = `\n\"<template>\n  <main>\n    <template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <div>{{ i }}: {{ person }}</div> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}</span> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(_, index) in names\\\\\">\n      <br /> </template\n    ><template\n      :key=\\\\\"ee\\\\\"\n      v-for=\\\\\"(_, ee) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <pre>{{ ee }}</pre></template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(_, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <p>{{ index }}</p> </template\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <span>{{ person }}{{ index }}</span> </template\n    ><template\n      :key=\\\\\"count\\\\\"\n      v-for=\\\\\"(person, count) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ count }}</span> </template\n    ><template :key=\\\\\"i\\\\\" v-for=\\\\\"(person, i) in names\\\\\">\n      <span>{{ person }}{{ i }}</span> </template\n    ><template\n      :key=\\\\\"index\\\\\"\n      v-for=\\\\\"(person, index) in Array.from({\n        length: 10,\n      })\\\\\"\n    >\n      <span>{{ person }}{{ index }}</span>\n    </template>\n  </main>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-show-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > AdvancedRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-component\\\\\",\n\n  props: [\\\\\"showInput\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"Received an update\\\\\");\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.$refs.inputRef,\n        1: this.$refs.inputNoArgRef,\n      };\n    },\n  },\n\n  methods: {\n    onBlur: function onBlur() {\n      // Maintain focus\n      this.$refs.inputRef.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">\n    <input\n      :value=\\\\\"DEFAULT_VALUES.name || name\\\\\"\n      @change=\\\\\"async (myEvent) => (name = myEvent.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\", age: 1, sports: [\\\\\"\\\\\"], DEFAULT_VALUES };\n  },\n\n  methods: {\n    underscore_fn_name() {\n      return \\\\\"bar\\\\\";\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic 2`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <template v-if=\\\\\"person === name\\\\\">\n        <input\n          :value=\\\\\"name\\\\\"\n          @change=\\\\\"\n            async (event) => {\n              name = event.target.value + ' and ' + person;\n            }\n          \\\\\"\n        />\n\n        Hello\n        {{ person }}\n        ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n      </template>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-show-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Context 1`] = `\n\"<template>\n  <div>\n    {{ myService.method(\\\\\"hello\\\\\") + name }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n    <input @change=\\\\\"async (event) => onChange()\\\\\" />\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [Injector.key]: createInjector(),\n    };\n  },\n  inject: {\n    myService: MyService.key,\n  },\n  created() {\n    const hi = this.myService.method(\\\\\"hi\\\\\");\n    console.log(hi);\n  },\n  mounted() {\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  },\n\n  methods: {\n    onChange: function onChange() {\n      const change = this.myService.method(\\\\\"change\\\\\");\n      console.log(change);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-on-mount-update-component\\\\\",\n\n  props: [\\\\\"bye\\\\\", \\\\\"hi\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n\n  created() {\n    this.name = \\\\\"PatrickJS onInit\\\\\" + this.hi;\n  },\n  mounted() {\n    this.name = \\\\\"PatrickJS onMount\\\\\" + this.bye;\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Outputs 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-outputs-component\\\\\",\n\n  props: [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  mounted() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/** useMetadata: {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside\ncomponent\\\\\"} */\n\n<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-outputs-component\\\\\",\n\n  props: [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  mounted() {\n    this.onMessageChange(this.name);\n    this.onEvent(this.message);\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicAttribute 1`] = `\n\"<template>\n  <input autocapitalize=\\\\\"on\\\\\" autocomplete=\\\\\"on\\\\\" :spellcheck=\\\\\"true\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"$slots.default\\\\\">\n      <slot />\n      {{ type }}\n    </template>\n\n    <MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :toggle=\\\\\"true\\\\\"></MyBooleanAttributeComponent\n    ><MyBooleanAttributeComponent :list=\\\\\"null\\\\\"></MyBooleanAttributeComponent>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"my-boolean-attribute\\\\\",\n  components: { MyBooleanAttributeComponent: MyBooleanAttributeComponent },\n  props: [\\\\\"type\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"<template>\n  <div>\n    <MyBasicComponent :id=\\\\\"dev\\\\\"></MyBasicComponent>\n    <div>\n      <MyBasicOnMountUpdateComponent\n        :hi=\\\\\"name\\\\\"\n        :bye=\\\\\"dev\\\\\"\n      ></MyBasicOnMountUpdateComponent\n      ><MyBasicOutputsComponent\n        message=\\\\\"Test\\\\\"\n        :onMessageChange=\\\\\"(name) => (name = name)\\\\\"\n        :onEvent=\\\\\"(event) => log('Test')\\\\\"\n      ></MyBasicOutputsComponent>\n    </div>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-child-component\\\\\",\n  components: {\n    MyBasicComponent: MyBasicComponent,\n    MyBasicOnMountUpdateComponent: MyBasicOnMountUpdateComponent,\n    MyBasicOutputsComponent: MyBasicOutputsComponent,\n  },\n\n  data() {\n    return { name: \\\\\"Steve\\\\\", dev: \\\\\"PatrickJS\\\\\" };\n  },\n\n  methods: {\n    log: function log(message: string) {\n      console.log(message);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicFor 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(person, index) in names\\\\\">\n      <input\n        :value=\\\\\"name\\\\\"\n        @change=\\\\\"\n          async (event) => {\n            name = event.target.value + ' and ' + person;\n          }\n        \\\\\"\n      />\n\n      Hello\n      {{ person }}\n      ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n  },\n\n  mounted() {\n    console.log(\\\\\"onMount code\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRef 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"showInput\\\\\">\n      <input\n        class=\\\\\"input\\\\\"\n        ref=\\\\\"inputRef\\\\\"\n        :value=\\\\\"name\\\\\"\n        @blur=\\\\\"async (event) => onBlur()\\\\\"\n        @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      />\n      <label for=\\\\\"cars\\\\\" ref=\\\\\"inputNoArgRef\\\\\"> Choose a car: </label>\n      <select name=\\\\\"cars\\\\\" id=\\\\\"cars\\\\\">\n        <option value=\\\\\"supra\\\\\">GR Supra</option>\n        <option value=\\\\\"86\\\\\">GR 86</option>\n      </select>\n    </template>\n\n    Hello\n    {{ lowerCaseName() }}! I can run in React, Qwik, Vue, Solid, or Web\n    Component!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-component\\\\\",\n\n  props: [\\\\\"showInput\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  methods: {\n    onBlur: function onBlur() {\n      // Maintain focus\n      this.$refs.inputRef?.focus();\n    },\n    lowerCaseName: function lowerCaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"<template>\n  <div><button @click=\\\\\"await handlerClick($event)\\\\\">Click</button></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-ref-assignment-component\\\\\",\n\n  methods: {\n    handlerClick: function handlerClick(event: Event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", this.$refs.holdValueRef);\n      this.$refs.holdValueRef = this.$refs.holdValueRef + \\\\\"JS\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"<template>\n  <div>\n    <h1>Now: {{ count }}, before: {{ this.$refs.prevCount }}</h1>\n    <button @click=\\\\\"async (event) => (count += 1)\\\\\">Increment</button>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-previous-component\\\\\",\n\n  data() {\n    return { count: 0 };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        this.$refs.prevCount = this.count;\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.count,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Button 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Columns 1`] = `\n\"<template>\n  <div class=\\\\\"builder-columns div\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(column, index) in columns\\\\\">\n      <div class=\\\\\"builder-column div-2\\\\\">{{ column.content }}{{ index }}</div>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"column\\\\\",\n\n  props: [\\\\\"columns\\\\\", \\\\\"space\\\\\"],\n\n  methods: {\n    getColumns() {\n      return this.columns || [];\n    },\n    getGutterSize() {\n      return typeof this.space === \\\\\"number\\\\\" ? this.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = this.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = this.getColumns();\n      const gutterSize = this.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${this.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  line-height: normal;\n}\n@media (max-width: 999px) {\n  .div {\n    flex-direction: row;\n  }\n}\n@media (max-width: 639px) {\n  .div {\n    flex-direction: row-reverse;\n  }\n}\n.div-2 {\n  flex-grow: 1;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"testing\\\\\"></slot>\n    <div><hr /></div>\n    <div><slot /></div>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nexport default defineComponent({\n  name: \\\\\"content-slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"<template>\n  <template v-if=\\\\\"$slots.reference\\\\\">\n    <div\n      :name=\\\\\"$slots.content ? 'name1' : 'name2'\\\\\"\n      :title=\\\\\"$slots.content ? 'title1' : 'title2'\\\\\"\n      @click=\\\\\"async (event) => show()\\\\\"\n      :class=\\\\\"cls\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n    >\n      <template v-if=\\\\\"showContent && $slots.content\\\\\">\n        <slot name=\\\\\"content\\\\\">{{ content }}</slot>\n      </template>\n\n      <div><hr /></div>\n      <div><slot /></div>\n    </div>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nexport default defineComponent({\n  name: \\\\\"content-slot-jsx-code\\\\\",\n\n  props: { attributes: { default: undefined }, content: { default: \\\\\"\\\\\" } },\n\n  data() {\n    return { name: \\\\\"king\\\\\", showContent: false };\n  },\n\n  computed: {\n    cls() {\n      return this.$slots.content && this.$slots.default\n        ? \\`\\${this.name}-content\\`\n        : \\\\\"\\\\\";\n    },\n  },\n\n  methods: {\n    show() {\n      this.$slots.content ? 1 : \\\\\"\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > CustomCode 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"custom-code\\\\\",\n\n  props: [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"],\n\n  data() {\n    return { scriptsInserted: [], scriptsRun: [] };\n  },\n\n  mounted() {\n    this.findAndRunScripts();\n  },\n\n  methods: {\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (this.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            this.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (this.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              this.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Embed 1`] = `\n\"<template>\n  <div\n    ref=\\\\\"elem\\\\\"\n    :class=\\\\\"'builder-custom-code' + (replaceNodes ? ' replace-nodes' : '')\\\\\"\n    v-html=\\\\\"code\\\\\"\n  ></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"custom-code\\\\\",\n\n  props: [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"],\n\n  data() {\n    return { scriptsInserted: [], scriptsRun: [] };\n  },\n\n  mounted() {\n    this.findAndRunScripts();\n  },\n\n  methods: {\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (this.$refs.elem && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = this.$refs.elem.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (this.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            this.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (this.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              this.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Form 1`] = `\n\"<template>\n  <form\n    :validate=\\\\\"validate\\\\\"\n    ref=\\\\\"formRef\\\\\"\n    :action=\\\\\"!sendWithJs && action\\\\\"\n    :method=\\\\\"method\\\\\"\n    :name=\\\\\"name\\\\\"\n    @submit=\\\\\"async (event) => onSubmit(event)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template v-if=\\\\\"builderBlock && builderBlock.children\\\\\">\n      <template\n        :key=\\\\\"block.id\\\\\"\n        v-for=\\\\\"(block, index) in builderBlock?.children\\\\\"\n      >\n        <BuilderBlockComponent\n          :block=\\\\\"block\\\\\"\n          :index=\\\\\"index\\\\\"\n        ></BuilderBlockComponent>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"errorMessage\\\\\"\n        :blocks=\\\\\"errorMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'sending'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"sendingMessage\\\\\"\n        :blocks=\\\\\"sendingMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'error' && responseData\\\\\">\n      <pre class=\\\\\"builder-form-error-text pre\\\\\">{{\n        JSON.stringify(responseData, null, 2)\n      }}</pre>\n    </template>\n\n    <template v-if=\\\\\"submissionState === 'success'\\\\\">\n      <BuilderBlocks\n        dataPath=\\\\\"successMessage\\\\\"\n        :blocks=\\\\\"successMessage\\\\\"\n      ></BuilderBlocks>\n    </template>\n  </form>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder, BuilderElement, builder } from \\\\\"@builder.io/sdk\\\\\";\nimport {\n  BuilderBlock as BuilderBlockComponent,\n  BuilderBlocks,\n  get,\n  set,\n} from \\\\\"@fake\\\\\";\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: {\n    [key: string]: string;\n  };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\nexport type FormState = \\\\\"unsubmitted\\\\\" | \\\\\"sending\\\\\" | \\\\\"success\\\\\" | \\\\\"error\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"form-component\\\\\",\n  components: {\n    BuilderBlockComponent: BuilderBlockComponent,\n    BuilderBlocks: BuilderBlocks,\n  },\n  props: [\n    \\\\\"previewState\\\\\",\n    \\\\\"sendWithJs\\\\\",\n    \\\\\"sendSubmissionsTo\\\\\",\n    \\\\\"action\\\\\",\n    \\\\\"customHeaders\\\\\",\n    \\\\\"contentType\\\\\",\n    \\\\\"sendSubmissionsToEmail\\\\\",\n    \\\\\"name\\\\\",\n    \\\\\"method\\\\\",\n    \\\\\"errorMessagePath\\\\\",\n    \\\\\"resetFormOnSubmit\\\\\",\n    \\\\\"successUrl\\\\\",\n    \\\\\"validate\\\\\",\n    \\\\\"attributes\\\\\",\n    \\\\\"builderBlock\\\\\",\n    \\\\\"errorMessage\\\\\",\n    \\\\\"sendingMessage\\\\\",\n    \\\\\"successMessage\\\\\",\n  ],\n\n  data() {\n    return {\n      formState: \\\\\"unsubmitted\\\\\",\n      responseData: null,\n      formErrorMessage: \\\\\"\\\\\",\n      builder,\n    };\n  },\n\n  computed: {\n    submissionState() {\n      return (Builder.isEditing && this.previewState) || this.formState;\n    },\n  },\n\n  methods: {\n    onSubmit(\n      event: Event & {\n        currentTarget: HTMLFormElement;\n      }\n    ) {\n      const sendWithJs = this.sendWithJs || this.sendSubmissionsTo === \\\\\"email\\\\\";\n\n      if (this.sendSubmissionsTo === \\\\\"zapier\\\\\") {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(this.action || this.sendSubmissionsTo === \\\\\"email\\\\\")) {\n          event.preventDefault();\n          return;\n        }\n\n        event.preventDefault();\n        const el = event.currentTarget;\n        const headers = this.customHeaders || {};\n        let body: any;\n        const formData = new FormData(el); // TODO: maybe support null\n\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(\n          event.currentTarget.querySelectorAll(\\\\\"input,select,textarea\\\\\")\n        )\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n\n            if (el instanceof HTMLInputElement) {\n              if (el.type === \\\\\"radio\\\\\") {\n                if (el.checked) {\n                  value = el.name;\n                  return {\n                    key,\n                    value,\n                  };\n                }\n              } else if (el.type === \\\\\"checkbox\\\\\") {\n                value = el.checked;\n              } else if (el.type === \\\\\"number\\\\\" || el.type === \\\\\"range\\\\\") {\n                const num = el.valueAsNumber;\n\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === \\\\\"file\\\\\") {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return {\n              key,\n              value,\n            };\n          });\n        let contentType = this.contentType;\n\n        if (this.sendSubmissionsTo === \\\\\"email\\\\\") {\n          contentType = \\\\\"multipart/form-data\\\\\";\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = \\\\\"multipart/form-data\\\\\";\n          }\n        }); // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n\n        if (contentType !== \\\\\"application/json\\\\\") {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== \\\\\"multipart/form-data\\\\\") {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && this.action?.includes(\\\\\"zapier.com\\\\\"))\n          ) {\n            headers[\\\\\"content-type\\\\\"] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent(\\\\\"presubmit\\\\\", {\n          detail: {\n            body,\n          },\n        });\n\n        if (this.$refs.formRef) {\n          this.$refs.formRef.dispatchEvent(presubmitEvent);\n\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        this.formState = \\\\\"sending\\\\\";\n        const formUrl = \\`\\${\n          builder.env === \\\\\"dev\\\\\" ? \\\\\"http://localhost:5000\\\\\" : \\\\\"https://builder.io\\\\\"\n        }/api/v1/form-submit?apiKey=\\${builder.apiKey}&to=\\${btoa(\n          this.sendSubmissionsToEmail || \\\\\"\\\\\"\n        )}&name=\\${encodeURIComponent(this.name || \\\\\"\\\\\")}\\`;\n        fetch(\n          this.sendSubmissionsTo === \\\\\"email\\\\\" ? formUrl : this.action!,\n          /* TODO: throw error if no action URL */\n          {\n            body,\n            headers,\n            method: this.method || \\\\\"post\\\\\",\n          }\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get(\\\\\"content-type\\\\\");\n\n            if (contentType && contentType.indexOf(\\\\\"application/json\\\\\") !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && this.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, this.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== \\\\\"string\\\\\") {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n           error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n\n                this.formErrorMessage = message;\n              }\n            }\n\n            this.responseData = body;\n            this.formState = res.ok ? \\\\\"success\\\\\" : \\\\\"error\\\\\";\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent(\\\\\"submit:success\\\\\", {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n\n              if (this.$refs.formRef) {\n                this.$refs.formRef.dispatchEvent(submitSuccessEvent);\n\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n\n                if (this.resetFormOnSubmit !== false) {\n                  this.$refs.formRef.reset();\n                }\n              }\n              /* TODO: client side route event first that can be preventDefaulted */\n\n              if (this.successUrl) {\n                if (this.$refs.formRef) {\n                  const event = new CustomEvent(\\\\\"route\\\\\", {\n                    detail: {\n                      url: this.successUrl,\n                    },\n                  });\n                  this.$refs.formRef.dispatchEvent(event);\n\n                  if (!event.defaultPrevented) {\n                    location.href = this.successUrl;\n                  }\n                } else {\n                  location.href = this.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent(\\\\\"submit:error\\\\\", {\n              detail: {\n                error: err,\n              },\n            });\n\n            if (this.$refs.formRef) {\n              this.$refs.formRef.dispatchEvent(submitErrorEvent);\n\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            this.responseData = err;\n            this.formState = \\\\\"error\\\\\";\n          }\n        );\n      }\n    },\n  },\n});\n</script>\n\n<style scoped>\n.pre {\n  padding: 10px;\n  color: red;\n  text-align: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Image 1`] = `\n\"<template>\n  <div>\n    <picture ref=\\\\\"pictureRef\\\\\">\n      <template v-if=\\\\\"!useLazyLoading() || load\\\\\">\n        <img\n          :alt=\\\\\"altText\\\\\"\n          :aria-role=\\\\\"altText ? 'presentation' : undefined\\\\\"\n          :class=\\\\\"'builder-image' + (_class ? ' ' + _class : '') + ' img'\\\\\"\n          :src=\\\\\"image\\\\\"\n          @load=\\\\\"async (event) => setLoaded()\\\\\"\n          :srcset=\\\\\"srcset\\\\\"\n          :sizes=\\\\\"sizes\\\\\"\n        />\n      </template>\n\n      <source :srcset=\\\\\"srcset\\\\\" /></picture\n    ><slot />\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\n// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\nexport default defineComponent({\n  name: \\\\\"image\\\\\",\n\n  props: [\\\\\"lazy\\\\\", \\\\\"altText\\\\\", \\\\\"_class\\\\\", \\\\\"image\\\\\", \\\\\"srcset\\\\\", \\\\\"sizes\\\\\"],\n\n  data() {\n    return { scrollListener: null, imageLoaded: false, load: false };\n  },\n\n  mounted() {\n    if (this.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (this.$refs.pictureRef) {\n          const rect = this.$refs.pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.load = true;\n            this.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  },\n\n  unmounted() {\n    if (this.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.scrollListener);\n    }\n  },\n\n  methods: {\n    setLoaded() {\n      this.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!this.lazy && this.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n  },\n});\n</script>\n\n<style scoped>\n.img {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out;\n  object-fit: cover;\n  object-position: center;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Image State 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"itemIndex\\\\\" v-for=\\\\\"(item, itemIndex) in images\\\\\">\n      <img class=\\\\\"custom-class\\\\\" :src=\\\\\"item\\\\\" :key=\\\\\"itemIndex\\\\\" />\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"img-state-component\\\\\",\n\n  data() {\n    return { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Img 1`] = `\n\"<template>\n  <img\n    :style=\\\\\"{\n      objectFit: backgroundSize || 'cover',\n      objectPosition: backgroundPosition || 'center',\n    }\\\\\"\n    :key=\\\\\"(Builder.isEditing && imgSrc) || 'default-key'\\\\\"\n    :alt=\\\\\"altText\\\\\"\n    :src=\\\\\"imgSrc\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nexport default defineComponent({\n  name: \\\\\"img-component\\\\\",\n\n  props: [\n    \\\\\"backgroundSize\\\\\",\n    \\\\\"backgroundPosition\\\\\",\n    \\\\\"attributes\\\\\",\n    \\\\\"imgSrc\\\\\",\n    \\\\\"altText\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Input 1`] = `\n\"<template>\n  <input\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :placeholder=\\\\\"placeholder\\\\\"\n    :type=\\\\\"type\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :required=\\\\\"required\\\\\"\n    @change=\\\\\"async (event) => onChange?.(event.target.value)\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nexport default defineComponent({\n  name: \\\\\"form-input-component\\\\\",\n\n  props: [\n    \\\\\"attributes\\\\\",\n    \\\\\"defaultValue\\\\\",\n    \\\\\"placeholder\\\\\",\n    \\\\\"type\\\\\",\n    \\\\\"name\\\\\",\n    \\\\\"value\\\\\",\n    \\\\\"required\\\\\",\n    \\\\\"onChange\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > InputParent 1`] = `\n\"<template>\n  <FormInputComponent\n    name=\\\\\"kingzez\\\\\"\n    type=\\\\\"text\\\\\"\n    :onChange=\\\\\"(value) => handleChange(value)\\\\\"\n  ></FormInputComponent>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport FormInputComponent from \\\\\"./input.raw\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"stepper\\\\\",\n  components: { FormInputComponent: FormInputComponent },\n\n  methods: {\n    handleChange(value: string) {\n      console.log(value);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > NestedStore 1`] = `\n\"<template>\n  <div :id=\\\\\"_id\\\\\">\n    Test\n    <p :id=\\\\\"_messageId\\\\\">Message</p>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"nested-store\\\\\",\n\n  data() {\n    return { _id: \\\\\"abc\\\\\", _messageId: this._id + \\\\\"-message\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > RawText 1`] = `\n\"<template>\n  <span\n    :class=\\\\\"attributes?.class || attributes?.className\\\\\"\n    v-html=\\\\\"text || ''\\\\\"\n  ></span>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\nexport default defineComponent({\n  name: \\\\\"raw-text\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Section 1`] = `\n\"<template>\n  <section\n    :style=\\\\\"\n      maxWidth && typeof maxWidth === 'number'\n        ? {\n            maxWidth: maxWidth,\n          }\n        : undefined\n    \\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <slot />\n  </section>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default defineComponent({\n  name: \\\\\"section-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"maxWidth\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Section 2`] = `\n\"<template>\n  <template v-if=\\\\\"max\\\\\">\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(item, index) in items\\\\\">\n      <section\n        :style=\\\\\"{\n          maxWidth: item + max,\n        }\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        <slot />\n      </section>\n    </template>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default defineComponent({\n  name: \\\\\"section-state-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\"],\n\n  data() {\n    return { max: 42, items: [42] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Select 1`] = `\n\"<template>\n  <select\n    :value=\\\\\"value\\\\\"\n    :key=\\\\\"Builder.isEditing && defaultValue ? defaultValue : 'default-key'\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    :name=\\\\\"name\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  >\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(option, index) in options\\\\\">\n      <option :value=\\\\\"option.value\\\\\" :data-index=\\\\\"index\\\\\">\n        {{ option.name || option.value }}\n      </option>\n    </template>\n  </select>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"select-component\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"value\\\\\", \\\\\"defaultValue\\\\\", \\\\\"name\\\\\", \\\\\"options\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotDefault 1`] = `\n\"<template>\n  <div>\n    <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotHtml 1`] = `\n\"<template>\n  <div>\n    <ContentSlotCode>\n      <template #testing>\n        <div>Hello</div>\n      </template>\n    </ContentSlotCode>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n  components: { ContentSlotCode: ContentSlotCode },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotJsx 1`] = `\n\"<template>\n  <div><ContentSlotCode :slotTesting=\\\\\"<div>Hello</div>\\\\\"></ContentSlotCode></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n  components: { ContentSlotCode: ContentSlotCode },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > SlotNamed 1`] = `\n\"<template>\n  <div>\n    <slot name=\\\\\"my-awesome-slot\\\\\"></slot><slot name=\\\\\"top\\\\\"></slot\n    ><slot name=\\\\\"left\\\\\">Default left</slot><slot>Default Child</slot>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  [key: string]: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"slot-code\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Stamped.io 1`] = `\n\"<template>\n  <div :data-user=\\\\\"name\\\\\">\n    <button @click=\\\\\"async (event) => (showReviewPrompt = true)\\\\\">\n      Write a review\n    </button>\n    <template v-if=\\\\\"showReviewPrompt || 'asdf'\\\\\">\n      <input placeholder=\\\\\"Email\\\\\" />\n      <input placeholder=\\\\\"Title\\\\\" class=\\\\\"input\\\\\" />\n      <textarea\n        placeholder=\\\\\"How was your experience?\\\\\"\n        class=\\\\\"textarea\\\\\"\n      ></textarea>\n      <button\n        class=\\\\\"button\\\\\"\n        @click=\\\\\"\n          async (ev) => {\n            ev.preventDefault();\n            showReviewPrompt = false;\n          }\n        \\\\\"\n      >\n        Submit\n      </button>\n    </template>\n\n    <template :key=\\\\\"review.id\\\\\" v-for=\\\\\"(review, index) in reviews\\\\\">\n      <div class=\\\\\"review\\\\\">\n        <img class=\\\\\"img\\\\\" :src=\\\\\"review.avatar\\\\\" />\n        <div :class=\\\\\"showReviewPrompt ? 'bg-primary' : 'bg-secondary'\\\\\">\n          <div>N: {{ index }}</div>\n          <div>{{ review.author }}</div>\n          <div>{{ review.reviewMessage }}</div>\n        </div>\n      </div>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"smile-reviews\\\\\",\n\n  props: [\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"],\n\n  data() {\n    return { reviews: [], name: \\\\\"test\\\\\", showReviewPrompt: false };\n  },\n\n  mounted() {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.reviews = data.data;\n      });\n  },\n\n  methods: {\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  display: block;\n}\n.textarea {\n  display: block;\n}\n.button {\n  display: block;\n}\n.review {\n  margin: 10px;\n  padding: 10px;\n  background: white;\n  display: flex;\n  border-radius: 5px;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  -webkit-font-smoothing: antialiased;\n}\n.img {\n  height: 30px;\n  width: 30px;\n  margin-right: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreComment 1`] = `\n\"<template>\n  {{ foo }}\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  data() {\n    return { foo: true };\n  },\n\n  methods: { bar() {} },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"<template>\n  {{ foo(errors) }}\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { errors: {} };\n  },\n\n  methods: {\n    foo(errors) {\n      return errors;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > StoreWithState 1`] = `\n\"<template>\n  {{ bar() }}\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { foo: false };\n  },\n\n  methods: {\n    bar() {\n      return this.foo;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Submit 1`] = `\n\"<template>\n  <button type=\\\\\"submit\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"submit-button\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Text 1`] = `\n\"<template>\n  <div\n    :contentEditable=\\\\\"allowEditingText || undefined\\\\\"\n    :data-name=\\\\\"{\n      test: name || 'any name',\n    }\\\\\"\n    v-html=\\\\\"text || content || name || '<p class=\\\\\\\\'text-lg\\\\\\\\'>my name</p>'\\\\\"\n  ></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nexport default defineComponent({\n  name: \\\\\"text\\\\\",\n\n  props: [\\\\\"text\\\\\", \\\\\"content\\\\\"],\n\n  data() {\n    return { name: \\\\\"Decadef20\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Textarea 1`] = `\n\"<template>\n  <textarea\n    :placeholder=\\\\\"placeholder\\\\\"\n    :name=\\\\\"name\\\\\"\n    :value=\\\\\"value\\\\\"\n    :defaultValue=\\\\\"defaultValue\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></textarea>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"textarea\\\\\",\n\n  props: [\\\\\"attributes\\\\\", \\\\\"placeholder\\\\\", \\\\\"name\\\\\", \\\\\"value\\\\\", \\\\\"defaultValue\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"<template>\n  <div>Test</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nexport default defineComponent({\n  name: \\\\\"use-value-and-fn-from-store\\\\\",\n\n  props: [\\\\\"onChange\\\\\"],\n\n  data() {\n    return { _id: \\\\\"abc\\\\\", _active: false };\n  },\n\n  updated() {\n    if (this._do) {\n      this._do(this._id);\n    }\n  },\n\n  methods: {\n    _do(id?: string) {\n      this._active = !!id;\n\n      if (this.onChange) {\n        this.onChange(this._active);\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > Video 1`] = `\n\"<template>\n  <video\n    preload=\\\\\"none\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n      height: '100%',\n      ...attributes?.style,\n      objectFit: fit,\n      objectPosition: position,\n      // Hack to get object fit to work as expected and\n      // not have the video overflow\n      borderRadius: 1,\n    }\\\\\"\n    :key=\\\\\"video || 'no-src'\\\\\"\n    :poster=\\\\\"posterImage\\\\\"\n    :autoplay=\\\\\"autoPlay\\\\\"\n    :muted=\\\\\"muted\\\\\"\n    :controls=\\\\\"controls\\\\\"\n    :loop=\\\\\"loop\\\\\"\n    v-bind=\\\\\"attributes\\\\\"\n  ></video>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"video\\\\\",\n\n  props: [\n    \\\\\"attributes\\\\\",\n    \\\\\"fit\\\\\",\n    \\\\\"position\\\\\",\n    \\\\\"video\\\\\",\n    \\\\\"posterImage\\\\\",\n    \\\\\"autoPlay\\\\\",\n    \\\\\"muted\\\\\",\n    \\\\\"controls\\\\\",\n    \\\\\"loop\\\\\",\n  ],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"steve\\\\\" };\n  },\n\n  methods: {\n    setName(value) {\n      this.name = value;\n    },\n    updateNameWithArrowFn(value) {\n      this.name = value;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForFragment 1`] = `\n\"<template>\n  <div>\n    <template :key=\\\\\"\\`key-\\${option}\\`\\\\\" v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\">\n      <div>{{ option }}</div> </template\n    ><template\n      :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n      v-for=\\\\\"(option, index) in ['a', 'b', 'c']\\\\\"\n    >\n      <div>{{ option }}</div> </template\n    ><select>\n      <template\n        :key=\\\\\"\\`\\${id}-\\${option}\\`\\\\\"\n        v-for=\\\\\"(option, index) in ['d', 'e', 'f']\\\\\"\n      >\n        <option :value=\\\\\"option\\\\\">{{ option }}</option>\n      </template>\n    </select>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-for-fragment\\\\\",\n\n  data() {\n    return { id: \\\\\"xyz\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"<template>\n  <component :is=\\\\\"TagNameGetter\\\\\">\n    Hello <component :is=\\\\\"tag\\\\\">{{ name }}</component\n    ><template :key=\\\\\"index\\\\\" v-for=\\\\\"(action, index) in actions\\\\\">\n      <component :is=\\\\\"TagName\\\\\"\n        ><component :is=\\\\\"action.icon\\\\\"></component\n        ><span>{{ action.text }}</span></component\n      >\n    </template></component\n  >\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n\n  props: [\\\\\"actions\\\\\"],\n\n  data() {\n    return { name: \\\\\"VincentW\\\\\", TagName: \\\\\"div\\\\\", tag: \\\\\"span\\\\\" };\n  },\n\n  computed: {\n    TagNameGetter() {\n      return \\\\\"span\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForwardRef 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  props: [\\\\\"inputRef\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/** useMetadata: {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"} */\n\n<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      ref=\\\\\"inputRef\\\\\"\n      :value=\\\\\"name\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-forward-ref-component\\\\\",\n\n  props: [\\\\\"inputRef\\\\\"],\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"<template>\n  <div>Hello! {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-on-update-return-component\\\\\",\n\n  data() {\n    return { name: \\\\\"PatrickJS\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        const controller = new AbortController();\n        const signal = controller.signal;\n        fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n          signal,\n        })\n          .then((response) => response.json())\n          .then((data) => {\n            this.name = data.name;\n          });\n        return () => {\n          if (!signal.aborted) {\n            controller.abort();\n          }\n        };\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.name,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}} */\n\n<template>\n  <button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-ref-attribute-passing-component\\\\\",\n\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/** useMetadata: {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n*/\n\n<template>\n  <div><button ref=\\\\\"buttonRef\\\\\">Attribute Passing</button></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"<template>\n  <div>\n    <MyComp class=\\\\\"test\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </MyComp>\n    <div class=\\\\\"test2 test div\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport MyComp from \\\\\"./my-component.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n  components: { MyComp: MyComp },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > class + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > className + css 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">Hello! I can run in React, Vue, Solid, or Liquid!</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > className 1`] = `\n\"<template>\n  <div>\n    <div class=\\\\\"no binding\\\\\">Without Binding</div>\n    <div :class=\\\\\"bindings\\\\\">With binding</div>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nexport default defineComponent({\n  name: \\\\\"class-name-code\\\\\",\n\n  data() {\n    return { bindings: \\\\\"a binding\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > classState 1`] = `\n\"<template>\n  <div :class=\\\\\"classState + ' div'\\\\\" :style=\\\\\"styleState\\\\\">\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > classnameProps 1`] = `\n\"/** useMetadata:\n{\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n*/\n\n<template>\n  <div :class=\\\\\"className\\\\\">\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"className\\\\\", \\\\\"type\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > complexMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n*/\n\n<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"complex-meta-raw\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > componentWithContext 1`] = `\n\"<template>\n  {{ foo.value }}\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"component-with-context\\\\\",\n\n  props: [\\\\\"content\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [Context1.key]: {\n        foo: \\\\\"bar\\\\\",\n        content() {\n          return _this.content;\n        },\n      },\n      [Context2.key]: { bar: \\\\\"baz\\\\\" },\n    };\n  },\n  inject: {\n    foo: Context1.key,\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"<template>\n  {{ foo.value }}\n  <div>other</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\nexport interface ComponentWithContextProps {\n  content: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"component-with-context\\\\\",\n\n  props: [\\\\\"content\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [Context1.key]: {\n        foo: \\\\\"bar\\\\\",\n        content() {\n          return _this.content;\n        },\n      },\n      [Context2.key]: { bar: \\\\\"baz\\\\\" },\n    };\n  },\n  inject: {\n    foo: Context1.key,\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > contentState 1`] = `\n\"<template>\n  <div>setting context</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n\n  props: [\\\\\"content\\\\\", \\\\\"customComponents\\\\\"],\n\n  provide() {\n    const _this = this;\n    return {\n      [BuilderContext.key]: {\n        content: _this.content,\n        registeredComponents: _this.customComponents,\n      },\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultProps 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick()\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ buttonText }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: {\n    link: { default: \\\\\"https://builder.io/\\\\\" },\n    attributes: { default: undefined },\n    openLinkInNewTab: { default: false },\n    text: { default: \\\\\"default text\\\\\" },\n    onClick: {\n      default: () => {\n        console.log(\\\\\"hi\\\\\");\n      },\n    },\n    buttonText: { default: undefined },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"link\\\\\">\n      <a\n        :href=\\\\\"link\\\\\"\n        :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n        >{{ text }}</a\n      >\n    </template>\n\n    <template v-if=\\\\\"!link\\\\\">\n      <button\n        type=\\\\\"button\\\\\"\n        @click=\\\\\"async (event) => onClick(event)\\\\\"\n        v-bind=\\\\\"attributes\\\\\"\n      >\n        {{ text }}\n      </button>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: {\n    link: { default: \\\\\"https://builder.io/\\\\\" },\n    attributes: { default: undefined },\n    openLinkInNewTab: { default: false },\n    text: { default: \\\\\"default text\\\\\" },\n    onClick: { default: () => {} },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"<template>\n  <div>Hello {{ name || DEFAULT_VALUES.name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\ntype Props = {\n  name: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"component-with-types\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n\n  data() {\n    return { DEFAULT_VALUES };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"<template>\n  <div>\n    <input\n      class=\\\\\"input\\\\\"\n      :value=\\\\\"name\\\\\"\n      @input=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"event-input-and-change\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n});\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > eventProps 1`] = `\n\"<template>\n  <button @click=\\\\\"async (event) => handleClick()\\\\\">Test</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"event-props-component\\\\\",\n\n  props: [\\\\\"onGetVoid\\\\\", \\\\\"onEnter\\\\\", \\\\\"onPass\\\\\"],\n\n  methods: {\n    handleClick() {\n      if (this.onGetVoid) {\n        this.onGetVoid();\n      }\n\n      if (this.onEnter) {\n        console.log(this.onEnter());\n      }\n\n      if (this.onPass) {\n        this.onPass(\\\\\"test\\\\\");\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > expressionState 1`] = `\n\"<template>\n  <div>{{ refToUse }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"componentRef\\\\\"],\n\n  data() {\n    return {\n      refToUse: !(this.componentRef instanceof Function)\n        ? this.componentRef\n        : null,\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > figmaMeta 1`] = `\n\"/** useMetadata:\n{\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍\nIcon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon\nMedium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️\nLabel\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️\nIcon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive\nState\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nEnabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nMedium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def)\nAuto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}} */\n\n<template>\n  <button\n    :data-icon=\\\\\"icon\\\\\"\n    :data-disabled=\\\\\"interactiveState\\\\\"\n    :data-width=\\\\\"width\\\\\"\n    :data-size=\\\\\"size\\\\\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"figma-button\\\\\",\n\n  props: [\\\\\"icon\\\\\", \\\\\"interactiveState\\\\\", \\\\\"width\\\\\", \\\\\"size\\\\\", \\\\\"label\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > functionProps 1`] = `\n\"<template>\n  <p\n    :f=\\\\\"() => x\\\\\"\n    :f1=\\\\\"(x) => x\\\\\"\n    :f2=\\\\\"(x) => {}\\\\\"\n    :f3=\\\\\"\n      function () {\n        return x;\n      }\n    \\\\\"\n    :f4=\\\\\"\n      function (x) {\n        return x;\n      }\n    \\\\\"\n    :f5=\\\\\"\n      function (x) {\n        return;\n      }\n    \\\\\"\n    :f6=\\\\\"\n      function () {\n        return;\n      }\n    \\\\\"\n    :f7=\\\\\"(a, b, c) => a + b + c\\\\\"\n  ></p>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > getterState 1`] = `\n\"<template>\n  <div>\n    <p>{{ foo2 }}</p>\n    <p>{{ bar }}</p>\n    <p>{{ baz(1) }}</p>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  foo: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n\n  computed: {\n    foo2() {\n      return this.foo + \\\\\"foo\\\\\";\n    },\n    bar() {\n      return \\\\\"bar\\\\\";\n    },\n  },\n\n  methods: {\n    baz(i: number) {\n      return i + this.foo2.length;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > import types 1`] = `\n\"<template>\n  <RenderBlock\n    v-bind=\\\\\"getRenderContentProps(renderContentProps.block, 0)\\\\\"\n  ></RenderBlock>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n  components: { RenderBlock: RenderBlock },\n  props: [\\\\\"renderContentProps\\\\\"],\n\n  methods: {\n    getRenderContentProps(block, index) {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > layerName 1`] = `\n\"<template>\n  <section>\n    <div class=\\\\\"layer-name\\\\\">\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  </section>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-layer-name-component\\\\\",\n});\n</script>\n\n<style scoped>\n.layer-name {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"multiple-on-update\\\\\",\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"multiple-on-update-with-deps\\\\\",\n\n  data() {\n    return { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"Runs when a or b changes\\\\\", this.a, this.b);\n\n        if (this.a === \\\\\"a\\\\\") {\n          this.a = \\\\\"b\\\\\";\n        }\n      },\n      immediate: true,\n    },\n    onUpdateHook1: {\n      handler() {\n        console.log(\\\\\"Runs when c or d changes\\\\\", this.c, this.d);\n\n        if (this.a === \\\\\"a\\\\\") {\n          this.a = \\\\\"b\\\\\";\n        }\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n      };\n    },\n    onUpdateHook1() {\n      return {\n        0: this.c,\n        1: this.d,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > multipleSpreads 1`] = `\n\"<template>\n  <input v-bind=\\\\\"{ ...attrs, ...$props }\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  data() {\n    return {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > nestedShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template v-if=\\\\\"!conditionB\\\\\">\n      <div>if condition A and condition B</div>\n    </template>\n\n    <template v-else>\n      <div>else-condition-B</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"nested-show\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > nestedStyles 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\">Hello world</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"nested-styles\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  --bar: red;\n  color: var(--bar);\n}\n@media (max-width: env(--mobile)) {\n  .div {\n    display: block;\n  }\n}\n.div:hover {\n  display: flex;\n}\n.div:active {\n  display: inline;\n}\n.div .nested-selector {\n  display: grid;\n}\n.div .nested-selector:hover {\n  display: block;\n}\n.div.nested-selector:active {\n  display: inline-block;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"<template>\n  <section>\n    <div>Emoji</div>\n    <div>Dashes</div>\n    <div>CamelCase</div>\n    <div>Special chars</div>\n    <div>Special chars with dashes</div>\n    <div class=\\\\\"css-0\\\\\">Single Number</div>\n    <div class=\\\\\"css-123\\\\\">Multiple Numbers</div>\n    <div class=\\\\\"name-123\\\\\">Chars with numbers at end</div>\n    <div class=\\\\\"name\\\\\">Chars with numbers at start</div>\n    <div class=\\\\\"name-789\\\\\">Numnbers separated by dash</div>\n    <div>Emoji</div>\n    <div data-name=\\\\\"1\\\\\" class=\\\\\"div\\\\\">Number</div>\n  </section>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-normalized-layer-names-component\\\\\",\n});\n</script>\n\n<style scoped>\n.css-0 {\n  margin: 10px;\n}\n.css-123 {\n  padding: 10px;\n}\n.name-123 {\n  border: 1px solid;\n}\n.name {\n  color: red;\n}\n.name-789 {\n  background: blue;\n}\n.div {\n  background: blue;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onEvent 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-embed\\\\\"\n    ref=\\\\\"elem\\\\\"\n    @initeditingbldr=\\\\\"async (event) => elem_onInitEditingBldr(event)\\\\\"\n  >\n    <div>Test</div>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"embed\\\\\",\n\n  mounted() {\n    this.$refs.elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  },\n\n  methods: {\n    foo(event) {\n      console.log(\\\\\"test2\\\\\");\n    },\n    elem_onInitEditingBldr(event) {\n      console.log(\\\\\"test\\\\\");\n      this.foo(event);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInit & onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-init\\\\\",\n\n  created() {\n    console.log(\\\\\"onInit\\\\\");\n  },\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInit 1`] = `\n\"<template>\n  <div>Default name defined by parent {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\ntype Props = {\n  name: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"on-init\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n\n  data() {\n    return { name: \\\\\"\\\\\" };\n  },\n\n  created() {\n    this.name = defaultValues.name || this.name;\n    console.log(\\\\\"set defaults with props\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onInitPlain 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-init-plain\\\\\",\n\n  created() {\n    console.log(\\\\\"onInit\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onMount 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"comp\\\\\",\n\n  mounted() {\n    console.log(\\\\\"Runs on mount\\\\\");\n  },\n\n  unmounted() {\n    console.log(\\\\\"Runs on unMount\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onMountMultiple 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"comp\\\\\",\n\n  mounted() {\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n    onMountHook_0();\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n    onMountHook_1();\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n    onMountHook_2();\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onUpdate 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-update\\\\\",\n\n  updated() {\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  size: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"on-update-with-deps\\\\\",\n\n  props: [\\\\\"size\\\\\"],\n\n  data() {\n    return { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\n          \\\\\"Runs when a, b or size changes\\\\\",\n          this.a,\n          this.b,\n          this.size\n        );\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n        2: this.size,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\ntype Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > preserveTyping 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsDestructure 1`] = `\n\"<template>\n  <div>\n    <slot />{{ type }}\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"type\\\\\"],\n\n  data() {\n    return { name: \\\\\"Decadef20\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsInterface 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Person {\n  name: string;\n  age?: number;\n}\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > propsType 1`] = `\n\"<template>\n  <div>Hello! I can run in React, Vue, Solid, or Liquid! {{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Person = {\n  name: string;\n  age?: number;\n};\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"on-update\\\\\",\n\n  updated() {\n    this.foo({\n      someOption: this.bar,\n    });\n  },\n\n  methods: {\n    foo: function foo(params) {},\n    bar: function bar() {},\n    zoo: function zoo() {\n      const params = {\n        cb: this.bar,\n      };\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > renderBlock 1`] = `\n\"<template>\n  <template v-if=\\\\\"shouldWrap\\\\\">\n    <template v-if=\\\\\"isEmptyHtmlElement(tag)\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"></component>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && repeatItemData\\\\\">\n      <template :key=\\\\\"index\\\\\" v-for=\\\\\"(data, index) in repeatItemData\\\\\">\n        <RenderRepeatedBlock\n          :repeatContext=\\\\\"data.context\\\\\"\n          :block=\\\\\"data.block\\\\\"\n        ></RenderRepeatedBlock>\n      </template>\n    </template>\n\n    <template v-if=\\\\\"!isEmptyHtmlElement(tag) && !repeatItemData\\\\\">\n      <component :is=\\\\\"tag\\\\\" v-bind=\\\\\"{ ...attributes, ...actions }\\\\\"\n        ><component\n          :is=\\\\\"renderComponentTag\\\\\"\n          v-bind=\\\\\"renderComponentProps\\\\\"\n        ></component\n        ><template\n          :key=\\\\\"'render-block-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <RenderBlock\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></RenderBlock> </template\n        ><template\n          :key=\\\\\"'block-style-' + child.id\\\\\"\n          v-for=\\\\\"(child, index) in childrenWithoutParentComponent\\\\\"\n        >\n          <BlockStyles\n            :block=\\\\\"child\\\\\"\n            :context=\\\\\"childrenContext\\\\\"\n          ></BlockStyles> </template\n      ></component>\n    </template>\n  </template>\n\n  <template v-else>\n    <component\n      :is=\\\\\"renderComponentTag\\\\\"\n      v-bind=\\\\\"renderComponentProps\\\\\"\n    ></component>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.vue\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.vue\\\\\";\nimport RenderComponent from \\\\\"./render-component.vue\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.vue\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nexport default defineComponent({\n  name: \\\\\"render-block\\\\\",\n  components: {\n    RenderRepeatedBlock: RenderRepeatedBlock,\n    BlockStyles: BlockStyles,\n    RenderComponent: RenderComponent,\n  },\n  props: [\\\\\"block\\\\\", \\\\\"context\\\\\"],\n\n  data() {\n    return { isEmptyHtmlElement };\n  },\n\n  computed: {\n    component() {\n      const componentName = getProcessedBlock({\n        block: this.block,\n        state: this.context.state,\n        context: this.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = this.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    tag() {\n      return getBlockTag(this.useBlock);\n    },\n    useBlock() {\n      return this.repeatItemData\n        ? this.block\n        : getProcessedBlock({\n            block: this.block,\n            state: this.context.state,\n            context: this.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    actions() {\n      return getBlockActions({\n        block: this.useBlock,\n        state: this.context.state,\n        context: this.context.context,\n      });\n    },\n    attributes() {\n      const blockProperties = getBlockProperties(this.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === \\\\\"reactNative\\\\\"\n          ? {\n              style: getReactNativeBlockStyles({\n                block: this.useBlock,\n                context: this.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n    shouldWrap() {\n      return !this.component?.noWrap;\n    },\n    renderComponentProps() {\n      return {\n        blockChildren: this.useChildren,\n        componentRef: this.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(this.useBlock),\n\n          /**\n           * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(this.shouldWrap\n            ? {}\n            : {\n                attributes: { ...this.attributes, ...this.actions },\n              }),\n          customBreakpoints: this.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: this.childrenContext,\n      };\n    },\n    useChildren() {\n      // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return this.useBlock.children ?? [];\n    },\n    childrenWithoutParentComponent() {\n      /**\n       * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n       * we render them outside of \\`componentRef\\`.\n       * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef =\n        !this.component?.component && !this.repeatItemData;\n      return shouldRenderChildrenOutsideRef ? this.useChildren : [];\n    },\n    repeatItemData() {\n      /**\n       * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = this.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: this.context.state,\n        context: this.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n      const itemNameToUse =\n        repeat.itemName || (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...this.context,\n          state: {\n            ...this.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [\\`$\\${itemNameToUse}Index\\`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n      return repeatArray;\n    },\n    inheritedTextStyles() {\n      if (TARGET !== \\\\\"reactNative\\\\\") {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: this.useBlock,\n        context: this.context,\n        blockStyles: this.attributes.style,\n      });\n      return extractTextStyles(styles);\n    },\n    childrenContext() {\n      return {\n        apiKey: this.context.apiKey,\n        state: this.context.state,\n        content: this.context.content,\n        context: this.context.context,\n        registeredComponents: this.context.registeredComponents,\n        inheritedStyles: this.inheritedTextStyles,\n      };\n    },\n    renderComponentTag() {\n      if (TARGET === \\\\\"reactNative\\\\\") {\n        return RenderComponentWithContext;\n      } else if (TARGET === \\\\\"vue3\\\\\") {\n        // vue3 expects a string for the component tag\n        return \\\\\"RenderComponent\\\\\";\n      } else {\n        return RenderComponent;\n      }\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > renderContentExample 1`] = `\n\"<template>\n  <div class=\\\\\"div\\\\\" @click=\\\\\"async (event) => trackClick(content.id)\\\\\">\n    <RenderBlocks :blocks=\\\\\"content.blocks\\\\\"></RenderBlocks>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.vue\\\\\";\n\ntype Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nexport default defineComponent({\n  name: \\\\\"render-content\\\\\",\n  components: { RenderBlocks: RenderBlocks },\n  props: [\\\\\"customComponents\\\\\", \\\\\"content\\\\\"],\n\n  data() {\n    return { trackClick };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [BuilderContext.key]: {\n        get content() {\n          return 3;\n        },\n        get registeredComponents() {\n          return 4;\n        },\n      },\n    };\n  },\n\n  mounted() {\n    sendComponentsToVisualEditor(this.customComponents);\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        dispatchNewContentToVisualEditor(this.content);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.content,\n      };\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: columns;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"<template>\n  <template v-if=\\\\\"link\\\\\">\n    <a\n      :href=\\\\\"link\\\\\"\n      :target=\\\\\"openLinkInNewTab ? '_blank' : undefined\\\\\"\n      v-bind=\\\\\"attributes\\\\\"\n      >{{ text }}</a\n    >\n  </template>\n\n  <template v-if=\\\\\"!link\\\\\">\n    <button type=\\\\\"button\\\\\" v-bind=\\\\\"attributes\\\\\">{{ text }}</button>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"button\\\\\",\n\n  props: [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > rootShow 1`] = `\n\"<template>\n  <template v-if=\\\\\"foo === 'bar'\\\\\">\n    <div>Bar</div>\n  </template>\n\n  <template v-else>\n    <div>Foo</div>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport interface RenderStylesProps {\n  foo: string;\n}\n\nexport default defineComponent({\n  name: \\\\\"render-styles\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > self-referencing component 1`] = `\n\"<template>\n  <div>\n    {{ name }}\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"<template>\n  <div>\n    {{ name }}<slot />\n    <template v-if=\\\\\"name === 'Batman'\\\\\">\n      <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > setState 1`] = `\n\"<template>\n  <div><button @click=\\\\\"async (event) => someFn()\\\\\">Click me</button></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"set-state\\\\\",\n\n  data() {\n    return { n: [\\\\\"123\\\\\"] };\n  },\n\n  methods: {\n    someFn() {\n      this.n[0] = \\\\\"123\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showExpressions 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> Content0 </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\">\n      {{ undefined }}\n    </template>\n\n    <template v-else> ContentB </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> </template>\n\n    <template v-else> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> hello </template>\n\n    <template v-else> ContentE </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> 123 </template>\n\n    <template v-else> ContentF </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\"> 4mb </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\"> 20mb </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else> 4mb </template>\n\n    <template v-if=\\\\\"conditionA === 'Default'\\\\\">\n      <template v-if=\\\\\"conditionB === 'Complete'\\\\\">\n        <div>complete</div>\n      </template>\n\n      <template v-else> 9mb </template>\n    </template>\n\n    <template v-else>\n      <template v-if=\\\\\"conditionC === 'Complete'\\\\\"> dff </template>\n\n      <template v-else>\n        <div>complete else</div>\n      </template>\n    </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"show-with-other-values\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\", \\\\\"conditionC\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithFor 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\">\n    <template :key=\\\\\"idx\\\\\" v-for=\\\\\"(item, idx) in items\\\\\">\n      <div>{{ item }}</div>\n    </template>\n  </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\nexport default defineComponent({\n  name: \\\\\"nested-show\\\\\",\n\n  props: [\\\\\"conditionA\\\\\", \\\\\"items\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"<template>\n  <div>\n    <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentB </template>\n\n    <template v-else>\n      {{ undefined }}\n    </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentC </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentD </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentE </template>\n\n    <template v-else> hello </template>\n\n    <template v-if=\\\\\"conditionA\\\\\"> ContentF </template>\n\n    <template v-else> 123 </template>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"show-with-other-values\\\\\",\n\n  props: [\\\\\"conditionA\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > showWithRootText 1`] = `\n\"<template>\n  <template v-if=\\\\\"conditionA\\\\\"> ContentA </template>\n\n  <template v-else>\n    <div>else-condition-A</div>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default defineComponent({\n  name: \\\\\"show-root-text\\\\\",\n\n  props: [\\\\\"conditionA\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"<template>\n  <div class=\\\\\"test div\\\\\">{{ id }}{{ foo.bar.baz }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"id\\\\\", \\\\\"foo\\\\\"],\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        console.log(\\\\\"props.id changed\\\\\", this.id);\n        console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", this.foo.bar.baz);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.id,\n        1: this.foo.bar.baz,\n      };\n    },\n  },\n});\n</script>\n\n<style scoped>\n.div {\n  padding: 10px;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadAttrs 1`] = `\n\"<template>\n  <input v-bind=\\\\\"attrs\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"nested\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n\n  props: [\\\\\"nested\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > spreadProps 1`] = `\n\"<template>\n  <input v-bind=\\\\\"$props\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > store-async-function 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  methods: {\n    arrowFunction: async function arrowFunction() {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    fetchUsers: async function fetchUsers() {\n      return Promise.resolve();\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > string-literal-store 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"string-literal-store\\\\\",\n\n  data() {\n    return { foo: 123 };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > string-literal-store-kebab 1`] = `\n\"<template>\n  <div>{{ \\\\\"foo-bar\\\\\" }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\"\n\n\n\n\n\n\n\n\n\n\n  export default defineComponent( {\n  name: 'string-literal-store',\n\n\n\n  data() {\n    return { foo-bar: 123,}\n  },\n\n\n\n\n\n\n\n\n\n\n\n\n\n  }\n  )\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"<template>\n  <div\n    class=\\\\\"builder-column div\\\\\"\n    :style=\\\\\"{\n      width: '100%',\n    }\\\\\"\n  ></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"<template>\n  <div :style=\\\\\"attributes.style\\\\\" :class=\\\\\"attributes.className + ' div'\\\\\"></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"style-prop-class-and-css\\\\\",\n\n  props: [\\\\\"attributes\\\\\"],\n});\n</script>\n\n<style scoped>\n.div {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > subComponent 1`] = `\n\"<template>\n  <Foo></Foo>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Foo from \\\\\"./foo-sub-component.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"sub-component\\\\\",\n  components: { Foo: Foo },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > svgComponent 1`] = `\n\"<template>\n  <svg\n    fill=\\\\\"none\\\\\"\n    role=\\\\\"img\\\\\"\n    :viewBox=\\\\\"'0 0 ' + 42 + ' ' + 42\\\\\"\n    :width=\\\\\"42\\\\\"\n    :height=\\\\\"42\\\\\"\n  >\n    <defs>\n      <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n        <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n        <feBlend\n          in=\\\\\"SourceGraphic\\\\\"\n          in2=\\\\\"BackgroundImageFix\\\\\"\n          result=\\\\\"shape\\\\\"\n        ></feBlend>\n        <feGaussianBlur\n          result=\\\\\"effect1_foregroundBlur\\\\\"\n          :stdDeviation=\\\\\"7\\\\\"\n        ></feGaussianBlur>\n      </filter>\n    </defs>\n  </svg>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"svg-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeDependency 1`] = `\n\"<template>\n  <div>{{ foo }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.vue\\\\\";\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nexport default defineComponent({\n  name: \\\\\"type-dependency\\\\\",\n\n  props: [\\\\\"foo\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeExternalProps 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { FooProps } from \\\\\"./foo-props\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-external-props\\\\\",\n\n  props: [\\\\\"name\\\\\"],\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeExternalStore 1`] = `\n\"<template>\n  <div>Hello {{ _name }}!</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { FooStore } from \\\\\"./foo-store\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"type-external-store\\\\\",\n\n  data() {\n    return { _name: \\\\\"test\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > typeGetterStore 1`] = `\n\"<template>\n  <div>Hello {{ name }}!</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nexport default defineComponent({\n  name: \\\\\"type-getter-store\\\\\",\n\n  data() {\n    return { name: \\\\\"test\\\\\" };\n  },\n\n  computed: {\n    test() {\n      return \\\\\"test\\\\\";\n    },\n  },\n\n  methods: {\n    getName() {\n      if (this.name === \\\\\"a\\\\\") {\n        return \\\\\"b\\\\\";\n      }\n\n      return this.name;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style-and-css 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\" class=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  font-size: 12px;\n  outline: 1px solid black;\n}\n\n.button {\n  background: blue;\n  color: white;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"<template>\n  <button type=\\\\\"button\\\\\">Button</button>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\nbutton {\n  background: blue;\n  color: white;\n  font-size: 12px;\n  outline: 1px solid black;\n}\n</style>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > useTarget 1`] = `\n\"<template>\n  <div>{{ name }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"use-target-component\\\\\",\n\n  data() {\n    return { lastName: \\\\\"bar\\\\\", foo: \\\\\"bar\\\\\" };\n  },\n\n  mounted() {\n    console.log(this.foo);\n    this.foo = \\\\\"bar\\\\\";\n  },\n\n  computed: {\n    name() {\n      const prefix = \\\\\"v\\\\\";\n      return prefix + \\\\\"foo\\\\\";\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > jsx > Typescript Test > webComponent 1`] = `\n\"<template>\n  <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\"\n    ><swiper-slide>Slide 1</swiper-slide><swiper-slide>Slide 2</swiper-slide\n    ><swiper-slide>Slide 3</swiper-slide></swiper-container\n  >\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport { register } from \\\\\"swiper/element/bundle\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-basic-web-component\\\\\",\n\n  created() {\n    register();\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > basic 1`] = `\n\"<template>\n  <div>\n    <input\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      :value=\\\\\"name\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > bindGroup 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      :checked=\\\\\"tortilla === 'Plain'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      :checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      :checked=\\\\\"tortilla === 'Spinach'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><br /><br /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      :checked=\\\\\"fillings === 'Rice'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      :checked=\\\\\"fillings === 'Beans'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      :checked=\\\\\"fillings === 'Cheese'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      :checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{ tortilla }}</p>\n    <p>Fillings: {{ fillings }}</p>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > bindProperty 1`] = `\n\"<template>\n  <input :value=\\\\\"value\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { value: \\\\\"hello\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > classDirective 1`] = `\n\"<template>\n  <input\n    :class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n  />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: { disabled: { default: undefined } },\n\n  data() {\n    return { focus: true };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > context 1`] = `\n\"<template>\n  <div>{{ activeTab }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { activeTab: 0 };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [\\\\\"activeTab\\\\\"]: _this.activeTab,\n    };\n  },\n  inject: {\n    disabled: \\\\\"disabled\\\\\",\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > each 1`] = `\n\"<template>\n  <ul>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(num, index) in numbers\\\\\">\n      <li>{{ num }}</li>\n    </template>\n  </ul>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > eventHandlers 1`] = `\n\"<template>\n  <div>\n    <button @click=\\\\\"async (a) => log('hi')\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  methods: {\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > html 1`] = `\n\"<template>\n  <div v-html=\\\\\"html\\\\\"></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { html: \\\\\"<b>bold</b>\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > ifElse 1`] = `\n\"<template>\n  <template v-if=\\\\\"show\\\\\">\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Hide</button>\n  </template>\n\n  <template v-else>\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Show</button>\n  </template>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { show: true };\n  },\n\n  methods: {\n    toggle: function toggle() {\n      this.show = !this.show;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > imports 1`] = `\n\"<template>\n  <div>\n    <Button type=\\\\\"button\\\\\" :disabled=\\\\\"disabled\\\\\"><slot /></Button>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Button from \\\\\"./Button.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n  components: { Button: Button },\n\n  data() {\n    return { disabled: false };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n  updated() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  },\n\n  unmounted() {\n    console.log(\\\\\"onDestroy\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > reactive 1`] = `\n\"<template>\n  <div><input :value=\\\\\"name\\\\\" /> Lowercase: {{ lowercaseName }}</div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n\n  computed: {\n    lowercaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (a = event.target.value)\\\\\"\n      :value=\\\\\"a\\\\\"\n    /><input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (b = event.target.value)\\\\\"\n      :value=\\\\\"b\\\\\"\n    />\n    Result: {{ result }}\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { a: 2, b: 5, result: null };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        this.calculateResult(this.a, this.b);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n      };\n    },\n  },\n\n  methods: {\n    calculateResult: function calculateResult(a_, b_) {\n      this.result = a_ * b_;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > slots 1`] = `\n\"<template>\n  <div>\n    <slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot>\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > style 1`] = `\n\"<template>\n  <input class=\\\\\"form-input\\\\\" />\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\"\n`;\n\nexports[`Vue > svelte > Javascript Test > textExpressions 1`] = `\n\"<template>\n  <div>\n    normal:\n    {{ a + b }}<br />\n    conditional\n    {{ a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\" }}\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { a: 5, b: 12 };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > basic 1`] = `\n\"<template>\n  <div>\n    <input\n      @change=\\\\\"async (event) => (name = event.target.value)\\\\\"\n      :value=\\\\\"name\\\\\"\n    />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > bindGroup 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Plain\\\\\"\n      :checked=\\\\\"tortilla === 'Plain'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Whole wheat\\\\\"\n      :checked=\\\\\"tortilla === 'Whole wheat'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"radio\\\\\"\n      value=\\\\\"Spinach\\\\\"\n      :checked=\\\\\"tortilla === 'Spinach'\\\\\"\n      @change=\\\\\"async (event) => (tortilla = event.target.value)\\\\\"\n    /><br /><br /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Rice\\\\\"\n      :checked=\\\\\"fillings === 'Rice'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Beans\\\\\"\n      :checked=\\\\\"fillings === 'Beans'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Cheese\\\\\"\n      :checked=\\\\\"fillings === 'Cheese'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    /><input\n      type=\\\\\"checkbox\\\\\"\n      value=\\\\\"Guac (extra)\\\\\"\n      :checked=\\\\\"fillings === 'Guac (extra)'\\\\\"\n      @change=\\\\\"async (event) => (fillings = event.target.value)\\\\\"\n    />\n    <p>Tortilla: {{ tortilla }}</p>\n    <p>Fillings: {{ fillings }}</p>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > bindProperty 1`] = `\n\"<template>\n  <input :value=\\\\\"value\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { value: \\\\\"hello\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > classDirective 1`] = `\n\"<template>\n  <input\n    :class=\\\\\"\\`form-input \\${disabled ? 'disabled' : ''} \\${focus ? 'focus' : ''}\\`\\\\\"\n  />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  props: { disabled: { default: undefined } },\n\n  data() {\n    return { focus: true };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > context 1`] = `\n\"<template>\n  <div>{{ activeTab }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { activeTab: 0 };\n  },\n\n  provide() {\n    const _this = this;\n    return {\n      [\\\\\"activeTab\\\\\"]: _this.activeTab,\n    };\n  },\n  inject: {\n    disabled: \\\\\"disabled\\\\\",\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > each 1`] = `\n\"<template>\n  <ul>\n    <template :key=\\\\\"index\\\\\" v-for=\\\\\"(num, index) in numbers\\\\\">\n      <li>{{ num }}</li>\n    </template>\n  </ul>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > eventHandlers 1`] = `\n\"<template>\n  <div>\n    <button @click=\\\\\"async (a) => log('hi')\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button\n    ><button @click=\\\\\"async (event) => log(event)\\\\\">Log</button>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  methods: {\n    log: function log(msg = \\\\\"hello\\\\\") {\n      console.log(msg);\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > html 1`] = `\n\"<template>\n  <div v-html=\\\\\"html\\\\\"></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { html: \\\\\"<b>bold</b>\\\\\" };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > ifElse 1`] = `\n\"<template>\n  <template v-if=\\\\\"show\\\\\">\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Hide</button>\n  </template>\n\n  <template v-else>\n    <button @click=\\\\\"async (event) => toggle(event)\\\\\">Show</button>\n  </template>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { show: true };\n  },\n\n  methods: {\n    toggle: function toggle() {\n      this.show = !this.show;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > imports 1`] = `\n\"<template>\n  <div>\n    <Button type=\\\\\"button\\\\\" :disabled=\\\\\"disabled\\\\\"><slot /></Button>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nimport Button from \\\\\"./Button.vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n  components: { Button: Button },\n\n  data() {\n    return { disabled: false };\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"<template>\n  <div></div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  mounted() {\n    console.log(\\\\\"onMount\\\\\");\n  },\n  updated() {\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  },\n\n  unmounted() {\n    console.log(\\\\\"onDestroy\\\\\");\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > reactive 1`] = `\n\"<template>\n  <div><input :value=\\\\\"name\\\\\" /> Lowercase: {{ lowercaseName }}</div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { name: \\\\\"Steve\\\\\" };\n  },\n\n  computed: {\n    lowercaseName() {\n      return this.name.toLowerCase();\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"<template>\n  <div>\n    <input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (a = event.target.value)\\\\\"\n      :value=\\\\\"a\\\\\"\n    /><input\n      type=\\\\\"number\\\\\"\n      @change=\\\\\"async (event) => (b = event.target.value)\\\\\"\n      :value=\\\\\"b\\\\\"\n    />\n    Result: {{ result }}\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { a: 2, b: 5, result: null };\n  },\n\n  watch: {\n    onUpdateHook0: {\n      handler() {\n        this.calculateResult(this.a, this.b);\n      },\n      immediate: true,\n    },\n  },\n\n  computed: {\n    onUpdateHook0() {\n      return {\n        0: this.a,\n        1: this.b,\n      };\n    },\n  },\n\n  methods: {\n    calculateResult: function calculateResult(a_, b_) {\n      this.result = a_ * b_;\n    },\n  },\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > slots 1`] = `\n\"<template>\n  <div>\n    <slot>default</slot><slot name=\\\\\"test\\\\\"><div>default</div></slot>\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > style 1`] = `\n\"<template>\n  <input class=\\\\\"form-input\\\\\" />\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\n\n<style scoped>\ninput {\n  color: red;\n  font-size: 12px;\n}\n\n.form-input:focus {\n  outline: 1px solid blue;\n}\n</style>\"\n`;\n\nexports[`Vue > svelte > Typescript Test > textExpressions 1`] = `\n\"<template>\n  <div>\n    normal:\n    {{ a + b }}<br />\n    conditional\n    {{ a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\" }}\n  </div>\n</template>\n\n<script lang=\\\\\"ts\\\\\">\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n\n  data() {\n    return { a: 5, b: 12 };\n  },\n});\n</script>\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/__snapshots__/webcomponent.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`webcomponent > Shadow DOM 1`] = `\n\"/**\n * Usage:\n *\n *  <smile-reviews></smile-reviews>\n *\n */\nclass SmileReviews extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { reviews: [], name: \\\\\"test\\\\\", showReviewPrompt: false };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-smile-reviews-1\n    this.onButtonSmileReviews1Click = (event) => {\n      this.state.showReviewPrompt = true;\n      this.update();\n    };\n\n    // Event handler for 'click' event on button-smile-reviews-2\n    this.onButtonSmileReviews2Click = (event) => {\n      this.state.showReviewPrompt = false;\n      this.update();\n    };\n\n    if (true) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-smile-reviews-1\\\\\">\n        <button data-el=\\\\\"button-smile-reviews-1\\\\\">Write a review</button>\n        <template data-el=\\\\\"show-smile-reviews\\\\\">\n          <input\n            placeholder=\\\\\"Email\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-1\\\\\"\n          />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            class=\\\\\"input-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-2\\\\\"\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            class=\\\\\"textarea-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-textarea-smile-reviews-1\\\\\"\n          ></textarea>\n          <button class=\\\\\"button-smile-reviews\\\\\" data-el=\\\\\"button-smile-reviews-2\\\\\">\n            Submit\n          </button>\n        </template>\n      \n        <template data-el=\\\\\"for-smile-reviews\\\\\">\n          <div class=\\\\\"review-smile-reviews\\\\\" data-el=\\\\\"div-smile-reviews-2\\\\\">\n            <img class=\\\\\"img-smile-reviews\\\\\" data-el=\\\\\"img-smile-reviews-1\\\\\" />\n            <div data-el=\\\\\"div-smile-reviews-3\\\\\">\n              <div>\n                N:\n                <template data-el=\\\\\"div-smile-reviews-4\\\\\"><!-- index --></template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-5\\\\\">\n                  <!-- review.author -->\n                </template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-6\\\\\">\n                  <!-- review.reviewMessage -->\n                </template>\n              </div>\n            </div>\n          </div>\n        </template>\n      </div>\n      <style>\n        .input-smile-reviews {\n          display: block;\n        }\n        .textarea-smile-reviews {\n          display: block;\n        }\n        .button-smile-reviews {\n          display: block;\n        }\n        .review-smile-reviews {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n        }\n        .img-smile-reviews {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {\n    // onMount\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.state.reviews = data.data;\n        this.update();\n      });\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"data-user\\\\\", this.state.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-smile-reviews']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.showReviewPrompt;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-smile-reviews']\\\\\")\n      .forEach((el) => {\n        let array = this.state.reviews;\n        this.renderLoop(el, array, \\\\\"review\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.key = review.id;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.setAttribute(\\\\\"src\\\\\", review.avatar);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-3']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.showReviewPrompt\n          ? \\\\\"bg-primary\\\\\"\n          : \\\\\"bg-secondary\\\\\";\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-4']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-5']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.author);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-6']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.reviewMessage);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"smile-reviews\\\\\", SmileReviews);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Advanced 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-show-component></my-basic-for-show-component>\n *\n */\nclass MyBasicForShowComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <main>\n        <template data-el=\\\\\"for-my-basic-for-show-component\\\\\">\n          <div>\n            <template data-el=\\\\\"div-my-basic-for-show-component-1\\\\\">\n              <!-- i -->\n            </template>\n            :\n            <template data-el=\\\\\"div-my-basic-for-show-component-2\\\\\">\n              <!-- person -->\n            </template>\n          </div>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-2\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-3\\\\\">\n              <!-- person -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-3\\\\\"><br /></template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-4\\\\\">\n          <pre><template data-el=\\\\\"div-my-basic-for-show-component-4\\\\\"><!-- ee --></template></pre>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-5\\\\\">\n          <p>\n            <template data-el=\\\\\"div-my-basic-for-show-component-5\\\\\">\n              <!-- index -->\n            </template>\n          </p>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-6\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-6\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-7\\\\\">\n              <!-- index -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-7\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-8\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-9\\\\\">\n              <!-- count -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-8\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-10\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-11\\\\\">\n              <!-- i -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-9\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-12\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-13\\\\\">\n              <!-- index -->\n            </template>\n          </span>\n        </template>\n      </main>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        const i = this.getScope(el, \\\\\"i\\\\\");\n        this.renderTextNode(el, i);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-2']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-2']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-3']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-3']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-4']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"_\\\\\", \\\\\"ee\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-4']\\\\\")\n      .forEach((el) => {\n        const ee = this.getScope(el, \\\\\"ee\\\\\");\n        this.renderTextNode(el, ee);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-5']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-5']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-6']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-6']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-7']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-7']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"count\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-8']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-9']\\\\\")\n      .forEach((el) => {\n        const count = this.getScope(el, \\\\\"count\\\\\");\n        this.renderTextNode(el, count);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-8']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-10']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-11']\\\\\")\n      .forEach((el) => {\n        const i = this.getScope(el, \\\\\"i\\\\\");\n        this.renderTextNode(el, i);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-9']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-12']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-13']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-show-component\\\\\", MyBasicForShowComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > AdvancedRef 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-ref-component></my-basic-ref-component>\n *\n */\nclass MyBasicRefComponent extends HTMLElement {\n  get _inputRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputRef']\\\\\"\n    );\n  }\n\n  get _inputNoArgRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputNoArgRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        self._inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"showInput\\\\\"];\n\n    this.updateDeps = [[self._inputRef, self._inputNoArgRef]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'blur' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Blur = (event) => {\n      this.state.onBlur();\n    };\n\n    // Event handler for 'change' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-basic-ref-component\\\\\">\n          <input\n            class=\\\\\"input-my-basic-ref-component\\\\\"\n            data-el=\\\\\"input-my-basic-ref-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-input-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputRef\\\\\"\n          />\n          <label\n            for=\\\\\"cars\\\\\"\n            data-el=\\\\\"label-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputNoArgRef\\\\\"\n          >\n            Choose a car:\n          </label>\n          <select\n            name=\\\\\"cars\\\\\"\n            id=\\\\\"cars\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-select-my-basic-ref-component-1\\\\\"\n          >\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </template>\n      \n        Hello\n      \n        <template data-el=\\\\\"div-my-basic-ref-component-1\\\\\">\n          <!-- state.lowerCaseName() -->\n        </template>\n        ! I can run in React, Qwik, Vue, Solid, or Web Component!\n      </div>\n      <style>\n        .input-my-basic-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Received an update\\\\\");\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self._inputRef, self._inputNoArgRef]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-ref-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.showInput;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicRefComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicRefComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowerCaseName());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-ref-component\\\\\", MyBasicRefComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic 1`] = `\n\"export const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-component-1\n    this.onInputMyBasicComponent1Change = (myEvent) => {\n      this.state.name = myEvent.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        <input\n          data-el=\\\\\"input-my-basic-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = DEFAULT_VALUES.name || this.state.name;\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic 2`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-show-component></my-basic-for-show-component>\n *\n */\nclass MyBasicForShowComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-for-show-component-1\n    this.onInputMyBasicForShowComponent1Change = (event) => {\n      const person = this.getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      this.state.name = event.target.value + \\\\\" and \\\\\" + person;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-my-basic-for-show-component\\\\\">\n          <template data-el=\\\\\"show-my-basic-for-show-component\\\\\">\n            <input\n              data-el=\\\\\"input-my-basic-for-show-component-1\\\\\"\n              data-dom-state=\\\\\"MyBasicForShowComponent-input-my-basic-for-show-component-1\\\\\"\n            />\n      \n            Hello\n            <template data-el=\\\\\"div-my-basic-for-show-component-1\\\\\">\n              <!-- person -->\n            </template>\n            ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </template>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        const whenCondition = person === this.state.name;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForShowComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForShowComponent1Change\n        );\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-show-component\\\\\", MyBasicForShowComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n    this.context = createInjector();\n\n    this.onInitOnce = false;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = self.myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-component-1\n    this.onInputMyBasicComponent1Change = (event) => {\n      this.state.onChange();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.myService = this.getContext(this._root, MyService);\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\">\n          <!-- myService.method('hello') + state.name -->\n        </template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \n        <input\n          data-el=\\\\\"input-my-basic-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n        />\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      const hi = this.myService.method(\\\\\"hi\\\\\");\n      console.log(hi);\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(\n          el,\n          this.myService.method(\\\\\"hello\\\\\") + this.state.name\n        );\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic OnMount Update 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-on-mount-update-component></my-basic-on-mount-update-component>\n *\n */\nclass MyBasicOnMountUpdateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"bye\\\\\", \\\\\"hi\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-my-basic-on-mount-update-component-1\\\\\">\n          <!-- state.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      this.state.name = \\\\\"PatrickJS onInit\\\\\" + this.props.hi;\n      this.update();\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    this.state.name = \\\\\"PatrickJS onMount\\\\\" + this.props.bye;\n    this.update();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-on-mount-update-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-on-mount-update-component\\\\\",\n  MyBasicOnMountUpdateComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic Outputs 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-outputs-component></my-basic-outputs-component>\n *\n */\nclass MyBasicOutputsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.props.onMessageChange(this.state.name);\n    this.props.onEvent(this.props.message);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-outputs-component\\\\\", MyBasicOutputsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n/**\n * Usage:\n *\n *  <my-basic-outputs-component></my-basic-outputs-component>\n *\n */\nclass MyBasicOutputsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.props.onMessageChange(this.state.name);\n    this.props.onEvent(this.props.message);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-outputs-component\\\\\", MyBasicOutputsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicAttribute 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        autocapitalize=\\\\\"on\\\\\"\n        autocomplete=\\\\\"on\\\\\"\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"spellcheck\\\\\", true);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicBooleanAttribute 1`] = `\n\"import MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <my-boolean-attribute></my-boolean-attribute>\n *\n */\nclass MyBooleanAttribute extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-boolean-attribute\\\\\">\n          <slot></slot>\n          <template data-el=\\\\\"div-my-boolean-attribute-2\\\\\">\n            <!-- props.type -->\n          </template>\n        </template>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute\\\\\"\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute-2\\\\\"\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute-3\\\\\"\n        ></my-boolean-attribute-component>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-boolean-attribute']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.children;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-boolean-attribute-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"toggle\\\\\", true);\n        el.toggle = true;\n\n        if (el.props) {\n          el.props.toggle = true;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.toggle = true;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute-2']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"toggle\\\\\", true);\n        el.toggle = true;\n\n        if (el.props) {\n          el.props.toggle = true;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.toggle = true;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute-3']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"list\\\\\", null);\n        el.list = null;\n\n        if (el.props) {\n          el.props.list = null;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.list = null;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-boolean-attribute\\\\\", MyBooleanAttribute);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-child-component></my-basic-child-component>\n *\n */\nclass MyBasicChildComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message) {\n        console.log(message);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'messagechange' event on my-basic-outputs-component-my-basic-child-component\n    this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange = (\n      name\n    ) => {\n      this.state.name = name;\n      this.update();\n    };\n\n    // Event handler for 'event' event on my-basic-outputs-component-my-basic-child-component\n    this.onMyBasicOutputsComponentMyBasicChildComponentEvent = (event) => {\n      this.state.log(\\\\\"Test\\\\\");\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <my-basic-component\n          data-el=\\\\\"my-basic-component-my-basic-child-component\\\\\"\n        ></my-basic-component>\n        <div>\n          <my-basic-on-mount-update-component\n            data-el=\\\\\"my-basic-on-mount-update-component-my-basic-child-component\\\\\"\n          ></my-basic-on-mount-update-component>\n          <my-basic-outputs-component\n            message=\\\\\"Test\\\\\"\n            data-el=\\\\\"my-basic-outputs-component-my-basic-child-component\\\\\"\n          ></my-basic-outputs-component>\n        </div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state.dev);\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-on-mount-update-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"hi\\\\\", this.state.name);\n        el.hi = this.state.name;\n\n        if (el.props) {\n          el.props.hi = this.state.name;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.hi = this.state.name;\n        }\n\n        el.setAttribute(\\\\\"bye\\\\\", this.state.dev);\n        el.bye = this.state.dev;\n\n        if (el.props) {\n          el.props.bye = this.state.dev;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.bye = this.state.dev;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-outputs-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"messagechange\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange\n        );\n        el.addEventListener(\n          \\\\\"messagechange\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange\n        );\n        el.removeEventListener(\n          \\\\\"event\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentEvent\n        );\n        el.addEventListener(\n          \\\\\"event\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentEvent\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-child-component\\\\\", MyBasicChildComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicFor 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-component></my-basic-for-component>\n *\n */\nclass MyBasicForComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-for-component-1\n    this.onInputMyBasicForComponent1Change = (event) => {\n      const person = this.getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      this.state.name = event.target.value + \\\\\" and \\\\\" + person;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-my-basic-for-component\\\\\">\n          <input\n            data-el=\\\\\"input-my-basic-for-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicForComponent-input-my-basic-for-component-1\\\\\"\n          />\n      \n          Hello\n          <template data-el=\\\\\"div-my-basic-for-component-1\\\\\"><!-- person --></template>\n          ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-for-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicForComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-component-1']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-component\\\\\", MyBasicForComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicRef 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-ref-component></my-basic-ref-component>\n *\n */\nclass MyBasicRefComponent extends HTMLElement {\n  get _inputRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputRef']\\\\\"\n    );\n  }\n\n  get _inputNoArgRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputNoArgRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        self._inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"showInput\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'blur' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Blur = (event) => {\n      this.state.onBlur();\n    };\n\n    // Event handler for 'change' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-basic-ref-component\\\\\">\n          <input\n            class=\\\\\"input-my-basic-ref-component\\\\\"\n            data-el=\\\\\"input-my-basic-ref-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-input-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputRef\\\\\"\n          />\n          <label\n            for=\\\\\"cars\\\\\"\n            data-el=\\\\\"label-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputNoArgRef\\\\\"\n          >\n            Choose a car:\n          </label>\n          <select\n            name=\\\\\"cars\\\\\"\n            id=\\\\\"cars\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-select-my-basic-ref-component-1\\\\\"\n          >\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </template>\n      \n        Hello\n      \n        <template data-el=\\\\\"div-my-basic-ref-component-1\\\\\">\n          <!-- state.lowerCaseName() -->\n        </template>\n        ! I can run in React, Qwik, Vue, Solid, or Web Component!\n      </div>\n      <style>\n        .input-my-basic-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-ref-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.showInput;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicRefComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicRefComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowerCaseName());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-ref-component\\\\\", MyBasicRefComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicRefAssignment 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-ref-assignment-component></my-basic-ref-assignment-component>\n *\n */\nclass MyBasicRefAssignmentComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handlerClick: function handlerClick(event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", self._holdValueRef);\n        self._holdValueRef = self._holdValueRef + \\\\\"JS\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-basic-ref-assignment-component-1\n    this.onButtonMyBasicRefAssignmentComponent1Click = async (evt) => {\n      await this.state.handlerClick(evt);\n    };\n\n    this._holdValueRef = \\\\\"Patrick\\\\\";\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button data-el=\\\\\"button-my-basic-ref-assignment-component-1\\\\\">Click</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='button-my-basic-ref-assignment-component-1']\\\\\"\n      )\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"click\\\\\",\n          this.onButtonMyBasicRefAssignmentComponent1Click\n        );\n        el.addEventListener(\n          \\\\\"click\\\\\",\n          this.onButtonMyBasicRefAssignmentComponent1Click\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-ref-assignment-component\\\\\",\n  MyBasicRefAssignmentComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > BasicRefPrevious 1`] = `\n\"export function usePrevious(value) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n/**\n * Usage:\n *\n *  <my-previous-component></my-previous-component>\n *\n */\nclass MyPreviousComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { count: 0 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.count]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-previous-component-1\n    this.onButtonMyPreviousComponent1Click = (event) => {\n      this.state.count += 1;\n      this.update();\n    };\n\n    this._prevCount = state.count;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <h1>\n          Now:\n          <template data-el=\\\\\"div-my-previous-component-1\\\\\">\n            <!-- state.count -->\n          </template>\n          , before:\n          <template data-el=\\\\\"div-my-previous-component-2\\\\\">\n            <!-- self._prevCount -->\n          </template>\n        </h1>\n        <button data-el=\\\\\"button-my-previous-component-1\\\\\">Increment</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        self._prevCount = self.state.count;\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.count]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-previous-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.count);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-previous-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, self._prevCount);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-previous-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyPreviousComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyPreviousComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-previous-component\\\\\", MyPreviousComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Button 1`] = `\n\"/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Columns 1`] = `\n\"/**\n * Usage:\n *\n *  <column></column>\n *\n */\nclass Column extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      getColumns() {\n        return self.props.columns || [];\n      },\n      getGutterSize() {\n        return typeof self.props.space === \\\\\"number\\\\\"\n          ? self.props.space || 0\n          : 20;\n      },\n      getWidth(index) {\n        const columns = self.state.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n      getColumnCssWidth(index) {\n        const columns = self.state.getColumns();\n        const gutterSize = self.state.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${self.state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"columns\\\\\", \\\\\"space\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-columns div-column\\\\\">\n        <template data-el=\\\\\"for-column\\\\\">\n          <div class=\\\\\"builder-column div-column-2\\\\\">\n            <template data-el=\\\\\"div-column-1\\\\\"><!-- column.content --></template>\n            <template data-el=\\\\\"div-column-2\\\\\"><!-- index --></template>\n          </div>\n        </template>\n      </div>\n      <style>\n        .div-column {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div-column {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div-column {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-column-2 {\n          flex-grow: 1;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='for-column']\\\\\").forEach((el) => {\n      let array = this.props.columns;\n      this.renderLoop(el, array, \\\\\"column\\\\\", \\\\\"index\\\\\");\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-column-1']\\\\\").forEach((el) => {\n      const column = this.getScope(el, \\\\\"column\\\\\");\n      this.renderTextNode(el, column.content);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-column-2']\\\\\").forEach((el) => {\n      const index = this.getScope(el, \\\\\"index\\\\\");\n      this.renderTextNode(el, index);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"column\\\\\", Column);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > ContentSlotHtml 1`] = `\n\"/**\n * Usage:\n *\n *  <content-slot-code></content-slot-code>\n *\n */\nclass ContentSlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"slotTesting\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <slot data-el=\\\\\"slot-content-slot-code\\\\\"></slot>\n        <div><hr /></div>\n        <div><slot></slot></div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='slot-content-slot-code']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", this.props.slotTesting);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"content-slot-code\\\\\", ContentSlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > ContentSlotJSX 1`] = `\n\"/**\n * Usage:\n *\n *  <content-slot-jsx-code></content-slot-jsx-code>\n *\n */\nclass ContentSlotJsxCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"king\\\\\",\n      showContent: false,\n      get cls() {\n        return self.props.slotContent && self.props.children\n          ? \\`\\${self.state.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n      show() {\n        self.props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"slotContent\\\\\",\n      \\\\\"children\\\\\",\n      \\\\\"slotReference\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"content\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on div-content-slot-jsx-code-1\n    this.onDivContentSlotJsxCode1Click = (event) => {\n      this.state.show();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-content-slot-jsx-code\\\\\">\n        <div data-el=\\\\\"div-content-slot-jsx-code-1\\\\\">\n          <template data-el=\\\\\"show-content-slot-jsx-code-2\\\\\">\n            <slot name=\\\\\"content\\\\\">\n              <template data-el=\\\\\"div-content-slot-jsx-code-2\\\\\">\n                <!-- props.content -->\n              </template>\n            </slot>\n          </template>\n          <div><hr /></div>\n          <div><slot></slot></div>\n        </div>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-content-slot-jsx-code']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.slotReference;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-content-slot-jsx-code-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", this.props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\");\n        el.setAttribute(\\\\\"title\\\\\", this.props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\");\n        el.removeEventListener(\\\\\"click\\\\\", this.onDivContentSlotJsxCode1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onDivContentSlotJsxCode1Click);\n        el.className = this.state.cls;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-content-slot-jsx-code-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.showContent && this.props.slotContent;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-content-slot-jsx-code-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.content);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"content-slot-jsx-code\\\\\", ContentSlotJsxCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > CustomCode 1`] = `\n\"/**\n * Usage:\n *\n *  <custom-code></custom-code>\n *\n */\nclass CustomCode extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='CustomCode-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (self._elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = self._elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (self.state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              self.state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (self.state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                self.state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-custom-code-1\\\\\" data-ref=\\\\\"CustomCode-elem\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.state.findAndRunScripts();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-custom-code-1']\\\\\")\n      .forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" +\n          (this.props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n        el.innerHTML = this.props.code;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"custom-code\\\\\", CustomCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Embed 1`] = `\n\"/**\n * Usage:\n *\n *  <custom-code></custom-code>\n *\n */\nclass CustomCode extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='CustomCode-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (self._elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = self._elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (self.state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              self.state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (self.state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                self.state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-custom-code-1\\\\\" data-ref=\\\\\"CustomCode-elem\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.state.findAndRunScripts();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-custom-code-1']\\\\\")\n      .forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" +\n          (this.props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n        el.innerHTML = this.props.code;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"custom-code\\\\\", CustomCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Image 1`] = `\n\"/**\n * Usage:\n *\n *  <image></image>\n *\n */\nclass Image extends HTMLElement {\n  get _pictureRef() {\n    return this._root.querySelector(\\\\\"[data-ref='Image-pictureRef']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scrollListener: null,\n      imageLoaded: false,\n      setLoaded() {\n        self.state.imageLoaded = true;\n        self.update();\n      },\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!self.props.lazy && self.state.isBrowser();\n      },\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"lazy\\\\\",\n      \\\\\"altText\\\\\",\n      \\\\\"_class\\\\\",\n      \\\\\"image\\\\\",\n      \\\\\"srcset\\\\\",\n      \\\\\"sizes\\\\\",\n      \\\\\"children\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'load' event on img-image-1\n    this.onImgImage1Load = (event) => {\n      this.state.setLoaded();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    if (this.state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.state.scrollListener);\n    }\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <picture data-el=\\\\\"picture-image-1\\\\\" data-ref=\\\\\"Image-pictureRef\\\\\">\n          <template data-el=\\\\\"show-image\\\\\"><img data-el=\\\\\"img-image-1\\\\\" /></template>\n          <source data-el=\\\\\"source-image-1\\\\\" />\n        </picture>\n        <slot></slot>\n      </div>\n      <style>\n        .img-image {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {\n    // onMount\n    if (this.state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (self._pictureRef) {\n          const rect = self._pictureRef.getBoundingClientRect();\n\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.state.load = true;\n            this.update();\n            this.state.scrollListener = null;\n            this.update();\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.state.scrollListener = listener;\n      this.update();\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-image']\\\\\").forEach((el) => {\n      const whenCondition = !this.state.useLazyLoading() || this.state.load;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='img-image-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"alt\\\\\", this.props.altText);\n      el.setAttribute(\n        \\\\\"aria-role\\\\\",\n        this.props.altText ? \\\\\"presentation\\\\\" : undefined\n      );\n      el.className =\n        \\\\\"builder-image\\\\\" +\n        (this.props._class ? \\\\\" \\\\\" + this.props._class : \\\\\"\\\\\") +\n        \\\\\" img-image\\\\\";\n      el.setAttribute(\\\\\"src\\\\\", this.props.image);\n      el.removeEventListener(\\\\\"load\\\\\", this.onImgImage1Load);\n      el.addEventListener(\\\\\"load\\\\\", this.onImgImage1Load);\n      el.setAttribute(\\\\\"srcset\\\\\", this.props.srcset);\n      el.setAttribute(\\\\\"sizes\\\\\", this.props.sizes);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='source-image-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"srcset\\\\\", this.props.srcset);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"image\\\\\", Image);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Image State 1`] = `\n\"/**\n * Usage:\n *\n *  <img-state-component></img-state-component>\n *\n */\nclass ImgStateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-img-state-component\\\\\">\n          <img class=\\\\\"custom-class\\\\\" data-el=\\\\\"img-img-state-component-1\\\\\" />\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-img-state-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.images;\n        this.renderLoop(el, array, \\\\\"item\\\\\", \\\\\"itemIndex\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-img-state-component-1']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        const itemIndex = this.getScope(el, \\\\\"itemIndex\\\\\");\n        el.setAttribute(\\\\\"src\\\\\", item);\n        el.key = itemIndex;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"img-state-component\\\\\", ImgStateComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Img 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <img-component></img-component>\n *\n */\nclass ImgComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"backgroundSize\\\\\",\n      \\\\\"backgroundPosition\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"imgSrc\\\\\",\n      \\\\\"altText\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <img data-el=\\\\\"img-img-component-1\\\\\" />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-img-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, {\n          objectFit: this.props.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: this.props.backgroundPosition || \\\\\"center\\\\\",\n        });\n        el.key = (Builder.isEditing && this.props.imgSrc) || \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"alt\\\\\", this.props.altText);\n        el.setAttribute(\\\\\"src\\\\\", this.props.imgSrc);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"img-component\\\\\", ImgComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Input 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <form-input-component></form-input-component>\n *\n */\nclass FormInputComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"defaultValue\\\\\",\n      \\\\\"placeholder\\\\\",\n      \\\\\"type\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"required\\\\\",\n      \\\\\"onChange\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-form-input-component-1\n    this.onInputFormInputComponent1Change = (event) => {\n      this.props.onChange?.(event.target.value);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-form-input-component-1\\\\\"\n        data-dom-state=\\\\\"FormInputComponent-input-form-input-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-form-input-component-1']\\\\\")\n      .forEach((el) => {\n        el.key =\n          Builder.isEditing && this.props.defaultValue\n            ? this.props.defaultValue\n            : \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"placeholder\\\\\", this.props.placeholder);\n        el.setAttribute(\\\\\"type\\\\\", this.props.type);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n        el.value = this.props.value;\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n        el.setAttribute(\\\\\"required\\\\\", this.props.required);\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputFormInputComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputFormInputComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"form-input-component\\\\\", FormInputComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <stepper></stepper>\n *\n */\nclass Stepper extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handleChange(value) {\n        console.log(value);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on form-input-component-stepper\n    this.onFormInputComponentStepperChange = (value) => {\n      this.state.handleChange(value);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <form-input-component\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        data-el=\\\\\"form-input-component-stepper\\\\\"\n      ></form-input-component>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='form-input-component-stepper']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onFormInputComponentStepperChange\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onFormInputComponentStepperChange);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"stepper\\\\\", Stepper);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > NestedStore 1`] = `\n\"/**\n * Usage:\n *\n *  <nested-store></nested-store>\n *\n */\nclass NestedStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { _id: \\\\\"abc\\\\\", _messageId: self.state._id + \\\\\"-message\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-nested-store-1\\\\\">\n        Test\n      \n        <p data-el=\\\\\"p-nested-store-1\\\\\">Message</p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-store-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state._id);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='p-nested-store-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state._messageId);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-store\\\\\", NestedStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > RawText 1`] = `\n\"/**\n * Usage:\n *\n *  <raw-text></raw-text>\n *\n */\nclass RawText extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <span data-el=\\\\\"span-raw-text-1\\\\\"></span>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='span-raw-text-1']\\\\\").forEach((el) => {\n      el.className =\n        this.props.attributes?.class || this.props.attributes?.className;\n      el.innerHTML = this.props.text || \\\\\"\\\\\";\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"raw-text\\\\\", RawText);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Section 1`] = `\n\"/**\n * Usage:\n *\n *  <section-component></section-component>\n *\n */\nclass SectionComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"maxWidth\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <section data-el=\\\\\"section-section-component-1\\\\\"><slot></slot></section>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='section-section-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(\n          el.style,\n          this.props.maxWidth && typeof this.props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: this.props.maxWidth,\n              }\n            : undefined\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"section-component\\\\\", SectionComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Section 2`] = `\n\"/**\n * Usage:\n *\n *  <section-state-component></section-state-component>\n *\n */\nclass SectionStateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { max: 42, items: [42] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-section-state-component\\\\\">\n        <template data-el=\\\\\"for-section-state-component\\\\\">\n          <section data-el=\\\\\"section-section-state-component-1\\\\\"><slot></slot></section>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-section-state-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.max;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-section-state-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.items;\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='section-section-state-component-1']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        Object.assign(el.style, {\n          maxWidth: item + this.state.max,\n        });\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"section-state-component\\\\\", SectionStateComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Select 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <select-component></select-component>\n *\n */\nclass SelectComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"defaultValue\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"options\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <select\n        data-el=\\\\\"select-select-component-1\\\\\"\n        data-dom-state=\\\\\"SelectComponent-select-select-component-1\\\\\"\n      >\n        <template data-el=\\\\\"for-select-component\\\\\">\n          <option data-el=\\\\\"option-select-component-1\\\\\">\n            <template data-el=\\\\\"div-select-component-1\\\\\">\n              <!-- option.name || option.value -->\n            </template>\n          </option>\n        </template>\n      </select>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='select-select-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.props.value;\n        el.key =\n          Builder.isEditing && this.props.defaultValue\n            ? this.props.defaultValue\n            : \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-select-component']\\\\\")\n      .forEach((el) => {\n        let array = this.props.options;\n        this.renderLoop(el, array, \\\\\"option\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='option-select-component-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        el.value = option.value;\n        el.setAttribute(\\\\\"data-index\\\\\", index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-select-component-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option.name || option.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"select-component\\\\\", SelectComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > SlotDefault 1`] = `\n\"/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > SlotHtml 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <content-slot-code><slot data-el=\\\\\"slot-slot-code\\\\\"></slot></content-slot-code>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='slot-slot-code']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"testing\\\\\", <div>Hello</div>);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > SlotJsx 1`] = `\n\"import ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <content-slot-code data-el=\\\\\"content-slot-code-slot-code\\\\\"></content-slot-code>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='content-slot-code-slot-code']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"slotTesting\\\\\", <div>Hello</div>);\n        el.slotTesting = <div>Hello</div>;\n\n        if (el.props) {\n          el.props.slotTesting = <div>Hello</div>;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.slotTesting = <div>Hello</div>;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > SlotNamed 1`] = `\n\"/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n        <slot name=\\\\\"top\\\\\"></slot>\n        <slot name=\\\\\"left\\\\\">Default left</slot>\n        <slot>Default Child</slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Stamped.io 1`] = `\n\"import { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n/**\n * Usage:\n *\n *  <smile-reviews></smile-reviews>\n *\n */\nclass SmileReviews extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-smile-reviews-1\n    this.onButtonSmileReviews1Click = (event) => {\n      this.state.showReviewPrompt = true;\n      this.update();\n    };\n\n    // Event handler for 'click' event on button-smile-reviews-2\n    this.onButtonSmileReviews2Click = (ev) => {\n      ev.preventDefault();\n      this.state.showReviewPrompt = false;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-smile-reviews-1\\\\\">\n        <button data-el=\\\\\"button-smile-reviews-1\\\\\">Write a review</button>\n        <template data-el=\\\\\"show-smile-reviews\\\\\">\n          <input\n            placeholder=\\\\\"Email\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-1\\\\\"\n          />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            class=\\\\\"input-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-2\\\\\"\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            class=\\\\\"textarea-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-textarea-smile-reviews-1\\\\\"\n          ></textarea>\n          <button class=\\\\\"button-smile-reviews\\\\\" data-el=\\\\\"button-smile-reviews-2\\\\\">\n            Submit\n          </button>\n        </template>\n      \n        <template data-el=\\\\\"for-smile-reviews\\\\\">\n          <div class=\\\\\"review-smile-reviews\\\\\" data-el=\\\\\"div-smile-reviews-2\\\\\">\n            <img class=\\\\\"img-smile-reviews\\\\\" data-el=\\\\\"img-smile-reviews-1\\\\\" />\n            <div data-el=\\\\\"div-smile-reviews-3\\\\\">\n              <div>\n                N:\n                <template data-el=\\\\\"div-smile-reviews-4\\\\\"><!-- index --></template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-5\\\\\">\n                  <!-- review.author -->\n                </template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-6\\\\\">\n                  <!-- review.reviewMessage -->\n                </template>\n              </div>\n            </div>\n          </div>\n        </template>\n      </div>\n      <style>\n        .input-smile-reviews {\n          display: block;\n        }\n        .textarea-smile-reviews {\n          display: block;\n        }\n        .button-smile-reviews {\n          display: block;\n        }\n        .review-smile-reviews {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img-smile-reviews {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {\n    // onMount\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.state.reviews = data.data;\n        this.update();\n      });\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"data-user\\\\\", this.state.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-smile-reviews']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.showReviewPrompt || \\\\\"asdf\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-smile-reviews']\\\\\")\n      .forEach((el) => {\n        let array = this.state.reviews;\n        this.renderLoop(el, array, \\\\\"review\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.key = review.id;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.setAttribute(\\\\\"src\\\\\", review.avatar);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-3']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.showReviewPrompt\n          ? \\\\\"bg-primary\\\\\"\n          : \\\\\"bg-secondary\\\\\";\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-4']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-5']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.author);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-6']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.reviewMessage);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"smile-reviews\\\\\", SmileReviews);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > StoreComment 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { foo: true, bar() {} };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-string-literal-store-1\\\\\"><!-- state.foo --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-string-literal-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > StoreShadowVars 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      errors: {},\n      foo(errors) {\n        return errors;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-my-component-1\\\\\">\n        <!-- state.foo(state.errors) -->\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo(this.state.errors));\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > StoreWithState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo: false,\n      bar() {\n        return self.state.foo;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.bar() --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.bar());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Submit 1`] = `\n\"/**\n * Usage:\n *\n *  <submit-button></submit-button>\n *\n */\nclass SubmitButton extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button type=\\\\\"submit\\\\\" data-el=\\\\\"button-submit-button-1\\\\\">\n        <template data-el=\\\\\"div-submit-button-1\\\\\"><!-- props.text --></template>\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-submit-button-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.text);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"submit-button\\\\\", SubmitButton);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Text 1`] = `\n\"import { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <text></text>\n *\n */\nclass Text extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"text\\\\\", \\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-text-1\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-text-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"contentEditable\\\\\", allowEditingText || undefined);\n      el.setAttribute(\\\\\"data-name\\\\\", {\n        test: this.state.name || \\\\\"any name\\\\\",\n      });\n      el.innerHTML =\n        this.props.text ||\n        this.props.content ||\n        this.state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>';\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"text\\\\\", Text);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Textarea 1`] = `\n\"/**\n * Usage:\n *\n *  <textarea></textarea>\n *\n */\nclass Textarea extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"placeholder\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"defaultValue\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <textarea\n        data-el=\\\\\"textarea-textarea-1\\\\\"\n        data-dom-state=\\\\\"Textarea-textarea-textarea-1\\\\\"\n      ></textarea>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='textarea-textarea-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"placeholder\\\\\", this.props.placeholder);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n        el.value = this.props.value;\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"textarea\\\\\", Textarea);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > UseValueAndFnFromStore 1`] = `\n\"/**\n * Usage:\n *\n *  <use-value-and-fn-from-store></use-value-and-fn-from-store>\n *\n */\nclass UseValueAndFnFromStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      _id: \\\\\"abc\\\\\",\n      _active: false,\n      _do(id) {\n        self.state._active = !!id;\n        self.update();\n\n        if (self.props.onChange) {\n          self.props.onChange(self.state._active);\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onChange\\\\\"];\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>Test</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    if (self.state._do) {\n      self.state._do(self.state._id);\n    }\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"use-value-and-fn-from-store\\\\\", UseValueAndFnFromStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > Video 1`] = `\n\"/**\n * Usage:\n *\n *  <video></video>\n *\n */\nclass Video extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"fit\\\\\",\n      \\\\\"position\\\\\",\n      \\\\\"video\\\\\",\n      \\\\\"posterImage\\\\\",\n      \\\\\"autoPlay\\\\\",\n      \\\\\"muted\\\\\",\n      \\\\\"controls\\\\\",\n      \\\\\"loop\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <video preload=\\\\\"none\\\\\" data-el=\\\\\"video-video-1\\\\\"></video>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='video-video-1']\\\\\").forEach((el) => {\n      Object.assign(el.style, {\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...this.props.attributes?.style,\n        objectFit: this.props.fit,\n        objectPosition: this.props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      });\n      el.key = this.props.video || \\\\\"no-src\\\\\";\n      el.setAttribute(\\\\\"poster\\\\\", this.props.posterImage);\n      el.setAttribute(\\\\\"autoplay\\\\\", this.props.autoPlay);\n      el.setAttribute(\\\\\"muted\\\\\", this.props.muted);\n      el.setAttribute(\\\\\"controls\\\\\", this.props.controls);\n      el.setAttribute(\\\\\"loop\\\\\", this.props.loop);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"video\\\\\", Video);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > arrowFunctionInUseStore 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"steve\\\\\",\n      setName(value) {\n        self.state.name = value;\n        self.update();\n      },\n      updateNameWithArrowFn(value) {\n        self.state.name = value;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicForFragment 1`] = `\n\"/**\n * Usage:\n *\n *  <basic-for-fragment></basic-for-fragment>\n *\n */\nclass BasicForFragment extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { id: \\\\\"xyz\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-basic-for-fragment\\\\\">\n          <div>\n            <template data-el=\\\\\"div-basic-for-fragment-1\\\\\"><!-- option --></template>\n          </div>\n        </template>\n      \n        <template data-el=\\\\\"for-basic-for-fragment-2\\\\\">\n          <div>\n            <template data-el=\\\\\"div-basic-for-fragment-2\\\\\"><!-- option --></template>\n          </div>\n        </template>\n        <select data-dom-state=\\\\\"BasicForFragment-select-basic-for-fragment-1\\\\\">\n          <template data-el=\\\\\"for-basic-for-fragment-3\\\\\">\n            <option data-el=\\\\\"option-basic-for-fragment-1\\\\\">\n              <template data-el=\\\\\"div-basic-for-fragment-3\\\\\"><!-- option --></template>\n            </option>\n          </template>\n        </select>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment-2']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-2']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment-3']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='option-basic-for-fragment-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        el.key = \\`\\${this.state.id}-\\${option}\\`;\n        el.value = option;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-3']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"basic-for-fragment\\\\\", BasicForFragment);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicForNoTagReference 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-no-tag-ref-component></my-basic-for-no-tag-ref-component>\n *\n */\nclass MyBasicForNoTagRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"actions\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <state.TagNameGetter>\n        Hello\n        <state.tag>\n          <template data-el=\\\\\"div-my-basic-for-no-tag-ref-component-1\\\\\">\n            <!-- state.name -->\n          </template>\n        </state.tag>\n      \n        <template data-el=\\\\\"for-my-basic-for-no-tag-ref-component\\\\\">\n          <state.TagName>\n            <action.icon></action.icon>\n            <span>\n              <template data-el=\\\\\"div-my-basic-for-no-tag-ref-component-2\\\\\">\n                <!-- action.text -->\n              </template>\n            </span>\n          </state.TagName>\n        </template>\n      </state.TagNameGetter>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-no-tag-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-no-tag-ref-component']\\\\\")\n      .forEach((el) => {\n        let array = this.props.actions;\n        this.renderLoop(el, array, \\\\\"action\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-no-tag-ref-component-2']\\\\\")\n      .forEach((el) => {\n        const action = this.getScope(el, \\\\\"action\\\\\");\n        this.renderTextNode(el, action.text);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  MyBasicForNoTagRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicForwardRef 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-forward-ref-component></my-basic-forward-ref-component>\n *\n */\nclass MyBasicForwardRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-forward-ref-component-1\n    this.onInputMyBasicForwardRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-my-basic-forward-ref-component\\\\\"\n          data-el=\\\\\"input-my-basic-forward-ref-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicForwardRefComponent-input-my-basic-forward-ref-component-1\\\\\"\n        />\n      </div>\n      <style>\n        .input-my-basic-forward-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-forward-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-forward-ref-component\\\\\",\n  MyBasicForwardRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\n/**\n * Usage:\n *\n *  <my-basic-forward-ref-component></my-basic-forward-ref-component>\n *\n */\nclass MyBasicForwardRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-forward-ref-component-1\n    this.onInputMyBasicForwardRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-my-basic-forward-ref-component\\\\\"\n          data-el=\\\\\"input-my-basic-forward-ref-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicForwardRefComponent-input-my-basic-forward-ref-component-1\\\\\"\n        />\n      </div>\n      <style>\n        .input-my-basic-forward-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-forward-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-forward-ref-component\\\\\",\n  MyBasicForwardRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicOnUpdateReturn 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-on-update-return-component></my-basic-on-update-return-component>\n *\n */\nclass MyBasicOnUpdateReturnComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.name]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello!\n        <template data-el=\\\\\"div-my-basic-on-update-return-component-1\\\\\">\n          <!-- state.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        const controller = new AbortController();\n        const signal = controller.signal;\n        fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n          signal,\n        })\n          .then((response) => response.json())\n          .then((data) => {\n            self.state.name = data.name;\n          });\n        return () => {\n          if (!signal.aborted) {\n            controller.abort();\n          }\n        };\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.name]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-on-update-return-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-on-update-return-component\\\\\",\n  MyBasicOnUpdateReturnComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n/**\n * Usage:\n *\n *  <basic-ref-attribute-passing-component></basic-ref-attribute-passing-component>\n *\n */\nclass BasicRefAttributePassingComponent extends HTMLElement {\n  get _buttonRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='BasicRefAttributePassingComponent-buttonRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button\n        data-el=\\\\\"button-basic-ref-attribute-passing-component-1\\\\\"\n        data-ref=\\\\\"BasicRefAttributePassingComponent-buttonRef\\\\\"\n      >\n        Attribute Passing\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"basic-ref-attribute-passing-component\\\\\",\n  BasicRefAttributePassingComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n/**\n * Usage:\n *\n *  <basic-ref-attribute-passing-custom-ref-component></basic-ref-attribute-passing-custom-ref-component>\n *\n */\nclass BasicRefAttributePassingCustomRefComponent extends HTMLElement {\n  get _buttonRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='BasicRefAttributePassingCustomRefComponent-buttonRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button\n          data-el=\\\\\"button-basic-ref-attribute-passing-custom-ref-component-1\\\\\"\n          data-ref=\\\\\"BasicRefAttributePassingCustomRefComponent-buttonRef\\\\\"\n        >\n          Attribute Passing\n        </button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  BasicRefAttributePassingCustomRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </my-comp>\n        <div class=\\\\\"test2 test div-my-basic-component\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > class + css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > className + css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > className 1`] = `\n\"/**\n * Usage:\n *\n *  <class-name-code></class-name-code>\n *\n */\nclass ClassNameCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { bindings: \\\\\"a binding\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div data-el=\\\\\"div-class-name-code-1\\\\\">With binding</div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-class-name-code-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.bindings;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"class-name-code\\\\\", ClassNameCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > classState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-basic-component-1\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.classState + \\\\\" div-my-basic-component\\\\\";\n        Object.assign(el.style, this.state.styleState);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"className\\\\\", \\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-basic-component-1\\\\\">\n        <slot></slot>\n        <template data-el=\\\\\"div-my-basic-component-3\\\\\"><!-- props.type --></template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.props.className;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-3']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n/**\n * Usage:\n *\n *  <complex-meta-raw></complex-meta-raw>\n *\n */\nclass ComplexMetaRaw extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"complex-meta-raw\\\\\", ComplexMetaRaw);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > componentWithContext 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n/**\n * Usage:\n *\n *  <component-with-context></component-with-context>\n *\n */\nclass ComponentWithContext extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.foo = this.getContext(this._root, Context1);\n\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-component-with-context-1\\\\\"><!-- foo.value --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-context-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.foo.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"component-with-context\\\\\", ComponentWithContext);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > componentWithContextMultiRoot 1`] = `\n\"import Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n/**\n * Usage:\n *\n *  <component-with-context></component-with-context>\n *\n */\nclass ComponentWithContext extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.foo = this.getContext(this._root, Context1);\n\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-component-with-context-1\\\\\"><!-- foo.value --></template>\n      <div>other</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-context-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.foo.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"component-with-context\\\\\", ComponentWithContext);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\", \\\\\"customComponents\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>setting context</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > defaultProps 1`] = `\n\"/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"link\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"openLinkInNewTab\\\\\",\n      \\\\\"text\\\\\",\n      \\\\\"onClick\\\\\",\n      \\\\\"buttonText\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-button-1\n    this.onButtonButton1Click = (event) => {\n      this.props.onClick();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.buttonText --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='button-button-1']\\\\\").forEach((el) => {\n      el.removeEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n      el.addEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.buttonText);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > defaultPropsOutsideComponent 1`] = `\n\"/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"link\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"openLinkInNewTab\\\\\",\n      \\\\\"text\\\\\",\n      \\\\\"onClick\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-button-1\n    this.onButtonButton1Click = (event) => {\n      this.props.onClick(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='button-button-1']\\\\\").forEach((el) => {\n      el.removeEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n      el.addEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > defaultValsWithTypes 1`] = `\n\"const DEFAULT_VALUES = {\n  name: \\\\\"Sami\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <component-with-types></component-with-types>\n *\n */\nclass ComponentWithTypes extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-component-with-types-1\\\\\">\n          <!-- props.name || DEFAULT_VALUES.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-types-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name || DEFAULT_VALUES.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"component-with-types\\\\\", ComponentWithTypes);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > eventInputAndChange 1`] = `\n\"/**\n * Usage:\n *\n *  <event-input-and-change></event-input-and-change>\n *\n */\nclass EventInputAndChange extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Steve\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'input' event on input-event-input-and-change-1\n    this.onInputEventInputAndChange1Input = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-event-input-and-change-1\n    this.onInputEventInputAndChange1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-event-input-and-change\\\\\"\n          data-el=\\\\\"input-event-input-and-change-1\\\\\"\n          data-dom-state=\\\\\"EventInputAndChange-input-event-input-and-change-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .input-event-input-and-change {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-event-input-and-change-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"input\\\\\", this.onInputEventInputAndChange1Input);\n        el.addEventListener(\\\\\"input\\\\\", this.onInputEventInputAndChange1Input);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputEventInputAndChange1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputEventInputAndChange1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"event-input-and-change\\\\\", EventInputAndChange);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > eventProps 1`] = `\n\"/**\n * Usage:\n *\n *  <event-props-component></event-props-component>\n *\n */\nclass EventPropsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handleClick() {\n        if (self.props.onGetVoid) {\n          self.props.onGetVoid();\n        }\n\n        if (self.props.onEnter) {\n          console.log(self.props.onEnter());\n        }\n\n        if (self.props.onPass) {\n          self.props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onGetVoid\\\\\", \\\\\"onEnter\\\\\", \\\\\"onPass\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-event-props-component-1\n    this.onButtonEventPropsComponent1Click = (event) => {\n      this.state.handleClick();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button data-el=\\\\\"button-event-props-component-1\\\\\">Test</button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-event-props-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonEventPropsComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonEventPropsComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"event-props-component\\\\\", EventPropsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > expressionState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      refToUse: !(self.props.componentRef instanceof Function)\n        ? self.props.componentRef\n        : null,\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"componentRef\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.refToUse --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.refToUse);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n/**\n * Usage:\n *\n *  <figma-button></figma-button>\n *\n */\nclass FigmaButton extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"icon\\\\\",\n      \\\\\"interactiveState\\\\\",\n      \\\\\"width\\\\\",\n      \\\\\"size\\\\\",\n      \\\\\"label\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button data-el=\\\\\"button-figma-button-1\\\\\">\n        <template data-el=\\\\\"div-figma-button-1\\\\\"><!-- props.label --></template>\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-figma-button-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"data-icon\\\\\", this.props.icon);\n        el.setAttribute(\\\\\"data-disabled\\\\\", this.props.interactiveState);\n        el.setAttribute(\\\\\"data-width\\\\\", this.props.width);\n        el.setAttribute(\\\\\"data-size\\\\\", this.props.size);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-figma-button-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.label);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"figma-button\\\\\", FigmaButton);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > functionProps 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <p data-el=\\\\\"p-my-basic-component-1\\\\\"></p>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='p-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"f\\\\\", () => x);\n        el.setAttribute(\\\\\"f1\\\\\", (x) => x);\n        el.setAttribute(\\\\\"f2\\\\\", (x) => {});\n        el.setAttribute(\\\\\"f3\\\\\", function () {\n          return x;\n        });\n        el.setAttribute(\\\\\"f4\\\\\", function (x) {\n          return x;\n        });\n        el.setAttribute(\\\\\"f5\\\\\", function (x) {\n          return;\n        });\n        el.setAttribute(\\\\\"f6\\\\\", function () {\n          return;\n        });\n        el.setAttribute(\\\\\"f7\\\\\", (a, b, c) => a + b + c);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > getterState 1`] = `\n\"/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get foo2() {\n        return self.props.foo + \\\\\"foo\\\\\";\n      },\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n      baz(i) {\n        return i + self.state.foo2.length;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <p>\n          <template data-el=\\\\\"div-button-1\\\\\"><!-- state.foo2 --></template>\n        </p>\n        <p>\n          <template data-el=\\\\\"div-button-2\\\\\"><!-- state.bar --></template>\n        </p>\n        <p>\n          <template data-el=\\\\\"div-button-3\\\\\"><!-- state.baz(1) --></template>\n        </p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.foo2);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.bar);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-3']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.baz(1));\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > import types 1`] = `\n\"import RenderBlock from \\\\\"./builder-render-block.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      getRenderContentProps(block, index) {\n        return {\n          block: block,\n          index: index,\n        };\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"renderContentProps\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <render-block data-el=\\\\\"render-block-render-content\\\\\"></render-block>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > layerName 1`] = `\n\"/**\n * Usage:\n *\n *  <my-layer-name-component></my-layer-name-component>\n *\n */\nclass MyLayerNameComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <section>\n        <div class=\\\\\"layer-name-my-layer-name-component\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>\n        .layer-name-my-layer-name-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-layer-name-component\\\\\", MyLayerNameComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > multipleOnUpdate 1`] = `\n\"/**\n * Usage:\n *\n *  <multiple-on-update></multiple-on-update>\n *\n */\nclass MultipleOnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[], []];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"multiple-on-update\\\\\", MultipleOnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > multipleOnUpdateWithDeps 1`] = `\n\"/**\n * Usage:\n *\n *  <multiple-on-update-with-deps></multiple-on-update-with-deps>\n *\n */\nclass MultipleOnUpdateWithDeps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [\n      [this.state.a, this.state.b],\n      [this.state.c, this.state.d],\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Runs when a or b changes\\\\\", self.state.a, self.state.b);\n\n        if (self.state.a === \\\\\"a\\\\\") {\n          self.state.a = \\\\\"b\\\\\";\n        }\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b]);\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Runs when c or d changes\\\\\", self.state.c, self.state.d);\n\n        if (self.state.a === \\\\\"a\\\\\") {\n          self.state.a = \\\\\"b\\\\\";\n        }\n        self.updateDeps[1] = __next;\n      }\n    })(self.updateDeps[1], [self.state.c, self.state.d]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"multiple-on-update-with-deps\\\\\", MultipleOnUpdateWithDeps);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > multipleSpreads 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > nestedShow 1`] = `\n\"/**\n * Usage:\n *\n *  <nested-show></nested-show>\n *\n */\nclass NestedShow extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-nested-show\\\\\">\n        <template data-el=\\\\\"show-nested-show-2\\\\\">\n          <div>if condition A and condition B</div>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = !this.props.conditionB;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-show\\\\\", NestedShow);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > nestedStyles 1`] = `\n\"/**\n * Usage:\n *\n *  <nested-styles></nested-styles>\n *\n */\nclass NestedStyles extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"div-nested-styles\\\\\">Hello world</div>\n      <style>\n        .div-nested-styles {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div-nested-styles {\n            display: block;\n          }\n        }\n        .div-nested-styles:hover {\n          display: flex;\n        }\n        .div-nested-styles:active {\n          display: inline;\n        }\n        .div-nested-styles .nested-selector {\n          display: grid;\n        }\n        .div-nested-styles .nested-selector:hover {\n          display: block;\n        }\n        .div-nested-styles.nested-selector:active {\n          display: inline-block;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-styles\\\\\", NestedStyles);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > normalizeLayerNames 1`] = `\n\"/**\n * Usage:\n *\n *  <my-normalized-layer-names-component></my-normalized-layer-names-component>\n *\n */\nclass MyNormalizedLayerNamesComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"css-0-my-normalized-layer-names-component\\\\\">Single Number</div>\n        <div class=\\\\\"css-123-my-normalized-layer-names-component\\\\\">\n          Multiple Numbers\n        </div>\n        <div class=\\\\\"name-123-my-normalized-layer-names-component\\\\\">\n          Chars with numbers at end\n        </div>\n        <div class=\\\\\"name-my-normalized-layer-names-component\\\\\">\n          Chars with numbers at start\n        </div>\n        <div class=\\\\\"name-789-my-normalized-layer-names-component\\\\\">\n          Numnbers separated by dash\n        </div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" class=\\\\\"div-my-normalized-layer-names-component\\\\\">\n          Number\n        </div>\n      </section>\n      <style>\n        .css-0-my-normalized-layer-names-component {\n          margin: 10px;\n        }\n        .css-123-my-normalized-layer-names-component {\n          padding: 10px;\n        }\n        .name-123-my-normalized-layer-names-component {\n          border: 1px solid;\n        }\n        .name-my-normalized-layer-names-component {\n          color: red;\n        }\n        .name-789-my-normalized-layer-names-component {\n          background: blue;\n        }\n        .div-my-normalized-layer-names-component {\n          background: blue;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-normalized-layer-names-component\\\\\",\n  MyNormalizedLayerNamesComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onEvent 1`] = `\n\"/**\n * Usage:\n *\n *  <embed></embed>\n *\n */\nclass Embed extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='Embed-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-embed\\\\\" data-el=\\\\\"div-embed-1\\\\\" data-ref=\\\\\"Embed-elem\\\\\">\n        <div>Test</div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    self._elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"embed\\\\\", Embed);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onInit & onMount 1`] = `\n\"/**\n * Usage:\n *\n *  <on-init></on-init>\n *\n */\nclass OnInit extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init\\\\\", OnInit);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onInit 1`] = `\n\"export const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <on-init></on-init>\n *\n */\nclass OnInit extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = { name: \\\\\"\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Default name defined by parent\n        <template data-el=\\\\\"div-on-init-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      this.state.name = defaultValues.name || this.props.name;\n      this.update();\n      console.log(\\\\\"set defaults with props\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-on-init-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.name);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init\\\\\", OnInit);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onInitPlain 1`] = `\n\"/**\n * Usage:\n *\n *  <on-init-plain></on-init-plain>\n *\n */\nclass OnInitPlain extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init-plain\\\\\", OnInitPlain);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onMount 1`] = `\n\"/**\n * Usage:\n *\n *  <comp></comp>\n *\n */\nclass Comp extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    console.log(\\\\\"Runs on unMount\\\\\");\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"comp\\\\\", Comp);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onMountMultiple 1`] = `\n\"/**\n * Usage:\n *\n *  <comp></comp>\n *\n */\nclass Comp extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"comp\\\\\", Comp);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onUpdate 1`] = `\n\"/**\n * Usage:\n *\n *  <on-update></on-update>\n *\n */\nclass OnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update\\\\\", OnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > onUpdateWithDeps 1`] = `\n\"/**\n * Usage:\n *\n *  <on-update-with-deps></on-update-with-deps>\n *\n */\nclass OnUpdateWithDeps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"size\\\\\"];\n\n    this.updateDeps = [[this.state.a, this.state.b, this.props.size]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\n          \\\\\"Runs when a, b or size changes\\\\\",\n          self.state.a,\n          self.state.b,\n          self.props.size\n        );\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b, self.props.size]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update-with-deps\\\\\", OnUpdateWithDeps);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > preserveExportOrLocalStatement 1`] = `\n\"const b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run(value) {}\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > preserveTyping 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > propsDestructure 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <slot></slot>\n        <template data-el=\\\\\"div-my-basic-component-2\\\\\"><!-- props.type --></template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > propsInterface 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > propsType 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > referencingFunInsideHook 1`] = `\n\"/**\n * Usage:\n *\n *  <on-update></on-update>\n *\n */\nclass OnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo: function foo(params) {},\n      bar: function bar() {},\n      zoo: function zoo() {\n        const params = {\n          cb: self.state.bar,\n        };\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    self.state.foo({\n      someOption: self.state.bar,\n    });\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update\\\\\", OnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > renderBlock 1`] = `\n\"import { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-block></render-block>\n *\n */\nclass RenderBlock extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get component() {\n        const componentName = getProcessedBlock({\n          block: self.props.block,\n          state: self.props.context.state,\n          context: self.props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = self.props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n      get tag() {\n        return getBlockTag(self.state.useBlock);\n      },\n      get useBlock() {\n        return self.state.repeatItemData\n          ? self.props.block\n          : getProcessedBlock({\n              block: self.props.block,\n              state: self.props.context.state,\n              context: self.props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n      get actions() {\n        return getBlockActions({\n          block: self.state.useBlock,\n          state: self.props.context.state,\n          context: self.props.context.context,\n        });\n      },\n      get attributes() {\n        const blockProperties = getBlockProperties(self.state.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: self.state.useBlock,\n                  context: self.props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n      get shouldWrap() {\n        return !self.state.component?.noWrap;\n      },\n      get renderComponentProps() {\n        return {\n          blockChildren: self.state.useChildren,\n          componentRef: self.state.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(self.state.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(self.state.shouldWrap\n              ? {}\n              : {\n                  attributes: {\n                    ...self.state.attributes,\n                    ...self.state.actions,\n                  },\n                }),\n            customBreakpoints:\n              self.state.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: self.state.childrenContext,\n        };\n      },\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n        return self.state.useBlock.children ?? [];\n      },\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !self.state.component?.component && !self.state.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? self.state.useChildren : [];\n      },\n      get repeatItemData() {\n        /**\n         * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = self.props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: self.props.context.state,\n          context: self.props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray = itemsArray.map((item, index) => ({\n          context: {\n            ...self.props.context,\n            state: {\n              ...self.props.context.state,\n              $index: index,\n              $item: item,\n              [itemNameToUse]: item,\n              [\\`$\\${itemNameToUse}Index\\`]: index,\n            },\n          },\n          block: blockWithoutRepeat,\n        }));\n        return repeatArray;\n      },\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: self.state.useBlock,\n          context: self.props.context,\n          blockStyles: self.state.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n      get childrenContext() {\n        return {\n          apiKey: self.props.context.apiKey,\n          state: self.props.context.state,\n          content: self.props.context.content,\n          context: self.props.context.context,\n          registeredComponents: self.props.context.registeredComponents,\n          inheritedStyles: self.state.inheritedTextStyles,\n        };\n      },\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"block\\\\\", \\\\\"context\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-render-block\\\\\">\n        <template data-el=\\\\\"show-render-block-2\\\\\">\n          <state.tag data-el=\\\\\"state-tag-render-block\\\\\"></state.tag>\n        </template>\n        <template data-el=\\\\\"show-render-block-3\\\\\">\n          <template data-el=\\\\\"for-render-block\\\\\">\n            <render-repeated-block\n              data-el=\\\\\"render-repeated-block-render-block\\\\\"\n            ></render-repeated-block>\n          </template>\n        </template>\n        <template data-el=\\\\\"show-render-block-4\\\\\">\n          <state.tag data-el=\\\\\"state-tag-render-block-2\\\\\">\n            <state.renderComponentTag\n              data-el=\\\\\"state-render-component-tag-render-block\\\\\"\n            ></state.renderComponentTag>\n      \n            <template data-el=\\\\\"for-render-block-2\\\\\">\n              <RenderBlock data-el=\\\\\"render-block-render-block\\\\\"></RenderBlock>\n            </template>\n      \n            <template data-el=\\\\\"for-render-block-3\\\\\">\n              <block-styles data-el=\\\\\"block-styles-render-block\\\\\"></block-styles>\n            </template>\n          </state.tag>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.shouldWrap;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = isEmptyHtmlElement(this.state.tag);\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(this.state.tag) && this.state.repeatItemData;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block']\\\\\")\n      .forEach((el) => {\n        let array = this.state.repeatItemData;\n        this.renderLoop(el, array, \\\\\"data\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-repeated-block-render-block']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        const data = this.getScope(el, \\\\\"data\\\\\");\n        el.key = index;\n\n        if (el.props) {\n          el.props.key = index;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.key = index;\n        }\n\n        el.setAttribute(\\\\\"repeatContext\\\\\", data.context);\n        el.repeatContext = data.context;\n\n        if (el.props) {\n          el.props.repeatContext = data.context;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.repeatContext = data.context;\n        }\n\n        el.setAttribute(\\\\\"block\\\\\", data.block);\n        el.block = data.block;\n\n        if (el.props) {\n          el.props.block = data.block;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.block = data.block;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(this.state.tag) && !this.state.repeatItemData;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block-2']\\\\\")\n      .forEach((el) => {\n        let array = this.state.childrenWithoutParentComponent;\n        this.renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-block-render-block']\\\\\")\n      .forEach((el) => {\n        const child = this.getScope(el, \\\\\"child\\\\\");\n        el.key = \\\\\"render-block-\\\\\" + child.id;\n        el.setAttribute(\\\\\"block\\\\\", child);\n        el.setAttribute(\\\\\"context\\\\\", this.state.childrenContext);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block-3']\\\\\")\n      .forEach((el) => {\n        let array = this.state.childrenWithoutParentComponent;\n        this.renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='block-styles-render-block']\\\\\")\n      .forEach((el) => {\n        const child = this.getScope(el, \\\\\"child\\\\\");\n        el.key = \\\\\"block-style-\\\\\" + child.id;\n\n        if (el.props) {\n          el.props.key = \\\\\"block-style-\\\\\" + child.id;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.key = \\\\\"block-style-\\\\\" + child.id;\n        }\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n        el.block = child;\n\n        if (el.props) {\n          el.props.block = child;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.block = child;\n        }\n\n        el.setAttribute(\\\\\"context\\\\\", this.state.childrenContext);\n        el.context = this.state.childrenContext;\n\n        if (el.props) {\n          el.props.context = this.state.childrenContext;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.context = this.state.childrenContext;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"render-block\\\\\", RenderBlock);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > renderContentExample 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"customComponents\\\\\", \\\\\"content\\\\\"];\n\n    this.updateDeps = [[this.props.content]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on div-render-content-1\n    this.onDivRenderContent1Click = (event) => {\n      trackClick(this.props.content.id);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"div-render-content\\\\\" data-el=\\\\\"div-render-content-1\\\\\">\n        <render-blocks data-el=\\\\\"render-blocks-render-content\\\\\"></render-blocks>\n      </div>\n      <style>\n        .div-render-content {\n          display: flex;\n          flex-direction: columns;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    sendComponentsToVisualEditor(this.props.customComponents);\n  }\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        dispatchNewContentToVisualEditor(self.props.content);\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.props.content]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-render-content-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onDivRenderContent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onDivRenderContent1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-blocks-render-content']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"blocks\\\\\", this.props.content.blocks);\n        el.blocks = this.props.content.blocks;\n\n        if (el.props) {\n          el.props.blocks = this.props.content.blocks;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.blocks = this.props.content.blocks;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > rootFragmentMultiNode 1`] = `\n\"/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-button\\\\\">\n        <a data-el=\\\\\"a-button-1\\\\\">\n          <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n        </a>\n      </template>\n      <template data-el=\\\\\"show-button-2\\\\\">\n        <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n          <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n        </button>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > rootShow 1`] = `\n\"/**\n * Usage:\n *\n *  <render-styles></render-styles>\n *\n */\nclass RenderStyles extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-render-styles\\\\\"><div>Bar</div></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-styles']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.foo === \\\\\"bar\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-styles\\\\\", RenderStyles);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > self-referencing component 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- props.name --></template>\n        <template data-el=\\\\\"show-my-component\\\\\">\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.name === \\\\\"Batman\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > self-referencing component with children 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- props.name --></template>\n        <slot></slot>\n        <template data-el=\\\\\"show-my-component\\\\\">\n          <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.name === \\\\\"Batman\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > setState 1`] = `\n\"/**\n * Usage:\n *\n *  <set-state></set-state>\n *\n */\nclass SetState extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      n: [\\\\\"123\\\\\"],\n      someFn() {\n        self.state.n[0] = \\\\\"123\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-set-state-1\n    this.onButtonSetState1Click = (event) => {\n      this.state.someFn();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div><button data-el=\\\\\"button-set-state-1\\\\\">Click me</button></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-set-state-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSetState1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSetState1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"set-state\\\\\", SetState);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > showExpressions 1`] = `\n\"/**\n * Usage:\n *\n *  <show-with-other-values></show-with-other-values>\n *\n */\nclass ShowWithOtherValues extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\", \\\\\"conditionC\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-show-with-other-values\\\\\">Content0</template>\n        <template data-el=\\\\\"show-show-with-other-values-2\\\\\">ContentA</template>\n        <template data-el=\\\\\"show-show-with-other-values-3\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-4\\\\\">ContentB</template>\n        <template data-el=\\\\\"show-show-with-other-values-5\\\\\">\n          <template data-el=\\\\\"div-show-with-other-values-1\\\\\">\n            <!-- undefined -->\n          </template>\n        </template>\n        <template data-el=\\\\\"show-show-with-other-values-6\\\\\">ContentC</template>\n        <template data-el=\\\\\"show-show-with-other-values-7\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-8\\\\\">ContentD</template>\n        <template data-el=\\\\\"show-show-with-other-values-9\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-10\\\\\">ContentE</template>\n        <template data-el=\\\\\"show-show-with-other-values-11\\\\\">hello</template>\n        <template data-el=\\\\\"show-show-with-other-values-12\\\\\">ContentF</template>\n        <template data-el=\\\\\"show-show-with-other-values-13\\\\\">123</template>\n        <template data-el=\\\\\"show-show-with-other-values-14\\\\\">4mb</template>\n        <template data-el=\\\\\"show-show-with-other-values-15\\\\\">\n          <template data-el=\\\\\"show-show-with-other-values-16\\\\\">20mb</template>\n        </template>\n        <template data-el=\\\\\"show-show-with-other-values-17\\\\\">\n          <template data-el=\\\\\"show-show-with-other-values-18\\\\\">\n            <div>complete</div>\n          </template>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-5']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-show-with-other-values-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, undefined);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-6']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-7']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-8']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-9']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-10']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-11']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-12']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-13']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-14']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-15']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-16']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionB === \\\\\"Complete\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-17']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-18']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionB === \\\\\"Complete\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-with-other-values\\\\\", ShowWithOtherValues);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > showWithFor 1`] = `\n\"/**\n * Usage:\n *\n *  <nested-show></nested-show>\n *\n */\nclass NestedShow extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"items\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-nested-show\\\\\">\n        <template data-el=\\\\\"for-nested-show\\\\\">\n          <div data-el=\\\\\"div-nested-show-1\\\\\">\n            <template data-el=\\\\\"div-nested-show-2\\\\\"><!-- item --></template>\n          </div>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root.querySelectorAll(\\\\\"[data-el='for-nested-show']\\\\\").forEach((el) => {\n      let array = this.props.items;\n      this.renderLoop(el, array, \\\\\"item\\\\\", \\\\\"idx\\\\\");\n    });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-show-1']\\\\\")\n      .forEach((el) => {\n        const idx = this.getScope(el, \\\\\"idx\\\\\");\n        el.key = idx;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-show-2']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        this.renderTextNode(el, item);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"nested-show\\\\\", NestedShow);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > showWithOtherValues 1`] = `\n\"/**\n * Usage:\n *\n *  <show-with-other-values></show-with-other-values>\n *\n */\nclass ShowWithOtherValues extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-show-with-other-values\\\\\">ContentA</template>\n        <template data-el=\\\\\"show-show-with-other-values-2\\\\\">ContentB</template>\n        <template data-el=\\\\\"show-show-with-other-values-3\\\\\">ContentC</template>\n        <template data-el=\\\\\"show-show-with-other-values-4\\\\\">ContentD</template>\n        <template data-el=\\\\\"show-show-with-other-values-5\\\\\">ContentE</template>\n        <template data-el=\\\\\"show-show-with-other-values-6\\\\\">ContentF</template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-5']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-6']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-with-other-values\\\\\", ShowWithOtherValues);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > showWithRootText 1`] = `\n\"/**\n * Usage:\n *\n *  <show-root-text></show-root-text>\n *\n */\nclass ShowRootText extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-show-root-text\\\\\">ContentA</template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-root-text']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-root-text\\\\\", ShowRootText);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > signalsOnUpdate 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"id\\\\\", \\\\\"foo\\\\\"];\n\n    this.updateDeps = [[this.props.id, this.props.foo.value.bar.baz]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.id --></template>\n        <template data-el=\\\\\"div-my-basic-component-2\\\\\">\n          <!-- props.foo.value.bar.baz -->\n        </template>\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"props.id changed\\\\\", self.props.id);\n        console.log(\n          \\\\\"props.foo.value.bar.baz changed\\\\\",\n          self.props.foo.value.bar.baz\n        );\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.props.id, self.props.foo.value.bar.baz]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.id);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.foo.value.bar.baz);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > spreadAttrs 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > spreadNestedProps 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"nested\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > spreadProps 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > store-async-function 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      arrowFunction: async function arrowFunction() {\n        return Promise.resolve();\n      },\n      namedFunction: async function namedFunction() {\n        return Promise.resolve();\n      },\n      fetchUsers: async function fetchUsers() {\n        return Promise.resolve();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > string-literal-store 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { foo: 123 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-string-literal-store-1\\\\\"><!-- state.foo --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-string-literal-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > styleClassAndCss 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-column div-my-component\\\\\" data-el=\\\\\"div-my-component-1\\\\\"></div>\n      <style>\n        .div-my-component {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n        });\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > stylePropClassAndCss 1`] = `\n\"/**\n * Usage:\n *\n *  <style-prop-class-and-css></style-prop-class-and-css>\n *\n */\nclass StylePropClassAndCss extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-style-prop-class-and-css-1\\\\\"></div>\n      <style>\n        .div-style-prop-class-and-css {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-style-prop-class-and-css-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, this.props.attributes.style);\n        el.className =\n          this.props.attributes.class + \\\\\" div-style-prop-class-and-css\\\\\";\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"style-prop-class-and-css\\\\\", StylePropClassAndCss);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.js\\\\\";\n\n/**\n * Usage:\n *\n *  <sub-component></sub-component>\n *\n */\nclass SubComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <foo></foo>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"sub-component\\\\\", SubComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > svgComponent 1`] = `\n\"/**\n * Usage:\n *\n *  <svg-component></svg-component>\n *\n */\nclass SvgComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" data-el=\\\\\"svg-svg-component-1\\\\\">\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              data-el=\\\\\"fe-gaussian-blur-svg-component\\\\\"\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='svg-svg-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"viewBox\\\\\", \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42);\n        el.setAttribute(\\\\\"width\\\\\", 42);\n        el.setAttribute(\\\\\"height\\\\\", 42);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='fe-gaussian-blur-svg-component']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"stdDeviation\\\\\", 7);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"svg-component\\\\\", SvgComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > typeDependency 1`] = `\n\"/**\n * Usage:\n *\n *  <type-dependency></type-dependency>\n *\n */\nclass TypeDependency extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-type-dependency-1\\\\\"><!-- props.foo --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-dependency-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-dependency\\\\\", TypeDependency);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > typeExternalProps 1`] = `\n\"/**\n * Usage:\n *\n *  <type-external-props></type-external-props>\n *\n */\nclass TypeExternalProps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-external-props-1\\\\\"><!-- props.name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-external-props-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-external-props\\\\\", TypeExternalProps);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > typeExternalStore 1`] = `\n\"/**\n * Usage:\n *\n *  <type-external-store></type-external-store>\n *\n */\nclass TypeExternalStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { _name: \\\\\"test\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-external-store-1\\\\\"><!-- state._name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-external-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state._name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-external-store\\\\\", TypeExternalStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > typeGetterStore 1`] = `\n\"/**\n * Usage:\n *\n *  <type-getter-store></type-getter-store>\n *\n */\nclass TypeGetterStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"test\\\\\",\n      getName() {\n        if (self.state.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return self.state.name;\n      },\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-getter-store-1\\\\\"><!-- state.name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-getter-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-getter-store\\\\\", TypeGetterStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > use-style 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > use-style-and-css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\" class=\\\\\"button-my-component\\\\\">Button</button>\n      <style>\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \n        .button-my-component {\n          background: blue;\n          color: white;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > use-style-outside-component 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > useTarget 1`] = `\n\"/**\n * Usage:\n *\n *  <use-target-component></use-target-component>\n *\n */\nclass UseTargetComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get name() {\n        const prefix = \\\\\"c\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-use-target-component-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(this.state.foo);\n    this.state.foo = \\\\\"bar\\\\\";\n    this.update();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-use-target-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"use-target-component\\\\\", UseTargetComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Javascript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-web-component></my-basic-web-component>\n *\n */\nclass MyBasicWebComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      register();\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-web-component\\\\\", MyBasicWebComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Remove Internal mitosis package 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- state.name --></template>\n        ! I can run in React, Qwik, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Advanced 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-show-component></my-basic-for-show-component>\n *\n */\nclass MyBasicForShowComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <main>\n        <template data-el=\\\\\"for-my-basic-for-show-component\\\\\">\n          <div>\n            <template data-el=\\\\\"div-my-basic-for-show-component-1\\\\\">\n              <!-- i -->\n            </template>\n            :\n            <template data-el=\\\\\"div-my-basic-for-show-component-2\\\\\">\n              <!-- person -->\n            </template>\n          </div>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-2\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-3\\\\\">\n              <!-- person -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-3\\\\\"><br /></template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-4\\\\\">\n          <pre><template data-el=\\\\\"div-my-basic-for-show-component-4\\\\\"><!-- ee --></template></pre>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-5\\\\\">\n          <p>\n            <template data-el=\\\\\"div-my-basic-for-show-component-5\\\\\">\n              <!-- index -->\n            </template>\n          </p>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-6\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-6\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-7\\\\\">\n              <!-- index -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-7\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-8\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-9\\\\\">\n              <!-- count -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-8\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-10\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-11\\\\\">\n              <!-- i -->\n            </template>\n          </span>\n        </template>\n      \n        <template data-el=\\\\\"for-my-basic-for-show-component-9\\\\\">\n          <span>\n            <template data-el=\\\\\"div-my-basic-for-show-component-12\\\\\">\n              <!-- person -->\n            </template>\n            <template data-el=\\\\\"div-my-basic-for-show-component-13\\\\\">\n              <!-- index -->\n            </template>\n          </span>\n        </template>\n      </main>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        const i = this.getScope(el, \\\\\"i\\\\\");\n        this.renderTextNode(el, i);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-2']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-2']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-3']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-3']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-4']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"_\\\\\", \\\\\"ee\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-4']\\\\\")\n      .forEach((el) => {\n        const ee = this.getScope(el, \\\\\"ee\\\\\");\n        this.renderTextNode(el, ee);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-5']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-5']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-6']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-6']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-7']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-7']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"count\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-8']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-9']\\\\\")\n      .forEach((el) => {\n        const count = this.getScope(el, \\\\\"count\\\\\");\n        this.renderTextNode(el, count);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-8']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"i\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-10']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-11']\\\\\")\n      .forEach((el) => {\n        const i = this.getScope(el, \\\\\"i\\\\\");\n        this.renderTextNode(el, i);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component-9']\\\\\")\n      .forEach((el) => {\n        let array = Array.from({\n          length: 10,\n        });\n        this.renderLoop(el, array, \\\\\"person\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-12']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-13']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-show-component\\\\\", MyBasicForShowComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > AdvancedRef 1`] = `\n\"export interface Props {\n  showInput: boolean;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-ref-component></my-basic-ref-component>\n *\n */\nclass MyBasicRefComponent extends HTMLElement {\n  get _inputRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputRef']\\\\\"\n    );\n  }\n\n  get _inputNoArgRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputNoArgRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        self._inputRef.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"showInput\\\\\"];\n\n    this.updateDeps = [[self._inputRef, self._inputNoArgRef]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'blur' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Blur = (event) => {\n      this.state.onBlur();\n    };\n\n    // Event handler for 'change' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-basic-ref-component\\\\\">\n          <input\n            class=\\\\\"input-my-basic-ref-component\\\\\"\n            data-el=\\\\\"input-my-basic-ref-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-input-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputRef\\\\\"\n          />\n          <label\n            for=\\\\\"cars\\\\\"\n            data-el=\\\\\"label-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputNoArgRef\\\\\"\n          >\n            Choose a car:\n          </label>\n          <select\n            name=\\\\\"cars\\\\\"\n            id=\\\\\"cars\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-select-my-basic-ref-component-1\\\\\"\n          >\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </template>\n      \n        Hello\n      \n        <template data-el=\\\\\"div-my-basic-ref-component-1\\\\\">\n          <!-- state.lowerCaseName() -->\n        </template>\n        ! I can run in React, Qwik, Vue, Solid, or Web Component!\n      </div>\n      <style>\n        .input-my-basic-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Received an update\\\\\");\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self._inputRef, self._inputNoArgRef]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-ref-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.showInput;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicRefComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicRefComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowerCaseName());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-ref-component\\\\\", MyBasicRefComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic 1`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\nexport const DEFAULT_VALUES = {\n  name: \\\\\"Steve\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      underscore_fn_name() {\n        return \\\\\"bar\\\\\";\n      },\n      age: 1,\n      sports: [\\\\\"\\\\\"],\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-component-1\n    this.onInputMyBasicComponent1Change = (myEvent) => {\n      this.state.name = myEvent.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        <input\n          data-el=\\\\\"input-my-basic-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = DEFAULT_VALUES.name || this.state.name;\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic 2`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-show-component></my-basic-for-show-component>\n *\n */\nclass MyBasicForShowComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-for-show-component-1\n    this.onInputMyBasicForShowComponent1Change = (event) => {\n      const person = this.getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      this.state.name = event.target.value + \\\\\" and \\\\\" + person;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-my-basic-for-show-component\\\\\">\n          <template data-el=\\\\\"show-my-basic-for-show-component\\\\\">\n            <input\n              data-el=\\\\\"input-my-basic-for-show-component-1\\\\\"\n              data-dom-state=\\\\\"MyBasicForShowComponent-input-my-basic-for-show-component-1\\\\\"\n            />\n      \n            Hello\n            <template data-el=\\\\\"div-my-basic-for-show-component-1\\\\\">\n              <!-- person -->\n            </template>\n            ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </template>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-for-show-component']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        const whenCondition = person === this.state.name;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForShowComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForShowComponent1Change\n        );\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-show-component-1']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-show-component\\\\\", MyBasicForShowComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic Context 1`] = `\n\"import { Injector, MyService, createInjector } from \\\\\"@dummy/injection-js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n    this.context = createInjector();\n\n    this.onInitOnce = false;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onChange: function onChange() {\n        const change = self.myService.method(\\\\\"change\\\\\");\n        console.log(change);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-component-1\n    this.onInputMyBasicComponent1Change = (event) => {\n      this.state.onChange();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.myService = this.getContext(this._root, MyService);\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\">\n          <!-- myService.method('hello') + state.name -->\n        </template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      \n        <input\n          data-el=\\\\\"input-my-basic-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n        />\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      const hi = this.myService.method(\\\\\"hi\\\\\");\n      console.log(hi);\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    const bye = this.myService.method(\\\\\"hi\\\\\");\n    console.log(bye);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(\n          el,\n          this.myService.method(\\\\\"hello\\\\\") + this.state.name\n        );\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic OnMount Update 1`] = `\n\"export interface Props {\n  hi: string;\n  bye: string;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-on-mount-update-component></my-basic-on-mount-update-component>\n *\n */\nclass MyBasicOnMountUpdateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"bye\\\\\", \\\\\"hi\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-my-basic-on-mount-update-component-1\\\\\">\n          <!-- state.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      this.state.name = \\\\\"PatrickJS onInit\\\\\" + this.props.hi;\n      this.update();\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    this.state.name = \\\\\"PatrickJS onMount\\\\\" + this.props.bye;\n    this.update();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-on-mount-update-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-on-mount-update-component\\\\\",\n  MyBasicOnMountUpdateComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic Outputs 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-outputs-component></my-basic-outputs-component>\n *\n */\nclass MyBasicOutputsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.props.onMessageChange(this.state.name);\n    this.props.onEvent(this.props.message);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-outputs-component\\\\\", MyBasicOutputsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Basic Outputs Meta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"outputs\\\\\":[\\\\\"onMessage\\\\\",\\\\\"onEvent\\\\\"],\\\\\"baz\\\\\":\\\\\"metadata inside component\\\\\"}\n          */\n\n/**\n * Usage:\n *\n *  <my-basic-outputs-component></my-basic-outputs-component>\n *\n */\nclass MyBasicOutputsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onMessageChange\\\\\", \\\\\"onEvent\\\\\", \\\\\"message\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.props.onMessageChange(this.state.name);\n    this.props.onEvent(this.props.message);\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-outputs-component\\\\\", MyBasicOutputsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicAttribute 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        autocapitalize=\\\\\"on\\\\\"\n        autocomplete=\\\\\"on\\\\\"\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"spellcheck\\\\\", true);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicBooleanAttribute 1`] = `\n\"type Props = {\n  children: any;\n  type: string;\n};\n\nimport MyBooleanAttributeComponent from \\\\\"./basic-boolean-attribute-component.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <my-boolean-attribute></my-boolean-attribute>\n *\n */\nclass MyBooleanAttribute extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-boolean-attribute\\\\\">\n          <slot></slot>\n          <template data-el=\\\\\"div-my-boolean-attribute-2\\\\\">\n            <!-- props.type -->\n          </template>\n        </template>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute\\\\\"\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute-2\\\\\"\n        ></my-boolean-attribute-component>\n        <my-boolean-attribute-component\n          data-el=\\\\\"my-boolean-attribute-component-my-boolean-attribute-3\\\\\"\n        ></my-boolean-attribute-component>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-boolean-attribute']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.children;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-boolean-attribute-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"toggle\\\\\", true);\n        el.toggle = true;\n\n        if (el.props) {\n          el.props.toggle = true;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.toggle = true;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute-2']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"toggle\\\\\", true);\n        el.toggle = true;\n\n        if (el.props) {\n          el.props.toggle = true;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.toggle = true;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-boolean-attribute-component-my-boolean-attribute-3']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"list\\\\\", null);\n        el.list = null;\n\n        if (el.props) {\n          el.props.list = null;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.list = null;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-boolean-attribute\\\\\", MyBooleanAttribute);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicChildComponent 1`] = `\n\"import MyBasicOnMountUpdateComponent from \\\\\"./basic-onMount-update.raw\\\\\";\nimport MyBasicOutputsComponent from \\\\\"./basic-outputs.raw\\\\\";\nimport MyBasicComponent from \\\\\"./basic.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-child-component></my-basic-child-component>\n *\n */\nclass MyBasicChildComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      dev: \\\\\"PatrickJS\\\\\",\n      log: function log(message: string) {\n        console.log(message);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'messagechange' event on my-basic-outputs-component-my-basic-child-component\n    this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange = (\n      name\n    ) => {\n      this.state.name = name;\n      this.update();\n    };\n\n    // Event handler for 'event' event on my-basic-outputs-component-my-basic-child-component\n    this.onMyBasicOutputsComponentMyBasicChildComponentEvent = (event) => {\n      this.state.log(\\\\\"Test\\\\\");\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <my-basic-component\n          data-el=\\\\\"my-basic-component-my-basic-child-component\\\\\"\n        ></my-basic-component>\n        <div>\n          <my-basic-on-mount-update-component\n            data-el=\\\\\"my-basic-on-mount-update-component-my-basic-child-component\\\\\"\n          ></my-basic-on-mount-update-component>\n          <my-basic-outputs-component\n            message=\\\\\"Test\\\\\"\n            data-el=\\\\\"my-basic-outputs-component-my-basic-child-component\\\\\"\n          ></my-basic-outputs-component>\n        </div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state.dev);\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-on-mount-update-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.setAttribute(\\\\\"hi\\\\\", this.state.name);\n        el.hi = this.state.name;\n\n        if (el.props) {\n          el.props.hi = this.state.name;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.hi = this.state.name;\n        }\n\n        el.setAttribute(\\\\\"bye\\\\\", this.state.dev);\n        el.bye = this.state.dev;\n\n        if (el.props) {\n          el.props.bye = this.state.dev;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.bye = this.state.dev;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='my-basic-outputs-component-my-basic-child-component']\\\\\"\n      )\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"messagechange\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange\n        );\n        el.addEventListener(\n          \\\\\"messagechange\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentMessagechange\n        );\n        el.removeEventListener(\n          \\\\\"event\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentEvent\n        );\n        el.addEventListener(\n          \\\\\"event\\\\\",\n          this.onMyBasicOutputsComponentMyBasicChildComponentEvent\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-child-component\\\\\", MyBasicChildComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicFor 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-component></my-basic-for-component>\n *\n */\nclass MyBasicForComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-for-component-1\n    this.onInputMyBasicForComponent1Change = (event) => {\n      const person = this.getScope(event.currentTarget, \\\\\"person\\\\\");\n\n      this.state.name = event.target.value + \\\\\" and \\\\\" + person;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-my-basic-for-component\\\\\">\n          <input\n            data-el=\\\\\"input-my-basic-for-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicForComponent-input-my-basic-for-component-1\\\\\"\n          />\n      \n          Hello\n          <template data-el=\\\\\"div-my-basic-for-component-1\\\\\"><!-- person --></template>\n          ! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount code\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.names;\n        this.renderLoop(el, array, \\\\\"person\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-for-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicForComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-component-1']\\\\\")\n      .forEach((el) => {\n        const person = this.getScope(el, \\\\\"person\\\\\");\n        this.renderTextNode(el, person);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-for-component\\\\\", MyBasicForComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicRef 1`] = `\n\"export interface Props {\n  showInput: boolean;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-ref-component></my-basic-ref-component>\n *\n */\nclass MyBasicRefComponent extends HTMLElement {\n  get _inputRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputRef']\\\\\"\n    );\n  }\n\n  get _inputNoArgRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='MyBasicRefComponent-inputNoArgRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"PatrickJS\\\\\",\n      onBlur: function onBlur() {\n        // Maintain focus\n        self._inputRef?.focus();\n      },\n      lowerCaseName: function lowerCaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"showInput\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'blur' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Blur = (event) => {\n      this.state.onBlur();\n    };\n\n    // Event handler for 'change' event on input-my-basic-ref-component-1\n    this.onInputMyBasicRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-my-basic-ref-component\\\\\">\n          <input\n            class=\\\\\"input-my-basic-ref-component\\\\\"\n            data-el=\\\\\"input-my-basic-ref-component-1\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-input-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputRef\\\\\"\n          />\n          <label\n            for=\\\\\"cars\\\\\"\n            data-el=\\\\\"label-my-basic-ref-component-1\\\\\"\n            data-ref=\\\\\"MyBasicRefComponent-inputNoArgRef\\\\\"\n          >\n            Choose a car:\n          </label>\n          <select\n            name=\\\\\"cars\\\\\"\n            id=\\\\\"cars\\\\\"\n            data-dom-state=\\\\\"MyBasicRefComponent-select-my-basic-ref-component-1\\\\\"\n          >\n            <option value=\\\\\"supra\\\\\">GR Supra</option>\n            <option value=\\\\\"86\\\\\">GR 86</option>\n          </select>\n        </template>\n      \n        Hello\n      \n        <template data-el=\\\\\"div-my-basic-ref-component-1\\\\\">\n          <!-- state.lowerCaseName() -->\n        </template>\n        ! I can run in React, Qwik, Vue, Solid, or Web Component!\n      </div>\n      <style>\n        .input-my-basic-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-basic-ref-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.showInput;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.addEventListener(\\\\\"blur\\\\\", this.onInputMyBasicRefComponent1Blur);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicRefComponent1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyBasicRefComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowerCaseName());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-ref-component\\\\\", MyBasicRefComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicRefAssignment 1`] = `\n\"export interface Props {\n  showInput: boolean;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-ref-assignment-component></my-basic-ref-assignment-component>\n *\n */\nclass MyBasicRefAssignmentComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handlerClick: function handlerClick(event: Event) {\n        event.preventDefault();\n        console.log(\\\\\"current value\\\\\", self._holdValueRef);\n        self._holdValueRef = self._holdValueRef + \\\\\"JS\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-basic-ref-assignment-component-1\n    this.onButtonMyBasicRefAssignmentComponent1Click = async (evt) => {\n      await this.state.handlerClick(evt);\n    };\n\n    this._holdValueRef = \\\\\"Patrick\\\\\";\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button data-el=\\\\\"button-my-basic-ref-assignment-component-1\\\\\">Click</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\n        \\\\\"[data-el='button-my-basic-ref-assignment-component-1']\\\\\"\n      )\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"click\\\\\",\n          this.onButtonMyBasicRefAssignmentComponent1Click\n        );\n        el.addEventListener(\n          \\\\\"click\\\\\",\n          this.onButtonMyBasicRefAssignmentComponent1Click\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-ref-assignment-component\\\\\",\n  MyBasicRefAssignmentComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > BasicRefPrevious 1`] = `\n\"export interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null); // Store current value in ref\n\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n\n  return ref;\n}\n\n/**\n * Usage:\n *\n *  <my-previous-component></my-previous-component>\n *\n */\nclass MyPreviousComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { count: 0 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.count]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-previous-component-1\n    this.onButtonMyPreviousComponent1Click = (event) => {\n      this.state.count += 1;\n      this.update();\n    };\n\n    this._prevCount = state.count;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <h1>\n          Now:\n          <template data-el=\\\\\"div-my-previous-component-1\\\\\">\n            <!-- state.count -->\n          </template>\n          , before:\n          <template data-el=\\\\\"div-my-previous-component-2\\\\\">\n            <!-- self._prevCount -->\n          </template>\n        </h1>\n        <button data-el=\\\\\"button-my-previous-component-1\\\\\">Increment</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        self._prevCount = self.state.count;\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.count]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-previous-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.count);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-previous-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, self._prevCount);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-previous-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyPreviousComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyPreviousComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-previous-component\\\\\", MyPreviousComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Button 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Columns 1`] = `\n\"type Column = {\n  content: any; // TODO: Implement this when support for dynamic CSS lands\n\n  width?: number;\n};\nexport interface ColumnProps {\n  columns?: Column[]; // TODO: Implement this when support for dynamic CSS lands\n\n  space?: number; // TODO: Implement this when support for dynamic CSS lands\n\n  stackColumnsAt?: \\\\\"tablet\\\\\" | \\\\\"mobile\\\\\" | \\\\\"never\\\\\"; // TODO: Implement this when support for dynamic CSS lands\n\n  reverseColumnsWhenStacked?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <column></column>\n *\n */\nclass Column extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      getColumns() {\n        return self.props.columns || [];\n      },\n      getGutterSize() {\n        return typeof self.props.space === \\\\\"number\\\\\"\n          ? self.props.space || 0\n          : 20;\n      },\n      getWidth(index: number) {\n        const columns = self.state.getColumns();\n        return (columns[index] && columns[index].width) || 100 / columns.length;\n      },\n      getColumnCssWidth(index: number) {\n        const columns = self.state.getColumns();\n        const gutterSize = self.state.getGutterSize();\n        const subtractWidth =\n          (gutterSize * (columns.length - 1)) / columns.length;\n        return \\`calc(\\${self.state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"columns\\\\\", \\\\\"space\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-columns div-column\\\\\">\n        <template data-el=\\\\\"for-column\\\\\">\n          <div class=\\\\\"builder-column div-column-2\\\\\">\n            <template data-el=\\\\\"div-column-1\\\\\"><!-- column.content --></template>\n            <template data-el=\\\\\"div-column-2\\\\\"><!-- index --></template>\n          </div>\n        </template>\n      </div>\n      <style>\n        .div-column {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n          line-height: normal;\n        }\n        @media (max-width: 999px) {\n          .div-column {\n            flex-direction: row;\n          }\n        }\n        @media (max-width: 639px) {\n          .div-column {\n            flex-direction: row-reverse;\n          }\n        }\n        .div-column-2 {\n          flex-grow: 1;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='for-column']\\\\\").forEach((el) => {\n      let array = this.props.columns;\n      this.renderLoop(el, array, \\\\\"column\\\\\", \\\\\"index\\\\\");\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-column-1']\\\\\").forEach((el) => {\n      const column = this.getScope(el, \\\\\"column\\\\\");\n      this.renderTextNode(el, column.content);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-column-2']\\\\\").forEach((el) => {\n      const index = this.getScope(el, \\\\\"index\\\\\");\n      this.renderTextNode(el, index);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"column\\\\\", Column);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > ContentSlotHtml 1`] = `\n\"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n/**\n * Usage:\n *\n *  <content-slot-code></content-slot-code>\n *\n */\nclass ContentSlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"slotTesting\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <slot data-el=\\\\\"slot-content-slot-code\\\\\"></slot>\n        <div><hr /></div>\n        <div><slot></slot></div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='slot-content-slot-code']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", this.props.slotTesting);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"content-slot-code\\\\\", ContentSlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > ContentSlotJSX 1`] = `\n\"type Props = {\n  [key: string]: string | JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n/**\n * Usage:\n *\n *  <content-slot-jsx-code></content-slot-jsx-code>\n *\n */\nclass ContentSlotJsxCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"king\\\\\",\n      showContent: false,\n      get cls() {\n        return self.props.slotContent && self.props.children\n          ? \\`\\${self.state.name}-content\\`\n          : \\\\\"\\\\\";\n      },\n      show() {\n        self.props.slotContent ? 1 : \\\\\"\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"slotContent\\\\\",\n      \\\\\"children\\\\\",\n      \\\\\"slotReference\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"content\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on div-content-slot-jsx-code-1\n    this.onDivContentSlotJsxCode1Click = (event) => {\n      this.state.show();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-content-slot-jsx-code\\\\\">\n        <div data-el=\\\\\"div-content-slot-jsx-code-1\\\\\">\n          <template data-el=\\\\\"show-content-slot-jsx-code-2\\\\\">\n            <slot name=\\\\\"content\\\\\">\n              <template data-el=\\\\\"div-content-slot-jsx-code-2\\\\\">\n                <!-- props.content -->\n              </template>\n            </slot>\n          </template>\n          <div><hr /></div>\n          <div><slot></slot></div>\n        </div>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-content-slot-jsx-code']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.slotReference;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-content-slot-jsx-code-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"name\\\\\", this.props.slotContent ? \\\\\"name1\\\\\" : \\\\\"name2\\\\\");\n        el.setAttribute(\\\\\"title\\\\\", this.props.slotContent ? \\\\\"title1\\\\\" : \\\\\"title2\\\\\");\n        el.removeEventListener(\\\\\"click\\\\\", this.onDivContentSlotJsxCode1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onDivContentSlotJsxCode1Click);\n        el.className = this.state.cls;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-content-slot-jsx-code-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.showContent && this.props.slotContent;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-content-slot-jsx-code-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.content);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"content-slot-jsx-code\\\\\", ContentSlotJsxCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > CustomCode 1`] = `\n\"export interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <custom-code></custom-code>\n *\n */\nclass CustomCode extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='CustomCode-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (self._elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = self._elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (self.state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              self.state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (self.state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                self.state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-custom-code-1\\\\\" data-ref=\\\\\"CustomCode-elem\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.state.findAndRunScripts();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-custom-code-1']\\\\\")\n      .forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" +\n          (this.props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n        el.innerHTML = this.props.code;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"custom-code\\\\\", CustomCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Embed 1`] = `\n\"export interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <custom-code></custom-code>\n *\n */\nclass CustomCode extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='CustomCode-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scriptsInserted: [],\n      scriptsRun: [],\n      findAndRunScripts() {\n        // TODO: Move this function to standalone one in '@builder.io/utils'\n        if (self._elem && typeof window !== \\\\\"undefined\\\\\") {\n          /** @type {HTMLScriptElement[]} */\n          const scripts = self._elem.getElementsByTagName(\\\\\"script\\\\\");\n\n          for (let i = 0; i < scripts.length; i++) {\n            const script = scripts[i];\n\n            if (script.src) {\n              if (self.state.scriptsInserted.includes(script.src)) {\n                continue;\n              }\n\n              self.state.scriptsInserted.push(script.src);\n              const newScript = document.createElement(\\\\\"script\\\\\");\n              newScript.async = true;\n              newScript.src = script.src;\n              document.head.appendChild(newScript);\n            } else if (\n              !script.type ||\n              [\n                \\\\\"text/javascript\\\\\",\n                \\\\\"application/javascript\\\\\",\n                \\\\\"application/ecmascript\\\\\",\n              ].includes(script.type)\n            ) {\n              if (self.state.scriptsRun.includes(script.innerText)) {\n                continue;\n              }\n\n              try {\n                self.state.scriptsRun.push(script.innerText);\n                new Function(script.innerText)();\n              } catch (error) {\n                console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n              }\n            }\n          }\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"replaceNodes\\\\\", \\\\\"code\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-custom-code-1\\\\\" data-ref=\\\\\"CustomCode-elem\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    this.state.findAndRunScripts();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-custom-code-1']\\\\\")\n      .forEach((el) => {\n        el.className =\n          \\\\\"builder-custom-code\\\\\" +\n          (this.props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\");\n        el.innerHTML = this.props.code;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"custom-code\\\\\", CustomCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Image 1`] = `\n\"// TODO: AMP Support?\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string; // TODO: Support generating Builder.io and or Shopify \\`srcset\\`s when needed\n\n  srcset?: string; // TODO: Implement support for custom aspect ratios\n\n  aspectRatio?: number; // TODO: This might not work as expected in terms of positioning\n\n  children?: any;\n}\n\n/**\n * Usage:\n *\n *  <image></image>\n *\n */\nclass Image extends HTMLElement {\n  get _pictureRef() {\n    return this._root.querySelector(\\\\\"[data-ref='Image-pictureRef']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      scrollListener: null,\n      imageLoaded: false,\n      setLoaded() {\n        self.state.imageLoaded = true;\n        self.update();\n      },\n      useLazyLoading() {\n        // TODO: Add more checks here, like testing for real web browsers\n        return !!self.props.lazy && self.state.isBrowser();\n      },\n      isBrowser: function isBrowser() {\n        return (\n          typeof window !== \\\\\"undefined\\\\\" &&\n          window.navigator.product != \\\\\"ReactNative\\\\\"\n        );\n      },\n      load: false,\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"lazy\\\\\",\n      \\\\\"altText\\\\\",\n      \\\\\"_class\\\\\",\n      \\\\\"image\\\\\",\n      \\\\\"srcset\\\\\",\n      \\\\\"sizes\\\\\",\n      \\\\\"children\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'load' event on img-image-1\n    this.onImgImage1Load = (event) => {\n      this.state.setLoaded();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    if (this.state.scrollListener) {\n      window.removeEventListener(\\\\\"scroll\\\\\", this.state.scrollListener);\n    }\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <picture data-el=\\\\\"picture-image-1\\\\\" data-ref=\\\\\"Image-pictureRef\\\\\">\n          <template data-el=\\\\\"show-image\\\\\"><img data-el=\\\\\"img-image-1\\\\\" /></template>\n          <source data-el=\\\\\"source-image-1\\\\\" />\n        </picture>\n        <slot></slot>\n      </div>\n      <style>\n        .img-image {\n          opacity: 1;\n          transition: opacity 0.2s ease-in-out;\n          object-fit: cover;\n          object-position: center;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {\n    // onMount\n    if (this.state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (self._pictureRef) {\n          const rect = self._pictureRef.getBoundingClientRect();\n\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            this.state.load = true;\n            this.update();\n            this.state.scrollListener = null;\n            this.update();\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      this.state.scrollListener = listener;\n      this.update();\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-image']\\\\\").forEach((el) => {\n      const whenCondition = !this.state.useLazyLoading() || this.state.load;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='img-image-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"alt\\\\\", this.props.altText);\n      el.setAttribute(\n        \\\\\"aria-role\\\\\",\n        this.props.altText ? \\\\\"presentation\\\\\" : undefined\n      );\n      el.className =\n        \\\\\"builder-image\\\\\" +\n        (this.props._class ? \\\\\" \\\\\" + this.props._class : \\\\\"\\\\\") +\n        \\\\\" img-image\\\\\";\n      el.setAttribute(\\\\\"src\\\\\", this.props.image);\n      el.removeEventListener(\\\\\"load\\\\\", this.onImgImage1Load);\n      el.addEventListener(\\\\\"load\\\\\", this.onImgImage1Load);\n      el.setAttribute(\\\\\"srcset\\\\\", this.props.srcset);\n      el.setAttribute(\\\\\"sizes\\\\\", this.props.sizes);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='source-image-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"srcset\\\\\", this.props.srcset);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"image\\\\\", Image);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Image State 1`] = `\n\"/**\n * Usage:\n *\n *  <img-state-component></img-state-component>\n *\n */\nclass ImgStateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { canShow: true, images: [\\\\\"http://example.com/qwik.png\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-img-state-component\\\\\">\n          <img class=\\\\\"custom-class\\\\\" data-el=\\\\\"img-img-state-component-1\\\\\" />\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-img-state-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.images;\n        this.renderLoop(el, array, \\\\\"item\\\\\", \\\\\"itemIndex\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-img-state-component-1']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        const itemIndex = this.getScope(el, \\\\\"itemIndex\\\\\");\n        el.setAttribute(\\\\\"src\\\\\", item);\n        el.key = itemIndex;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"img-state-component\\\\\", ImgStateComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Img 1`] = `\n\"export interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: \\\\\"cover\\\\\" | \\\\\"contain\\\\\";\n  backgroundPosition?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <img-component></img-component>\n *\n */\nclass ImgComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"backgroundSize\\\\\",\n      \\\\\"backgroundPosition\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"imgSrc\\\\\",\n      \\\\\"altText\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <img data-el=\\\\\"img-img-component-1\\\\\" />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-img-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, {\n          objectFit: this.props.backgroundSize || \\\\\"cover\\\\\",\n          objectPosition: this.props.backgroundPosition || \\\\\"center\\\\\",\n        });\n        el.key = (Builder.isEditing && this.props.imgSrc) || \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"alt\\\\\", this.props.altText);\n        el.setAttribute(\\\\\"src\\\\\", this.props.imgSrc);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"img-component\\\\\", ImgComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Input 1`] = `\n\"export interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <form-input-component></form-input-component>\n *\n */\nclass FormInputComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"defaultValue\\\\\",\n      \\\\\"placeholder\\\\\",\n      \\\\\"type\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"required\\\\\",\n      \\\\\"onChange\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-form-input-component-1\n    this.onInputFormInputComponent1Change = (event) => {\n      this.props.onChange?.(event.target.value);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-form-input-component-1\\\\\"\n        data-dom-state=\\\\\"FormInputComponent-input-form-input-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-form-input-component-1']\\\\\")\n      .forEach((el) => {\n        el.key =\n          Builder.isEditing && this.props.defaultValue\n            ? this.props.defaultValue\n            : \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"placeholder\\\\\", this.props.placeholder);\n        el.setAttribute(\\\\\"type\\\\\", this.props.type);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n        el.value = this.props.value;\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n        el.setAttribute(\\\\\"required\\\\\", this.props.required);\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputFormInputComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputFormInputComponent1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"form-input-component\\\\\", FormInputComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > InputParent 1`] = `\n\"import FormInputComponent from \\\\\"./input.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <stepper></stepper>\n *\n */\nclass Stepper extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handleChange(value: string) {\n        console.log(value);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on form-input-component-stepper\n    this.onFormInputComponentStepperChange = (value) => {\n      this.state.handleChange(value);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <form-input-component\n        name=\\\\\"kingzez\\\\\"\n        type=\\\\\"text\\\\\"\n        data-el=\\\\\"form-input-component-stepper\\\\\"\n      ></form-input-component>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='form-input-component-stepper']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onFormInputComponentStepperChange\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onFormInputComponentStepperChange);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"stepper\\\\\", Stepper);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > NestedStore 1`] = `\n\"type MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\n/**\n * Usage:\n *\n *  <nested-store></nested-store>\n *\n */\nclass NestedStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { _id: \\\\\"abc\\\\\", _messageId: self.state._id + \\\\\"-message\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-nested-store-1\\\\\">\n        Test\n      \n        <p data-el=\\\\\"p-nested-store-1\\\\\">Message</p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-store-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state._id);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='p-nested-store-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"id\\\\\", this.state._messageId);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-store\\\\\", NestedStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > RawText 1`] = `\n\"export interface RawTextProps {\n  attributes?: any;\n  text?: string; // builderBlock?: any;\n}\n\n/**\n * Usage:\n *\n *  <raw-text></raw-text>\n *\n */\nclass RawText extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <span data-el=\\\\\"span-raw-text-1\\\\\"></span>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='span-raw-text-1']\\\\\").forEach((el) => {\n      el.className =\n        this.props.attributes?.class || this.props.attributes?.className;\n      el.innerHTML = this.props.text || \\\\\"\\\\\";\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"raw-text\\\\\", RawText);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Section 1`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n/**\n * Usage:\n *\n *  <section-component></section-component>\n *\n */\nclass SectionComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"maxWidth\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <section data-el=\\\\\"section-section-component-1\\\\\"><slot></slot></section>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='section-section-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(\n          el.style,\n          this.props.maxWidth && typeof this.props.maxWidth === \\\\\"number\\\\\"\n            ? {\n                maxWidth: this.props.maxWidth,\n              }\n            : undefined\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"section-component\\\\\", SectionComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Section 2`] = `\n\"export interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\n/**\n * Usage:\n *\n *  <section-state-component></section-state-component>\n *\n */\nclass SectionStateComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { max: 42, items: [42] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-section-state-component\\\\\">\n        <template data-el=\\\\\"for-section-state-component\\\\\">\n          <section data-el=\\\\\"section-section-state-component-1\\\\\"><slot></slot></section>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-section-state-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.max;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-section-state-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.items;\n        this.renderLoop(el, array, \\\\\"item\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='section-section-state-component-1']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        Object.assign(el.style, {\n          maxWidth: item + this.state.max,\n        });\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"section-state-component\\\\\", SectionStateComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Select 1`] = `\n\"export interface FormSelectProps {\n  options?: {\n    name?: string;\n    value: string;\n  }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <select-component></select-component>\n *\n */\nclass SelectComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"defaultValue\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"options\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <select\n        data-el=\\\\\"select-select-component-1\\\\\"\n        data-dom-state=\\\\\"SelectComponent-select-select-component-1\\\\\"\n      >\n        <template data-el=\\\\\"for-select-component\\\\\">\n          <option data-el=\\\\\"option-select-component-1\\\\\">\n            <template data-el=\\\\\"div-select-component-1\\\\\">\n              <!-- option.name || option.value -->\n            </template>\n          </option>\n        </template>\n      </select>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='select-select-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.props.value;\n        el.key =\n          Builder.isEditing && this.props.defaultValue\n            ? this.props.defaultValue\n            : \\\\\"default-key\\\\\";\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-select-component']\\\\\")\n      .forEach((el) => {\n        let array = this.props.options;\n        this.renderLoop(el, array, \\\\\"option\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='option-select-component-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        el.value = option.value;\n        el.setAttribute(\\\\\"data-index\\\\\", index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-select-component-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option.name || option.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"select-component\\\\\", SelectComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > SlotDefault 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot><div class=\\\\\"default-slot\\\\\">Default content</div></slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > SlotHtml 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <content-slot-code><slot data-el=\\\\\"slot-slot-code\\\\\"></slot></content-slot-code>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='slot-slot-code']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"testing\\\\\", <div>Hello</div>);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > SlotJsx 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\nimport ContentSlotCode from \\\\\"./content-slot-jsx.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <content-slot-code data-el=\\\\\"content-slot-code-slot-code\\\\\"></content-slot-code>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='content-slot-code-slot-code']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"slotTesting\\\\\", <div>Hello</div>);\n        el.slotTesting = <div>Hello</div>;\n\n        if (el.props) {\n          el.props.slotTesting = <div>Hello</div>;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.slotTesting = <div>Hello</div>;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > SlotNamed 1`] = `\n\"type Props = {\n  [key: string]: string;\n};\n\n/**\n * Usage:\n *\n *  <slot-code></slot-code>\n *\n */\nclass SlotCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot name=\\\\\"myAwesomeSlot\\\\\"></slot>\n        <slot name=\\\\\"top\\\\\"></slot>\n        <slot name=\\\\\"left\\\\\">Default left</slot>\n        <slot>Default Child</slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"slot-code\\\\\", SlotCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Stamped.io 1`] = `\n\"type SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nimport { kebabCase, snakeCase } from \\\\\"lodash\\\\\";\n\n/**\n * Usage:\n *\n *  <smile-reviews></smile-reviews>\n *\n */\nclass SmileReviews extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      reviews: [],\n      name: \\\\\"test\\\\\",\n      showReviewPrompt: false,\n      kebabCaseValue() {\n        return kebabCase(\\\\\"testThat\\\\\");\n      },\n      snakeCaseValue() {\n        return snakeCase(\\\\\"testThis\\\\\");\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"apiKey\\\\\", \\\\\"productId\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-smile-reviews-1\n    this.onButtonSmileReviews1Click = (event) => {\n      this.state.showReviewPrompt = true;\n      this.update();\n    };\n\n    // Event handler for 'click' event on button-smile-reviews-2\n    this.onButtonSmileReviews2Click = (ev) => {\n      ev.preventDefault();\n      this.state.showReviewPrompt = false;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-smile-reviews-1\\\\\">\n        <button data-el=\\\\\"button-smile-reviews-1\\\\\">Write a review</button>\n        <template data-el=\\\\\"show-smile-reviews\\\\\">\n          <input\n            placeholder=\\\\\"Email\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-1\\\\\"\n          />\n          <input\n            placeholder=\\\\\"Title\\\\\"\n            class=\\\\\"input-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-input-smile-reviews-2\\\\\"\n          />\n          <textarea\n            placeholder=\\\\\"How was your experience?\\\\\"\n            class=\\\\\"textarea-smile-reviews\\\\\"\n            data-dom-state=\\\\\"SmileReviews-textarea-smile-reviews-1\\\\\"\n          ></textarea>\n          <button class=\\\\\"button-smile-reviews\\\\\" data-el=\\\\\"button-smile-reviews-2\\\\\">\n            Submit\n          </button>\n        </template>\n      \n        <template data-el=\\\\\"for-smile-reviews\\\\\">\n          <div class=\\\\\"review-smile-reviews\\\\\" data-el=\\\\\"div-smile-reviews-2\\\\\">\n            <img class=\\\\\"img-smile-reviews\\\\\" data-el=\\\\\"img-smile-reviews-1\\\\\" />\n            <div data-el=\\\\\"div-smile-reviews-3\\\\\">\n              <div>\n                N:\n                <template data-el=\\\\\"div-smile-reviews-4\\\\\"><!-- index --></template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-5\\\\\">\n                  <!-- review.author -->\n                </template>\n              </div>\n              <div>\n                <template data-el=\\\\\"div-smile-reviews-6\\\\\">\n                  <!-- review.reviewMessage -->\n                </template>\n              </div>\n            </div>\n          </div>\n        </template>\n      </div>\n      <style>\n        .input-smile-reviews {\n          display: block;\n        }\n        .textarea-smile-reviews {\n          display: block;\n        }\n        .button-smile-reviews {\n          display: block;\n        }\n        .review-smile-reviews {\n          margin: 10px;\n          padding: 10px;\n          background: white;\n          display: flex;\n          border-radius: 5px;\n          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n          -webkit-font-smoothing: antialiased;\n        }\n        .img-smile-reviews {\n          height: 30px;\n          width: 30px;\n          margin-right: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {\n    // onMount\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        this.props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${this.props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        this.state.reviews = data.data;\n        this.update();\n      });\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"data-user\\\\\", this.state.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-smile-reviews']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.showReviewPrompt || \\\\\"asdf\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSmileReviews2Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-smile-reviews']\\\\\")\n      .forEach((el) => {\n        let array = this.state.reviews;\n        this.renderLoop(el, array, \\\\\"review\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-2']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.key = review.id;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='img-smile-reviews-1']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        el.setAttribute(\\\\\"src\\\\\", review.avatar);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-3']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.showReviewPrompt\n          ? \\\\\"bg-primary\\\\\"\n          : \\\\\"bg-secondary\\\\\";\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-4']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        this.renderTextNode(el, index);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-5']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.author);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-smile-reviews-6']\\\\\")\n      .forEach((el) => {\n        const review = this.getScope(el, \\\\\"review\\\\\");\n        this.renderTextNode(el, review.reviewMessage);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"smile-reviews\\\\\", SmileReviews);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > StoreComment 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { foo: true, bar() {} };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-string-literal-store-1\\\\\"><!-- state.foo --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-string-literal-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > StoreShadowVars 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      errors: {},\n      foo(errors) {\n        return errors;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-my-component-1\\\\\">\n        <!-- state.foo(state.errors) -->\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo(this.state.errors));\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > StoreWithState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo: false,\n      bar() {\n        return self.state.foo;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.bar() --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.bar());\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Submit 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\n/**\n * Usage:\n *\n *  <submit-button></submit-button>\n *\n */\nclass SubmitButton extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button type=\\\\\"submit\\\\\" data-el=\\\\\"button-submit-button-1\\\\\">\n        <template data-el=\\\\\"div-submit-button-1\\\\\"><!-- props.text --></template>\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-submit-button-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.text);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"submit-button\\\\\", SubmitButton);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Text 1`] = `\n\"export interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nimport { Builder } from \\\\\"@builder.io/sdk\\\\\";\n\n/**\n * Usage:\n *\n *  <text></text>\n *\n */\nclass Text extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"text\\\\\", \\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-text-1\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-text-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"contentEditable\\\\\", allowEditingText || undefined);\n      el.setAttribute(\\\\\"data-name\\\\\", {\n        test: this.state.name || \\\\\"any name\\\\\",\n      });\n      el.innerHTML =\n        this.props.text ||\n        this.props.content ||\n        this.state.name ||\n        '<p class=\\\\\"text-lg\\\\\">my name</p>';\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"text\\\\\", Text);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Textarea 1`] = `\n\"export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\n/**\n * Usage:\n *\n *  <textarea></textarea>\n *\n */\nclass Textarea extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"placeholder\\\\\",\n      \\\\\"name\\\\\",\n      \\\\\"value\\\\\",\n      \\\\\"defaultValue\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <textarea\n        data-el=\\\\\"textarea-textarea-1\\\\\"\n        data-dom-state=\\\\\"Textarea-textarea-textarea-1\\\\\"\n      ></textarea>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='textarea-textarea-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"placeholder\\\\\", this.props.placeholder);\n        el.setAttribute(\\\\\"name\\\\\", this.props.name);\n        el.value = this.props.value;\n        el.setAttribute(\\\\\"defaultValue\\\\\", this.props.defaultValue);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"textarea\\\\\", Textarea);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > UseValueAndFnFromStore 1`] = `\n\"type MyProps = {\n  onChange?: (active: boolean) => void;\n};\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\n/**\n * Usage:\n *\n *  <use-value-and-fn-from-store></use-value-and-fn-from-store>\n *\n */\nclass UseValueAndFnFromStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      _id: \\\\\"abc\\\\\",\n      _active: false,\n      _do(id?: string) {\n        self.state._active = !!id;\n        self.update();\n\n        if (self.props.onChange) {\n          self.props.onChange(self.state._active);\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onChange\\\\\"];\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>Test</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    if (self.state._do) {\n      self.state._do(self.state._id);\n    }\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"use-value-and-fn-from-store\\\\\", UseValueAndFnFromStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > Video 1`] = `\n\"export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: \\\\\"contain\\\\\" | \\\\\"cover\\\\\" | \\\\\"fill\\\\\";\n  position?:\n    | \\\\\"center\\\\\"\n    | \\\\\"top\\\\\"\n    | \\\\\"left\\\\\"\n    | \\\\\"right\\\\\"\n    | \\\\\"bottom\\\\\"\n    | \\\\\"top left\\\\\"\n    | \\\\\"top right\\\\\"\n    | \\\\\"bottom left\\\\\"\n    | \\\\\"bottom right\\\\\";\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <video></video>\n *\n */\nclass Video extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"attributes\\\\\",\n      \\\\\"fit\\\\\",\n      \\\\\"position\\\\\",\n      \\\\\"video\\\\\",\n      \\\\\"posterImage\\\\\",\n      \\\\\"autoPlay\\\\\",\n      \\\\\"muted\\\\\",\n      \\\\\"controls\\\\\",\n      \\\\\"loop\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <video preload=\\\\\"none\\\\\" data-el=\\\\\"video-video-1\\\\\"></video>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='video-video-1']\\\\\").forEach((el) => {\n      Object.assign(el.style, {\n        width: \\\\\"100%\\\\\",\n        height: \\\\\"100%\\\\\",\n        ...this.props.attributes?.style,\n        objectFit: this.props.fit,\n        objectPosition: this.props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      });\n      el.key = this.props.video || \\\\\"no-src\\\\\";\n      el.setAttribute(\\\\\"poster\\\\\", this.props.posterImage);\n      el.setAttribute(\\\\\"autoplay\\\\\", this.props.autoPlay);\n      el.setAttribute(\\\\\"muted\\\\\", this.props.muted);\n      el.setAttribute(\\\\\"controls\\\\\", this.props.controls);\n      el.setAttribute(\\\\\"loop\\\\\", this.props.loop);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"video\\\\\", Video);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > arrowFunctionInUseStore 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"steve\\\\\",\n      setName(value) {\n        self.state.name = value;\n        self.update();\n      },\n      updateNameWithArrowFn(value) {\n        self.state.name = value;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicForFragment 1`] = `\n\"/**\n * Usage:\n *\n *  <basic-for-fragment></basic-for-fragment>\n *\n */\nclass BasicForFragment extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { id: \\\\\"xyz\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"for-basic-for-fragment\\\\\">\n          <div>\n            <template data-el=\\\\\"div-basic-for-fragment-1\\\\\"><!-- option --></template>\n          </div>\n        </template>\n      \n        <template data-el=\\\\\"for-basic-for-fragment-2\\\\\">\n          <div>\n            <template data-el=\\\\\"div-basic-for-fragment-2\\\\\"><!-- option --></template>\n          </div>\n        </template>\n        <select data-dom-state=\\\\\"BasicForFragment-select-basic-for-fragment-1\\\\\">\n          <template data-el=\\\\\"for-basic-for-fragment-3\\\\\">\n            <option data-el=\\\\\"option-basic-for-fragment-1\\\\\">\n              <template data-el=\\\\\"div-basic-for-fragment-3\\\\\"><!-- option --></template>\n            </option>\n          </template>\n        </select>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment-2']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"a\\\\\", \\\\\"b\\\\\", \\\\\"c\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-2']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-basic-for-fragment-3']\\\\\")\n      .forEach((el) => {\n        let array = [\\\\\"d\\\\\", \\\\\"e\\\\\", \\\\\"f\\\\\"];\n        this.renderLoop(el, array, \\\\\"option\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='option-basic-for-fragment-1']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        el.key = \\`\\${this.state.id}-\\${option}\\`;\n        el.value = option;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-basic-for-fragment-3']\\\\\")\n      .forEach((el) => {\n        const option = this.getScope(el, \\\\\"option\\\\\");\n        this.renderTextNode(el, option);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"basic-for-fragment\\\\\", BasicForFragment);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicForNoTagReference 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-for-no-tag-ref-component></my-basic-for-no-tag-ref-component>\n *\n */\nclass MyBasicForNoTagRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"VincentW\\\\\",\n      TagName: \\\\\"div\\\\\",\n      tag: \\\\\"span\\\\\",\n      get TagNameGetter() {\n        return \\\\\"span\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"actions\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <state.TagNameGetter>\n        Hello\n        <state.tag>\n          <template data-el=\\\\\"div-my-basic-for-no-tag-ref-component-1\\\\\">\n            <!-- state.name -->\n          </template>\n        </state.tag>\n      \n        <template data-el=\\\\\"for-my-basic-for-no-tag-ref-component\\\\\">\n          <state.TagName>\n            <action.icon></action.icon>\n            <span>\n              <template data-el=\\\\\"div-my-basic-for-no-tag-ref-component-2\\\\\">\n                <!-- action.text -->\n              </template>\n            </span>\n          </state.TagName>\n        </template>\n      </state.TagNameGetter>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-no-tag-ref-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-basic-for-no-tag-ref-component']\\\\\")\n      .forEach((el) => {\n        let array = this.props.actions;\n        this.renderLoop(el, array, \\\\\"action\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-for-no-tag-ref-component-2']\\\\\")\n      .forEach((el) => {\n        const action = this.getScope(el, \\\\\"action\\\\\");\n        this.renderTextNode(el, action.text);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-for-no-tag-ref-component\\\\\",\n  MyBasicForNoTagRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicForwardRef 1`] = `\n\"export interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-forward-ref-component></my-basic-forward-ref-component>\n *\n */\nclass MyBasicForwardRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-forward-ref-component-1\n    this.onInputMyBasicForwardRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-my-basic-forward-ref-component\\\\\"\n          data-el=\\\\\"input-my-basic-forward-ref-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicForwardRefComponent-input-my-basic-forward-ref-component-1\\\\\"\n        />\n      </div>\n      <style>\n        .input-my-basic-forward-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-forward-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-forward-ref-component\\\\\",\n  MyBasicForwardRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicForwardRefMetadata 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"forwardRef\\\\\":\\\\\"inputRef\\\\\"}\n          */\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-forward-ref-component></my-basic-forward-ref-component>\n *\n */\nclass MyBasicForwardRefComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-basic-forward-ref-component-1\n    this.onInputMyBasicForwardRefComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-my-basic-forward-ref-component\\\\\"\n          data-el=\\\\\"input-my-basic-forward-ref-component-1\\\\\"\n          data-dom-state=\\\\\"MyBasicForwardRefComponent-input-my-basic-forward-ref-component-1\\\\\"\n        />\n      </div>\n      <style>\n        .input-my-basic-forward-ref-component {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-basic-forward-ref-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n        el.addEventListener(\n          \\\\\"change\\\\\",\n          this.onInputMyBasicForwardRefComponent1Change\n        );\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-forward-ref-component\\\\\",\n  MyBasicForwardRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicOnUpdateReturn 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-on-update-return-component></my-basic-on-update-return-component>\n *\n */\nclass MyBasicOnUpdateReturnComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"PatrickJS\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.name]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello!\n        <template data-el=\\\\\"div-my-basic-on-update-return-component-1\\\\\">\n          <!-- state.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        const controller = new AbortController();\n        const signal = controller.signal;\n        fetch(\\\\\"https://patrickjs.com/api/resource.json\\\\\", {\n          signal,\n        })\n          .then((response) => response.json())\n          .then((data) => {\n            self.state.name = data.name;\n          });\n        return () => {\n          if (!signal.aborted) {\n            controller.abort();\n          }\n        };\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.name]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-on-update-return-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-basic-on-update-return-component\\\\\",\n  MyBasicOnUpdateReturnComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicRefAttributePassing 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true}}\n          */\n\n/**\n * Usage:\n *\n *  <basic-ref-attribute-passing-component></basic-ref-attribute-passing-component>\n *\n */\nclass BasicRefAttributePassingComponent extends HTMLElement {\n  get _buttonRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='BasicRefAttributePassingComponent-buttonRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button\n        data-el=\\\\\"button-basic-ref-attribute-passing-component-1\\\\\"\n        data-ref=\\\\\"BasicRefAttributePassingComponent-buttonRef\\\\\"\n      >\n        Attribute Passing\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"basic-ref-attribute-passing-component\\\\\",\n  BasicRefAttributePassingComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > basicRefAttributePassingCustomRef 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"attributePassing\\\\\":{\\\\\"enabled\\\\\":true,\\\\\"customRef\\\\\":\\\\\"buttonRef\\\\\"}}\n          */\n\n/**\n * Usage:\n *\n *  <basic-ref-attribute-passing-custom-ref-component></basic-ref-attribute-passing-custom-ref-component>\n *\n */\nclass BasicRefAttributePassingCustomRefComponent extends HTMLElement {\n  get _buttonRef() {\n    return this._root.querySelector(\n      \\\\\"[data-ref='BasicRefAttributePassingCustomRefComponent-buttonRef']\\\\\"\n    );\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button\n          data-el=\\\\\"button-basic-ref-attribute-passing-custom-ref-component-1\\\\\"\n          data-ref=\\\\\"BasicRefAttributePassingCustomRefComponent-buttonRef\\\\\"\n        >\n          Attribute Passing\n        </button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"basic-ref-attribute-passing-custom-ref-component\\\\\",\n  BasicRefAttributePassingCustomRefComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > class + ClassName + css 1`] = `\n\"import MyComp from \\\\\"./my-component.js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <my-comp class=\\\\\"test\\\\\" className=\\\\\"test2\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </my-comp>\n        <div class=\\\\\"test2 test div-my-basic-component\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > class + css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > className + css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > className 1`] = `\n\"type Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nimport type { JSX } from \\\\\"../../../../jsx-runtime\\\\\";\n\n/**\n * Usage:\n *\n *  <class-name-code></class-name-code>\n *\n */\nclass ClassNameCode extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { bindings: \\\\\"a binding\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <div class=\\\\\"no binding\\\\\">Without Binding</div>\n        <div data-el=\\\\\"div-class-name-code-1\\\\\">With binding</div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-class-name-code-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.bindings;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"class-name-code\\\\\", ClassNameCode);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > classState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      classState: \\\\\"testClassName\\\\\",\n      styleState: {\n        color: \\\\\"red\\\\\",\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-basic-component-1\\\\\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.state.classState + \\\\\" div-my-basic-component\\\\\";\n        Object.assign(el.style, this.state.styleState);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > classnameProps 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"stencil\\\\\":{\\\\\"propOptions\\\\\":{\\\\\"className\\\\\":{\\\\\"attribute\\\\\":\\\\\"classname\\\\\",\\\\\"mutable\\\\\":false,\\\\\"reflect\\\\\":false}}}}\n          */\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"className\\\\\", \\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-basic-component-1\\\\\">\n        <slot></slot>\n        <template data-el=\\\\\"div-my-basic-component-3\\\\\"><!-- props.type --></template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = this.props.className;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-3']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > complexMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"x\\\\\":\\\\\"y\\\\\",\\\\\"asdf\\\\\":{\\\\\"stringValue\\\\\":\\\\\"d\\\\\",\\\\\"booleanValue\\\\\":true,\\\\\"numberValue\\\\\":1,\\\\\"innerObject\\\\\":{\\\\\"stringValue\\\\\":\\\\\"inner\\\\\",\\\\\"numberValue\\\\\":2,\\\\\"booleanValue\\\\\":false},\\\\\"spreadStringValue\\\\\":\\\\\"f\\\\\"}}\n          */\n\n/**\n * Usage:\n *\n *  <complex-meta-raw></complex-meta-raw>\n *\n */\nclass ComplexMetaRaw extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"complex-meta-raw\\\\\", ComplexMetaRaw);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > componentWithContext 1`] = `\n\"export interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n/**\n * Usage:\n *\n *  <component-with-context></component-with-context>\n *\n */\nclass ComponentWithContext extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.foo = this.getContext(this._root, Context1);\n\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-component-with-context-1\\\\\"><!-- foo.value --></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-context-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.foo.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"component-with-context\\\\\", ComponentWithContext);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > componentWithContextMultiRoot 1`] = `\n\"export interface ComponentWithContextProps {\n  content: string;\n}\n\nimport Context1 from \\\\\"@dummy/1\\\\\";\nimport Context2 from \\\\\"@dummy/2\\\\\";\n\n/**\n * Usage:\n *\n *  <component-with-context></component-with-context>\n *\n */\nclass ComponentWithContext extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.foo = this.getContext(this._root, Context1);\n\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"div-component-with-context-1\\\\\"><!-- foo.value --></template>\n      <div>other</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-context-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.foo.value);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"component-with-context\\\\\", ComponentWithContext);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > contentState 1`] = `\n\"import BuilderContext from \\\\\"@dummy/context.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"content\\\\\", \\\\\"customComponents\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>setting context</div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > defaultProps 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\n/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"link\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"openLinkInNewTab\\\\\",\n      \\\\\"text\\\\\",\n      \\\\\"onClick\\\\\",\n      \\\\\"buttonText\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-button-1\n    this.onButtonButton1Click = (event) => {\n      this.props.onClick();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.buttonText --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='button-button-1']\\\\\").forEach((el) => {\n      el.removeEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n      el.addEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.buttonText);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > defaultPropsOutsideComponent 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\n/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"link\\\\\",\n      \\\\\"attributes\\\\\",\n      \\\\\"openLinkInNewTab\\\\\",\n      \\\\\"text\\\\\",\n      \\\\\"onClick\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-button-1\n    this.onButtonButton1Click = (event) => {\n      this.props.onClick(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-button\\\\\">\n          <a data-el=\\\\\"a-button-1\\\\\">\n            <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n          </a>\n        </template>\n        <template data-el=\\\\\"show-button-2\\\\\">\n          <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n            <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n          </button>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='button-button-1']\\\\\").forEach((el) => {\n      el.removeEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n      el.addEventListener(\\\\\"click\\\\\", this.onButtonButton1Click);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > defaultValsWithTypes 1`] = `\n\"type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: \\\\\"Sami\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <component-with-types></component-with-types>\n *\n */\nclass ComponentWithTypes extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-component-with-types-1\\\\\">\n          <!-- props.name || DEFAULT_VALUES.name -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-component-with-types-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name || DEFAULT_VALUES.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"component-with-types\\\\\", ComponentWithTypes);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > eventInputAndChange 1`] = `\n\"/**\n * Usage:\n *\n *  <event-input-and-change></event-input-and-change>\n *\n */\nclass EventInputAndChange extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Steve\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'input' event on input-event-input-and-change-1\n    this.onInputEventInputAndChange1Input = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-event-input-and-change-1\n    this.onInputEventInputAndChange1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          class=\\\\\"input-event-input-and-change\\\\\"\n          data-el=\\\\\"input-event-input-and-change-1\\\\\"\n          data-dom-state=\\\\\"EventInputAndChange-input-event-input-and-change-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n      <style>\n        .input-event-input-and-change {\n          color: red;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-event-input-and-change-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n        el.removeEventListener(\\\\\"input\\\\\", this.onInputEventInputAndChange1Input);\n        el.addEventListener(\\\\\"input\\\\\", this.onInputEventInputAndChange1Input);\n        el.removeEventListener(\n          \\\\\"change\\\\\",\n          this.onInputEventInputAndChange1Change\n        );\n        el.addEventListener(\\\\\"change\\\\\", this.onInputEventInputAndChange1Change);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"event-input-and-change\\\\\", EventInputAndChange);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > eventProps 1`] = `\n\"import { EventProps, EventState } from \\\\\"./event-props.type\\\\\";\n\n/**\n * Usage:\n *\n *  <event-props-component></event-props-component>\n *\n */\nclass EventPropsComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      handleClick() {\n        if (self.props.onGetVoid) {\n          self.props.onGetVoid();\n        }\n\n        if (self.props.onEnter) {\n          console.log(self.props.onEnter());\n        }\n\n        if (self.props.onPass) {\n          self.props.onPass(\\\\\"test\\\\\");\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"onGetVoid\\\\\", \\\\\"onEnter\\\\\", \\\\\"onPass\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-event-props-component-1\n    this.onButtonEventPropsComponent1Click = (event) => {\n      this.state.handleClick();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button data-el=\\\\\"button-event-props-component-1\\\\\">Test</button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-event-props-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonEventPropsComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonEventPropsComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"event-props-component\\\\\", EventPropsComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > expressionState 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      refToUse: !(self.props.componentRef instanceof Function)\n        ? self.props.componentRef\n        : null,\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"componentRef\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.refToUse --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.refToUse);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > figmaMeta 1`] = `\n\"/**\n          useMetadata:\n          {\\\\\"figma\\\\\":{\\\\\"name\\\\\":\\\\\"def-button-beta-outlined\\\\\",\\\\\"url\\\\\":\\\\\"https://www.figma.com/xxx\\\\\",\\\\\"props\\\\\":{\\\\\"iconSmall\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Small\\\\\"},\\\\\"iconMedium\\\\\":{\\\\\"type\\\\\":\\\\\"instance\\\\\",\\\\\"key\\\\\":\\\\\"📍 Icon Medium\\\\\"},\\\\\"label\\\\\":{\\\\\"type\\\\\":\\\\\"string\\\\\",\\\\\"key\\\\\":\\\\\"✏️ Label\\\\\"},\\\\\"icon\\\\\":{\\\\\"type\\\\\":\\\\\"boolean\\\\\",\\\\\"key\\\\\":\\\\\"👁️ Icon\\\\\",\\\\\"value\\\\\":{\\\\\"false\\\\\":false,\\\\\"true\\\\\":\\\\\"placeholder\\\\\"}},\\\\\"interactiveState\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Interactive State\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Enabled\\\\\":false,\\\\\"Hovered\\\\\":false,\\\\\"Pressed\\\\\":false,\\\\\"Focused\\\\\":false,\\\\\"Disabled\\\\\":\\\\\"true\\\\\"}},\\\\\"size\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Size\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Medium\\\\\":false,\\\\\"Small\\\\\":\\\\\"small\\\\\"}},\\\\\"width\\\\\":{\\\\\"type\\\\\":\\\\\"enum\\\\\",\\\\\"key\\\\\":\\\\\"Width\\\\\",\\\\\"value\\\\\":{\\\\\"(Def) Auto Width\\\\\":false,\\\\\"Full Width\\\\\":\\\\\"full\\\\\"}}}}}\n          */\n\n/**\n * Usage:\n *\n *  <figma-button></figma-button>\n *\n */\nclass FigmaButton extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\n      \\\\\"icon\\\\\",\n      \\\\\"interactiveState\\\\\",\n      \\\\\"width\\\\\",\n      \\\\\"size\\\\\",\n      \\\\\"label\\\\\",\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <button data-el=\\\\\"button-figma-button-1\\\\\">\n        <template data-el=\\\\\"div-figma-button-1\\\\\"><!-- props.label --></template>\n      </button>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-figma-button-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"data-icon\\\\\", this.props.icon);\n        el.setAttribute(\\\\\"data-disabled\\\\\", this.props.interactiveState);\n        el.setAttribute(\\\\\"data-width\\\\\", this.props.width);\n        el.setAttribute(\\\\\"data-size\\\\\", this.props.size);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-figma-button-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.label);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"figma-button\\\\\", FigmaButton);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > functionProps 1`] = `\n\"export interface MyBasicComponentProps {\n  id: string;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <p data-el=\\\\\"p-my-basic-component-1\\\\\"></p>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='p-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"f\\\\\", () => x);\n        el.setAttribute(\\\\\"f1\\\\\", (x) => x);\n        el.setAttribute(\\\\\"f2\\\\\", (x) => {});\n        el.setAttribute(\\\\\"f3\\\\\", function () {\n          return x;\n        });\n        el.setAttribute(\\\\\"f4\\\\\", function (x) {\n          return x;\n        });\n        el.setAttribute(\\\\\"f5\\\\\", function (x) {\n          return;\n        });\n        el.setAttribute(\\\\\"f6\\\\\", function () {\n          return;\n        });\n        el.setAttribute(\\\\\"f7\\\\\", (a, b, c) => a + b + c);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > getterState 1`] = `\n\"export interface ButtonProps {\n  foo: string;\n}\n\n/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get foo2() {\n        return self.props.foo + \\\\\"foo\\\\\";\n      },\n      get bar() {\n        return \\\\\"bar\\\\\";\n      },\n      baz(i: number) {\n        return i + self.state.foo2.length;\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <p>\n          <template data-el=\\\\\"div-button-1\\\\\"><!-- state.foo2 --></template>\n        </p>\n        <p>\n          <template data-el=\\\\\"div-button-2\\\\\"><!-- state.bar --></template>\n        </p>\n        <p>\n          <template data-el=\\\\\"div-button-3\\\\\"><!-- state.baz(1) --></template>\n        </p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.foo2);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.bar);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-3']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.baz(1));\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > import types 1`] = `\n\"type RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nimport { BuilderContent, GetContentOptions } from \\\\\"@builder.io/sdk\\\\\";\nimport RenderBlock, { RenderBlockProps } from \\\\\"./builder-render-block.raw\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      getRenderContentProps(block, index) {\n        return {\n          block: block,\n          index: index,\n        };\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"renderContentProps\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <render-block data-el=\\\\\"render-block-render-content\\\\\"></render-block>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > layerName 1`] = `\n\"/**\n * Usage:\n *\n *  <my-layer-name-component></my-layer-name-component>\n *\n */\nclass MyLayerNameComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <section>\n        <div class=\\\\\"layer-name-my-layer-name-component\\\\\">\n          Hello! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      </section>\n      <style>\n        .layer-name-my-layer-name-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-layer-name-component\\\\\", MyLayerNameComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > multipleOnUpdate 1`] = `\n\"/**\n * Usage:\n *\n *  <multiple-on-update></multiple-on-update>\n *\n */\nclass MultipleOnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[], []];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n\n    console.log(\\\\\"Runs on every update/rerender as well\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"multiple-on-update\\\\\", MultipleOnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > multipleOnUpdateWithDeps 1`] = `\n\"/**\n * Usage:\n *\n *  <multiple-on-update-with-deps></multiple-on-update-with-deps>\n *\n */\nclass MultipleOnUpdateWithDeps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\", c: \\\\\"c\\\\\", d: \\\\\"d\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [\n      [this.state.a, this.state.b],\n      [this.state.c, this.state.d],\n    ];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Runs when a or b changes\\\\\", self.state.a, self.state.b);\n\n        if (self.state.a === \\\\\"a\\\\\") {\n          self.state.a = \\\\\"b\\\\\";\n        }\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b]);\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"Runs when c or d changes\\\\\", self.state.c, self.state.d);\n\n        if (self.state.a === \\\\\"a\\\\\") {\n          self.state.a = \\\\\"b\\\\\";\n        }\n        self.updateDeps[1] = __next;\n      }\n    })(self.updateDeps[1], [self.state.c, self.state.d]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"multiple-on-update-with-deps\\\\\", MultipleOnUpdateWithDeps);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > multipleSpreads 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      attrs: {\n        hello: \\\\\"world\\\\\",\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > nestedShow 1`] = `\n\"interface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n/**\n * Usage:\n *\n *  <nested-show></nested-show>\n *\n */\nclass NestedShow extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-nested-show\\\\\">\n        <template data-el=\\\\\"show-nested-show-2\\\\\">\n          <div>if condition A and condition B</div>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = !this.props.conditionB;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-show\\\\\", NestedShow);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > nestedStyles 1`] = `\n\"/**\n * Usage:\n *\n *  <nested-styles></nested-styles>\n *\n */\nclass NestedStyles extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"div-nested-styles\\\\\">Hello world</div>\n      <style>\n        .div-nested-styles {\n          display: flex;\n          --bar: red;\n          color: var(--bar);\n        }\n        @media (max-width: env(--mobile)) {\n          .div-nested-styles {\n            display: block;\n          }\n        }\n        .div-nested-styles:hover {\n          display: flex;\n        }\n        .div-nested-styles:active {\n          display: inline;\n        }\n        .div-nested-styles .nested-selector {\n          display: grid;\n        }\n        .div-nested-styles .nested-selector:hover {\n          display: block;\n        }\n        .div-nested-styles.nested-selector:active {\n          display: inline-block;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"nested-styles\\\\\", NestedStyles);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > normalizeLayerNames 1`] = `\n\"export interface MyNormalizedLayerNamesComponentProps {\n  id: string;\n}\n\n/**\n * Usage:\n *\n *  <my-normalized-layer-names-component></my-normalized-layer-names-component>\n *\n */\nclass MyNormalizedLayerNamesComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <section>\n        <div>Emoji</div>\n        <div>Dashes</div>\n        <div>CamelCase</div>\n        <div>Special chars</div>\n        <div>Special chars with dashes</div>\n        <div class=\\\\\"css-0-my-normalized-layer-names-component\\\\\">Single Number</div>\n        <div class=\\\\\"css-123-my-normalized-layer-names-component\\\\\">\n          Multiple Numbers\n        </div>\n        <div class=\\\\\"name-123-my-normalized-layer-names-component\\\\\">\n          Chars with numbers at end\n        </div>\n        <div class=\\\\\"name-my-normalized-layer-names-component\\\\\">\n          Chars with numbers at start\n        </div>\n        <div class=\\\\\"name-789-my-normalized-layer-names-component\\\\\">\n          Numnbers separated by dash\n        </div>\n        <div>Emoji</div>\n        <div data-name=\\\\\"1\\\\\" class=\\\\\"div-my-normalized-layer-names-component\\\\\">\n          Number\n        </div>\n      </section>\n      <style>\n        .css-0-my-normalized-layer-names-component {\n          margin: 10px;\n        }\n        .css-123-my-normalized-layer-names-component {\n          padding: 10px;\n        }\n        .name-123-my-normalized-layer-names-component {\n          border: 1px solid;\n        }\n        .name-my-normalized-layer-names-component {\n          color: red;\n        }\n        .name-789-my-normalized-layer-names-component {\n          background: blue;\n        }\n        .div-my-normalized-layer-names-component {\n          background: blue;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\n  \\\\\"my-normalized-layer-names-component\\\\\",\n  MyNormalizedLayerNamesComponent\n);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onEvent 1`] = `\n\"/**\n * Usage:\n *\n *  <embed></embed>\n *\n */\nclass Embed extends HTMLElement {\n  get _elem() {\n    return this._root.querySelector(\\\\\"[data-ref='Embed-elem']\\\\\");\n  }\n\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo(event) {\n        console.log(\\\\\"test2\\\\\");\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-embed\\\\\" data-el=\\\\\"div-embed-1\\\\\" data-ref=\\\\\"Embed-elem\\\\\">\n        <div>Test</div>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    self._elem.dispatchEvent(new CustomEvent(\\\\\"initEditingBldr\\\\\"));\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"embed\\\\\", Embed);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onInit & onMount 1`] = `\n\"/**\n * Usage:\n *\n *  <on-init></on-init>\n *\n */\nclass OnInit extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init\\\\\", OnInit);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onInit 1`] = `\n\"type Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: \\\\\"PatrickJS\\\\\",\n};\n\n/**\n * Usage:\n *\n *  <on-init></on-init>\n *\n */\nclass OnInit extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = { name: \\\\\"\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Default name defined by parent\n        <template data-el=\\\\\"div-on-init-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      this.state.name = defaultValues.name || this.props.name;\n      this.update();\n      console.log(\\\\\"set defaults with props\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='div-on-init-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.state.name);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init\\\\\", OnInit);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onInitPlain 1`] = `\n\"/**\n * Usage:\n *\n *  <on-init-plain></on-init-plain>\n *\n */\nclass OnInitPlain extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      console.log(\\\\\"onInit\\\\\");\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-init-plain\\\\\", OnInitPlain);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onMount 1`] = `\n\"/**\n * Usage:\n *\n *  <comp></comp>\n *\n */\nclass Comp extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    console.log(\\\\\"Runs on unMount\\\\\");\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"Runs on mount\\\\\");\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"comp\\\\\", Comp);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onMountMultiple 1`] = `\n\"/**\n * Usage:\n *\n *  <comp></comp>\n *\n */\nclass Comp extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    const onMountHook_0 = () => {\n      console.log(\\\\\"Runs on mount\\\\\");\n    };\n\n    onMountHook_0();\n\n    const onMountHook_1 = () => {\n      console.log(\\\\\"Another one runs on Mount\\\\\");\n    };\n\n    onMountHook_1();\n\n    const onMountHook_2 = () => {\n      console.log(\\\\\"SSR runs on Mount\\\\\");\n    };\n\n    onMountHook_2();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"comp\\\\\", Comp);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onUpdate 1`] = `\n\"/**\n * Usage:\n *\n *  <on-update></on-update>\n *\n */\nclass OnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"Runs on every update/rerender\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update\\\\\", OnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > onUpdateWithDeps 1`] = `\n\"type Props = {\n  size: string;\n};\n\n/**\n * Usage:\n *\n *  <on-update-with-deps></on-update-with-deps>\n *\n */\nclass OnUpdateWithDeps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: \\\\\"a\\\\\", b: \\\\\"b\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"size\\\\\"];\n\n    this.updateDeps = [[this.state.a, this.state.b, this.props.size]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\n          \\\\\"Runs when a, b or size changes\\\\\",\n          self.state.a,\n          self.state.b,\n          self.props.size\n        );\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b, self.props.size]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update-with-deps\\\\\", OnUpdateWithDeps);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > preserveExportOrLocalStatement 1`] = `\n\"type Types = {\n  s: any[];\n};\ninterface IPost {\n  len: number;\n}\nexport interface MyBasicComponentProps {\n  id: string;\n}\n\nconst b = 3;\nconst foo = () => {};\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > preserveTyping 1`] = `\n\"export type A = \\\\\"test\\\\\";\nexport interface C {\n  n: \\\\\"test\\\\\";\n}\ntype B = \\\\\"test2\\\\\";\ninterface D {\n  n: \\\\\"test\\\\\";\n}\nexport interface MyBasicComponentProps {\n  name: string;\n  age?: number;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > propsDestructure 1`] = `\n\"type Props = {\n  children: any;\n  type: string;\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Decadef20\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"children\\\\\", \\\\\"type\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <slot></slot>\n        <template data-el=\\\\\"div-my-basic-component-2\\\\\"><!-- props.type --></template>\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.type);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > propsInterface 1`] = `\n\"interface Person {\n  name: string;\n  age?: number;\n}\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > propsType 1`] = `\n\"type Person = {\n  name: string;\n  age?: number;\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello! I can run in React, Vue, Solid, or Liquid!\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > referencingFunInsideHook 1`] = `\n\"/**\n * Usage:\n *\n *  <on-update></on-update>\n *\n */\nclass OnUpdate extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      foo: function foo(params) {},\n      bar: function bar() {},\n      zoo: function zoo() {\n        const params = {\n          cb: self.state.bar,\n        };\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    self.state.foo({\n      someOption: self.state.bar,\n    });\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"on-update\\\\\", OnUpdate);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > renderBlock 1`] = `\n\"export type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nimport { TARGET } from \\\\\"../../constants/target.js\\\\\";\nimport type {\n  BuilderContextInterface,\n  RegisteredComponent,\n} from \\\\\"../../context/types.js\\\\\";\nimport { evaluate } from \\\\\"../../functions/evaluate.js\\\\\";\nimport { extractTextStyles } from \\\\\"../../functions/extract-text-styles.js\\\\\";\nimport { getBlockActions } from \\\\\"../../functions/get-block-actions.js\\\\\";\nimport { getBlockComponentOptions } from \\\\\"../../functions/get-block-component-options.js\\\\\";\nimport { getBlockProperties } from \\\\\"../../functions/get-block-properties.js\\\\\";\nimport { getBlockTag } from \\\\\"../../functions/get-block-tag.js\\\\\";\nimport { getProcessedBlock } from \\\\\"../../functions/get-processed-block.js\\\\\";\nimport { getReactNativeBlockStyles } from \\\\\"../../functions/get-react-native-block-styles.js\\\\\";\nimport type { BuilderBlock } from \\\\\"../../types/builder-block.js\\\\\";\nimport type { Nullable } from \\\\\"../../types/typescript.js\\\\\";\nimport BlockStyles from \\\\\"./block-styles.js\\\\\";\nimport { isEmptyHtmlElement } from \\\\\"./render-block.helpers.js\\\\\";\nimport RenderComponentWithContext from \\\\\"./render-component-with-context.js\\\\\";\nimport type { RenderComponentProps } from \\\\\"./render-component.js\\\\\";\nimport RenderComponent from \\\\\"./render-component.js\\\\\";\nimport RenderRepeatedBlock from \\\\\"./render-repeated-block.js\\\\\";\nimport type { RepeatData } from \\\\\"./types.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-block></render-block>\n *\n */\nclass RenderBlock extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get component() {\n        const componentName = getProcessedBlock({\n          block: self.props.block,\n          state: self.props.context.state,\n          context: self.props.context.context,\n          shouldEvaluateBindings: false,\n        }).component?.name;\n\n        if (!componentName) {\n          return null;\n        }\n\n        const ref = self.props.context.registeredComponents[componentName];\n\n        if (!ref) {\n          // TODO: Public doc page with more info about this message\n          console.warn(\\`\n          Could not find a registered component named \\\\\"\\${componentName}\\\\\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?\\`);\n          return undefined;\n        } else {\n          return ref;\n        }\n      },\n      get tag() {\n        return getBlockTag(self.state.useBlock);\n      },\n      get useBlock() {\n        return self.state.repeatItemData\n          ? self.props.block\n          : getProcessedBlock({\n              block: self.props.block,\n              state: self.props.context.state,\n              context: self.props.context.context,\n              shouldEvaluateBindings: true,\n            });\n      },\n      get actions() {\n        return getBlockActions({\n          block: self.state.useBlock,\n          state: self.props.context.state,\n          context: self.props.context.context,\n        });\n      },\n      get attributes() {\n        const blockProperties = getBlockProperties(self.state.useBlock);\n        return {\n          ...blockProperties,\n          ...(TARGET === \\\\\"reactNative\\\\\"\n            ? {\n                style: getReactNativeBlockStyles({\n                  block: self.state.useBlock,\n                  context: self.props.context,\n                  blockStyles: blockProperties.style,\n                }),\n              }\n            : {}),\n        };\n      },\n      get shouldWrap() {\n        return !self.state.component?.noWrap;\n      },\n      get renderComponentProps() {\n        return {\n          blockChildren: self.state.useChildren,\n          componentRef: self.state.component?.component,\n          componentOptions: {\n            ...getBlockComponentOptions(self.state.useBlock),\n\n            /**\n             * These attributes are passed to the wrapper element when there is one. If \\`noWrap\\` is set to true, then\n             * they are provided to the component itself directly.\n             */\n            ...(self.state.shouldWrap\n              ? {}\n              : {\n                  attributes: {\n                    ...self.state.attributes,\n                    ...self.state.actions,\n                  },\n                }),\n            customBreakpoints:\n              self.state.childrenContext?.content?.meta?.breakpoints,\n          },\n          context: self.state.childrenContext,\n        };\n      },\n      get useChildren() {\n        // TO-DO: When should \\`canHaveChildren\\` dictate rendering?\n        // This is currently commented out because some Builder components (e.g. Box) do not have \\`canHaveChildren: true\\`,\n        // but still receive and need to render children.\n        // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n        return self.state.useBlock.children ?? [];\n      },\n      get childrenWithoutParentComponent() {\n        /**\n         * When there is no \\`componentRef\\`, there might still be children that need to be rendered. In this case,\n         * we render them outside of \\`componentRef\\`.\n         * NOTE: We make sure not to render this if \\`repeatItemData\\` is non-null, because that means we are rendering an array of\n         * blocks, and the children will be repeated within those blocks.\n         */\n        const shouldRenderChildrenOutsideRef =\n          !self.state.component?.component && !self.state.repeatItemData;\n        return shouldRenderChildrenOutsideRef ? self.state.useChildren : [];\n      },\n      get repeatItemData() {\n        /**\n         * we don't use \\`state.useBlock\\` here because the processing done within its logic includes evaluating the block's bindings,\n         * which will not work if there is a repeat.\n         */\n        const { repeat, ...blockWithoutRepeat } = self.props.block;\n\n        if (!repeat?.collection) {\n          return undefined;\n        }\n\n        const itemsArray = evaluate({\n          code: repeat.collection,\n          state: self.props.context.state,\n          context: self.props.context.context,\n        });\n\n        if (!Array.isArray(itemsArray)) {\n          return undefined;\n        }\n\n        const collectionName = repeat.collection.split(\\\\\".\\\\\").pop();\n        const itemNameToUse =\n          repeat.itemName ||\n          (collectionName ? collectionName + \\\\\"Item\\\\\" : \\\\\"item\\\\\");\n        const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n          context: {\n            ...self.props.context,\n            state: {\n              ...self.props.context.state,\n              $index: index,\n              $item: item,\n              [itemNameToUse]: item,\n              [\\`$\\${itemNameToUse}Index\\`]: index,\n            },\n          },\n          block: blockWithoutRepeat,\n        }));\n        return repeatArray;\n      },\n      get inheritedTextStyles() {\n        if (TARGET !== \\\\\"reactNative\\\\\") {\n          return {};\n        }\n\n        const styles = getReactNativeBlockStyles({\n          block: self.state.useBlock,\n          context: self.props.context,\n          blockStyles: self.state.attributes.style,\n        });\n        return extractTextStyles(styles);\n      },\n      get childrenContext() {\n        return {\n          apiKey: self.props.context.apiKey,\n          state: self.props.context.state,\n          content: self.props.context.content,\n          context: self.props.context.context,\n          registeredComponents: self.props.context.registeredComponents,\n          inheritedStyles: self.state.inheritedTextStyles,\n        };\n      },\n      get renderComponentTag() {\n        if (TARGET === \\\\\"reactNative\\\\\") {\n          return RenderComponentWithContext;\n        } else if (TARGET === \\\\\"vue3\\\\\") {\n          // vue3 expects a string for the component tag\n          return \\\\\"RenderComponent\\\\\";\n        } else {\n          return RenderComponent;\n        }\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"block\\\\\", \\\\\"context\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-render-block\\\\\">\n        <template data-el=\\\\\"show-render-block-2\\\\\">\n          <state.tag data-el=\\\\\"state-tag-render-block\\\\\"></state.tag>\n        </template>\n        <template data-el=\\\\\"show-render-block-3\\\\\">\n          <template data-el=\\\\\"for-render-block\\\\\">\n            <render-repeated-block\n              data-el=\\\\\"render-repeated-block-render-block\\\\\"\n            ></render-repeated-block>\n          </template>\n        </template>\n        <template data-el=\\\\\"show-render-block-4\\\\\">\n          <state.tag data-el=\\\\\"state-tag-render-block-2\\\\\">\n            <state.renderComponentTag\n              data-el=\\\\\"state-render-component-tag-render-block\\\\\"\n            ></state.renderComponentTag>\n      \n            <template data-el=\\\\\"for-render-block-2\\\\\">\n              <RenderBlock data-el=\\\\\"render-block-render-block\\\\\"></RenderBlock>\n            </template>\n      \n            <template data-el=\\\\\"for-render-block-3\\\\\">\n              <block-styles data-el=\\\\\"block-styles-render-block\\\\\"></block-styles>\n            </template>\n          </state.tag>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.shouldWrap;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = isEmptyHtmlElement(this.state.tag);\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(this.state.tag) && this.state.repeatItemData;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block']\\\\\")\n      .forEach((el) => {\n        let array = this.state.repeatItemData;\n        this.renderLoop(el, array, \\\\\"data\\\\\", \\\\\"index\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-repeated-block-render-block']\\\\\")\n      .forEach((el) => {\n        const index = this.getScope(el, \\\\\"index\\\\\");\n        const data = this.getScope(el, \\\\\"data\\\\\");\n        el.key = index;\n\n        if (el.props) {\n          el.props.key = index;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.key = index;\n        }\n\n        el.setAttribute(\\\\\"repeatContext\\\\\", data.context);\n        el.repeatContext = data.context;\n\n        if (el.props) {\n          el.props.repeatContext = data.context;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.repeatContext = data.context;\n        }\n\n        el.setAttribute(\\\\\"block\\\\\", data.block);\n        el.block = data.block;\n\n        if (el.props) {\n          el.props.block = data.block;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.block = data.block;\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-block-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition =\n          !isEmptyHtmlElement(this.state.tag) && !this.state.repeatItemData;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block-2']\\\\\")\n      .forEach((el) => {\n        let array = this.state.childrenWithoutParentComponent;\n        this.renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-block-render-block']\\\\\")\n      .forEach((el) => {\n        const child = this.getScope(el, \\\\\"child\\\\\");\n        el.key = \\\\\"render-block-\\\\\" + child.id;\n        el.setAttribute(\\\\\"block\\\\\", child);\n        el.setAttribute(\\\\\"context\\\\\", this.state.childrenContext);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-render-block-3']\\\\\")\n      .forEach((el) => {\n        let array = this.state.childrenWithoutParentComponent;\n        this.renderLoop(el, array, \\\\\"child\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='block-styles-render-block']\\\\\")\n      .forEach((el) => {\n        const child = this.getScope(el, \\\\\"child\\\\\");\n        el.key = \\\\\"block-style-\\\\\" + child.id;\n\n        if (el.props) {\n          el.props.key = \\\\\"block-style-\\\\\" + child.id;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.key = \\\\\"block-style-\\\\\" + child.id;\n        }\n\n        el.setAttribute(\\\\\"block\\\\\", child);\n        el.block = child;\n\n        if (el.props) {\n          el.props.block = child;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.block = child;\n        }\n\n        el.setAttribute(\\\\\"context\\\\\", this.state.childrenContext);\n        el.context = this.state.childrenContext;\n\n        if (el.props) {\n          el.props.context = this.state.childrenContext;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.context = this.state.childrenContext;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"render-block\\\\\", RenderBlock);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > renderContentExample 1`] = `\n\"type Props = {\n  customComponents: string[];\n  content: {\n    blocks: any[];\n    id: string;\n  };\n};\n\nimport BuilderContext from \\\\\"@dummy/context.js\\\\\";\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from \\\\\"@dummy/injection-js\\\\\";\nimport RenderBlocks from \\\\\"@dummy/RenderBlocks.js\\\\\";\n\n/**\n * Usage:\n *\n *  <render-content></render-content>\n *\n */\nclass RenderContent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"customComponents\\\\\", \\\\\"content\\\\\"];\n\n    this.updateDeps = [[this.props.content]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on div-render-content-1\n    this.onDivRenderContent1Click = (event) => {\n      trackClick(this.props.content.id);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"div-render-content\\\\\" data-el=\\\\\"div-render-content-1\\\\\">\n        <render-blocks data-el=\\\\\"render-blocks-render-content\\\\\"></render-blocks>\n      </div>\n      <style>\n        .div-render-content {\n          display: flex;\n          flex-direction: columns;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    sendComponentsToVisualEditor(this.props.customComponents);\n  }\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        dispatchNewContentToVisualEditor(self.props.content);\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.props.content]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-render-content-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onDivRenderContent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onDivRenderContent1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='render-blocks-render-content']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"blocks\\\\\", this.props.content.blocks);\n        el.blocks = this.props.content.blocks;\n\n        if (el.props) {\n          el.props.blocks = this.props.content.blocks;\n\n          if (el.update) {\n            el.update();\n          }\n        } else {\n          el.props = {};\n          el.props.blocks = this.props.content.blocks;\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-content\\\\\", RenderContent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > rootFragmentMultiNode 1`] = `\n\"export interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\n/**\n * Usage:\n *\n *  <button></button>\n *\n */\nclass Button extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"link\\\\\", \\\\\"attributes\\\\\", \\\\\"openLinkInNewTab\\\\\", \\\\\"text\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-button\\\\\">\n        <a data-el=\\\\\"a-button-1\\\\\">\n          <template data-el=\\\\\"div-button-1\\\\\"><!-- props.text --></template>\n        </a>\n      </template>\n      <template data-el=\\\\\"show-button-2\\\\\">\n        <button type=\\\\\"button\\\\\" data-el=\\\\\"button-button-1\\\\\">\n          <template data-el=\\\\\"div-button-2\\\\\"><!-- props.text --></template>\n        </button>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root.querySelectorAll(\\\\\"[data-el='show-button']\\\\\").forEach((el) => {\n      const whenCondition = this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='a-button-1']\\\\\").forEach((el) => {\n      el.setAttribute(\\\\\"href\\\\\", this.props.link);\n      el.setAttribute(\n        \\\\\"target\\\\\",\n        this.props.openLinkInNewTab ? \\\\\"_blank\\\\\" : undefined\n      );\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-1']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='show-button-2']\\\\\").forEach((el) => {\n      const whenCondition = !this.props.link;\n\n      if (whenCondition) {\n        this.showContent(el);\n      }\n    });\n\n    this._root.querySelectorAll(\\\\\"[data-el='div-button-2']\\\\\").forEach((el) => {\n      this.renderTextNode(el, this.props.text);\n    });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"button\\\\\", Button);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > rootShow 1`] = `\n\"export interface RenderStylesProps {\n  foo: string;\n}\n\n/**\n * Usage:\n *\n *  <render-styles></render-styles>\n *\n */\nclass RenderStyles extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-render-styles\\\\\"><div>Bar</div></template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-render-styles']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.foo === \\\\\"bar\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"render-styles\\\\\", RenderStyles);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > self-referencing component 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- props.name --></template>\n        <template data-el=\\\\\"show-my-component\\\\\">\n          <MyComponent name=\\\\\"Bruce Wayne\\\\\"></MyComponent>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.name === \\\\\"Batman\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > self-referencing component with children 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\", \\\\\"children\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- props.name --></template>\n        <slot></slot>\n        <template data-el=\\\\\"show-my-component\\\\\">\n          <MyComponent name=\\\\\"Bruce\\\\\"><div>Wayne</div></MyComponent>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.name === \\\\\"Batman\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > setState 1`] = `\n\"/**\n * Usage:\n *\n *  <set-state></set-state>\n *\n */\nclass SetState extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      n: [\\\\\"123\\\\\"],\n      someFn() {\n        self.state.n[0] = \\\\\"123\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-set-state-1\n    this.onButtonSetState1Click = (event) => {\n      this.state.someFn();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div><button data-el=\\\\\"button-set-state-1\\\\\">Click me</button></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-set-state-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonSetState1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonSetState1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"set-state\\\\\", SetState);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > showExpressions 1`] = `\n\"interface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\n/**\n * Usage:\n *\n *  <show-with-other-values></show-with-other-values>\n *\n */\nclass ShowWithOtherValues extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"conditionB\\\\\", \\\\\"conditionC\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-show-with-other-values\\\\\">Content0</template>\n        <template data-el=\\\\\"show-show-with-other-values-2\\\\\">ContentA</template>\n        <template data-el=\\\\\"show-show-with-other-values-3\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-4\\\\\">ContentB</template>\n        <template data-el=\\\\\"show-show-with-other-values-5\\\\\">\n          <template data-el=\\\\\"div-show-with-other-values-1\\\\\">\n            <!-- undefined -->\n          </template>\n        </template>\n        <template data-el=\\\\\"show-show-with-other-values-6\\\\\">ContentC</template>\n        <template data-el=\\\\\"show-show-with-other-values-7\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-8\\\\\">ContentD</template>\n        <template data-el=\\\\\"show-show-with-other-values-9\\\\\"></template>\n        <template data-el=\\\\\"show-show-with-other-values-10\\\\\">ContentE</template>\n        <template data-el=\\\\\"show-show-with-other-values-11\\\\\">hello</template>\n        <template data-el=\\\\\"show-show-with-other-values-12\\\\\">ContentF</template>\n        <template data-el=\\\\\"show-show-with-other-values-13\\\\\">123</template>\n        <template data-el=\\\\\"show-show-with-other-values-14\\\\\">4mb</template>\n        <template data-el=\\\\\"show-show-with-other-values-15\\\\\">\n          <template data-el=\\\\\"show-show-with-other-values-16\\\\\">20mb</template>\n        </template>\n        <template data-el=\\\\\"show-show-with-other-values-17\\\\\">\n          <template data-el=\\\\\"show-show-with-other-values-18\\\\\">\n            <div>complete</div>\n          </template>\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-5']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-show-with-other-values-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, undefined);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-6']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-7']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-8']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-9']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-10']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-11']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-12']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-13']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-14']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-15']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-16']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionB === \\\\\"Complete\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-17']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA === \\\\\"Default\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-18']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionB === \\\\\"Complete\\\\\";\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-with-other-values\\\\\", ShowWithOtherValues);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > showWithFor 1`] = `\n\"interface Props {\n  conditionA: boolean;\n  items: string[];\n}\n\n/**\n * Usage:\n *\n *  <nested-show></nested-show>\n *\n */\nclass NestedShow extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\", \\\\\"items\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-nested-show\\\\\">\n        <template data-el=\\\\\"for-nested-show\\\\\">\n          <div data-el=\\\\\"div-nested-show-1\\\\\">\n            <template data-el=\\\\\"div-nested-show-2\\\\\"><!-- item --></template>\n          </div>\n        </template>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-nested-show']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root.querySelectorAll(\\\\\"[data-el='for-nested-show']\\\\\").forEach((el) => {\n      let array = this.props.items;\n      this.renderLoop(el, array, \\\\\"item\\\\\", \\\\\"idx\\\\\");\n    });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-show-1']\\\\\")\n      .forEach((el) => {\n        const idx = this.getScope(el, \\\\\"idx\\\\\");\n        el.key = idx;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-nested-show-2']\\\\\")\n      .forEach((el) => {\n        const item = this.getScope(el, \\\\\"item\\\\\");\n        this.renderTextNode(el, item);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"nested-show\\\\\", NestedShow);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > showWithOtherValues 1`] = `\n\"interface Props {\n  conditionA: boolean;\n}\n\n/**\n * Usage:\n *\n *  <show-with-other-values></show-with-other-values>\n *\n */\nclass ShowWithOtherValues extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"show-show-with-other-values\\\\\">ContentA</template>\n        <template data-el=\\\\\"show-show-with-other-values-2\\\\\">ContentB</template>\n        <template data-el=\\\\\"show-show-with-other-values-3\\\\\">ContentC</template>\n        <template data-el=\\\\\"show-show-with-other-values-4\\\\\">ContentD</template>\n        <template data-el=\\\\\"show-show-with-other-values-5\\\\\">ContentE</template>\n        <template data-el=\\\\\"show-show-with-other-values-6\\\\\">ContentF</template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-2']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-3']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-4']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-5']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-with-other-values-6']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-with-other-values\\\\\", ShowWithOtherValues);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > showWithRootText 1`] = `\n\"interface Props {\n  conditionA: boolean;\n}\n\n/**\n * Usage:\n *\n *  <show-root-text></show-root-text>\n *\n */\nclass ShowRootText extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"conditionA\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-show-root-text\\\\\">ContentA</template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-show-root-text']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.props.conditionA;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"show-root-text\\\\\", ShowRootText);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > signalsOnUpdate 1`] = `\n\"type Props = {\n  id: string;\n  foo: {\n    bar: {\n      baz: number;\n    };\n  };\n};\n\n/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"id\\\\\", \\\\\"foo\\\\\"];\n\n    this.updateDeps = [[this.props.id, this.props.foo.bar.baz]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div class=\\\\\"test div-my-basic-component\\\\\">\n        <template data-el=\\\\\"div-my-basic-component-1\\\\\"><!-- props.id --></template>\n        <template data-el=\\\\\"div-my-basic-component-2\\\\\">\n          <!-- props.foo.bar.baz -->\n        </template>\n      </div>\n      <style>\n        .div-my-basic-component {\n          padding: 10px;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        console.log(\\\\\"props.id changed\\\\\", self.props.id);\n        console.log(\\\\\"props.foo.value.bar.baz changed\\\\\", self.props.foo.bar.baz);\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.props.id, self.props.foo.bar.baz]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.id);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-basic-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.foo.bar.baz);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > spreadAttrs 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > spreadNestedProps 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"nested\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > spreadProps 1`] = `\n\"/**\n * Usage:\n *\n *  <my-basic-component></my-basic-component>\n *\n */\nclass MyBasicComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-basic-component-1\\\\\"\n        data-dom-state=\\\\\"MyBasicComponent-input-my-basic-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-component\\\\\", MyBasicComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > store-async-function 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      arrowFunction: async function arrowFunction() {\n        return Promise.resolve();\n      },\n      namedFunction: async function namedFunction() {\n        return Promise.resolve();\n      },\n      fetchUsers: async function fetchUsers() {\n        return Promise.resolve();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > string-literal-store 1`] = `\n\"/**\n * Usage:\n *\n *  <string-literal-store></string-literal-store>\n *\n */\nclass StringLiteralStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { foo: 123 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-string-literal-store-1\\\\\"><!-- state.foo --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-string-literal-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"string-literal-store\\\\\", StringLiteralStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > styleClassAndCss 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div class=\\\\\"builder-column div-my-component\\\\\" data-el=\\\\\"div-my-component-1\\\\\"></div>\n      <style>\n        .div-my-component {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, {\n          width: \\\\\"100%\\\\\",\n        });\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > stylePropClassAndCss 1`] = `\n\"/**\n * Usage:\n *\n *  <style-prop-class-and-css></style-prop-class-and-css>\n *\n */\nclass StylePropClassAndCss extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"attributes\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-style-prop-class-and-css-1\\\\\"></div>\n      <style>\n        .div-style-prop-class-and-css {\n          display: flex;\n          flex-direction: column;\n          align-items: stretch;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-style-prop-class-and-css-1']\\\\\")\n      .forEach((el) => {\n        Object.assign(el.style, this.props.attributes.style);\n        el.className =\n          this.props.attributes.class + \\\\\" div-style-prop-class-and-css\\\\\";\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"style-prop-class-and-css\\\\\", StylePropClassAndCss);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > subComponent 1`] = `\n\"import Foo from \\\\\"./foo-sub-component.js\\\\\";\n\n/**\n * Usage:\n *\n *  <sub-component></sub-component>\n *\n */\nclass SubComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <foo></foo>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"sub-component\\\\\", SubComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > svgComponent 1`] = `\n\"/**\n * Usage:\n *\n *  <svg-component></svg-component>\n *\n */\nclass SvgComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <svg fill=\\\\\"none\\\\\" role=\\\\\"img\\\\\" data-el=\\\\\"svg-svg-component-1\\\\\">\n        <defs>\n          <filter id=\\\\\"prefix__filter0_f\\\\\" filterUnits=\\\\\"userSpaceOnUse\\\\\">\n            <feFlood result=\\\\\"BackgroundImageFix\\\\\"></feFlood>\n            <feBlend\n              in=\\\\\"SourceGraphic\\\\\"\n              in2=\\\\\"BackgroundImageFix\\\\\"\n              result=\\\\\"shape\\\\\"\n            ></feBlend>\n            <feGaussianBlur\n              result=\\\\\"effect1_foregroundBlur\\\\\"\n              data-el=\\\\\"fe-gaussian-blur-svg-component\\\\\"\n            ></feGaussianBlur>\n          </filter>\n        </defs>\n      </svg>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='svg-svg-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"viewBox\\\\\", \\\\\"0 0 \\\\\" + 42 + \\\\\" \\\\\" + 42);\n        el.setAttribute(\\\\\"width\\\\\", 42);\n        el.setAttribute(\\\\\"height\\\\\", 42);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='fe-gaussian-blur-svg-component']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"stdDeviation\\\\\", 7);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"svg-component\\\\\", SvgComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > typeDependency 1`] = `\n\"export type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nimport type { Foo } from \\\\\"./foo-type\\\\\";\nimport type { Foo as Foo2 } from \\\\\"./type-export.js\\\\\";\n\n/**\n * Usage:\n *\n *  <type-dependency></type-dependency>\n *\n */\nclass TypeDependency extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"foo\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-type-dependency-1\\\\\"><!-- props.foo --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-dependency-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.foo);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-dependency\\\\\", TypeDependency);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > typeExternalProps 1`] = `\n\"import { FooProps } from \\\\\"./foo-props\\\\\";\n\n/**\n * Usage:\n *\n *  <type-external-props></type-external-props>\n *\n */\nclass TypeExternalProps extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"name\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-external-props-1\\\\\"><!-- props.name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-external-props-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.props.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-external-props\\\\\", TypeExternalProps);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > typeExternalStore 1`] = `\n\"import { FooStore } from \\\\\"./foo-store\\\\\";\n\n/**\n * Usage:\n *\n *  <type-external-store></type-external-store>\n *\n */\nclass TypeExternalStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { _name: \\\\\"test\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-external-store-1\\\\\"><!-- state._name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-external-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state._name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-external-store\\\\\", TypeExternalStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > typeGetterStore 1`] = `\n\"type GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\n/**\n * Usage:\n *\n *  <type-getter-store></type-getter-store>\n *\n */\nclass TypeGetterStore extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"test\\\\\",\n      getName() {\n        if (self.state.name === \\\\\"a\\\\\") {\n          return \\\\\"b\\\\\";\n        }\n\n        return self.state.name;\n      },\n      get test() {\n        return \\\\\"test\\\\\";\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        Hello\n        <template data-el=\\\\\"div-type-getter-store-1\\\\\"><!-- state.name --></template>\n        !\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-type-getter-store-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"type-getter-store\\\\\", TypeGetterStore);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > use-style 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > use-style-and-css 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\" class=\\\\\"button-my-component\\\\\">Button</button>\n      <style>\n        button {\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      \n        .button-my-component {\n          background: blue;\n          color: white;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > use-style-outside-component 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <button type=\\\\\"button\\\\\">Button</button>\n      <style>\n        button {\n          background: blue;\n          color: white;\n          font-size: 12px;\n          outline: 1px solid black;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > useTarget 1`] = `\n\"/**\n * Usage:\n *\n *  <use-target-component></use-target-component>\n *\n */\nclass UseTargetComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      get name() {\n        const prefix = \\\\\"c\\\\\";\n        return prefix + \\\\\"foo\\\\\";\n      },\n      lastName: \\\\\"bar\\\\\",\n      foo: \\\\\"bar\\\\\",\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-use-target-component-1\\\\\"><!-- state.name --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(this.state.foo);\n    this.state.foo = \\\\\"bar\\\\\";\n    this.update();\n  }\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-use-target-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.name);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"use-target-component\\\\\", UseTargetComponent);\n\"\n`;\n\nexports[`webcomponent > jsx > Typescript Test > webComponent 1`] = `\n\"import { register } from \\\\\"swiper/element/bundle\\\\\";\n\n/**\n * Usage:\n *\n *  <my-basic-web-component></my-basic-web-component>\n *\n */\nclass MyBasicWebComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.onInitOnce = false;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <swiper-container slides-per-view=\\\\\"3\\\\\" navigation=\\\\\"true\\\\\" pagination=\\\\\"true\\\\\">\n        <swiper-slide>Slide 1</swiper-slide>\n        <swiper-slide>Slide 2</swiper-slide>\n        <swiper-slide>Slide 3</swiper-slide>\n      </swiper-container>\\`;\n    this.pendingUpdate = true;\n    this.onInit();\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onInit() {\n    if (!this.onInitOnce) {\n      register();\n      this.onInitOnce = true;\n    }\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-basic-web-component\\\\\", MyBasicWebComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > basic 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Steve\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.value = this.state.name;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > bindGroup 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-2\n    this.onInputMyComponent2Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-3\n    this.onInputMyComponent3Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-4\n    this.onInputMyComponent4Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-5\n    this.onInputMyComponent5Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-6\n    this.onInputMyComponent6Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-7\n    this.onInputMyComponent7Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          data-el=\\\\\"input-my-component-2\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-2\\\\\"\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          data-el=\\\\\"input-my-component-3\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-3\\\\\"\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          data-el=\\\\\"input-my-component-4\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-4\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          data-el=\\\\\"input-my-component-5\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-5\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          data-el=\\\\\"input-my-component-6\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-6\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          data-el=\\\\\"input-my-component-7\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-7\\\\\"\n        />\n        <p>\n          Tortilla:\n          <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.tortilla --></template>\n        </p>\n        <p>\n          Fillings:\n          <template data-el=\\\\\"div-my-component-2\\\\\"><!-- state.fillings --></template>\n        </p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Plain\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Whole wheat\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-3']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Spinach\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent3Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent3Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-4']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Rice\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent4Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent4Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-5']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Beans\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent5Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent5Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-6']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Cheese\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent6Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent6Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-7']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Guac (extra)\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent7Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent7Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.tortilla);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.fillings);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > bindProperty 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { value: \\\\\"hello\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.value;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > classDirective 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { focus: true };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"disabled\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = \\`form-input \\${this.props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          this.state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > context 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n    this.context = state.activeTab;\n\n    this.state = { activeTab: 0 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.disabled = this.getContext(this._root, \\\\\"disabled\\\\\");\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.activeTab --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.activeTab);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > each 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <ul>\n        <template data-el=\\\\\"for-my-component\\\\\">\n          <li>\n            <template data-el=\\\\\"div-my-component-1\\\\\"><!-- num --></template>\n          </li>\n        </template>\n      </ul>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.numbers;\n        this.renderLoop(el, array, \\\\\"num\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        const num = this.getScope(el, \\\\\"num\\\\\");\n        this.renderTextNode(el, num);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > eventHandlers 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-component-1\n    this.onButtonMyComponent1Click = (a) => {\n      this.state.log(\\\\\"hi\\\\\");\n    };\n\n    // Event handler for 'click' event on button-my-component-2\n    this.onButtonMyComponent2Click = (event) => {\n      this.state.log(event);\n    };\n\n    // Event handler for 'click' event on button-my-component-3\n    this.onButtonMyComponent3Click = (event) => {\n      this.state.log(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button data-el=\\\\\"button-my-component-1\\\\\">Log</button>\n        <button data-el=\\\\\"button-my-component-2\\\\\">Log</button>\n        <button data-el=\\\\\"button-my-component-3\\\\\">Log</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent2Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent2Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-3']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent3Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent3Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > html 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { html: \\\\\"<b>bold</b>\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-component-1\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.innerHTML = this.state.html;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > ifElse 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      show: true,\n      toggle: function toggle() {\n        self.state.show = !self.state.show;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-component-1\n    this.onButtonMyComponent1Click = (event) => {\n      this.state.toggle(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-my-component\\\\\">\n        <button data-el=\\\\\"button-my-component-1\\\\\">Hide</button>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.show;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { disabled: false };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button type=\\\\\"button\\\\\" data-el=\\\\\"button-my-component\\\\\"><slot></slot></button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"disabled\\\\\", this.state.disabled);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > lifecycleHooks 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    console.log(\\\\\"onDestroy\\\\\");\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > reactive 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      get lowercaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n      \n        Lowercase:\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.lowercaseName --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowercaseName);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > reactiveWithFn 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        self.state.result = a_ * b_;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.a, this.state.b]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.a = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-2\n    this.onInputMyComponent2Change = (event) => {\n      this.state.b = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          data-el=\\\\\"input-my-component-2\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-2\\\\\"\n        />\n      \n        Result:\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.result --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        self.state.calculateResult(self.state.a, self.state.b);\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.value = this.state.a;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.value = this.state.b;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.result);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > slots 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot>default</slot>\n        <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > style 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input class=\\\\\"form-input\\\\\" data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\" />\n      <style>\n        input {\n          color: red;\n          font-size: 12px;\n        }\n      \n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Javascript Test > textExpressions 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: 5, b: 12 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        normal:\n      \n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.a + state.b --></template>\n        <br />\n      \n        conditional\n      \n        <template data-el=\\\\\"div-my-component-2\\\\\">\n          <!-- state.a > 2 ? 'hello' : 'bye' -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.a + this.state.b);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\");\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > basic 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { name: \\\\\"Steve\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.name = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n      \n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.value = this.state.name;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > bindGroup 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { tortilla: \\\\\"Plain\\\\\", fillings: [] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-2\n    this.onInputMyComponent2Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-3\n    this.onInputMyComponent3Change = (event) => {\n      this.state.tortilla = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-4\n    this.onInputMyComponent4Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-5\n    this.onInputMyComponent5Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-6\n    this.onInputMyComponent6Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-7\n    this.onInputMyComponent7Change = (event) => {\n      this.state.fillings = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Plain\\\\\"\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Whole wheat\\\\\"\n          data-el=\\\\\"input-my-component-2\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-2\\\\\"\n        />\n        <input\n          type=\\\\\"radio\\\\\"\n          value=\\\\\"Spinach\\\\\"\n          data-el=\\\\\"input-my-component-3\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-3\\\\\"\n        />\n        <br />\n        <br />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Rice\\\\\"\n          data-el=\\\\\"input-my-component-4\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-4\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Beans\\\\\"\n          data-el=\\\\\"input-my-component-5\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-5\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Cheese\\\\\"\n          data-el=\\\\\"input-my-component-6\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-6\\\\\"\n        />\n        <input\n          type=\\\\\"checkbox\\\\\"\n          value=\\\\\"Guac (extra)\\\\\"\n          data-el=\\\\\"input-my-component-7\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-7\\\\\"\n        />\n        <p>\n          Tortilla:\n          <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.tortilla --></template>\n        </p>\n        <p>\n          Fillings:\n          <template data-el=\\\\\"div-my-component-2\\\\\"><!-- state.fillings --></template>\n        </p>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Plain\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Whole wheat\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-3']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.tortilla === \\\\\"Spinach\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent3Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent3Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-4']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Rice\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent4Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent4Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-5']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Beans\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent5Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent5Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-6']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Cheese\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent6Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent6Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-7']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"checked\\\\\", this.state.fillings === \\\\\"Guac (extra)\\\\\");\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent7Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent7Change);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.tortilla);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.fillings);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > bindProperty 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { value: \\\\\"hello\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.value;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > classDirective 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { focus: true };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.componentProps = [\\\\\"disabled\\\\\"];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.getAttributeNames().forEach((attr) => {\n      const jsVar = attr.replace(/-/g, \\\\\"\\\\\");\n      const regexp = new RegExp(jsVar, \\\\\"i\\\\\");\n      this.componentProps.forEach((prop) => {\n        if (regexp.test(prop)) {\n          const attrValue = this.getAttribute(attr);\n          if (this.props[prop] !== attrValue) {\n            this.props[prop] = attrValue;\n          }\n        }\n      });\n    });\n\n    this._root.innerHTML = \\`\n      <input\n        data-el=\\\\\"input-my-component-1\\\\\"\n        data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n      />\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.className = \\`form-input \\${this.props.disabled ? \\\\\"disabled\\\\\" : \\\\\"\\\\\"} \\${\n          this.state.focus ? \\\\\"focus\\\\\" : \\\\\"\\\\\"\n        }\\`;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > context 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n    this.context = state.activeTab;\n\n    this.state = { activeTab: 0 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this.disabled = this.getContext(this._root, \\\\\"disabled\\\\\");\n\n    this._root.innerHTML = \\`\n      <div>\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.activeTab --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.activeTab);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // get Context Helper\n  getContext(el, token) {\n    do {\n      let value;\n      if (el?.context?.get) {\n        value = el.context.get(token);\n      } else if (el?.context?.[token]) {\n        value = el.context[token];\n      }\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > each 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { numbers: [\\\\\"one\\\\\", \\\\\"two\\\\\", \\\\\"three\\\\\"] };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <ul>\n        <template data-el=\\\\\"for-my-component\\\\\">\n          <li>\n            <template data-el=\\\\\"div-my-component-1\\\\\"><!-- num --></template>\n          </li>\n        </template>\n      </ul>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='for-my-component']\\\\\")\n      .forEach((el) => {\n        let array = this.state.numbers;\n        this.renderLoop(el, array, \\\\\"num\\\\\");\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        const num = this.getScope(el, \\\\\"num\\\\\");\n        this.renderTextNode(el, num);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n\n  // scope helper\n  getScope(el, name) {\n    do {\n      let value = el?.scope?.[name];\n      if (value !== undefined) {\n        return value;\n      }\n    } while ((el = el.parentNode));\n  }\n\n  // Helper to render loops\n  renderLoop(template, array, itemName, itemIndex, collectionName) {\n    const collection = [];\n    for (let [index, value] of array.entries()) {\n      const elementFragment = template.content.cloneNode(true);\n      const children = Array.from(elementFragment.childNodes);\n      const localScope = {};\n      let scope = localScope;\n      if (template?.scope) {\n        const getParent = {\n          get(target, prop, receiver) {\n            if (prop in target) {\n              return target[prop];\n            }\n            if (prop in template.scope) {\n              return template.scope[prop];\n            }\n            return target[prop];\n          },\n        };\n        scope = new Proxy(localScope, getParent);\n      }\n      children.forEach((child) => {\n        if (itemName !== undefined) {\n          scope[itemName] = value;\n        }\n        if (itemIndex !== undefined) {\n          scope[itemIndex] = index;\n        }\n        if (collectionName !== undefined) {\n          scope[collectionName] = array;\n        }\n        child.scope = scope;\n        if (template.context) {\n          child.context = context;\n        }\n        this.nodesToDestroy.push(child);\n        collection.unshift(child);\n      });\n    }\n    collection.forEach((child) => template.after(child));\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > eventHandlers 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      log: function log(msg = \\\\\"hello\\\\\") {\n        console.log(msg);\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-component-1\n    this.onButtonMyComponent1Click = (a) => {\n      this.state.log(\\\\\"hi\\\\\");\n    };\n\n    // Event handler for 'click' event on button-my-component-2\n    this.onButtonMyComponent2Click = (event) => {\n      this.state.log(event);\n    };\n\n    // Event handler for 'click' event on button-my-component-3\n    this.onButtonMyComponent3Click = (event) => {\n      this.state.log(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button data-el=\\\\\"button-my-component-1\\\\\">Log</button>\n        <button data-el=\\\\\"button-my-component-2\\\\\">Log</button>\n        <button data-el=\\\\\"button-my-component-3\\\\\">Log</button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent2Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent2Click);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-3']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent3Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent3Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > html 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { html: \\\\\"<b>bold</b>\\\\\" };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div data-el=\\\\\"div-my-component-1\\\\\"></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.innerHTML = this.state.html;\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > ifElse 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      show: true,\n      toggle: function toggle() {\n        self.state.show = !self.state.show;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'click' event on button-my-component-1\n    this.onButtonMyComponent1Click = (event) => {\n      this.state.toggle(event);\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <template data-el=\\\\\"show-my-component\\\\\">\n        <button data-el=\\\\\"button-my-component-1\\\\\">Hide</button>\n      </template>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  showContent(el) {\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n    // grabs the content of a node that is between <template> tags\n    // iterates through child nodes to register all content including text elements\n    // attaches the content after the template\n\n    const elementFragment = el.content.cloneNode(true);\n    const children = Array.from(elementFragment.childNodes);\n    children.forEach((child) => {\n      if (el?.scope) {\n        child.scope = el.scope;\n      }\n      if (el?.context) {\n        child.context = el.context;\n      }\n      this.nodesToDestroy.push(child);\n    });\n    el.after(elementFragment);\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='show-my-component']\\\\\")\n      .forEach((el) => {\n        const whenCondition = this.state.show;\n\n        if (whenCondition) {\n          this.showContent(el);\n        }\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n        el.addEventListener(\\\\\"click\\\\\", this.onButtonMyComponent1Click);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > imports 1`] = `\n\"import Button from \\\\\"./Button.js\\\\\";\n\n/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { disabled: false };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <button type=\\\\\"button\\\\\" data-el=\\\\\"button-my-component\\\\\"><slot></slot></button>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='button-my-component']\\\\\")\n      .forEach((el) => {\n        el.setAttribute(\\\\\"disabled\\\\\", this.state.disabled);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > lifecycleHooks 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  disconnectedCallback() {\n    // onUnMount\n    console.log(\\\\\"onDestroy\\\\\");\n    this.destroyAnyNodes(); // clean up nodes when component is destroyed\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div></div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {\n    // onMount\n    console.log(\\\\\"onMount\\\\\");\n  }\n\n  onUpdate() {\n    const self = this;\n\n    console.log(\\\\\"onAfterUpdate\\\\\");\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > reactive 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      name: \\\\\"Steve\\\\\",\n      get lowercaseName() {\n        return self.state.name.toLowerCase();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n      \n        Lowercase:\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.lowercaseName --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.value = this.state.name;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.lowercaseName);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > reactiveWithFn 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {\n      a: 2,\n      b: 5,\n      result: null,\n      calculateResult: function calculateResult(a_, b_) {\n        self.state.result = a_ * b_;\n        self.update();\n      },\n    };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    this.updateDeps = [[this.state.a, this.state.b]];\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    // Event handler for 'change' event on input-my-component-1\n    this.onInputMyComponent1Change = (event) => {\n      this.state.a = event.target.value;\n      this.update();\n    };\n\n    // Event handler for 'change' event on input-my-component-2\n    this.onInputMyComponent2Change = (event) => {\n      this.state.b = event.target.value;\n      this.update();\n    };\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <input\n          type=\\\\\"number\\\\\"\n          data-el=\\\\\"input-my-component-1\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\"\n        />\n        <input\n          type=\\\\\"number\\\\\"\n          data-el=\\\\\"input-my-component-2\\\\\"\n          data-dom-state=\\\\\"MyComponent-input-my-component-2\\\\\"\n        />\n      \n        Result:\n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.result --></template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {\n    const self = this;\n\n    (function (__prev, __next) {\n      const __hasChange = __prev.find((val, index) => val !== __next[index]);\n      if (__hasChange !== undefined) {\n        self.state.calculateResult(self.state.a, self.state.b);\n        self.updateDeps[0] = __next;\n      }\n    })(self.updateDeps[0], [self.state.a, self.state.b]);\n  }\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-1']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent1Change);\n        el.value = this.state.a;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='input-my-component-2']\\\\\")\n      .forEach((el) => {\n        el.removeEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.addEventListener(\\\\\"change\\\\\", this.onInputMyComponent2Change);\n        el.value = this.state.b;\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.result);\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > slots 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        <slot>default</slot>\n        <slot name=\\\\\"Test\\\\\"><div>default</div></slot>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > style 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = {};\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <input class=\\\\\"form-input\\\\\" data-dom-state=\\\\\"MyComponent-input-my-component-1\\\\\" />\n      <style>\n        input {\n          color: red;\n          font-size: 12px;\n        }\n      \n        .form-input:focus {\n          outline: 1px solid blue;\n        }\n      </style>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // grab previous input state\n    const preStateful = this.getStateful(this._root);\n    const preValues = this.prepareHydrate(preStateful);\n\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n\n    // hydrate input state\n    if (preValues.length) {\n      const nextStateful = this.getStateful(this._root);\n      this.hydrateDom(preValues, nextStateful);\n    }\n  }\n\n  getStateful(el) {\n    const stateful = el.querySelectorAll(\\\\\"[data-dom-state]\\\\\");\n    return stateful ? Array.from(stateful) : [];\n  }\n  prepareHydrate(stateful) {\n    return stateful.map((el) => {\n      return {\n        id: el.dataset.domState,\n        value: el.value,\n        active: document.activeElement === el,\n        selectionStart: el.selectionStart,\n      };\n    });\n  }\n  hydrateDom(preValues, stateful) {\n    return stateful.map((el, index) => {\n      const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n      if (prev) {\n        el.value = prev.value;\n        if (prev.active) {\n          el.focus();\n          el.selectionStart = prev.selectionStart;\n        }\n      }\n    });\n  }\n\n  updateBindings() {}\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n\nexports[`webcomponent > svelte > Typescript Test > textExpressions 1`] = `\n\"/**\n * Usage:\n *\n *  <my-component></my-component>\n *\n */\nclass MyComponent extends HTMLElement {\n  get _root() {\n    return this.shadowRoot || this;\n  }\n\n  constructor() {\n    super();\n    const self = this;\n\n    this.state = { a: 5, b: 12 };\n    if (!this.props) {\n      this.props = {};\n    }\n\n    // used to keep track of all nodes created by show/for\n    this.nodesToDestroy = [];\n    // batch updates\n    this.pendingUpdate = false;\n\n    if (undefined) {\n      this.attachShadow({ mode: \\\\\"open\\\\\" });\n    }\n  }\n\n  destroyAnyNodes() {\n    // destroy current view template refs before rendering again\n    this.nodesToDestroy.forEach((el) => el.remove());\n    this.nodesToDestroy = [];\n  }\n\n  connectedCallback() {\n    this._root.innerHTML = \\`\n      <div>\n        normal:\n      \n        <template data-el=\\\\\"div-my-component-1\\\\\"><!-- state.a + state.b --></template>\n        <br />\n      \n        conditional\n      \n        <template data-el=\\\\\"div-my-component-2\\\\\">\n          <!-- state.a > 2 ? 'hello' : 'bye' -->\n        </template>\n      </div>\\`;\n    this.pendingUpdate = true;\n\n    this.render();\n    this.onMount();\n    this.pendingUpdate = false;\n    this.update();\n  }\n\n  onMount() {}\n\n  onUpdate() {}\n\n  update() {\n    if (this.pendingUpdate === true) {\n      return;\n    }\n    this.pendingUpdate = true;\n    this.render();\n    this.onUpdate();\n    this.pendingUpdate = false;\n  }\n\n  render() {\n    // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n    this.destroyAnyNodes();\n    this.updateBindings();\n  }\n\n  updateBindings() {\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-1']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.a + this.state.b);\n      });\n\n    this._root\n      .querySelectorAll(\\\\\"[data-el='div-my-component-2']\\\\\")\n      .forEach((el) => {\n        this.renderTextNode(el, this.state.a > 2 ? \\\\\"hello\\\\\" : \\\\\"bye\\\\\");\n      });\n  }\n\n  // Helper to render content\n  renderTextNode(el, text) {\n    const textNode = document.createTextNode(text);\n    if (el?.scope) {\n      textNode.scope = el.scope;\n    }\n    if (el?.context) {\n      textNode.context = el.context;\n    }\n    el.after(textNode);\n    this.nodesToDestroy.push(el.nextSibling);\n  }\n}\n\ncustomElements.define(\\\\\"my-component\\\\\", MyComponent);\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/alpine.test.ts",
    "content": "import { componentToAlpine, ToAlpineOptions } from '../generators/alpine';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Alpine.js', () => {\n  const possibleOptions: ToAlpineOptions[] = [\n    {},\n    // { inlineState: true },\n    // { useShorthandSyntax: true },\n    // { inlineState: true, useShorthandSyntax: true },\n  ];\n  possibleOptions.map((options) =>\n    runTestsForTarget({ options, target: 'alpine', generator: componentToAlpine }),\n  );\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.import.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular with Preserve Imports and File Extensions', () => {\n  runTestsForTarget({\n    options: {\n      preserveImports: true,\n      preserveFileExtensions: true,\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.mapper.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular with Import Mapper Tests', () => {\n  runTestsForTarget({\n    options: {\n      preserveImports: true,\n      preserveFileExtensions: true,\n      importMapper: (component: any, theImport: any, importedValues: any, componentsUsed: any) => {\n        let importPath = theImport.path;\n\n        for (const componentName of componentsUsed || []) {\n          if (theImport.imports[componentName]) {\n            importPath = theImport.path + '/angular';\n          }\n        }\n\n        const { defaultImport, namedImports, starImport } = importedValues;\n\n        let importValue;\n\n        if (starImport) {\n          importValue = ` * as ${starImport} `;\n        } else {\n          importValue = [defaultImport, namedImports]\n            .filter(Boolean)\n            .map((importName) => {\n              for (const usedComponentName of componentsUsed || []) {\n                if ((importName || '').indexOf(usedComponentName) > -1) {\n                  return (importName || '').replace(\n                    usedComponentName,\n                    `${usedComponentName}Module`,\n                  );\n                }\n              }\n              return importName;\n            })\n            .join(', ');\n        }\n\n        return `import ${importValue} from '${importPath}';`;\n      },\n      bootstrapMapper: (name: any, componentsUsed: any, component: any) => {\n        return 'bootstrap: [SomeOtherComponent]';\n      },\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.selector.test.ts",
    "content": "import { parseSelector } from '@/generators/angular/helpers/parse-selector';\n\ndescribe('Angular selectors', () => {\n  test('should parse gnarly selectors', () => {\n    expect(parseSelector('ccc.c1#wat[co].c2[counter=\"cool\"]#wat[x=\\'y\\'].c3')).toEqual({\n      element: 'ccc',\n      classNames: ['c1', 'c2', 'c3'],\n      attributes: {\n        co: '',\n        counter: 'cool',\n        id: 'wat',\n        x: 'y',\n      },\n    });\n  });\n\n  test('parsing multiple returns only the first', () => {\n    expect(parseSelector('dropzone, [dropzone]')).toEqual({\n      element: 'dropzone',\n      classNames: [],\n      attributes: {},\n    });\n  });\n\n  test(':not parses but is unused', () => {\n    expect(parseSelector('list-item:not(.foo)')).toEqual({\n      element: 'list-item',\n      classNames: [],\n      attributes: {},\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.signals.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular signals', () => {\n  runTestsForTarget({\n    options: {\n      standalone: true,\n      api: 'signals',\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n\n/*describe('Angular signals local', () => {\n  runTestsForTarget({\n    options: {\n      standalone: true,\n      api: 'signals',\n      typescript: true,\n    },\n    target: 'angular',\n    generator: componentToAngular,\n    only: [\n      // 'signals'\n      // 'eventProps',\n      // 'basicRefAttributePassing',\n      // 'eventInputAndChange',\n      // \"spreadAttrs\", // TODO: spreads\n      // \"dynamicComponentWithEventArg\" // TODO: add dynamic components\n      'Basic',\n    ],\n    logOutput: true,\n  });\n});*/\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.state.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular with manually creating and handling class properties as bindings (more stable)', () => {\n  runTestsForTarget({\n    options: {\n      state: 'class-properties',\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.styles.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular with visuallyIgnoreHostElement = false', () => {\n  runTestsForTarget({\n    options: {\n      visuallyIgnoreHostElement: false,\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.tag.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nconst component = {\n  '@type': '@builder.io/mitosis/component' as const,\n  children: [\n    {\n      '@type': '@builder.io/mitosis/node' as const,\n      bindings: {},\n      children: [],\n      meta: {},\n      name: 'CustomComponent',\n      properties: {\n        $tagName: 'input',\n        placeholder: 'placeholder text',\n      },\n      scope: {},\n      slots: {},\n    },\n  ],\n  context: {\n    get: {},\n    set: {},\n  },\n  exports: {},\n  hooks: {\n    onEvent: [],\n    onMount: [],\n  },\n  imports: [],\n  inputs: [],\n  meta: {\n    useMetadata: {\n      httpRequests: undefined,\n    },\n  },\n  name: 'MyComponent',\n  refs: {},\n  state: {},\n  subComponents: [],\n};\n\ndescribe('Angular tag name output', () => {\n  test('self closing tags are handled correctly', () => {\n    // ngmodule and standalone have the same code path here\n    const angular = componentToAngular({ standalone: true })({ component });\n    expect(angular).toMatchInlineSnapshot(`\n      \"import { Component } from \\\\\"@angular/core\\\\\";\n\n      import { CommonModule } from \\\\\"@angular/common\\\\\";\n\n      @Component({\n        selector: \\\\\"my-component\\\\\",\n        template: \\` <input placeholder=\\\\\"placeholder text\\\\\" /> \\`,\n        styles: [\n          \\`\n            :host {\n              display: contents;\n            }\n          \\`,\n        ],\n        standalone: true,\n        imports: [CommonModule, CustomComponent],\n      })\n      export default class MyComponent {}\n      \"\n    `);\n  });\n  test('self closing tags are handled correctly - signals', () => {\n    // signals API uses standalone but has a different codepath than standalone: true\n    const angular = componentToAngular({ api: 'signals' })({ component });\n    expect(angular).toMatchInlineSnapshot(`\n      \"import { Component, effect } from \\\\\"@angular/core\\\\\";\n      import { CommonModule } from \\\\\"@angular/common\\\\\";\n\n      @Component({\n        selector: \\\\\"my-component\\\\\",\n        standalone: true,\n        imports: [CommonModule, CustomComponent],\n        template: \\`<input $tagName=\\\\\"input\\\\\" placeholder=\\\\\"placeholder text\\\\\" /> \\`,\n        styles: \\`:host { display: contents; }\\`,\n      })\n      export class MyComponent {\n        constructor() {}\n      }\n      \"\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/angular.test.ts",
    "content": "import { componentToAngular } from '@/generators/angular';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Angular', () => {\n  runTestsForTarget({ options: {}, target: 'angular', generator: componentToAngular });\n  runTestsForTarget({\n    options: {\n      standalone: true,\n    },\n    target: 'angular',\n    generator: componentToAngular,\n  });\n});\n\n/*describe('Angular local', () => {\n  runTestsForTarget({\n    options: {\n      standalone: true,\n    },\n    target: 'angular',\n    generator: componentToAngular,\n    only: [\n      'prettierInline'\n    ],\n    logOutput: true,\n  });\n});*/\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/__snapshots__/builder.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Builder > Advanced For 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \": \",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"div\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.names\",\n              \"itemName\": \"person\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.names\",\n              \"itemName\": \"person\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"br\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.names\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"pre\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"Array.from({\n  length: 10\n})\",\n              \"itemName\": \"_\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"p\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"Array.from({\n  length: 10\n})\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.names\",\n              \"itemName\": \"person\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"Array.from({\n  length: 10\n})\",\n              \"itemName\": \"person\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.names\",\n              \"itemName\": \"person\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"person\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"Array.from({\n  length: 10\n})\",\n              \"itemName\": \"person\",\n            },\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"main\",\n      },\n    ],\n    \"jsCode\": \"Object.assign(state, { name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\",\n    \"state\": {\n      \"name\": \"'PatrickJS'\",\n      \"names\": \"['Steve', 'PatrickJS']\",\n    },\n    \"tsCode\": \"useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\",\n  },\n}\n`;\n\nexports[`Builder > Advanced For 2`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({ name: \\\\\"PatrickJS\\\\\", names: [\\\\\"Steve\\\\\", \\\\\"PatrickJS\\\\\"] });\n\n  return (\n    <main>\n      <For each={state.names}>\n        {(person, index) => (\n          <div>\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n            <Text $tagName=\\\\\"span\\\\\" text=\\\\\": \\\\\" />\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n          </div>\n        )}\n      </For>\n      <For each={state.names}>\n        {(person, index) => (\n          <span>\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n          </span>\n        )}\n      </For>\n      <For each={state.names}>{(item, index) => <br />}</For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(_, index) => (\n          <pre>\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </pre>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(item, index) => (\n          <p>\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </p>\n        )}\n      </For>\n      <For each={state.names}>\n        {(person, index) => (\n          <span>\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, index) => (\n          <span>\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </span>\n        )}\n      </For>\n      <For each={state.names}>\n        {(person, index) => (\n          <span>\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </span>\n        )}\n      </For>\n      <For\n        each={Array.from({\n          length: 10,\n        })}\n      >\n        {(person, index) => (\n          <span>\n            <Text $tagName=\\\\\"span\\\\\" text={person} />\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </span>\n        )}\n      </For>\n    </main>\n  );\n}\n\"\n`;\n\nexports[`Builder > Columns 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"column.content\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"state.$index\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {\n                  \"class\": \"builder-column\",\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"flexGrow\": \"1\",\n                  },\n                },\n                \"tagName\": \"div\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"props.columns\",\n              \"itemName\": \"column\",\n            },\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {\n          \"class\": \"builder-columns\",\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"alignItems\": \"stretch\",\n            \"display\": \"flex\",\n            \"flexDirection\": \"row\",\n            \"lineHeight\": \"normal\",\n          },\n          \"small\": {\n            \"flexDirection\": \"row-reverse\",\n          },\n        },\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\nObject.assign(state, {\n  getColumns() {\n    return props.columns || [];\n  },\n  getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  },\n  getWidth(index) {\n    const columns = state.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  },\n  getColumnCssWidth(index) {\n    const columns = state.getColumns();\n    const gutterSize = state.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  },\n});\n\",\n    \"tsCode\": \"var props = state;\n\nuseStore({\n  getColumns() {\n    return props.columns || [];\n  },\n  getGutterSize() {\n    return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n  },\n  getWidth(index) {\n    const columns = state.getColumns();\n    return (columns[index] && columns[index].width) || 100 / columns.length;\n  },\n  getColumnCssWidth(index) {\n    const columns = state.getColumns();\n    const gutterSize = state.getGutterSize();\n    const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n    return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n  },\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > Columns 2`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    getColumns() {\n      return props.columns || [];\n    },\n    getGutterSize() {\n      return typeof props.space === \\\\\"number\\\\\" ? props.space || 0 : 20;\n    },\n    getWidth(index) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth =\n        (gutterSize * (columns.length - 1)) / columns.length;\n      return \\`calc(\\${state.getWidth(index)}% - \\${subtractWidth}px)\\`;\n    },\n  });\n\n  onMount(() => {\n    var props = state;\n  });\n\n  return (\n    <div\n      class=\\\\\"builder-columns\\\\\"\n      css={{\n        display: \\\\\"flex\\\\\",\n        flexDirection: \\\\\"row\\\\\",\n        alignItems: \\\\\"stretch\\\\\",\n        lineHeight: \\\\\"normal\\\\\",\n        \\\\\"@media (max-width: 640px)\\\\\": {\n          flexDirection: \\\\\"row-reverse\\\\\",\n        },\n      }}\n    >\n      <For each={props.columns}>\n        {(column, index) => (\n          <div\n            class=\\\\\"builder-column\\\\\"\n            css={{\n              flexGrow: \\\\\"1\\\\\",\n            }}\n          >\n            <Text $tagName=\\\\\"span\\\\\" text={column.content} />\n            <Text $tagName=\\\\\"span\\\\\" text={index} />\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > Custom Component Tags in Angular 1`] = `\n\"import { NgModule } from \\\\\"@angular/core\\\\\";\nimport { CommonModule } from \\\\\"@angular/common\\\\\";\n\nimport { Component } from \\\\\"@angular/core\\\\\";\n\n@Component({\n  selector: \\\\\"my-component\\\\\",\n  template: \\`\n    <mitosis-navigation></mitosis-navigation>\n    <button mui></button>\n    <custom-element></custom-element>\n  \\`,\n  styles: [\n    \\`\n      :host {\n        display: contents;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {}\n\n@NgModule({\n  declarations: [MyComponent],\n  imports: [CommonModule, NavigationModule, MyButtonModule],\n  exports: [MyComponent],\n})\nexport class MyComponentModule {}\n\"\n`;\n\nexports[`Builder > CustomCode 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {\n          \"class\": \"'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')\",\n          \"innerHTML\": \"props.code\",\n          \"ref\": \"elem\",\n        },\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\nObject.assign(state, {\n  scriptsInserted: [],\n  scriptsRun: [],\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  },\n});\n\nstate.findAndRunScripts();\n\",\n    \"state\": {\n      \"scriptsInserted\": [],\n      \"scriptsRun\": [],\n    },\n    \"tsCode\": \"var props = state;\n\nuseStore({\n  scriptsInserted: [],\n  scriptsRun: [],\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  },\n});\n\nonMount(() => {\n  state.findAndRunScripts();\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > CustomCode 2`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`CustomCode\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef();\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={\n        \\\\\"builder-custom-code\\\\\" + (props.replaceNodes ? \\\\\" replace-nodes\\\\\" : \\\\\"\\\\\")\n      }\n      innerHTML={props.code}\n    />\n  );\n}\n\"\n`;\n\nexports[`Builder > Embed 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {\n          \"innerHTML\": \"props.content\",\n          \"ref\": \"elem\",\n        },\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {\n          \"class\": \"builder-embed\",\n        },\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\nObject.assign(state, {\n  scriptsInserted: [],\n  scriptsRun: [],\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`Embed\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  },\n});\n\nstate.findAndRunScripts();\n\",\n    \"state\": {\n      \"scriptsInserted\": [],\n      \"scriptsRun\": [],\n    },\n    \"tsCode\": \"var props = state;\n\nuseStore({\n  scriptsInserted: [],\n  scriptsRun: [],\n  findAndRunScripts() {\n    // TODO: Move this function to standalone one in '@builder.io/utils'\n    if (elem && typeof window !== \\\\\"undefined\\\\\") {\n      /** @type {HTMLScriptElement[]} */\n      const scripts = elem.getElementsByTagName(\\\\\"script\\\\\");\n\n      for (let i = 0; i < scripts.length; i++) {\n        const script = scripts[i];\n\n        if (script.src) {\n          if (state.scriptsInserted.includes(script.src)) {\n            continue;\n          }\n\n          state.scriptsInserted.push(script.src);\n          const newScript = document.createElement(\\\\\"script\\\\\");\n          newScript.async = true;\n          newScript.src = script.src;\n          document.head.appendChild(newScript);\n        } else if (\n          !script.type ||\n          [\n            \\\\\"text/javascript\\\\\",\n            \\\\\"application/javascript\\\\\",\n            \\\\\"application/ecmascript\\\\\",\n          ].includes(script.type)\n        ) {\n          if (state.scriptsRun.includes(script.innerText)) {\n            continue;\n          }\n\n          try {\n            state.scriptsRun.push(script.innerText);\n            new Function(script.innerText)();\n          } catch (error) {\n            console.warn(\\\\\"\\`Embed\\`: Error running script:\\\\\", error);\n          }\n        }\n      }\n    }\n  },\n});\n\nonMount(() => {\n  state.findAndRunScripts();\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > Embed 2`] = `\n\"import { useStore, useRef } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    scriptsInserted: [],\n    scriptsRun: [],\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem.current && typeof window !== \\\\\"undefined\\\\\") {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.current.getElementsByTagName(\\\\\"script\\\\\");\n\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement(\\\\\"script\\\\\");\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            [\n              \\\\\"text/javascript\\\\\",\n              \\\\\"application/javascript\\\\\",\n              \\\\\"application/ecmascript\\\\\",\n            ].includes(script.type)\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn(\\\\\"\\`Embed\\`: Error running script:\\\\\", error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  const elem = useRef();\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return <div class=\\\\\"builder-embed\\\\\" ref={elem} innerHTML={props.content} />;\n}\n\"\n`;\n\nexports[`Builder > Fragment 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {},\n            \"component\": {\n              \"name\": \"Text\",\n              \"options\": {\n                \"text\": \"\n      Hello!\n    \",\n              },\n            },\n            \"tagName\": \"span\",\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Core:Fragment\",\n        },\n      },\n    ],\n    \"jsCode\": \"Object.assign(state, { people: [\\\\\"Steve\\\\\", \\\\\"Sewell\\\\\"] });\n\",\n    \"state\": {\n      \"people\": [\n        \"Steve\",\n        \"Sewell\",\n      ],\n    },\n    \"tsCode\": \"useStore({ people: [\\\\\"Steve\\\\\", \\\\\"Sewell\\\\\"] });\n\",\n  },\n}\n`;\n\nexports[`Builder > Image 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"actions\": {},\n            \"bindings\": {\n              \"ref\": \"pictureRef\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"!state.useLazyLoading() || state.load\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"actions\": {\n                      \"load\": \"state.setLoaded()\",\n                    },\n                    \"bindings\": {\n                      \"alt\": \"props.altText\",\n                      \"aria-role\": \"props.altText ? 'presentation' : undefined\",\n                      \"class\": \"'builder-image' + (props._class ? ' ' + props._class : '')\",\n                      \"sizes\": \"props.sizes\",\n                      \"src\": \"props.image\",\n                      \"srcset\": \"props.srcset\",\n                    },\n                    \"children\": [],\n                    \"code\": {\n                      \"actions\": {\n                        \"load\": \"state.setLoaded()\",\n                      },\n                      \"bindings\": {},\n                    },\n                    \"properties\": {},\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"objectFit\": \"cover\",\n                        \"objectPosition\": \"center\",\n                        \"opacity\": \"1\",\n                        \"transition\": \"opacity 0.2s ease-in-out\",\n                      },\n                    },\n                    \"tagName\": \"img\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {\n                  \"srcset\": \"props.srcset\",\n                },\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"source\",\n              },\n            ],\n            \"code\": {\n              \"actions\": {},\n              \"bindings\": {},\n            },\n            \"properties\": {},\n            \"tagName\": \"picture\",\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"component.options.text\": \"props.children\",\n            },\n            \"component\": {\n              \"name\": \"Text\",\n              \"options\": {},\n            },\n            \"tagName\": \"span\",\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\nObject.assign(state, {\n  scrollListener: null,\n  imageLoaded: false,\n  setLoaded() {\n    state.imageLoaded = true;\n  },\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && state.isBrowser();\n  },\n  isBrowser: function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  },\n  load: false,\n});\n\nif (state.useLazyLoading()) {\n  // throttled scroll capture listener\n  const listener = () => {\n    if (pictureRef) {\n      const rect = pictureRef.getBoundingClientRect();\n      const buffer = window.innerHeight / 2;\n\n      if (rect.top < window.innerHeight + buffer) {\n        state.load = true;\n        state.scrollListener = null;\n        window.removeEventListener(\\\\\"scroll\\\\\", listener);\n      }\n    }\n  };\n\n  state.scrollListener = listener;\n  window.addEventListener(\\\\\"scroll\\\\\", listener, {\n    capture: true,\n    passive: true,\n  });\n  listener();\n}\n\",\n    \"state\": {\n      \"imageLoaded\": false,\n      \"load\": false,\n      \"scrollListener\": null,\n    },\n    \"tsCode\": \"var props = state;\n\nuseStore({\n  scrollListener: null,\n  imageLoaded: false,\n  setLoaded() {\n    state.imageLoaded = true;\n  },\n  useLazyLoading() {\n    // TODO: Add more checks here, like testing for real web browsers\n    return !!props.lazy && state.isBrowser();\n  },\n  isBrowser: function isBrowser() {\n    return (\n      typeof window !== \\\\\"undefined\\\\\" && window.navigator.product != \\\\\"ReactNative\\\\\"\n    );\n  },\n  load: false,\n});\n\nonMount(() => {\n  if (state.useLazyLoading()) {\n    // throttled scroll capture listener\n    const listener = () => {\n      if (pictureRef) {\n        const rect = pictureRef.getBoundingClientRect();\n        const buffer = window.innerHeight / 2;\n\n        if (rect.top < window.innerHeight + buffer) {\n          state.load = true;\n          state.scrollListener = null;\n          window.removeEventListener(\\\\\"scroll\\\\\", listener);\n        }\n      }\n    };\n\n    state.scrollListener = listener;\n    window.addEventListener(\\\\\"scroll\\\\\", listener, {\n      capture: true,\n      passive: true,\n    });\n    listener();\n  }\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > Image 2`] = `\n\"import { useStore, useRef, Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    scrollListener: null,\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && state.isBrowser();\n    },\n    isBrowser: function isBrowser() {\n      return (\n        typeof window !== \\\\\"undefined\\\\\" &&\n        window.navigator.product != \\\\\"ReactNative\\\\\"\n      );\n    },\n    load: false,\n  });\n\n  const pictureRef = useRef();\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef.current) {\n          const rect = pictureRef.current.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n\n          if (rect.top < window.innerHeight + buffer) {\n            state.load = true;\n            state.scrollListener = null;\n            window.removeEventListener(\\\\\"scroll\\\\\", listener);\n          }\n        }\n      };\n\n      state.scrollListener = listener;\n      window.addEventListener(\\\\\"scroll\\\\\", listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        <Show when={!state.useLazyLoading() || state.load}>\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? \\\\\"presentation\\\\\" : undefined}\n            class={\\\\\"builder-image\\\\\" + (props._class ? \\\\\" \\\\\" + props._class : \\\\\"\\\\\")}\n            src={props.image}\n            srcset={props.srcset}\n            sizes={props.sizes}\n            onLoad={(event) => state.setLoaded()}\n            css={{\n              opacity: \\\\\"1\\\\\",\n              transition: \\\\\"opacity 0.2s ease-in-out\\\\\",\n              objectFit: \\\\\"cover\\\\\",\n              objectPosition: \\\\\"center\\\\\",\n            }}\n          />\n        </Show>\n        <source srcset={props.srcset} />\n      </picture>\n      <Text $tagName=\\\\\"span\\\\\" text={props.children} />\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > Index inside For 1`] = `\n\"import { useStore, For } from \\\\\"@builder.io/mitosis\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    todos: [\n      {\n        id: 1,\n        completed: false,\n      },\n      {\n        id: 2,\n        completed: false,\n      },\n    ],\n  });\n\n  return (\n    <div>\n      <For each={state.todos}>\n        {(todo, index) => (\n          <div>\n            <For each={state.todos}>\n              {(todo, index) => (\n                <input\n                  type=\\\\\"checkbox\\\\\"\n                  checked={todo.completed}\n                  key={todo.id + \\\\\"-\\\\\" + index}\n                  value={index}\n                  foo={{\n                    bar: 1 + state.$index,\n                  }}\n                  onX={(event) => {\n                    console.log(\\\\\"onX\\\\\");\n                  }}\n                  onClick={(event) => {\n                    console.log(\\\\\"clicked\\\\\", event);\n                    state.todos[state.$index].completed =\n                      !state.todos[0].completed;\n                  }}\n                  onChange={(event) => {\n                    console.log(\\\\\"this is todo item: \\\\\", index);\n                    const index = state.todos.findIndex(\n                      (t) => t.id === todo.id\n                    );\n                    state.todos[index].completed = event.target.checked;\n                  }}\n                />\n              )}\n            </For>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > No srcset for SVG 1`] = `\n\"<img\n  loading=\\\\\"lazy\\\\\"\n  src=\\\\\"https://cdn.builder.io/api/v1/image/dummy.svg\\\\\"\n  class=\\\\\"img\\\\\"\n/>\n<style>\n  .img {\n    object-fit: cover;\n    object-position: center;\n    width: 100%;\n  }\n</style>\n\"\n`;\n\nexports[`Builder > Regenerate Image 1`] = `\n\"\\\\\"use client\\\\\";\nimport * as React from \\\\\"react\\\\\";\nimport { useState } from \\\\\"react\\\\\";\nimport { Image } from \\\\\"@components\\\\\";\n\nfunction MyComponent(props) {\n  const [people, setPeople] = useState(() => [\\\\\"Steve\\\\\", \\\\\"Sewell\\\\\"]);\n\n  return (\n    <>\n      <div>\n        <img\n          loading=\\\\\"lazy\\\\\"\n          sizes=\\\\\"100vw\\\\\"\n          srcSet=\\\\\"https://cdn.builder.io/api/v1/image/foobar?width=100 100w, https://cdn.builder.io/api/v1/image/foobar?width=200 200w, https://cdn.builder.io/api/v1/image/foobar?width=400 400w, https://cdn.builder.io/api/v1/image/foobar?width=800 800w, https://cdn.builder.io/api/v1/image/foobar?width=1200 1200w, https://cdn.builder.io/api/v1/image/foobar?width=1600 1600w, https://cdn.builder.io/api/v1/image/foobar?width=2000 2000w, https://cdn.builder.io/api/v1/image/foobar\\\\\"\n          className=\\\\\"img\\\\\"\n        />\n      </div>\n      <style jsx>{\\`\n        .img {\n          object-fit: contain;\n          object-position: center;\n          width: 100%;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Builder > Regenerate custom Hero 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  display: \\\\\"flex\\\\\",\n  flexDirection: \\\\\"column\\\\\",\n  alignItems: \\\\\"stretch\\\\\",\n  position: \\\\\"relative\\\\\",\n  flexShrink: \\\\\"0\\\\\",\n  boxSizing: \\\\\"border-box\\\\\",\n  marginTop: \\\\\"200px\\\\\"\n}\",\n          \"type\": \"single\",\n        },\n        \"height\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"400\",\n          \"type\": \"single\",\n        },\n        \"multiBinding\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  hello: state.message\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Hero\",\n      \"properties\": {\n        \"buttonLink\": \"https://example.com\",\n        \"buttonText\": \"Click\",\n        \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F52dcecf48f9c48cc8ddd8f81fec63236\",\n        \"title\": \"Your Title Here\",\n      },\n      \"scope\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Hero\": \"Hero\",\n      },\n      \"path\": \"@components\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > Regenerate custom Hero 2`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {\n          \"component.options.multiBinding\": \" return {\n  hello: state.message\n}\",\n        },\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {\n            \"component.options.multiBinding\": \"{\n  hello: state.message\n}\",\n          },\n        },\n        \"component\": {\n          \"name\": \"Hero\",\n          \"options\": {\n            \"buttonLink\": \"https://example.com\",\n            \"buttonText\": \"Click\",\n            \"height\": 400,\n            \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F52dcecf48f9c48cc8ddd8f81fec63236\",\n            \"title\": \"Your Title Here\",\n          },\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"alignItems\": \"stretch\",\n            \"boxSizing\": \"border-box\",\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"flexShrink\": \"0\",\n            \"marginTop\": \"200px\",\n            \"position\": \"relative\",\n          },\n        },\n      },\n    ],\n    \"jsCode\": \"\",\n    \"tsCode\": \"\",\n  },\n}\n`;\n\nexports[`Builder > Regenerate custom Hero 3`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"alignItems\\\\\":\\\\\"stretch\\\\\",\\\\\"position\\\\\":\\\\\"relative\\\\\",\\\\\"flexShrink\\\\\":\\\\\"0\\\\\",\\\\\"boxSizing\\\\\":\\\\\"border-box\\\\\",\\\\\"marginTop\\\\\":\\\\\"200px\\\\\"}\",\n          \"type\": \"single\",\n        },\n        \"height\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"400\",\n          \"type\": \"single\",\n        },\n        \"multiBinding\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\n  hello: state.message\n}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Hero\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"buttonLink\": \"https://example.com\",\n        \"buttonText\": \"Click\",\n        \"image\": \"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F52dcecf48f9c48cc8ddd8f81fec63236\",\n        \"title\": \"Your Title Here\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > Regenerate loop with Text node when using CSS 1`] = `\n\"import { For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <For each={state.submenusItem.menuItems}>\n      {(item, $index) => (\n        <Text\n          class=\\\\\"class-id\\\\\"\n          text=\\\\\"text-content\\\\\"\n          css={{\n            padding: \\\\\"2px\\\\\",\n          }}\n        />\n      )}\n    </For>\n  );\n}\"\n`;\n\nexports[`Builder > Section 1`] = `\n\"<div class=\\\\\"div\\\\\"><p>EAGER LOAD</p></div>\n<div class=\\\\\"div-2\\\\\" data-el=\\\\\"div-1\\\\\">\n  <section lazyLoad=\\\\\"true\\\\\" class=\\\\\"section\\\\\">\n    <div class=\\\\\"div\\\\\"><p>LAZY LOAD</p></div>\n  </section>\n</div>\n<style>\n  .div {\n    display: flex;\n    flex-direction: column;\n    position: relative;\n    flex-shrink: 0;\n    box-sizing: border-box;\n    margin-top: 20px;\n    line-height: normal;\n    height: auto;\n    text-align: center;\n  }\n  .div-2 {\n    display: flex;\n    flex-direction: column;\n    position: relative;\n    flex-shrink: 0;\n    box-sizing: border-box;\n    margin-top: 0px;\n    padding-left: 20px;\n    padding-right: 20px;\n    padding-top: 50px;\n    padding-bottom: 50px;\n    width: 100vw;\n    margin-left: calc(50% - 50vw);\n  }\n  .section {\n    display: flex;\n    flex-direction: column;\n    position: relative;\n    flex-shrink: 0;\n    box-sizing: border-box;\n    margin-top: 0px;\n    padding-left: 20px;\n    padding-right: 20px;\n    padding-top: 50px;\n    padding-bottom: 50px;\n    width: 100%;\n    margin-left: auto;\n    align-self: stretch;\n    flex-grow: 1;\n    max-width: 1234px;\n    align-items: stretch;\n    margin-right: auto;\n  }\n</style>\n<script>\n  (() => {\n    const state = {\n      deviceSize: \\\\\"large\\\\\",\n      location: {\n        path: \\\\\"\\\\\",\n        query: {},\n      },\n    };\n\n    let context = null;\n    let nodesToDestroy = [];\n    let pendingUpdate = false;\n\n    function destroyAnyNodes() {\n      // destroy current view template refs before rendering again\n      nodesToDestroy.forEach((el) => el.remove());\n      nodesToDestroy = [];\n    }\n\n    // Function to update data bindings and loops\n    // call update() when you mutate state and need the updates to reflect\n    // in the dom\n    function update() {\n      if (pendingUpdate === true) {\n        return;\n      }\n      pendingUpdate = true;\n\n      document.querySelectorAll(\\\\\"[data-el='div-1']\\\\\").forEach((el) => {\n        el.setAttribute(\\\\\"maxWidth\\\\\", 1234);\n\n        el.setAttribute(\\\\\"lazyLoad\\\\\", true);\n      });\n\n      destroyAnyNodes();\n\n      pendingUpdate = false;\n    }\n\n    // Update with initial state on first load\n    update();\n  })();\n</script>\n\"\n`;\n\nexports[`Builder > Show 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"Content0\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentA\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"show\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentA\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"hide\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentA\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentB\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"undefined\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {\n                      \"component.options.text\": \"undefined\",\n                    },\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {},\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentB\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"show\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentC\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"hide\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentC\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"show\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentD\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"hide\": \"props.conditionA\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"ContentD\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentE\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"hello\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"hello\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentE\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentF\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"123\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"123\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"ContentF\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"4mb\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"show\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"20mb\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"hide\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"9mb\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                    ],\n                    \"component\": {\n                      \"name\": \"Core:Fragment\",\n                    },\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"show\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"20mb\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"hide\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"9mb\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                    ],\n                    \"component\": {\n                      \"name\": \"Core:Fragment\",\n                    },\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"4mb\",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"show\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"show\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"actions\": {},\n                            \"bindings\": {},\n                            \"children\": [\n                              {\n                                \"@type\": \"@builder.io/sdk:Element\",\n                                \"bindings\": {},\n                                \"component\": {\n                                  \"name\": \"Text\",\n                                  \"options\": {\n                                    \"text\": \"complete\",\n                                  },\n                                },\n                                \"tagName\": \"span\",\n                              },\n                            ],\n                            \"code\": {\n                              \"actions\": {},\n                              \"bindings\": {},\n                            },\n                            \"properties\": {},\n                            \"tagName\": \"div\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"hide\": \"props.conditionB === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"9mb\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                    ],\n                    \"component\": {\n                      \"name\": \"Core:Fragment\",\n                    },\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {\n                  \"hide\": \"props.conditionA === 'Default'\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"show\": \"props.conditionC === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"dff\",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"bindings\": {\n                          \"hide\": \"props.conditionC === 'Complete'\",\n                        },\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"actions\": {},\n                            \"bindings\": {},\n                            \"children\": [\n                              {\n                                \"@type\": \"@builder.io/sdk:Element\",\n                                \"bindings\": {},\n                                \"component\": {\n                                  \"name\": \"Text\",\n                                  \"options\": {\n                                    \"text\": \"complete else\",\n                                  },\n                                },\n                                \"tagName\": \"span\",\n                              },\n                            ],\n                            \"code\": {\n                              \"actions\": {},\n                              \"bindings\": {},\n                            },\n                            \"properties\": {},\n                            \"tagName\": \"div\",\n                          },\n                        ],\n                        \"component\": {\n                          \"name\": \"Core:Fragment\",\n                        },\n                      },\n                    ],\n                    \"component\": {\n                      \"name\": \"Core:Fragment\",\n                    },\n                  },\n                ],\n                \"component\": {\n                  \"name\": \"Core:Fragment\",\n                },\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\",\n    \"tsCode\": \"var props = state;\n\",\n  },\n}\n`;\n\nexports[`Builder > Show 2`] = `\n\"import { Show } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Fragment, Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  onMount(() => {\n    var props = state;\n  });\n\n  return (\n    <div>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"Content0\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentA\\\\\" />\n        </Show>\n      </Fragment>\n      <Show when={props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentA\\\\\" />\n      </Show>\n      <Show when={!props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentA\\\\\" />\n      </Show>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentB\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text={undefined} />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text={undefined} />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentB\\\\\" />\n        </Show>\n      </Fragment>\n      <Show when={props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentC\\\\\" />\n      </Show>\n      <Show when={!props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentC\\\\\" />\n      </Show>\n      <Show when={props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentD\\\\\" />\n      </Show>\n      <Show when={!props.conditionA}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentD\\\\\" />\n      </Show>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentE\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"hello\\\\\" />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"hello\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentE\\\\\" />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentF\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"123\\\\\" />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"123\\\\\" />\n        </Show>\n        <Show when={!props.conditionA}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"ContentF\\\\\" />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"4mb\\\\\" />\n        </Show>\n        <Show when={!(props.conditionA === \\\\\"Default\\\\\")}>\n          <Fragment>\n            <Show when={props.conditionB === \\\\\"Complete\\\\\"}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"20mb\\\\\" />\n            </Show>\n            <Show when={!(props.conditionB === \\\\\"Complete\\\\\")}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"9mb\\\\\" />\n            </Show>\n          </Fragment>\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Fragment>\n            <Show when={props.conditionB === \\\\\"Complete\\\\\"}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"20mb\\\\\" />\n            </Show>\n            <Show when={!(props.conditionB === \\\\\"Complete\\\\\")}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"9mb\\\\\" />\n            </Show>\n          </Fragment>\n        </Show>\n        <Show when={!(props.conditionA === \\\\\"Default\\\\\")}>\n          <Text $tagName=\\\\\"span\\\\\" text=\\\\\"4mb\\\\\" />\n        </Show>\n      </Fragment>\n      <Fragment>\n        <Show when={props.conditionA === \\\\\"Default\\\\\"}>\n          <Fragment>\n            <Show when={props.conditionB === \\\\\"Complete\\\\\"}>\n              <div>\n                <Text $tagName=\\\\\"span\\\\\" text=\\\\\"complete\\\\\" />\n              </div>\n            </Show>\n            <Show when={!(props.conditionB === \\\\\"Complete\\\\\")}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"9mb\\\\\" />\n            </Show>\n          </Fragment>\n        </Show>\n        <Show when={!(props.conditionA === \\\\\"Default\\\\\")}>\n          <Fragment>\n            <Show when={props.conditionC === \\\\\"Complete\\\\\"}>\n              <Text $tagName=\\\\\"span\\\\\" text=\\\\\"dff\\\\\" />\n            </Show>\n            <Show when={!(props.conditionC === \\\\\"Complete\\\\\")}>\n              <div>\n                <Text $tagName=\\\\\"span\\\\\" text=\\\\\"complete else\\\\\" />\n              </div>\n            </Show>\n          </Fragment>\n        </Show>\n      </Fragment>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > Stamped 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {\n          \"data-user\": \"state.name\",\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"actions\": {\n              \"click\": \"state.showReviewPrompt = true\",\n            },\n            \"bindings\": {},\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"Write a review\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"code\": {\n              \"actions\": {\n                \"click\": \"state.showReviewPrompt = true\",\n              },\n              \"bindings\": {},\n            },\n            \"properties\": {},\n            \"tagName\": \"button\",\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"bindings\": {\n              \"show\": \"state.showReviewPrompt || 'asdf'\",\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {\n                  \"placeholder\": \"Email\",\n                },\n                \"tagName\": \"input\",\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {\n                  \"placeholder\": \"Title\",\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"display\": \"block\",\n                  },\n                },\n                \"tagName\": \"input\",\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {\n                  \"placeholder\": \"How was your experience?\",\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"display\": \"block\",\n                  },\n                },\n                \"tagName\": \"textarea\",\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {\n                  \"click\": \"event.preventDefault();\nstate.showReviewPrompt = false\",\n                },\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"bindings\": {},\n                    \"component\": {\n                      \"name\": \"Text\",\n                      \"options\": {\n                        \"text\": \"\n          Submit\n        \",\n                      },\n                    },\n                    \"tagName\": \"span\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {\n                    \"click\": \"event.preventDefault();\nstate.showReviewPrompt = false\",\n                  },\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"display\": \"block\",\n                  },\n                },\n                \"tagName\": \"button\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n          },\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {\n                  \"key\": \"review.id\",\n                },\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"actions\": {},\n                    \"bindings\": {\n                      \"src\": \"review.avatar\",\n                    },\n                    \"children\": [],\n                    \"code\": {\n                      \"actions\": {},\n                      \"bindings\": {},\n                    },\n                    \"properties\": {},\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"height\": \"30px\",\n                        \"marginRight\": \"10px\",\n                        \"width\": \"30px\",\n                      },\n                    },\n                    \"tagName\": \"img\",\n                  },\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"actions\": {},\n                    \"bindings\": {\n                      \"class\": \"state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'\",\n                    },\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {},\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {\n                                \"text\": \"N: \",\n                              },\n                            },\n                            \"tagName\": \"span\",\n                          },\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {\n                              \"component.options.text\": \"state.$index\",\n                            },\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {},\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"div\",\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {\n                              \"component.options.text\": \"review.author\",\n                            },\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {},\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"div\",\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"bindings\": {\n                              \"component.options.text\": \"review.reviewMessage\",\n                            },\n                            \"component\": {\n                              \"name\": \"Text\",\n                              \"options\": {},\n                            },\n                            \"tagName\": \"span\",\n                          },\n                        ],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"div\",\n                      },\n                    ],\n                    \"code\": {\n                      \"actions\": {},\n                      \"bindings\": {},\n                    },\n                    \"properties\": {},\n                    \"tagName\": \"div\",\n                  },\n                ],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"layerName\": \"Review\",\n                \"properties\": {},\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"WebkitFontSmoothing\": \"antialiased\",\n                    \"background\": \"white\",\n                    \"borderRadius\": \"5px\",\n                    \"boxShadow\": \"0 2px 5px rgba(0, 0, 0, 0.1)\",\n                    \"display\": \"flex\",\n                    \"margin\": \"10px\",\n                    \"padding\": \"10px\",\n                  },\n                },\n                \"tagName\": \"div\",\n              },\n            ],\n            \"component\": {\n              \"name\": \"Core:Fragment\",\n            },\n            \"repeat\": {\n              \"collection\": \"state.reviews\",\n              \"itemName\": \"review\",\n            },\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"var props = state;\n\nObject.assign(state, {\n  reviews: [],\n  name: \\\\\"test\\\\\",\n  showReviewPrompt: false,\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  },\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  },\n});\n\nfetch(\n  \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n    props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n  }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n)\n  .then((res) => res.json())\n  .then((data) => {\n    state.reviews = data.data;\n  });\n\",\n    \"state\": {\n      \"name\": \"'test'\",\n      \"reviews\": [],\n      \"showReviewPrompt\": false,\n    },\n    \"tsCode\": \"var props = state;\n\nuseStore({\n  reviews: [],\n  name: \\\\\"test\\\\\",\n  showReviewPrompt: false,\n  kebabCaseValue() {\n    return kebabCase(\\\\\"testThat\\\\\");\n  },\n  snakeCaseValue() {\n    return snakeCase(\\\\\"testThis\\\\\");\n  },\n});\n\nonMount(() => {\n  fetch(\n    \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n      props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n    }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n  )\n    .then((res) => res.json())\n    .then((data) => {\n      state.reviews = data.data;\n    });\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > Stamped 2`] = `\n\"import { useStore, Show, For } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    reviews: [],\n    name: \\\\\"test\\\\\",\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase(\\\\\"testThat\\\\\");\n    },\n    snakeCaseValue() {\n      return snakeCase(\\\\\"testThis\\\\\");\n    },\n  });\n\n  onMount(() => {\n    fetch(\n      \\`https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=\\${\n        props.apiKey || \\\\\"pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM\\\\\"\n      }&productId=\\${props.productId || \\\\\"2410511106127\\\\\"}\\`\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick={(event) => (state.showReviewPrompt = true)}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"Write a review\\\\\" />\n      </button>\n      <Show when={state.showReviewPrompt || \\\\\"asdf\\\\\"}>\n        <input placeholder=\\\\\"Email\\\\\" />\n        <input\n          placeholder=\\\\\"Title\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <textarea\n          placeholder=\\\\\"How was your experience?\\\\\"\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        />\n        <button\n          onClick={(event) => {\n            event.preventDefault();\n            state.showReviewPrompt = false;\n          }}\n          css={{\n            display: \\\\\"block\\\\\",\n          }}\n        >\n          <Text\n            $tagName=\\\\\"span\\\\\"\n            text=\\\\\"\n          Submit\n        \\\\\"\n          />\n        </button>\n      </Show>\n      <For each={state.reviews}>\n        {(review, index) => (\n          <div\n            $name=\\\\\"Review\\\\\"\n            key={review.id}\n            css={{\n              margin: \\\\\"10px\\\\\",\n              padding: \\\\\"10px\\\\\",\n              background: \\\\\"white\\\\\",\n              display: \\\\\"flex\\\\\",\n              borderRadius: \\\\\"5px\\\\\",\n              boxShadow: \\\\\"0 2px 5px rgba(0, 0, 0, 0.1)\\\\\",\n              WebkitFontSmoothing: \\\\\"antialiased\\\\\",\n            }}\n          >\n            <img\n              src={review.avatar}\n              css={{\n                height: \\\\\"30px\\\\\",\n                width: \\\\\"30px\\\\\",\n                marginRight: \\\\\"10px\\\\\",\n              }}\n            />\n            <div class={state.showReviewPrompt ? \\\\\"bg-primary\\\\\" : \\\\\"bg-secondary\\\\\"}>\n              <div>\n                <Text $tagName=\\\\\"span\\\\\" text=\\\\\"N: \\\\\" />\n                <Text $tagName=\\\\\"span\\\\\" text={index} />\n              </div>\n              <div>\n                <Text $tagName=\\\\\"span\\\\\" text={review.author} />\n              </div>\n              <div>\n                <Text $tagName=\\\\\"span\\\\\" text={review.reviewMessage} />\n              </div>\n            </div>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > Text with bindings 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Text\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > Text with bindings 2`] = `\n\"import { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return <Text text=\\\\\"<p>Time left: {{state.timeLeft}} seconds</p>\\\\\" />;\n}\n\"\n`;\n\nexports[`Builder > Text with bindings 3`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\",\n          },\n        },\n      },\n    ],\n    \"jsCode\": \"\",\n    \"tsCode\": \"\",\n  },\n}\n`;\n\nexports[`Builder > Valid Custom Code 1`] = `\n\"<template>\n  <div><div innerHTML='<svg width=\\\\\"200\\\\\" height=\\\\\"200\\\\\"></svg>'></div></div>\n</template>\n\n<script>\nimport { defineComponent } from \\\\\"vue\\\\\";\n\nexport default defineComponent({\n  name: \\\\\"my-component\\\\\",\n});\n</script>\"\n`;\n\nexports[`Builder > Valid Custom Code 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <div>\n      <div\n        dangerouslySetInnerHTML={{\n          __html: \\\\\"<svg width=&quot;200&quot; height=&quot;200&quot;></svg>\\\\\",\n        }}\n      />\n    </div>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Builder > async bindings 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"actions\": {\n              \"click\": \"(async () => await state.handlerClick(event))()\",\n            },\n            \"bindings\": {},\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"Click\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"code\": {\n              \"actions\": {\n                \"click\": \"(async () => await state.handlerClick(event))()\",\n              },\n              \"bindings\": {},\n            },\n            \"properties\": {},\n            \"tagName\": \"button\",\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      },\n    ],\n    \"jsCode\": \"Object.assign(state, {\n  handlerClick: function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  },\n});\n\",\n    \"tsCode\": \"useStore({\n  handlerClick: function handlerClick(event) {\n    event.preventDefault();\n    console.log(\\\\\"current value\\\\\", holdValueRef);\n    holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n  },\n});\n\",\n  },\n}\n`;\n\nexports[`Builder > async bindings 2`] = `\n\"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\nimport { Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    handlerClick: function handlerClick(event) {\n      event.preventDefault();\n      console.log(\\\\\"current value\\\\\", holdValueRef);\n      holdValueRef = holdValueRef + \\\\\"JS\\\\\";\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={async (event) => await state.handlerClick(event)}>\n        <Text $tagName=\\\\\"span\\\\\" text=\\\\\"Click\\\\\" />\n      </button>\n    </div>\n  );\n}\n\"\n`;\n\nexports[`Builder > bindings 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"label\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.text\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Button\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"label\": \"hello\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"backgroundColor\\\\\":\\\\\"rgba(0, 0, 0, 1)\\\\\",\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"paddingLeft\\\\\":\\\\\"72px\\\\\",\\\\\"paddingRight\\\\\":\\\\\"72px\\\\\",\\\\\"paddingTop\\\\\":\\\\\"25px\\\\\",\\\\\"paddingBottom\\\\\":\\\\\"25px\\\\\",\\\\\"alignItems\\\\\":\\\\\"start\\\\\",\\\\\"gap\\\\\":\\\\\"10px\\\\\",\\\\\"fontFamily\\\\\":\\\\\"Poppins, -apple-system, Roboto, Helvetica, sans-serif\\\\\",\\\\\"fontSize\\\\\":\\\\\"16px\\\\\",\\\\\"color\\\\\":\\\\\"rgba(255, 255, 255, 1)\\\\\",\\\\\"fontWeight\\\\\":\\\\\"700\\\\\",\\\\\"textTransform\\\\\":\\\\\"uppercase\\\\\",\\\\\"justifyContent\\\\\":\\\\\"start\\\\\"}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"text\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"state.text\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Text\",\n          \"properties\": {\n            \"$name\": \"Book an Appointment\",\n            \"$tagName\": undefined,\n            \"text\": \"BUY NOW\",\n          },\n          \"scope\": {},\n          \"slots\": {},\n        },\n      ],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": [\n    {\n      \"defaultValue\": \"Hello\",\n      \"name\": \"text\",\n    },\n  ],\n  \"meta\": {\n    \"cssCode\": \"builder-component { max-width: none !important; }\",\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"style\": \"builder-component { max-width: none !important; }\",\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > bindings 2`] = `\n\"import { Button, Text } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  useStyle(\\`builder-component { max-width: none !important; }\\`);\n\n  return (\n    <>\n      <Button label=\\\\\"hello\\\\\" label={state.text} />\n      <div\n        css={{\n          backgroundColor: \\\\\"rgba(0, 0, 0, 1)\\\\\",\n          display: \\\\\"flex\\\\\",\n          paddingLeft: \\\\\"72px\\\\\",\n          paddingRight: \\\\\"72px\\\\\",\n          paddingTop: \\\\\"25px\\\\\",\n          paddingBottom: \\\\\"25px\\\\\",\n          alignItems: \\\\\"start\\\\\",\n          gap: \\\\\"10px\\\\\",\n          fontFamily: \\\\\"Poppins, -apple-system, Roboto, Helvetica, sans-serif\\\\\",\n          fontSize: \\\\\"16px\\\\\",\n          color: \\\\\"rgba(255, 255, 255, 1)\\\\\",\n          fontWeight: \\\\\"700\\\\\",\n          textTransform: \\\\\"uppercase\\\\\",\n          justifyContent: \\\\\"start\\\\\",\n        }}\n      >\n        <Text $name=\\\\\"Book an Appointment\\\\\" text=\\\\\"BUY NOW\\\\\" text={state.text} />\n      </div>\n    </>\n  );\n}\n\"\n`;\n\nexports[`Builder > booleans 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"focused\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"true\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"TextField\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"label\": \"Search by title\",\n        \"size\": \"medium\",\n        \"value\": \"Senior|\",\n        \"variant\": \"outlined\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > booleans 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <TextField\n      label=\\\\\"Search by title\\\\\"\n      size=\\\\\"medium\\\\\"\n      value=\\\\\"Senior|\\\\\"\n      variant=\\\\\"outlined\\\\\"\n      focused\n    />\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Builder > customComponentSlotProperty 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"position\\\\\":\\\\\"relative\\\\\",\\\\\"width\\\\\":\\\\\"100%\\\\\",\\\\\"@media (max-width: 991px)\\\\\":{\\\\\"maxWidth\\\\\":\\\\\"100%\\\\\"}}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Navigation\",\n      \"properties\": {\n        \"$tagName\": undefined,\n      },\n      \"scope\": {},\n      \"slots\": {\n        \"logo\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"css\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"{\\\\\"alignItems\\\\\":\\\\\"flex-start\\\\\",\\\\\"alignSelf\\\\\":\\\\\"stretch\\\\\",\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexBasis\\\\\":\\\\\"0%\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"justifyContent\\\\\":\\\\\"center\\\\\"}\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Logo\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"logoMultiple\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"css\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"{\\\\\"alignItems\\\\\":\\\\\"flex-start\\\\\",\\\\\"alignSelf\\\\\":\\\\\"stretch\\\\\",\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexBasis\\\\\":\\\\\"0%\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"justifyContent\\\\\":\\\\\"center\\\\\"}\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Logo\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"css\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"{\\\\\"alignItems\\\\\":\\\\\"flex-start\\\\\",\\\\\"alignSelf\\\\\":\\\\\"stretch\\\\\",\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexBasis\\\\\":\\\\\"0%\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"justifyContent\\\\\":\\\\\"center\\\\\"}\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"LogoTwo\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"logoSingle\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"css\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"{\\\\\"alignItems\\\\\":\\\\\"flex-start\\\\\",\\\\\"alignSelf\\\\\":\\\\\"stretch\\\\\",\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexBasis\\\\\":\\\\\"0%\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"justifyContent\\\\\":\\\\\"center\\\\\"}\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Logo\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n      },\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > customComponentSlotProperty 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <Navigation\n        className=\\\\\"navigation\\\\\"\n        logo={<Logo className=\\\\\"logo\\\\\" />}\n        logoSingle={<Logo className=\\\\\"logo\\\\\" />}\n        logoMultiple={\n          <>\n            <Logo className=\\\\\"logo\\\\\" />\n            <LogoTwo className=\\\\\"logo-two\\\\\" />\n          </>\n        }\n      />\n      <style jsx>{\\`\n        .navigation {\n          position: relative;\n          width: 100%;\n        }\n        @media (max-width: 991px) {\n          .navigation {\n            max-width: 100%;\n          }\n        }\n        .logo {\n          align-items: flex-start;\n          align-self: stretch;\n          display: flex;\n          flex-basis: 0%;\n          flex-direction: column;\n          justify-content: center;\n        }\n        .logo-two {\n          align-items: flex-start;\n          align-self: stretch;\n          display: flex;\n          flex-basis: 0%;\n          flex-direction: column;\n          justify-content: center;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Builder > extractStateHook 1`] = `\n{\n  \"code\": \"useState({\n  foo: 'bar'\n});\nalert('hi');\",\n  \"state\": {},\n}\n`;\n\nexports[`Builder > handles recursive component structure 1`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"LocationTree\",\n          \"options\": {\n            \"symbol\": {\n              \"content\": {\n                \"data\": {\n                  \"blocks\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"actions\": {},\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"bindings\": {\n                            \"show\": \"location.child\",\n                          },\n                          \"children\": [\n                            {\n                              \"@type\": \"@builder.io/sdk:Element\",\n                              \"actions\": {},\n                              \"bindings\": {\n                                \"component.options.location\": \"location.child\",\n                              },\n                              \"children\": [],\n                              \"code\": {\n                                \"actions\": {},\n                                \"bindings\": {\n                                  \"component.options.location\": \"location.child\",\n                                },\n                              },\n                              \"component\": {\n                                \"name\": \"LocationTree\",\n                                \"options\": {\n                                  \"symbol\": {\n                                    \"content\": {\n                                      \"data\": {\n                                        \"blocks\": [\n                                          {\n                                            \"@type\": \"@builder.io/sdk:Element\",\n                                            \"actions\": {},\n                                            \"bindings\": {},\n                                            \"children\": [\n                                              {\n                                                \"@type\": \"@builder.io/sdk:Element\",\n                                                \"bindings\": {\n                                                  \"show\": \"location.child\",\n                                                },\n                                                \"children\": [\n                                                  {\n                                                    \"@type\": \"@builder.io/sdk:Element\",\n                                                    \"actions\": {},\n                                                    \"bindings\": {\n                                                      \"component.options.location\": \"location.child\",\n                                                    },\n                                                    \"children\": [],\n                                                    \"code\": {\n                                                      \"actions\": {},\n                                                      \"bindings\": {\n                                                        \"component.options.location\": \"location.child\",\n                                                      },\n                                                    },\n                                                    \"component\": {\n                                                      \"name\": \"LocationTree\",\n                                                      \"options\": {\n                                                        \"symbol\": {\n                                                          \"content\": {\n                                                            \"data\": {\n                                                              \"blocks\": [\n                                                                {\n                                                                  \"@type\": \"@builder.io/sdk:Element\",\n                                                                  \"actions\": {},\n                                                                  \"bindings\": {},\n                                                                  \"children\": [\n                                                                    {\n                                                                      \"@type\": \"@builder.io/sdk:Element\",\n                                                                      \"bindings\": {\n                                                                        \"show\": \"location.child\",\n                                                                      },\n                                                                      \"children\": [\n                                                                        {\n                                                                          \"@type\": \"@builder.io/sdk:Element\",\n                                                                          \"actions\": {},\n                                                                          \"bindings\": {\n                                                                            \"component.options.location\": \"location.child\",\n                                                                          },\n                                                                          \"children\": [],\n                                                                          \"code\": {\n                                                                            \"actions\": {},\n                                                                            \"bindings\": {\n                                                                              \"component.options.location\": \"location.child\",\n                                                                            },\n                                                                          },\n                                                                          \"component\": {\n                                                                            \"name\": \"LocationTree\",\n                                                                            \"options\": {\n                                                                              \"symbol\": {\n                                                                                \"content\": {\n                                                                                  \"data\": {\n                                                                                    \"blocks\": [\n                                                                                      {\n                                                                                        \"@type\": \"@builder.io/sdk:Element\",\n                                                                                        \"actions\": {},\n                                                                                        \"bindings\": {},\n                                                                                        \"children\": [\n                                                                                          {\n                                                                                            \"@type\": \"@builder.io/sdk:Element\",\n                                                                                            \"bindings\": {\n                                                                                              \"show\": \"location.child\",\n                                                                                            },\n                                                                                            \"children\": [\n                                                                                              {\n                                                                                                \"@type\": \"@builder.io/sdk:Element\",\n                                                                                                \"actions\": {},\n                                                                                                \"bindings\": {\n                                                                                                  \"component.options.location\": \"location.child\",\n                                                                                                },\n                                                                                                \"children\": [],\n                                                                                                \"code\": {\n                                                                                                  \"actions\": {},\n                                                                                                  \"bindings\": {\n                                                                                                    \"component.options.location\": \"location.child\",\n                                                                                                  },\n                                                                                                },\n                                                                                                \"component\": {\n                                                                                                  \"name\": \"LocationTree\",\n                                                                                                  \"options\": {\n                                                                                                    \"symbol\": {\n                                                                                                      \"content\": {\n                                                                                                        \"data\": {\n                                                                                                          \"blocks\": [\n                                                                                                            {\n                                                                                                              \"@type\": \"@builder.io/sdk:Element\",\n                                                                                                              \"actions\": {},\n                                                                                                              \"bindings\": {},\n                                                                                                              \"children\": [\n                                                                                                                {\n                                                                                                                  \"@type\": \"@builder.io/sdk:Element\",\n                                                                                                                  \"bindings\": {\n                                                                                                                    \"show\": \"location.child\",\n                                                                                                                  },\n                                                                                                                  \"children\": [],\n                                                                                                                  \"component\": {\n                                                                                                                    \"name\": \"Core:Fragment\",\n                                                                                                                  },\n                                                                                                                },\n                                                                                                              ],\n                                                                                                              \"code\": {\n                                                                                                                \"actions\": {},\n                                                                                                                \"bindings\": {},\n                                                                                                              },\n                                                                                                              \"component\": {\n                                                                                                                \"name\": \"Core:Fragment\",\n                                                                                                              },\n                                                                                                            },\n                                                                                                          ],\n                                                                                                          \"jsCode\": \"\",\n                                                                                                          \"tsCode\": \"\",\n                                                                                                        },\n                                                                                                      },\n                                                                                                    },\n                                                                                                  },\n                                                                                                },\n                                                                                              },\n                                                                                            ],\n                                                                                            \"component\": {\n                                                                                              \"name\": \"Core:Fragment\",\n                                                                                            },\n                                                                                          },\n                                                                                        ],\n                                                                                        \"code\": {\n                                                                                          \"actions\": {},\n                                                                                          \"bindings\": {},\n                                                                                        },\n                                                                                        \"component\": {\n                                                                                          \"name\": \"Core:Fragment\",\n                                                                                        },\n                                                                                      },\n                                                                                    ],\n                                                                                    \"jsCode\": \"\",\n                                                                                    \"tsCode\": \"\",\n                                                                                  },\n                                                                                },\n                                                                              },\n                                                                            },\n                                                                          },\n                                                                        },\n                                                                      ],\n                                                                      \"component\": {\n                                                                        \"name\": \"Core:Fragment\",\n                                                                      },\n                                                                    },\n                                                                  ],\n                                                                  \"code\": {\n                                                                    \"actions\": {},\n                                                                    \"bindings\": {},\n                                                                  },\n                                                                  \"component\": {\n                                                                    \"name\": \"Core:Fragment\",\n                                                                  },\n                                                                },\n                                                              ],\n                                                              \"jsCode\": \"\",\n                                                              \"tsCode\": \"\",\n                                                            },\n                                                          },\n                                                        },\n                                                      },\n                                                    },\n                                                  },\n                                                ],\n                                                \"component\": {\n                                                  \"name\": \"Core:Fragment\",\n                                                },\n                                              },\n                                            ],\n                                            \"code\": {\n                                              \"actions\": {},\n                                              \"bindings\": {},\n                                            },\n                                            \"component\": {\n                                              \"name\": \"Core:Fragment\",\n                                            },\n                                          },\n                                        ],\n                                        \"jsCode\": \"\",\n                                        \"tsCode\": \"\",\n                                      },\n                                    },\n                                  },\n                                },\n                              },\n                            },\n                          ],\n                          \"component\": {\n                            \"name\": \"Core:Fragment\",\n                          },\n                        },\n                      ],\n                      \"code\": {\n                        \"actions\": {},\n                        \"bindings\": {},\n                      },\n                      \"component\": {\n                        \"name\": \"Core:Fragment\",\n                      },\n                    },\n                  ],\n                  \"jsCode\": \"\",\n                  \"tsCode\": \"\",\n                },\n              },\n            },\n          },\n        },\n      },\n    ],\n    \"jsCode\": \"\",\n    \"tsCode\": \"\",\n  },\n}\n`;\n\nexports[`Builder > localization 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Text\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"localizedValues\": {\n        \"component.options.text\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"<p>hello default</p>\",\n          \"es-AR\": \"<p>hello argentina</p>\",\n          \"fr-CA\": \"<p>hello france</p><p><br></p>\",\n        },\n      },\n      \"meta\": {},\n      \"name\": \"Text\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"text\": \"<p>hello default</p>\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"localizedValues\": {\n        \"component.options.image\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"https://cdn.builder.io/api/v1/image/placeholder?default\",\n          \"es-AR\": \"https://cdn.builder.io/api/v1/image/placeholder?es-ar\",\n          \"fr-CA\": \"https://cdn.builder.io/api/v1/image/placeholder?fr-ca\",\n        },\n      },\n      \"meta\": {},\n      \"name\": \"Image\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"image\": \"https://cdn.builder.io/api/v1/image/placeholder?default\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"localizedValues\": {\n        \"component.options.title\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"<p>hello default</p>\",\n          \"es-AR\": \"<p>hello argentina</p>\",\n          \"fr-CA\": \"<p>hello france</p><p><br></p>\",\n        },\n      },\n      \"meta\": {},\n      \"name\": \"CustomComponent\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"title\": \"<p>hello default</p>\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"display\\\\\":\\\\\"flex\\\\\",\\\\\"flexDirection\\\\\":\\\\\"column\\\\\",\\\\\"position\\\\\":\\\\\"relative\\\\\",\\\\\"flexShrink\\\\\":\\\\\"0\\\\\",\\\\\"boxSizing\\\\\":\\\\\"border-box\\\\\",\\\\\"marginTop\\\\\":\\\\\"20px\\\\\",\\\\\"cursor\\\\\":\\\\\"pointer\\\\\",\\\\\"pointerEvents\\\\\":\\\\\"auto\\\\\"}\",\n          \"type\": \"single\",\n        },\n        \"scriptsClientOnly\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"false\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"localizedValues\": {\n        \"linkUrl\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"http://builder.io\",\n        },\n        \"properties.href\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"http://builder.io\",\n        },\n      },\n      \"meta\": {},\n      \"name\": \"CustomCode\",\n      \"properties\": {\n        \"$tagName\": \"a\",\n        \"code\": \"<a>Link</a>\n\",\n        \"href\": \"http://builder.io\",\n      },\n      \"scope\": {},\n      \"slots\": {},\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > localization 2`] = `\n\"import { Text, Image, CustomComponent, CustomCode } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <>\n      <Text text=\\\\\"<p>Time left: {{state.timeLeft}} seconds</p>\\\\\" />\n      <Text text=\\\\\"<p>hello default</p>\\\\\" />\n      <Image image=\\\\\"https://cdn.builder.io/api/v1/image/placeholder?default\\\\\" />\n      <CustomComponent title=\\\\\"<p>hello default</p>\\\\\" />\n      <CustomCode\n        $tagName=\\\\\"a\\\\\"\n        href=\\\\\"http://builder.io\\\\\"\n        code=\\\\\"<a>Link</a>\n\\\\\"\n        scriptsClientOnly={false}\n        css={{\n          display: \\\\\"flex\\\\\",\n          flexDirection: \\\\\"column\\\\\",\n          position: \\\\\"relative\\\\\",\n          flexShrink: \\\\\"0\\\\\",\n          boxSizing: \\\\\"border-box\\\\\",\n          marginTop: \\\\\"20px\\\\\",\n          cursor: \\\\\"pointer\\\\\",\n          pointerEvents: \\\\\"auto\\\\\",\n        }}\n      />\n    </>\n  );\n}\n\"\n`;\n\nexports[`Builder > localization 3`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\",\n          },\n        },\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"<p>hello default</p>\",\n              \"es-AR\": \"<p>hello argentina</p>\",\n              \"fr-CA\": \"<p>hello france</p><p><br></p>\",\n            },\n          },\n        },\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Image\",\n          \"options\": {\n            \"image\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"https://cdn.builder.io/api/v1/image/placeholder?default\",\n              \"es-AR\": \"https://cdn.builder.io/api/v1/image/placeholder?es-ar\",\n              \"fr-CA\": \"https://cdn.builder.io/api/v1/image/placeholder?fr-ca\",\n            },\n          },\n        },\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"CustomComponent\",\n          \"options\": {\n            \"title\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"<p>hello default</p>\",\n              \"es-AR\": \"<p>hello argentina</p>\",\n              \"fr-CA\": \"<p>hello france</p><p><br></p>\",\n            },\n          },\n        },\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Custom Code\",\n          \"options\": {\n            \"code\": \"<a>Link</a>\n\",\n            \"href\": \"http://builder.io\",\n            \"scriptsClientOnly\": false,\n          },\n        },\n        \"linkUrl\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"http://builder.io\",\n        },\n        \"properties\": {\n          \"href\": {\n            \"@type\": \"@builder.io/core:LocalizedValue\",\n            \"Default\": \"http://builder.io\",\n          },\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"boxSizing\": \"border-box\",\n            \"cursor\": \"pointer\",\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"flexShrink\": \"0\",\n            \"marginTop\": \"20px\",\n            \"pointerEvents\": \"auto\",\n            \"position\": \"relative\",\n          },\n        },\n      },\n    ],\n    \"jsCode\": \"\",\n    \"tsCode\": \"\",\n  },\n}\n`;\n\nexports[`Builder > nodes as props 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {},\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Foo\",\n      \"properties\": {\n        \"$tagName\": undefined,\n      },\n      \"scope\": {},\n      \"slots\": {\n        \"prop\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Bar\",\n            \"properties\": {\n              \"hello\": \"world\",\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n      },\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > nodes as props 2`] = `\n\"import { Foo, Bar } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return <Foo prop={<Bar hello=\\\\\"world\\\\\" />} />;\n}\n\"\n`;\n\nexports[`Builder > nodes as props 3`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"prop\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"<Bar hello=\\\\\"world\\\\\" />\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"Foo\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {\n        \"prop\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Bar\",\n            \"properties\": {\n              \"hello\": \"world\",\n            },\n            \"scope\": {},\n          },\n        ],\n      },\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [\n    {\n      \"importKind\": \"value\",\n      \"imports\": {\n        \"Bar\": \"Bar\",\n        \"Foo\": \"Foo\",\n      },\n      \"path\": \"@components\",\n    },\n  ],\n  \"inputs\": [],\n  \"meta\": {},\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > nodes as props 4`] = `\n{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"component\": {\n          \"name\": \"Foo\",\n          \"options\": {\n            \"prop\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {},\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"component\": {\n                  \"name\": \"Bar\",\n                  \"options\": {\n                    \"hello\": \"world\",\n                  },\n                },\n              },\n            ],\n          },\n        },\n      },\n    ],\n    \"jsCode\": \"\",\n    \"tsCode\": \"\",\n  },\n}\n`;\n\nexports[`Builder > null values 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/node\",\n  \"bindings\": {\n    \"text2\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"null\",\n      \"type\": \"single\",\n    },\n  },\n  \"children\": [],\n  \"meta\": {},\n  \"name\": \"CustomText\",\n  \"properties\": {\n    \"$tagName\": undefined,\n    \"href\": \"\",\n    \"text\": \"hello\",\n  },\n  \"scope\": {},\n  \"slots\": {},\n}\n`;\n\nexports[`Builder > preserve cssCode when converting 1`] = `\n\".foo {\n  background: green;\n}\n\n.bar {\n  font-weight: bold;\n}\"\n`;\n\nexports[`Builder > preserve cssCode when converting 2`] = `\n\".foo {\n  background: green;\n}\n\n.bar {\n  font-weight: bold;\n}\"\n`;\n\nexports[`Builder > preserve cssCode when converting 3`] = `\n\"export default function MyComponent(props) {\n  useStyle(\\`.foo {\n  background: green;\n}\n\n.bar {\n  font-weight: bold;\n}\\`);\n\n  return <></>;\n}\n\"\n`;\n\nexports[`Builder > preserve cssCode when converting 4`] = `\n\".foo {\n  background: green;\n}\n\n.bar {\n  font-weight: bold;\n}\"\n`;\n\nexports[`Builder > slots 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"width\\\\\":\\\\\"100%\\\\\",\\\\\"@media (max-width: 991px)\\\\\":{\\\\\"maxWidth\\\\\":\\\\\"100%\\\\\"}}\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"CardHeader\",\n      \"properties\": {\n        \"$name\": \"CardHeader\",\n        \"$tagName\": undefined,\n        \"title\": \"The Burgler\",\n      },\n      \"scope\": {},\n      \"slots\": {\n        \"avatar\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Avatar\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n      },\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > slots 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <CardHeader\n        title=\\\\\"The Burgler\\\\\"\n        className=\\\\\"card-header\\\\\"\n        avatar={<Avatar />}\n      />\n      <style jsx>{\\`\n        .card-header {\n          width: 100%;\n        }\n        @media (max-width: 991px) {\n          .card-header {\n            max-width: 100%;\n          }\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Builder > slots2 1`] = `\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"fontStyle\\\\\":\\\\\"italic\\\\\"}\",\n          \"type\": \"single\",\n        },\n        \"disabled\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"false\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"FormControlLabel\",\n      \"properties\": {\n        \"$tagName\": undefined,\n        \"label\": \"Label\",\n        \"labelPlacement\": \"end\",\n      },\n      \"scope\": {},\n      \"slots\": {\n        \"control\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Radio\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n      },\n    },\n  ],\n  \"context\": {\n    \"get\": {},\n    \"set\": {},\n  },\n  \"exports\": {},\n  \"hooks\": {\n    \"onEvent\": [],\n    \"onMount\": [],\n  },\n  \"imports\": [],\n  \"inputs\": undefined,\n  \"meta\": {\n    \"useMetadata\": {\n      \"httpRequests\": undefined,\n    },\n  },\n  \"name\": \"MyComponent\",\n  \"refs\": {},\n  \"state\": {},\n  \"subComponents\": [],\n}\n`;\n\nexports[`Builder > slots2 2`] = `\n\"import * as React from \\\\\"react\\\\\";\n\nfunction MyComponent(props) {\n  return (\n    <>\n      <FormControlLabel\n        label=\\\\\"Label\\\\\"\n        labelPlacement=\\\\\"end\\\\\"\n        className=\\\\\"form-control-label\\\\\"\n        disabled={false}\n        control={<Radio />}\n      />\n      <style jsx>{\\`\n        .form-control-label {\n          font-style: italic;\n        }\n      \\`}</style>\n    </>\n  );\n}\n\nexport default MyComponent;\n\"\n`;\n\nexports[`Symbol Serialization > Multiple symbols with different names 1`] = `\n[\n  {\n    \"bindings\": {\n      \"symbol\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"{\\\\\"entry\\\\\":\\\\\"2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e\\\\\",\\\\\"model\\\\\":\\\\\"symbol\\\\\",\\\\\"ownerId\\\\\":\\\\\"99d964b716f94737a50de4d76134d098\\\\\"}\",\n        \"type\": \"single\",\n      },\n      \"text\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"'Get Started'\",\n        \"type\": \"single\",\n      },\n      \"variant\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"'primary'\",\n        \"type\": \"single\",\n      },\n    },\n    \"name\": \"SymbolPrimaryButton\",\n  },\n  {\n    \"bindings\": {\n      \"symbol\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"{\\\\\"entry\\\\\":\\\\\"3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f\\\\\",\\\\\"model\\\\\":\\\\\"symbol\\\\\",\\\\\"ownerId\\\\\":\\\\\"99d964b716f94737a50de4d76134d098\\\\\"}\",\n        \"type\": \"single\",\n      },\n      \"text\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"'Learn More'\",\n        \"type\": \"single\",\n      },\n      \"variant\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"'secondary'\",\n        \"type\": \"single\",\n      },\n    },\n    \"name\": \"SymbolSecondaryButton\",\n  },\n  {\n    \"bindings\": {\n      \"copyrightText\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"'© 2024 Company Name'\",\n        \"type\": \"single\",\n      },\n      \"showSocialLinks\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"true\",\n        \"type\": \"single\",\n      },\n      \"symbol\": {\n        \"bindingType\": \"expression\",\n        \"code\": \"{\\\\\"entry\\\\\":\\\\\"4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a\\\\\",\\\\\"model\\\\\":\\\\\"symbol\\\\\",\\\\\"ownerId\\\\\":\\\\\"99d964b716f94737a50de4d76134d098\\\\\"}\",\n        \"type\": \"single\",\n      },\n    },\n    \"name\": \"SymbolFooterSection\",\n  },\n]\n`;\n\nexports[`Symbol Serialization > Multiple symbols with different names 2`] = `\n\"import {\n  SymbolPrimaryButton,\n  SymbolSecondaryButton,\n  SymbolFooterSection,\n} from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <>\n      <SymbolPrimaryButton\n        symbol={{\n          entry: \\\\\"2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e\\\\\",\n          model: \\\\\"symbol\\\\\",\n          ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n        }}\n        text={\\\\\"Get Started\\\\\"}\n        variant={\\\\\"primary\\\\\"}\n      />\n      <SymbolSecondaryButton\n        symbol={{\n          entry: \\\\\"3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f\\\\\",\n          model: \\\\\"symbol\\\\\",\n          ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n        }}\n        text={\\\\\"Learn More\\\\\"}\n        variant={\\\\\"secondary\\\\\"}\n      />\n      <SymbolFooterSection\n        symbol={{\n          entry: \\\\\"4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a\\\\\",\n          model: \\\\\"symbol\\\\\",\n          ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n        }}\n        copyrightText={\\\\\"© 2024 Company Name\\\\\"}\n        showSocialLinks={true}\n      />\n    </>\n  );\n}\n\"\n`;\n\nexports[`Symbol Serialization > Symbol with basic metadata 1`] = `\n\"import { SymbolBasicSymbol } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <SymbolBasicSymbol\n      symbol={{\n        entry: \\\\\"5a009380a7274b1388f8f1e500d2e28a\\\\\",\n        model: \\\\\"symbol\\\\\",\n        ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n\nexports[`Symbol Serialization > Symbol with entry name 1`] = `\n\"import { SymbolHeaderNavigation } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <SymbolHeaderNavigation\n      symbol={{\n        entry: \\\\\"1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d\\\\\",\n        model: \\\\\"symbol\\\\\",\n        ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n      }}\n      logoUrl={\\\\\"/logo.png\\\\\"}\n      showSearch={true}\n      menuItems={[\n        {\n          label: \\\\\"Home\\\\\",\n          url: \\\\\"/\\\\\",\n        },\n        {\n          label: \\\\\"About\\\\\",\n          url: \\\\\"/about\\\\\",\n        },\n      ]}\n    />\n  );\n}\n\"\n`;\n\nexports[`Symbol Serialization > Symbol with inputs as top-level props 1`] = `\n{\n  \"bindings\": {\n    \"buttonText\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"'Click me!'\",\n      \"type\": \"single\",\n    },\n    \"config\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"{showIcon:true,iconPosition:'left'}\",\n      \"type\": \"single\",\n    },\n    \"count\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"42\",\n      \"type\": \"single\",\n    },\n    \"isDisabled\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"false\",\n      \"type\": \"single\",\n    },\n    \"symbol\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"{\\\\\"entry\\\\\":\\\\\"7b8c9d0e1a2b3c4d5e6f7a8b9c0d1e2f\\\\\",\\\\\"model\\\\\":\\\\\"symbol\\\\\",\\\\\"ownerId\\\\\":\\\\\"99d964b716f94737a50de4d76134d098\\\\\"}\",\n      \"type\": \"single\",\n    },\n    \"variant\": {\n      \"bindingType\": \"expression\",\n      \"code\": \"'primary'\",\n      \"type\": \"single\",\n    },\n  },\n  \"name\": \"SymbolButtonComponent\",\n}\n`;\n\nexports[`Symbol Serialization > Symbol with inputs as top-level props 2`] = `\n\"import { SymbolButtonComponent } from \\\\\"@components\\\\\";\n\nexport default function MyComponent(props) {\n  return (\n    <SymbolButtonComponent\n      symbol={{\n        entry: \\\\\"7b8c9d0e1a2b3c4d5e6f7a8b9c0d1e2f\\\\\",\n        model: \\\\\"symbol\\\\\",\n        ownerId: \\\\\"99d964b716f94737a50de4d76134d098\\\\\",\n      }}\n      buttonText={\\\\\"Click me!\\\\\"}\n      variant={\\\\\"primary\\\\\"}\n      isDisabled={false}\n      count={42}\n      config={{\n        showIcon: true,\n        iconPosition: \\\\\"left\\\\\",\n      }}\n    />\n  );\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/__snapshots__/personalization-container.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Builder Personalization Container/Variants > Snapshot PersonalizedContainer 1`] = `\n{\n  \"@type\": \"@builder.io/sdk:Element\",\n  \"actions\": {},\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/sdk:Element\",\n      \"actions\": {},\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/sdk:Element\",\n          \"bindings\": {},\n          \"component\": {\n            \"name\": \"Text\",\n            \"options\": {\n              \"text\": \"Default\",\n            },\n          },\n          \"tagName\": \"span\",\n        },\n      ],\n      \"code\": {\n        \"actions\": {},\n        \"bindings\": {},\n      },\n      \"properties\": {},\n      \"tagName\": \"div\",\n    },\n    {\n      \"@type\": \"@builder.io/sdk:Element\",\n      \"actions\": {},\n      \"bindings\": {},\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/sdk:Element\",\n          \"bindings\": {},\n          \"component\": {\n            \"name\": \"Text\",\n            \"options\": {\n              \"text\": \"More tree\",\n            },\n          },\n          \"tagName\": \"span\",\n        },\n      ],\n      \"code\": {\n        \"actions\": {},\n        \"bindings\": {},\n      },\n      \"properties\": {},\n      \"tagName\": \"div\",\n    },\n  ],\n  \"code\": {\n    \"actions\": {},\n    \"bindings\": {},\n  },\n  \"component\": {\n    \"name\": \"PersonalizationContainer\",\n    \"options\": {\n      \"variants\": [\n        {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/sdk:Element\",\n                  \"bindings\": {},\n                  \"component\": {\n                    \"name\": \"Text\",\n                    \"options\": {\n                      \"text\": \"Home\",\n                    },\n                  },\n                  \"tagName\": \"span\",\n                },\n              ],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"properties\": {},\n              \"tagName\": \"div\",\n            },\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/sdk:Element\",\n                  \"bindings\": {},\n                  \"component\": {\n                    \"name\": \"Text\",\n                    \"options\": {\n                      \"text\": \"Div\",\n                    },\n                  },\n                  \"tagName\": \"span\",\n                },\n              ],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"properties\": {},\n              \"tagName\": \"div\",\n            },\n          ],\n          \"name\": \"variant1\",\n          \"query\": [\n            {\n              \"@type\": \"@builder.io/core:Query\",\n              \"operation\": \"is\",\n              \"property\": \"urlPath\",\n              \"value\": \"/home\",\n            },\n          ],\n          \"startDate\": \"2024-01-01\",\n        },\n        {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/sdk:Element\",\n                  \"bindings\": {},\n                  \"component\": {\n                    \"name\": \"Text\",\n                    \"options\": {\n                      \"text\": \"Red\",\n                    },\n                  },\n                  \"tagName\": \"span\",\n                },\n              ],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"Core:Fragment\",\n              },\n            },\n          ],\n          \"name\": \"2\",\n          \"query\": [\n            {\n              \"@type\": \"@builder.io/core:Query\",\n              \"operation\": \"is\",\n              \"property\": \"favoriteColor\",\n              \"value\": [\n                \"red\",\n                \"blue\",\n              ],\n            },\n          ],\n        },\n      ],\n    },\n  },\n}\n`;\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/builder.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToHtml } from '@/generators/html';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { ToMitosisOptions } from '@/generators/mitosis/types';\nimport { componentToReact } from '@/generators/react';\nimport { componentToVue } from '@/generators/vue';\nimport { dedent } from '@/helpers/dedent';\nimport {\n  builderContentToMitosisComponent,\n  builderElementToMitosisNode,\n  extractStateHook,\n} from '@/parsers/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport { compileAwayBuilderComponents } from '@/plugins/compile-away-builder-components';\nimport { BuilderContent } from '@builder.io/sdk';\n\nimport { componentToAngular } from '@/generators/angular';\nimport {\n  compileAwayBuilderComponentsFromTree,\n  components as compileAwayComponents,\n} from '@/plugins/compile-away-builder-components';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { get } from 'lodash';\nimport columns from '../data/blocks/columns.raw.tsx?raw';\nimport customCode from '../data/blocks/custom-code.raw.tsx?raw';\nimport embed from '../data/blocks/embed.raw.tsx?raw';\nimport image from '../data/blocks/image.raw.tsx?raw';\nimport indexInFor from '../data/blocks/index-in-for.raw.tsx?raw';\nimport stamped from '../data/blocks/stamped-io.raw.tsx?raw';\nimport booleanContent from '../data/builder/boolean.json?raw';\nimport customComponentSlotPropertyContent from '../data/builder/custom-component-slot-property.json?raw';\nimport customComponentTags from '../data/builder/custom-component-tags.json?raw';\nimport lazyLoadSection from '../data/builder/lazy-load-section.json?raw';\nimport localization from '../data/builder/localization.json?raw';\nimport slotsContent from '../data/builder/slots.json?raw';\nimport slots2Content from '../data/builder/slots2.json?raw';\nimport symbolBasic from '../data/builder/symbol-basic.json?raw';\nimport symbolMultiple from '../data/builder/symbol-multiple.json?raw';\nimport symbolWithInputs from '../data/builder/symbol-with-inputs.json?raw';\nimport symbolWithNamedEntry from '../data/builder/symbol-with-named-entry.json?raw';\nimport tagNameContent from '../data/builder/tag-name.json?raw';\nimport textBindings from '../data/builder/text-bindings.json?raw';\nimport advancedFor from '../data/for/advanced-for.raw.tsx?raw';\nimport asyncBindings from '../data/ref/basic-ref-assignment.raw.tsx?raw';\nimport show from '../data/show/show-expressions.raw.tsx?raw';\n\nconst mitosisOptions: ToMitosisOptions = {\n  format: 'legacy',\n};\n\ndescribe('Builder', () => {\n  test('extractStateHook', () => {\n    const code = `useState({ foo: 'bar' }); alert('hi');`;\n    expect(extractStateHook(code)).matchSnapshot();\n  });\n\n  test('Stamped', () => {\n    const component = parseJsx(stamped);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Show', () => {\n    const component = parseJsx(show);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Advanced For', () => {\n    const component = parseJsx(advancedFor);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('CustomCode', () => {\n    const component = parseJsx(customCode);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('async bindings', () => {\n    const component = parseJsx(asyncBindings);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Embed', () => {\n    const component = parseJsx(embed);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Index inside For', () => {\n    const component = parseJsx(indexInFor);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Image', () => {\n    const component = parseJsx(image);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Columns', () => {\n    const component = parseJsx(columns);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: backToMitosis });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Section', async () => {\n    const component = builderContentToMitosisComponent(JSON.parse(lazyLoadSection));\n\n    const html = await componentToHtml({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n\n    expect(html).toMatchSnapshot();\n  });\n\n  test('Text with bindings', async () => {\n    const originalBuilder = JSON.parse(textBindings);\n    const component = builderContentToMitosisComponent(originalBuilder);\n    const mitosisJsx = componentToMitosis()({ component });\n\n    expect(component).toMatchSnapshot();\n    expect(mitosisJsx).toMatchSnapshot();\n\n    const backToBuilder = componentToBuilder()({ component });\n    expect(backToBuilder).toMatchSnapshot();\n  });\n\n  test('Custom Component Tags in Angular', async () => {\n    const originalBuilder = JSON.parse(customComponentTags);\n    const component = builderContentToMitosisComponent(originalBuilder, {\n      includeMeta: true,\n    });\n    const angularJsx = componentToAngular()({ component });\n\n    expect(angularJsx).toMatchSnapshot();\n  });\n\n  test('Regenerate Image', () => {\n    const code = dedent`\n      import { useStore } from \"@builder.io/mitosis\";\n      import { Image } from \"@components\";\n\n      export default function MyComponent(props) {\n        const state = useStore({ people: [\"Steve\", \"Sewell\"] });\n\n        return (\n          <div\n            css={{\n              padding: \"20px\",\n            }}\n          >\n            <Image\n              image=\"https://cdn.builder.io/api/v1/image/foobar\"\n              sizes=\"100vw\"\n              backgroundSize=\"contain\"\n              css={{\n                marignTop: \"50px\",\n                display: \"block\",\n              }}\n            />\n          </div>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis.state).toEqual(component.state);\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n    const react = componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n    expect(react).toMatchSnapshot();\n  });\n\n  test('Regenerate Text', () => {\n    const code = dedent`\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({ people: [\"Steve\", \"Sewell\"] });\n\n        return (\n          <div\n            css={{\n              padding: \"20px\",\n            }}\n          >\n            <h2\n              css={{\n                marginBottom: \"20px\",\n              }}\n            >\n              Hello!\n            </h2>\n          </div>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n\n    compileAwayBuilderComponentsFromTree(backToMitosis, compileAwayComponents);\n\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  test('Fragment', () => {\n    const code = dedent`\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({ people: [\"Steve\", \"Sewell\"] });\n\n        return (\n          <Fragment>\n            Hello!\n          </Fragment>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n  });\n\n  test('Regenerate loop', () => {\n    const code = dedent`\n      import { useStore, For } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({ people: [\"Steve\", \"Sewell\"] });\n\n        onMount(() => {\n          state.people.push(\"John\");\n        });\n\n        return (\n          <For each={state.people}>\n            {(person, index) => (\n              <div\n                key={person}\n                css={{\n                  padding: \"10px 0\",\n                }}\n              >\n                <span>{person}</span>\n                <span>{index}</span>\n              </div>\n            )}\n          </For>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    compileAwayBuilderComponentsFromTree(backToMitosis, compileAwayComponents);\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  test('Regenerate loop with Text node when using CSS', () => {\n    const builderJson: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element',\n            '@version': 2,\n            repeat: {\n              collection: 'state.submenusItem.menuItems',\n            },\n            id: 'builder-ID',\n            class: 'class-id',\n            component: {\n              name: 'Text',\n              options: {\n                text: 'text-content',\n              },\n            },\n            responsiveStyles: {\n              large: {\n                padding: '2px',\n              },\n            },\n          },\n        ],\n      },\n    } as BuilderContent;\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toMatchSnapshot();\n  });\n\n  test('No srcset for SVG', async () => {\n    const builderJson: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element',\n            component: {\n              name: 'Image',\n              options: {\n                image: 'https://cdn.builder.io/api/v1/image/dummy.svg',\n                noWebp: true,\n              },\n            },\n          },\n        ],\n      },\n    } as BuilderContent;\n    const component = builderContentToMitosisComponent(builderJson);\n    const html = await componentToHtml({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n    expect(html).toMatchSnapshot();\n  });\n\n  test('Valid Custom Code', async () => {\n    const builderJson: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element',\n            component: {\n              name: 'CustomCode',\n              options: {\n                code: `<svg width=\"200\" height=\"200\"></svg>`,\n              },\n            },\n          },\n        ],\n      },\n    } as BuilderContent;\n    const component = builderContentToMitosisComponent(builderJson);\n\n    const vue = componentToVue({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n    expect(vue).toMatchSnapshot();\n\n    const react = componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n    expect(react).toMatchSnapshot();\n  });\n\n  test('Regenerate custom Hero', () => {\n    const code = dedent`\n      import { Hero } from \"@components\";\n\n      export default function MyComponent(props) {\n        return (\n          <Hero\n            title=\"Your Title Here\"\n            image=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F52dcecf48f9c48cc8ddd8f81fec63236\"\n            buttonLink=\"https://example.com\"\n            buttonText=\"Click\"\n            multiBinding={{\n              hello: state.message,\n            }}\n            height={400}\n            css={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              alignItems: \"stretch\",\n              position: \"relative\",\n              flexShrink: \"0\",\n              boxSizing: \"border-box\",\n              marginTop: \"200px\",\n            }}\n          />\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    expect(component).toMatchSnapshot();\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis).toMatchSnapshot();\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  // TODO: fix divs and CoreFragment - need to find way to reproduce\n  test.skip('Regenerate fragments', () => {\n    const code = dedent`\n      export default function MyComponent(props) {\n        return (\n          <>\n            Hello world\n\n            <>\n              <Fragment>Hi</Fragment>\n            </>\n          </>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    expect(component).toMatchSnapshot();\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson).toMatchSnapshot();\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis).toMatchSnapshot();\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  // TODO: get passing, don't add extra divs. or at least use spans instead so don't break layout\n  test.skip('Regenerate span text', () => {\n    const code = dedent`\n      export default function MyComponent(props) {\n        return (\n          <div\n            css={{\n              display: \"block\",\n            }}\n          >\n            Hi there\n            <span\n              css={{\n                color: \"red\",\n              }}\n            >\n              Hello world\n            </span>\n          </div>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  test('slots', async () => {\n    const component = builderContentToMitosisComponent(JSON.parse(slotsContent));\n\n    const out = await componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n\n    expect(component).toMatchSnapshot();\n    expect(out).toMatchSnapshot();\n  });\n\n  test('slots2', async () => {\n    const component = builderContentToMitosisComponent(JSON.parse(slots2Content));\n\n    const out = await componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n\n    expect(component).toMatchSnapshot();\n    expect(out).toMatchSnapshot();\n  });\n\n  test('customComponentSlotProperty', async () => {\n    const component = builderContentToMitosisComponent(\n      JSON.parse(customComponentSlotPropertyContent),\n    );\n\n    const out = await componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n\n    expect(component).toMatchSnapshot();\n    expect(out).toMatchSnapshot();\n  });\n\n  test('booleans', async () => {\n    const component = builderContentToMitosisComponent(JSON.parse(booleanContent));\n\n    const out = await componentToReact({\n      plugins: [compileAwayBuilderComponents()],\n    })({ component });\n\n    expect(component).toMatchSnapshot();\n    expect(out).toMatchSnapshot();\n  });\n\n  test('tagName', async () => {\n    const component = builderContentToMitosisComponent(JSON.parse(tagNameContent));\n    expect(component).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/component\",\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"num\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"10\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"CounterComponent\",\n                \"properties\": {\n                  \"$tagName\": \"counter\",\n                },\n                \"scope\": {},\n                \"slots\": {},\n              },\n            ],\n            \"meta\": {},\n            \"name\": \"ProgressBar\",\n            \"properties\": {\n              \"$name\": \"ProgressBar\",\n              \"$tagName\": \"progress-bar\",\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"context\": {\n          \"get\": {},\n          \"set\": {},\n        },\n        \"exports\": {},\n        \"hooks\": {\n          \"onEvent\": [],\n          \"onMount\": [],\n        },\n        \"imports\": [],\n        \"inputs\": undefined,\n        \"meta\": {\n          \"useMetadata\": {\n            \"httpRequests\": undefined,\n          },\n        },\n        \"name\": \"MyComponent\",\n        \"refs\": {},\n        \"state\": {},\n        \"subComponents\": [],\n      }\n    `);\n\n    const react = await componentToReact({})({ component });\n    const vue = await componentToVue({})({ component });\n    const angular = await componentToAngular({})({ component });\n\n    expect(react).toMatchInlineSnapshot(`\n      \"import * as React from \\\\\"react\\\\\";\n\n      function MyComponent(props) {\n        return (\n          <ProgressBar num={10}>\n            <CounterComponent />\n          </ProgressBar>\n        );\n      }\n\n      export default MyComponent;\n      \"\n    `);\n\n    expect(vue).toMatchInlineSnapshot(`\n      \"<template>\n        <progress-bar :num=\\\\\"10\\\\\"><counter></counter></progress-bar>\n      </template>\n\n      <script>\n      import { defineComponent } from \\\\\"vue\\\\\";\n\n      export default defineComponent({\n        name: \\\\\"my-component\\\\\",\n      });\n      </script>\"\n    `);\n\n    expect(angular).toMatchInlineSnapshot(`\n      \"import { NgModule } from \\\\\"@angular/core\\\\\";\n      import { CommonModule } from \\\\\"@angular/common\\\\\";\n\n      import { Component } from \\\\\"@angular/core\\\\\";\n\n      @Component({\n        selector: \\\\\"my-component\\\\\",\n        template: \\` <progress-bar [num]=\\\\\"10\\\\\"><counter></counter></progress-bar> \\`,\n        styles: [\n          \\`\n            :host {\n              display: contents;\n            }\n          \\`,\n        ],\n      })\n      export default class MyComponent {}\n\n      @NgModule({\n        declarations: [MyComponent],\n        imports: [CommonModule, ProgressBarModule, CounterComponentModule],\n        exports: [MyComponent],\n      })\n      export class MyComponentModule {}\n      \"\n    `);\n  });\n\n  test('bindings', () => {\n    const component = builderContentToMitosisComponent(bindingJson as any as BuilderContent);\n    expect(component).toMatchSnapshot();\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component,\n    });\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('localization', () => {\n    const originalBuilder = JSON.parse(localization);\n    const component = builderContentToMitosisComponent(originalBuilder);\n    const mitosisJsx = componentToMitosis()({ component });\n    expect(component).toMatchSnapshot();\n    expect(mitosisJsx).toMatchSnapshot();\n\n    const backToBuilder = componentToBuilder()({ component });\n    expect(backToBuilder).toMatchSnapshot();\n  });\n\n  test('null values', () => {\n    const component = builderElementToMitosisNode(\n      {\n        '@type': '@builder.io/sdk:Element' as const,\n        '@version': 2,\n        id: 'builder-170e19cac58e4c28998d443a9dce80b8',\n        component: {\n          name: 'CustomText',\n          options: {\n            text: 'hello',\n            text2: null,\n          },\n        },\n        properties: {\n          href: '',\n        },\n      },\n      {},\n    );\n\n    expect(component).toMatchSnapshot();\n  });\n\n  test('preserve cssCode when converting', () => {\n    const builderJson: BuilderContent = {\n      data: {\n        cssCode: dedent`\n        .foo {\n          background: green;\n        }\n\n        .bar {\n          font-weight: bold;\n        }\n      `,\n        blocks: [],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(builderToMitosis.meta.cssCode).toMatchSnapshot();\n\n    const mitosisToBuilder = componentToBuilder()({ component: builderToMitosis })!;\n    expect(mitosisToBuilder.data!.cssCode).toMatchSnapshot();\n\n    const jsx = componentToMitosis(mitosisOptions)({\n      component: builderToMitosis,\n    });\n    expect(jsx).toMatchSnapshot();\n\n    const jsxToMitosis = parseJsx(jsx);\n    expect(jsxToMitosis.style).toMatchSnapshot();\n  });\n\n  test('do not strip falsey style values', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            responsiveStyles: {\n              large: {\n                background: 'blue',\n                zIndex: '0',\n              },\n            },\n            children: [\n              {\n                '@type': '@builder.io/sdk:Element' as const,\n                component: {\n                  name: 'Text',\n                  options: {\n                    text: 'AI Explained',\n                  },\n                },\n              },\n            ],\n          },\n        ],\n      },\n    };\n\n    const mitosisJson = builderContentToMitosisComponent(content);\n\n    expect(mitosisJson.children[0].bindings).toMatchInlineSnapshot(`\n      {\n        \"css\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{\\\\\"background\\\\\":\\\\\"blue\\\\\",\\\\\"zIndex\\\\\":\\\\\"0\\\\\"}\",\n          \"type\": \"single\",\n        },\n      }\n    `);\n  });\n\n  test('do not generate empty expression for width on Column', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Columns',\n              options: {\n                columns: [{ blocks: [] }, { blocks: [], width: 50 }],\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisJson = builderContentToMitosisComponent(content);\n\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: mitosisJson,\n    });\n\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { Columns, Column } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <Columns>\n            <Column />\n            <Column width={50} />\n          </Columns>\n        );\n      }\n      \"\n    `);\n  });\n\n  test('map Column widths', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Columns',\n              options: {\n                columns: [{ blocks: [], width: 50 }, { blocks: [] }],\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisJson = builderContentToMitosisComponent(content);\n\n    const backToBuilder = componentToBuilder()({ component: mitosisJson });\n    expect(backToBuilder).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"Columns\",\n                \"options\": {\n                  \"columns\": [\n                    {\n                      \"blocks\": [],\n                      \"width\": 50,\n                    },\n                    {\n                      \"blocks\": [],\n                    },\n                  ],\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n\n  test('nodes as props', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Foo',\n              options: {\n                prop: [\n                  {\n                    '@type': '@builder.io/sdk:Element' as const,\n                    component: {\n                      name: 'Bar',\n                      options: {\n                        hello: 'world',\n                      },\n                    },\n                  },\n                ],\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisJson = builderContentToMitosisComponent(content);\n    expect(mitosisJson).toMatchSnapshot();\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: mitosisJson,\n    });\n\n    expect(mitosis).toMatchSnapshot();\n\n    const builder = parseJsx(mitosis);\n    expect(builder).toMatchSnapshot();\n    const json = componentToBuilder()({ component: builder });\n    expect(json).toMatchSnapshot();\n    expect(json.data?.blocks?.[0]?.component?.name).toBe('Foo');\n    expect(json.data?.blocks?.[0]?.component?.options?.prop?.[0]?.component?.options.hello).toBe(\n      'world',\n    );\n  });\n\n  test('preserve bound call expressions for styles', () => {\n    const code = dedent`\n    import { useStore } from \"@builder.io/mitosis\";\n  \n    export default function MyComponent(props) {\n      const state = useStore({\n        getStyles() {\n          return {\n            color: 'red'\n          }\n        }\n      })\n      return (\n        <div style={state.getStyles()} />\n      );\n    }\n  `;\n\n    const component = parseJsx(code);\n\n    expect(component.children[0]).toMatchInlineSnapshot(`\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.getStyles()\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n    }\n  `);\n\n    const builderJson = componentToBuilder()({ component });\n\n    expect(builderJson.data!.blocks![0]).toMatchInlineSnapshot(`\n    {\n      \"@type\": \"@builder.io/sdk:Element\",\n      \"actions\": {},\n      \"bindings\": {\n        \"style\": \"state.getStyles()\",\n      },\n      \"children\": [],\n      \"code\": {\n        \"actions\": {},\n        \"bindings\": {},\n      },\n      \"properties\": {},\n      \"tagName\": \"div\",\n    }\n  `);\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n\n    expect(backToMitosis.children[0]).toMatchInlineSnapshot(`\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"bindings\": {\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.getStyles()\",\n          \"type\": \"single\",\n        },\n      },\n      \"children\": [],\n      \"meta\": {},\n      \"name\": \"div\",\n      \"properties\": {},\n      \"scope\": {},\n      \"slots\": {},\n    }\n  `);\n\n    const mitosis = componentToMitosis(mitosisOptions)({\n      component: backToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { useStore } from \\\\\"@builder.io/mitosis\\\\\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getStyles() {\n            return {\n              color: \\\\\"red\\\\\",\n            };\n          },\n        });\n\n        return <div style={state.getStyles()} />;\n      }\n      \"\n    `);\n  });\n\n  test('invalid style values are removed', () => {\n    const code = dedent`  \n    export default function MyComponent(props) {\n      return (\n        <div style={false} />\n      );\n    }\n  `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n\n    expect(builderJson.data!.blocks![0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"div\",\n      }\n    `);\n  });\n\n  test('drop unsupported bound styles to avoid crashes', () => {\n    const jsx = `export default function MyComponent(props) {\n      return (\n        <div\n          style={{\n            fontSize: state.fontSize,\n            '&:hover': {\n              backgroundColor: state.foo === 1 ? \"red\" : \"blue\"\n            }\n          }}\n        />\n      );\n    }`;\n\n    const mitosis = parseJsx(jsx);\n\n    const json = componentToBuilder()({ component: mitosis });\n    expect(json).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {\n                \"style.fontSize\": \"state.fontSize\",\n              },\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"properties\": {},\n              \"tagName\": \"div\",\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n\n  test('map custom component bindings', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            '@version': 2,\n            component: {\n              name: 'Header',\n              options: {\n                variant: 'h1',\n                description: 'Collection description',\n                actions: [\n                  {\n                    '@type': '@builder.io/sdk:Element',\n                    '@version': 2,\n                    component: {\n                      name: 'Button',\n                    },\n                  },\n                  {\n                    '@type': '@builder.io/sdk:Element',\n                    '@version': 2,\n                    component: {\n                      name: 'Button',\n                    },\n                  },\n                ],\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosis = builderContentToMitosisComponent(content);\n    expect(mitosis.children).toMatchInlineSnapshot(`\n      [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {},\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Header\",\n          \"properties\": {\n            \"$tagName\": undefined,\n            \"description\": \"Collection description\",\n            \"variant\": \"h1\",\n          },\n          \"scope\": {},\n          \"slots\": {\n            \"actions\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"Button\",\n                \"properties\": {},\n                \"scope\": {},\n                \"slots\": {},\n              },\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"Button\",\n                \"properties\": {},\n                \"scope\": {},\n                \"slots\": {},\n              },\n            ],\n          },\n        },\n      ]\n    `);\n\n    const jsx = componentToMitosis()({ component: mitosis });\n    expect(jsx).toMatchInlineSnapshot(`\n      \"import { Header, Button } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <Header\n            variant=\\\\\"h1\\\\\"\n            description=\\\\\"Collection description\\\\\"\n            actions={\n              <>\n                <Button />\n                <Button />\n              </>\n            }\n          />\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(jsx);\n    expect(backToMitosis.children).toMatchInlineSnapshot(`\n      [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"bindings\": {\n            \"actions\": {\n              \"bindingType\": \"expression\",\n              \"code\": \"<>\n                <Button />\n                <Button />\n              </>\",\n              \"type\": \"single\",\n            },\n          },\n          \"children\": [],\n          \"meta\": {},\n          \"name\": \"Header\",\n          \"properties\": {\n            \"description\": \"Collection description\",\n            \"variant\": \"h1\",\n          },\n          \"scope\": {},\n          \"slots\": {\n            \"actions\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"Button\",\n                    \"properties\": {},\n                    \"scope\": {},\n                  },\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"Button\",\n                    \"properties\": {},\n                    \"scope\": {},\n                  },\n                ],\n                \"meta\": {},\n                \"name\": \"Fragment\",\n                \"properties\": {},\n                \"scope\": {},\n              },\n            ],\n          },\n        },\n      ]\n    `);\n\n    const json = componentToBuilder()({ component: backToMitosis });\n    expect(json).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"Header\",\n                \"options\": {\n                  \"actions\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"actions\": {},\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"component\": {\n                            \"name\": \"Button\",\n                            \"options\": {},\n                          },\n                        },\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"component\": {\n                            \"name\": \"Button\",\n                            \"options\": {},\n                          },\n                        },\n                      ],\n                      \"code\": {\n                        \"actions\": {},\n                        \"bindings\": {},\n                      },\n                      \"component\": {\n                        \"name\": \"Core:Fragment\",\n                      },\n                    },\n                  ],\n                  \"description\": \"Collection description\",\n                  \"variant\": \"h1\",\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n\n  test('map each component option to either component.options or bindings but not both', () => {\n    const jsx = `export default function MyComponent(props) {\n      return (\n        <Image aspectRatio={1} src={state.src} />\n      );\n    }`;\n\n    const mitosis = parseJsx(jsx);\n\n    const json = componentToBuilder()({ component: mitosis });\n    expect(json).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {\n                \"component.options.src\": \"state.src\",\n              },\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {\n                  \"component.options.src\": \"state.src\",\n                },\n              },\n              \"component\": {\n                \"name\": \"Image\",\n                \"options\": {\n                  \"aspectRatio\": 1,\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n\n  test('layerLocked property transfer', () => {\n    const component = builderElementToMitosisNode(\n      {\n        '@type': '@builder.io/sdk:Element',\n        '@version': 2,\n        id: 'builder-test-layer-locked',\n        layerLocked: true,\n        layerName: 'test-layer',\n        tagName: 'div',\n        properties: {\n          class: 'test-class',\n        },\n      } as any,\n      {},\n    );\n\n    expect(component.properties['data-builder-layerLocked']).toBe('true');\n    expect(component.properties.$name).toBe('test-layer');\n    expect(component.properties.class).toBe('test-class');\n  });\n\n  test('layerLocked undefined does not add property', () => {\n    const component = builderElementToMitosisNode(\n      {\n        '@type': '@builder.io/sdk:Element' as const,\n        '@version': 2,\n        id: 'builder-test-no-layer-locked',\n        tagName: 'div',\n      },\n      {},\n    );\n\n    expect(component.properties['data-builder-layerLocked']).toBeUndefined();\n  });\n\n  test('layerLocked roundtrip conversion', () => {\n    const originalBuilder = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            '@version': 2,\n            id: 'builder-test-roundtrip',\n            layerLocked: true,\n            layerName: 'test-layer',\n            tagName: 'div',\n            properties: {\n              class: 'test-class',\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisComponent = builderContentToMitosisComponent(originalBuilder);\n\n    expect(mitosisComponent.children[0].properties['data-builder-layerLocked']).toBe('true');\n    expect(mitosisComponent.children[0].properties.$name).toBe('test-layer');\n\n    const backToBuilder = componentToBuilder()({ component: mitosisComponent });\n\n    expect(backToBuilder.data?.blocks?.[0]?.layerLocked).toBe(true);\n    expect(backToBuilder.data?.blocks?.[0]?.layerName).toBe('test-layer');\n  });\n\n  test('groupLocked property transfer', () => {\n    const component = builderElementToMitosisNode(\n      {\n        '@type': '@builder.io/sdk:Element' as const,\n        '@version': 2,\n        id: 'builder-test-group-locked',\n        groupLocked: true,\n        layerName: 'test-layer',\n        tagName: 'div',\n        properties: {\n          class: 'test-class',\n        },\n      },\n      {},\n    );\n\n    expect(component.properties['data-builder-groupLocked']).toBe('true');\n    expect(component.properties.$name).toBe('test-layer');\n    expect(component.properties.class).toBe('test-class');\n  });\n\n  test('groupLocked undefined does not add property', () => {\n    const component = builderElementToMitosisNode(\n      {\n        '@type': '@builder.io/sdk:Element' as const,\n        '@version': 2,\n        id: 'builder-test-no-group-locked',\n        tagName: 'div',\n      },\n      {},\n    );\n\n    expect(component.properties['data-builder-groupLocked']).toBeUndefined();\n  });\n\n  test('groupLocked roundtrip conversion', () => {\n    const originalBuilder = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            '@version': 2,\n            id: 'builder-test-group-roundtrip',\n            groupLocked: true,\n            layerName: 'test-layer',\n            tagName: 'div',\n            properties: {\n              class: 'test-class',\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisComponent = builderContentToMitosisComponent(originalBuilder);\n\n    expect(mitosisComponent.children[0].properties['data-builder-groupLocked']).toBe('true');\n    expect(mitosisComponent.children[0].properties.$name).toBe('test-layer');\n\n    const backToBuilder = componentToBuilder()({ component: mitosisComponent });\n\n    expect(backToBuilder.data?.blocks?.[0]?.groupLocked).toBe(true);\n    expect(backToBuilder.data?.blocks?.[0]?.layerName).toBe('test-layer');\n  });\n\n  test('converts <For> loop to Builder format', () => {\n    const mitosisComponent: MitosisComponent = {\n      '@type': '@builder.io/mitosis/component' as const,\n      imports: [],\n      exports: {},\n      inputs: [],\n      meta: {},\n      refs: {},\n      state: {\n        dataBuilderList1: {\n          type: 'property',\n          code: '[1,2,3,4,5]',\n          propertyType: 'normal',\n        },\n      },\n      children: [\n        {\n          '@type': '@builder.io/mitosis/node',\n          name: 'For',\n          meta: {},\n          scope: {},\n          properties: {},\n          bindings: {\n            each: {\n              code: '[1, 2, 3]',\n              bindingType: 'expression',\n              type: 'single',\n            },\n          },\n          children: [\n            {\n              '@type': '@builder.io/mitosis/node',\n              name: 'div',\n              meta: {},\n              scope: {},\n              properties: {},\n              bindings: {},\n              children: [],\n            },\n          ],\n        },\n      ],\n      context: {\n        get: {},\n        set: {},\n      },\n      subComponents: [],\n      name: 'MyComponent',\n      hooks: {\n        onMount: [],\n        onEvent: [],\n      },\n    };\n\n    const builderJson = componentToBuilder()({ component: mitosisComponent });\n\n    expect(builderJson).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/sdk:Element\",\n                  \"actions\": {},\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"code\": {\n                    \"actions\": {},\n                    \"bindings\": {},\n                  },\n                  \"properties\": {},\n                  \"tagName\": \"div\",\n                },\n              ],\n              \"component\": {\n                \"name\": \"Core:Fragment\",\n              },\n              \"repeat\": {\n                \"collection\": \"state.dataBuilderList2\",\n              },\n            },\n          ],\n          \"jsCode\": \"Object.assign(state, { dataBuilderList1: [1, 2, 3, 4, 5] });\n      \",\n          \"state\": {\n            \"dataBuilderList1\": [\n              1,\n              2,\n              3,\n              4,\n              5,\n            ],\n            \"dataBuilderList2\": [\n              1,\n              2,\n              3,\n            ],\n          },\n          \"tsCode\": \"useStore({ dataBuilderList1: [1, 2, 3, 4, 5] });\n      \",\n        },\n      }\n    `);\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/component\",\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"each\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"state.dataBuilderList2\",\n                \"type\": \"single\",\n              },\n            },\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"div\",\n                \"properties\": {},\n                \"scope\": {},\n                \"slots\": {},\n              },\n            ],\n            \"meta\": {},\n            \"name\": \"For\",\n            \"properties\": {},\n            \"scope\": {\n              \"forName\": \"item\",\n            },\n          },\n        ],\n        \"context\": {\n          \"get\": {},\n          \"set\": {},\n        },\n        \"exports\": {},\n        \"hooks\": {\n          \"onEvent\": [],\n          \"onMount\": [],\n        },\n        \"imports\": [],\n        \"inputs\": undefined,\n        \"meta\": {\n          \"useMetadata\": {\n            \"httpRequests\": undefined,\n          },\n        },\n        \"name\": \"MyComponent\",\n        \"refs\": {},\n        \"state\": {\n          \"dataBuilderList1\": {\n            \"code\": \"[1, 2, 3, 4, 5]\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n          \"dataBuilderList2\": {\n            \"code\": \"[1,2,3]\",\n            \"propertyType\": \"normal\",\n            \"type\": \"property\",\n          },\n        },\n        \"subComponents\": [],\n      }\n    `);\n  });\n\n  test('converts mitosis component with state to builder json and back', () => {\n    const mitosisComponent: MitosisComponent = {\n      '@type': '@builder.io/mitosis/component',\n      imports: [],\n      exports: {},\n      meta: {\n        useMetadata: {},\n      },\n      refs: {},\n      state: {\n        dataBuilderList1: {\n          type: 'property',\n          code: '[1,2,3]',\n          propertyType: 'normal',\n        },\n        stringValue: {\n          type: 'property',\n          code: 'hello',\n          propertyType: 'normal',\n        },\n        numberValue: {\n          type: 'property',\n          code: '1',\n          propertyType: 'normal',\n        },\n        booleanValue: {\n          type: 'property',\n          code: 'true',\n          propertyType: 'normal',\n        },\n        nullValue: {\n          type: 'property',\n          code: 'null',\n          propertyType: 'normal',\n        },\n        undefinedValue: {\n          type: 'property',\n          code: 'undefined',\n          propertyType: 'normal',\n        },\n        fn: {\n          code: 'function () {\\n  console.log(\"fn\");\\n}',\n          type: 'function',\n        },\n      },\n      children: [\n        {\n          '@type': '@builder.io/mitosis/node',\n          name: 'For',\n          meta: {},\n          scope: {\n            forName: 'item',\n          },\n          properties: {},\n          bindings: {\n            each: {\n              code: 'state.dataBuilderList1',\n              bindingType: 'expression',\n              type: 'single',\n            },\n          },\n          children: [\n            {\n              '@type': '@builder.io/mitosis/node',\n              name: 'div',\n              meta: {},\n              scope: {},\n              properties: {},\n              bindings: {},\n              children: [\n                {\n                  '@type': '@builder.io/mitosis/node',\n                  name: 'div',\n                  meta: {},\n                  scope: {},\n                  properties: {\n                    _text: 'Hello',\n                  },\n                  bindings: {},\n                  children: [],\n                },\n              ],\n              slots: {},\n            },\n          ],\n        },\n      ],\n      context: {\n        get: {},\n        set: {},\n      },\n      inputs: [],\n      subComponents: [],\n      name: 'MyComponent',\n      hooks: {\n        onMount: [],\n        onEvent: [],\n      },\n    };\n\n    const builderJson = componentToBuilder()({ component: mitosisComponent });\n    expect(builderJson).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/sdk:Element\",\n                  \"actions\": {},\n                  \"bindings\": {},\n                  \"children\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"bindings\": {},\n                      \"component\": {\n                        \"name\": \"Text\",\n                        \"options\": {\n                          \"text\": \"Hello\",\n                        },\n                      },\n                      \"tagName\": \"span\",\n                    },\n                  ],\n                  \"code\": {\n                    \"actions\": {},\n                    \"bindings\": {},\n                  },\n                  \"properties\": {},\n                  \"tagName\": \"div\",\n                },\n              ],\n              \"component\": {\n                \"name\": \"Core:Fragment\",\n              },\n              \"repeat\": {\n                \"collection\": \"state.dataBuilderList1\",\n                \"itemName\": \"item\",\n              },\n            },\n          ],\n          \"jsCode\": \"Object.assign(state, {\n        dataBuilderList1: [1, 2, 3],\n        stringValue: hello,\n        numberValue: 1,\n        booleanValue: true,\n        nullValue: null,\n        undefinedValue: undefined,\n        fn: function () {\n          console.log(\\\\\"fn\\\\\");\n        },\n      });\n      \",\n          \"state\": {\n            \"booleanValue\": true,\n            \"dataBuilderList1\": [\n              1,\n              2,\n              3,\n            ],\n            \"nullValue\": null,\n            \"numberValue\": 1,\n            \"stringValue\": \"hello\",\n          },\n          \"tsCode\": \"useStore({\n        dataBuilderList1: [1, 2, 3],\n        stringValue: hello,\n        numberValue: 1,\n        booleanValue: true,\n        nullValue: null,\n        undefinedValue: undefined,\n        fn: function () {\n          console.log(\\\\\"fn\\\\\");\n        },\n      });\n      \",\n        },\n      }\n    `);\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis.children[0].name).toBe('For');\n    expect(backToMitosis.children[0].bindings.each?.code).toBe('state.dataBuilderList1');\n    expect(backToMitosis.state?.dataBuilderList1?.code).toBe('[1, 2, 3]');\n    expect(backToMitosis.state?.fn?.code).toBe('function () {\\n  console.log(\"fn\");\\n}');\n    expect(backToMitosis.state?.stringValue?.code).toBe('hello');\n    expect(backToMitosis.state?.numberValue?.code).toBe('1');\n    expect(backToMitosis.state?.booleanValue?.code).toBe('true');\n    expect(backToMitosis.state?.nullValue?.code).toBe('null');\n    expect(backToMitosis.state?.undefinedValue?.code).toBe('undefined');\n  });\n\n  test('handles recursive component structure', () => {\n    const mitosisComponent: MitosisComponent = {\n      '@type': '@builder.io/mitosis/component' as const,\n      imports: [],\n      exports: {\n        LocationTree: {\n          code: 'function LocationTree(location) {\\n  return <>\\n      {location.child && <LocationTree location={location.child} />}\\n    </>;\\n}',\n          isFunction: true,\n          usedInLocal: false,\n        },\n      },\n      inputs: [],\n      meta: {},\n      refs: {},\n      state: {},\n      children: [\n        {\n          '@type': '@builder.io/mitosis/node',\n          name: 'LocationTree',\n          meta: {},\n          scope: {},\n          properties: {},\n          bindings: {},\n          children: [],\n        },\n      ],\n      context: {\n        get: {},\n        set: {},\n      },\n      subComponents: [\n        {\n          '@type': '@builder.io/mitosis/component',\n          imports: [],\n          exports: {},\n          inputs: [],\n          meta: {},\n          refs: {},\n          state: {},\n          children: [\n            {\n              '@type': '@builder.io/mitosis/node',\n              name: 'Fragment',\n              meta: {},\n              scope: {},\n              properties: {},\n              bindings: {},\n              children: [\n                {\n                  '@type': '@builder.io/mitosis/node',\n                  name: 'Show',\n                  meta: {},\n                  scope: {},\n                  properties: {},\n                  bindings: {\n                    when: {\n                      code: 'location.child',\n                      bindingType: 'expression',\n                      type: 'single',\n                    },\n                  },\n                  children: [\n                    {\n                      '@type': '@builder.io/mitosis/node',\n                      name: 'LocationTree',\n                      meta: {},\n                      scope: {},\n                      properties: {},\n                      bindings: {\n                        location: {\n                          code: 'location.child',\n                          bindingType: 'expression',\n                          type: 'single',\n                        },\n                      },\n                      children: [],\n                    },\n                  ],\n                },\n              ],\n            },\n          ],\n          context: {\n            get: {},\n            set: {},\n          },\n          subComponents: [],\n          name: 'LocationTree',\n          hooks: {\n            onMount: [],\n            onEvent: [],\n          },\n        },\n      ],\n      name: 'ExploreKaryakar',\n      hooks: {\n        onMount: [],\n        onEvent: [],\n      },\n    };\n\n    const builderJson = componentToBuilder({})({\n      component: mitosisComponent,\n    });\n    expect(builderJson.data?.blocks?.[0]?.component?.name).toBe('LocationTree');\n    let tempElement = builderJson.data?.blocks?.[0];\n    for (let i = 0; i < 5; i++) {\n      expect(tempElement?.component?.name).toBe('LocationTree');\n      tempElement = get(\n        tempElement,\n        'component.options.symbol.content.data.blocks[0].children[0].children[0]',\n      );\n    }\n    expect(tempElement).toBeUndefined();\n    expect(builderJson).toMatchSnapshot();\n\n    expect(() => builderContentToMitosisComponent(builderJson)).not.toThrow();\n  });\n});\n\nconst bindingJson = {\n  data: {\n    inputs: [\n      {\n        '@type': '@builder.io/core:Field',\n        meta: {},\n        name: 'text',\n        type: 'text',\n        defaultValue: 'Hello',\n        required: false,\n        subFields: [],\n        helperText: '',\n        autoFocus: false,\n        simpleTextOnly: false,\n        disallowRemove: false,\n        broadcast: false,\n        bubble: false,\n        hideFromUI: false,\n        hideFromFieldsEditor: false,\n        showTemplatePicker: true,\n        permissionsRequiredToEdit: '',\n        advanced: false,\n        copyOnAdd: true,\n        onChange: '',\n        showIf: '',\n        mandatory: false,\n        hidden: false,\n        noPhotoPicker: false,\n        model: '',\n        supportsAiGeneration: false,\n        defaultCollapsed: false,\n      },\n    ],\n    cssCode: 'builder-component { max-width: none !important; }',\n    blocks: [\n      {\n        component: {\n          name: 'Button',\n          options: {\n            label: 'hello',\n          },\n        },\n        code: {\n          bindings: {\n            'component.options.label': 'state.text',\n          },\n        },\n      },\n      {\n        '@type': '@builder.io/sdk:Element',\n        '@version': 2,\n        id: 'builder-1e4cca42847b4712ae978bc679bf1d4a',\n        meta: {\n          id: '103:1952',\n          type: 'COMPONENT',\n          name: 'Frame 94',\n          componentProperties: null,\n          fromFigma: true,\n          vcpImportId: 'vcp-635bba9daed9496f82e2b1009dff92a2',\n        },\n        children: [\n          {\n            '@type': '@builder.io/sdk:Element',\n            '@version': 2,\n            bindings: {\n              'component.options.text': 'var _virtual_index=state.text;return _virtual_index',\n            },\n            code: { bindings: { 'component.options.text': 'state.text' } },\n            layerName: 'Book an Appointment',\n            id: 'builder-559bbc2a33124e8e843ddec300dcb5a9',\n            meta: {\n              id: '103:1951',\n              type: 'TEXT',\n              name: 'Book an Appointment',\n              componentPropertyReferences: { characters: 'Text#103:0' },\n            },\n            component: { name: 'Text', options: { text: 'BUY NOW' } },\n          },\n        ],\n        responsiveStyles: {\n          large: {\n            backgroundColor: 'rgba(0, 0, 0, 1)',\n            display: 'flex',\n            paddingLeft: '72px',\n            paddingRight: '72px',\n            paddingTop: '25px',\n            paddingBottom: '25px',\n            alignItems: 'start',\n            gap: '10px',\n            fontFamily: 'Poppins, -apple-system, Roboto, Helvetica, sans-serif',\n            fontSize: '16px',\n            color: 'rgba(255, 255, 255, 1)',\n            fontWeight: '700',\n            textTransform: 'uppercase',\n            justifyContent: 'start',\n          },\n        },\n      },\n    ],\n  },\n};\n\ndescribe('Symbol Serialization', () => {\n  test('Symbol with basic metadata', () => {\n    const builderContent = JSON.parse(symbolBasic) as BuilderContent;\n    const component = builderContentToMitosisComponent(builderContent);\n    const mitosis = componentToMitosis(mitosisOptions)({ component });\n\n    expect(component.children[0].name).toBe('SymbolBasicSymbol');\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Symbol with entry name', () => {\n    const builderContent = JSON.parse(symbolWithNamedEntry) as BuilderContent;\n    const component = builderContentToMitosisComponent(builderContent);\n    const mitosis = componentToMitosis(mitosisOptions)({ component });\n\n    expect(component.children[0].name).toBe('SymbolHeaderNavigation');\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Symbol with inputs as top-level props', () => {\n    const builderContent = JSON.parse(symbolWithInputs) as BuilderContent;\n    const component = builderContentToMitosisComponent(builderContent);\n    const mitosis = componentToMitosis(mitosisOptions)({ component });\n\n    const symbolNode = component.children[0];\n    expect({\n      name: symbolNode.name,\n      bindings: symbolNode.bindings,\n    }).toMatchSnapshot();\n\n    const symbolBinding = JSON.parse(symbolNode.bindings.symbol!.code);\n    expect(symbolBinding.data).toBeUndefined();\n\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Multiple symbols with different names', () => {\n    const builderContent = JSON.parse(symbolMultiple) as BuilderContent;\n    const component = builderContentToMitosisComponent(builderContent);\n    const mitosis = componentToMitosis(mitosisOptions)({ component });\n\n    expect(\n      component.children.map((child) => ({\n        name: child.name,\n        bindings: child.bindings,\n      })),\n    ).toMatchSnapshot();\n\n    expect(mitosis).toMatchSnapshot();\n  });\n\n  test('Symbol roundtrip: Builder -> Mitosis -> JSX -> Mitosis -> Builder', () => {\n    const original = JSON.parse(symbolWithInputs) as BuilderContent;\n\n    const mitosisComponent = builderContentToMitosisComponent(original);\n\n    const jsxString = componentToMitosis()({ component: mitosisComponent });\n\n    const parsedComponent = parseJsx(jsxString);\n\n    const backToBuilder = componentToBuilder()({ component: parsedComponent });\n\n    const roundtripSymbol = backToBuilder.data?.blocks?.[0];\n\n    expect(roundtripSymbol?.component?.name).toBeDefined();\n    expect(roundtripSymbol?.component?.options?.symbol).toBeDefined();\n  });\n\n  test('Symbol roundtrip: Named symbol converts back to \"Symbol\" component name', () => {\n    const original = JSON.parse(symbolWithInputs) as BuilderContent;\n\n    const mitosisComponent = builderContentToMitosisComponent(original);\n    expect(mitosisComponent.children[0].name).toBe('SymbolButtonComponent');\n\n    const jsxString = componentToMitosis()({ component: mitosisComponent });\n\n    const parsedComponent = parseJsx(jsxString);\n\n    const backToBuilder = componentToBuilder()({ component: parsedComponent });\n    const roundtripSymbol = backToBuilder.data?.blocks?.[0];\n\n    // CRITICAL: Builder Editor requires component.name === \"Symbol\"\n    expect(roundtripSymbol?.component?.name).toBe('Symbol');\n\n    expect(roundtripSymbol?.component?.options?.symbol).toBeDefined();\n    expect(roundtripSymbol?.component?.options?.symbol?.entry).toBeDefined();\n\n    expect(roundtripSymbol?.component?.options?.symbol?.name).toBe('Button Component');\n\n    expect(roundtripSymbol?.component?.options?.symbol?.data).toBeDefined();\n    expect(roundtripSymbol?.component?.options?.symbol?.data?.buttonText).toBe('Click me!');\n  });\n\n  test('Symbol roundtrip preserves symbol.name for re-conversion to JSX', () => {\n    const builderWithSymbolName: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element',\n            '@version': 2,\n            id: 'builder-roundtrip-test',\n            component: {\n              name: 'Symbol',\n              options: {\n                symbol: {\n                  entry: 'test-entry-123',\n                  model: 'symbol',\n                  name: 'Copyright Reserved',\n                  data: {},\n                },\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisComponent = builderContentToMitosisComponent(builderWithSymbolName);\n    expect(mitosisComponent.children[0].name).toBe('SymbolCopyrightReserved');\n\n    const jsxString = componentToMitosis()({ component: mitosisComponent });\n\n    const parsedComponent = parseJsx(jsxString);\n\n    const backToBuilder = componentToBuilder()({ component: parsedComponent });\n    const symbol = backToBuilder.data?.blocks?.[0];\n\n    expect(symbol?.component?.name).toBe('Symbol');\n    expect(symbol?.component?.options?.symbol?.name).toBe('Copyright Reserved');\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/deeply-nested.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { blockToMitosis, componentToMitosis } from '@/generators/mitosis';\nimport { componentToReact } from '@/generators/react';\nimport { builderContentToMitosisComponent } from '@/parsers/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport { describe, test } from 'vitest';\n\ndescribe('Deeply Nested Builder Components', () => {\n  test('parse array with deeply nested elements', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'TestComponent',\n              options: {\n                prop: null,\n                items: [\n                  {\n                    foo: [\n                      {\n                        '@type': '@builder.io/sdk:Element',\n                        tagName: 'div',\n                        children: [\n                          {\n                            '@type': '@builder.io/sdk:Element',\n                            tagName: 'br',\n                          },\n                        ],\n                      },\n                      {\n                        '@type': '@builder.io/sdk:Element',\n                        tagName: 'br',\n                      },\n                    ],\n                    bar: {\n                      '@type': '@builder.io/sdk:Element',\n                      tagName: 'br',\n                    },\n                    baz: [\n                      {\n                        a: {\n                          '@type': '@builder.io/sdk:Element',\n                          tagName: 'br',\n                        },\n                      },\n                    ],\n                  },\n                ],\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n      enableBlocksSlots: true,\n    });\n    expect(builderToMitosis).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/component\",\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"prop\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"null\",\n                \"type\": \"single\",\n              },\n            },\n            \"blocksSlots\": {\n              \"items\": [\n                {\n                  \"bar\": {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"br\",\n                    \"properties\": {},\n                    \"scope\": {},\n                    \"slots\": {},\n                  },\n                  \"baz\": [\n                    {\n                      \"a\": {\n                        \"@type\": \"@builder.io/mitosis/node\",\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"meta\": {},\n                        \"name\": \"br\",\n                        \"properties\": {},\n                        \"scope\": {},\n                        \"slots\": {},\n                      },\n                    },\n                  ],\n                  \"foo\": [\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/mitosis/node\",\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"meta\": {},\n                          \"name\": \"br\",\n                          \"properties\": {},\n                          \"scope\": {},\n                          \"slots\": {},\n                        },\n                      ],\n                      \"meta\": {},\n                      \"name\": \"div\",\n                      \"properties\": {},\n                      \"scope\": {},\n                      \"slots\": {},\n                    },\n                    {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"br\",\n                      \"properties\": {},\n                      \"scope\": {},\n                      \"slots\": {},\n                    },\n                  ],\n                },\n              ],\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"TestComponent\",\n            \"properties\": {\n              \"$tagName\": undefined,\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"context\": {\n          \"get\": {},\n          \"set\": {},\n        },\n        \"exports\": {},\n        \"hooks\": {\n          \"onEvent\": [],\n          \"onMount\": [],\n        },\n        \"imports\": [],\n        \"inputs\": undefined,\n        \"meta\": {\n          \"useMetadata\": {\n            \"httpRequests\": undefined,\n          },\n        },\n        \"name\": \"MyComponent\",\n        \"refs\": {},\n        \"state\": {},\n        \"subComponents\": [],\n      }\n    `);\n    const mitosis = componentToMitosis()({ component: builderToMitosis });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { TestComponent } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <TestComponent\n            prop={null}\n            items={[\n              {\n                foo: [\n                  <div>\n                    <br />\n                  </div>,\n                  <br />,\n                ],\n                bar: <br />,\n                baz: [{ a: <br /> }],\n              },\n            ]}\n          />\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis, {\n      enableBlocksSlots: true,\n    });\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    expect(backToBuilder).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"TestComponent\",\n                \"options\": {\n                  \"items\": [\n                    {\n                      \"bar\": {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"br\",\n                      },\n                      \"baz\": [\n                        {\n                          \"a\": {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"actions\": {},\n                            \"bindings\": {},\n                            \"children\": [],\n                            \"code\": {\n                              \"actions\": {},\n                              \"bindings\": {},\n                            },\n                            \"properties\": {},\n                            \"tagName\": \"br\",\n                          },\n                        },\n                      ],\n                      \"foo\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [\n                            {\n                              \"@type\": \"@builder.io/sdk:Element\",\n                              \"actions\": {},\n                              \"bindings\": {},\n                              \"children\": [],\n                              \"code\": {\n                                \"actions\": {},\n                                \"bindings\": {},\n                              },\n                              \"properties\": {},\n                              \"tagName\": \"br\",\n                            },\n                          ],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"properties\": {},\n                          \"tagName\": \"div\",\n                        },\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"properties\": {},\n                          \"tagName\": \"br\",\n                        },\n                      ],\n                    },\n                  ],\n                  \"prop\": null,\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n  test('parse object with deeply nested elements', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'TestComponent',\n              options: {\n                prop: null,\n                items: {\n                  foo: [\n                    {\n                      '@type': '@builder.io/sdk:Element',\n                      tagName: 'div',\n                      children: [\n                        {\n                          '@type': '@builder.io/sdk:Element',\n                          tagName: 'br',\n                        },\n                      ],\n                    },\n                    {\n                      '@type': '@builder.io/sdk:Element',\n                      tagName: 'br',\n                    },\n                  ],\n                  bar: {\n                    '@type': '@builder.io/sdk:Element',\n                    tagName: 'br',\n                  },\n                  baz: [\n                    {\n                      a: {\n                        '@type': '@builder.io/sdk:Element',\n                        tagName: 'br',\n                      },\n                    },\n                  ],\n                },\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n      enableBlocksSlots: true,\n    });\n    expect(builderToMitosis).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/component\",\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {\n              \"prop\": {\n                \"bindingType\": \"expression\",\n                \"code\": \"null\",\n                \"type\": \"single\",\n              },\n            },\n            \"blocksSlots\": {\n              \"items\": {\n                \"bar\": {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"bindings\": {},\n                  \"children\": [],\n                  \"meta\": {},\n                  \"name\": \"br\",\n                  \"properties\": {},\n                  \"scope\": {},\n                  \"slots\": {},\n                },\n                \"baz\": [\n                  {\n                    \"a\": {\n                      \"@type\": \"@builder.io/mitosis/node\",\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"meta\": {},\n                      \"name\": \"br\",\n                      \"properties\": {},\n                      \"scope\": {},\n                      \"slots\": {},\n                    },\n                  },\n                ],\n                \"foo\": [\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/mitosis/node\",\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"meta\": {},\n                        \"name\": \"br\",\n                        \"properties\": {},\n                        \"scope\": {},\n                        \"slots\": {},\n                      },\n                    ],\n                    \"meta\": {},\n                    \"name\": \"div\",\n                    \"properties\": {},\n                    \"scope\": {},\n                    \"slots\": {},\n                  },\n                  {\n                    \"@type\": \"@builder.io/mitosis/node\",\n                    \"bindings\": {},\n                    \"children\": [],\n                    \"meta\": {},\n                    \"name\": \"br\",\n                    \"properties\": {},\n                    \"scope\": {},\n                    \"slots\": {},\n                  },\n                ],\n              },\n            },\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"TestComponent\",\n            \"properties\": {\n              \"$tagName\": undefined,\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"context\": {\n          \"get\": {},\n          \"set\": {},\n        },\n        \"exports\": {},\n        \"hooks\": {\n          \"onEvent\": [],\n          \"onMount\": [],\n        },\n        \"imports\": [],\n        \"inputs\": undefined,\n        \"meta\": {\n          \"useMetadata\": {\n            \"httpRequests\": undefined,\n          },\n        },\n        \"name\": \"MyComponent\",\n        \"refs\": {},\n        \"state\": {},\n        \"subComponents\": [],\n      }\n    `);\n    const mitosis = componentToMitosis()({ component: builderToMitosis });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { TestComponent } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <TestComponent\n            prop={null}\n            items={{\n              foo: [\n                <div>\n                  <br />\n                </div>,\n                <br />,\n              ],\n              bar: <br />,\n              baz: [{ a: <br /> }],\n            }}\n          />\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis, {\n      enableBlocksSlots: true,\n    });\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    expect(backToBuilder).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"TestComponent\",\n                \"options\": {\n                  \"items\": {\n                    \"bar\": {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"actions\": {},\n                      \"bindings\": {},\n                      \"children\": [],\n                      \"code\": {\n                        \"actions\": {},\n                        \"bindings\": {},\n                      },\n                      \"properties\": {},\n                      \"tagName\": \"br\",\n                    },\n                    \"baz\": [\n                      {\n                        \"a\": {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"properties\": {},\n                          \"tagName\": \"br\",\n                        },\n                      },\n                    ],\n                    \"foo\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"actions\": {},\n                            \"bindings\": {},\n                            \"children\": [],\n                            \"code\": {\n                              \"actions\": {},\n                              \"bindings\": {},\n                            },\n                            \"properties\": {},\n                            \"tagName\": \"br\",\n                          },\n                        ],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"div\",\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"actions\": {},\n                        \"bindings\": {},\n                        \"children\": [],\n                        \"code\": {\n                          \"actions\": {},\n                          \"bindings\": {},\n                        },\n                        \"properties\": {},\n                        \"tagName\": \"br\",\n                      },\n                    ],\n                  },\n                  \"prop\": null,\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n  test('do not parse components with mapper even if feature is enabled', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Columns',\n              options: {\n                columns: [\n                  {\n                    blocks: [\n                      {\n                        '@type': '@builder.io/sdk:Element' as const,\n                      },\n                    ],\n                  },\n                ],\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n      enableBlocksSlots: true,\n    });\n    const mitosis = componentToMitosis()({ component: builderToMitosis });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { Columns, Column } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <Columns>\n            <Column>\n              <div />\n            </Column>\n          </Columns>\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis, {\n      enableBlocksSlots: true,\n    });\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    expect(backToBuilder).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"Columns\",\n                \"options\": {\n                  \"columns\": [\n                    {\n                      \"blocks\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"actions\": {},\n                          \"bindings\": {},\n                          \"children\": [],\n                          \"code\": {\n                            \"actions\": {},\n                            \"bindings\": {},\n                          },\n                          \"properties\": {},\n                          \"tagName\": \"div\",\n                        },\n                      ],\n                    },\n                  ],\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n  test('do not transform deeply nested object when feature disabled', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'TestComponent',\n              options: {\n                prop: null,\n                items: {\n                  foo: [\n                    {\n                      '@type': '@builder.io/sdk:Element',\n                      tagName: 'div',\n                      children: [\n                        {\n                          '@type': '@builder.io/sdk:Element',\n                          tagName: 'br',\n                        },\n                      ],\n                    },\n                    {\n                      '@type': '@builder.io/sdk:Element',\n                      tagName: 'br',\n                    },\n                  ],\n                  bar: {\n                    '@type': '@builder.io/sdk:Element',\n                    tagName: 'br',\n                  },\n                },\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson);\n    const mitosis = componentToMitosis()({ component: builderToMitosis });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { TestComponent } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <TestComponent\n            prop={null}\n            items={{\n              foo: [\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  tagName: \\\\\"div\\\\\",\n                  children: [\n                    {\n                      \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                      tagName: \\\\\"br\\\\\",\n                    },\n                  ],\n                },\n                {\n                  \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                  tagName: \\\\\"br\\\\\",\n                },\n              ],\n              bar: {\n                \\\\\"@type\\\\\": \\\\\"@builder.io/sdk:Element\\\\\",\n                tagName: \\\\\"br\\\\\",\n              },\n            }}\n          />\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis);\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    expect(backToBuilder).toMatchInlineSnapshot(`\n      {\n        \"data\": {\n          \"blocks\": [\n            {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"actions\": {},\n              \"bindings\": {},\n              \"children\": [],\n              \"code\": {\n                \"actions\": {},\n                \"bindings\": {},\n              },\n              \"component\": {\n                \"name\": \"TestComponent\",\n                \"options\": {\n                  \"items\": {\n                    \"bar\": {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"tagName\": \"br\",\n                    },\n                    \"foo\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"children\": [\n                          {\n                            \"@type\": \"@builder.io/sdk:Element\",\n                            \"tagName\": \"br\",\n                          },\n                        ],\n                        \"tagName\": \"div\",\n                      },\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"tagName\": \"br\",\n                      },\n                    ],\n                  },\n                  \"prop\": null,\n                },\n              },\n            },\n          ],\n          \"jsCode\": \"\",\n          \"tsCode\": \"\",\n        },\n      }\n    `);\n  });\n  test('do not alter existing deeply nested behavior when disabled on other generators', () => {\n    const mitosis = parseJsx(`\n    import { useState } from \"@builder.io/mitosis\";\n    \n    export default function MyComponent(props) {\n      const [name, setName] = useState(\"Steve\");\n    \n      return (\n        <MyCmp items={[ <br /> ]} />\n      );\n    }   \n    `);\n    const react = componentToReact()({ component: mitosis });\n    expect(react).toMatchInlineSnapshot(`\n      \"\\\\\"use client\\\\\";\n      import * as React from \\\\\"react\\\\\";\n      import { useState } from \\\\\"react\\\\\";\n\n      function MyComponent(props) {\n        const [name, setName] = useState(() => \\\\\"Steve\\\\\");\n\n        return <MyCmp items={[<br />]} />;\n      }\n\n      export default MyComponent;\n      \"\n    `);\n  });\n});\n\ndescribe('generate code', () => {\n  test('generate array props', () => {\n    const el = {\n      '@type': '@builder.io/mitosis/node' as const,\n      bindings: {},\n      blocksSlots: {\n        items: [\n          {\n            '@type': '@builder.io/mitosis/node' as const,\n            bindings: {},\n            children: [],\n            meta: {},\n            name: 'br',\n            properties: {},\n            scope: {},\n            slots: {},\n          },\n        ],\n      },\n      children: [],\n      meta: {},\n      name: 'TestComponent',\n      properties: {},\n      scope: {},\n      slots: {},\n    };\n    const cmp = {\n      '@type': '@builder.io/mitosis/component' as const,\n      children: [],\n      context: {\n        get: {},\n        set: {},\n      },\n      exports: {},\n      hooks: {\n        onEvent: [],\n        onMount: [],\n      },\n      imports: [],\n      inputs: [],\n      meta: {\n        useMetadata: {\n          httpRequests: undefined,\n        },\n      },\n      name: 'MyComponent',\n      refs: {},\n      state: {},\n      subComponents: [],\n    };\n    expect(blockToMitosis(el, {}, cmp, false)).toMatchInlineSnapshot(\n      '\"<TestComponent items={[<br  />]} />\"',\n    );\n  });\n  test('generate object props', () => {\n    const el = {\n      '@type': '@builder.io/mitosis/node' as const,\n      bindings: {},\n      blocksSlots: {\n        items: {\n          foo: {\n            '@type': '@builder.io/mitosis/node' as const,\n            bindings: {},\n            children: [],\n            meta: {},\n            name: 'br',\n            properties: {},\n            scope: {},\n            slots: {},\n          },\n        },\n      },\n      children: [],\n      meta: {},\n      name: 'TestComponent',\n      properties: {},\n      scope: {},\n      slots: {},\n    };\n    const cmp = {\n      '@type': '@builder.io/mitosis/component' as const,\n      children: [],\n      context: {\n        get: {},\n        set: {},\n      },\n      exports: {},\n      hooks: {\n        onEvent: [],\n        onMount: [],\n      },\n      imports: [],\n      inputs: [],\n      meta: {\n        useMetadata: {\n          httpRequests: undefined,\n        },\n      },\n      name: 'MyComponent',\n      refs: {},\n      state: {},\n      subComponents: [],\n    };\n    expect(blockToMitosis(el, {}, cmp, false)).toMatchInlineSnapshot(\n      '\"<TestComponent items={{foo: <br  />,}} />\"',\n    );\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/events.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport { describe, test } from 'vitest';\n\ndescribe('Builder Events', () => {\n  test('no data loss occurs when parsing and generating symbols', () => {\n    const mitosis = parseJsx(`\n    export default function MyComponent(props) {\n      return (\n        <button onion={state.onion} onClick={state.foo}>Click Me</button>\n      );\n    }\n    `);\n\n    const builderJson = componentToBuilder()({ component: mitosis });\n    expect(builderJson.data!.blocks![0].bindings).toMatchInlineSnapshot(`\n      {\n        \"onion\": \"state.onion\",\n      }\n    `);\n    expect(builderJson.data!.blocks![0].actions).toMatchInlineSnapshot(`\n      {\n        \"click\": \"state.foo()\",\n      }\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/invalid-jsx-flag.test.ts",
    "content": "import { componentToMitosis } from '@/generators/mitosis';\nimport { builderContentToMitosisComponent } from '@/parsers/builder';\nimport { describe, test } from 'vitest';\n\ndescribe('Builder Invalid JSX Flag', () => {\n  describe('escapeInvalidCode: true', () => {\n    test('escaping invalid CSS binding does not crash jsx generator', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                'style.marginTop':\n                  'state.isDropdownOpen ? window.innerWidth <= 640 ? \"25\\r\\n0px\" : \"100px\" : \"0\"',\n                'responsiveStyles.medium.marginTop':\n                  'state.isDropdownOpen ? window.innerWidth <= 640 ? \"25\\r\\n0px\" : \"100px\" : \"0\"',\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n        escapeInvalidCode: true,\n      });\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return (\n          <div\n            style={{\n              marginTop: \\`state.isDropdownOpen ? window.innerWidth <= 640 ? \\\\\"25\n      0px\\\\\" : \\\\\"100px\\\\\" : \\\\\"0\\\\\" [INVALID CODE]\\`,\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                marginTop: \\`state.isDropdownOpen ? window.innerWidth <= 640 ? \\\\\"25\n      0px\\\\\" : \\\\\"100px\\\\\" : \\\\\"0\\\\\" [INVALID CODE]\\`,\n              },\n            }}\n          />\n        );\n      }\n      \"\n    `);\n    });\n\n    test('escaping invalid binding does not crash jsx generator on element', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                onClick: 'state.',\n                foo: 'bar + ',\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n        escapeInvalidCode: true,\n      });\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return (\n          <div\n            onClick={(event) => \\`state. [INVALID CODE]\\`}\n            foo={\\`bar +  [INVALID CODE]\\`}\n          />\n        );\n      }\n      \"\n    `);\n    });\n\n    // Text components have a different code path for bindings than other components\n    test('escaping invalid binding does not crash jsx generator on Text component', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                onClick: 'state.',\n                foo: 'bar + ',\n              },\n              component: {\n                name: 'Text',\n                options: {\n                  text: 'Text',\n                },\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n        escapeInvalidCode: true,\n      });\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n        \"import { Text } from \\\\\"@components\\\\\";\n\n        export default function MyComponent(props) {\n          return (\n            <Text\n              text=\\\\\"Text\\\\\"\n              onClick={(event) => \\`state. [INVALID CODE]\\`}\n              foo={\\`bar +  [INVALID CODE]\\`}\n            />\n          );\n        }\n        \"\n      `);\n    });\n  });\n\n  describe('escapeInvalidCode: false', () => {\n    test('invalid CSS binding is dropped', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                'style.marginTop':\n                  'state.isDropdownOpen ? window.innerWidth <= 640 ? \"25\\r\\n0px\" : \"100px\" : \"0\"',\n                'responsiveStyles.medium.marginTop': 'state.marginTop',\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson);\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n        \"export default function MyComponent(props) {\n          return (\n            <div\n              style={{\n                \\\\\"@media (max-width: 991px)\\\\\": {\n                  marginTop: state.marginTop,\n                },\n              }}\n            />\n          );\n        }\n        \"\n      `);\n    });\n\n    test('invalid binding is dropped on element', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                onClick: 'state.',\n                foo: 'bar',\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson);\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n        \"export default function MyComponent(props) {\n          return <div foo={bar} />;\n        }\n        \"\n      `);\n    });\n\n    // Text components have a different code path for bindings than other components\n    test('invalid binding is dropped on Text component', () => {\n      const builderJson = {\n        data: {\n          blocks: [\n            {\n              '@type': '@builder.io/sdk:Element' as const,\n              bindings: {\n                onClick: 'state.',\n                foo: 'bar',\n              },\n              component: {\n                name: 'Text',\n                options: {\n                  text: 'Text',\n                },\n              },\n            },\n          ],\n        },\n      };\n      const builderToMitosis = builderContentToMitosisComponent(builderJson);\n      const mitosis = componentToMitosis({})({\n        component: builderToMitosis,\n      });\n      expect(mitosis).toMatchInlineSnapshot(`\n        \"import { Text } from \\\\\"@components\\\\\";\n\n        export default function MyComponent(props) {\n          return <Text text=\\\\\"Text\\\\\" foo={bar} />;\n        }\n        \"\n      `);\n    });\n  });\n});\n\n// https://github.com/BuilderIO/builder-internal/blob/39d18b50928f8c843255637a7c07c41d4277127c/packages/app/functions/transpile.worker.ts#L26-L42\ndescribe('export default transpiling', () => {\n  test('convert on element', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            bindings: {\n              foo: 'export default bar',\n            },\n            code: {\n              bindings: {\n                foo: 'export default bar',\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n      escapeInvalidCode: true,\n    });\n    const mitosis = componentToMitosis({})({\n      component: builderToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return (\n          <div\n            foo={function () {\n              return bar;\n            }}\n          />\n        );\n      }\n      \"\n    `);\n  });\n\n  /// Text components have a different code path for bindings than other components\n  test('convert on Text component', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            bindings: {\n              foo: 'export default bar',\n            },\n            code: {\n              bindings: {\n                foo: 'export default bar',\n              },\n            },\n            component: {\n              name: 'Text',\n              options: {\n                text: 'Text',\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson, {\n      escapeInvalidCode: true,\n    });\n    const mitosis = componentToMitosis({})({\n      component: builderToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { Text } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <Text\n            text=\\\\\"Text\\\\\"\n            foo={function () {\n              return bar;\n            }}\n          />\n        );\n      }\n      \"\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/personalization-container.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { dedent } from '@/helpers/dedent';\nimport { builderContentToMitosisComponent } from '@/parsers/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport {\n  compileAwayBuilderComponentsFromTree,\n  components as compileAwayComponents,\n} from '@/plugins/compile-away-builder-components';\nimport { describe, test } from 'vitest';\n\ndescribe('Builder Personalization Container/Variants', () => {\n  test('Snapshot PersonalizedContainer', () => {\n    const code = dedent`\n      import { PersonalizationContainer, Variant } from \"@components\";\n  \n      export default function MyComponent(props) {\n        return (\n          <PersonalizationContainer>\n            <Variant\n              name=\"variant1\"\n              startDate=\"2024-01-01\"\n              query={{\n                property: \"urlPath\",\n                operation: \"is\",\n                value: \"/home\",\n              }}\n            >\n              <div>Home</div>\n              <div>Div</div>\n            </Variant>\n            <PersonalizationOption\n              name=\"2\"\n              query={[\n                {\n                  property: \"favoriteColor\",\n                  operation: \"is\",\n                  value: [\"red\", \"blue\"],\n                },\n              ]}\n            >\n              <>Red</>\n            </PersonalizationOption>\n            <Variant>\n              <div>Default</div>\n            </Variant>\n            <div>More tree</div>\n  \n          </PersonalizationContainer>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson.data?.blocks?.[0]).toMatchSnapshot();\n\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n\n    compileAwayBuilderComponentsFromTree(backToMitosis, compileAwayComponents);\n\n    const mitosis = componentToMitosis({\n      format: 'legacy',\n    })({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toMatchInlineSnapshot(`\n      \"import { PersonalizationContainer, Variant, Fragment } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <PersonalizationContainer>\n            <Variant\n              name=\\\\\"variant1\\\\\"\n              startDate=\\\\\"2024-01-01\\\\\"\n              query={[\n                {\n                  property: \\\\\"urlPath\\\\\",\n                  operation: \\\\\"is\\\\\",\n                  value: \\\\\"/home\\\\\",\n                },\n              ]}\n            >\n              <div>Home</div>\n              <div>Div</div>\n            </Variant>\n            <Variant\n              name=\\\\\"2\\\\\"\n              query={[\n                {\n                  property: \\\\\"favoriteColor\\\\\",\n                  operation: \\\\\"is\\\\\",\n                  value: [\\\\\"red\\\\\", \\\\\"blue\\\\\"],\n                },\n              ]}\n            >\n              <Fragment>Red</Fragment>\n            </Variant>\n            <Variant default=\\\\\"\\\\\">\n              <div>Default</div>\n              <div>More tree</div>\n            </Variant>\n          </PersonalizationContainer>\n        );\n      }\"\n    `);\n  });\n\n  test('Regenerate PersonalizedContainer', () => {\n    const code = dedent`\n      import { PersonalizationContainer, Variant } from \"@components\";\n  \n      export default function MyComponent(props) {\n        return (\n          <PersonalizationContainer>\n            <Variant\n              name=\"2\"\n              startDate=\"2024-01-01\"\n              endDate=\"2024-01-31\"\n              query={[\n                {\n                  property: \"favoriteColor\",\n                  operation: \"is\",\n                  value: \"red\",\n                },\n              ]}\n            >\n              <div>Red</div>\n            </Variant>\n            <Variant default=\"\">\n              <div>Default</div>\n            </Variant>\n          </PersonalizationContainer>\n        );\n      }\n    `;\n\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n\n    compileAwayBuilderComponentsFromTree(backToMitosis, compileAwayComponents);\n\n    const mitosis = componentToMitosis({\n      format: 'legacy',\n    })({\n      component: backToMitosis,\n    });\n    expect(mitosis.trim()).toEqual(code.trim());\n  });\n\n  test('do not generate empty variant expression', () => {\n    const builderJson = {\n      '@type': '@builder.io/sdk:Element' as const,\n      '@version': 2,\n      id: 'builder-a12265b5892b4d6e8e37873369218409',\n      component: {\n        name: 'PersonalizationContainer',\n        options: {\n          variants: [],\n        },\n      },\n    };\n    const backToMitosis = builderContentToMitosisComponent({ data: { blocks: [builderJson] } });\n    const mitosis = componentToMitosis()({\n      component: backToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { PersonalizationContainer, Variant } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <PersonalizationContainer variants={[]}>\n            <Variant default=\\\\\"\\\\\" />\n          </PersonalizationContainer>\n        );\n      }\n      \"\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/responsive-styles.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { describe, expect, test } from 'vitest';\nimport {\n  builderContentToMitosisComponent,\n  getStyleStringFromBlock,\n} from '../../parsers/builder/builder';\n\nconst options = {\n  escapeInvalidCode: true,\n  includeMeta: true,\n  includeSpecialBindings: true,\n};\n\ndescribe('Responsive Styles', () => {\n  test('preserve bound media query styles when converting to mitosis', () => {\n    const content = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            bindings: {\n              'responsiveStyles.small.left': 'state.left',\n              'responsiveStyles.small.top': 'state.top',\n              'responsiveStyles.large.color': 'state.color',\n              'style.fontSize': 'state.fontSize',\n              'style.background': '\"red\"',\n              'responsiveStyles.large.background': '\"green\"',\n              'component.options.responsiveStyles.medium.flexDirection':\n                'state.reverseColumnsWhenStacked && (state.stackColumnsAt === \"tablet\" || state.stackColumnsAt === \"mobile\") ? \"column-reverse\" : undefined',\n              'component.options.responsiveStyles.small.color': '\"red\"',\n              'component.options.responsiveStyles.medium.color': '\"green\"',\n              'component.options.responsiveStyles.large.color': '\"blue\"',\n            },\n          },\n        ],\n      },\n    };\n\n    const result = getStyleStringFromBlock(content.data.blocks[0], options);\n\n    // Should contain both media queries\n    expect(result).toContain('@media (max-width: 1200px)');\n    expect(result).toContain('@media (max-width: 640px)');\n    expect(result).toContain('@media (max-width: 991px)');\n\n    // Should contain the correct flexDirection bindings\n    expect(result).toContain(\n      'flexDirection: state.reverseColumnsWhenStacked && (state.stackColumnsAt === \"tablet\" || state.stackColumnsAt === \"mobile\") ? \"column-reverse\" : undefined',\n    );\n\n    const mitosis = builderContentToMitosisComponent(content);\n\n    expect(mitosis.children[0].bindings).toMatchInlineSnapshot(`\n      {\n        \"responsiveStyles.large.color\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"\\\\\"blue\\\\\"\",\n          \"type\": \"single\",\n        },\n        \"responsiveStyles.medium.color\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"\\\\\"green\\\\\"\",\n          \"type\": \"single\",\n        },\n        \"responsiveStyles.medium.flexDirection\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"state.reverseColumnsWhenStacked && (state.stackColumnsAt === \\\\\"tablet\\\\\" || state.stackColumnsAt === \\\\\"mobile\\\\\") ? \\\\\"column-reverse\\\\\" : undefined\",\n          \"type\": \"single\",\n        },\n        \"responsiveStyles.small.color\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"\\\\\"red\\\\\"\",\n          \"type\": \"single\",\n        },\n        \"style\": {\n          \"bindingType\": \"expression\",\n          \"code\": \"{ fontSize: state.fontSize, background: \\\\\"red\\\\\", \\\\\"@media (max-width: 640px)\\\\\": { left: state.left, top: state.top, color: \\\\\"red\\\\\" }, \\\\\"@media (max-width: 1200px)\\\\\": { color: \\\\\"blue\\\\\", background: \\\\\"green\\\\\" }, \\\\\"@media (max-width: 991px)\\\\\": { flexDirection: state.reverseColumnsWhenStacked && (state.stackColumnsAt === \\\\\"tablet\\\\\" || state.stackColumnsAt === \\\\\"mobile\\\\\") ? \\\\\"column-reverse\\\\\" : undefined, color: \\\\\"green\\\\\" }, }\",\n          \"type\": \"single\",\n        },\n      }\n    `);\n\n    const jsx = componentToMitosis()({ component: mitosis });\n\n    expect(jsx).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return (\n          <div\n            style={{\n              fontSize: state.fontSize,\n              background: \\\\\"red\\\\\",\n              \\\\\"@media (max-width: 640px)\\\\\": {\n                left: state.left,\n                top: state.top,\n                color: \\\\\"red\\\\\",\n              },\n              \\\\\"@media (max-width: 1200px)\\\\\": {\n                color: \\\\\"blue\\\\\",\n                background: \\\\\"green\\\\\",\n              },\n              \\\\\"@media (max-width: 991px)\\\\\": {\n                flexDirection:\n                  state.reverseColumnsWhenStacked &&\n                  (state.stackColumnsAt === \\\\\"tablet\\\\\" ||\n                    state.stackColumnsAt === \\\\\"mobile\\\\\")\n                    ? \\\\\"column-reverse\\\\\"\n                    : undefined,\n                color: \\\\\"green\\\\\",\n              },\n            }}\n          />\n        );\n      }\n      \"\n    `);\n\n    const json = componentToBuilder()({ component: mitosis });\n    expect(json).toMatchInlineSnapshot(`\n        {\n          \"data\": {\n            \"blocks\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"actions\": {},\n                \"bindings\": {\n                  \"responsiveStyles.large.background\": \"\\\\\"green\\\\\"\",\n                  \"responsiveStyles.large.color\": \"\\\\\"blue\\\\\"\",\n                  \"responsiveStyles.medium.color\": \"\\\\\"green\\\\\"\",\n                  \"responsiveStyles.medium.flexDirection\": \"state.reverseColumnsWhenStacked && (state.stackColumnsAt === \\\\\"tablet\\\\\" || state.stackColumnsAt === \\\\\"mobile\\\\\") ? \\\\\"column-reverse\\\\\" : undefined\",\n                  \"responsiveStyles.small.color\": \"\\\\\"red\\\\\"\",\n                  \"responsiveStyles.small.left\": \"state.left\",\n                  \"responsiveStyles.small.top\": \"state.top\",\n                  \"style.background\": \"\\\\\"red\\\\\"\",\n                  \"style.fontSize\": \"state.fontSize\",\n                },\n                \"children\": [],\n                \"code\": {\n                  \"actions\": {},\n                  \"bindings\": {},\n                },\n                \"properties\": {},\n                \"tagName\": \"div\",\n              },\n            ],\n            \"jsCode\": \"\",\n            \"tsCode\": \"\",\n          },\n        }\n      `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/symbols.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { builderContentToMitosisComponent } from '@/parsers/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport { describe, test } from 'vitest';\n\ndescribe('Builder Symbols', () => {\n  test('no data loss occurs when parsing and generating symbols', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            id: 'builder-281c8c0da7be4f8a923f872d4825f14d',\n            component: {\n              name: 'Symbol',\n              options: {\n                symbol: {\n                  data: {},\n                  model: 'symbol',\n                  entry: 'ce58d5d74c21469496725f27b8781498',\n                  ownerId: 'YJIGb4i01jvw0SRdL5Bt',\n                  global: false,\n                },\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson);\n\n    expect(builderToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"symbol\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"{\\\\\"data\\\\\":{},\\\\\"model\\\\\":\\\\\"symbol\\\\\",\\\\\"entry\\\\\":\\\\\"ce58d5d74c21469496725f27b8781498\\\\\",\\\\\"ownerId\\\\\":\\\\\"YJIGb4i01jvw0SRdL5Bt\\\\\",\\\\\"global\\\\\":false}\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"Symbol\",\n        \"properties\": {},\n        \"scope\": {},\n        \"type\": \"user-symbol\",\n      }\n    `);\n\n    const mitosis = componentToMitosis({})({\n      component: builderToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { Symbol } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <Symbol\n            symbol={{\n              data: {},\n              model: \\\\\"symbol\\\\\",\n              entry: \\\\\"ce58d5d74c21469496725f27b8781498\\\\\",\n              ownerId: \\\\\"YJIGb4i01jvw0SRdL5Bt\\\\\",\n              global: false,\n            }}\n          />\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis);\n    expect(backToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"symbol\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"{\n        data: {},\n        model: \\\\\"symbol\\\\\",\n        entry: \\\\\"ce58d5d74c21469496725f27b8781498\\\\\",\n        ownerId: \\\\\"YJIGb4i01jvw0SRdL5Bt\\\\\",\n        global: false\n      }\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"Symbol\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    // no data loss means the component payloads are exactly the same\n    expect(backToBuilder.data!.blocks![0].component).toEqual(builderJson.data.blocks[0].component);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/builder/text.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { dedent } from '@/helpers/dedent';\nimport { builderContentToMitosisComponent } from '@/parsers/builder';\nimport { parseJsx } from '@/parsers/jsx';\nimport {\n  compileAwayBuilderComponentsFromTree,\n  components as compileAwayComponents,\n} from '@/plugins/compile-away-builder-components';\nimport { describe, test } from 'vitest';\n\ndescribe('Builder Text node', () => {\n  test('preserve Text component', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            id: 'builder-281c8c0da7be4f8a923f872d4825f14d',\n            component: {\n              name: 'Text',\n              options: {\n                text: '<h1>Hello World</h1>',\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson);\n\n    expect(builderToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {},\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"Text\",\n        \"properties\": {\n          \"$tagName\": undefined,\n          \"text\": \"<h1>Hello World</h1>\",\n        },\n        \"scope\": {},\n        \"slots\": {},\n      }\n    `);\n\n    const mitosis = componentToMitosis({})({\n      component: builderToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"import { Text } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return <Text text=\\\\\"<h1>Hello World</h1>\\\\\" />;\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis);\n    expect(backToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {},\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"Text\",\n        \"properties\": {\n          \"text\": \"<h1>Hello World</h1>\",\n        },\n        \"scope\": {},\n      }\n    `);\n\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    // no data loss means the component payloads are exactly the same\n    expect(backToBuilder.data!.blocks![0].component).toEqual(builderJson.data.blocks[0].component);\n  });\n  test('compile away Text component', () => {\n    const builderJson = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            id: 'builder-281c8c0da7be4f8a923f872d4825f14d',\n            component: {\n              name: 'Text',\n              options: {\n                text: '<h1>Hello World</h1>',\n              },\n            },\n            responsiveStyles: {\n              large: {\n                color: 'red',\n              },\n            },\n          },\n        ],\n      },\n    };\n    const builderToMitosis = builderContentToMitosisComponent(builderJson);\n\n    compileAwayBuilderComponentsFromTree(builderToMitosis, compileAwayComponents);\n\n    expect(builderToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"css\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"{\\\\\"color\\\\\":\\\\\"red\\\\\"}\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"div\",\n            \"properties\": {\n              \"$tagName\": undefined,\n              \"_text\": \"<h1>Hello World</h1>\",\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"div\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n\n    const mitosis = componentToMitosis({})({\n      component: builderToMitosis,\n    });\n    expect(mitosis).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return (\n          <div\n            css={{\n              color: \\\\\"red\\\\\",\n            }}\n          >\n            <h1>Hello World</h1>\n          </div>\n        );\n      }\n      \"\n    `);\n\n    const backToMitosis = parseJsx(mitosis);\n    expect(backToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"css\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"{\n        color: \\\\\"red\\\\\"\n      }\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"div\",\n                \"properties\": {\n                  \"_text\": \"Hello World\",\n                },\n                \"scope\": {},\n              },\n            ],\n            \"meta\": {},\n            \"name\": \"h1\",\n            \"properties\": {},\n            \"scope\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"div\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n\n    const backToBuilder = componentToBuilder()({ component: backToMitosis });\n    // no data loss means the component payloads are exactly the same\n    expect(backToBuilder.data!.blocks![0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"actions\": {},\n            \"bindings\": {},\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"bindings\": {},\n                \"component\": {\n                  \"name\": \"Text\",\n                  \"options\": {\n                    \"text\": \"Hello World\",\n                  },\n                },\n                \"tagName\": \"span\",\n              },\n            ],\n            \"code\": {\n              \"actions\": {},\n              \"bindings\": {},\n            },\n            \"properties\": {},\n            \"tagName\": \"h1\",\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"responsiveStyles\": {\n          \"large\": {\n            \"color\": \"red\",\n          },\n        },\n        \"tagName\": \"div\",\n      }\n    `);\n  });\n  test('create Text node from jsx', () => {\n    const code = dedent`\n    export default function MyComponent(props) {\n      return (\n        <p><Text text=\"hello world\" /></p>\n      )\n    }\n    `;\n    const component = parseJsx(code);\n    const builderJson = componentToBuilder()({ component });\n    expect(builderJson.data!.blocks![0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"actions\": {},\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"actions\": {},\n            \"bindings\": {},\n            \"children\": [],\n            \"code\": {\n              \"actions\": {},\n              \"bindings\": {},\n            },\n            \"component\": {\n              \"name\": \"Text\",\n              \"options\": {\n                \"text\": \"hello world\",\n              },\n            },\n          },\n        ],\n        \"code\": {\n          \"actions\": {},\n          \"bindings\": {},\n        },\n        \"properties\": {},\n        \"tagName\": \"p\",\n      }\n    `);\n    const backToMitosis = builderContentToMitosisComponent(builderJson);\n    expect(backToMitosis.children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"Text\",\n            \"properties\": {\n              \"$tagName\": undefined,\n              \"text\": \"hello world\",\n            },\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"p\",\n        \"properties\": {},\n        \"scope\": {},\n        \"slots\": {},\n      }\n    `);\n\n    expect(backToMitosis).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/component\",\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [\n              {\n                \"@type\": \"@builder.io/mitosis/node\",\n                \"bindings\": {},\n                \"children\": [],\n                \"meta\": {},\n                \"name\": \"Text\",\n                \"properties\": {\n                  \"$tagName\": undefined,\n                  \"text\": \"hello world\",\n                },\n                \"scope\": {},\n                \"slots\": {},\n              },\n            ],\n            \"meta\": {},\n            \"name\": \"p\",\n            \"properties\": {},\n            \"scope\": {},\n            \"slots\": {},\n          },\n        ],\n        \"context\": {\n          \"get\": {},\n          \"set\": {},\n        },\n        \"exports\": {},\n        \"hooks\": {\n          \"onEvent\": [],\n          \"onMount\": [],\n        },\n        \"imports\": [],\n        \"inputs\": undefined,\n        \"meta\": {\n          \"useMetadata\": {\n            \"httpRequests\": undefined,\n          },\n        },\n        \"name\": \"MyComponent\",\n        \"refs\": {},\n        \"state\": {},\n        \"subComponents\": [],\n      }\n    `);\n\n    const backToJSX = componentToMitosis()({\n      component: backToMitosis,\n    });\n    expect(backToJSX).toMatchInlineSnapshot(`\n      \"import { Text } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return (\n          <p>\n            <Text text=\\\\\"hello world\\\\\" />\n          </p>\n        );\n      }\n      \"\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/context.test.ts",
    "content": "import { contextToReact } from '../generators/context/react';\nimport { componentToReact } from '../generators/react';\nimport { componentToReactNative } from '../generators/react-native';\nimport { parseContext } from '../parsers/context';\nimport { parseJsx } from '../parsers/jsx';\n\nimport renderBlock from './data/blocks/builder-render-block.raw.tsx?raw';\nimport componentWithContext from './data/context/component-with-context.raw.tsx?raw';\nimport simpleExample from './data/context/simple.context.lite.ts?raw';\n\ndescribe('Context', () => {\n  test('Parse context', () => {\n    const component = parseContext(simpleExample, { name: 'SimpleExample' });\n    if (!component) {\n      throw new Error('No parseable context found for simple.context.lite.ts');\n    }\n    expect(component).toMatchSnapshot();\n    const reactContext = contextToReact()({ context: component });\n    expect(reactContext).toMatchSnapshot();\n  });\n\n  test('Use and set context in components', () => {\n    const component = parseJsx(componentWithContext);\n    expect(component).toMatchSnapshot();\n    const reactComponent = componentToReact()({ component });\n    expect(reactComponent).toMatchSnapshot();\n\n    const reactNativeComponent = componentToReactNative()({ component });\n    expect(reactNativeComponent).toMatchSnapshot();\n  });\n\n  test('Use and set context in complex components', () => {\n    const component = parseJsx(renderBlock);\n    expect(component).toMatchSnapshot();\n    const reactComponent = componentToReact()({ component });\n    expect(reactComponent).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/all-spread.raw.tsx",
    "content": "import { useState, useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [attrsUsingUseState] = useState({\n    hello: 'world',\n  });\n\n  const state = useStore({\n    properties: {\n      style: 'color: blue',\n      onClick: () => console.log('pressed'),\n    },\n    specifics: {\n      someSpecificState: 'specific',\n    },\n  });\n\n  return (\n    <div\n      {...attrsUsingUseState}\n      {...state.properties}\n      {...props.attributes}\n      {...{ someOtherAttrs: props.accessHere, someStateAttrs: state.specifics }}\n    >\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/change-detection.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  angular: {\n    changeDetection: 'OnPush',\n  },\n});\n\nexport default function MyComponent(props) {\n  return <div>{props.count}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/custom-selector.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  angular: { selector: 'not-my-component' },\n});\n\nexport default function MyComponent() {\n  return <span>My selector shouldn't be my-component!</span>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/dynamic-component-with-event-args.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [Component, setComponent] = useState(HelloComponent);\n\n  function onClick(event: any) {\n    console.log('hello', event);\n  }\n\n  return (\n    <Component\n      hello=\"world\"\n      onClick={(event: any) => onClick(event)}\n      {...props.attributes}\n      {...props.something}\n    >\n      hello\n    </Component>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/dynamic-component.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [obj, setObj] = useState({\n    name: 'foo',\n    Component: FooComponent,\n  });\n\n  function onClick() {\n    console.log('hello');\n  }\n\n  return (\n    <obj.Component\n      hello=\"world\"\n      onClick={() => onClick()}\n      {...props.attributes}\n      {...props.something}\n    >\n      hello\n      {props.children}\n    </obj.Component>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/native-attributes.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  angular: { nativeAttributes: ['disabled'] },\n});\n\nexport default function MyComponent(props) {\n  return (\n    <div>\n      <input disabled={props.disabled} />\n      Hello! If someone passes `[disabled]=\"false\"` to me, disabled shouldn't be visible in the DOM.\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/output-event-bindings.raw.tsx",
    "content": "import { useMetadata, useState } from '@builder.io/mitosis';\n\nuseMetadata({\n  angular: {\n    nativeEvents: ['onFakeNative'],\n  },\n});\n\nexport default function MyComponent(props) {\n  const [name, setName] = useState('Steve');\n\n  return (\n    <div>\n      <input\n        value={name}\n        onChange={(event) => setName(event.target.value)}\n        onChangeOrSomething={(event) => setName(event.target.value)}\n        onFakeNative={(event) => setName(event.target.value)}\n        onAnimationEnd={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/prettier-inline.raw.tsx",
    "content": "export default function PrettierInline() {\n  return (\n    <div>\n      <span class=\"dolorum atque aspernatur\">Est molestiae sunt facilis qui rem.</span>\n      <div class=\"voluptatem architecto at\">Architecto rerum architecto incidunt sint.</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/sanitize-inner-html.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  angular: {\n    sanitizeInnerHTML: true,\n  },\n});\n\nexport default function MyComponent(props) {\n  return <div innerHTML={props.html}></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/signals-test.raw.tsx",
    "content": "import { onUpdate, useDefaultProps, useMetadata, useRef, useStore } from '@builder.io/mitosis';\n\ntype Props = {\n  label: string;\n  testInput: string;\n  onTestOutput?: () => void;\n  disabled?: boolean;\n};\n\ntype Store = {\n  _counter: number;\n  _innerText: string;\n  handleOutput: () => void;\n};\n\nuseDefaultProps<Props>({\n  testInput: 'Test',\n  label: 'Bla',\n});\n\nuseMetadata({\n  angular: {\n    signals: {\n      writeable: ['disabled'],\n      required: ['label'],\n    },\n  },\n});\n\nexport default function SignalsTestComponent(props: Props) {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n  const state = useStore<Store>({\n    _counter: 0,\n    _innerText: 'a',\n    handleOutput: () => {\n      state._counter++;\n      state._innerText = 'b';\n      console.log(props.testInput, state._counter);\n      if (props.onTestOutput) {\n        props.onTestOutput();\n      }\n    },\n  });\n\n  onUpdate(() => {\n    console.log(state._counter, buttonRef);\n    buttonRef?.setAttribute('data-counter', state._counter.toString());\n  }, [state._counter, buttonRef]);\n\n  return (\n    <button\n      aria-label={props.label}\n      ref={buttonRef}\n      disabled={props.disabled}\n      onClick={() => state.handleOutput()}\n    >\n      {props.testInput}\n    </button>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/state-init-sequence.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    val: props.value,\n  });\n  return <Comp val={{ ...state.val }}>{state.val}</Comp>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/state-init.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  function add(a, b) {\n    return a + b;\n  }\n  const state = useStore({\n    asfas: 'asga',\n    subtract: () => {\n      return state.someCompute - state.someOtherVal;\n    },\n    someCompute: add(1, 2),\n    someOtherVal: props.val,\n    sf: add(props.val, 34),\n  });\n\n  return (\n    <div>\n      <div>{state.asfas}</div>\n      <div>{state.someCompute}</div>\n      <div>{state.someOtherVal}</div>\n      <div>{state.sf}</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/two-fors.raw.tsx",
    "content": "import { For, useState } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  const [items] = useState([1, 2, 3]);\n\n  return (\n    <div>\n      <For each={items}>{(item) => <div key={item}>{item}</div>}</For>\n      <For each={items}>{(item) => <div key={item}>{item}</div>}</For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/angular/use-object-wrapper.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    attributes: { id: 1 },\n    attributes2: { id2: 1 },\n    something: { id3: 1 },\n  });\n\n  return (\n    <div>\n      <Comp\n        val1={{ ...state.attributes2 }}\n        val2={{\n          ...state.attributes,\n          ...state.attributes2,\n        }}\n        val3={{\n          ...state.something,\n          anything: 'hello',\n          hello: 'world',\n        }}\n        val4={{\n          ...state.attributes,\n          ...state.something,\n          anything: [1, 2, 3],\n          hello: 'hello',\n          ...state.attributes2,\n        }}\n        val5={{\n          ...state.attributes,\n          ...state.something,\n          anything: [1, 2, 3],\n          anythingString: ['a', 'b', 'c'],\n          hello: 'hello',\n          ...props.spreadAttrs,\n        }}\n        val6={{ anything: [1, 2, 3] }}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-attribute.raw.tsx",
    "content": "export default function MyComponent() {\n  return <input spellcheck={true} autocapitalize=\"on\" autocomplete=\"on\" />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-boolean-attribute-component.raw.tsx",
    "content": "type Props = {\n  toggle?: boolean;\n  list?: null | Array<undefined>;\n};\n\nexport default function MyBooleanAttributeComponent(props: Props) {\n  return (\n    <div>\n      {props.toggle} {props.list}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-boolean-attribute.raw.tsx",
    "content": "import MyBooleanAttributeComponent from './basic-boolean-attribute-component.raw';\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default function MyBooleanAttribute(props: Props) {\n  return (\n    <div>\n      <Show when={props.children}>\n        {props.children} {props.type}\n      </Show>\n      <MyBooleanAttributeComponent toggle />\n      <MyBooleanAttributeComponent toggle={true} />\n      <MyBooleanAttributeComponent list={null} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-child-component.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport MyBasicOnMountUpdateComponent from './basic-onMount-update.raw';\nimport MyBasicOutputsComponent from './basic-outputs.raw';\nimport MyBasicComponent from './basic.raw';\n\nexport default function MyBasicChildComponent() {\n  const state = useStore({\n    name: 'Steve',\n    dev: 'PatrickJS',\n  });\n\n  function log(message: string) {\n    console.log(message);\n  }\n\n  return (\n    <div>\n      <MyBasicComponent id={state.dev} />\n      <div>\n        <MyBasicOnMountUpdateComponent hi={state.name} bye={state.dev} />\n        <MyBasicOutputsComponent\n          message=\"Test\"\n          onMessageChange={(name) => (state.name = name)}\n          onEvent={() => log('Test')}\n        />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-context.raw.tsx",
    "content": "import { onInit, onMount, setContext, useContext, useStore } from '@builder.io/mitosis';\nimport { Injector, MyService, createInjector } from '@dummy/injection-js';\n\nexport default function MyBasicComponent() {\n  setContext(Injector, createInjector());\n\n  const myService = useContext(MyService);\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  onInit(() => {\n    const hi = myService.method('hi');\n    console.log(hi);\n  });\n\n  onMount(() => {\n    const bye = myService.method('hi');\n    console.log(bye);\n  });\n\n  function onChange() {\n    const change = myService.method('change');\n    console.log(change);\n  }\n\n  return (\n    <div>\n      {myService.method('hello') + state.name}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n      <input onChange={onChange}></input>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-custom-mitosis-package.raw.tsx",
    "content": "import { useStore } from '@dummy/custom-mitosis';\n\nexport default function MyBasicComponent() {\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  return <div>Hello {state.name}! I can run in React, Qwik, Vue, Solid, or Liquid!</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-onChange.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicComponent() {\n  const state = useStore({\n    name: 'Steve',\n  });\n\n  return (\n    <div\n      class=\"test\"\n      css={{\n        padding: '10px',\n      }}\n    >\n      <input\n        value={state.name}\n        onChange={(myEvent) => {\n          state.name = myEvent.target.value;\n        }}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-onMount-update.raw.tsx",
    "content": "import { onInit, onMount, useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  hi: string;\n  bye: string;\n}\n\nexport default function MyBasicOnMountUpdateComponent(props: Props) {\n  const state = useStore({\n    name: 'PatrickJS',\n    names: ['Steve', 'PatrickJS'],\n  });\n\n  onInit(() => {\n    state.name = 'PatrickJS onInit' + props.hi;\n  });\n\n  onMount(() => {\n    state.name = 'PatrickJS onMount' + props.bye;\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-onUpdate-return.raw.tsx",
    "content": "import { onUpdate, useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicOnUpdateReturnComponent() {\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  onUpdate(() => {\n    const controller = new AbortController();\n    const signal = controller.signal;\n    fetch('https://patrickjs.com/api/resource.json', { signal })\n      .then((response) => response.json())\n      .then((data) => {\n        state.name = data.name;\n      });\n    return () => {\n      if (!signal.aborted) {\n        controller.abort();\n      }\n    };\n  }, [state.name]);\n\n  return <div>Hello! {state.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-outputs-meta.raw.tsx",
    "content": "import { onMount, useMetadata, useStore } from '@builder.io/mitosis';\n\nuseMetadata({\n  outputs: ['onMessage', 'onEvent'],\n});\nexport default function MyBasicOutputsComponent(props: any) {\n  useMetadata({\n    baz: 'metadata inside component',\n  });\n\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-outputs.raw.tsx",
    "content": "import { onMount, useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicOutputsComponent(props: any) {\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  onMount(() => {\n    props.onMessageChange(state.name);\n    props.onEvent(props.message);\n  });\n\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-preserve-export-or-local-statement.raw.tsx",
    "content": "const b = 3;\nconst foo = () => {};\n\nexport const a = 3;\nexport const bar = () => {};\nexport function run<T>(value: T) {}\n\ntype Types = {\n  s: any[];\n};\n\ninterface IPost {\n  len: number;\n}\n\nexport default function MyBasicComponent(props: { id: string }) {\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic-web-component.raw.tsx",
    "content": "// import Swiper core and required modules\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { onInit } from '@builder.io/mitosis';\nimport { register } from 'swiper/element/bundle';\n\nexport default function MyBasicWebComponent() {\n  onInit(() => {\n    register();\n  });\n\n  return (\n    <swiper-container slides-per-view=\"3\" navigation=\"true\" pagination=\"true\">\n      <swiper-slide>Slide 1</swiper-slide>\n      <swiper-slide>Slide 2</swiper-slide>\n      <swiper-slide>Slide 3</swiper-slide>\n    </swiper-container>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/basic.raw.tsx",
    "content": "import { useState, useStore } from '@builder.io/mitosis';\n\nexport const DEFAULT_VALUES = {\n  name: 'Steve',\n};\n\nexport default function MyBasicComponent(props: { id: string }) {\n  const state = useStore({\n    name: 'Steve',\n    underscore_fn_name() {\n      return 'bar';\n    },\n  });\n\n  const [age, setAge] = useState<number>(1);\n  const [sports, setSports] = useState<Array<string>>(['']);\n\n  return (\n    <div\n      class=\"test\"\n      css={{\n        padding: '10px',\n      }}\n    >\n      <input\n        value={DEFAULT_VALUES.name || state.name}\n        onChange={(myEvent) => (state.name = myEvent.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid! &gt;\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/builder-render-block.raw.tsx",
    "content": "import { For, Show, useContext, useStore } from '@builder.io/mitosis';\nimport BuilderContext from '../context/builder.context.lite';\nimport { getBlockActions } from '../functions/get-block-actions';\nimport { getBlockComponentOptions } from '../functions/get-block-component-options';\nimport { getBlockProperties } from '../functions/get-block-properties';\nimport { getBlockStyles } from '../functions/get-block-styles';\nimport { getBlockTag } from '../functions/get-block-tag';\nimport { getProcessedBlock } from '../functions/get-processed-block';\nimport { components } from '../functions/register-component';\nimport { BuilderBlock } from '../types/builder-block';\nimport BlockStyles from './block-styles.lite';\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  index: number;\n};\n\nexport default function RenderBlock(props: RenderBlockProps) {\n  const builderContext = useContext(BuilderContext);\n\n  const state = useStore({\n    get component() {\n      const componentName = state.useBlock.component?.name;\n      if (!componentName) {\n        return null;\n      }\n      const ref = components[state.useBlock.component?.name!];\n      if (componentName && !ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(`\n          Could not find a registered component named \"${componentName}\".\n          If you registered it, is the file that registered it imported by the file that needs to render it?`);\n      }\n      return ref;\n    },\n    get componentInfo() {\n      return state.component?.info;\n    },\n    get componentRef() {\n      return state.component?.component;\n    },\n    get tagName() {\n      return getBlockTag(state.useBlock) as any;\n    },\n    get properties() {\n      return getBlockProperties(state.useBlock);\n    },\n    get useBlock() {\n      return getProcessedBlock({\n        block: props.block,\n        state: builderContext.state,\n        context: builderContext.context,\n      });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: builderContext.state,\n        context: builderContext.context,\n      });\n    },\n    get css() {\n      return getBlockStyles(state.useBlock);\n    },\n    get componentOptions() {\n      return getBlockComponentOptions(state.useBlock);\n    },\n  });\n\n  return (\n    <>\n      {/* TODO: add the below back when support `else` */}\n      {/* <Show when={state.componentInfo?.noWrap}>\n        <state.componentRef\n          attributes={state.properties}\n          {...state.componentInfo?.options}\n          style={state.css}\n          children={state.useBlock.children}\n        />\n      </Show>\n      <Show when={!state.componentInfo?.noWrap}> */}\n      <state.tagName {...state.properties} style={state.css}>\n        <BlockStyles block={state.useBlock} />\n        {state.componentRef && (\n          <state.componentRef {...state.componentOptions} children={state.useBlock.children} />\n        )}\n        <Show\n          when={!state.componentRef && state.useBlock.children && state.useBlock.children.length}\n        >\n          <For each={state.useBlock.children}>\n            {(child: any, index: number) => <RenderBlock index={index} block={child} />}\n          </For>\n        </Show>\n      </state.tagName>\n      {/* </Show> */}\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/builder-render-content.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport { BuilderContent, GetContentOptions } from '@builder.io/sdk';\nimport RenderBlock, { RenderBlockProps } from './builder-render-block.raw';\n\ntype RenderContentProps = {\n  options?: GetContentOptions;\n  content: BuilderContent;\n  renderContentProps: RenderBlockProps;\n};\n\nexport default function RenderContent(props: RenderContentProps) {\n  const state = useStore({\n    getRenderContentProps(block, index): RenderBlockProps {\n      return {\n        block: block,\n        index: index,\n      };\n    },\n  });\n\n  return <RenderBlock {...state.getRenderContentProps(props.renderContentProps.block, 0)} />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/button-with-metadata.raw.tsx",
    "content": "import { Show, useMetadata } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nuseMetadata({\n  foo: {\n    bar: 'baz',\n  },\n});\n\nuseMetadata({\n  fun: 'more metadata',\n});\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} type=\"button\">\n          {props.text}\n        </button>\n      </Show>\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/button.raw.lite.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} type=\"button\">\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/button.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} type=\"button\">\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/classname-jsx.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport type { JSX } from '../../../../jsx-runtime';\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nexport default function ClassNameCode(props: Props) {\n  const state = useStore({\n    bindings: 'a binding',\n  });\n\n  return (\n    <div>\n      {/*// @ts-ignore */}\n      <div className=\"no binding\">Without Binding</div>\n      {/*// @ts-ignore */}\n      <div className={state.bindings}>With binding</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/columns.raw.tsx",
    "content": "import { For, useStore } from '@builder.io/mitosis';\n\ntype Column = {\n  content: any;\n  // TODO: Implement this when support for dynamic CSS lands\n  width?: number;\n};\n\nexport interface ColumnProps {\n  columns?: Column[];\n\n  // TODO: Implement this when support for dynamic CSS lands\n  space?: number;\n  // TODO: Implement this when support for dynamic CSS lands\n  stackColumnsAt?: 'tablet' | 'mobile' | 'never';\n  // TODO: Implement this when support for dynamic CSS lands\n  reverseColumnsWhenStacked?: boolean;\n}\n\nexport default function Column(props: ColumnProps) {\n  const state = useStore({\n    getColumns(): Column[] {\n      return props.columns || [];\n    },\n    getGutterSize(): number {\n      return typeof props.space === 'number' ? props.space || 0 : 20;\n    },\n    getWidth(index: number) {\n      const columns = state.getColumns();\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    },\n    getColumnCssWidth(index: number) {\n      const columns = state.getColumns();\n      const gutterSize = state.getGutterSize();\n      const subtractWidth = (gutterSize * (columns.length - 1)) / columns.length;\n      return `calc(${state.getWidth(index)}% - ${subtractWidth}px)`;\n    },\n  });\n\n  return (\n    <div\n      class=\"builder-columns\"\n      css={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'stretch',\n        lineHeight: 'normal',\n        '@media (max-width: 999px)': {\n          flexDirection: 'row',\n        },\n        '@media (max-width: 639px)': {\n          flexDirection: 'row-reverse',\n        },\n      }}\n    >\n      <For each={props.columns}>\n        {(column, index) => (\n          <div class=\"builder-column\" css={{ flexGrow: '1' }}>\n            {column.content} {index}\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/content-slot-html.raw.tsx",
    "content": "import { Slot } from '@builder.io/mitosis';\nimport type { JSX } from '../../../../jsx-runtime';\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n  slotTesting: JSX.Element;\n};\n\nexport default function ContentSlotCode(props: Props) {\n  return (\n    <div>\n      <Slot name={props.slotTesting} />\n      <div>\n        <hr />\n      </div>\n      <div>\n        <Slot />\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/content-slot-jsx.raw.tsx",
    "content": "import { Show, Slot, useDefaultProps, useStore } from '@builder.io/mitosis';\nimport type { JSX } from '../../../../jsx-runtime';\n\ntype Props = {\n  [key: string]: string | JSX.Element;\n};\n\nexport default function ContentSlotJsxCode(props: Props) {\n  useDefaultProps({\n    content: '',\n    slotReference: undefined,\n    slotContent: undefined,\n  });\n\n  const state = useStore({\n    name: 'king',\n    showContent: false,\n\n    get cls() {\n      return props.slotContent && props.children ? `${state.name}-content` : '';\n    },\n\n    show() {\n      props.slotContent ? 1 : '';\n    },\n  });\n\n  return (\n    <Show when={props.slotReference}>\n      <div\n        name={props.slotContent ? 'name1' : 'name2'}\n        title={props.slotContent ? 'title1' : 'title2'}\n        {...props.attributes}\n        className={state.cls}\n        onClick={() => state.show()}\n      >\n        <Show when={state.showContent && props.slotContent}>\n          <Slot name=\"content\">{props.content}</Slot>\n        </Show>\n        <div>\n          <hr />\n        </div>\n        <div>{props.children}</div>\n      </div>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/custom-code.raw.tsx",
    "content": "import { onMount, useRef, useStore } from '@builder.io/mitosis';\n\nexport interface CustomCodeProps {\n  code: string;\n  replaceNodes?: boolean;\n}\n\nexport default function CustomCode(props: CustomCodeProps) {\n  const elem = useRef<HTMLDivElement>(null);\n\n  const state = useStore({\n    scriptsInserted: [] as string[],\n    scriptsRun: [] as string[],\n\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem && typeof window !== 'undefined') {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.getElementsByTagName('script');\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement('script');\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(\n              script.type,\n            )\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn('`CustomCode`: Error running script:', error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return (\n    <div\n      ref={elem}\n      class={'builder-custom-code' + (props.replaceNodes ? ' replace-nodes' : '')}\n      innerHTML={props.code}\n    ></div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/embed.raw.tsx",
    "content": "import { onMount, useRef, useStore } from '@builder.io/mitosis';\n\nexport interface EmbedProps {\n  content: string;\n}\n\nexport default function Embed(props: EmbedProps) {\n  const elem = useRef<HTMLDivElement>(null);\n\n  const state = useStore({\n    scriptsInserted: [] as string[],\n    scriptsRun: [] as string[],\n\n    findAndRunScripts() {\n      // TODO: Move this function to standalone one in '@builder.io/utils'\n      if (elem && typeof window !== 'undefined') {\n        /** @type {HTMLScriptElement[]} */\n        const scripts = elem.getElementsByTagName('script');\n        for (let i = 0; i < scripts.length; i++) {\n          const script = scripts[i];\n          if (script.src) {\n            if (state.scriptsInserted.includes(script.src)) {\n              continue;\n            }\n            state.scriptsInserted.push(script.src);\n            const newScript = document.createElement('script');\n            newScript.async = true;\n            newScript.src = script.src;\n            document.head.appendChild(newScript);\n          } else if (\n            !script.type ||\n            ['text/javascript', 'application/javascript', 'application/ecmascript'].includes(\n              script.type,\n            )\n          ) {\n            if (state.scriptsRun.includes(script.innerText)) {\n              continue;\n            }\n            try {\n              state.scriptsRun.push(script.innerText);\n              new Function(script.innerText)();\n            } catch (error) {\n              console.warn('`Embed`: Error running script:', error);\n            }\n          }\n        }\n      }\n    },\n  });\n\n  onMount(() => {\n    state.findAndRunScripts();\n  });\n\n  return <div ref={elem} class=\"builder-embed\" innerHTML={props.content}></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/form.raw.tsx",
    "content": "import { For, Show, useRef, useStore } from '@builder.io/mitosis';\nimport { Builder, BuilderElement, builder } from '@builder.io/sdk';\nimport { BuilderBlock as BuilderBlockComponent, BuilderBlocks, get, set } from '@fake';\n\nexport interface FormProps {\n  attributes?: any;\n  name?: string;\n  action?: string;\n  validate?: boolean;\n  method?: string;\n  builderBlock?: BuilderElement;\n  sendSubmissionsTo?: string;\n  sendSubmissionsToEmail?: string;\n  sendWithJs?: boolean;\n  contentType?: string;\n  customHeaders?: { [key: string]: string };\n  successUrl?: string;\n  previewState?: FormState;\n  successMessage?: BuilderElement[];\n  errorMessage?: BuilderElement[];\n  sendingMessage?: BuilderElement[];\n  resetFormOnSubmit?: boolean;\n  errorMessagePath?: string;\n}\n\nexport type FormState = 'unsubmitted' | 'sending' | 'success' | 'error';\n\nexport default function FormComponent(props: FormProps) {\n  const state = useStore({\n    formState: 'unsubmitted' as FormState,\n    // TODO: separate response and error?\n    responseData: null as any,\n    formErrorMessage: '',\n    get submissionState(): FormState {\n      return (Builder.isEditing && props.previewState) || state.formState;\n    },\n    onSubmit(event: Event & { currentTarget: HTMLFormElement }) {\n      const sendWithJs = props.sendWithJs || props.sendSubmissionsTo === 'email';\n\n      if (props.sendSubmissionsTo === 'zapier') {\n        event.preventDefault();\n      } else if (sendWithJs) {\n        if (!(props.action || props.sendSubmissionsTo === 'email')) {\n          event.preventDefault();\n          return;\n        }\n        event.preventDefault();\n\n        const el = event.currentTarget;\n        const headers = props.customHeaders || {};\n\n        let body: any;\n\n        const formData = new FormData(el);\n\n        // TODO: maybe support null\n        const formPairs: {\n          key: string;\n          value: File | boolean | number | string | FileList;\n        }[] = Array.from(event.currentTarget.querySelectorAll('input,select,textarea'))\n          .filter((el) => !!(el as HTMLInputElement).name)\n          .map((el) => {\n            let value: any;\n            const key = (el as HTMLImageElement).name;\n            if (el instanceof HTMLInputElement) {\n              if (el.type === 'radio') {\n                if (el.checked) {\n                  value = el.name;\n                  return { key, value };\n                }\n              } else if (el.type === 'checkbox') {\n                value = el.checked;\n              } else if (el.type === 'number' || el.type === 'range') {\n                const num = el.valueAsNumber;\n                if (!isNaN(num)) {\n                  value = num;\n                }\n              } else if (el.type === 'file') {\n                // TODO: one vs multiple files\n                value = el.files;\n              } else {\n                value = el.value;\n              }\n            } else {\n              value = (el as HTMLInputElement).value;\n            }\n\n            return { key, value };\n          });\n\n        let contentType = props.contentType;\n\n        if (props.sendSubmissionsTo === 'email') {\n          contentType = 'multipart/form-data';\n        }\n\n        Array.from(formPairs).forEach(({ value }) => {\n          if (\n            value instanceof File ||\n            (Array.isArray(value) && value[0] instanceof File) ||\n            value instanceof FileList\n          ) {\n            contentType = 'multipart/form-data';\n          }\n        });\n\n        // TODO: send as urlEncoded or multipart by default\n        // because of ease of use and reliability in browser API\n        // for encoding the form?\n        if (contentType !== 'application/json') {\n          body = formData;\n        } else {\n          // Json\n          const json = {};\n\n          Array.from(formPairs).forEach(({ value, key }) => {\n            set(json, key, value);\n          });\n\n          body = JSON.stringify(json);\n        }\n\n        if (contentType && contentType !== 'multipart/form-data') {\n          if (\n            /* Zapier doesn't allow content-type header to be sent from browsers */\n            !(sendWithJs && props.action?.includes('zapier.com'))\n          ) {\n            headers['content-type'] = contentType;\n          }\n        }\n\n        const presubmitEvent = new CustomEvent('presubmit', {\n          detail: {\n            body,\n          },\n        });\n        if (formRef) {\n          formRef.dispatchEvent(presubmitEvent);\n          if (presubmitEvent.defaultPrevented) {\n            return;\n          }\n        }\n\n        state.formState = 'sending';\n\n        const formUrl = `${\n          builder.env === 'dev' ? 'http://localhost:5000' : 'https://builder.io'\n        }/api/v1/form-submit?apiKey=${builder.apiKey}&to=${btoa(\n          props.sendSubmissionsToEmail || '',\n        )}&name=${encodeURIComponent(props.name || '')}`;\n\n        fetch(\n          props.sendSubmissionsTo === 'email'\n            ? formUrl\n            : props.action! /* TODO: throw error if no action URL */,\n          {\n            body,\n            headers,\n            method: props.method || 'post',\n          },\n        ).then(\n          async (res) => {\n            let body;\n            const contentType = res.headers.get('content-type');\n            if (contentType && contentType.indexOf('application/json') !== -1) {\n              body = await res.json();\n            } else {\n              body = await res.text();\n            }\n\n            if (!res.ok && props.errorMessagePath) {\n              /* TODO: allow supplying an error formatter function */\n              let message = get(body, props.errorMessagePath);\n\n              if (message) {\n                if (typeof message !== 'string') {\n                  /* TODO: ideally convert json to yaml so it woul dbe like\n                   error: - email has been taken */\n                  message = JSON.stringify(message);\n                }\n                state.formErrorMessage = message;\n              }\n            }\n\n            state.responseData = body;\n            state.formState = res.ok ? 'success' : 'error';\n\n            if (res.ok) {\n              const submitSuccessEvent = new CustomEvent('submit:success', {\n                detail: {\n                  res,\n                  body,\n                },\n              });\n              if (formRef) {\n                formRef.dispatchEvent(submitSuccessEvent);\n                if (submitSuccessEvent.defaultPrevented) {\n                  return;\n                }\n                /* TODO: option to turn this on/off? */\n                if (props.resetFormOnSubmit !== false) {\n                  formRef.reset();\n                }\n              }\n\n              /* TODO: client side route event first that can be preventDefaulted */\n              if (props.successUrl) {\n                if (formRef) {\n                  const event = new CustomEvent('route', {\n                    detail: {\n                      url: props.successUrl,\n                    },\n                  });\n                  formRef.dispatchEvent(event);\n                  if (!event.defaultPrevented) {\n                    location.href = props.successUrl;\n                  }\n                } else {\n                  location.href = props.successUrl;\n                }\n              }\n            }\n          },\n          (err) => {\n            const submitErrorEvent = new CustomEvent('submit:error', {\n              detail: {\n                error: err,\n              },\n            });\n            if (formRef) {\n              formRef.dispatchEvent(submitErrorEvent);\n              if (submitErrorEvent.defaultPrevented) {\n                return;\n              }\n            }\n\n            state.responseData = err;\n            state.formState = 'error';\n          },\n        );\n      }\n    },\n  });\n\n  const formRef = useRef<HTMLFormElement>(null);\n\n  return (\n    <form\n      validate={props.validate}\n      ref={formRef}\n      action={!props.sendWithJs && props.action}\n      method={props.method}\n      name={props.name}\n      onSubmit={(event) => state.onSubmit(event)}\n      {...props.attributes}\n    >\n      <Show when={props.builderBlock && props.builderBlock.children}>\n        <For each={props.builderBlock?.children}>\n          {(block, index) => <BuilderBlockComponent key={block.id} block={block} index={index} />}\n        </For>\n      </Show>\n\n      <Show when={state.submissionState === 'error'}>\n        <BuilderBlocks dataPath=\"errorMessage\" blocks={props.errorMessage!} />\n      </Show>\n\n      <Show when={state.submissionState === 'sending'}>\n        <BuilderBlocks dataPath=\"sendingMessage\" blocks={props.sendingMessage!} />\n      </Show>\n\n      <Show when={state.submissionState === 'error' && state.responseData}>\n        <pre\n          class=\"builder-form-error-text\"\n          css={{ padding: '10px', color: 'red', textAlign: 'center' }}\n        >\n          {JSON.stringify(state.responseData, null, 2)}\n        </pre>\n      </Show>\n\n      <Show when={state.submissionState === 'success'}>\n        <BuilderBlocks dataPath=\"successMessage\" blocks={props.successMessage!} />\n      </Show>\n    </form>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/getter-state.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function Button(props: { foo: string }) {\n  const state = useStore({\n    get foo2() {\n      return props.foo + 'foo';\n    },\n\n    get bar() {\n      return 'bar';\n    },\n\n    baz(i: number) {\n      return i + state.foo2.length;\n    },\n  });\n  return (\n    <div>\n      <p>{state.foo2}</p>\n      <p>{state.bar}</p>\n      <p>{state.baz(1)}</p>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/image.raw.tsx",
    "content": "import { onMount, onUnMount, Show, useRef, useState, useStore } from '@builder.io/mitosis';\n\n// TODO: AMP Support?\n\nexport interface ImageProps {\n  _class?: string;\n  image: string;\n  sizes?: string;\n  lazy?: boolean;\n  height?: number;\n  width?: number;\n  altText?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string;\n  // TODO: Support generating Builder.io and or Shopify `srcset`s when needed\n  srcset?: string;\n  // TODO: Implement support for custom aspect ratios\n  aspectRatio?: number;\n  // TODO: This might not work as expected in terms of positioning\n  children?: any;\n}\n\nexport default function Image(props: ImageProps) {\n  const pictureRef = useRef<HTMLElement>();\n\n  const state = useStore({\n    scrollListener: null as null | (() => void),\n    imageLoaded: false,\n    setLoaded() {\n      state.imageLoaded = true;\n    },\n    useLazyLoading() {\n      // TODO: Add more checks here, like testing for real web browsers\n      return !!props.lazy && isBrowser();\n    },\n  });\n\n  function isBrowser() {\n    return typeof window !== 'undefined' && window.navigator.product != 'ReactNative';\n  }\n\n  const [load, setLoad] = useState(false);\n\n  onMount(() => {\n    if (state.useLazyLoading()) {\n      // throttled scroll capture listener\n      const listener = () => {\n        if (pictureRef) {\n          const rect = pictureRef.getBoundingClientRect();\n          const buffer = window.innerHeight / 2;\n          if (rect.top < window.innerHeight + buffer) {\n            setLoad(true);\n            state.scrollListener = null;\n            window.removeEventListener('scroll', listener);\n          }\n        }\n      };\n      state.scrollListener = listener;\n      window.addEventListener('scroll', listener, {\n        capture: true,\n        passive: true,\n      });\n      listener();\n    }\n  });\n\n  onUnMount(() => {\n    if (state.scrollListener) {\n      window.removeEventListener('scroll', state.scrollListener);\n    }\n  });\n\n  return (\n    <div>\n      <picture ref={pictureRef}>\n        <Show when={!state.useLazyLoading() || load}>\n          <img\n            alt={props.altText}\n            aria-role={props.altText ? 'presentation' : undefined}\n            css={{\n              opacity: '1',\n              transition: 'opacity 0.2s ease-in-out',\n              objectFit: 'cover',\n              objectPosition: 'center',\n            }}\n            class={'builder-image' + (props._class ? ' ' + props._class : '')}\n            src={props.image}\n            onLoad={() => state.setLoaded()}\n            // TODO: memoize on image on client\n            srcset={props.srcset}\n            sizes={props.sizes}\n          />\n        </Show>\n        <source srcset={props.srcset} />\n      </picture>\n      {props.children}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/img-state.raw.tsx",
    "content": "import { For, useStore } from '@builder.io/mitosis';\n\nexport default function ImgStateComponent() {\n  const state = useStore({\n    canShow: true,\n    images: ['http://example.com/qwik.png'],\n  });\n  return (\n    <div>\n      <For each={state.images}>\n        {(item, itemIndex) => (\n          <>\n            <img class={'custom-class'} src={item} key={itemIndex} />\n          </>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/img.raw.tsx",
    "content": "import '@builder.io/mitosis';\nimport { Builder } from '@builder.io/sdk';\n\nexport interface ImgProps {\n  attributes?: any;\n  imgSrc?: string;\n  altText?: string;\n  backgroundSize?: 'cover' | 'contain';\n  backgroundPosition?:\n    | 'center'\n    | 'top'\n    | 'left'\n    | 'right'\n    | 'bottom'\n    | 'top left'\n    | 'top right'\n    | 'bottom left'\n    | 'bottom right';\n}\n\nexport default function ImgComponent(props: ImgProps) {\n  return (\n    <img\n      style={{\n        objectFit: props.backgroundSize || 'cover',\n        objectPosition: props.backgroundPosition || 'center',\n      }}\n      {...props.attributes}\n      key={(Builder.isEditing && props.imgSrc) || 'default-key'}\n      alt={props.altText}\n      src={props.imgSrc}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/index-in-for.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [todos, setTodos] = useState([\n    { id: 1, completed: false },\n    { id: 2, completed: false },\n  ]);\n\n  return (\n    <div>\n      {todos.map((todo) => (\n        <div>\n          {state.todos.map((todo, index) => (\n            <input\n              type=\"checkbox\"\n              checked={todo.completed}\n              key={todo.id + '-' + index}\n              value={index}\n              foo={{\n                bar: 1 + index,\n              }}\n              onX={() => {\n                console.log('onX');\n              }}\n              onClick={(event) => {\n                console.log('clicked', event);\n                state.todos[index].completed = !state.todos[0].completed;\n              }}\n              onChange={(event) => {\n                console.log('this is todo item: ', index);\n                const index = state.todos.findIndex((t) => t.id === todo.id);\n                state.todos[index].completed = event.target.checked;\n              }}\n            />\n          ))}\n        </div>\n      ))}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/input-parent.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport FormInputComponent from './input.raw';\n\nexport default function Stepper(props) {\n  const state = useStore({\n    handleChange(value: string) {\n      console.log(value);\n    },\n  });\n\n  return (\n    <FormInputComponent\n      name=\"kingzez\"\n      type=\"text\"\n      onChange={(value) => state.handleChange(value)}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/input.raw.tsx",
    "content": "import '@builder.io/mitosis';\nimport { Builder } from '@builder.io/sdk';\n\nexport interface FormInputProps {\n  type?: string;\n  attributes?: any;\n  name?: string;\n  value?: string;\n  placeholder?: string;\n  defaultValue?: string;\n  required?: boolean;\n  onChange?: (value: string) => void;\n}\n\nexport default function FormInputComponent(props: FormInputProps) {\n  return (\n    <input\n      {...props.attributes}\n      key={Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'}\n      placeholder={props.placeholder}\n      type={props.type}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n      required={props.required}\n      onChange={(event) => props.onChange?.(event.target.value)}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/multiple-onUpdate.raw.tsx",
    "content": "import { onUpdate } from '@builder.io/mitosis';\n\nexport default function MultipleOnUpdate() {\n  onUpdate(() => {\n    console.log('Runs on every update/rerender');\n  });\n\n  onUpdate(() => {\n    console.log('Runs on every update/rerender as well');\n  });\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/multiple-onUpdateWithDeps.raw.tsx",
    "content": "import { onUpdate, useStore } from '@builder.io/mitosis';\n\nexport default function MultipleOnUpdateWithDeps() {\n  const state = useStore({\n    a: 'a',\n    b: 'b',\n    c: 'c',\n    d: 'd',\n  });\n\n  onUpdate(() => {\n    console.log('Runs when a or b changes', state.a, state.b);\n    if (state.a === 'a') {\n      state.a = 'b';\n    }\n  }, [state.a, state.b]);\n\n  onUpdate(() => {\n    console.log('Runs when c or d changes', state.c, state.d);\n    if (state.a === 'a') {\n      state.a = 'b';\n    }\n  }, [state.c, state.d]);\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onEvent.raw.tsx",
    "content": "import { onEvent, onMount, useRef, useStore } from '@builder.io/mitosis';\n\nexport default function Embed() {\n  const elem = useRef<HTMLDivElement>(null);\n\n  const state = useStore({\n    foo(event) {\n      console.log('test2');\n    },\n  });\n\n  onEvent(\n    'initEditingBldr',\n    (event) => {\n      console.log('test');\n      state.foo(event);\n    },\n    elem,\n    true,\n  );\n\n  onMount(() => {\n    elem.dispatchEvent(new CustomEvent('initEditingBldr'));\n  });\n\n  return (\n    <div ref={elem} class=\"builder-embed\">\n      <div>Test</div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onInit-onMount.raw.tsx",
    "content": "import { onInit, onMount } from '@builder.io/mitosis';\n\nexport default function OnInit() {\n  onInit(() => {\n    console.log('onInit');\n  });\n\n  onMount(() => {\n    console.log('onMount');\n  });\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onInit-plain.raw.tsx",
    "content": "import { onInit } from '@builder.io/mitosis';\n\nexport default function OnInitPlain() {\n  onInit(() => {\n    console.log('onInit');\n  });\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onInit.raw.tsx",
    "content": "import { onInit, useStore } from '@builder.io/mitosis';\n\ntype Props = {\n  name: string;\n};\n\nexport const defaultValues = {\n  name: 'PatrickJS',\n};\n\nexport default function OnInit(props: Props) {\n  const state = useStore({\n    // name: props.name\n    // name: defaultValues.name || props.name,\n    name: '',\n  });\n\n  onInit(() => {\n    state.name = defaultValues.name || props.name;\n    console.log('set defaults with props');\n  });\n\n  return <div>Default name defined by parent {state.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onMount-multiple.raw.tsx",
    "content": "import { onMount } from '@builder.io/mitosis';\n\nexport default function Comp() {\n  onMount(() => {\n    console.log('Runs on mount');\n  });\n\n  onMount(() => {\n    console.log('Another one runs on Mount');\n  });\n\n  onMount(\n    () => {\n      console.log('SSR runs on Mount');\n    },\n    { onSSR: true },\n  );\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onMount.raw.tsx",
    "content": "import { onMount, onUnMount } from '@builder.io/mitosis';\n\nexport default function Comp() {\n  onMount(() => {\n    console.log('Runs on mount');\n  });\n\n  onUnMount(() => {\n    console.log('Runs on unMount');\n  });\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onUpdate.raw.tsx",
    "content": "import { onUpdate } from '@builder.io/mitosis';\n\nexport default function OnUpdate() {\n  onUpdate(() => {\n    console.log('Runs on every update/rerender');\n  });\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/onUpdateWithDeps.raw.tsx",
    "content": "import { onUpdate, useStore } from '@builder.io/mitosis';\n\ntype Props = {\n  size: string;\n};\n\nexport default function OnUpdateWithDeps(props: Props) {\n  const state = useStore({\n    a: 'a',\n    b: 'b',\n  });\n\n  onUpdate(() => {\n    console.log('Runs when a, b or size changes', state.a, state.b, props.size);\n  }, [state.a, state.b, props.size]);\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/raw-text.raw.tsx",
    "content": "export interface RawTextProps {\n  attributes?: any;\n  text?: string;\n  // builderBlock?: any;\n}\n\nexport default function RawText(props: RawTextProps) {\n  return (\n    <span\n      class={props.attributes?.class || props.attributes?.className}\n      innerHTML={props.text || ''}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/referencing-function-inside-hook.raw.tsx",
    "content": "import { onUpdate } from '@builder.io/mitosis';\n\nexport default function OnUpdate() {\n  onUpdate(() => {\n    foo({\n      someOption: bar,\n    });\n  });\n\n  function foo(params) {}\n\n  function bar() {}\n\n  function zoo() {\n    const params = {\n      cb: bar,\n    };\n  }\n\n  return <div />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/render-block.raw.tsx",
    "content": "import { For, Show, useStore } from '@builder.io/mitosis';\nimport { TARGET } from '../../constants/target.js';\nimport type { BuilderContextInterface, RegisteredComponent } from '../../context/types.js';\nimport { evaluate } from '../../functions/evaluate.js';\nimport { extractTextStyles } from '../../functions/extract-text-styles.js';\nimport { getBlockActions } from '../../functions/get-block-actions.js';\nimport { getBlockComponentOptions } from '../../functions/get-block-component-options.js';\nimport { getBlockProperties } from '../../functions/get-block-properties.js';\nimport { getBlockTag } from '../../functions/get-block-tag.js';\nimport { getProcessedBlock } from '../../functions/get-processed-block.js';\nimport { getReactNativeBlockStyles } from '../../functions/get-react-native-block-styles.js';\nimport type { BuilderBlock } from '../../types/builder-block.js';\nimport type { Nullable } from '../../types/typescript.js';\nimport BlockStyles from './block-styles.lite';\nimport { isEmptyHtmlElement } from './render-block.helpers.js';\nimport RenderComponentWithContext from './render-component-with-context.lite';\nimport type { RenderComponentProps } from './render-component.lite';\nimport RenderComponent from './render-component.lite';\nimport RenderRepeatedBlock from './render-repeated-block.lite';\nimport type { RepeatData } from './types.js';\n\nexport type RenderBlockProps = {\n  block: BuilderBlock;\n  context: BuilderContextInterface;\n};\n\nexport default function RenderBlock(props: RenderBlockProps) {\n  const state = useStore({\n    get component(): Nullable<RegisteredComponent> {\n      const componentName = getProcessedBlock({\n        block: props.block,\n        state: props.context.state,\n        context: props.context.context,\n        shouldEvaluateBindings: false,\n      }).component?.name;\n\n      if (!componentName) {\n        return null;\n      }\n\n      const ref = props.context.registeredComponents[componentName];\n\n      if (!ref) {\n        // TODO: Public doc page with more info about this message\n        console.warn(`\n          Could not find a registered component named \"${componentName}\". \n          If you registered it, is the file that registered it imported by the file that needs to render it?`);\n        return undefined;\n      } else {\n        return ref;\n      }\n    },\n    get tag() {\n      return getBlockTag(state.useBlock);\n    },\n    get useBlock(): BuilderBlock {\n      return state.repeatItemData\n        ? props.block\n        : getProcessedBlock({\n            block: props.block,\n            state: props.context.state,\n            context: props.context.context,\n            shouldEvaluateBindings: true,\n          });\n    },\n    get actions() {\n      return getBlockActions({\n        block: state.useBlock,\n        state: props.context.state,\n        context: props.context.context,\n      });\n    },\n    get attributes() {\n      const blockProperties = getBlockProperties(state.useBlock);\n      return {\n        ...blockProperties,\n        ...(TARGET === 'reactNative'\n          ? {\n              style: getReactNativeBlockStyles({\n                block: state.useBlock,\n                context: props.context,\n                blockStyles: blockProperties.style,\n              }),\n            }\n          : {}),\n      };\n    },\n\n    get shouldWrap() {\n      return !state.component?.noWrap;\n    },\n\n    get renderComponentProps(): RenderComponentProps {\n      return {\n        blockChildren: state.useChildren,\n        componentRef: state.component?.component,\n        componentOptions: {\n          ...getBlockComponentOptions(state.useBlock),\n          /**\n           * These attributes are passed to the wrapper element when there is one. If `noWrap` is set to true, then\n           * they are provided to the component itself directly.\n           */\n          ...(state.shouldWrap\n            ? {}\n            : {\n                attributes: {\n                  ...state.attributes,\n                  ...state.actions,\n                },\n              }),\n          customBreakpoints: state.childrenContext?.content?.meta?.breakpoints,\n        },\n        context: state.childrenContext,\n      };\n    },\n    get useChildren() {\n      // TO-DO: When should `canHaveChildren` dictate rendering?\n      // This is currently commented out because some Builder components (e.g. Box) do not have `canHaveChildren: true`,\n      // but still receive and need to render children.\n      // return state.componentInfo?.canHaveChildren ? state.useBlock.children : [];\n      return state.useBlock.children ?? [];\n    },\n    get childrenWithoutParentComponent() {\n      /**\n       * When there is no `componentRef`, there might still be children that need to be rendered. In this case,\n       * we render them outside of `componentRef`.\n       * NOTE: We make sure not to render this if `repeatItemData` is non-null, because that means we are rendering an array of\n       * blocks, and the children will be repeated within those blocks.\n       */\n      const shouldRenderChildrenOutsideRef = !state.component?.component && !state.repeatItemData;\n\n      return shouldRenderChildrenOutsideRef ? state.useChildren : [];\n    },\n\n    get repeatItemData(): RepeatData[] | undefined {\n      /**\n       * we don't use `state.useBlock` here because the processing done within its logic includes evaluating the block's bindings,\n       * which will not work if there is a repeat.\n       */\n      const { repeat, ...blockWithoutRepeat } = props.block;\n\n      if (!repeat?.collection) {\n        return undefined;\n      }\n\n      const itemsArray = evaluate({\n        code: repeat.collection,\n        state: props.context.state,\n        context: props.context.context,\n      });\n\n      if (!Array.isArray(itemsArray)) {\n        return undefined;\n      }\n\n      const collectionName = repeat.collection.split('.').pop();\n      const itemNameToUse = repeat.itemName || (collectionName ? collectionName + 'Item' : 'item');\n\n      const repeatArray = itemsArray.map<RepeatData>((item, index) => ({\n        context: {\n          ...props.context,\n          state: {\n            ...props.context.state,\n            $index: index,\n            $item: item,\n            [itemNameToUse]: item,\n            [`$${itemNameToUse}Index`]: index,\n          },\n        },\n        block: blockWithoutRepeat,\n      }));\n\n      return repeatArray;\n    },\n\n    get inheritedTextStyles() {\n      if (TARGET !== 'reactNative') {\n        return {};\n      }\n\n      const styles = getReactNativeBlockStyles({\n        block: state.useBlock,\n        context: props.context,\n        blockStyles: state.attributes.style,\n      });\n\n      return extractTextStyles(styles);\n    },\n\n    get childrenContext(): BuilderContextInterface {\n      return {\n        apiKey: props.context.apiKey,\n        state: props.context.state,\n        content: props.context.content,\n        context: props.context.context,\n        registeredComponents: props.context.registeredComponents,\n        inheritedStyles: state.inheritedTextStyles,\n      };\n    },\n\n    get renderComponentTag(): any {\n      if (TARGET === 'reactNative') {\n        return RenderComponentWithContext;\n      } else if (TARGET === 'vue3') {\n        // vue3 expects a string for the component tag\n        return 'RenderComponent';\n      } else {\n        return RenderComponent;\n      }\n    },\n  });\n\n  return (\n    <Show\n      when={state.shouldWrap}\n      else={<state.renderComponentTag {...state.renderComponentProps} />}\n    >\n      {/*\n       * Svelte is super finicky, and does not allow an empty HTML element (e.g. `img`) to have logic inside of it,\n       * _even_ if that logic ends up not rendering anything.\n       */}\n      <Show when={isEmptyHtmlElement(state.tag)}>\n        <state.tag {...state.attributes} {...state.actions} />\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && state.repeatItemData}>\n        <For each={state.repeatItemData}>\n          {(data, index) => (\n            <RenderRepeatedBlock key={index} repeatContext={data.context} block={data.block} />\n          )}\n        </For>\n      </Show>\n      <Show when={!isEmptyHtmlElement(state.tag) && !state.repeatItemData}>\n        <state.tag {...state.attributes} {...state.actions}>\n          <state.renderComponentTag {...state.renderComponentProps} />\n          {/**\n           * We need to run two separate loops for content + styles to workaround the fact that Vue 2\n           * does not support multiple root elements.\n           */}\n          <For each={state.childrenWithoutParentComponent}>\n            {(child) => (\n              <RenderBlock\n                key={'render-block-' + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n          <For each={state.childrenWithoutParentComponent}>\n            {(child) => (\n              <BlockStyles\n                key={'block-style-' + child.id}\n                block={child}\n                context={state.childrenContext}\n              />\n            )}\n          </For>\n        </state.tag>\n      </Show>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/root-fragment-multi-node.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n}\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} type=\"button\">\n          {props.text}\n        </button>\n      </Show>\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/rootShow.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport default function RenderStyles(props: { foo: string }) {\n  return (\n    <Show when={props.foo === 'bar'} else={<div>Foo</div>}>\n      <div>Bar</div>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/section-state.raw.tsx",
    "content": "import { For, Show, useStore } from '@builder.io/mitosis';\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionStateComponent(props: SectionProps) {\n  const state = useStore({\n    max: 42,\n    items: [42],\n  });\n  return (\n    <Show when={state.max}>\n      <For each={state.items}>\n        {(item) => (\n          <section {...props.attributes} style={{ maxWidth: item + state.max }}>\n            {props.children}\n          </section>\n        )}\n      </For>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/section.raw.tsx",
    "content": "import '@builder.io/mitosis';\n\nexport interface SectionProps {\n  maxWidth?: number;\n  attributes?: any;\n  children?: any;\n}\n\nexport default function SectionComponent(props: SectionProps) {\n  return (\n    <section\n      {...props.attributes}\n      style={\n        props.maxWidth && typeof props.maxWidth === 'number'\n          ? { maxWidth: props.maxWidth }\n          : undefined\n      }\n    >\n      {props.children}\n    </section>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/select.raw.tsx",
    "content": "import { For } from '@builder.io/mitosis';\nimport { Builder } from '@builder.io/sdk';\n\nexport interface FormSelectProps {\n  options?: { name?: string; value: string }[];\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n}\n\nexport default function SelectComponent(props: FormSelectProps) {\n  return (\n    <select\n      {...props.attributes}\n      value={props.value}\n      key={Builder.isEditing && props.defaultValue ? props.defaultValue : 'default-key'}\n      defaultValue={props.defaultValue}\n      name={props.name}\n    >\n      <For each={props.options}>\n        {(option, index) => (\n          <option value={option.value} data-index={index}>\n            {option.name || option.value}\n          </option>\n        )}\n      </For>\n    </select>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/self-referencing-component-with-children.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport default function MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      {props.children}\n      <Show when={props.name === 'Batman'}>\n        <MyComponent name={'Bruce'}>\n          <div>Wayne</div>\n        </MyComponent>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/self-referencing-component.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\nexport default function MyComponent(props: any) {\n  return (\n    <div>\n      {props.name}\n      <Show when={props.name === 'Batman'}>\n        <MyComponent name={'Bruce Wayne'} />\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/shadow-dom.raw.tsx",
    "content": "import { For, onMount, Show, useMetadata, useStore } from '@builder.io/mitosis';\n\nuseMetadata({ isAttachedToShadowDom: true });\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nexport default function SmileReviews(props: SmileReviewsProps) {\n  const state = useStore({\n    reviews: [] as any[],\n    name: 'test',\n    showReviewPrompt: false,\n  });\n\n  // TODO: allow async function here\n  onMount(() => {\n    fetch(\n      `https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=${\n        props.apiKey || 'pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM'\n      }&productId=${props.productId || '2410511106127'}`,\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick={() => (state.showReviewPrompt = true)}>Write a review</button>\n      <Show when={state.showReviewPrompt}>\n        <input placeholder=\"Email\" />\n\n        <input css={{ display: 'block' }} placeholder=\"Title\" />\n\n        <textarea css={{ display: 'block' }} placeholder=\"How was your experience?\" />\n        <button\n          css={{ display: 'block' }}\n          onClick={() => {\n            state.showReviewPrompt = false;\n          }}\n        >\n          Submit\n        </button>\n      </Show>\n      <For each={state.reviews}>\n        {(review, index) => (\n          <div\n            $name=\"Review\"\n            key={review.id}\n            css={{\n              margin: '10px',\n              padding: '10px',\n              background: 'white',\n              display: 'flex',\n              borderRadius: '5px',\n              boxShadow: '0 2px 5px rgba(0, 0, 0, 0.1)',\n            }}\n          >\n            <img css={{ height: '30px', width: '30px', marginRight: '10px' }} src={review.avatar} />\n            <div class={state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/slot-default.raw.tsx",
    "content": "import { Slot } from '@builder.io/mitosis';\n\ntype Props = { [key: string]: string };\n\nexport default function SlotCode(props: Props) {\n  return (\n    <div>\n      <Slot>\n        <div class=\"default-slot\">Default content</div>\n      </Slot>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/slot-html.raw.tsx",
    "content": "import { Slot } from '@builder.io/mitosis';\nimport ContentSlotCode from './content-slot-jsx.raw';\n\ntype Props = { [key: string]: string };\n\nexport default function SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode>\n        <Slot testing={<div>Hello</div>}></Slot>\n      </ContentSlotCode>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/slot-jsx.raw.tsx",
    "content": "import ContentSlotCode from './content-slot-jsx.raw';\n\ntype Props = { [key: string]: string };\n\nexport default function SlotCode(props: Props) {\n  return (\n    <div>\n      <ContentSlotCode slotTesting={<div>Hello</div>} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/slot-named.raw.tsx",
    "content": "import { Slot } from '@builder.io/mitosis';\n\ntype Props = { [key: string]: string };\n\nexport default function SlotCode(props: Props) {\n  return (\n    <div>\n      <Slot name=\"myAwesomeSlot\" />\n      <Slot name=\"top\" />\n      <Slot name=\"left\">Default left</Slot>\n      <Slot>Default Child</Slot>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/stamped-io.raw.tsx",
    "content": "import { For, onMount, Show, useStore } from '@builder.io/mitosis';\nimport { kebabCase, snakeCase } from 'lodash';\n\ntype SmileReviewsProps = {\n  productId: string;\n  apiKey: string;\n};\n\nexport default function SmileReviews(props: SmileReviewsProps) {\n  const state = useStore({\n    reviews: [] as any[],\n    name: 'test',\n    showReviewPrompt: false,\n    kebabCaseValue() {\n      return kebabCase('testThat');\n    },\n    snakeCaseValue() {\n      return snakeCase('testThis');\n    },\n  });\n\n  // TODO: allow async function here\n  onMount(() => {\n    fetch(\n      `https://stamped.io/api/widget/reviews?storeUrl=builder-io.myshopify.com&apiKey=${\n        props.apiKey || 'pubkey-8bbDq7W6w4sB3OWeM1HUy2s47702hM'\n      }&productId=${props.productId || '2410511106127'}`,\n    )\n      .then((res) => res.json())\n      .then((data) => {\n        state.reviews = data.data;\n      });\n  });\n\n  return (\n    <div data-user={state.name}>\n      <button onClick={() => (state.showReviewPrompt = true)}>Write a review</button>\n      <Show when={state.showReviewPrompt || 'asdf'}>\n        <input placeholder=\"Email\" />\n\n        <input css={{ display: 'block' }} placeholder=\"Title\" />\n\n        <textarea css={{ display: 'block' }} placeholder=\"How was your experience?\" />\n        <button\n          css={{ display: 'block' }}\n          onClick={(ev) => {\n            ev.preventDefault();\n            state.showReviewPrompt = false;\n          }}\n        >\n          Submit\n        </button>\n      </Show>\n      <For each={state.reviews}>\n        {(review, index) => (\n          <div\n            $name=\"Review\"\n            key={review.id}\n            css={{\n              margin: '10px',\n              padding: '10px',\n              background: 'white',\n              display: 'flex',\n              borderRadius: '5px',\n              boxShadow: '0 2px 5px rgba(0, 0, 0, 0.1)',\n              WebkitFontSmoothing: 'antialiased',\n            }}\n          >\n            <img css={{ height: '30px', width: '30px', marginRight: '10px' }} src={review.avatar} />\n            <div class={state.showReviewPrompt ? 'bg-primary' : 'bg-secondary'}>\n              <div>N: {index}</div>\n              <div>{review.author}</div>\n              <div>{review.reviewMessage}</div>\n            </div>\n          </div>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/submit-button.raw.tsx",
    "content": "import '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n}\n\nexport default function SubmitButton(props: ButtonProps) {\n  return (\n    <button {...props.attributes} type=\"submit\">\n      {props.text}\n    </button>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/text.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport { Builder } from '@builder.io/sdk';\n\nexport interface TextProps {\n  attributes?: any;\n  rtlMode: boolean;\n  text?: string;\n  content?: string;\n  builderBlock?: any;\n}\n\nexport default function Text(props: TextProps) {\n  const allowEditingText: boolean =\n    Builder.isBrowser &&\n    Builder.isEditing &&\n    location.search.includes('builder.allowTextEdit=true') &&\n    !(\n      props.builderBlock?.bindings?.['component.options.text'] ||\n      props.builderBlock?.bindings?.['options.text'] ||\n      props.builderBlock?.bindings?.['text']\n    );\n  const state = useStore({ name: 'Decadef20' });\n\n  // TODO: Add back dynamic `direction` CSS prop when we add support for some\n  //       sort of dynamic CSS\n  // css={{ direction: props.rtlMode ? 'rtl' : 'ltr' }}\n  return (\n    <div\n      contentEditable={allowEditingText || undefined}\n      data-name={{ test: state.name || 'any name' }}\n      innerHTML={props.text || props.content || state.name || '<p class=\"text-lg\">my name</p>'}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/textarea.raw.tsx",
    "content": "export interface TextareaProps {\n  attributes?: any;\n  name?: string;\n  value?: string;\n  defaultValue?: string;\n  placeholder?: string;\n}\n\nexport default function Textarea(props: TextareaProps) {\n  return (\n    <textarea\n      {...props.attributes}\n      placeholder={props.placeholder}\n      name={props.name}\n      value={props.value}\n      defaultValue={props.defaultValue}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/blocks/video.raw.tsx",
    "content": "export interface VideoProps {\n  attributes?: any;\n  video?: string;\n  autoPlay?: boolean;\n  controls?: boolean;\n  muted?: boolean;\n  loop?: boolean;\n  playsInline?: boolean;\n  aspectRatio?: number;\n  width?: number;\n  height?: number;\n  fit?: 'contain' | 'cover' | 'fill';\n  position?:\n    | 'center'\n    | 'top'\n    | 'left'\n    | 'right'\n    | 'bottom'\n    | 'top left'\n    | 'top right'\n    | 'bottom left'\n    | 'bottom right';\n  posterImage?: string;\n  lazyLoad?: boolean;\n}\n\nexport default function Video(props: VideoProps) {\n  return (\n    <video\n      {...props.attributes}\n      style={{\n        width: '100%',\n        height: '100%',\n        ...props.attributes?.style,\n        objectFit: props.fit,\n        objectPosition: props.position,\n        // Hack to get object fit to work as expected and\n        // not have the video overflow\n        borderRadius: 1,\n      }}\n      preload=\"none\"\n      key={props.video || 'no-src'}\n      poster={props.posterImage}\n      autoplay={props.autoPlay}\n      muted={props.muted}\n      controls={props.controls}\n      loop={props.loop}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/boolean.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-45a7b7f25d07-4257-b155-d49cb7c21cab\",\n        \"meta\": {\n          \"id\": \"2:2011\",\n          \"type\": \"INSTANCE\",\n          \"name\": \"<TextField>\",\n          \"componentProperties\": {\n            \"↳ Placeholder#11446:0\": {\n              \"value\": \"Placeholder\",\n              \"type\": \"TEXT\"\n            },\n            \"Label#11073:2074\": {\n              \"value\": \"Search by title\",\n              \"type\": \"TEXT\"\n            },\n            \"↳ Value#11069:1345\": {\n              \"value\": \"Senior|\",\n              \"type\": \"TEXT\"\n            },\n            \"↳ Start Instance#10244:82\": {\n              \"value\": \"2:862\",\n              \"type\": \"INSTANCE_SWAP\",\n              \"preferredValues\": [\n                {\n                  \"type\": \"COMPONENT\",\n                  \"key\": \"f4177b5aa47e1d9f94c0f4dd6892e0e51ca79f94\"\n                },\n                {\n                  \"type\": \"COMPONENT_SET\",\n                  \"key\": \"69cc5a63fe7180226b09e0bc53c1388548856226\"\n                }\n              ]\n            },\n            \"Value?#10060:82\": {\n              \"value\": true,\n              \"type\": \"BOOLEAN\"\n            },\n            \"↳ End Instance#10244:123\": {\n              \"value\": \"2:299\",\n              \"type\": \"INSTANCE_SWAP\",\n              \"preferredValues\": []\n            },\n            \"Placeholder?#10060:123\": {\n              \"value\": false,\n              \"type\": \"BOOLEAN\"\n            },\n            \"Adorn. End?#10045:202\": {\n              \"value\": false,\n              \"type\": \"BOOLEAN\"\n            },\n            \"Adorn. Start?#10045:161\": {\n              \"value\": true,\n              \"type\": \"BOOLEAN\"\n            },\n            \"Helper?#10045:0\": {\n              \"value\": false,\n              \"type\": \"BOOLEAN\"\n            },\n            \"Variant\": {\n              \"value\": \"Outlined\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            },\n            \"Size\": {\n              \"value\": \"Medium\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            },\n            \"State\": {\n              \"value\": \"Focused\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            },\n            \"Has Value\": {\n              \"value\": \"True\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            }\n          },\n          \"builderComponent\": {\n            \"name\": \"TextField\",\n            \"inputs\": [\n              {\n                \"name\": \"autoComplete\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"children\",\n                \"type\": \"string\",\n                \"value\": []\n              },\n              {\n                \"name\": \"classes\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"className\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"color\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"component\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"disabled\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"error\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"focused\",\n                \"type\": \"boolean\",\n                \"value\": true\n              },\n              {\n                \"name\": \"FormHelperTextProps\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"fullWidth\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"helperText\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"hiddenLabel\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"id\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"InputLabelProps\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"InputProps\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"inputProps\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"inputRef\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"label\",\n                \"type\": \"string\",\n                \"value\": \"Search by title\"\n              },\n              {\n                \"name\": \"margin\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"maxRows\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"minRows\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"multiline\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"name\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"placeholder\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"ref\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"required\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"rows\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"select\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"SelectProps\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"size\",\n                \"type\": \"string\",\n                \"value\": \"medium\"\n              },\n              {\n                \"name\": \"style\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"sx\",\n                \"type\": \"object\"\n              },\n              {\n                \"name\": \"type\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"value\",\n                \"type\": \"string\",\n                \"value\": \"Senior|\"\n              },\n              {\n                \"name\": \"variant\",\n                \"type\": \"string\",\n                \"value\": \"outlined\"\n              }\n            ],\n            \"path\": \"@/components/components\",\n            \"imports\": {\n              \"TextField\": \"TextField\"\n            }\n          }\n        },\n        \"component\": {\n          \"name\": \"TextField\",\n          \"options\": {\n            \"focused\": true,\n            \"label\": \"Search by title\",\n            \"size\": \"medium\",\n            \"value\": \"Senior|\",\n            \"variant\": \"outlined\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/custom-component-slot-property.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-d132f30a08a1-43a7-9f53-ffe14416d372\",\n        \"component\": {\n          \"name\": \"Navigation\",\n          \"options\": {\n            \"logo\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"@version\": 2,\n                \"id\": \"builder-12c13962d5b2-4496-b7e3-7f90a7a0ac15\",\n                \"component\": {\n                  \"name\": \"Logo\",\n                  \"options\": {}\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"alignItems\": \"flex-start\",\n                    \"alignSelf\": \"stretch\",\n                    \"display\": \"flex\",\n                    \"flexBasis\": \"0%\",\n                    \"flexDirection\": \"column\",\n                    \"justifyContent\": \"center\"\n                  }\n                }\n              }\n            ],\n            \"logoSingle\": {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"@version\": 2,\n              \"id\": \"builder-12c13962d5b2-4496-b7e3-7f90a7a0ac45\",\n              \"component\": {\n                \"name\": \"Logo\",\n                \"options\": {}\n              },\n              \"responsiveStyles\": {\n                \"large\": {\n                  \"alignItems\": \"flex-start\",\n                  \"alignSelf\": \"stretch\",\n                  \"display\": \"flex\",\n                  \"flexBasis\": \"0%\",\n                  \"flexDirection\": \"column\",\n                  \"justifyContent\": \"center\"\n                }\n              }\n            },\n            \"logoMultiple\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"@version\": 2,\n                \"id\": \"builder-12c13962d5b2-4496-b7e3-7f90a7a0ac45\",\n                \"component\": {\n                  \"name\": \"Logo\",\n                  \"options\": {}\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"alignItems\": \"flex-start\",\n                    \"alignSelf\": \"stretch\",\n                    \"display\": \"flex\",\n                    \"flexBasis\": \"0%\",\n                    \"flexDirection\": \"column\",\n                    \"justifyContent\": \"center\"\n                  }\n                }\n              },\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"@version\": 2,\n                \"id\": \"builder-12c13962d5b2-4496-b7e3-7f90a7a0ac45\",\n                \"component\": {\n                  \"name\": \"LogoTwo\",\n                  \"options\": {}\n                },\n                \"responsiveStyles\": {\n                  \"large\": {\n                    \"alignItems\": \"flex-start\",\n                    \"alignSelf\": \"stretch\",\n                    \"display\": \"flex\",\n                    \"flexBasis\": \"0%\",\n                    \"flexDirection\": \"column\",\n                    \"justifyContent\": \"center\"\n                  }\n                }\n              }\n            ]\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"position\": \"relative\",\n            \"width\": \"100%\"\n          },\n          \"medium\": {\n            \"maxWidth\": \"100%\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/custom-component-tags.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-d132f30a08a1-43a7-9f53-ffe14416d372\",\n        \"tagName\": \"mitosis-navigation\",\n        \"component\": {\n          \"name\": \"Navigation\",\n          \"options\": {}\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-d132f30a08a1-43a7-9f53-ffe14416d373\",\n        \"component\": {\n          \"name\": \"MyButton\",\n          \"options\": {}\n        },\n        \"meta\": {\n          \"selector\": \"button[mui]\"\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-d132f30a08a1-43a7-9f53-ffe14416d374\",\n        \"tagName\": \"custom-element\"\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/lazy-load-section.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1628178982725,\n  \"data\": {\n    \"description\": \"UNIT_TEST example for lazy loading of  QWIK content\",\n    \"inputs\": [],\n    \"title\": \"lazy loading\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-82a5c11482a644a8aa74dca341e3d6f1\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>EAGER LOAD</p>\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-2d764c54c1264f2192573fc4075ec273\",\n        \"component\": {\n          \"name\": \"Core:Section\",\n          \"options\": {\n            \"maxWidth\": 1234,\n            \"lazyLoad\": true\n          }\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"@version\": 2,\n            \"id\": \"builder-6f37b822156149cc9033e4cbee511d2f\",\n            \"component\": {\n              \"name\": \"Text\",\n              \"options\": {\n                \"text\": \"<p>LAZY LOAD</p>\"\n              }\n            },\n            \"responsiveStyles\": {\n              \"large\": {\n                \"display\": \"flex\",\n                \"flexDirection\": \"column\",\n                \"position\": \"relative\",\n                \"flexShrink\": \"0\",\n                \"boxSizing\": \"border-box\",\n                \"marginTop\": \"20px\",\n                \"lineHeight\": \"normal\",\n                \"height\": \"auto\",\n                \"textAlign\": \"center\"\n              }\n            }\n          }\n        ],\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"0px\",\n            \"paddingLeft\": \"20px\",\n            \"paddingRight\": \"20px\",\n            \"paddingTop\": \"50px\",\n            \"paddingBottom\": \"50px\",\n            \"width\": \"100vw\",\n            \"marginLeft\": \"calc(50% - 50vw)\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-br1x09d3x0c\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/lazy-loading\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": {\n        \"path\": \"\",\n        \"query\": {}\n      }\n    }\n  },\n  \"id\": \"4d74fb214ed8438d859184bc5f1d6285\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": {\n    \"hasLinks\": false,\n    \"kind\": \"page\",\n    \"needsHydration\": false\n  },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"lazy loading\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/lazy-loading\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1628231641833,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2Ff225eb5f9dea4a3d989e18c7821701ba\",\n  \"rev\": \"u00ck7hhne\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/localization.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-170e19cac58e4c28998d443a9dce80b4\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-170e19cac58e4c28998d443a9dce80b5\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"<p>hello default</p>\",\n              \"es-AR\": \"<p>hello argentina</p>\",\n              \"fr-CA\": \"<p>hello france</p><p><br></p>\"\n            }\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-170e19cac58e4c28998d443a9dce80b6\",\n        \"component\": {\n          \"name\": \"Image\",\n          \"options\": {\n            \"image\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"https://cdn.builder.io/api/v1/image/placeholder?default\",\n              \"es-AR\": \"https://cdn.builder.io/api/v1/image/placeholder?es-ar\",\n              \"fr-CA\": \"https://cdn.builder.io/api/v1/image/placeholder?fr-ca\"\n            }\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-170e19cac58e4c28998d443a9dce80b7\",\n        \"component\": {\n          \"name\": \"CustomComponent\",\n          \"options\": {\n            \"title\": {\n              \"@type\": \"@builder.io/core:LocalizedValue\",\n              \"Default\": \"<p>hello default</p>\",\n              \"es-AR\": \"<p>hello argentina</p>\",\n              \"fr-CA\": \"<p>hello france</p><p><br></p>\"\n            }\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"tagName\": \"a\",\n        \"id\": \"builder-c61a11925a4c4af4b512b54e1fcb7d89\",\n        \"properties\": {\n          \"href\": {\n            \"@type\": \"@builder.io/core:LocalizedValue\",\n            \"Default\": \"http://builder.io\"\n          }\n        },\n        \"linkUrl\": {\n          \"@type\": \"@builder.io/core:LocalizedValue\",\n          \"Default\": \"http://builder.io\"\n        },\n        \"meta\": {\n          \"transformed.linkUrl\": \"localized\"\n        },\n        \"component\": {\n          \"name\": \"Custom Code\",\n          \"options\": {\n            \"code\": \"<a>Link</a>\\n\",\n            \"scriptsClientOnly\": false\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"cursor\": \"pointer\",\n            \"pointerEvents\": \"auto\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/slots.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"layerName\": \"CardHeader\",\n        \"id\": \"builder-4403a617db2b-4ebd-bd00-111391462955\",\n        \"component\": {\n          \"name\": \"CardHeader\",\n          \"options\": {\n            \"avatar\": [\n              {\n                \"@type\": \"@builder.io/sdk:Element\",\n                \"@version\": 2,\n                \"id\": \"builder-1e2862a71471-4bfc-b75b-500c2cb37dc6\",\n                \"component\": { \"name\": \"Avatar\", \"options\": {} }\n              }\n            ],\n            \"title\": \"The Burgler\"\n          }\n        },\n        \"responsiveStyles\": { \"large\": { \"width\": \"100%\" }, \"medium\": { \"maxWidth\": \"100%\" } }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/slots2.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-2d5b94b1f32e-4e39-badc-3401ba2940bb\",\n        \"meta\": {\n          \"id\": \"2:2016\",\n          \"type\": \"INSTANCE\",\n          \"name\": \"<FormControlLabel> | Radio\",\n          \"componentProperties\": {\n            \"Label Placement\": {\n              \"value\": \"End\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            },\n            \"Disabled\": {\n              \"value\": \"False\",\n              \"type\": \"VARIANT\",\n              \"boundVariables\": {}\n            }\n          },\n          \"builderComponent\": {\n            \"name\": \"FormControlLabel\",\n            \"inputs\": [\n              {\n                \"name\": \"checked\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"control\",\n                \"type\": \"string\",\n                \"value\": {\n                  \"@type\": \"jsx\",\n                  \"name\": \"@Radio\",\n                  \"props\": {\n                    \"children\": []\n                  }\n                }\n              },\n              {\n                \"name\": \"disabled\",\n                \"type\": \"boolean\",\n                \"value\": false\n              },\n              {\n                \"name\": \"label\",\n                \"type\": \"string\",\n                \"value\": \"Label\"\n              },\n              {\n                \"name\": \"labelPlacement\",\n                \"type\": \"string\",\n                \"value\": \"end\"\n              },\n              {\n                \"name\": \"name\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"required\",\n                \"type\": \"boolean\"\n              },\n              {\n                \"name\": \"value\",\n                \"type\": \"string\"\n              },\n              {\n                \"name\": \"children\",\n                \"type\": \"string\",\n                \"value\": []\n              }\n            ],\n            \"path\": \"~/components/Button\",\n            \"imports\": {\n              \"FormControlLabel\": \"FormControlLabel\"\n            }\n          }\n        },\n        \"component\": {\n          \"name\": \"FormControlLabel\",\n          \"options\": {\n            \"control\": {\n              \"@type\": \"@builder.io/sdk:Element\",\n              \"@version\": 2,\n              \"id\": \"builder-b0d77fdf0855-49c6-a073-96276bf6a069\",\n              \"component\": {\n                \"name\": \"Radio\",\n                \"options\": {}\n              }\n            },\n            \"disabled\": false,\n            \"label\": \"Label\",\n            \"labelPlacement\": \"end\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"fontStyle\": \"italic\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/symbol-basic.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-abc123\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"5a009380a7274b1388f8f1e500d2e28a\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Basic Symbol\"\n              }\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/symbol-multiple.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-jkl012\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Primary Button\"\n              },\n              \"data\": {\n                \"text\": \"Get Started\",\n                \"variant\": \"primary\"\n              }\n            }\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-mno345\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Secondary Button\"\n              },\n              \"data\": {\n                \"text\": \"Learn More\",\n                \"variant\": \"secondary\"\n              }\n            }\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-pqr678\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Footer Section\"\n              },\n              \"data\": {\n                \"copyrightText\": \"© 2024 Company Name\",\n                \"showSocialLinks\": true\n              }\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/symbol-with-inputs.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-def456\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"7b8c9d0e1a2b3c4d5e6f7a8b9c0d1e2f\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Button Component\"\n              },\n              \"data\": {\n                \"buttonText\": \"Click me!\",\n                \"variant\": \"primary\",\n                \"isDisabled\": false,\n                \"count\": 42,\n                \"config\": {\n                  \"showIcon\": true,\n                  \"iconPosition\": \"left\"\n                }\n              }\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/symbol-with-named-entry.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-ghi789\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"entry\": \"1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d\",\n              \"model\": \"symbol\",\n              \"ownerId\": \"99d964b716f94737a50de4d76134d098\",\n              \"content\": {\n                \"name\": \"Header Navigation\"\n              },\n              \"data\": {\n                \"logoUrl\": \"/logo.png\",\n                \"showSearch\": true,\n                \"menuItems\": [\n                  {\n                    \"label\": \"Home\",\n                    \"url\": \"/\"\n                  },\n                  {\n                    \"label\": \"About\",\n                    \"url\": \"/about\"\n                  }\n                ]\n              }\n            }\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/tag-name.json",
    "content": "{\n  \"data\": {\n    \"cssCode\": \"\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"layerName\": \"ProgressBar\",\n        \"tagName\": \"progress-bar\",\n        \"id\": \"builder-2a6282a1911d26681c7d908be1be298a\",\n        \"meta\": {\n          \"fromJSX\": true,\n          \"id\": \"0:146\",\n          \"type\": \"INSTANCE\",\n          \"name\": \"ProgressBar\",\n          \"fromFigma\": true,\n          \"vcpImportId\": \"vcp-47e2b1c736734604b88cad9e2933df8d\",\n          \"vcpFigmaSelectionUUID\": \"e3d6a124-d9c8-42dc-b5ee-da3ea80407c0\"\n        },\n        \"component\": { \"name\": \"ProgressBar\", \"options\": { \"num\": 10 } },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"@version\": 2,\n            \"tagName\": \"counter\",\n            \"id\": \"builder-1b4ff7b62864405da3b4cee6a826a17e\",\n            \"meta\": { \"fromJSX\": true },\n            \"component\": { \"name\": \"CounterComponent\", \"options\": {} }\n          }\n        ]\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/builder/text-bindings.json",
    "content": "{\n  \"data\": {\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-170e19cac58e4c28998d443a9dce80b4\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Time left: {{state.timeLeft}} seconds</p>\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/context/component-with-context-multi-root.raw.tsx",
    "content": "import { setContext, useContext } from '@builder.io/mitosis';\nimport Context1 from '@dummy/1';\nimport Context2 from '@dummy/2';\n\nexport default function ComponentWithContext(props: { content: string }) {\n  const foo = useContext(Context1);\n\n  setContext(Context1, {\n    foo: 'bar',\n    content() {\n      return props.content;\n    },\n  });\n\n  return (\n    <Context2.Provider value={{ bar: 'baz' }}>\n      <>{foo.value}</>\n      <div>other</div>\n    </Context2.Provider>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/context/component-with-context.raw.tsx",
    "content": "import { setContext, useContext } from '@builder.io/mitosis';\nimport Context1 from '@dummy/1';\nimport Context2 from '@dummy/2';\n\nexport default function ComponentWithContext(props: { content: string }) {\n  const foo = useContext(Context1);\n\n  setContext(Context1, {\n    foo: 'bar',\n    content() {\n      return props.content;\n    },\n  });\n\n  return (\n    <Context2.Provider value={{ bar: 'baz' }}>\n      <>{foo.value}</>\n    </Context2.Provider>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/context/simple.context.lite.ts",
    "content": "import { createContext } from '@builder.io/mitosis';\n\nexport default createContext({\n  foo: 'bar',\n  get fooUpperCase() {\n    return this.foo.toUpperCase();\n  },\n  someMethod() {\n    return this.fooUpperCase.toLowercase();\n  },\n  content: null,\n  context: {} as any,\n  state: {},\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/data/default-props/default-props-outside-component.raw.tsx",
    "content": "import { Show, useDefaultProps } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick: () => void;\n}\n\nuseDefaultProps<ButtonProps>({\n  text: 'default text',\n  link: 'https://builder.io/',\n  openLinkInNewTab: false,\n  onClick: () => {},\n});\n\nexport default function Button(props: ButtonProps) {\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} onClick={(event) => props.onClick(event)} type=\"button\">\n          {props.text}\n        </button>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/default-props/default-props.raw.tsx",
    "content": "import { Show, useDefaultProps } from '@builder.io/mitosis';\n\nexport interface ButtonProps {\n  attributes?: any;\n  text?: string;\n  buttonText?: string; // no default value\n  link?: string;\n  openLinkInNewTab?: boolean;\n  onClick?: () => void;\n}\n\nexport default function Button(props: ButtonProps) {\n  useDefaultProps<ButtonProps>({\n    text: 'default text',\n    link: 'https://builder.io/',\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log('hi');\n    },\n  });\n\n  return (\n    <div>\n      <Show when={props.link}>\n        <a\n          {...props.attributes}\n          href={props.link}\n          target={props.openLinkInNewTab ? '_blank' : undefined}\n        >\n          {props.text}\n        </a>\n      </Show>\n      <Show when={!props.link}>\n        <button {...props.attributes} onClick={() => props.onClick()} type=\"button\">\n          {props.buttonText}\n        </button>\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/events/event-input-and-change.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function EventInputAndChange(props) {\n  const [name, setName] = useState('Steve');\n\n  return (\n    <div>\n      <input\n        css={{\n          color: 'red',\n        }}\n        value={name}\n        onInput={(event) => setName(event.target.value)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/for/advanced-for.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicForShowComponent() {\n  const state = useStore({\n    name: 'PatrickJS',\n    names: ['Steve', 'PatrickJS'],\n  });\n\n  return (\n    <main>\n      {state.names.map((person, i) => (\n        <div>\n          {i}: {person}\n        </div>\n      ))}\n      {state.names?.map((person) => (\n        <span>{person}</span>\n      ))}\n      {state.names?.map(() => (\n        <br />\n      ))}\n      {Array.from({ length: 10 }).map((_, ee) => (\n        <pre>{ee}</pre>\n      ))}\n      {Array.from({ length: 10 }, () => (\n        <p>{index}</p>\n      ))}\n      {state.names?.map((person, index) => {\n        console.log(person);\n        return (\n          <span>\n            {person} {index}\n          </span>\n        );\n      })}\n      {Array.from({ length: 10 }, (person, count) => {\n        console.log(person);\n        return (\n          <span>\n            {person} {count}\n          </span>\n        );\n      })}\n\n      {state.names?.map(function (person, i) {\n        console.log(person);\n        return (\n          <span>\n            {person} {i}\n          </span>\n        );\n      })}\n      {Array.from({ length: 10 }, function (person, index) {\n        console.log(person);\n        return (\n          <span>\n            {person} {index}\n          </span>\n        );\n      })}\n    </main>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/for/basic-for-fragment.raw.tsx",
    "content": "import { For, Fragment, useStore } from '@builder.io/mitosis';\n\nexport default function BasicForFragment() {\n  const state = useStore({\n    id: 'xyz',\n  });\n\n  return (\n    <div>\n      <For each={['a', 'b', 'c']}>\n        {(option) => (\n          <Fragment key={`key-${option}`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <For each={['a', 'b', 'c']}>\n        {(option) => (\n          <Fragment key={`${state.id}-${option}`}>\n            <div>{option}</div>\n          </Fragment>\n        )}\n      </For>\n      <select>\n        <For each={['d', 'e', 'f']}>\n          {(option) => (\n            <option key={`${state.id}-${option}`} value={option}>\n              {option}\n            </option>\n          )}\n        </For>\n      </select>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/for/basic-for-no-tag-reference.raw.tsx",
    "content": "import { For, useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicForNoTagRefComponent() {\n  const state = useStore({\n    name: 'VincentW',\n    TagName: 'div',\n    tag: 'span',\n    get TagNameGetter() {\n      return 'span';\n    },\n  });\n\n  return (\n    <state.TagNameGetter>\n      Hello <state.tag>{state.name}</state.tag>\n      <For each={props.actions}>\n        {(action) => (\n          <state.TagName>\n            <action.icon />\n            <span>{action.text}</span>\n          </state.TagName>\n        )}\n      </For>\n    </state.TagNameGetter>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/for/basic-for-show.raw.tsx",
    "content": "import { For, Show, useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicForShowComponent() {\n  const state = useStore({\n    name: 'PatrickJS',\n    names: ['Steve', 'PatrickJS'],\n  });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person) => (\n          <Show when={person === state.name}>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + ' and ' + person;\n              }}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </Show>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/for/basic-for.raw.tsx",
    "content": "import { For, onMount, useStore } from '@builder.io/mitosis';\n\nexport default function MyBasicForComponent() {\n  const state = useStore({\n    name: 'PatrickJS',\n    names: ['Steve', 'PatrickJS'],\n  });\n\n  onMount(() => {\n    console.log('onMount code');\n  });\n\n  return (\n    <div>\n      <For each={state.names}>\n        {(person) => (\n          <>\n            <input\n              value={state.name}\n              onChange={(event) => {\n                state.name = event.target.value + ' and ' + person;\n              }}\n            />\n            Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n          </>\n        )}\n      </For>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/function-props.raw.tsx",
    "content": "export default function MyBasicComponent(props: { id: string }) {\n  return (\n    <p\n      f={() => x}\n      f1={(x) => x}\n      f2={(x) => {}}\n      f3={function () {\n        return x;\n      }}\n      f4={function (x) {\n        return x;\n      }}\n      f5={function (x) {\n        return;\n      }}\n      f6={function () {\n        return;\n      }}\n      f7={(a, b, c) => a + b + c}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/import.raw.tsx",
    "content": "export default function MyImportComponent() {\n  return <div> Testing which imports get excluded! </div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/jsx-json.spec.ts",
    "content": "import * as babel from '@babel/core';\n\nexport const SPEC = {\n  type: 'ObjectExpression',\n  start: 10,\n  end: 4687,\n  loc: {\n    start: {\n      line: 1,\n      column: 10,\n      index: 10,\n    },\n    end: {\n      line: 165,\n      column: 3,\n      index: 4687,\n    },\n  },\n  properties: [\n    {\n      type: 'ObjectProperty',\n      start: 16,\n      end: 37,\n      loc: {\n        start: {\n          line: 2,\n          column: 4,\n          index: 16,\n        },\n        end: {\n          line: 2,\n          column: 25,\n          index: 37,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 16,\n        end: 34,\n        loc: {\n          start: {\n            line: 2,\n            column: 4,\n            index: 16,\n          },\n          end: {\n            line: 2,\n            column: 22,\n            index: 34,\n          },\n          identifierName: 'forceReRenderCount',\n        },\n        name: 'forceReRenderCount',\n      },\n      computed: false,\n      shorthand: false,\n      value: {\n        type: 'NumericLiteral',\n        start: 36,\n        end: 37,\n        loc: {\n          start: {\n            line: 2,\n            column: 24,\n            index: 36,\n          },\n          end: {\n            line: 2,\n            column: 25,\n            index: 37,\n          },\n        },\n        extra: {\n          rawValue: 0,\n          raw: '0',\n        },\n        value: 0,\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 43,\n      end: 364,\n      loc: {\n        start: {\n          line: 3,\n          column: 4,\n          index: 43,\n        },\n        end: {\n          line: 14,\n          column: 5,\n          index: 364,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 47,\n        end: 57,\n        loc: {\n          start: {\n            line: 3,\n            column: 8,\n            index: 47,\n          },\n          end: {\n            line: 3,\n            column: 18,\n            index: 57,\n          },\n          identifierName: 'useContent',\n        },\n        name: 'useContent',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 59,\n        end: 85,\n        loc: {\n          start: {\n            line: 3,\n            column: 20,\n            index: 59,\n          },\n          end: {\n            line: 3,\n            column: 46,\n            index: 85,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 61,\n          end: 85,\n          loc: {\n            start: {\n              line: 3,\n              column: 22,\n              index: 61,\n            },\n            end: {\n              line: 3,\n              column: 46,\n              index: 85,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 61,\n            end: 69,\n            loc: {\n              start: {\n                line: 3,\n                column: 22,\n                index: 61,\n              },\n              end: {\n                line: 3,\n                column: 30,\n                index: 69,\n              },\n              identifierName: 'Nullable',\n            },\n            name: 'Nullable',\n          },\n          typeParameters: {\n            type: 'TSTypeParameterInstantiation',\n            start: 69,\n            end: 85,\n            loc: {\n              start: {\n                line: 3,\n                column: 30,\n                index: 69,\n              },\n              end: {\n                line: 3,\n                column: 46,\n                index: 85,\n              },\n            },\n            params: [\n              {\n                type: 'TSTypeReference',\n                start: 70,\n                end: 84,\n                loc: {\n                  start: {\n                    line: 3,\n                    column: 31,\n                    index: 70,\n                  },\n                  end: {\n                    line: 3,\n                    column: 45,\n                    index: 84,\n                  },\n                },\n                typeName: {\n                  type: 'Identifier',\n                  start: 70,\n                  end: 84,\n                  loc: {\n                    start: {\n                      line: 3,\n                      column: 31,\n                      index: 70,\n                    },\n                    end: {\n                      line: 3,\n                      column: 45,\n                      index: 84,\n                    },\n                    identifierName: 'BuilderContent',\n                  },\n                  name: 'BuilderContent',\n                },\n              },\n            ],\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 86,\n        end: 364,\n        loc: {\n          start: {\n            line: 3,\n            column: 47,\n            index: 86,\n          },\n          end: {\n            line: 14,\n            column: 5,\n            index: 364,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 94,\n            end: 330,\n            loc: {\n              start: {\n                line: 4,\n                column: 6,\n                index: 94,\n              },\n              end: {\n                line: 12,\n                column: 8,\n                index: 330,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 100,\n                end: 329,\n                loc: {\n                  start: {\n                    line: 4,\n                    column: 12,\n                    index: 100,\n                  },\n                  end: {\n                    line: 12,\n                    column: 7,\n                    index: 329,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 100,\n                  end: 129,\n                  loc: {\n                    start: {\n                      line: 4,\n                      column: 12,\n                      index: 100,\n                    },\n                    end: {\n                      line: 4,\n                      column: 41,\n                      index: 129,\n                    },\n                    identifierName: 'mergedContent',\n                  },\n                  name: 'mergedContent',\n                  typeAnnotation: {\n                    type: 'TSTypeAnnotation',\n                    start: 113,\n                    end: 129,\n                    loc: {\n                      start: {\n                        line: 4,\n                        column: 25,\n                        index: 113,\n                      },\n                      end: {\n                        line: 4,\n                        column: 41,\n                        index: 129,\n                      },\n                    },\n                    typeAnnotation: {\n                      type: 'TSTypeReference',\n                      start: 115,\n                      end: 129,\n                      loc: {\n                        start: {\n                          line: 4,\n                          column: 27,\n                          index: 115,\n                        },\n                        end: {\n                          line: 4,\n                          column: 41,\n                          index: 129,\n                        },\n                      },\n                      typeName: {\n                        type: 'Identifier',\n                        start: 115,\n                        end: 129,\n                        loc: {\n                          start: {\n                            line: 4,\n                            column: 27,\n                            index: 115,\n                          },\n                          end: {\n                            line: 4,\n                            column: 41,\n                            index: 129,\n                          },\n                          identifierName: 'BuilderContent',\n                        },\n                        name: 'BuilderContent',\n                      },\n                    },\n                  },\n                },\n                init: {\n                  type: 'ObjectExpression',\n                  start: 132,\n                  end: 329,\n                  loc: {\n                    start: {\n                      line: 4,\n                      column: 44,\n                      index: 132,\n                    },\n                    end: {\n                      line: 12,\n                      column: 7,\n                      index: 329,\n                    },\n                  },\n                  properties: [\n                    {\n                      type: 'SpreadElement',\n                      start: 142,\n                      end: 158,\n                      loc: {\n                        start: {\n                          line: 5,\n                          column: 8,\n                          index: 142,\n                        },\n                        end: {\n                          line: 5,\n                          column: 24,\n                          index: 158,\n                        },\n                      },\n                      argument: {\n                        type: 'MemberExpression',\n                        start: 145,\n                        end: 158,\n                        loc: {\n                          start: {\n                            line: 5,\n                            column: 11,\n                            index: 145,\n                          },\n                          end: {\n                            line: 5,\n                            column: 24,\n                            index: 158,\n                          },\n                        },\n                        object: {\n                          type: 'Identifier',\n                          start: 145,\n                          end: 150,\n                          loc: {\n                            start: {\n                              line: 5,\n                              column: 11,\n                              index: 145,\n                            },\n                            end: {\n                              line: 5,\n                              column: 16,\n                              index: 150,\n                            },\n                            identifierName: 'props',\n                          },\n                          name: 'props',\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 151,\n                          end: 158,\n                          loc: {\n                            start: {\n                              line: 5,\n                              column: 17,\n                              index: 151,\n                            },\n                            end: {\n                              line: 5,\n                              column: 24,\n                              index: 158,\n                            },\n                            identifierName: 'content',\n                          },\n                          name: 'content',\n                        },\n                      },\n                    },\n                    {\n                      type: 'SpreadElement',\n                      start: 168,\n                      end: 192,\n                      loc: {\n                        start: {\n                          line: 6,\n                          column: 8,\n                          index: 168,\n                        },\n                        end: {\n                          line: 6,\n                          column: 32,\n                          index: 192,\n                        },\n                      },\n                      argument: {\n                        type: 'MemberExpression',\n                        start: 171,\n                        end: 192,\n                        loc: {\n                          start: {\n                            line: 6,\n                            column: 11,\n                            index: 171,\n                          },\n                          end: {\n                            line: 6,\n                            column: 32,\n                            index: 192,\n                          },\n                        },\n                        object: {\n                          type: 'Identifier',\n                          start: 171,\n                          end: 176,\n                          loc: {\n                            start: {\n                              line: 6,\n                              column: 11,\n                              index: 171,\n                            },\n                            end: {\n                              line: 6,\n                              column: 16,\n                              index: 176,\n                            },\n                            identifierName: 'state',\n                          },\n                          name: 'state',\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 177,\n                          end: 192,\n                          loc: {\n                            start: {\n                              line: 6,\n                              column: 17,\n                              index: 177,\n                            },\n                            end: {\n                              line: 6,\n                              column: 32,\n                              index: 192,\n                            },\n                            identifierName: 'overrideContent',\n                          },\n                          name: 'overrideContent',\n                        },\n                      },\n                    },\n                    {\n                      type: 'ObjectProperty',\n                      start: 202,\n                      end: 320,\n                      loc: {\n                        start: {\n                          line: 7,\n                          column: 8,\n                          index: 202,\n                        },\n                        end: {\n                          line: 11,\n                          column: 9,\n                          index: 320,\n                        },\n                      },\n                      method: false,\n                      key: {\n                        type: 'Identifier',\n                        start: 202,\n                        end: 206,\n                        loc: {\n                          start: {\n                            line: 7,\n                            column: 8,\n                            index: 202,\n                          },\n                          end: {\n                            line: 7,\n                            column: 12,\n                            index: 206,\n                          },\n                          identifierName: 'data',\n                        },\n                        name: 'data',\n                      },\n                      computed: false,\n                      shorthand: false,\n                      value: {\n                        type: 'ObjectExpression',\n                        start: 208,\n                        end: 320,\n                        loc: {\n                          start: {\n                            line: 7,\n                            column: 14,\n                            index: 208,\n                          },\n                          end: {\n                            line: 11,\n                            column: 9,\n                            index: 320,\n                          },\n                        },\n                        properties: [\n                          {\n                            type: 'SpreadElement',\n                            start: 220,\n                            end: 242,\n                            loc: {\n                              start: {\n                                line: 8,\n                                column: 10,\n                                index: 220,\n                              },\n                              end: {\n                                line: 8,\n                                column: 32,\n                                index: 242,\n                              },\n                            },\n                            argument: {\n                              type: 'OptionalMemberExpression',\n                              start: 223,\n                              end: 242,\n                              loc: {\n                                start: {\n                                  line: 8,\n                                  column: 13,\n                                  index: 223,\n                                },\n                                end: {\n                                  line: 8,\n                                  column: 32,\n                                  index: 242,\n                                },\n                              },\n                              object: {\n                                type: 'MemberExpression',\n                                start: 223,\n                                end: 236,\n                                loc: {\n                                  start: {\n                                    line: 8,\n                                    column: 13,\n                                    index: 223,\n                                  },\n                                  end: {\n                                    line: 8,\n                                    column: 26,\n                                    index: 236,\n                                  },\n                                },\n                                object: {\n                                  type: 'Identifier',\n                                  start: 223,\n                                  end: 228,\n                                  loc: {\n                                    start: {\n                                      line: 8,\n                                      column: 13,\n                                      index: 223,\n                                    },\n                                    end: {\n                                      line: 8,\n                                      column: 18,\n                                      index: 228,\n                                    },\n                                    identifierName: 'props',\n                                  },\n                                  name: 'props',\n                                },\n                                computed: false,\n                                property: {\n                                  type: 'Identifier',\n                                  start: 229,\n                                  end: 236,\n                                  loc: {\n                                    start: {\n                                      line: 8,\n                                      column: 19,\n                                      index: 229,\n                                    },\n                                    end: {\n                                      line: 8,\n                                      column: 26,\n                                      index: 236,\n                                    },\n                                    identifierName: 'content',\n                                  },\n                                  name: 'content',\n                                },\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 238,\n                                end: 242,\n                                loc: {\n                                  start: {\n                                    line: 8,\n                                    column: 28,\n                                    index: 238,\n                                  },\n                                  end: {\n                                    line: 8,\n                                    column: 32,\n                                    index: 242,\n                                  },\n                                  identifierName: 'data',\n                                },\n                                name: 'data',\n                              },\n                              optional: true,\n                            },\n                          },\n                          {\n                            type: 'SpreadElement',\n                            start: 254,\n                            end: 267,\n                            loc: {\n                              start: {\n                                line: 9,\n                                column: 10,\n                                index: 254,\n                              },\n                              end: {\n                                line: 9,\n                                column: 23,\n                                index: 267,\n                              },\n                            },\n                            argument: {\n                              type: 'MemberExpression',\n                              start: 257,\n                              end: 267,\n                              loc: {\n                                start: {\n                                  line: 9,\n                                  column: 13,\n                                  index: 257,\n                                },\n                                end: {\n                                  line: 9,\n                                  column: 23,\n                                  index: 267,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 257,\n                                end: 262,\n                                loc: {\n                                  start: {\n                                    line: 9,\n                                    column: 13,\n                                    index: 257,\n                                  },\n                                  end: {\n                                    line: 9,\n                                    column: 18,\n                                    index: 262,\n                                  },\n                                  identifierName: 'props',\n                                },\n                                name: 'props',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 263,\n                                end: 267,\n                                loc: {\n                                  start: {\n                                    line: 9,\n                                    column: 19,\n                                    index: 263,\n                                  },\n                                  end: {\n                                    line: 9,\n                                    column: 23,\n                                    index: 267,\n                                  },\n                                  identifierName: 'data',\n                                },\n                                name: 'data',\n                              },\n                            },\n                          },\n                          {\n                            type: 'SpreadElement',\n                            start: 279,\n                            end: 309,\n                            loc: {\n                              start: {\n                                line: 10,\n                                column: 10,\n                                index: 279,\n                              },\n                              end: {\n                                line: 10,\n                                column: 40,\n                                index: 309,\n                              },\n                            },\n                            argument: {\n                              type: 'OptionalMemberExpression',\n                              start: 282,\n                              end: 309,\n                              loc: {\n                                start: {\n                                  line: 10,\n                                  column: 13,\n                                  index: 282,\n                                },\n                                end: {\n                                  line: 10,\n                                  column: 40,\n                                  index: 309,\n                                },\n                              },\n                              object: {\n                                type: 'MemberExpression',\n                                start: 282,\n                                end: 303,\n                                loc: {\n                                  start: {\n                                    line: 10,\n                                    column: 13,\n                                    index: 282,\n                                  },\n                                  end: {\n                                    line: 10,\n                                    column: 34,\n                                    index: 303,\n                                  },\n                                },\n                                object: {\n                                  type: 'Identifier',\n                                  start: 282,\n                                  end: 287,\n                                  loc: {\n                                    start: {\n                                      line: 10,\n                                      column: 13,\n                                      index: 282,\n                                    },\n                                    end: {\n                                      line: 10,\n                                      column: 18,\n                                      index: 287,\n                                    },\n                                    identifierName: 'state',\n                                  },\n                                  name: 'state',\n                                },\n                                computed: false,\n                                property: {\n                                  type: 'Identifier',\n                                  start: 288,\n                                  end: 303,\n                                  loc: {\n                                    start: {\n                                      line: 10,\n                                      column: 19,\n                                      index: 288,\n                                    },\n                                    end: {\n                                      line: 10,\n                                      column: 34,\n                                      index: 303,\n                                    },\n                                    identifierName: 'overrideContent',\n                                  },\n                                  name: 'overrideContent',\n                                },\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 305,\n                                end: 309,\n                                loc: {\n                                  start: {\n                                    line: 10,\n                                    column: 36,\n                                    index: 305,\n                                  },\n                                  end: {\n                                    line: 10,\n                                    column: 40,\n                                    index: 309,\n                                  },\n                                  identifierName: 'data',\n                                },\n                                name: 'data',\n                              },\n                              optional: true,\n                            },\n                          },\n                        ],\n                        extra: {\n                          trailingComma: 309,\n                        },\n                      },\n                    },\n                  ],\n                  extra: {\n                    trailingComma: 320,\n                  },\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'ReturnStatement',\n            start: 337,\n            end: 358,\n            loc: {\n              start: {\n                line: 13,\n                column: 6,\n                index: 337,\n              },\n              end: {\n                line: 13,\n                column: 27,\n                index: 358,\n              },\n            },\n            argument: {\n              type: 'Identifier',\n              start: 344,\n              end: 357,\n              loc: {\n                start: {\n                  line: 13,\n                  column: 13,\n                  index: 344,\n                },\n                end: {\n                  line: 13,\n                  column: 26,\n                  index: 357,\n                },\n                identifierName: 'mergedContent',\n              },\n              name: 'mergedContent',\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectProperty',\n      start: 370,\n      end: 419,\n      loc: {\n        start: {\n          line: 15,\n          column: 4,\n          index: 370,\n        },\n        end: {\n          line: 15,\n          column: 53,\n          index: 419,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 370,\n        end: 385,\n        loc: {\n          start: {\n            line: 15,\n            column: 4,\n            index: 370,\n          },\n          end: {\n            line: 15,\n            column: 19,\n            index: 385,\n          },\n          identifierName: 'overrideContent',\n        },\n        name: 'overrideContent',\n      },\n      computed: false,\n      shorthand: false,\n      value: {\n        type: 'TSAsExpression',\n        start: 387,\n        end: 419,\n        loc: {\n          start: {\n            line: 15,\n            column: 21,\n            index: 387,\n          },\n          end: {\n            line: 15,\n            column: 53,\n            index: 419,\n          },\n        },\n        expression: {\n          type: 'NullLiteral',\n          start: 387,\n          end: 391,\n          loc: {\n            start: {\n              line: 15,\n              column: 21,\n              index: 387,\n            },\n            end: {\n              line: 15,\n              column: 25,\n              index: 391,\n            },\n          },\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 395,\n          end: 419,\n          loc: {\n            start: {\n              line: 15,\n              column: 29,\n              index: 395,\n            },\n            end: {\n              line: 15,\n              column: 53,\n              index: 419,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 395,\n            end: 403,\n            loc: {\n              start: {\n                line: 15,\n                column: 29,\n                index: 395,\n              },\n              end: {\n                line: 15,\n                column: 37,\n                index: 403,\n              },\n              identifierName: 'Nullable',\n            },\n            name: 'Nullable',\n          },\n          typeParameters: {\n            type: 'TSTypeParameterInstantiation',\n            start: 403,\n            end: 419,\n            loc: {\n              start: {\n                line: 15,\n                column: 37,\n                index: 403,\n              },\n              end: {\n                line: 15,\n                column: 53,\n                index: 419,\n              },\n            },\n            params: [\n              {\n                type: 'TSTypeReference',\n                start: 404,\n                end: 418,\n                loc: {\n                  start: {\n                    line: 15,\n                    column: 38,\n                    index: 404,\n                  },\n                  end: {\n                    line: 15,\n                    column: 52,\n                    index: 418,\n                  },\n                },\n                typeName: {\n                  type: 'Identifier',\n                  start: 404,\n                  end: 418,\n                  loc: {\n                    start: {\n                      line: 15,\n                      column: 38,\n                      index: 404,\n                    },\n                    end: {\n                      line: 15,\n                      column: 52,\n                      index: 418,\n                    },\n                    identifierName: 'BuilderContent',\n                  },\n                  name: 'BuilderContent',\n                },\n              },\n            ],\n          },\n        },\n      },\n    },\n    {\n      type: 'ObjectProperty',\n      start: 425,\n      end: 434,\n      loc: {\n        start: {\n          line: 16,\n          column: 4,\n          index: 425,\n        },\n        end: {\n          line: 16,\n          column: 13,\n          index: 434,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 425,\n        end: 431,\n        loc: {\n          start: {\n            line: 16,\n            column: 4,\n            index: 425,\n          },\n          end: {\n            line: 16,\n            column: 10,\n            index: 431,\n          },\n          identifierName: 'update',\n        },\n        name: 'update',\n      },\n      computed: false,\n      shorthand: false,\n      value: {\n        type: 'NumericLiteral',\n        start: 433,\n        end: 434,\n        loc: {\n          start: {\n            line: 16,\n            column: 12,\n            index: 433,\n          },\n          end: {\n            line: 16,\n            column: 13,\n            index: 434,\n          },\n        },\n        extra: {\n          rawValue: 0,\n          raw: '0',\n        },\n        value: 0,\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 440,\n      end: 513,\n      loc: {\n        start: {\n          line: 17,\n          column: 4,\n          index: 440,\n        },\n        end: {\n          line: 19,\n          column: 5,\n          index: 513,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 444,\n        end: 457,\n        loc: {\n          start: {\n            line: 17,\n            column: 8,\n            index: 444,\n          },\n          end: {\n            line: 17,\n            column: 21,\n            index: 457,\n          },\n          identifierName: 'canTrackToUse',\n        },\n        name: 'canTrackToUse',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 459,\n        end: 468,\n        loc: {\n          start: {\n            line: 17,\n            column: 23,\n            index: 459,\n          },\n          end: {\n            line: 17,\n            column: 32,\n            index: 468,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSBooleanKeyword',\n          start: 461,\n          end: 468,\n          loc: {\n            start: {\n              line: 17,\n              column: 25,\n              index: 461,\n            },\n            end: {\n              line: 17,\n              column: 32,\n              index: 468,\n            },\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 469,\n        end: 513,\n        loc: {\n          start: {\n            line: 17,\n            column: 33,\n            index: 469,\n          },\n          end: {\n            line: 19,\n            column: 5,\n            index: 513,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 477,\n            end: 507,\n            loc: {\n              start: {\n                line: 18,\n                column: 6,\n                index: 477,\n              },\n              end: {\n                line: 18,\n                column: 36,\n                index: 507,\n              },\n            },\n            argument: {\n              type: 'LogicalExpression',\n              start: 484,\n              end: 506,\n              loc: {\n                start: {\n                  line: 18,\n                  column: 13,\n                  index: 484,\n                },\n                end: {\n                  line: 18,\n                  column: 35,\n                  index: 506,\n                },\n              },\n              left: {\n                type: 'MemberExpression',\n                start: 484,\n                end: 498,\n                loc: {\n                  start: {\n                    line: 18,\n                    column: 13,\n                    index: 484,\n                  },\n                  end: {\n                    line: 18,\n                    column: 27,\n                    index: 498,\n                  },\n                },\n                object: {\n                  type: 'Identifier',\n                  start: 484,\n                  end: 489,\n                  loc: {\n                    start: {\n                      line: 18,\n                      column: 13,\n                      index: 484,\n                    },\n                    end: {\n                      line: 18,\n                      column: 18,\n                      index: 489,\n                    },\n                    identifierName: 'props',\n                  },\n                  name: 'props',\n                },\n                computed: false,\n                property: {\n                  type: 'Identifier',\n                  start: 490,\n                  end: 498,\n                  loc: {\n                    start: {\n                      line: 18,\n                      column: 19,\n                      index: 490,\n                    },\n                    end: {\n                      line: 18,\n                      column: 27,\n                      index: 498,\n                    },\n                    identifierName: 'canTrack',\n                  },\n                  name: 'canTrack',\n                },\n              },\n              operator: '||',\n              right: {\n                type: 'BooleanLiteral',\n                start: 502,\n                end: 506,\n                loc: {\n                  start: {\n                    line: 18,\n                    column: 31,\n                    index: 502,\n                  },\n                  end: {\n                    line: 18,\n                    column: 35,\n                    index: 506,\n                  },\n                },\n                value: true,\n              },\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectProperty',\n      start: 519,\n      end: 558,\n      loc: {\n        start: {\n          line: 20,\n          column: 4,\n          index: 519,\n        },\n        end: {\n          line: 20,\n          column: 43,\n          index: 558,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 519,\n        end: 532,\n        loc: {\n          start: {\n            line: 20,\n            column: 4,\n            index: 519,\n          },\n          end: {\n            line: 20,\n            column: 17,\n            index: 532,\n          },\n          identifierName: 'overrideState',\n        },\n        name: 'overrideState',\n      },\n      computed: false,\n      shorthand: false,\n      value: {\n        type: 'TSAsExpression',\n        start: 534,\n        end: 558,\n        loc: {\n          start: {\n            line: 20,\n            column: 19,\n            index: 534,\n          },\n          end: {\n            line: 20,\n            column: 43,\n            index: 558,\n          },\n        },\n        expression: {\n          type: 'ObjectExpression',\n          start: 534,\n          end: 536,\n          loc: {\n            start: {\n              line: 20,\n              column: 19,\n              index: 534,\n            },\n            end: {\n              line: 20,\n              column: 21,\n              index: 536,\n            },\n          },\n          properties: [],\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 540,\n          end: 558,\n          loc: {\n            start: {\n              line: 20,\n              column: 25,\n              index: 540,\n            },\n            end: {\n              line: 20,\n              column: 43,\n              index: 558,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 540,\n            end: 558,\n            loc: {\n              start: {\n                line: 20,\n                column: 25,\n                index: 540,\n              },\n              end: {\n                line: 20,\n                column: 43,\n                index: 558,\n              },\n              identifierName: 'BuilderRenderState',\n            },\n            name: 'BuilderRenderState',\n          },\n        },\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 564,\n      end: 728,\n      loc: {\n        start: {\n          line: 21,\n          column: 4,\n          index: 564,\n        },\n        end: {\n          line: 27,\n          column: 5,\n          index: 728,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 568,\n        end: 580,\n        loc: {\n          start: {\n            line: 21,\n            column: 8,\n            index: 568,\n          },\n          end: {\n            line: 21,\n            column: 20,\n            index: 580,\n          },\n          identifierName: 'contentState',\n        },\n        name: 'contentState',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 582,\n        end: 602,\n        loc: {\n          start: {\n            line: 21,\n            column: 22,\n            index: 582,\n          },\n          end: {\n            line: 21,\n            column: 42,\n            index: 602,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 584,\n          end: 602,\n          loc: {\n            start: {\n              line: 21,\n              column: 24,\n              index: 584,\n            },\n            end: {\n              line: 21,\n              column: 42,\n              index: 602,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 584,\n            end: 602,\n            loc: {\n              start: {\n                line: 21,\n                column: 24,\n                index: 584,\n              },\n              end: {\n                line: 21,\n                column: 42,\n                index: 602,\n              },\n              identifierName: 'BuilderRenderState',\n            },\n            name: 'BuilderRenderState',\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 603,\n        end: 728,\n        loc: {\n          start: {\n            line: 21,\n            column: 43,\n            index: 603,\n          },\n          end: {\n            line: 27,\n            column: 5,\n            index: 728,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 611,\n            end: 722,\n            loc: {\n              start: {\n                line: 22,\n                column: 6,\n                index: 611,\n              },\n              end: {\n                line: 26,\n                column: 8,\n                index: 722,\n              },\n            },\n            argument: {\n              type: 'ObjectExpression',\n              start: 618,\n              end: 721,\n              loc: {\n                start: {\n                  line: 22,\n                  column: 13,\n                  index: 618,\n                },\n                end: {\n                  line: 26,\n                  column: 7,\n                  index: 721,\n                },\n              },\n              properties: [\n                {\n                  type: 'SpreadElement',\n                  start: 628,\n                  end: 657,\n                  loc: {\n                    start: {\n                      line: 23,\n                      column: 8,\n                      index: 628,\n                    },\n                    end: {\n                      line: 23,\n                      column: 37,\n                      index: 657,\n                    },\n                  },\n                  argument: {\n                    type: 'OptionalMemberExpression',\n                    start: 631,\n                    end: 657,\n                    loc: {\n                      start: {\n                        line: 23,\n                        column: 11,\n                        index: 631,\n                      },\n                      end: {\n                        line: 23,\n                        column: 37,\n                        index: 657,\n                      },\n                    },\n                    object: {\n                      type: 'OptionalMemberExpression',\n                      start: 631,\n                      end: 650,\n                      loc: {\n                        start: {\n                          line: 23,\n                          column: 11,\n                          index: 631,\n                        },\n                        end: {\n                          line: 23,\n                          column: 30,\n                          index: 650,\n                        },\n                      },\n                      object: {\n                        type: 'MemberExpression',\n                        start: 631,\n                        end: 644,\n                        loc: {\n                          start: {\n                            line: 23,\n                            column: 11,\n                            index: 631,\n                          },\n                          end: {\n                            line: 23,\n                            column: 24,\n                            index: 644,\n                          },\n                        },\n                        object: {\n                          type: 'Identifier',\n                          start: 631,\n                          end: 636,\n                          loc: {\n                            start: {\n                              line: 23,\n                              column: 11,\n                              index: 631,\n                            },\n                            end: {\n                              line: 23,\n                              column: 16,\n                              index: 636,\n                            },\n                            identifierName: 'props',\n                          },\n                          name: 'props',\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 637,\n                          end: 644,\n                          loc: {\n                            start: {\n                              line: 23,\n                              column: 17,\n                              index: 637,\n                            },\n                            end: {\n                              line: 23,\n                              column: 24,\n                              index: 644,\n                            },\n                            identifierName: 'content',\n                          },\n                          name: 'content',\n                        },\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 646,\n                        end: 650,\n                        loc: {\n                          start: {\n                            line: 23,\n                            column: 26,\n                            index: 646,\n                          },\n                          end: {\n                            line: 23,\n                            column: 30,\n                            index: 650,\n                          },\n                          identifierName: 'data',\n                        },\n                        name: 'data',\n                      },\n                      optional: true,\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 652,\n                      end: 657,\n                      loc: {\n                        start: {\n                          line: 23,\n                          column: 32,\n                          index: 652,\n                        },\n                        end: {\n                          line: 23,\n                          column: 37,\n                          index: 657,\n                        },\n                        identifierName: 'state',\n                      },\n                      name: 'state',\n                    },\n                    optional: true,\n                  },\n                },\n                {\n                  type: 'SpreadElement',\n                  start: 667,\n                  end: 680,\n                  loc: {\n                    start: {\n                      line: 24,\n                      column: 8,\n                      index: 667,\n                    },\n                    end: {\n                      line: 24,\n                      column: 21,\n                      index: 680,\n                    },\n                  },\n                  argument: {\n                    type: 'MemberExpression',\n                    start: 670,\n                    end: 680,\n                    loc: {\n                      start: {\n                        line: 24,\n                        column: 11,\n                        index: 670,\n                      },\n                      end: {\n                        line: 24,\n                        column: 21,\n                        index: 680,\n                      },\n                    },\n                    object: {\n                      type: 'Identifier',\n                      start: 670,\n                      end: 675,\n                      loc: {\n                        start: {\n                          line: 24,\n                          column: 11,\n                          index: 670,\n                        },\n                        end: {\n                          line: 24,\n                          column: 16,\n                          index: 675,\n                        },\n                        identifierName: 'props',\n                      },\n                      name: 'props',\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 676,\n                      end: 680,\n                      loc: {\n                        start: {\n                          line: 24,\n                          column: 17,\n                          index: 676,\n                        },\n                        end: {\n                          line: 24,\n                          column: 21,\n                          index: 680,\n                        },\n                        identifierName: 'data',\n                      },\n                      name: 'data',\n                    },\n                  },\n                },\n                {\n                  type: 'SpreadElement',\n                  start: 690,\n                  end: 712,\n                  loc: {\n                    start: {\n                      line: 25,\n                      column: 8,\n                      index: 690,\n                    },\n                    end: {\n                      line: 25,\n                      column: 30,\n                      index: 712,\n                    },\n                  },\n                  argument: {\n                    type: 'MemberExpression',\n                    start: 693,\n                    end: 712,\n                    loc: {\n                      start: {\n                        line: 25,\n                        column: 11,\n                        index: 693,\n                      },\n                      end: {\n                        line: 25,\n                        column: 30,\n                        index: 712,\n                      },\n                    },\n                    object: {\n                      type: 'Identifier',\n                      start: 693,\n                      end: 698,\n                      loc: {\n                        start: {\n                          line: 25,\n                          column: 11,\n                          index: 693,\n                        },\n                        end: {\n                          line: 25,\n                          column: 16,\n                          index: 698,\n                        },\n                        identifierName: 'state',\n                      },\n                      name: 'state',\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 699,\n                      end: 712,\n                      loc: {\n                        start: {\n                          line: 25,\n                          column: 17,\n                          index: 699,\n                        },\n                        end: {\n                          line: 25,\n                          column: 30,\n                          index: 712,\n                        },\n                        identifierName: 'overrideState',\n                      },\n                      name: 'overrideState',\n                    },\n                  },\n                },\n              ],\n              extra: {\n                trailingComma: 712,\n              },\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 734,\n      end: 796,\n      loc: {\n        start: {\n          line: 28,\n          column: 4,\n          index: 734,\n        },\n        end: {\n          line: 30,\n          column: 5,\n          index: 796,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 738,\n        end: 752,\n        loc: {\n          start: {\n            line: 28,\n            column: 8,\n            index: 738,\n          },\n          end: {\n            line: 28,\n            column: 22,\n            index: 752,\n          },\n          identifierName: 'contextContext',\n        },\n        name: 'contextContext',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      body: {\n        type: 'BlockStatement',\n        start: 755,\n        end: 796,\n        loc: {\n          start: {\n            line: 28,\n            column: 25,\n            index: 755,\n          },\n          end: {\n            line: 30,\n            column: 5,\n            index: 796,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 763,\n            end: 790,\n            loc: {\n              start: {\n                line: 29,\n                column: 6,\n                index: 763,\n              },\n              end: {\n                line: 29,\n                column: 33,\n                index: 790,\n              },\n            },\n            argument: {\n              type: 'LogicalExpression',\n              start: 770,\n              end: 789,\n              loc: {\n                start: {\n                  line: 29,\n                  column: 13,\n                  index: 770,\n                },\n                end: {\n                  line: 29,\n                  column: 32,\n                  index: 789,\n                },\n              },\n              left: {\n                type: 'MemberExpression',\n                start: 770,\n                end: 783,\n                loc: {\n                  start: {\n                    line: 29,\n                    column: 13,\n                    index: 770,\n                  },\n                  end: {\n                    line: 29,\n                    column: 26,\n                    index: 783,\n                  },\n                },\n                object: {\n                  type: 'Identifier',\n                  start: 770,\n                  end: 775,\n                  loc: {\n                    start: {\n                      line: 29,\n                      column: 13,\n                      index: 770,\n                    },\n                    end: {\n                      line: 29,\n                      column: 18,\n                      index: 775,\n                    },\n                    identifierName: 'props',\n                  },\n                  name: 'props',\n                },\n                computed: false,\n                property: {\n                  type: 'Identifier',\n                  start: 776,\n                  end: 783,\n                  loc: {\n                    start: {\n                      line: 29,\n                      column: 19,\n                      index: 776,\n                    },\n                    end: {\n                      line: 29,\n                      column: 26,\n                      index: 783,\n                    },\n                    identifierName: 'context',\n                  },\n                  name: 'context',\n                },\n              },\n              operator: '||',\n              right: {\n                type: 'ObjectExpression',\n                start: 787,\n                end: 789,\n                loc: {\n                  start: {\n                    line: 29,\n                    column: 30,\n                    index: 787,\n                  },\n                  end: {\n                    line: 29,\n                    column: 32,\n                    index: 789,\n                  },\n                },\n                properties: [],\n              },\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 803,\n      end: 1700,\n      loc: {\n        start: {\n          line: 32,\n          column: 4,\n          index: 803,\n        },\n        end: {\n          line: 53,\n          column: 5,\n          index: 1700,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 807,\n        end: 830,\n        loc: {\n          start: {\n            line: 32,\n            column: 8,\n            index: 807,\n          },\n          end: {\n            line: 32,\n            column: 31,\n            index: 830,\n          },\n          identifierName: 'allRegisteredComponents',\n        },\n        name: 'allRegisteredComponents',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 832,\n        end: 854,\n        loc: {\n          start: {\n            line: 32,\n            column: 33,\n            index: 832,\n          },\n          end: {\n            line: 32,\n            column: 55,\n            index: 854,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 834,\n          end: 854,\n          loc: {\n            start: {\n              line: 32,\n              column: 35,\n              index: 834,\n            },\n            end: {\n              line: 32,\n              column: 55,\n              index: 854,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 834,\n            end: 854,\n            loc: {\n              start: {\n                line: 32,\n                column: 35,\n                index: 834,\n              },\n              end: {\n                line: 32,\n                column: 55,\n                index: 854,\n              },\n              identifierName: 'RegisteredComponents',\n            },\n            name: 'RegisteredComponents',\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 855,\n        end: 1700,\n        loc: {\n          start: {\n            line: 32,\n            column: 56,\n            index: 855,\n          },\n          end: {\n            line: 53,\n            column: 5,\n            index: 1700,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 863,\n            end: 1480,\n            loc: {\n              start: {\n                line: 33,\n                column: 6,\n                index: 863,\n              },\n              end: {\n                line: 42,\n                column: 8,\n                index: 1480,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 869,\n                end: 1479,\n                loc: {\n                  start: {\n                    line: 33,\n                    column: 12,\n                    index: 869,\n                  },\n                  end: {\n                    line: 42,\n                    column: 7,\n                    index: 1479,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 869,\n                  end: 887,\n                  loc: {\n                    start: {\n                      line: 33,\n                      column: 12,\n                      index: 869,\n                    },\n                    end: {\n                      line: 33,\n                      column: 30,\n                      index: 887,\n                    },\n                    identifierName: 'allComponentsArray',\n                  },\n                  name: 'allComponentsArray',\n                },\n                init: {\n                  type: 'ArrayExpression',\n                  start: 890,\n                  end: 1479,\n                  loc: {\n                    start: {\n                      line: 33,\n                      column: 33,\n                      index: 890,\n                    },\n                    end: {\n                      line: 42,\n                      column: 7,\n                      index: 1479,\n                    },\n                  },\n                  extra: {\n                    trailingComma: 1470,\n                  },\n                  elements: [\n                    {\n                      type: 'SpreadElement',\n                      start: 900,\n                      end: 935,\n                      loc: {\n                        start: {\n                          line: 34,\n                          column: 8,\n                          index: 900,\n                        },\n                        end: {\n                          line: 34,\n                          column: 43,\n                          index: 935,\n                        },\n                      },\n                      argument: {\n                        type: 'CallExpression',\n                        start: 903,\n                        end: 935,\n                        loc: {\n                          start: {\n                            line: 34,\n                            column: 11,\n                            index: 903,\n                          },\n                          end: {\n                            line: 34,\n                            column: 43,\n                            index: 935,\n                          },\n                        },\n                        callee: {\n                          type: 'Identifier',\n                          start: 903,\n                          end: 933,\n                          loc: {\n                            start: {\n                              line: 34,\n                              column: 11,\n                              index: 903,\n                            },\n                            end: {\n                              line: 34,\n                              column: 41,\n                              index: 933,\n                            },\n                            identifierName: 'getDefaultRegisteredComponents',\n                          },\n                          name: 'getDefaultRegisteredComponents',\n                        },\n                        arguments: [],\n                      },\n                    },\n                    {\n                      type: 'SpreadElement',\n                      start: 1414,\n                      end: 1427,\n                      loc: {\n                        start: {\n                          line: 40,\n                          column: 8,\n                          index: 1414,\n                        },\n                        end: {\n                          line: 40,\n                          column: 21,\n                          index: 1427,\n                        },\n                      },\n                      argument: {\n                        type: 'Identifier',\n                        start: 1417,\n                        end: 1427,\n                        loc: {\n                          start: {\n                            line: 40,\n                            column: 11,\n                            index: 1417,\n                          },\n                          end: {\n                            line: 40,\n                            column: 21,\n                            index: 1427,\n                          },\n                          identifierName: 'components',\n                        },\n                        name: 'components',\n                      },\n                      leadingComments: [\n                        {\n                          type: 'CommentLine',\n                          value:\n                            ' While this `components` object is deprecated, we must maintain support for it.',\n                          start: 945,\n                          end: 1026,\n                          loc: {\n                            start: {\n                              line: 35,\n                              column: 8,\n                              index: 945,\n                            },\n                            end: {\n                              line: 35,\n                              column: 89,\n                              index: 1026,\n                            },\n                          },\n                        },\n                        {\n                          type: 'CommentLine',\n                          value:\n                            ' Since users are able to override our default components, we need to make sure that we do not break such',\n                          start: 1035,\n                          end: 1141,\n                          loc: {\n                            start: {\n                              line: 36,\n                              column: 8,\n                              index: 1035,\n                            },\n                            end: {\n                              line: 36,\n                              column: 114,\n                              index: 1141,\n                            },\n                          },\n                        },\n                        {\n                          type: 'CommentLine',\n                          value: ' existing usage.',\n                          start: 1150,\n                          end: 1168,\n                          loc: {\n                            start: {\n                              line: 37,\n                              column: 8,\n                              index: 1150,\n                            },\n                            end: {\n                              line: 37,\n                              column: 26,\n                              index: 1168,\n                            },\n                          },\n                        },\n                        {\n                          type: 'CommentLine',\n                          value:\n                            ' This is why we spread `components` after the default Builder.io components, but before the `props.customComponents`,',\n                          start: 1177,\n                          end: 1296,\n                          loc: {\n                            start: {\n                              line: 38,\n                              column: 8,\n                              index: 1177,\n                            },\n                            end: {\n                              line: 38,\n                              column: 127,\n                              index: 1296,\n                            },\n                          },\n                        },\n                        {\n                          type: 'CommentLine',\n                          value:\n                            ' which is the new standard way of providing custom components, and must therefore take precedence.',\n                          start: 1305,\n                          end: 1405,\n                          loc: {\n                            start: {\n                              line: 39,\n                              column: 8,\n                              index: 1305,\n                            },\n                            end: {\n                              line: 39,\n                              column: 108,\n                              index: 1405,\n                            },\n                          },\n                        },\n                      ],\n                    },\n                    {\n                      type: 'SpreadElement',\n                      start: 1437,\n                      end: 1470,\n                      loc: {\n                        start: {\n                          line: 41,\n                          column: 8,\n                          index: 1437,\n                        },\n                        end: {\n                          line: 41,\n                          column: 41,\n                          index: 1470,\n                        },\n                      },\n                      argument: {\n                        type: 'LogicalExpression',\n                        start: 1441,\n                        end: 1469,\n                        loc: {\n                          start: {\n                            line: 41,\n                            column: 12,\n                            index: 1441,\n                          },\n                          end: {\n                            line: 41,\n                            column: 40,\n                            index: 1469,\n                          },\n                        },\n                        left: {\n                          type: 'MemberExpression',\n                          start: 1441,\n                          end: 1463,\n                          loc: {\n                            start: {\n                              line: 41,\n                              column: 12,\n                              index: 1441,\n                            },\n                            end: {\n                              line: 41,\n                              column: 34,\n                              index: 1463,\n                            },\n                          },\n                          object: {\n                            type: 'Identifier',\n                            start: 1441,\n                            end: 1446,\n                            loc: {\n                              start: {\n                                line: 41,\n                                column: 12,\n                                index: 1441,\n                              },\n                              end: {\n                                line: 41,\n                                column: 17,\n                                index: 1446,\n                              },\n                              identifierName: 'props',\n                            },\n                            name: 'props',\n                          },\n                          computed: false,\n                          property: {\n                            type: 'Identifier',\n                            start: 1447,\n                            end: 1463,\n                            loc: {\n                              start: {\n                                line: 41,\n                                column: 18,\n                                index: 1447,\n                              },\n                              end: {\n                                line: 41,\n                                column: 34,\n                                index: 1463,\n                              },\n                              identifierName: 'customComponents',\n                            },\n                            name: 'customComponents',\n                          },\n                        },\n                        operator: '||',\n                        right: {\n                          type: 'ArrayExpression',\n                          start: 1467,\n                          end: 1469,\n                          loc: {\n                            start: {\n                              line: 41,\n                              column: 38,\n                              index: 1467,\n                            },\n                            end: {\n                              line: 41,\n                              column: 40,\n                              index: 1469,\n                            },\n                          },\n                          elements: [],\n                        },\n                        extra: {\n                          parenthesized: true,\n                          parenStart: 1440,\n                        },\n                      },\n                    },\n                  ],\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'VariableDeclaration',\n            start: 1488,\n            end: 1665,\n            loc: {\n              start: {\n                line: 44,\n                column: 6,\n                index: 1488,\n              },\n              end: {\n                line: 50,\n                column: 8,\n                index: 1665,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 1494,\n                end: 1664,\n                loc: {\n                  start: {\n                    line: 44,\n                    column: 12,\n                    index: 1494,\n                  },\n                  end: {\n                    line: 50,\n                    column: 7,\n                    index: 1664,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 1494,\n                  end: 1507,\n                  loc: {\n                    start: {\n                      line: 44,\n                      column: 12,\n                      index: 1494,\n                    },\n                    end: {\n                      line: 44,\n                      column: 25,\n                      index: 1507,\n                    },\n                    identifierName: 'allComponents',\n                  },\n                  name: 'allComponents',\n                },\n                init: {\n                  type: 'CallExpression',\n                  start: 1510,\n                  end: 1664,\n                  loc: {\n                    start: {\n                      line: 44,\n                      column: 28,\n                      index: 1510,\n                    },\n                    end: {\n                      line: 50,\n                      column: 7,\n                      index: 1664,\n                    },\n                  },\n                  callee: {\n                    type: 'MemberExpression',\n                    start: 1510,\n                    end: 1535,\n                    loc: {\n                      start: {\n                        line: 44,\n                        column: 28,\n                        index: 1510,\n                      },\n                      end: {\n                        line: 44,\n                        column: 53,\n                        index: 1535,\n                      },\n                    },\n                    object: {\n                      type: 'Identifier',\n                      start: 1510,\n                      end: 1528,\n                      loc: {\n                        start: {\n                          line: 44,\n                          column: 28,\n                          index: 1510,\n                        },\n                        end: {\n                          line: 44,\n                          column: 46,\n                          index: 1528,\n                        },\n                        identifierName: 'allComponentsArray',\n                      },\n                      name: 'allComponentsArray',\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 1529,\n                      end: 1535,\n                      loc: {\n                        start: {\n                          line: 44,\n                          column: 47,\n                          index: 1529,\n                        },\n                        end: {\n                          line: 44,\n                          column: 53,\n                          index: 1535,\n                        },\n                        identifierName: 'reduce',\n                      },\n                      name: 'reduce',\n                    },\n                  },\n                  arguments: [\n                    {\n                      type: 'ArrowFunctionExpression',\n                      start: 1545,\n                      end: 1620,\n                      loc: {\n                        start: {\n                          line: 45,\n                          column: 8,\n                          index: 1545,\n                        },\n                        end: {\n                          line: 48,\n                          column: 10,\n                          index: 1620,\n                        },\n                      },\n                      id: null,\n                      generator: false,\n                      async: false,\n                      params: [\n                        {\n                          type: 'Identifier',\n                          start: 1546,\n                          end: 1549,\n                          loc: {\n                            start: {\n                              line: 45,\n                              column: 9,\n                              index: 1546,\n                            },\n                            end: {\n                              line: 45,\n                              column: 12,\n                              index: 1549,\n                            },\n                            identifierName: 'acc',\n                          },\n                          name: 'acc',\n                        },\n                        {\n                          type: 'Identifier',\n                          start: 1551,\n                          end: 1555,\n                          loc: {\n                            start: {\n                              line: 45,\n                              column: 14,\n                              index: 1551,\n                            },\n                            end: {\n                              line: 45,\n                              column: 18,\n                              index: 1555,\n                            },\n                            identifierName: 'curr',\n                          },\n                          name: 'curr',\n                        },\n                      ],\n                      body: {\n                        type: 'ObjectExpression',\n                        start: 1561,\n                        end: 1619,\n                        loc: {\n                          start: {\n                            line: 45,\n                            column: 24,\n                            index: 1561,\n                          },\n                          end: {\n                            line: 48,\n                            column: 9,\n                            index: 1619,\n                          },\n                        },\n                        properties: [\n                          {\n                            type: 'SpreadElement',\n                            start: 1573,\n                            end: 1579,\n                            loc: {\n                              start: {\n                                line: 46,\n                                column: 10,\n                                index: 1573,\n                              },\n                              end: {\n                                line: 46,\n                                column: 16,\n                                index: 1579,\n                              },\n                            },\n                            argument: {\n                              type: 'Identifier',\n                              start: 1576,\n                              end: 1579,\n                              loc: {\n                                start: {\n                                  line: 46,\n                                  column: 13,\n                                  index: 1576,\n                                },\n                                end: {\n                                  line: 46,\n                                  column: 16,\n                                  index: 1579,\n                                },\n                                identifierName: 'acc',\n                              },\n                              name: 'acc',\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 1591,\n                            end: 1608,\n                            loc: {\n                              start: {\n                                line: 47,\n                                column: 10,\n                                index: 1591,\n                              },\n                              end: {\n                                line: 47,\n                                column: 27,\n                                index: 1608,\n                              },\n                            },\n                            method: false,\n                            computed: true,\n                            key: {\n                              type: 'MemberExpression',\n                              start: 1592,\n                              end: 1601,\n                              loc: {\n                                start: {\n                                  line: 47,\n                                  column: 11,\n                                  index: 1592,\n                                },\n                                end: {\n                                  line: 47,\n                                  column: 20,\n                                  index: 1601,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 1592,\n                                end: 1596,\n                                loc: {\n                                  start: {\n                                    line: 47,\n                                    column: 11,\n                                    index: 1592,\n                                  },\n                                  end: {\n                                    line: 47,\n                                    column: 15,\n                                    index: 1596,\n                                  },\n                                  identifierName: 'curr',\n                                },\n                                name: 'curr',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 1597,\n                                end: 1601,\n                                loc: {\n                                  start: {\n                                    line: 47,\n                                    column: 16,\n                                    index: 1597,\n                                  },\n                                  end: {\n                                    line: 47,\n                                    column: 20,\n                                    index: 1601,\n                                  },\n                                  identifierName: 'name',\n                                },\n                                name: 'name',\n                              },\n                            },\n                            shorthand: false,\n                            value: {\n                              type: 'Identifier',\n                              start: 1604,\n                              end: 1608,\n                              loc: {\n                                start: {\n                                  line: 47,\n                                  column: 23,\n                                  index: 1604,\n                                },\n                                end: {\n                                  line: 47,\n                                  column: 27,\n                                  index: 1608,\n                                },\n                                identifierName: 'curr',\n                              },\n                              name: 'curr',\n                            },\n                          },\n                        ],\n                        extra: {\n                          trailingComma: 1608,\n                          parenthesized: true,\n                          parenStart: 1560,\n                        },\n                      },\n                    },\n                    {\n                      type: 'TSAsExpression',\n                      start: 1630,\n                      end: 1656,\n                      loc: {\n                        start: {\n                          line: 49,\n                          column: 8,\n                          index: 1630,\n                        },\n                        end: {\n                          line: 49,\n                          column: 34,\n                          index: 1656,\n                        },\n                      },\n                      expression: {\n                        type: 'ObjectExpression',\n                        start: 1630,\n                        end: 1632,\n                        loc: {\n                          start: {\n                            line: 49,\n                            column: 8,\n                            index: 1630,\n                          },\n                          end: {\n                            line: 49,\n                            column: 10,\n                            index: 1632,\n                          },\n                        },\n                        properties: [],\n                      },\n                      typeAnnotation: {\n                        type: 'TSTypeReference',\n                        start: 1636,\n                        end: 1656,\n                        loc: {\n                          start: {\n                            line: 49,\n                            column: 14,\n                            index: 1636,\n                          },\n                          end: {\n                            line: 49,\n                            column: 34,\n                            index: 1656,\n                          },\n                        },\n                        typeName: {\n                          type: 'Identifier',\n                          start: 1636,\n                          end: 1656,\n                          loc: {\n                            start: {\n                              line: 49,\n                              column: 14,\n                              index: 1636,\n                            },\n                            end: {\n                              line: 49,\n                              column: 34,\n                              index: 1656,\n                            },\n                            identifierName: 'RegisteredComponents',\n                          },\n                          name: 'RegisteredComponents',\n                        },\n                      },\n                    },\n                  ],\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'ReturnStatement',\n            start: 1673,\n            end: 1694,\n            loc: {\n              start: {\n                line: 52,\n                column: 6,\n                index: 1673,\n              },\n              end: {\n                line: 52,\n                column: 27,\n                index: 1694,\n              },\n            },\n            argument: {\n              type: 'Identifier',\n              start: 1680,\n              end: 1693,\n              loc: {\n                start: {\n                  line: 52,\n                  column: 13,\n                  index: 1680,\n                },\n                end: {\n                  line: 52,\n                  column: 26,\n                  index: 1693,\n                },\n                identifierName: 'allComponents',\n              },\n              name: 'allComponents',\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 1707,\n      end: 2397,\n      loc: {\n        start: {\n          line: 55,\n          column: 4,\n          index: 1707,\n        },\n        end: {\n          line: 80,\n          column: 5,\n          index: 2397,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 1707,\n        end: 1721,\n        loc: {\n          start: {\n            line: 55,\n            column: 4,\n            index: 1707,\n          },\n          end: {\n            line: 55,\n            column: 18,\n            index: 1721,\n          },\n          identifierName: 'processMessage',\n        },\n        name: 'processMessage',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [\n        {\n          type: 'Identifier',\n          start: 1722,\n          end: 1741,\n          loc: {\n            start: {\n              line: 55,\n              column: 19,\n              index: 1722,\n            },\n            end: {\n              line: 55,\n              column: 38,\n              index: 1741,\n            },\n            identifierName: 'event',\n          },\n          name: 'event',\n          typeAnnotation: {\n            type: 'TSTypeAnnotation',\n            start: 1727,\n            end: 1741,\n            loc: {\n              start: {\n                line: 55,\n                column: 24,\n                index: 1727,\n              },\n              end: {\n                line: 55,\n                column: 38,\n                index: 1741,\n              },\n            },\n            typeAnnotation: {\n              type: 'TSTypeReference',\n              start: 1729,\n              end: 1741,\n              loc: {\n                start: {\n                  line: 55,\n                  column: 26,\n                  index: 1729,\n                },\n                end: {\n                  line: 55,\n                  column: 38,\n                  index: 1741,\n                },\n              },\n              typeName: {\n                type: 'Identifier',\n                start: 1729,\n                end: 1741,\n                loc: {\n                  start: {\n                    line: 55,\n                    column: 26,\n                    index: 1729,\n                  },\n                  end: {\n                    line: 55,\n                    column: 38,\n                    index: 1741,\n                  },\n                  identifierName: 'MessageEvent',\n                },\n                name: 'MessageEvent',\n              },\n            },\n          },\n        },\n      ],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 1742,\n        end: 1748,\n        loc: {\n          start: {\n            line: 55,\n            column: 39,\n            index: 1742,\n          },\n          end: {\n            line: 55,\n            column: 45,\n            index: 1748,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSVoidKeyword',\n          start: 1744,\n          end: 1748,\n          loc: {\n            start: {\n              line: 55,\n              column: 41,\n              index: 1744,\n            },\n            end: {\n              line: 55,\n              column: 45,\n              index: 1748,\n            },\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 1749,\n        end: 2397,\n        loc: {\n          start: {\n            line: 55,\n            column: 46,\n            index: 1749,\n          },\n          end: {\n            line: 80,\n            column: 5,\n            index: 2397,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 1757,\n            end: 1780,\n            loc: {\n              start: {\n                line: 56,\n                column: 6,\n                index: 1757,\n              },\n              end: {\n                line: 56,\n                column: 29,\n                index: 1780,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 1763,\n                end: 1779,\n                loc: {\n                  start: {\n                    line: 56,\n                    column: 12,\n                    index: 1763,\n                  },\n                  end: {\n                    line: 56,\n                    column: 28,\n                    index: 1779,\n                  },\n                },\n                id: {\n                  type: 'ObjectPattern',\n                  start: 1763,\n                  end: 1771,\n                  loc: {\n                    start: {\n                      line: 56,\n                      column: 12,\n                      index: 1763,\n                    },\n                    end: {\n                      line: 56,\n                      column: 20,\n                      index: 1771,\n                    },\n                  },\n                  properties: [\n                    {\n                      type: 'ObjectProperty',\n                      start: 1765,\n                      end: 1769,\n                      loc: {\n                        start: {\n                          line: 56,\n                          column: 14,\n                          index: 1765,\n                        },\n                        end: {\n                          line: 56,\n                          column: 18,\n                          index: 1769,\n                        },\n                      },\n                      key: {\n                        type: 'Identifier',\n                        start: 1765,\n                        end: 1769,\n                        loc: {\n                          start: {\n                            line: 56,\n                            column: 14,\n                            index: 1765,\n                          },\n                          end: {\n                            line: 56,\n                            column: 18,\n                            index: 1769,\n                          },\n                          identifierName: 'data',\n                        },\n                        name: 'data',\n                      },\n                      computed: false,\n                      method: false,\n                      shorthand: true,\n                      value: {\n                        type: 'Identifier',\n                        start: 1765,\n                        end: 1769,\n                        loc: {\n                          start: {\n                            line: 56,\n                            column: 14,\n                            index: 1765,\n                          },\n                          end: {\n                            line: 56,\n                            column: 18,\n                            index: 1769,\n                          },\n                          identifierName: 'data',\n                        },\n                        name: 'data',\n                      },\n                      extra: {\n                        shorthand: true,\n                      },\n                    },\n                  ],\n                },\n                init: {\n                  type: 'Identifier',\n                  start: 1774,\n                  end: 1779,\n                  loc: {\n                    start: {\n                      line: 56,\n                      column: 23,\n                      index: 1774,\n                    },\n                    end: {\n                      line: 56,\n                      column: 28,\n                      index: 1779,\n                    },\n                    identifierName: 'event',\n                  },\n                  name: 'event',\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'IfStatement',\n            start: 1787,\n            end: 2391,\n            loc: {\n              start: {\n                line: 57,\n                column: 6,\n                index: 1787,\n              },\n              end: {\n                line: 79,\n                column: 7,\n                index: 2391,\n              },\n            },\n            test: {\n              type: 'Identifier',\n              start: 1791,\n              end: 1795,\n              loc: {\n                start: {\n                  line: 57,\n                  column: 10,\n                  index: 1791,\n                },\n                end: {\n                  line: 57,\n                  column: 14,\n                  index: 1795,\n                },\n                identifierName: 'data',\n              },\n              name: 'data',\n            },\n            consequent: {\n              type: 'BlockStatement',\n              start: 1797,\n              end: 2391,\n              loc: {\n                start: {\n                  line: 57,\n                  column: 16,\n                  index: 1797,\n                },\n                end: {\n                  line: 79,\n                  column: 7,\n                  index: 2391,\n                },\n              },\n              body: [\n                {\n                  type: 'SwitchStatement',\n                  start: 1807,\n                  end: 2383,\n                  loc: {\n                    start: {\n                      line: 58,\n                      column: 8,\n                      index: 1807,\n                    },\n                    end: {\n                      line: 78,\n                      column: 9,\n                      index: 2383,\n                    },\n                  },\n                  discriminant: {\n                    type: 'MemberExpression',\n                    start: 1815,\n                    end: 1824,\n                    loc: {\n                      start: {\n                        line: 58,\n                        column: 16,\n                        index: 1815,\n                      },\n                      end: {\n                        line: 58,\n                        column: 25,\n                        index: 1824,\n                      },\n                    },\n                    object: {\n                      type: 'Identifier',\n                      start: 1815,\n                      end: 1819,\n                      loc: {\n                        start: {\n                          line: 58,\n                          column: 16,\n                          index: 1815,\n                        },\n                        end: {\n                          line: 58,\n                          column: 20,\n                          index: 1819,\n                        },\n                        identifierName: 'data',\n                      },\n                      name: 'data',\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 1820,\n                      end: 1824,\n                      loc: {\n                        start: {\n                          line: 58,\n                          column: 21,\n                          index: 1820,\n                        },\n                        end: {\n                          line: 58,\n                          column: 25,\n                          index: 1824,\n                        },\n                        identifierName: 'type',\n                      },\n                      name: 'type',\n                    },\n                  },\n                  cases: [\n                    {\n                      type: 'SwitchCase',\n                      start: 1838,\n                      end: 2281,\n                      loc: {\n                        start: {\n                          line: 59,\n                          column: 10,\n                          index: 1838,\n                        },\n                        end: {\n                          line: 73,\n                          column: 11,\n                          index: 2281,\n                        },\n                      },\n                      consequent: [\n                        {\n                          type: 'BlockStatement',\n                          start: 1868,\n                          end: 2281,\n                          loc: {\n                            start: {\n                              line: 59,\n                              column: 40,\n                              index: 1868,\n                            },\n                            end: {\n                              line: 73,\n                              column: 11,\n                              index: 2281,\n                            },\n                          },\n                          body: [\n                            {\n                              type: 'VariableDeclaration',\n                              start: 1882,\n                              end: 1915,\n                              loc: {\n                                start: {\n                                  line: 60,\n                                  column: 12,\n                                  index: 1882,\n                                },\n                                end: {\n                                  line: 60,\n                                  column: 45,\n                                  index: 1915,\n                                },\n                              },\n                              declarations: [\n                                {\n                                  type: 'VariableDeclarator',\n                                  start: 1888,\n                                  end: 1914,\n                                  loc: {\n                                    start: {\n                                      line: 60,\n                                      column: 18,\n                                      index: 1888,\n                                    },\n                                    end: {\n                                      line: 60,\n                                      column: 44,\n                                      index: 1914,\n                                    },\n                                  },\n                                  id: {\n                                    type: 'Identifier',\n                                    start: 1888,\n                                    end: 1902,\n                                    loc: {\n                                      start: {\n                                        line: 60,\n                                        column: 18,\n                                        index: 1888,\n                                      },\n                                      end: {\n                                        line: 60,\n                                        column: 32,\n                                        index: 1902,\n                                      },\n                                      identifierName: 'messageContent',\n                                    },\n                                    name: 'messageContent',\n                                  },\n                                  init: {\n                                    type: 'MemberExpression',\n                                    start: 1905,\n                                    end: 1914,\n                                    loc: {\n                                      start: {\n                                        line: 60,\n                                        column: 35,\n                                        index: 1905,\n                                      },\n                                      end: {\n                                        line: 60,\n                                        column: 44,\n                                        index: 1914,\n                                      },\n                                    },\n                                    object: {\n                                      type: 'Identifier',\n                                      start: 1905,\n                                      end: 1909,\n                                      loc: {\n                                        start: {\n                                          line: 60,\n                                          column: 35,\n                                          index: 1905,\n                                        },\n                                        end: {\n                                          line: 60,\n                                          column: 39,\n                                          index: 1909,\n                                        },\n                                        identifierName: 'data',\n                                      },\n                                      name: 'data',\n                                    },\n                                    computed: false,\n                                    property: {\n                                      type: 'Identifier',\n                                      start: 1910,\n                                      end: 1914,\n                                      loc: {\n                                        start: {\n                                          line: 60,\n                                          column: 40,\n                                          index: 1910,\n                                        },\n                                        end: {\n                                          line: 60,\n                                          column: 44,\n                                          index: 1914,\n                                        },\n                                        identifierName: 'data',\n                                      },\n                                      name: 'data',\n                                    },\n                                  },\n                                },\n                              ],\n                              kind: 'const',\n                            },\n                            {\n                              type: 'VariableDeclaration',\n                              start: 1928,\n                              end: 2091,\n                              loc: {\n                                start: {\n                                  line: 61,\n                                  column: 12,\n                                  index: 1928,\n                                },\n                                end: {\n                                  line: 65,\n                                  column: 39,\n                                  index: 2091,\n                                },\n                              },\n                              declarations: [\n                                {\n                                  type: 'VariableDeclarator',\n                                  start: 1934,\n                                  end: 2090,\n                                  loc: {\n                                    start: {\n                                      line: 61,\n                                      column: 18,\n                                      index: 1934,\n                                    },\n                                    end: {\n                                      line: 65,\n                                      column: 38,\n                                      index: 2090,\n                                    },\n                                  },\n                                  id: {\n                                    type: 'Identifier',\n                                    start: 1934,\n                                    end: 1937,\n                                    loc: {\n                                      start: {\n                                        line: 61,\n                                        column: 18,\n                                        index: 1934,\n                                      },\n                                      end: {\n                                        line: 61,\n                                        column: 21,\n                                        index: 1937,\n                                      },\n                                      identifierName: 'key',\n                                    },\n                                    name: 'key',\n                                  },\n                                  init: {\n                                    type: 'LogicalExpression',\n                                    start: 1954,\n                                    end: 2090,\n                                    loc: {\n                                      start: {\n                                        line: 62,\n                                        column: 14,\n                                        index: 1954,\n                                      },\n                                      end: {\n                                        line: 65,\n                                        column: 38,\n                                        index: 2090,\n                                      },\n                                    },\n                                    left: {\n                                      type: 'LogicalExpression',\n                                      start: 1954,\n                                      end: 2048,\n                                      loc: {\n                                        start: {\n                                          line: 62,\n                                          column: 14,\n                                          index: 1954,\n                                        },\n                                        end: {\n                                          line: 64,\n                                          column: 34,\n                                          index: 2048,\n                                        },\n                                      },\n                                      left: {\n                                        type: 'LogicalExpression',\n                                        start: 1954,\n                                        end: 2010,\n                                        loc: {\n                                          start: {\n                                            line: 62,\n                                            column: 14,\n                                            index: 1954,\n                                          },\n                                          end: {\n                                            line: 63,\n                                            column: 34,\n                                            index: 2010,\n                                          },\n                                        },\n                                        left: {\n                                          type: 'MemberExpression',\n                                          start: 1954,\n                                          end: 1972,\n                                          loc: {\n                                            start: {\n                                              line: 62,\n                                              column: 14,\n                                              index: 1954,\n                                            },\n                                            end: {\n                                              line: 62,\n                                              column: 32,\n                                              index: 1972,\n                                            },\n                                          },\n                                          object: {\n                                            type: 'Identifier',\n                                            start: 1954,\n                                            end: 1968,\n                                            loc: {\n                                              start: {\n                                                line: 62,\n                                                column: 14,\n                                                index: 1954,\n                                              },\n                                              end: {\n                                                line: 62,\n                                                column: 28,\n                                                index: 1968,\n                                              },\n                                              identifierName: 'messageContent',\n                                            },\n                                            name: 'messageContent',\n                                          },\n                                          computed: false,\n                                          property: {\n                                            type: 'Identifier',\n                                            start: 1969,\n                                            end: 1972,\n                                            loc: {\n                                              start: {\n                                                line: 62,\n                                                column: 29,\n                                                index: 1969,\n                                              },\n                                              end: {\n                                                line: 62,\n                                                column: 32,\n                                                index: 1972,\n                                              },\n                                              identifierName: 'key',\n                                            },\n                                            name: 'key',\n                                          },\n                                        },\n                                        operator: '||',\n                                        right: {\n                                          type: 'MemberExpression',\n                                          start: 1990,\n                                          end: 2010,\n                                          loc: {\n                                            start: {\n                                              line: 63,\n                                              column: 14,\n                                              index: 1990,\n                                            },\n                                            end: {\n                                              line: 63,\n                                              column: 34,\n                                              index: 2010,\n                                            },\n                                          },\n                                          object: {\n                                            type: 'Identifier',\n                                            start: 1990,\n                                            end: 2004,\n                                            loc: {\n                                              start: {\n                                                line: 63,\n                                                column: 14,\n                                                index: 1990,\n                                              },\n                                              end: {\n                                                line: 63,\n                                                column: 28,\n                                                index: 2004,\n                                              },\n                                              identifierName: 'messageContent',\n                                            },\n                                            name: 'messageContent',\n                                          },\n                                          computed: false,\n                                          property: {\n                                            type: 'Identifier',\n                                            start: 2005,\n                                            end: 2010,\n                                            loc: {\n                                              start: {\n                                                line: 63,\n                                                column: 29,\n                                                index: 2005,\n                                              },\n                                              end: {\n                                                line: 63,\n                                                column: 34,\n                                                index: 2010,\n                                              },\n                                              identifierName: 'alias',\n                                            },\n                                            name: 'alias',\n                                          },\n                                        },\n                                      },\n                                      operator: '||',\n                                      right: {\n                                        type: 'MemberExpression',\n                                        start: 2028,\n                                        end: 2048,\n                                        loc: {\n                                          start: {\n                                            line: 64,\n                                            column: 14,\n                                            index: 2028,\n                                          },\n                                          end: {\n                                            line: 64,\n                                            column: 34,\n                                            index: 2048,\n                                          },\n                                        },\n                                        object: {\n                                          type: 'Identifier',\n                                          start: 2028,\n                                          end: 2042,\n                                          loc: {\n                                            start: {\n                                              line: 64,\n                                              column: 14,\n                                              index: 2028,\n                                            },\n                                            end: {\n                                              line: 64,\n                                              column: 28,\n                                              index: 2042,\n                                            },\n                                            identifierName: 'messageContent',\n                                          },\n                                          name: 'messageContent',\n                                        },\n                                        computed: false,\n                                        property: {\n                                          type: 'Identifier',\n                                          start: 2043,\n                                          end: 2048,\n                                          loc: {\n                                            start: {\n                                              line: 64,\n                                              column: 29,\n                                              index: 2043,\n                                            },\n                                            end: {\n                                              line: 64,\n                                              column: 34,\n                                              index: 2048,\n                                            },\n                                            identifierName: 'entry',\n                                          },\n                                          name: 'entry',\n                                        },\n                                      },\n                                    },\n                                    operator: '||',\n                                    right: {\n                                      type: 'MemberExpression',\n                                      start: 2066,\n                                      end: 2090,\n                                      loc: {\n                                        start: {\n                                          line: 65,\n                                          column: 14,\n                                          index: 2066,\n                                        },\n                                        end: {\n                                          line: 65,\n                                          column: 38,\n                                          index: 2090,\n                                        },\n                                      },\n                                      object: {\n                                        type: 'Identifier',\n                                        start: 2066,\n                                        end: 2080,\n                                        loc: {\n                                          start: {\n                                            line: 65,\n                                            column: 14,\n                                            index: 2066,\n                                          },\n                                          end: {\n                                            line: 65,\n                                            column: 28,\n                                            index: 2080,\n                                          },\n                                          identifierName: 'messageContent',\n                                        },\n                                        name: 'messageContent',\n                                      },\n                                      computed: false,\n                                      property: {\n                                        type: 'Identifier',\n                                        start: 2081,\n                                        end: 2090,\n                                        loc: {\n                                          start: {\n                                            line: 65,\n                                            column: 29,\n                                            index: 2081,\n                                          },\n                                          end: {\n                                            line: 65,\n                                            column: 38,\n                                            index: 2090,\n                                          },\n                                          identifierName: 'modelName',\n                                        },\n                                        name: 'modelName',\n                                      },\n                                    },\n                                  },\n                                },\n                              ],\n                              kind: 'const',\n                            },\n                            {\n                              type: 'VariableDeclaration',\n                              start: 2105,\n                              end: 2145,\n                              loc: {\n                                start: {\n                                  line: 67,\n                                  column: 12,\n                                  index: 2105,\n                                },\n                                end: {\n                                  line: 67,\n                                  column: 52,\n                                  index: 2145,\n                                },\n                              },\n                              declarations: [\n                                {\n                                  type: 'VariableDeclarator',\n                                  start: 2111,\n                                  end: 2144,\n                                  loc: {\n                                    start: {\n                                      line: 67,\n                                      column: 18,\n                                      index: 2111,\n                                    },\n                                    end: {\n                                      line: 67,\n                                      column: 51,\n                                      index: 2144,\n                                    },\n                                  },\n                                  id: {\n                                    type: 'Identifier',\n                                    start: 2111,\n                                    end: 2122,\n                                    loc: {\n                                      start: {\n                                        line: 67,\n                                        column: 18,\n                                        index: 2111,\n                                      },\n                                      end: {\n                                        line: 67,\n                                        column: 29,\n                                        index: 2122,\n                                      },\n                                      identifierName: 'contentData',\n                                    },\n                                    name: 'contentData',\n                                  },\n                                  init: {\n                                    type: 'MemberExpression',\n                                    start: 2125,\n                                    end: 2144,\n                                    loc: {\n                                      start: {\n                                        line: 67,\n                                        column: 32,\n                                        index: 2125,\n                                      },\n                                      end: {\n                                        line: 67,\n                                        column: 51,\n                                        index: 2144,\n                                      },\n                                    },\n                                    object: {\n                                      type: 'Identifier',\n                                      start: 2125,\n                                      end: 2139,\n                                      loc: {\n                                        start: {\n                                          line: 67,\n                                          column: 32,\n                                          index: 2125,\n                                        },\n                                        end: {\n                                          line: 67,\n                                          column: 46,\n                                          index: 2139,\n                                        },\n                                        identifierName: 'messageContent',\n                                      },\n                                      name: 'messageContent',\n                                    },\n                                    computed: false,\n                                    property: {\n                                      type: 'Identifier',\n                                      start: 2140,\n                                      end: 2144,\n                                      loc: {\n                                        start: {\n                                          line: 67,\n                                          column: 47,\n                                          index: 2140,\n                                        },\n                                        end: {\n                                          line: 67,\n                                          column: 51,\n                                          index: 2144,\n                                        },\n                                        identifierName: 'data',\n                                      },\n                                      name: 'data',\n                                    },\n                                  },\n                                },\n                              ],\n                              kind: 'const',\n                            },\n                            {\n                              type: 'IfStatement',\n                              start: 2159,\n                              end: 2250,\n                              loc: {\n                                start: {\n                                  line: 69,\n                                  column: 12,\n                                  index: 2159,\n                                },\n                                end: {\n                                  line: 71,\n                                  column: 13,\n                                  index: 2250,\n                                },\n                              },\n                              test: {\n                                type: 'BinaryExpression',\n                                start: 2163,\n                                end: 2182,\n                                loc: {\n                                  start: {\n                                    line: 69,\n                                    column: 16,\n                                    index: 2163,\n                                  },\n                                  end: {\n                                    line: 69,\n                                    column: 35,\n                                    index: 2182,\n                                  },\n                                },\n                                left: {\n                                  type: 'Identifier',\n                                  start: 2163,\n                                  end: 2166,\n                                  loc: {\n                                    start: {\n                                      line: 69,\n                                      column: 16,\n                                      index: 2163,\n                                    },\n                                    end: {\n                                      line: 69,\n                                      column: 19,\n                                      index: 2166,\n                                    },\n                                    identifierName: 'key',\n                                  },\n                                  name: 'key',\n                                },\n                                operator: '===',\n                                right: {\n                                  type: 'MemberExpression',\n                                  start: 2171,\n                                  end: 2182,\n                                  loc: {\n                                    start: {\n                                      line: 69,\n                                      column: 24,\n                                      index: 2171,\n                                    },\n                                    end: {\n                                      line: 69,\n                                      column: 35,\n                                      index: 2182,\n                                    },\n                                  },\n                                  object: {\n                                    type: 'Identifier',\n                                    start: 2171,\n                                    end: 2176,\n                                    loc: {\n                                      start: {\n                                        line: 69,\n                                        column: 24,\n                                        index: 2171,\n                                      },\n                                      end: {\n                                        line: 69,\n                                        column: 29,\n                                        index: 2176,\n                                      },\n                                      identifierName: 'props',\n                                    },\n                                    name: 'props',\n                                  },\n                                  computed: false,\n                                  property: {\n                                    type: 'Identifier',\n                                    start: 2177,\n                                    end: 2182,\n                                    loc: {\n                                      start: {\n                                        line: 69,\n                                        column: 30,\n                                        index: 2177,\n                                      },\n                                      end: {\n                                        line: 69,\n                                        column: 35,\n                                        index: 2182,\n                                      },\n                                      identifierName: 'model',\n                                    },\n                                    name: 'model',\n                                  },\n                                },\n                              },\n                              consequent: {\n                                type: 'BlockStatement',\n                                start: 2184,\n                                end: 2250,\n                                loc: {\n                                  start: {\n                                    line: 69,\n                                    column: 37,\n                                    index: 2184,\n                                  },\n                                  end: {\n                                    line: 71,\n                                    column: 13,\n                                    index: 2250,\n                                  },\n                                },\n                                body: [\n                                  {\n                                    type: 'ExpressionStatement',\n                                    start: 2200,\n                                    end: 2236,\n                                    loc: {\n                                      start: {\n                                        line: 70,\n                                        column: 14,\n                                        index: 2200,\n                                      },\n                                      end: {\n                                        line: 70,\n                                        column: 50,\n                                        index: 2236,\n                                      },\n                                    },\n                                    expression: {\n                                      type: 'AssignmentExpression',\n                                      start: 2200,\n                                      end: 2235,\n                                      loc: {\n                                        start: {\n                                          line: 70,\n                                          column: 14,\n                                          index: 2200,\n                                        },\n                                        end: {\n                                          line: 70,\n                                          column: 49,\n                                          index: 2235,\n                                        },\n                                      },\n                                      operator: '=',\n                                      left: {\n                                        type: 'MemberExpression',\n                                        start: 2200,\n                                        end: 2221,\n                                        loc: {\n                                          start: {\n                                            line: 70,\n                                            column: 14,\n                                            index: 2200,\n                                          },\n                                          end: {\n                                            line: 70,\n                                            column: 35,\n                                            index: 2221,\n                                          },\n                                        },\n                                        object: {\n                                          type: 'Identifier',\n                                          start: 2200,\n                                          end: 2205,\n                                          loc: {\n                                            start: {\n                                              line: 70,\n                                              column: 14,\n                                              index: 2200,\n                                            },\n                                            end: {\n                                              line: 70,\n                                              column: 19,\n                                              index: 2205,\n                                            },\n                                            identifierName: 'state',\n                                          },\n                                          name: 'state',\n                                        },\n                                        computed: false,\n                                        property: {\n                                          type: 'Identifier',\n                                          start: 2206,\n                                          end: 2221,\n                                          loc: {\n                                            start: {\n                                              line: 70,\n                                              column: 20,\n                                              index: 2206,\n                                            },\n                                            end: {\n                                              line: 70,\n                                              column: 35,\n                                              index: 2221,\n                                            },\n                                            identifierName: 'overrideContent',\n                                          },\n                                          name: 'overrideContent',\n                                        },\n                                      },\n                                      right: {\n                                        type: 'Identifier',\n                                        start: 2224,\n                                        end: 2235,\n                                        loc: {\n                                          start: {\n                                            line: 70,\n                                            column: 38,\n                                            index: 2224,\n                                          },\n                                          end: {\n                                            line: 70,\n                                            column: 49,\n                                            index: 2235,\n                                          },\n                                          identifierName: 'contentData',\n                                        },\n                                        name: 'contentData',\n                                      },\n                                    },\n                                  },\n                                ],\n                                directives: [],\n                              },\n                              alternate: null,\n                            },\n                            {\n                              type: 'BreakStatement',\n                              start: 2263,\n                              end: 2269,\n                              loc: {\n                                start: {\n                                  line: 72,\n                                  column: 12,\n                                  index: 2263,\n                                },\n                                end: {\n                                  line: 72,\n                                  column: 18,\n                                  index: 2269,\n                                },\n                              },\n                              label: null,\n                            },\n                          ],\n                          directives: [],\n                        },\n                      ],\n                      test: {\n                        type: 'StringLiteral',\n                        start: 1843,\n                        end: 1866,\n                        loc: {\n                          start: {\n                            line: 59,\n                            column: 15,\n                            index: 1843,\n                          },\n                          end: {\n                            line: 59,\n                            column: 38,\n                            index: 1866,\n                          },\n                        },\n                        extra: {\n                          rawValue: 'builder.contentUpdate',\n                          raw: \"'builder.contentUpdate'\",\n                        },\n                        value: 'builder.contentUpdate',\n                      },\n                    },\n                    {\n                      type: 'SwitchCase',\n                      start: 2292,\n                      end: 2373,\n                      loc: {\n                        start: {\n                          line: 74,\n                          column: 10,\n                          index: 2292,\n                        },\n                        end: {\n                          line: 77,\n                          column: 11,\n                          index: 2373,\n                        },\n                      },\n                      consequent: [\n                        {\n                          type: 'BlockStatement',\n                          start: 2321,\n                          end: 2373,\n                          loc: {\n                            start: {\n                              line: 74,\n                              column: 39,\n                              index: 2321,\n                            },\n                            end: {\n                              line: 77,\n                              column: 11,\n                              index: 2373,\n                            },\n                          },\n                          body: [\n                            {\n                              type: 'BreakStatement',\n                              start: 2355,\n                              end: 2361,\n                              loc: {\n                                start: {\n                                  line: 76,\n                                  column: 12,\n                                  index: 2355,\n                                },\n                                end: {\n                                  line: 76,\n                                  column: 18,\n                                  index: 2361,\n                                },\n                              },\n                              label: null,\n                              leadingComments: [\n                                {\n                                  type: 'CommentLine',\n                                  value: ' TODO',\n                                  start: 2335,\n                                  end: 2342,\n                                  loc: {\n                                    start: {\n                                      line: 75,\n                                      column: 12,\n                                      index: 2335,\n                                    },\n                                    end: {\n                                      line: 75,\n                                      column: 19,\n                                      index: 2342,\n                                    },\n                                  },\n                                },\n                              ],\n                            },\n                          ],\n                          directives: [],\n                        },\n                      ],\n                      test: {\n                        type: 'StringLiteral',\n                        start: 2297,\n                        end: 2319,\n                        loc: {\n                          start: {\n                            line: 74,\n                            column: 15,\n                            index: 2297,\n                          },\n                          end: {\n                            line: 74,\n                            column: 37,\n                            index: 2319,\n                          },\n                        },\n                        extra: {\n                          rawValue: 'builder.patchUpdates',\n                          raw: \"'builder.patchUpdates'\",\n                        },\n                        value: 'builder.patchUpdates',\n                      },\n                    },\n                  ],\n                },\n              ],\n              directives: [],\n            },\n            alternate: null,\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 2404,\n      end: 2695,\n      loc: {\n        start: {\n          line: 82,\n          column: 4,\n          index: 2404,\n        },\n        end: {\n          line: 92,\n          column: 5,\n          index: 2695,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 2404,\n        end: 2418,\n        loc: {\n          start: {\n            line: 82,\n            column: 4,\n            index: 2404,\n          },\n          end: {\n            line: 82,\n            column: 18,\n            index: 2418,\n          },\n          identifierName: 'evaluateJsCode',\n        },\n        name: 'evaluateJsCode',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      body: {\n        type: 'BlockStatement',\n        start: 2421,\n        end: 2695,\n        loc: {\n          start: {\n            line: 82,\n            column: 21,\n            index: 2421,\n          },\n          end: {\n            line: 92,\n            column: 5,\n            index: 2695,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 2482,\n            end: 2528,\n            loc: {\n              start: {\n                line: 84,\n                column: 6,\n                index: 2482,\n              },\n              end: {\n                line: 84,\n                column: 52,\n                index: 2528,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 2488,\n                end: 2527,\n                loc: {\n                  start: {\n                    line: 84,\n                    column: 12,\n                    index: 2488,\n                  },\n                  end: {\n                    line: 84,\n                    column: 51,\n                    index: 2527,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 2488,\n                  end: 2494,\n                  loc: {\n                    start: {\n                      line: 84,\n                      column: 12,\n                      index: 2488,\n                    },\n                    end: {\n                      line: 84,\n                      column: 18,\n                      index: 2494,\n                    },\n                    identifierName: 'jsCode',\n                  },\n                  name: 'jsCode',\n                },\n                init: {\n                  type: 'OptionalMemberExpression',\n                  start: 2497,\n                  end: 2527,\n                  loc: {\n                    start: {\n                      line: 84,\n                      column: 21,\n                      index: 2497,\n                    },\n                    end: {\n                      line: 84,\n                      column: 51,\n                      index: 2527,\n                    },\n                  },\n                  object: {\n                    type: 'OptionalMemberExpression',\n                    start: 2497,\n                    end: 2519,\n                    loc: {\n                      start: {\n                        line: 84,\n                        column: 21,\n                        index: 2497,\n                      },\n                      end: {\n                        line: 84,\n                        column: 43,\n                        index: 2519,\n                      },\n                    },\n                    object: {\n                      type: 'MemberExpression',\n                      start: 2497,\n                      end: 2513,\n                      loc: {\n                        start: {\n                          line: 84,\n                          column: 21,\n                          index: 2497,\n                        },\n                        end: {\n                          line: 84,\n                          column: 37,\n                          index: 2513,\n                        },\n                      },\n                      object: {\n                        type: 'Identifier',\n                        start: 2497,\n                        end: 2502,\n                        loc: {\n                          start: {\n                            line: 84,\n                            column: 21,\n                            index: 2497,\n                          },\n                          end: {\n                            line: 84,\n                            column: 26,\n                            index: 2502,\n                          },\n                          identifierName: 'state',\n                        },\n                        name: 'state',\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 2503,\n                        end: 2513,\n                        loc: {\n                          start: {\n                            line: 84,\n                            column: 27,\n                            index: 2503,\n                          },\n                          end: {\n                            line: 84,\n                            column: 37,\n                            index: 2513,\n                          },\n                          identifierName: 'useContent',\n                        },\n                        name: 'useContent',\n                      },\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 2515,\n                      end: 2519,\n                      loc: {\n                        start: {\n                          line: 84,\n                          column: 39,\n                          index: 2515,\n                        },\n                        end: {\n                          line: 84,\n                          column: 43,\n                          index: 2519,\n                        },\n                        identifierName: 'data',\n                      },\n                      name: 'data',\n                    },\n                    optional: true,\n                  },\n                  computed: false,\n                  property: {\n                    type: 'Identifier',\n                    start: 2521,\n                    end: 2527,\n                    loc: {\n                      start: {\n                        line: 84,\n                        column: 45,\n                        index: 2521,\n                      },\n                      end: {\n                        line: 84,\n                        column: 51,\n                        index: 2527,\n                      },\n                      identifierName: 'jsCode',\n                    },\n                    name: 'jsCode',\n                  },\n                  optional: true,\n                },\n              },\n            ],\n            kind: 'const',\n            leadingComments: [\n              {\n                type: 'CommentLine',\n                value: ' run any dynamic JS code attached to content',\n                start: 2429,\n                end: 2475,\n                loc: {\n                  start: {\n                    line: 83,\n                    column: 6,\n                    index: 2429,\n                  },\n                  end: {\n                    line: 83,\n                    column: 52,\n                    index: 2475,\n                  },\n                },\n              },\n            ],\n          },\n          {\n            type: 'IfStatement',\n            start: 2535,\n            end: 2689,\n            loc: {\n              start: {\n                line: 85,\n                column: 6,\n                index: 2535,\n              },\n              end: {\n                line: 91,\n                column: 7,\n                index: 2689,\n              },\n            },\n            test: {\n              type: 'Identifier',\n              start: 2539,\n              end: 2545,\n              loc: {\n                start: {\n                  line: 85,\n                  column: 10,\n                  index: 2539,\n                },\n                end: {\n                  line: 85,\n                  column: 16,\n                  index: 2545,\n                },\n                identifierName: 'jsCode',\n              },\n              name: 'jsCode',\n            },\n            consequent: {\n              type: 'BlockStatement',\n              start: 2547,\n              end: 2689,\n              loc: {\n                start: {\n                  line: 85,\n                  column: 18,\n                  index: 2547,\n                },\n                end: {\n                  line: 91,\n                  column: 7,\n                  index: 2689,\n                },\n              },\n              body: [\n                {\n                  type: 'ExpressionStatement',\n                  start: 2557,\n                  end: 2681,\n                  loc: {\n                    start: {\n                      line: 86,\n                      column: 8,\n                      index: 2557,\n                    },\n                    end: {\n                      line: 90,\n                      column: 11,\n                      index: 2681,\n                    },\n                  },\n                  expression: {\n                    type: 'CallExpression',\n                    start: 2557,\n                    end: 2680,\n                    loc: {\n                      start: {\n                        line: 86,\n                        column: 8,\n                        index: 2557,\n                      },\n                      end: {\n                        line: 90,\n                        column: 10,\n                        index: 2680,\n                      },\n                    },\n                    callee: {\n                      type: 'Identifier',\n                      start: 2557,\n                      end: 2565,\n                      loc: {\n                        start: {\n                          line: 86,\n                          column: 8,\n                          index: 2557,\n                        },\n                        end: {\n                          line: 86,\n                          column: 16,\n                          index: 2565,\n                        },\n                        identifierName: 'evaluate',\n                      },\n                      name: 'evaluate',\n                    },\n                    arguments: [\n                      {\n                        type: 'ObjectExpression',\n                        start: 2566,\n                        end: 2679,\n                        loc: {\n                          start: {\n                            line: 86,\n                            column: 17,\n                            index: 2566,\n                          },\n                          end: {\n                            line: 90,\n                            column: 9,\n                            index: 2679,\n                          },\n                        },\n                        properties: [\n                          {\n                            type: 'ObjectProperty',\n                            start: 2578,\n                            end: 2590,\n                            loc: {\n                              start: {\n                                line: 87,\n                                column: 10,\n                                index: 2578,\n                              },\n                              end: {\n                                line: 87,\n                                column: 22,\n                                index: 2590,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2578,\n                              end: 2582,\n                              loc: {\n                                start: {\n                                  line: 87,\n                                  column: 10,\n                                  index: 2578,\n                                },\n                                end: {\n                                  line: 87,\n                                  column: 14,\n                                  index: 2582,\n                                },\n                                identifierName: 'code',\n                              },\n                              name: 'code',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'Identifier',\n                              start: 2584,\n                              end: 2590,\n                              loc: {\n                                start: {\n                                  line: 87,\n                                  column: 16,\n                                  index: 2584,\n                                },\n                                end: {\n                                  line: 87,\n                                  column: 22,\n                                  index: 2590,\n                                },\n                                identifierName: 'jsCode',\n                              },\n                              name: 'jsCode',\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 2602,\n                            end: 2631,\n                            loc: {\n                              start: {\n                                line: 88,\n                                column: 10,\n                                index: 2602,\n                              },\n                              end: {\n                                line: 88,\n                                column: 39,\n                                index: 2631,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2602,\n                              end: 2609,\n                              loc: {\n                                start: {\n                                  line: 88,\n                                  column: 10,\n                                  index: 2602,\n                                },\n                                end: {\n                                  line: 88,\n                                  column: 17,\n                                  index: 2609,\n                                },\n                                identifierName: 'context',\n                              },\n                              name: 'context',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 2611,\n                              end: 2631,\n                              loc: {\n                                start: {\n                                  line: 88,\n                                  column: 19,\n                                  index: 2611,\n                                },\n                                end: {\n                                  line: 88,\n                                  column: 39,\n                                  index: 2631,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 2611,\n                                end: 2616,\n                                loc: {\n                                  start: {\n                                    line: 88,\n                                    column: 19,\n                                    index: 2611,\n                                  },\n                                  end: {\n                                    line: 88,\n                                    column: 24,\n                                    index: 2616,\n                                  },\n                                  identifierName: 'state',\n                                },\n                                name: 'state',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 2617,\n                                end: 2631,\n                                loc: {\n                                  start: {\n                                    line: 88,\n                                    column: 25,\n                                    index: 2617,\n                                  },\n                                  end: {\n                                    line: 88,\n                                    column: 39,\n                                    index: 2631,\n                                  },\n                                  identifierName: 'contextContext',\n                                },\n                                name: 'contextContext',\n                              },\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 2643,\n                            end: 2668,\n                            loc: {\n                              start: {\n                                line: 89,\n                                column: 10,\n                                index: 2643,\n                              },\n                              end: {\n                                line: 89,\n                                column: 35,\n                                index: 2668,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2643,\n                              end: 2648,\n                              loc: {\n                                start: {\n                                  line: 89,\n                                  column: 10,\n                                  index: 2643,\n                                },\n                                end: {\n                                  line: 89,\n                                  column: 15,\n                                  index: 2648,\n                                },\n                                identifierName: 'state',\n                              },\n                              name: 'state',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 2650,\n                              end: 2668,\n                              loc: {\n                                start: {\n                                  line: 89,\n                                  column: 17,\n                                  index: 2650,\n                                },\n                                end: {\n                                  line: 89,\n                                  column: 35,\n                                  index: 2668,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 2650,\n                                end: 2655,\n                                loc: {\n                                  start: {\n                                    line: 89,\n                                    column: 17,\n                                    index: 2650,\n                                  },\n                                  end: {\n                                    line: 89,\n                                    column: 22,\n                                    index: 2655,\n                                  },\n                                  identifierName: 'state',\n                                },\n                                name: 'state',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 2656,\n                                end: 2668,\n                                loc: {\n                                  start: {\n                                    line: 89,\n                                    column: 23,\n                                    index: 2656,\n                                  },\n                                  end: {\n                                    line: 89,\n                                    column: 35,\n                                    index: 2668,\n                                  },\n                                  identifierName: 'contentState',\n                                },\n                                name: 'contentState',\n                              },\n                            },\n                          },\n                        ],\n                        extra: {\n                          trailingComma: 2668,\n                        },\n                      },\n                    ],\n                  },\n                },\n              ],\n              directives: [],\n            },\n            alternate: null,\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 2701,\n      end: 2761,\n      loc: {\n        start: {\n          line: 93,\n          column: 4,\n          index: 2701,\n        },\n        end: {\n          line: 95,\n          column: 5,\n          index: 2761,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 2705,\n        end: 2717,\n        loc: {\n          start: {\n            line: 93,\n            column: 8,\n            index: 2705,\n          },\n          end: {\n            line: 93,\n            column: 20,\n            index: 2717,\n          },\n          identifierName: 'httpReqsData',\n        },\n        name: 'httpReqsData',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 2719,\n        end: 2736,\n        loc: {\n          start: {\n            line: 93,\n            column: 22,\n            index: 2719,\n          },\n          end: {\n            line: 93,\n            column: 39,\n            index: 2736,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSTypeReference',\n          start: 2721,\n          end: 2736,\n          loc: {\n            start: {\n              line: 93,\n              column: 24,\n              index: 2721,\n            },\n            end: {\n              line: 93,\n              column: 39,\n              index: 2736,\n            },\n          },\n          typeName: {\n            type: 'Identifier',\n            start: 2721,\n            end: 2731,\n            loc: {\n              start: {\n                line: 93,\n                column: 24,\n                index: 2721,\n              },\n              end: {\n                line: 93,\n                column: 34,\n                index: 2731,\n              },\n              identifierName: 'Dictionary',\n            },\n            name: 'Dictionary',\n          },\n          typeParameters: {\n            type: 'TSTypeParameterInstantiation',\n            start: 2731,\n            end: 2736,\n            loc: {\n              start: {\n                line: 93,\n                column: 34,\n                index: 2731,\n              },\n              end: {\n                line: 93,\n                column: 39,\n                index: 2736,\n              },\n            },\n            params: [\n              {\n                type: 'TSAnyKeyword',\n                start: 2732,\n                end: 2735,\n                loc: {\n                  start: {\n                    line: 93,\n                    column: 35,\n                    index: 2732,\n                  },\n                  end: {\n                    line: 93,\n                    column: 38,\n                    index: 2735,\n                  },\n                },\n              },\n            ],\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 2737,\n        end: 2761,\n        loc: {\n          start: {\n            line: 93,\n            column: 40,\n            index: 2737,\n          },\n          end: {\n            line: 95,\n            column: 5,\n            index: 2761,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 2745,\n            end: 2755,\n            loc: {\n              start: {\n                line: 94,\n                column: 6,\n                index: 2745,\n              },\n              end: {\n                line: 94,\n                column: 16,\n                index: 2755,\n              },\n            },\n            argument: {\n              type: 'ObjectExpression',\n              start: 2752,\n              end: 2754,\n              loc: {\n                start: {\n                  line: 94,\n                  column: 13,\n                  index: 2752,\n                },\n                end: {\n                  line: 94,\n                  column: 15,\n                  index: 2754,\n                },\n              },\n              properties: [],\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 2768,\n      end: 3008,\n      loc: {\n        start: {\n          line: 97,\n          column: 4,\n          index: 2768,\n        },\n        end: {\n          line: 106,\n          column: 5,\n          index: 3008,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 2768,\n        end: 2775,\n        loc: {\n          start: {\n            line: 97,\n            column: 4,\n            index: 2768,\n          },\n          end: {\n            line: 97,\n            column: 11,\n            index: 2775,\n          },\n          identifierName: 'onClick',\n        },\n        name: 'onClick',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [\n        {\n          type: 'Identifier',\n          start: 2776,\n          end: 2794,\n          loc: {\n            start: {\n              line: 97,\n              column: 12,\n              index: 2776,\n            },\n            end: {\n              line: 97,\n              column: 30,\n              index: 2794,\n            },\n            identifierName: '_event',\n          },\n          name: '_event',\n          typeAnnotation: {\n            type: 'TSTypeAnnotation',\n            start: 2782,\n            end: 2794,\n            loc: {\n              start: {\n                line: 97,\n                column: 18,\n                index: 2782,\n              },\n              end: {\n                line: 97,\n                column: 30,\n                index: 2794,\n              },\n            },\n            typeAnnotation: {\n              type: 'TSTypeReference',\n              start: 2784,\n              end: 2794,\n              loc: {\n                start: {\n                  line: 97,\n                  column: 20,\n                  index: 2784,\n                },\n                end: {\n                  line: 97,\n                  column: 30,\n                  index: 2794,\n                },\n              },\n              typeName: {\n                type: 'Identifier',\n                start: 2784,\n                end: 2794,\n                loc: {\n                  start: {\n                    line: 97,\n                    column: 20,\n                    index: 2784,\n                  },\n                  end: {\n                    line: 97,\n                    column: 30,\n                    index: 2794,\n                  },\n                  identifierName: 'MouseEvent',\n                },\n                name: 'MouseEvent',\n              },\n            },\n          },\n        },\n      ],\n      body: {\n        type: 'BlockStatement',\n        start: 2796,\n        end: 3008,\n        loc: {\n          start: {\n            line: 97,\n            column: 32,\n            index: 2796,\n          },\n          end: {\n            line: 106,\n            column: 5,\n            index: 3008,\n          },\n        },\n        body: [\n          {\n            type: 'IfStatement',\n            start: 2804,\n            end: 3002,\n            loc: {\n              start: {\n                line: 98,\n                column: 6,\n                index: 2804,\n              },\n              end: {\n                line: 105,\n                column: 7,\n                index: 3002,\n              },\n            },\n            test: {\n              type: 'MemberExpression',\n              start: 2808,\n              end: 2824,\n              loc: {\n                start: {\n                  line: 98,\n                  column: 10,\n                  index: 2808,\n                },\n                end: {\n                  line: 98,\n                  column: 26,\n                  index: 2824,\n                },\n              },\n              object: {\n                type: 'Identifier',\n                start: 2808,\n                end: 2813,\n                loc: {\n                  start: {\n                    line: 98,\n                    column: 10,\n                    index: 2808,\n                  },\n                  end: {\n                    line: 98,\n                    column: 15,\n                    index: 2813,\n                  },\n                  identifierName: 'state',\n                },\n                name: 'state',\n              },\n              computed: false,\n              property: {\n                type: 'Identifier',\n                start: 2814,\n                end: 2824,\n                loc: {\n                  start: {\n                    line: 98,\n                    column: 16,\n                    index: 2814,\n                  },\n                  end: {\n                    line: 98,\n                    column: 26,\n                    index: 2824,\n                  },\n                  identifierName: 'useContent',\n                },\n                name: 'useContent',\n              },\n            },\n            consequent: {\n              type: 'BlockStatement',\n              start: 2826,\n              end: 3002,\n              loc: {\n                start: {\n                  line: 98,\n                  column: 28,\n                  index: 2826,\n                },\n                end: {\n                  line: 105,\n                  column: 7,\n                  index: 3002,\n                },\n              },\n              body: [\n                {\n                  type: 'ExpressionStatement',\n                  start: 2836,\n                  end: 2994,\n                  loc: {\n                    start: {\n                      line: 99,\n                      column: 8,\n                      index: 2836,\n                    },\n                    end: {\n                      line: 104,\n                      column: 11,\n                      index: 2994,\n                    },\n                  },\n                  expression: {\n                    type: 'CallExpression',\n                    start: 2836,\n                    end: 2993,\n                    loc: {\n                      start: {\n                        line: 99,\n                        column: 8,\n                        index: 2836,\n                      },\n                      end: {\n                        line: 104,\n                        column: 10,\n                        index: 2993,\n                      },\n                    },\n                    callee: {\n                      type: 'Identifier',\n                      start: 2836,\n                      end: 2841,\n                      loc: {\n                        start: {\n                          line: 99,\n                          column: 8,\n                          index: 2836,\n                        },\n                        end: {\n                          line: 99,\n                          column: 13,\n                          index: 2841,\n                        },\n                        identifierName: 'track',\n                      },\n                      name: 'track',\n                    },\n                    arguments: [\n                      {\n                        type: 'ObjectExpression',\n                        start: 2842,\n                        end: 2992,\n                        loc: {\n                          start: {\n                            line: 99,\n                            column: 14,\n                            index: 2842,\n                          },\n                          end: {\n                            line: 104,\n                            column: 9,\n                            index: 2992,\n                          },\n                        },\n                        properties: [\n                          {\n                            type: 'ObjectProperty',\n                            start: 2854,\n                            end: 2867,\n                            loc: {\n                              start: {\n                                line: 100,\n                                column: 10,\n                                index: 2854,\n                              },\n                              end: {\n                                line: 100,\n                                column: 23,\n                                index: 2867,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2854,\n                              end: 2858,\n                              loc: {\n                                start: {\n                                  line: 100,\n                                  column: 10,\n                                  index: 2854,\n                                },\n                                end: {\n                                  line: 100,\n                                  column: 14,\n                                  index: 2858,\n                                },\n                                identifierName: 'type',\n                              },\n                              name: 'type',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'StringLiteral',\n                              start: 2860,\n                              end: 2867,\n                              loc: {\n                                start: {\n                                  line: 100,\n                                  column: 16,\n                                  index: 2860,\n                                },\n                                end: {\n                                  line: 100,\n                                  column: 23,\n                                  index: 2867,\n                                },\n                              },\n                              extra: {\n                                rawValue: 'click',\n                                raw: \"'click'\",\n                              },\n                              value: 'click',\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 2879,\n                            end: 2908,\n                            loc: {\n                              start: {\n                                line: 101,\n                                column: 10,\n                                index: 2879,\n                              },\n                              end: {\n                                line: 101,\n                                column: 39,\n                                index: 2908,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2879,\n                              end: 2887,\n                              loc: {\n                                start: {\n                                  line: 101,\n                                  column: 10,\n                                  index: 2879,\n                                },\n                                end: {\n                                  line: 101,\n                                  column: 18,\n                                  index: 2887,\n                                },\n                                identifierName: 'canTrack',\n                              },\n                              name: 'canTrack',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 2889,\n                              end: 2908,\n                              loc: {\n                                start: {\n                                  line: 101,\n                                  column: 20,\n                                  index: 2889,\n                                },\n                                end: {\n                                  line: 101,\n                                  column: 39,\n                                  index: 2908,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 2889,\n                                end: 2894,\n                                loc: {\n                                  start: {\n                                    line: 101,\n                                    column: 20,\n                                    index: 2889,\n                                  },\n                                  end: {\n                                    line: 101,\n                                    column: 25,\n                                    index: 2894,\n                                  },\n                                  identifierName: 'state',\n                                },\n                                name: 'state',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 2895,\n                                end: 2908,\n                                loc: {\n                                  start: {\n                                    line: 101,\n                                    column: 26,\n                                    index: 2895,\n                                  },\n                                  end: {\n                                    line: 101,\n                                    column: 39,\n                                    index: 2908,\n                                  },\n                                  identifierName: 'canTrackToUse',\n                                },\n                                name: 'canTrackToUse',\n                              },\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 2920,\n                            end: 2950,\n                            loc: {\n                              start: {\n                                line: 102,\n                                column: 10,\n                                index: 2920,\n                              },\n                              end: {\n                                line: 102,\n                                column: 40,\n                                index: 2950,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2920,\n                              end: 2929,\n                              loc: {\n                                start: {\n                                  line: 102,\n                                  column: 10,\n                                  index: 2920,\n                                },\n                                end: {\n                                  line: 102,\n                                  column: 19,\n                                  index: 2929,\n                                },\n                                identifierName: 'contentId',\n                              },\n                              name: 'contentId',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 2931,\n                              end: 2950,\n                              loc: {\n                                start: {\n                                  line: 102,\n                                  column: 21,\n                                  index: 2931,\n                                },\n                                end: {\n                                  line: 102,\n                                  column: 40,\n                                  index: 2950,\n                                },\n                              },\n                              object: {\n                                type: 'MemberExpression',\n                                start: 2931,\n                                end: 2947,\n                                loc: {\n                                  start: {\n                                    line: 102,\n                                    column: 21,\n                                    index: 2931,\n                                  },\n                                  end: {\n                                    line: 102,\n                                    column: 37,\n                                    index: 2947,\n                                  },\n                                },\n                                object: {\n                                  type: 'Identifier',\n                                  start: 2931,\n                                  end: 2936,\n                                  loc: {\n                                    start: {\n                                      line: 102,\n                                      column: 21,\n                                      index: 2931,\n                                    },\n                                    end: {\n                                      line: 102,\n                                      column: 26,\n                                      index: 2936,\n                                    },\n                                    identifierName: 'state',\n                                  },\n                                  name: 'state',\n                                },\n                                computed: false,\n                                property: {\n                                  type: 'Identifier',\n                                  start: 2937,\n                                  end: 2947,\n                                  loc: {\n                                    start: {\n                                      line: 102,\n                                      column: 27,\n                                      index: 2937,\n                                    },\n                                    end: {\n                                      line: 102,\n                                      column: 37,\n                                      index: 2947,\n                                    },\n                                    identifierName: 'useContent',\n                                  },\n                                  name: 'useContent',\n                                },\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 2948,\n                                end: 2950,\n                                loc: {\n                                  start: {\n                                    line: 102,\n                                    column: 38,\n                                    index: 2948,\n                                  },\n                                  end: {\n                                    line: 102,\n                                    column: 40,\n                                    index: 2950,\n                                  },\n                                  identifierName: 'id',\n                                },\n                                name: 'id',\n                              },\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 2962,\n                            end: 2981,\n                            loc: {\n                              start: {\n                                line: 103,\n                                column: 10,\n                                index: 2962,\n                              },\n                              end: {\n                                line: 103,\n                                column: 29,\n                                index: 2981,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 2962,\n                              end: 2967,\n                              loc: {\n                                start: {\n                                  line: 103,\n                                  column: 10,\n                                  index: 2962,\n                                },\n                                end: {\n                                  line: 103,\n                                  column: 15,\n                                  index: 2967,\n                                },\n                                identifierName: 'orgId',\n                              },\n                              name: 'orgId',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 2969,\n                              end: 2981,\n                              loc: {\n                                start: {\n                                  line: 103,\n                                  column: 17,\n                                  index: 2969,\n                                },\n                                end: {\n                                  line: 103,\n                                  column: 29,\n                                  index: 2981,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 2969,\n                                end: 2974,\n                                loc: {\n                                  start: {\n                                    line: 103,\n                                    column: 17,\n                                    index: 2969,\n                                  },\n                                  end: {\n                                    line: 103,\n                                    column: 22,\n                                    index: 2974,\n                                  },\n                                  identifierName: 'props',\n                                },\n                                name: 'props',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 2975,\n                                end: 2981,\n                                loc: {\n                                  start: {\n                                    line: 103,\n                                    column: 23,\n                                    index: 2975,\n                                  },\n                                  end: {\n                                    line: 103,\n                                    column: 29,\n                                    index: 2981,\n                                  },\n                                  identifierName: 'apiKey',\n                                },\n                                name: 'apiKey',\n                              },\n                            },\n                          },\n                        ],\n                        extra: {\n                          trailingComma: 2981,\n                        },\n                      },\n                    ],\n                  },\n                },\n              ],\n              directives: [],\n            },\n            alternate: null,\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 3015,\n      end: 3264,\n      loc: {\n        start: {\n          line: 108,\n          column: 4,\n          index: 3015,\n        },\n        end: {\n          line: 116,\n          column: 5,\n          index: 3264,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 3015,\n        end: 3029,\n        loc: {\n          start: {\n            line: 108,\n            column: 4,\n            index: 3015,\n          },\n          end: {\n            line: 108,\n            column: 18,\n            index: 3029,\n          },\n          identifierName: 'evalExpression',\n        },\n        name: 'evalExpression',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [\n        {\n          type: 'Identifier',\n          start: 3030,\n          end: 3048,\n          loc: {\n            start: {\n              line: 108,\n              column: 19,\n              index: 3030,\n            },\n            end: {\n              line: 108,\n              column: 37,\n              index: 3048,\n            },\n            identifierName: 'expression',\n          },\n          name: 'expression',\n          typeAnnotation: {\n            type: 'TSTypeAnnotation',\n            start: 3040,\n            end: 3048,\n            loc: {\n              start: {\n                line: 108,\n                column: 29,\n                index: 3040,\n              },\n              end: {\n                line: 108,\n                column: 37,\n                index: 3048,\n              },\n            },\n            typeAnnotation: {\n              type: 'TSStringKeyword',\n              start: 3042,\n              end: 3048,\n              loc: {\n                start: {\n                  line: 108,\n                  column: 31,\n                  index: 3042,\n                },\n                end: {\n                  line: 108,\n                  column: 37,\n                  index: 3048,\n                },\n              },\n            },\n          },\n        },\n      ],\n      body: {\n        type: 'BlockStatement',\n        start: 3050,\n        end: 3264,\n        loc: {\n          start: {\n            line: 108,\n            column: 39,\n            index: 3050,\n          },\n          end: {\n            line: 116,\n            column: 5,\n            index: 3264,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 3058,\n            end: 3258,\n            loc: {\n              start: {\n                line: 109,\n                column: 6,\n                index: 3058,\n              },\n              end: {\n                line: 115,\n                column: 8,\n                index: 3258,\n              },\n            },\n            argument: {\n              type: 'CallExpression',\n              start: 3065,\n              end: 3257,\n              loc: {\n                start: {\n                  line: 109,\n                  column: 13,\n                  index: 3065,\n                },\n                end: {\n                  line: 115,\n                  column: 7,\n                  index: 3257,\n                },\n              },\n              callee: {\n                type: 'MemberExpression',\n                start: 3065,\n                end: 3083,\n                loc: {\n                  start: {\n                    line: 109,\n                    column: 13,\n                    index: 3065,\n                  },\n                  end: {\n                    line: 109,\n                    column: 31,\n                    index: 3083,\n                  },\n                },\n                object: {\n                  type: 'Identifier',\n                  start: 3065,\n                  end: 3075,\n                  loc: {\n                    start: {\n                      line: 109,\n                      column: 13,\n                      index: 3065,\n                    },\n                    end: {\n                      line: 109,\n                      column: 23,\n                      index: 3075,\n                    },\n                    identifierName: 'expression',\n                  },\n                  name: 'expression',\n                },\n                computed: false,\n                property: {\n                  type: 'Identifier',\n                  start: 3076,\n                  end: 3083,\n                  loc: {\n                    start: {\n                      line: 109,\n                      column: 24,\n                      index: 3076,\n                    },\n                    end: {\n                      line: 109,\n                      column: 31,\n                      index: 3083,\n                    },\n                    identifierName: 'replace',\n                  },\n                  name: 'replace',\n                },\n              },\n              arguments: [\n                {\n                  type: 'RegExpLiteral',\n                  start: 3084,\n                  end: 3098,\n                  loc: {\n                    start: {\n                      line: 109,\n                      column: 32,\n                      index: 3084,\n                    },\n                    end: {\n                      line: 109,\n                      column: 46,\n                      index: 3098,\n                    },\n                  },\n                  extra: {\n                    raw: '/{{([^}]+)}}/g',\n                  },\n                  pattern: '{{([^}]+)}}',\n                  flags: 'g',\n                },\n                {\n                  type: 'ArrowFunctionExpression',\n                  start: 3100,\n                  end: 3249,\n                  loc: {\n                    start: {\n                      line: 109,\n                      column: 48,\n                      index: 3100,\n                    },\n                    end: {\n                      line: 114,\n                      column: 10,\n                      index: 3249,\n                    },\n                  },\n                  id: null,\n                  generator: false,\n                  async: false,\n                  params: [\n                    {\n                      type: 'Identifier',\n                      start: 3101,\n                      end: 3107,\n                      loc: {\n                        start: {\n                          line: 109,\n                          column: 49,\n                          index: 3101,\n                        },\n                        end: {\n                          line: 109,\n                          column: 55,\n                          index: 3107,\n                        },\n                        identifierName: '_match',\n                      },\n                      name: '_match',\n                    },\n                    {\n                      type: 'Identifier',\n                      start: 3109,\n                      end: 3114,\n                      loc: {\n                        start: {\n                          line: 109,\n                          column: 57,\n                          index: 3109,\n                        },\n                        end: {\n                          line: 109,\n                          column: 62,\n                          index: 3114,\n                        },\n                        identifierName: 'group',\n                      },\n                      name: 'group',\n                    },\n                  ],\n                  body: {\n                    type: 'CallExpression',\n                    start: 3127,\n                    end: 3249,\n                    loc: {\n                      start: {\n                        line: 110,\n                        column: 8,\n                        index: 3127,\n                      },\n                      end: {\n                        line: 114,\n                        column: 10,\n                        index: 3249,\n                      },\n                    },\n                    callee: {\n                      type: 'Identifier',\n                      start: 3127,\n                      end: 3135,\n                      loc: {\n                        start: {\n                          line: 110,\n                          column: 8,\n                          index: 3127,\n                        },\n                        end: {\n                          line: 110,\n                          column: 16,\n                          index: 3135,\n                        },\n                        identifierName: 'evaluate',\n                      },\n                      name: 'evaluate',\n                    },\n                    arguments: [\n                      {\n                        type: 'ObjectExpression',\n                        start: 3136,\n                        end: 3248,\n                        loc: {\n                          start: {\n                            line: 110,\n                            column: 17,\n                            index: 3136,\n                          },\n                          end: {\n                            line: 114,\n                            column: 9,\n                            index: 3248,\n                          },\n                        },\n                        properties: [\n                          {\n                            type: 'ObjectProperty',\n                            start: 3148,\n                            end: 3159,\n                            loc: {\n                              start: {\n                                line: 111,\n                                column: 10,\n                                index: 3148,\n                              },\n                              end: {\n                                line: 111,\n                                column: 21,\n                                index: 3159,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 3148,\n                              end: 3152,\n                              loc: {\n                                start: {\n                                  line: 111,\n                                  column: 10,\n                                  index: 3148,\n                                },\n                                end: {\n                                  line: 111,\n                                  column: 14,\n                                  index: 3152,\n                                },\n                                identifierName: 'code',\n                              },\n                              name: 'code',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'Identifier',\n                              start: 3154,\n                              end: 3159,\n                              loc: {\n                                start: {\n                                  line: 111,\n                                  column: 16,\n                                  index: 3154,\n                                },\n                                end: {\n                                  line: 111,\n                                  column: 21,\n                                  index: 3159,\n                                },\n                                identifierName: 'group',\n                              },\n                              name: 'group',\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 3171,\n                            end: 3200,\n                            loc: {\n                              start: {\n                                line: 112,\n                                column: 10,\n                                index: 3171,\n                              },\n                              end: {\n                                line: 112,\n                                column: 39,\n                                index: 3200,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 3171,\n                              end: 3178,\n                              loc: {\n                                start: {\n                                  line: 112,\n                                  column: 10,\n                                  index: 3171,\n                                },\n                                end: {\n                                  line: 112,\n                                  column: 17,\n                                  index: 3178,\n                                },\n                                identifierName: 'context',\n                              },\n                              name: 'context',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 3180,\n                              end: 3200,\n                              loc: {\n                                start: {\n                                  line: 112,\n                                  column: 19,\n                                  index: 3180,\n                                },\n                                end: {\n                                  line: 112,\n                                  column: 39,\n                                  index: 3200,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 3180,\n                                end: 3185,\n                                loc: {\n                                  start: {\n                                    line: 112,\n                                    column: 19,\n                                    index: 3180,\n                                  },\n                                  end: {\n                                    line: 112,\n                                    column: 24,\n                                    index: 3185,\n                                  },\n                                  identifierName: 'state',\n                                },\n                                name: 'state',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 3186,\n                                end: 3200,\n                                loc: {\n                                  start: {\n                                    line: 112,\n                                    column: 25,\n                                    index: 3186,\n                                  },\n                                  end: {\n                                    line: 112,\n                                    column: 39,\n                                    index: 3200,\n                                  },\n                                  identifierName: 'contextContext',\n                                },\n                                name: 'contextContext',\n                              },\n                            },\n                          },\n                          {\n                            type: 'ObjectProperty',\n                            start: 3212,\n                            end: 3237,\n                            loc: {\n                              start: {\n                                line: 113,\n                                column: 10,\n                                index: 3212,\n                              },\n                              end: {\n                                line: 113,\n                                column: 35,\n                                index: 3237,\n                              },\n                            },\n                            method: false,\n                            key: {\n                              type: 'Identifier',\n                              start: 3212,\n                              end: 3217,\n                              loc: {\n                                start: {\n                                  line: 113,\n                                  column: 10,\n                                  index: 3212,\n                                },\n                                end: {\n                                  line: 113,\n                                  column: 15,\n                                  index: 3217,\n                                },\n                                identifierName: 'state',\n                              },\n                              name: 'state',\n                            },\n                            computed: false,\n                            shorthand: false,\n                            value: {\n                              type: 'MemberExpression',\n                              start: 3219,\n                              end: 3237,\n                              loc: {\n                                start: {\n                                  line: 113,\n                                  column: 17,\n                                  index: 3219,\n                                },\n                                end: {\n                                  line: 113,\n                                  column: 35,\n                                  index: 3237,\n                                },\n                              },\n                              object: {\n                                type: 'Identifier',\n                                start: 3219,\n                                end: 3224,\n                                loc: {\n                                  start: {\n                                    line: 113,\n                                    column: 17,\n                                    index: 3219,\n                                  },\n                                  end: {\n                                    line: 113,\n                                    column: 22,\n                                    index: 3224,\n                                  },\n                                  identifierName: 'state',\n                                },\n                                name: 'state',\n                              },\n                              computed: false,\n                              property: {\n                                type: 'Identifier',\n                                start: 3225,\n                                end: 3237,\n                                loc: {\n                                  start: {\n                                    line: 113,\n                                    column: 23,\n                                    index: 3225,\n                                  },\n                                  end: {\n                                    line: 113,\n                                    column: 35,\n                                    index: 3237,\n                                  },\n                                  identifierName: 'contentState',\n                                },\n                                name: 'contentState',\n                              },\n                            },\n                          },\n                        ],\n                        extra: {\n                          trailingComma: 3237,\n                        },\n                      },\n                    ],\n                  },\n                },\n              ],\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 3270,\n      end: 3694,\n      loc: {\n        start: {\n          line: 117,\n          column: 4,\n          index: 3270,\n        },\n        end: {\n          line: 130,\n          column: 5,\n          index: 3694,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 3270,\n        end: 3283,\n        loc: {\n          start: {\n            line: 117,\n            column: 4,\n            index: 3270,\n          },\n          end: {\n            line: 117,\n            column: 17,\n            index: 3283,\n          },\n          identifierName: 'handleRequest',\n        },\n        name: 'handleRequest',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [\n        {\n          type: 'ObjectPattern',\n          start: 3284,\n          end: 3326,\n          loc: {\n            start: {\n              line: 117,\n              column: 18,\n              index: 3284,\n            },\n            end: {\n              line: 117,\n              column: 60,\n              index: 3326,\n            },\n          },\n          properties: [\n            {\n              type: 'ObjectProperty',\n              start: 3286,\n              end: 3289,\n              loc: {\n                start: {\n                  line: 117,\n                  column: 20,\n                  index: 3286,\n                },\n                end: {\n                  line: 117,\n                  column: 23,\n                  index: 3289,\n                },\n              },\n              key: {\n                type: 'Identifier',\n                start: 3286,\n                end: 3289,\n                loc: {\n                  start: {\n                    line: 117,\n                    column: 20,\n                    index: 3286,\n                  },\n                  end: {\n                    line: 117,\n                    column: 23,\n                    index: 3289,\n                  },\n                  identifierName: 'url',\n                },\n                name: 'url',\n              },\n              computed: false,\n              method: false,\n              shorthand: true,\n              value: {\n                type: 'Identifier',\n                start: 3286,\n                end: 3289,\n                loc: {\n                  start: {\n                    line: 117,\n                    column: 20,\n                    index: 3286,\n                  },\n                  end: {\n                    line: 117,\n                    column: 23,\n                    index: 3289,\n                  },\n                  identifierName: 'url',\n                },\n                name: 'url',\n              },\n              extra: {\n                shorthand: true,\n              },\n            },\n            {\n              type: 'ObjectProperty',\n              start: 3291,\n              end: 3294,\n              loc: {\n                start: {\n                  line: 117,\n                  column: 25,\n                  index: 3291,\n                },\n                end: {\n                  line: 117,\n                  column: 28,\n                  index: 3294,\n                },\n              },\n              key: {\n                type: 'Identifier',\n                start: 3291,\n                end: 3294,\n                loc: {\n                  start: {\n                    line: 117,\n                    column: 25,\n                    index: 3291,\n                  },\n                  end: {\n                    line: 117,\n                    column: 28,\n                    index: 3294,\n                  },\n                  identifierName: 'key',\n                },\n                name: 'key',\n              },\n              computed: false,\n              method: false,\n              shorthand: true,\n              value: {\n                type: 'Identifier',\n                start: 3291,\n                end: 3294,\n                loc: {\n                  start: {\n                    line: 117,\n                    column: 25,\n                    index: 3291,\n                  },\n                  end: {\n                    line: 117,\n                    column: 28,\n                    index: 3294,\n                  },\n                  identifierName: 'key',\n                },\n                name: 'key',\n              },\n              extra: {\n                shorthand: true,\n              },\n            },\n          ],\n          typeAnnotation: {\n            type: 'TSTypeAnnotation',\n            start: 3296,\n            end: 3326,\n            loc: {\n              start: {\n                line: 117,\n                column: 30,\n                index: 3296,\n              },\n              end: {\n                line: 117,\n                column: 60,\n                index: 3326,\n              },\n            },\n            typeAnnotation: {\n              type: 'TSTypeLiteral',\n              start: 3298,\n              end: 3326,\n              loc: {\n                start: {\n                  line: 117,\n                  column: 32,\n                  index: 3298,\n                },\n                end: {\n                  line: 117,\n                  column: 60,\n                  index: 3326,\n                },\n              },\n              members: [\n                {\n                  type: 'TSPropertySignature',\n                  start: 3300,\n                  end: 3312,\n                  loc: {\n                    start: {\n                      line: 117,\n                      column: 34,\n                      index: 3300,\n                    },\n                    end: {\n                      line: 117,\n                      column: 46,\n                      index: 3312,\n                    },\n                  },\n                  key: {\n                    type: 'Identifier',\n                    start: 3300,\n                    end: 3303,\n                    loc: {\n                      start: {\n                        line: 117,\n                        column: 34,\n                        index: 3300,\n                      },\n                      end: {\n                        line: 117,\n                        column: 37,\n                        index: 3303,\n                      },\n                      identifierName: 'key',\n                    },\n                    name: 'key',\n                  },\n                  computed: false,\n                  typeAnnotation: {\n                    type: 'TSTypeAnnotation',\n                    start: 3303,\n                    end: 3311,\n                    loc: {\n                      start: {\n                        line: 117,\n                        column: 37,\n                        index: 3303,\n                      },\n                      end: {\n                        line: 117,\n                        column: 45,\n                        index: 3311,\n                      },\n                    },\n                    typeAnnotation: {\n                      type: 'TSStringKeyword',\n                      start: 3305,\n                      end: 3311,\n                      loc: {\n                        start: {\n                          line: 117,\n                          column: 39,\n                          index: 3305,\n                        },\n                        end: {\n                          line: 117,\n                          column: 45,\n                          index: 3311,\n                        },\n                      },\n                    },\n                  },\n                },\n                {\n                  type: 'TSPropertySignature',\n                  start: 3313,\n                  end: 3324,\n                  loc: {\n                    start: {\n                      line: 117,\n                      column: 47,\n                      index: 3313,\n                    },\n                    end: {\n                      line: 117,\n                      column: 58,\n                      index: 3324,\n                    },\n                  },\n                  key: {\n                    type: 'Identifier',\n                    start: 3313,\n                    end: 3316,\n                    loc: {\n                      start: {\n                        line: 117,\n                        column: 47,\n                        index: 3313,\n                      },\n                      end: {\n                        line: 117,\n                        column: 50,\n                        index: 3316,\n                      },\n                      identifierName: 'url',\n                    },\n                    name: 'url',\n                  },\n                  computed: false,\n                  typeAnnotation: {\n                    type: 'TSTypeAnnotation',\n                    start: 3316,\n                    end: 3324,\n                    loc: {\n                      start: {\n                        line: 117,\n                        column: 50,\n                        index: 3316,\n                      },\n                      end: {\n                        line: 117,\n                        column: 58,\n                        index: 3324,\n                      },\n                    },\n                    typeAnnotation: {\n                      type: 'TSStringKeyword',\n                      start: 3318,\n                      end: 3324,\n                      loc: {\n                        start: {\n                          line: 117,\n                          column: 52,\n                          index: 3318,\n                        },\n                        end: {\n                          line: 117,\n                          column: 58,\n                          index: 3324,\n                        },\n                      },\n                    },\n                  },\n                },\n              ],\n            },\n          },\n        },\n      ],\n      body: {\n        type: 'BlockStatement',\n        start: 3328,\n        end: 3694,\n        loc: {\n          start: {\n            line: 117,\n            column: 62,\n            index: 3328,\n          },\n          end: {\n            line: 130,\n            column: 5,\n            index: 3694,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 3336,\n            end: 3662,\n            loc: {\n              start: {\n                line: 118,\n                column: 6,\n                index: 3336,\n              },\n              end: {\n                line: 128,\n                column: 8,\n                index: 3662,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 3342,\n                end: 3661,\n                loc: {\n                  start: {\n                    line: 118,\n                    column: 12,\n                    index: 3342,\n                  },\n                  end: {\n                    line: 128,\n                    column: 7,\n                    index: 3661,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 3342,\n                  end: 3358,\n                  loc: {\n                    start: {\n                      line: 118,\n                      column: 12,\n                      index: 3342,\n                    },\n                    end: {\n                      line: 118,\n                      column: 28,\n                      index: 3358,\n                    },\n                    identifierName: 'fetchAndSetState',\n                  },\n                  name: 'fetchAndSetState',\n                },\n                init: {\n                  type: 'ArrowFunctionExpression',\n                  start: 3361,\n                  end: 3661,\n                  loc: {\n                    start: {\n                      line: 118,\n                      column: 31,\n                      index: 3361,\n                    },\n                    end: {\n                      line: 128,\n                      column: 7,\n                      index: 3661,\n                    },\n                  },\n                  id: null,\n                  generator: false,\n                  async: true,\n                  params: [],\n                  body: {\n                    type: 'BlockStatement',\n                    start: 3373,\n                    end: 3661,\n                    loc: {\n                      start: {\n                        line: 118,\n                        column: 43,\n                        index: 3373,\n                      },\n                      end: {\n                        line: 128,\n                        column: 7,\n                        index: 3661,\n                      },\n                    },\n                    body: [\n                      {\n                        type: 'VariableDeclaration',\n                        start: 3383,\n                        end: 3414,\n                        loc: {\n                          start: {\n                            line: 119,\n                            column: 8,\n                            index: 3383,\n                          },\n                          end: {\n                            line: 119,\n                            column: 39,\n                            index: 3414,\n                          },\n                        },\n                        declarations: [\n                          {\n                            type: 'VariableDeclarator',\n                            start: 3389,\n                            end: 3413,\n                            loc: {\n                              start: {\n                                line: 119,\n                                column: 14,\n                                index: 3389,\n                              },\n                              end: {\n                                line: 119,\n                                column: 38,\n                                index: 3413,\n                              },\n                            },\n                            id: {\n                              type: 'Identifier',\n                              start: 3389,\n                              end: 3394,\n                              loc: {\n                                start: {\n                                  line: 119,\n                                  column: 14,\n                                  index: 3389,\n                                },\n                                end: {\n                                  line: 119,\n                                  column: 19,\n                                  index: 3394,\n                                },\n                                identifierName: 'fetch',\n                              },\n                              name: 'fetch',\n                            },\n                            init: {\n                              type: 'AwaitExpression',\n                              start: 3397,\n                              end: 3413,\n                              loc: {\n                                start: {\n                                  line: 119,\n                                  column: 22,\n                                  index: 3397,\n                                },\n                                end: {\n                                  line: 119,\n                                  column: 38,\n                                  index: 3413,\n                                },\n                              },\n                              argument: {\n                                type: 'CallExpression',\n                                start: 3403,\n                                end: 3413,\n                                loc: {\n                                  start: {\n                                    line: 119,\n                                    column: 28,\n                                    index: 3403,\n                                  },\n                                  end: {\n                                    line: 119,\n                                    column: 38,\n                                    index: 3413,\n                                  },\n                                },\n                                callee: {\n                                  type: 'Identifier',\n                                  start: 3403,\n                                  end: 3411,\n                                  loc: {\n                                    start: {\n                                      line: 119,\n                                      column: 28,\n                                      index: 3403,\n                                    },\n                                    end: {\n                                      line: 119,\n                                      column: 36,\n                                      index: 3411,\n                                    },\n                                    identifierName: 'getFetch',\n                                  },\n                                  name: 'getFetch',\n                                },\n                                arguments: [],\n                              },\n                            },\n                          },\n                        ],\n                        kind: 'const',\n                      },\n                      {\n                        type: 'VariableDeclaration',\n                        start: 3423,\n                        end: 3457,\n                        loc: {\n                          start: {\n                            line: 120,\n                            column: 8,\n                            index: 3423,\n                          },\n                          end: {\n                            line: 120,\n                            column: 42,\n                            index: 3457,\n                          },\n                        },\n                        declarations: [\n                          {\n                            type: 'VariableDeclarator',\n                            start: 3429,\n                            end: 3456,\n                            loc: {\n                              start: {\n                                line: 120,\n                                column: 14,\n                                index: 3429,\n                              },\n                              end: {\n                                line: 120,\n                                column: 41,\n                                index: 3456,\n                              },\n                            },\n                            id: {\n                              type: 'Identifier',\n                              start: 3429,\n                              end: 3437,\n                              loc: {\n                                start: {\n                                  line: 120,\n                                  column: 14,\n                                  index: 3429,\n                                },\n                                end: {\n                                  line: 120,\n                                  column: 22,\n                                  index: 3437,\n                                },\n                                identifierName: 'response',\n                              },\n                              name: 'response',\n                            },\n                            init: {\n                              type: 'AwaitExpression',\n                              start: 3440,\n                              end: 3456,\n                              loc: {\n                                start: {\n                                  line: 120,\n                                  column: 25,\n                                  index: 3440,\n                                },\n                                end: {\n                                  line: 120,\n                                  column: 41,\n                                  index: 3456,\n                                },\n                              },\n                              argument: {\n                                type: 'CallExpression',\n                                start: 3446,\n                                end: 3456,\n                                loc: {\n                                  start: {\n                                    line: 120,\n                                    column: 31,\n                                    index: 3446,\n                                  },\n                                  end: {\n                                    line: 120,\n                                    column: 41,\n                                    index: 3456,\n                                  },\n                                },\n                                callee: {\n                                  type: 'Identifier',\n                                  start: 3446,\n                                  end: 3451,\n                                  loc: {\n                                    start: {\n                                      line: 120,\n                                      column: 31,\n                                      index: 3446,\n                                    },\n                                    end: {\n                                      line: 120,\n                                      column: 36,\n                                      index: 3451,\n                                    },\n                                    identifierName: 'fetch',\n                                  },\n                                  name: 'fetch',\n                                },\n                                arguments: [\n                                  {\n                                    type: 'Identifier',\n                                    start: 3452,\n                                    end: 3455,\n                                    loc: {\n                                      start: {\n                                        line: 120,\n                                        column: 37,\n                                        index: 3452,\n                                      },\n                                      end: {\n                                        line: 120,\n                                        column: 40,\n                                        index: 3455,\n                                      },\n                                      identifierName: 'url',\n                                    },\n                                    name: 'url',\n                                  },\n                                ],\n                              },\n                            },\n                          },\n                        ],\n                        kind: 'const',\n                      },\n                      {\n                        type: 'VariableDeclaration',\n                        start: 3466,\n                        end: 3501,\n                        loc: {\n                          start: {\n                            line: 121,\n                            column: 8,\n                            index: 3466,\n                          },\n                          end: {\n                            line: 121,\n                            column: 43,\n                            index: 3501,\n                          },\n                        },\n                        declarations: [\n                          {\n                            type: 'VariableDeclarator',\n                            start: 3472,\n                            end: 3500,\n                            loc: {\n                              start: {\n                                line: 121,\n                                column: 14,\n                                index: 3472,\n                              },\n                              end: {\n                                line: 121,\n                                column: 42,\n                                index: 3500,\n                              },\n                            },\n                            id: {\n                              type: 'Identifier',\n                              start: 3472,\n                              end: 3476,\n                              loc: {\n                                start: {\n                                  line: 121,\n                                  column: 14,\n                                  index: 3472,\n                                },\n                                end: {\n                                  line: 121,\n                                  column: 18,\n                                  index: 3476,\n                                },\n                                identifierName: 'json',\n                              },\n                              name: 'json',\n                            },\n                            init: {\n                              type: 'AwaitExpression',\n                              start: 3479,\n                              end: 3500,\n                              loc: {\n                                start: {\n                                  line: 121,\n                                  column: 21,\n                                  index: 3479,\n                                },\n                                end: {\n                                  line: 121,\n                                  column: 42,\n                                  index: 3500,\n                                },\n                              },\n                              argument: {\n                                type: 'CallExpression',\n                                start: 3485,\n                                end: 3500,\n                                loc: {\n                                  start: {\n                                    line: 121,\n                                    column: 27,\n                                    index: 3485,\n                                  },\n                                  end: {\n                                    line: 121,\n                                    column: 42,\n                                    index: 3500,\n                                  },\n                                },\n                                callee: {\n                                  type: 'MemberExpression',\n                                  start: 3485,\n                                  end: 3498,\n                                  loc: {\n                                    start: {\n                                      line: 121,\n                                      column: 27,\n                                      index: 3485,\n                                    },\n                                    end: {\n                                      line: 121,\n                                      column: 40,\n                                      index: 3498,\n                                    },\n                                  },\n                                  object: {\n                                    type: 'Identifier',\n                                    start: 3485,\n                                    end: 3493,\n                                    loc: {\n                                      start: {\n                                        line: 121,\n                                        column: 27,\n                                        index: 3485,\n                                      },\n                                      end: {\n                                        line: 121,\n                                        column: 35,\n                                        index: 3493,\n                                      },\n                                      identifierName: 'response',\n                                    },\n                                    name: 'response',\n                                  },\n                                  computed: false,\n                                  property: {\n                                    type: 'Identifier',\n                                    start: 3494,\n                                    end: 3498,\n                                    loc: {\n                                      start: {\n                                        line: 121,\n                                        column: 36,\n                                        index: 3494,\n                                      },\n                                      end: {\n                                        line: 121,\n                                        column: 40,\n                                        index: 3498,\n                                      },\n                                      identifierName: 'json',\n                                    },\n                                    name: 'json',\n                                  },\n                                },\n                                arguments: [],\n                              },\n                            },\n                          },\n                        ],\n                        kind: 'const',\n                      },\n                      {\n                        type: 'VariableDeclaration',\n                        start: 3511,\n                        end: 3605,\n                        loc: {\n                          start: {\n                            line: 123,\n                            column: 8,\n                            index: 3511,\n                          },\n                          end: {\n                            line: 126,\n                            column: 10,\n                            index: 3605,\n                          },\n                        },\n                        declarations: [\n                          {\n                            type: 'VariableDeclarator',\n                            start: 3517,\n                            end: 3604,\n                            loc: {\n                              start: {\n                                line: 123,\n                                column: 14,\n                                index: 3517,\n                              },\n                              end: {\n                                line: 126,\n                                column: 9,\n                                index: 3604,\n                              },\n                            },\n                            id: {\n                              type: 'Identifier',\n                              start: 3517,\n                              end: 3533,\n                              loc: {\n                                start: {\n                                  line: 123,\n                                  column: 14,\n                                  index: 3517,\n                                },\n                                end: {\n                                  line: 123,\n                                  column: 30,\n                                  index: 3533,\n                                },\n                                identifierName: 'newOverrideState',\n                              },\n                              name: 'newOverrideState',\n                            },\n                            init: {\n                              type: 'ObjectExpression',\n                              start: 3536,\n                              end: 3604,\n                              loc: {\n                                start: {\n                                  line: 123,\n                                  column: 33,\n                                  index: 3536,\n                                },\n                                end: {\n                                  line: 126,\n                                  column: 9,\n                                  index: 3604,\n                                },\n                              },\n                              properties: [\n                                {\n                                  type: 'SpreadElement',\n                                  start: 3548,\n                                  end: 3570,\n                                  loc: {\n                                    start: {\n                                      line: 124,\n                                      column: 10,\n                                      index: 3548,\n                                    },\n                                    end: {\n                                      line: 124,\n                                      column: 32,\n                                      index: 3570,\n                                    },\n                                  },\n                                  argument: {\n                                    type: 'MemberExpression',\n                                    start: 3551,\n                                    end: 3570,\n                                    loc: {\n                                      start: {\n                                        line: 124,\n                                        column: 13,\n                                        index: 3551,\n                                      },\n                                      end: {\n                                        line: 124,\n                                        column: 32,\n                                        index: 3570,\n                                      },\n                                    },\n                                    object: {\n                                      type: 'Identifier',\n                                      start: 3551,\n                                      end: 3556,\n                                      loc: {\n                                        start: {\n                                          line: 124,\n                                          column: 13,\n                                          index: 3551,\n                                        },\n                                        end: {\n                                          line: 124,\n                                          column: 18,\n                                          index: 3556,\n                                        },\n                                        identifierName: 'state',\n                                      },\n                                      name: 'state',\n                                    },\n                                    computed: false,\n                                    property: {\n                                      type: 'Identifier',\n                                      start: 3557,\n                                      end: 3570,\n                                      loc: {\n                                        start: {\n                                          line: 124,\n                                          column: 19,\n                                          index: 3557,\n                                        },\n                                        end: {\n                                          line: 124,\n                                          column: 32,\n                                          index: 3570,\n                                        },\n                                        identifierName: 'overrideState',\n                                      },\n                                      name: 'overrideState',\n                                    },\n                                  },\n                                },\n                                {\n                                  type: 'ObjectProperty',\n                                  start: 3582,\n                                  end: 3593,\n                                  loc: {\n                                    start: {\n                                      line: 125,\n                                      column: 10,\n                                      index: 3582,\n                                    },\n                                    end: {\n                                      line: 125,\n                                      column: 21,\n                                      index: 3593,\n                                    },\n                                  },\n                                  method: false,\n                                  computed: true,\n                                  key: {\n                                    type: 'Identifier',\n                                    start: 3583,\n                                    end: 3586,\n                                    loc: {\n                                      start: {\n                                        line: 125,\n                                        column: 11,\n                                        index: 3583,\n                                      },\n                                      end: {\n                                        line: 125,\n                                        column: 14,\n                                        index: 3586,\n                                      },\n                                      identifierName: 'key',\n                                    },\n                                    name: 'key',\n                                  },\n                                  shorthand: false,\n                                  value: {\n                                    type: 'Identifier',\n                                    start: 3589,\n                                    end: 3593,\n                                    loc: {\n                                      start: {\n                                        line: 125,\n                                        column: 17,\n                                        index: 3589,\n                                      },\n                                      end: {\n                                        line: 125,\n                                        column: 21,\n                                        index: 3593,\n                                      },\n                                      identifierName: 'json',\n                                    },\n                                    name: 'json',\n                                  },\n                                },\n                              ],\n                              extra: {\n                                trailingComma: 3593,\n                              },\n                            },\n                          },\n                        ],\n                        kind: 'const',\n                      },\n                      {\n                        type: 'ExpressionStatement',\n                        start: 3614,\n                        end: 3653,\n                        loc: {\n                          start: {\n                            line: 127,\n                            column: 8,\n                            index: 3614,\n                          },\n                          end: {\n                            line: 127,\n                            column: 47,\n                            index: 3653,\n                          },\n                        },\n                        expression: {\n                          type: 'AssignmentExpression',\n                          start: 3614,\n                          end: 3652,\n                          loc: {\n                            start: {\n                              line: 127,\n                              column: 8,\n                              index: 3614,\n                            },\n                            end: {\n                              line: 127,\n                              column: 46,\n                              index: 3652,\n                            },\n                          },\n                          operator: '=',\n                          left: {\n                            type: 'MemberExpression',\n                            start: 3614,\n                            end: 3633,\n                            loc: {\n                              start: {\n                                line: 127,\n                                column: 8,\n                                index: 3614,\n                              },\n                              end: {\n                                line: 127,\n                                column: 27,\n                                index: 3633,\n                              },\n                            },\n                            object: {\n                              type: 'Identifier',\n                              start: 3614,\n                              end: 3619,\n                              loc: {\n                                start: {\n                                  line: 127,\n                                  column: 8,\n                                  index: 3614,\n                                },\n                                end: {\n                                  line: 127,\n                                  column: 13,\n                                  index: 3619,\n                                },\n                                identifierName: 'state',\n                              },\n                              name: 'state',\n                            },\n                            computed: false,\n                            property: {\n                              type: 'Identifier',\n                              start: 3620,\n                              end: 3633,\n                              loc: {\n                                start: {\n                                  line: 127,\n                                  column: 14,\n                                  index: 3620,\n                                },\n                                end: {\n                                  line: 127,\n                                  column: 27,\n                                  index: 3633,\n                                },\n                                identifierName: 'overrideState',\n                              },\n                              name: 'overrideState',\n                            },\n                          },\n                          right: {\n                            type: 'Identifier',\n                            start: 3636,\n                            end: 3652,\n                            loc: {\n                              start: {\n                                line: 127,\n                                column: 30,\n                                index: 3636,\n                              },\n                              end: {\n                                line: 127,\n                                column: 46,\n                                index: 3652,\n                              },\n                              identifierName: 'newOverrideState',\n                            },\n                            name: 'newOverrideState',\n                          },\n                        },\n                      },\n                    ],\n                    directives: [],\n                  },\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'ExpressionStatement',\n            start: 3669,\n            end: 3688,\n            loc: {\n              start: {\n                line: 129,\n                column: 6,\n                index: 3669,\n              },\n              end: {\n                line: 129,\n                column: 25,\n                index: 3688,\n              },\n            },\n            expression: {\n              type: 'CallExpression',\n              start: 3669,\n              end: 3687,\n              loc: {\n                start: {\n                  line: 129,\n                  column: 6,\n                  index: 3669,\n                },\n                end: {\n                  line: 129,\n                  column: 24,\n                  index: 3687,\n                },\n              },\n              callee: {\n                type: 'Identifier',\n                start: 3669,\n                end: 3685,\n                loc: {\n                  start: {\n                    line: 129,\n                    column: 6,\n                    index: 3669,\n                  },\n                  end: {\n                    line: 129,\n                    column: 22,\n                    index: 3685,\n                  },\n                  identifierName: 'fetchAndSetState',\n                },\n                name: 'fetchAndSetState',\n              },\n              arguments: [],\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 3700,\n      end: 4051,\n      loc: {\n        start: {\n          line: 131,\n          column: 4,\n          index: 3700,\n        },\n        end: {\n          line: 140,\n          column: 5,\n          index: 4051,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 3700,\n        end: 3715,\n        loc: {\n          start: {\n            line: 131,\n            column: 4,\n            index: 3700,\n          },\n          end: {\n            line: 131,\n            column: 19,\n            index: 3715,\n          },\n          identifierName: 'runHttpRequests',\n        },\n        name: 'runHttpRequests',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      body: {\n        type: 'BlockStatement',\n        start: 3718,\n        end: 4051,\n        loc: {\n          start: {\n            line: 131,\n            column: 22,\n            index: 3718,\n          },\n          end: {\n            line: 140,\n            column: 5,\n            index: 4051,\n          },\n        },\n        body: [\n          {\n            type: 'VariableDeclaration',\n            start: 3726,\n            end: 3786,\n            loc: {\n              start: {\n                line: 132,\n                column: 6,\n                index: 3726,\n              },\n              end: {\n                line: 132,\n                column: 66,\n                index: 3786,\n              },\n            },\n            declarations: [\n              {\n                type: 'VariableDeclarator',\n                start: 3732,\n                end: 3785,\n                loc: {\n                  start: {\n                    line: 132,\n                    column: 12,\n                    index: 3732,\n                  },\n                  end: {\n                    line: 132,\n                    column: 65,\n                    index: 3785,\n                  },\n                },\n                id: {\n                  type: 'Identifier',\n                  start: 3732,\n                  end: 3740,\n                  loc: {\n                    start: {\n                      line: 132,\n                      column: 12,\n                      index: 3732,\n                    },\n                    end: {\n                      line: 132,\n                      column: 20,\n                      index: 3740,\n                    },\n                    identifierName: 'requests',\n                  },\n                  name: 'requests',\n                },\n                init: {\n                  type: 'LogicalExpression',\n                  start: 3743,\n                  end: 3785,\n                  loc: {\n                    start: {\n                      line: 132,\n                      column: 23,\n                      index: 3743,\n                    },\n                    end: {\n                      line: 132,\n                      column: 65,\n                      index: 3785,\n                    },\n                  },\n                  left: {\n                    type: 'OptionalMemberExpression',\n                    start: 3743,\n                    end: 3779,\n                    loc: {\n                      start: {\n                        line: 132,\n                        column: 23,\n                        index: 3743,\n                      },\n                      end: {\n                        line: 132,\n                        column: 59,\n                        index: 3779,\n                      },\n                    },\n                    object: {\n                      type: 'OptionalMemberExpression',\n                      start: 3743,\n                      end: 3765,\n                      loc: {\n                        start: {\n                          line: 132,\n                          column: 23,\n                          index: 3743,\n                        },\n                        end: {\n                          line: 132,\n                          column: 45,\n                          index: 3765,\n                        },\n                      },\n                      object: {\n                        type: 'MemberExpression',\n                        start: 3743,\n                        end: 3759,\n                        loc: {\n                          start: {\n                            line: 132,\n                            column: 23,\n                            index: 3743,\n                          },\n                          end: {\n                            line: 132,\n                            column: 39,\n                            index: 3759,\n                          },\n                        },\n                        object: {\n                          type: 'Identifier',\n                          start: 3743,\n                          end: 3748,\n                          loc: {\n                            start: {\n                              line: 132,\n                              column: 23,\n                              index: 3743,\n                            },\n                            end: {\n                              line: 132,\n                              column: 28,\n                              index: 3748,\n                            },\n                            identifierName: 'state',\n                          },\n                          name: 'state',\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 3749,\n                          end: 3759,\n                          loc: {\n                            start: {\n                              line: 132,\n                              column: 29,\n                              index: 3749,\n                            },\n                            end: {\n                              line: 132,\n                              column: 39,\n                              index: 3759,\n                            },\n                            identifierName: 'useContent',\n                          },\n                          name: 'useContent',\n                        },\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 3761,\n                        end: 3765,\n                        loc: {\n                          start: {\n                            line: 132,\n                            column: 41,\n                            index: 3761,\n                          },\n                          end: {\n                            line: 132,\n                            column: 45,\n                            index: 3765,\n                          },\n                          identifierName: 'data',\n                        },\n                        name: 'data',\n                      },\n                      optional: true,\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 3767,\n                      end: 3779,\n                      loc: {\n                        start: {\n                          line: 132,\n                          column: 47,\n                          index: 3767,\n                        },\n                        end: {\n                          line: 132,\n                          column: 59,\n                          index: 3779,\n                        },\n                        identifierName: 'httpRequests',\n                      },\n                      name: 'httpRequests',\n                    },\n                    optional: true,\n                  },\n                  operator: '??',\n                  right: {\n                    type: 'ObjectExpression',\n                    start: 3783,\n                    end: 3785,\n                    loc: {\n                      start: {\n                        line: 132,\n                        column: 63,\n                        index: 3783,\n                      },\n                      end: {\n                        line: 132,\n                        column: 65,\n                        index: 3785,\n                      },\n                    },\n                    properties: [],\n                  },\n                },\n              },\n            ],\n            kind: 'const',\n          },\n          {\n            type: 'ExpressionStatement',\n            start: 3794,\n            end: 4045,\n            loc: {\n              start: {\n                line: 134,\n                column: 6,\n                index: 3794,\n              },\n              end: {\n                line: 139,\n                column: 9,\n                index: 4045,\n              },\n            },\n            expression: {\n              type: 'CallExpression',\n              start: 3794,\n              end: 4044,\n              loc: {\n                start: {\n                  line: 134,\n                  column: 6,\n                  index: 3794,\n                },\n                end: {\n                  line: 139,\n                  column: 8,\n                  index: 4044,\n                },\n              },\n              callee: {\n                type: 'MemberExpression',\n                start: 3794,\n                end: 3826,\n                loc: {\n                  start: {\n                    line: 134,\n                    column: 6,\n                    index: 3794,\n                  },\n                  end: {\n                    line: 134,\n                    column: 38,\n                    index: 3826,\n                  },\n                },\n                object: {\n                  type: 'CallExpression',\n                  start: 3794,\n                  end: 3818,\n                  loc: {\n                    start: {\n                      line: 134,\n                      column: 6,\n                      index: 3794,\n                    },\n                    end: {\n                      line: 134,\n                      column: 30,\n                      index: 3818,\n                    },\n                  },\n                  callee: {\n                    type: 'MemberExpression',\n                    start: 3794,\n                    end: 3808,\n                    loc: {\n                      start: {\n                        line: 134,\n                        column: 6,\n                        index: 3794,\n                      },\n                      end: {\n                        line: 134,\n                        column: 20,\n                        index: 3808,\n                      },\n                    },\n                    object: {\n                      type: 'Identifier',\n                      start: 3794,\n                      end: 3800,\n                      loc: {\n                        start: {\n                          line: 134,\n                          column: 6,\n                          index: 3794,\n                        },\n                        end: {\n                          line: 134,\n                          column: 12,\n                          index: 3800,\n                        },\n                        identifierName: 'Object',\n                      },\n                      name: 'Object',\n                    },\n                    computed: false,\n                    property: {\n                      type: 'Identifier',\n                      start: 3801,\n                      end: 3808,\n                      loc: {\n                        start: {\n                          line: 134,\n                          column: 13,\n                          index: 3801,\n                        },\n                        end: {\n                          line: 134,\n                          column: 20,\n                          index: 3808,\n                        },\n                        identifierName: 'entries',\n                      },\n                      name: 'entries',\n                    },\n                  },\n                  arguments: [\n                    {\n                      type: 'Identifier',\n                      start: 3809,\n                      end: 3817,\n                      loc: {\n                        start: {\n                          line: 134,\n                          column: 21,\n                          index: 3809,\n                        },\n                        end: {\n                          line: 134,\n                          column: 29,\n                          index: 3817,\n                        },\n                        identifierName: 'requests',\n                      },\n                      name: 'requests',\n                    },\n                  ],\n                },\n                computed: false,\n                property: {\n                  type: 'Identifier',\n                  start: 3819,\n                  end: 3826,\n                  loc: {\n                    start: {\n                      line: 134,\n                      column: 31,\n                      index: 3819,\n                    },\n                    end: {\n                      line: 134,\n                      column: 38,\n                      index: 3826,\n                    },\n                    identifierName: 'forEach',\n                  },\n                  name: 'forEach',\n                },\n              },\n              arguments: [\n                {\n                  type: 'ArrowFunctionExpression',\n                  start: 3827,\n                  end: 4043,\n                  loc: {\n                    start: {\n                      line: 134,\n                      column: 39,\n                      index: 3827,\n                    },\n                    end: {\n                      line: 139,\n                      column: 7,\n                      index: 4043,\n                    },\n                  },\n                  id: null,\n                  generator: false,\n                  async: false,\n                  params: [\n                    {\n                      type: 'ArrayPattern',\n                      start: 3828,\n                      end: 3838,\n                      loc: {\n                        start: {\n                          line: 134,\n                          column: 40,\n                          index: 3828,\n                        },\n                        end: {\n                          line: 134,\n                          column: 50,\n                          index: 3838,\n                        },\n                      },\n                      elements: [\n                        {\n                          type: 'Identifier',\n                          start: 3829,\n                          end: 3832,\n                          loc: {\n                            start: {\n                              line: 134,\n                              column: 41,\n                              index: 3829,\n                            },\n                            end: {\n                              line: 134,\n                              column: 44,\n                              index: 3832,\n                            },\n                            identifierName: 'key',\n                          },\n                          name: 'key',\n                        },\n                        {\n                          type: 'Identifier',\n                          start: 3834,\n                          end: 3837,\n                          loc: {\n                            start: {\n                              line: 134,\n                              column: 46,\n                              index: 3834,\n                            },\n                            end: {\n                              line: 134,\n                              column: 49,\n                              index: 3837,\n                            },\n                            identifierName: 'url',\n                          },\n                          name: 'url',\n                        },\n                      ],\n                    },\n                  ],\n                  body: {\n                    type: 'BlockStatement',\n                    start: 3843,\n                    end: 4043,\n                    loc: {\n                      start: {\n                        line: 134,\n                        column: 55,\n                        index: 3843,\n                      },\n                      end: {\n                        line: 139,\n                        column: 7,\n                        index: 4043,\n                      },\n                    },\n                    body: [\n                      {\n                        type: 'IfStatement',\n                        start: 3853,\n                        end: 4035,\n                        loc: {\n                          start: {\n                            line: 135,\n                            column: 8,\n                            index: 3853,\n                          },\n                          end: {\n                            line: 138,\n                            column: 9,\n                            index: 4035,\n                          },\n                        },\n                        test: {\n                          type: 'LogicalExpression',\n                          start: 3857,\n                          end: 3905,\n                          loc: {\n                            start: {\n                              line: 135,\n                              column: 12,\n                              index: 3857,\n                            },\n                            end: {\n                              line: 135,\n                              column: 60,\n                              index: 3905,\n                            },\n                          },\n                          left: {\n                            type: 'Identifier',\n                            start: 3857,\n                            end: 3860,\n                            loc: {\n                              start: {\n                                line: 135,\n                                column: 12,\n                                index: 3857,\n                              },\n                              end: {\n                                line: 135,\n                                column: 15,\n                                index: 3860,\n                              },\n                              identifierName: 'url',\n                            },\n                            name: 'url',\n                          },\n                          operator: '&&',\n                          right: {\n                            type: 'LogicalExpression',\n                            start: 3865,\n                            end: 3904,\n                            loc: {\n                              start: {\n                                line: 135,\n                                column: 20,\n                                index: 3865,\n                              },\n                              end: {\n                                line: 135,\n                                column: 59,\n                                index: 3904,\n                              },\n                            },\n                            left: {\n                              type: 'UnaryExpression',\n                              start: 3865,\n                              end: 3889,\n                              loc: {\n                                start: {\n                                  line: 135,\n                                  column: 20,\n                                  index: 3865,\n                                },\n                                end: {\n                                  line: 135,\n                                  column: 44,\n                                  index: 3889,\n                                },\n                              },\n                              operator: '!',\n                              prefix: true,\n                              argument: {\n                                type: 'MemberExpression',\n                                start: 3866,\n                                end: 3889,\n                                loc: {\n                                  start: {\n                                    line: 135,\n                                    column: 21,\n                                    index: 3866,\n                                  },\n                                  end: {\n                                    line: 135,\n                                    column: 44,\n                                    index: 3889,\n                                  },\n                                },\n                                object: {\n                                  type: 'MemberExpression',\n                                  start: 3866,\n                                  end: 3884,\n                                  loc: {\n                                    start: {\n                                      line: 135,\n                                      column: 21,\n                                      index: 3866,\n                                    },\n                                    end: {\n                                      line: 135,\n                                      column: 39,\n                                      index: 3884,\n                                    },\n                                  },\n                                  object: {\n                                    type: 'Identifier',\n                                    start: 3866,\n                                    end: 3871,\n                                    loc: {\n                                      start: {\n                                        line: 135,\n                                        column: 21,\n                                        index: 3866,\n                                      },\n                                      end: {\n                                        line: 135,\n                                        column: 26,\n                                        index: 3871,\n                                      },\n                                      identifierName: 'state',\n                                    },\n                                    name: 'state',\n                                  },\n                                  computed: false,\n                                  property: {\n                                    type: 'Identifier',\n                                    start: 3872,\n                                    end: 3884,\n                                    loc: {\n                                      start: {\n                                        line: 135,\n                                        column: 27,\n                                        index: 3872,\n                                      },\n                                      end: {\n                                        line: 135,\n                                        column: 39,\n                                        index: 3884,\n                                      },\n                                      identifierName: 'httpReqsData',\n                                    },\n                                    name: 'httpReqsData',\n                                  },\n                                },\n                                computed: true,\n                                property: {\n                                  type: 'Identifier',\n                                  start: 3885,\n                                  end: 3888,\n                                  loc: {\n                                    start: {\n                                      line: 135,\n                                      column: 40,\n                                      index: 3885,\n                                    },\n                                    end: {\n                                      line: 135,\n                                      column: 43,\n                                      index: 3888,\n                                    },\n                                    identifierName: 'key',\n                                  },\n                                  name: 'key',\n                                },\n                              },\n                            },\n                            operator: '||',\n                            right: {\n                              type: 'CallExpression',\n                              start: 3893,\n                              end: 3904,\n                              loc: {\n                                start: {\n                                  line: 135,\n                                  column: 48,\n                                  index: 3893,\n                                },\n                                end: {\n                                  line: 135,\n                                  column: 59,\n                                  index: 3904,\n                                },\n                              },\n                              callee: {\n                                type: 'Identifier',\n                                start: 3893,\n                                end: 3902,\n                                loc: {\n                                  start: {\n                                    line: 135,\n                                    column: 48,\n                                    index: 3893,\n                                  },\n                                  end: {\n                                    line: 135,\n                                    column: 57,\n                                    index: 3902,\n                                  },\n                                  identifierName: 'isEditing',\n                                },\n                                name: 'isEditing',\n                              },\n                              arguments: [],\n                            },\n                            extra: {\n                              parenthesized: true,\n                              parenStart: 3864,\n                            },\n                          },\n                        },\n                        consequent: {\n                          type: 'BlockStatement',\n                          start: 3907,\n                          end: 4035,\n                          loc: {\n                            start: {\n                              line: 135,\n                              column: 62,\n                              index: 3907,\n                            },\n                            end: {\n                              line: 138,\n                              column: 9,\n                              index: 4035,\n                            },\n                          },\n                          body: [\n                            {\n                              type: 'VariableDeclaration',\n                              start: 3919,\n                              end: 3966,\n                              loc: {\n                                start: {\n                                  line: 136,\n                                  column: 10,\n                                  index: 3919,\n                                },\n                                end: {\n                                  line: 136,\n                                  column: 57,\n                                  index: 3966,\n                                },\n                              },\n                              declarations: [\n                                {\n                                  type: 'VariableDeclarator',\n                                  start: 3925,\n                                  end: 3965,\n                                  loc: {\n                                    start: {\n                                      line: 136,\n                                      column: 16,\n                                      index: 3925,\n                                    },\n                                    end: {\n                                      line: 136,\n                                      column: 56,\n                                      index: 3965,\n                                    },\n                                  },\n                                  id: {\n                                    type: 'Identifier',\n                                    start: 3925,\n                                    end: 3937,\n                                    loc: {\n                                      start: {\n                                        line: 136,\n                                        column: 16,\n                                        index: 3925,\n                                      },\n                                      end: {\n                                        line: 136,\n                                        column: 28,\n                                        index: 3937,\n                                      },\n                                      identifierName: 'evaluatedUrl',\n                                    },\n                                    name: 'evaluatedUrl',\n                                  },\n                                  init: {\n                                    type: 'CallExpression',\n                                    start: 3940,\n                                    end: 3965,\n                                    loc: {\n                                      start: {\n                                        line: 136,\n                                        column: 31,\n                                        index: 3940,\n                                      },\n                                      end: {\n                                        line: 136,\n                                        column: 56,\n                                        index: 3965,\n                                      },\n                                    },\n                                    callee: {\n                                      type: 'MemberExpression',\n                                      start: 3940,\n                                      end: 3960,\n                                      loc: {\n                                        start: {\n                                          line: 136,\n                                          column: 31,\n                                          index: 3940,\n                                        },\n                                        end: {\n                                          line: 136,\n                                          column: 51,\n                                          index: 3960,\n                                        },\n                                      },\n                                      object: {\n                                        type: 'Identifier',\n                                        start: 3940,\n                                        end: 3945,\n                                        loc: {\n                                          start: {\n                                            line: 136,\n                                            column: 31,\n                                            index: 3940,\n                                          },\n                                          end: {\n                                            line: 136,\n                                            column: 36,\n                                            index: 3945,\n                                          },\n                                          identifierName: 'state',\n                                        },\n                                        name: 'state',\n                                      },\n                                      computed: false,\n                                      property: {\n                                        type: 'Identifier',\n                                        start: 3946,\n                                        end: 3960,\n                                        loc: {\n                                          start: {\n                                            line: 136,\n                                            column: 37,\n                                            index: 3946,\n                                          },\n                                          end: {\n                                            line: 136,\n                                            column: 51,\n                                            index: 3960,\n                                          },\n                                          identifierName: 'evalExpression',\n                                        },\n                                        name: 'evalExpression',\n                                      },\n                                    },\n                                    arguments: [\n                                      {\n                                        type: 'Identifier',\n                                        start: 3961,\n                                        end: 3964,\n                                        loc: {\n                                          start: {\n                                            line: 136,\n                                            column: 52,\n                                            index: 3961,\n                                          },\n                                          end: {\n                                            line: 136,\n                                            column: 55,\n                                            index: 3964,\n                                          },\n                                          identifierName: 'url',\n                                        },\n                                        name: 'url',\n                                      },\n                                    ],\n                                  },\n                                },\n                              ],\n                              kind: 'const',\n                            },\n                            {\n                              type: 'ExpressionStatement',\n                              start: 3977,\n                              end: 4025,\n                              loc: {\n                                start: {\n                                  line: 137,\n                                  column: 10,\n                                  index: 3977,\n                                },\n                                end: {\n                                  line: 137,\n                                  column: 58,\n                                  index: 4025,\n                                },\n                              },\n                              expression: {\n                                type: 'CallExpression',\n                                start: 3977,\n                                end: 4024,\n                                loc: {\n                                  start: {\n                                    line: 137,\n                                    column: 10,\n                                    index: 3977,\n                                  },\n                                  end: {\n                                    line: 137,\n                                    column: 57,\n                                    index: 4024,\n                                  },\n                                },\n                                callee: {\n                                  type: 'MemberExpression',\n                                  start: 3977,\n                                  end: 3996,\n                                  loc: {\n                                    start: {\n                                      line: 137,\n                                      column: 10,\n                                      index: 3977,\n                                    },\n                                    end: {\n                                      line: 137,\n                                      column: 29,\n                                      index: 3996,\n                                    },\n                                  },\n                                  object: {\n                                    type: 'Identifier',\n                                    start: 3977,\n                                    end: 3982,\n                                    loc: {\n                                      start: {\n                                        line: 137,\n                                        column: 10,\n                                        index: 3977,\n                                      },\n                                      end: {\n                                        line: 137,\n                                        column: 15,\n                                        index: 3982,\n                                      },\n                                      identifierName: 'state',\n                                    },\n                                    name: 'state',\n                                  },\n                                  computed: false,\n                                  property: {\n                                    type: 'Identifier',\n                                    start: 3983,\n                                    end: 3996,\n                                    loc: {\n                                      start: {\n                                        line: 137,\n                                        column: 16,\n                                        index: 3983,\n                                      },\n                                      end: {\n                                        line: 137,\n                                        column: 29,\n                                        index: 3996,\n                                      },\n                                      identifierName: 'handleRequest',\n                                    },\n                                    name: 'handleRequest',\n                                  },\n                                },\n                                arguments: [\n                                  {\n                                    type: 'ObjectExpression',\n                                    start: 3997,\n                                    end: 4023,\n                                    loc: {\n                                      start: {\n                                        line: 137,\n                                        column: 30,\n                                        index: 3997,\n                                      },\n                                      end: {\n                                        line: 137,\n                                        column: 56,\n                                        index: 4023,\n                                      },\n                                    },\n                                    properties: [\n                                      {\n                                        type: 'ObjectProperty',\n                                        start: 3999,\n                                        end: 4016,\n                                        loc: {\n                                          start: {\n                                            line: 137,\n                                            column: 32,\n                                            index: 3999,\n                                          },\n                                          end: {\n                                            line: 137,\n                                            column: 49,\n                                            index: 4016,\n                                          },\n                                        },\n                                        method: false,\n                                        key: {\n                                          type: 'Identifier',\n                                          start: 3999,\n                                          end: 4002,\n                                          loc: {\n                                            start: {\n                                              line: 137,\n                                              column: 32,\n                                              index: 3999,\n                                            },\n                                            end: {\n                                              line: 137,\n                                              column: 35,\n                                              index: 4002,\n                                            },\n                                            identifierName: 'url',\n                                          },\n                                          name: 'url',\n                                        },\n                                        computed: false,\n                                        shorthand: false,\n                                        value: {\n                                          type: 'Identifier',\n                                          start: 4004,\n                                          end: 4016,\n                                          loc: {\n                                            start: {\n                                              line: 137,\n                                              column: 37,\n                                              index: 4004,\n                                            },\n                                            end: {\n                                              line: 137,\n                                              column: 49,\n                                              index: 4016,\n                                            },\n                                            identifierName: 'evaluatedUrl',\n                                          },\n                                          name: 'evaluatedUrl',\n                                        },\n                                      },\n                                      {\n                                        type: 'ObjectProperty',\n                                        start: 4018,\n                                        end: 4021,\n                                        loc: {\n                                          start: {\n                                            line: 137,\n                                            column: 51,\n                                            index: 4018,\n                                          },\n                                          end: {\n                                            line: 137,\n                                            column: 54,\n                                            index: 4021,\n                                          },\n                                        },\n                                        method: false,\n                                        key: {\n                                          type: 'Identifier',\n                                          start: 4018,\n                                          end: 4021,\n                                          loc: {\n                                            start: {\n                                              line: 137,\n                                              column: 51,\n                                              index: 4018,\n                                            },\n                                            end: {\n                                              line: 137,\n                                              column: 54,\n                                              index: 4021,\n                                            },\n                                            identifierName: 'key',\n                                          },\n                                          name: 'key',\n                                        },\n                                        computed: false,\n                                        shorthand: true,\n                                        value: {\n                                          type: 'Identifier',\n                                          start: 4018,\n                                          end: 4021,\n                                          loc: {\n                                            start: {\n                                              line: 137,\n                                              column: 51,\n                                              index: 4018,\n                                            },\n                                            end: {\n                                              line: 137,\n                                              column: 54,\n                                              index: 4021,\n                                            },\n                                            identifierName: 'key',\n                                          },\n                                          name: 'key',\n                                        },\n                                        extra: {\n                                          shorthand: true,\n                                        },\n                                      },\n                                    ],\n                                  },\n                                ],\n                              },\n                            },\n                          ],\n                          directives: [],\n                        },\n                        alternate: null,\n                      },\n                    ],\n                    directives: [],\n                  },\n                },\n              ],\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 4057,\n      end: 4460,\n      loc: {\n        start: {\n          line: 141,\n          column: 4,\n          index: 4057,\n        },\n        end: {\n          line: 157,\n          column: 5,\n          index: 4460,\n        },\n      },\n      method: true,\n      key: {\n        type: 'Identifier',\n        start: 4057,\n        end: 4072,\n        loc: {\n          start: {\n            line: 141,\n            column: 4,\n            index: 4057,\n          },\n          end: {\n            line: 141,\n            column: 19,\n            index: 4072,\n          },\n          identifierName: 'emitStateUpdate',\n        },\n        name: 'emitStateUpdate',\n      },\n      computed: false,\n      kind: 'method',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      body: {\n        type: 'BlockStatement',\n        start: 4075,\n        end: 4460,\n        loc: {\n          start: {\n            line: 141,\n            column: 22,\n            index: 4075,\n          },\n          end: {\n            line: 157,\n            column: 5,\n            index: 4460,\n          },\n        },\n        body: [\n          {\n            type: 'IfStatement',\n            start: 4083,\n            end: 4454,\n            loc: {\n              start: {\n                line: 142,\n                column: 6,\n                index: 4083,\n              },\n              end: {\n                line: 156,\n                column: 7,\n                index: 4454,\n              },\n            },\n            test: {\n              type: 'CallExpression',\n              start: 4087,\n              end: 4098,\n              loc: {\n                start: {\n                  line: 142,\n                  column: 10,\n                  index: 4087,\n                },\n                end: {\n                  line: 142,\n                  column: 21,\n                  index: 4098,\n                },\n              },\n              callee: {\n                type: 'Identifier',\n                start: 4087,\n                end: 4096,\n                loc: {\n                  start: {\n                    line: 142,\n                    column: 10,\n                    index: 4087,\n                  },\n                  end: {\n                    line: 142,\n                    column: 19,\n                    index: 4096,\n                  },\n                  identifierName: 'isEditing',\n                },\n                name: 'isEditing',\n              },\n              arguments: [],\n            },\n            consequent: {\n              type: 'BlockStatement',\n              start: 4100,\n              end: 4454,\n              loc: {\n                start: {\n                  line: 142,\n                  column: 23,\n                  index: 4100,\n                },\n                end: {\n                  line: 156,\n                  column: 7,\n                  index: 4454,\n                },\n              },\n              body: [\n                {\n                  type: 'ExpressionStatement',\n                  start: 4110,\n                  end: 4446,\n                  loc: {\n                    start: {\n                      line: 143,\n                      column: 8,\n                      index: 4110,\n                    },\n                    end: {\n                      line: 155,\n                      column: 10,\n                      index: 4446,\n                    },\n                  },\n                  expression: {\n                    type: 'CallExpression',\n                    start: 4110,\n                    end: 4445,\n                    loc: {\n                      start: {\n                        line: 143,\n                        column: 8,\n                        index: 4110,\n                      },\n                      end: {\n                        line: 155,\n                        column: 9,\n                        index: 4445,\n                      },\n                    },\n                    callee: {\n                      type: 'MemberExpression',\n                      start: 4110,\n                      end: 4130,\n                      loc: {\n                        start: {\n                          line: 143,\n                          column: 8,\n                          index: 4110,\n                        },\n                        end: {\n                          line: 143,\n                          column: 28,\n                          index: 4130,\n                        },\n                      },\n                      object: {\n                        type: 'Identifier',\n                        start: 4110,\n                        end: 4116,\n                        loc: {\n                          start: {\n                            line: 143,\n                            column: 8,\n                            index: 4110,\n                          },\n                          end: {\n                            line: 143,\n                            column: 14,\n                            index: 4116,\n                          },\n                          identifierName: 'window',\n                        },\n                        name: 'window',\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 4117,\n                        end: 4130,\n                        loc: {\n                          start: {\n                            line: 143,\n                            column: 15,\n                            index: 4117,\n                          },\n                          end: {\n                            line: 143,\n                            column: 28,\n                            index: 4130,\n                          },\n                          identifierName: 'dispatchEvent',\n                        },\n                        name: 'dispatchEvent',\n                      },\n                    },\n                    arguments: [\n                      {\n                        type: 'NewExpression',\n                        start: 4142,\n                        end: 4435,\n                        loc: {\n                          start: {\n                            line: 144,\n                            column: 10,\n                            index: 4142,\n                          },\n                          end: {\n                            line: 154,\n                            column: 11,\n                            index: 4435,\n                          },\n                        },\n                        callee: {\n                          type: 'Identifier',\n                          start: 4146,\n                          end: 4157,\n                          loc: {\n                            start: {\n                              line: 144,\n                              column: 14,\n                              index: 4146,\n                            },\n                            end: {\n                              line: 144,\n                              column: 25,\n                              index: 4157,\n                            },\n                            identifierName: 'CustomEvent',\n                          },\n                          name: 'CustomEvent',\n                        },\n                        typeParameters: {\n                          type: 'TSTypeParameterInstantiation',\n                          start: 4157,\n                          end: 4186,\n                          loc: {\n                            start: {\n                              line: 144,\n                              column: 25,\n                              index: 4157,\n                            },\n                            end: {\n                              line: 144,\n                              column: 54,\n                              index: 4186,\n                            },\n                          },\n                          params: [\n                            {\n                              type: 'TSTypeReference',\n                              start: 4158,\n                              end: 4185,\n                              loc: {\n                                start: {\n                                  line: 144,\n                                  column: 26,\n                                  index: 4158,\n                                },\n                                end: {\n                                  line: 144,\n                                  column: 53,\n                                  index: 4185,\n                                },\n                              },\n                              typeName: {\n                                type: 'Identifier',\n                                start: 4158,\n                                end: 4185,\n                                loc: {\n                                  start: {\n                                    line: 144,\n                                    column: 26,\n                                    index: 4158,\n                                  },\n                                  end: {\n                                    line: 144,\n                                    column: 53,\n                                    index: 4185,\n                                  },\n                                  identifierName: 'BuilderComponentStateChange',\n                                },\n                                name: 'BuilderComponentStateChange',\n                              },\n                            },\n                          ],\n                        },\n                        arguments: [\n                          {\n                            type: 'StringLiteral',\n                            start: 4200,\n                            end: 4231,\n                            loc: {\n                              start: {\n                                line: 145,\n                                column: 12,\n                                index: 4200,\n                              },\n                              end: {\n                                line: 145,\n                                column: 43,\n                                index: 4231,\n                              },\n                            },\n                            extra: {\n                              rawValue: 'builder:component:stateChange',\n                              raw: \"'builder:component:stateChange'\",\n                            },\n                            value: 'builder:component:stateChange',\n                          },\n                          {\n                            type: 'ObjectExpression',\n                            start: 4245,\n                            end: 4423,\n                            loc: {\n                              start: {\n                                line: 146,\n                                column: 12,\n                                index: 4245,\n                              },\n                              end: {\n                                line: 153,\n                                column: 13,\n                                index: 4423,\n                              },\n                            },\n                            properties: [\n                              {\n                                type: 'ObjectProperty',\n                                start: 4261,\n                                end: 4408,\n                                loc: {\n                                  start: {\n                                    line: 147,\n                                    column: 14,\n                                    index: 4261,\n                                  },\n                                  end: {\n                                    line: 152,\n                                    column: 15,\n                                    index: 4408,\n                                  },\n                                },\n                                method: false,\n                                key: {\n                                  type: 'Identifier',\n                                  start: 4261,\n                                  end: 4267,\n                                  loc: {\n                                    start: {\n                                      line: 147,\n                                      column: 14,\n                                      index: 4261,\n                                    },\n                                    end: {\n                                      line: 147,\n                                      column: 20,\n                                      index: 4267,\n                                    },\n                                    identifierName: 'detail',\n                                  },\n                                  name: 'detail',\n                                },\n                                computed: false,\n                                shorthand: false,\n                                value: {\n                                  type: 'ObjectExpression',\n                                  start: 4269,\n                                  end: 4408,\n                                  loc: {\n                                    start: {\n                                      line: 147,\n                                      column: 22,\n                                      index: 4269,\n                                    },\n                                    end: {\n                                      line: 152,\n                                      column: 15,\n                                      index: 4408,\n                                    },\n                                  },\n                                  properties: [\n                                    {\n                                      type: 'ObjectProperty',\n                                      start: 4287,\n                                      end: 4312,\n                                      loc: {\n                                        start: {\n                                          line: 148,\n                                          column: 16,\n                                          index: 4287,\n                                        },\n                                        end: {\n                                          line: 148,\n                                          column: 41,\n                                          index: 4312,\n                                        },\n                                      },\n                                      method: false,\n                                      key: {\n                                        type: 'Identifier',\n                                        start: 4287,\n                                        end: 4292,\n                                        loc: {\n                                          start: {\n                                            line: 148,\n                                            column: 16,\n                                            index: 4287,\n                                          },\n                                          end: {\n                                            line: 148,\n                                            column: 21,\n                                            index: 4292,\n                                          },\n                                          identifierName: 'state',\n                                        },\n                                        name: 'state',\n                                      },\n                                      computed: false,\n                                      shorthand: false,\n                                      value: {\n                                        type: 'MemberExpression',\n                                        start: 4294,\n                                        end: 4312,\n                                        loc: {\n                                          start: {\n                                            line: 148,\n                                            column: 23,\n                                            index: 4294,\n                                          },\n                                          end: {\n                                            line: 148,\n                                            column: 41,\n                                            index: 4312,\n                                          },\n                                        },\n                                        object: {\n                                          type: 'Identifier',\n                                          start: 4294,\n                                          end: 4299,\n                                          loc: {\n                                            start: {\n                                              line: 148,\n                                              column: 23,\n                                              index: 4294,\n                                            },\n                                            end: {\n                                              line: 148,\n                                              column: 28,\n                                              index: 4299,\n                                            },\n                                            identifierName: 'state',\n                                          },\n                                          name: 'state',\n                                        },\n                                        computed: false,\n                                        property: {\n                                          type: 'Identifier',\n                                          start: 4300,\n                                          end: 4312,\n                                          loc: {\n                                            start: {\n                                              line: 148,\n                                              column: 29,\n                                              index: 4300,\n                                            },\n                                            end: {\n                                              line: 148,\n                                              column: 41,\n                                              index: 4312,\n                                            },\n                                            identifierName: 'contentState',\n                                          },\n                                          name: 'contentState',\n                                        },\n                                      },\n                                    },\n                                    {\n                                      type: 'ObjectProperty',\n                                      start: 4330,\n                                      end: 4391,\n                                      loc: {\n                                        start: {\n                                          line: 149,\n                                          column: 16,\n                                          index: 4330,\n                                        },\n                                        end: {\n                                          line: 151,\n                                          column: 17,\n                                          index: 4391,\n                                        },\n                                      },\n                                      method: false,\n                                      key: {\n                                        type: 'Identifier',\n                                        start: 4330,\n                                        end: 4333,\n                                        loc: {\n                                          start: {\n                                            line: 149,\n                                            column: 16,\n                                            index: 4330,\n                                          },\n                                          end: {\n                                            line: 149,\n                                            column: 19,\n                                            index: 4333,\n                                          },\n                                          identifierName: 'ref',\n                                        },\n                                        name: 'ref',\n                                      },\n                                      computed: false,\n                                      shorthand: false,\n                                      value: {\n                                        type: 'ObjectExpression',\n                                        start: 4335,\n                                        end: 4391,\n                                        loc: {\n                                          start: {\n                                            line: 149,\n                                            column: 21,\n                                            index: 4335,\n                                          },\n                                          end: {\n                                            line: 151,\n                                            column: 17,\n                                            index: 4391,\n                                          },\n                                        },\n                                        properties: [\n                                          {\n                                            type: 'ObjectProperty',\n                                            start: 4355,\n                                            end: 4372,\n                                            loc: {\n                                              start: {\n                                                line: 150,\n                                                column: 18,\n                                                index: 4355,\n                                              },\n                                              end: {\n                                                line: 150,\n                                                column: 35,\n                                                index: 4372,\n                                              },\n                                            },\n                                            method: false,\n                                            key: {\n                                              type: 'Identifier',\n                                              start: 4355,\n                                              end: 4359,\n                                              loc: {\n                                                start: {\n                                                  line: 150,\n                                                  column: 18,\n                                                  index: 4355,\n                                                },\n                                                end: {\n                                                  line: 150,\n                                                  column: 22,\n                                                  index: 4359,\n                                                },\n                                                identifierName: 'name',\n                                              },\n                                              name: 'name',\n                                            },\n                                            computed: false,\n                                            shorthand: false,\n                                            value: {\n                                              type: 'MemberExpression',\n                                              start: 4361,\n                                              end: 4372,\n                                              loc: {\n                                                start: {\n                                                  line: 150,\n                                                  column: 24,\n                                                  index: 4361,\n                                                },\n                                                end: {\n                                                  line: 150,\n                                                  column: 35,\n                                                  index: 4372,\n                                                },\n                                              },\n                                              object: {\n                                                type: 'Identifier',\n                                                start: 4361,\n                                                end: 4366,\n                                                loc: {\n                                                  start: {\n                                                    line: 150,\n                                                    column: 24,\n                                                    index: 4361,\n                                                  },\n                                                  end: {\n                                                    line: 150,\n                                                    column: 29,\n                                                    index: 4366,\n                                                  },\n                                                  identifierName: 'props',\n                                                },\n                                                name: 'props',\n                                              },\n                                              computed: false,\n                                              property: {\n                                                type: 'Identifier',\n                                                start: 4367,\n                                                end: 4372,\n                                                loc: {\n                                                  start: {\n                                                    line: 150,\n                                                    column: 30,\n                                                    index: 4367,\n                                                  },\n                                                  end: {\n                                                    line: 150,\n                                                    column: 35,\n                                                    index: 4372,\n                                                  },\n                                                  identifierName: 'model',\n                                                },\n                                                name: 'model',\n                                              },\n                                            },\n                                          },\n                                        ],\n                                        extra: {\n                                          trailingComma: 4372,\n                                        },\n                                      },\n                                    },\n                                  ],\n                                  extra: {\n                                    trailingComma: 4391,\n                                  },\n                                },\n                              },\n                            ],\n                            extra: {\n                              trailingComma: 4408,\n                            },\n                          },\n                        ],\n                      },\n                    ],\n                  },\n                },\n              ],\n              directives: [],\n            },\n            alternate: null,\n          },\n        ],\n        directives: [],\n      },\n    },\n    {\n      type: 'ObjectMethod',\n      start: 4466,\n      end: 4682,\n      loc: {\n        start: {\n          line: 158,\n          column: 4,\n          index: 4466,\n        },\n        end: {\n          line: 164,\n          column: 5,\n          index: 4682,\n        },\n      },\n      method: false,\n      key: {\n        type: 'Identifier',\n        start: 4470,\n        end: 4495,\n        loc: {\n          start: {\n            line: 158,\n            column: 8,\n            index: 4470,\n          },\n          end: {\n            line: 158,\n            column: 33,\n            index: 4495,\n          },\n          identifierName: 'shouldRenderContentStyles',\n        },\n        name: 'shouldRenderContentStyles',\n      },\n      computed: false,\n      kind: 'get',\n      id: null,\n      generator: false,\n      async: false,\n      params: [],\n      returnType: {\n        type: 'TSTypeAnnotation',\n        start: 4497,\n        end: 4506,\n        loc: {\n          start: {\n            line: 158,\n            column: 35,\n            index: 4497,\n          },\n          end: {\n            line: 158,\n            column: 44,\n            index: 4506,\n          },\n        },\n        typeAnnotation: {\n          type: 'TSBooleanKeyword',\n          start: 4499,\n          end: 4506,\n          loc: {\n            start: {\n              line: 158,\n              column: 37,\n              index: 4499,\n            },\n            end: {\n              line: 158,\n              column: 44,\n              index: 4506,\n            },\n          },\n        },\n      },\n      body: {\n        type: 'BlockStatement',\n        start: 4507,\n        end: 4682,\n        loc: {\n          start: {\n            line: 158,\n            column: 45,\n            index: 4507,\n          },\n          end: {\n            line: 164,\n            column: 5,\n            index: 4682,\n          },\n        },\n        body: [\n          {\n            type: 'ReturnStatement',\n            start: 4515,\n            end: 4676,\n            loc: {\n              start: {\n                line: 159,\n                column: 6,\n                index: 4515,\n              },\n              end: {\n                line: 163,\n                column: 8,\n                index: 4676,\n              },\n            },\n            argument: {\n              type: 'CallExpression',\n              start: 4522,\n              end: 4675,\n              loc: {\n                start: {\n                  line: 159,\n                  column: 13,\n                  index: 4522,\n                },\n                end: {\n                  line: 163,\n                  column: 7,\n                  index: 4675,\n                },\n              },\n              callee: {\n                type: 'Identifier',\n                start: 4522,\n                end: 4529,\n                loc: {\n                  start: {\n                    line: 159,\n                    column: 13,\n                    index: 4522,\n                  },\n                  end: {\n                    line: 159,\n                    column: 20,\n                    index: 4529,\n                  },\n                  identifierName: 'Boolean',\n                },\n                name: 'Boolean',\n              },\n              arguments: [\n                {\n                  type: 'LogicalExpression',\n                  start: 4539,\n                  end: 4667,\n                  loc: {\n                    start: {\n                      line: 160,\n                      column: 8,\n                      index: 4539,\n                    },\n                    end: {\n                      line: 162,\n                      column: 34,\n                      index: 4667,\n                    },\n                  },\n                  left: {\n                    type: 'LogicalExpression',\n                    start: 4540,\n                    end: 4628,\n                    loc: {\n                      start: {\n                        line: 160,\n                        column: 9,\n                        index: 4540,\n                      },\n                      end: {\n                        line: 161,\n                        column: 53,\n                        index: 4628,\n                      },\n                    },\n                    left: {\n                      type: 'OptionalMemberExpression',\n                      start: 4540,\n                      end: 4571,\n                      loc: {\n                        start: {\n                          line: 160,\n                          column: 9,\n                          index: 4540,\n                        },\n                        end: {\n                          line: 160,\n                          column: 40,\n                          index: 4571,\n                        },\n                      },\n                      object: {\n                        type: 'OptionalMemberExpression',\n                        start: 4540,\n                        end: 4562,\n                        loc: {\n                          start: {\n                            line: 160,\n                            column: 9,\n                            index: 4540,\n                          },\n                          end: {\n                            line: 160,\n                            column: 31,\n                            index: 4562,\n                          },\n                        },\n                        object: {\n                          type: 'MemberExpression',\n                          start: 4540,\n                          end: 4556,\n                          loc: {\n                            start: {\n                              line: 160,\n                              column: 9,\n                              index: 4540,\n                            },\n                            end: {\n                              line: 160,\n                              column: 25,\n                              index: 4556,\n                            },\n                          },\n                          object: {\n                            type: 'Identifier',\n                            start: 4540,\n                            end: 4545,\n                            loc: {\n                              start: {\n                                line: 160,\n                                column: 9,\n                                index: 4540,\n                              },\n                              end: {\n                                line: 160,\n                                column: 14,\n                                index: 4545,\n                              },\n                              identifierName: 'state',\n                            },\n                            name: 'state',\n                          },\n                          computed: false,\n                          property: {\n                            type: 'Identifier',\n                            start: 4546,\n                            end: 4556,\n                            loc: {\n                              start: {\n                                line: 160,\n                                column: 15,\n                                index: 4546,\n                              },\n                              end: {\n                                line: 160,\n                                column: 25,\n                                index: 4556,\n                              },\n                              identifierName: 'useContent',\n                            },\n                            name: 'useContent',\n                          },\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 4558,\n                          end: 4562,\n                          loc: {\n                            start: {\n                              line: 160,\n                              column: 27,\n                              index: 4558,\n                            },\n                            end: {\n                              line: 160,\n                              column: 31,\n                              index: 4562,\n                            },\n                            identifierName: 'data',\n                          },\n                          name: 'data',\n                        },\n                        optional: true,\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 4564,\n                        end: 4571,\n                        loc: {\n                          start: {\n                            line: 160,\n                            column: 33,\n                            index: 4564,\n                          },\n                          end: {\n                            line: 160,\n                            column: 40,\n                            index: 4571,\n                          },\n                          identifierName: 'cssCode',\n                        },\n                        name: 'cssCode',\n                      },\n                      optional: true,\n                    },\n                    operator: '||',\n                    right: {\n                      type: 'OptionalMemberExpression',\n                      start: 4585,\n                      end: 4628,\n                      loc: {\n                        start: {\n                          line: 161,\n                          column: 10,\n                          index: 4585,\n                        },\n                        end: {\n                          line: 161,\n                          column: 53,\n                          index: 4628,\n                        },\n                      },\n                      object: {\n                        type: 'OptionalMemberExpression',\n                        start: 4585,\n                        end: 4620,\n                        loc: {\n                          start: {\n                            line: 161,\n                            column: 10,\n                            index: 4585,\n                          },\n                          end: {\n                            line: 161,\n                            column: 45,\n                            index: 4620,\n                          },\n                        },\n                        object: {\n                          type: 'OptionalMemberExpression',\n                          start: 4585,\n                          end: 4607,\n                          loc: {\n                            start: {\n                              line: 161,\n                              column: 10,\n                              index: 4585,\n                            },\n                            end: {\n                              line: 161,\n                              column: 32,\n                              index: 4607,\n                            },\n                          },\n                          object: {\n                            type: 'MemberExpression',\n                            start: 4585,\n                            end: 4601,\n                            loc: {\n                              start: {\n                                line: 161,\n                                column: 10,\n                                index: 4585,\n                              },\n                              end: {\n                                line: 161,\n                                column: 26,\n                                index: 4601,\n                              },\n                            },\n                            object: {\n                              type: 'Identifier',\n                              start: 4585,\n                              end: 4590,\n                              loc: {\n                                start: {\n                                  line: 161,\n                                  column: 10,\n                                  index: 4585,\n                                },\n                                end: {\n                                  line: 161,\n                                  column: 15,\n                                  index: 4590,\n                                },\n                                identifierName: 'state',\n                              },\n                              name: 'state',\n                            },\n                            computed: false,\n                            property: {\n                              type: 'Identifier',\n                              start: 4591,\n                              end: 4601,\n                              loc: {\n                                start: {\n                                  line: 161,\n                                  column: 16,\n                                  index: 4591,\n                                },\n                                end: {\n                                  line: 161,\n                                  column: 26,\n                                  index: 4601,\n                                },\n                                identifierName: 'useContent',\n                              },\n                              name: 'useContent',\n                            },\n                          },\n                          computed: false,\n                          property: {\n                            type: 'Identifier',\n                            start: 4603,\n                            end: 4607,\n                            loc: {\n                              start: {\n                                line: 161,\n                                column: 28,\n                                index: 4603,\n                              },\n                              end: {\n                                line: 161,\n                                column: 32,\n                                index: 4607,\n                              },\n                              identifierName: 'data',\n                            },\n                            name: 'data',\n                          },\n                          optional: true,\n                        },\n                        computed: false,\n                        property: {\n                          type: 'Identifier',\n                          start: 4609,\n                          end: 4620,\n                          loc: {\n                            start: {\n                              line: 161,\n                              column: 34,\n                              index: 4609,\n                            },\n                            end: {\n                              line: 161,\n                              column: 45,\n                              index: 4620,\n                            },\n                            identifierName: 'customFonts',\n                          },\n                          name: 'customFonts',\n                        },\n                        optional: true,\n                      },\n                      computed: false,\n                      property: {\n                        type: 'Identifier',\n                        start: 4622,\n                        end: 4628,\n                        loc: {\n                          start: {\n                            line: 161,\n                            column: 47,\n                            index: 4622,\n                          },\n                          end: {\n                            line: 161,\n                            column: 53,\n                            index: 4628,\n                          },\n                          identifierName: 'length',\n                        },\n                        name: 'length',\n                      },\n                      optional: true,\n                    },\n                    extra: {\n                      parenthesized: true,\n                      parenStart: 4539,\n                    },\n                  },\n                  operator: '&&',\n                  right: {\n                    type: 'BinaryExpression',\n                    start: 4643,\n                    end: 4667,\n                    loc: {\n                      start: {\n                        line: 162,\n                        column: 10,\n                        index: 4643,\n                      },\n                      end: {\n                        line: 162,\n                        column: 34,\n                        index: 4667,\n                      },\n                    },\n                    left: {\n                      type: 'Identifier',\n                      start: 4643,\n                      end: 4649,\n                      loc: {\n                        start: {\n                          line: 162,\n                          column: 10,\n                          index: 4643,\n                        },\n                        end: {\n                          line: 162,\n                          column: 16,\n                          index: 4649,\n                        },\n                        identifierName: 'TARGET',\n                      },\n                      name: 'TARGET',\n                    },\n                    operator: '!==',\n                    right: {\n                      type: 'StringLiteral',\n                      start: 4654,\n                      end: 4667,\n                      loc: {\n                        start: {\n                          line: 162,\n                          column: 21,\n                          index: 4654,\n                        },\n                        end: {\n                          line: 162,\n                          column: 34,\n                          index: 4667,\n                        },\n                      },\n                      extra: {\n                        rawValue: 'reactNative',\n                        raw: \"'reactNative'\",\n                      },\n                      value: 'reactNative',\n                    },\n                  },\n                },\n              ],\n            },\n          },\n        ],\n        directives: [],\n      },\n    },\n  ],\n  extra: {\n    trailingComma: 4682,\n  },\n} as any as babel.types.ObjectExpression;\n"
  },
  {
    "path": "packages/core/src/__tests__/data/layer-name.raw.tsx",
    "content": "export default function MyLayerNameComponent() {\n  return (\n    <section>\n      <div\n        $name=\"🌟layer-name\"\n        css={{\n          padding: '10px',\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </section>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/figma/data.ts",
    "content": "import { FigmaCodeConnect, FigmaProp } from '../figma';\n\nconst buttonProps: Record<string, FigmaProp> = {\n  iconSmall: { type: 'instance', key: '📍 Icon Small' },\n  iconMedium: { type: 'instance', key: '📍 Icon Medium' },\n  label: { type: 'string', key: '✏️ Label' },\n  icon: {\n    type: 'boolean',\n    key: '👁️ Icon',\n    value: {\n      false: false,\n      true: 'placeholder',\n    },\n  },\n  interactiveState: {\n    type: 'enum',\n    key: 'Interactive State',\n    value: {\n      '(Def) Enabled': false,\n      Hovered: false,\n      Pressed: false,\n      Focused: false,\n      Disabled: 'true',\n    },\n  },\n  size: {\n    type: 'enum',\n    key: 'Size',\n    value: {\n      '(Def) Medium': false,\n      Small: 'small',\n    },\n  },\n  width: {\n    type: 'enum',\n    key: 'Width',\n    value: {\n      '(Def) Auto Width': false,\n      'Full Width': 'full',\n    },\n  },\n};\n\nexport const outline: FigmaCodeConnect = {\n  name: 'def-button-beta-outlined',\n  url: 'https://www.figma.com/xxx',\n  props: buttonProps,\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/figma/figma.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nimport { outline } from './data';\n\nuseMetadata({\n  figma: outline,\n});\n\nexport default function FigmaButton(props: any) {\n  return (\n    <button\n      data-icon={props.icon}\n      data-disabled={props.interactiveState}\n      data-width={props.width}\n      data-size={props.size}\n    >\n      {props.label}\n    </button>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/figma.ts",
    "content": "export type FigmaProp = {\n  type: 'instance' | 'string' | 'boolean' | 'enum' | 'children' | 'textContent';\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  value?: Record<string, any>;\n  key: string;\n};\n\nexport type FigmaCodeConnect = {\n  name: string;\n  url: string;\n  props: Record<string, FigmaProp>;\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/meta.ts",
    "content": "export const xyz = { spreadStringValue: 'f' };\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/sub/complex-meta.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\nimport { abc } from './meta-sub';\n\nuseMetadata({\n  x: 'y',\n  asdf: abc,\n});\n\nexport default function ComplexMetaRaw() {\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/sub/meta-model.ts",
    "content": "export type MetaModel = {\n  stringValue?: string;\n  spreadStringValue?: string;\n  booleanValue?: boolean;\n  numberValue?: number;\n  innerObject?: MetaModel;\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/data/meta/sub/meta-sub.ts",
    "content": "import { xyz } from '../meta';\nimport { MetaModel } from './meta-model';\n\nexport const abc: MetaModel = {\n  stringValue: 'd',\n  booleanValue: true,\n  numberValue: 1,\n  innerObject: { stringValue: 'inner', numberValue: 2, booleanValue: false },\n  ...xyz,\n};\n\nconst aaa: MetaModel = { stringValue: 'i', ...xyz };\n\nexport default aaa;\n"
  },
  {
    "path": "packages/core/src/__tests__/data/nested-styles.raw.tsx",
    "content": "export default function NestedStyles() {\n  return (\n    <div\n      css={{\n        display: 'flex',\n        '--bar': 'red',\n        color: 'var(--bar)',\n        '@media (max-width: env(--mobile))': {\n          display: 'block',\n        },\n        '&:hover': {\n          display: 'flex',\n        },\n        ':active': {\n          display: 'inline',\n        },\n        '.nested-selector': {\n          display: 'grid',\n        },\n        '.nested-selector:hover': {\n          display: 'block',\n        },\n        '&.nested-selector:active': {\n          display: 'inline-block',\n        },\n      }}\n    >\n      Hello world\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/normalize-layer-names.raw.tsx",
    "content": "export default function MyNormalizedLayerNamesComponent(props: { id: string }) {\n  return (\n    <section>\n      <div $name=\"🌟layer-name\">Emoji</div>\n      <div $name=\"---\">Dashes</div>\n      <div $name=\"CamelCase\">CamelCase</div>\n      <div $name=\"123my@Class-Name!\">Special chars</div>\n      <div $name=\"--my--@custom--name--\">Special chars with dashes</div>\n      <div $name=\"0\" css={{ margin: '10px' }}>\n        Single Number\n      </div>\n      <div $name=\"123\" css={{ padding: '10px' }}>\n        Multiple Numbers\n      </div>\n      <div $name=\"name123\" css={{ border: '1px solid' }}>\n        Chars with numbers at end\n      </div>\n      <div $name=\"456name\" css={{ color: 'red' }}>\n        Chars with numbers at start\n      </div>\n      <div $name=\"name-789\" css={{ background: 'blue' }}>\n        Numnbers separated by dash\n      </div>\n      <div $name=\"🚀\">Emoji</div>\n      <div css={{ background: 'blue' }} data-name=\"1\">\n        Number\n      </div>\n    </section>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/props/basic-props-destructure.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default function MyBasicComponent({ children: c, type }: Props) {\n  const state = useStore({\n    name: 'Decadef20',\n  });\n\n  return (\n    <div>\n      {c} {type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/props/basic-props.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\ntype Props = {\n  children: any;\n  type: string;\n};\n\nexport default function MyBasicComponent(props: Props) {\n  const state = useStore({\n    name: 'Decadef20',\n  });\n\n  return (\n    <div>\n      {props.children} {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/props/classname-props.raw.tsx",
    "content": "import { useMetadata } from '@builder.io/mitosis';\n\ntype Props = {\n  children: any;\n  className: string;\n  type: string;\n};\n\nuseMetadata({\n  stencil: {\n    propOptions: {\n      className: {\n        attribute: 'classname',\n        mutable: false,\n        reflect: false,\n      },\n    },\n  },\n});\n\nexport default function MyBasicComponent(props: Props) {\n  return (\n    <div class={props.className}>\n      {props.children} {props.type}\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/props/event-props.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport { EventProps, EventState } from './event-props.type';\n\nexport default function EventPropsComponent(props: EventProps) {\n  const state = useStore<EventState>({\n    handleClick: () => {\n      if (props.onGetVoid) {\n        props.onGetVoid();\n      }\n      if (props.onEnter) {\n        console.log(props.onEnter());\n      }\n      if (props.onPass) {\n        props.onPass('test');\n      }\n    },\n  });\n\n  return <button onClick={() => state.handleClick()}>Test</button>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/props/event-props.type.ts",
    "content": "export type EventProps = {\n  onGetVoid: () => void;\n  onEnter: () => string;\n  onPass: (event: any) => void;\n};\n\nexport type EventState = {\n  handleClick: () => void;\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/native-styles.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyBasicComponent() {\n  const [classState, setClassState] = useState('testClassName');\n\n  return (\n    <div>\n      <div\n        css={{\n          background: '#971f1f',\n          padding: '20px 20px 20px 20px',\n          borderRadius: '10px',\n          borderWidth: '2px',\n          borderColor: 'blue',\n          borderStyle: 'solid',\n          fontSize: '16px',\n          fontWeight: 'bold',\n          fontFamily: 'Arial',\n        }}\n      >\n        Hey world\n      </div>\n\n      <div\n        css={{\n          margin: '10px 15px',\n          display: 'flex',\n          flexDirection: 'column',\n          alignItems: 'center',\n          justifyContent: 'space-between',\n          width: '100%',\n          height: '200px',\n          color: 'green',\n          fontSize: '20px',\n        }}\n      >\n        Flex container\n      </div>\n\n      <div\n        css={{\n          backgroundColor: 'rgba(255, 0, 0, 0.5)',\n          opacity: '0.8',\n          transform: 'scale(1.1)',\n          boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.1)',\n          textShadow: '1px 1px 2px black',\n        }}\n      >\n        Testing unsupported properties\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/onclick-to-pressable.raw.tsx",
    "content": "export default function MyComponent(props) {\n  return (\n    <div>\n      <button onClick={(e) => console.log('event')}>Hello</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/text-input.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [name, setName] = useState('Steve');\n\n  return (\n    <div>\n      <input\n        css={{\n          color: 'red',\n        }}\n        value={name}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/twrnc-state-complex-styled-component.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport { clsx } from 'clsx';\n\ntype ButtonType = 'primary' | 'secondary';\n\ninterface ButtonProps {\n  type: ButtonType;\n  onClick: () => void;\n  children: any;\n}\n\nexport default function Button(props: ButtonProps) {\n  const state = useStore({\n    get buttonClasses() {\n      return clsx('px-4 py-2 rounded transition-colors', {\n        'bg-blue-500 hover:bg-blue-600 text-white': props.type === 'primary',\n        'bg-gray-300 hover:bg-gray-400 text-black': props.type === 'secondary',\n      });\n    },\n  });\n\n  return (\n    <button class={state.buttonClasses} onClick={props.onClick}>\n      {props.children}\n    </button>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/twrnc-state-styled-component.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyBasicComponent() {\n  const [classState, setClassState] = useState('testClassName');\n\n  return <div class={classState}>Hello! I can run in React, Vue, Solid, or Liquid!</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/react-native/twrnc-styled-component.raw.tsx",
    "content": "export default function MyComponent(props) {\n  return (\n    <div class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded\">\n      <button onClick={(e) => console.log('event')}>Hello</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/advanced-ref.raw.tsx",
    "content": "import { onUpdate, useRef, useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement>(null);\n\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  function onBlur() {\n    // Maintain focus\n    inputRef.focus();\n  }\n\n  function lowerCaseName() {\n    return state.name.toLowerCase();\n  }\n\n  onUpdate(() => {\n    console.log('Received an update');\n  }, [inputRef, inputNoArgRef]);\n\n  return (\n    <div>\n      {props.showInput && (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: 'red',\n            }}\n            value={state.name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n\n          <label ref={inputNoArgRef} for=\"cars\">\n            Choose a car:\n          </label>\n\n          <select name=\"cars\" id=\"cars\">\n            <option value=\"supra\">GR Supra</option>\n            <option value=\"86\">GR 86</option>\n          </select>\n        </>\n      )}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-forwardRef-metadata.raw.tsx",
    "content": "import { useMetadata, useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nuseMetadata({\n  forwardRef: 'inputRef',\n});\nexport default function MyBasicForwardRefComponent(props: Props) {\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  return (\n    <div>\n      <input\n        ref={props.inputRef}\n        css={{\n          color: 'red',\n        }}\n        value={state.name}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-forwardRef.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n  inputRef: HTMLInputElement;\n}\n\nexport default function MyBasicForwardRefComponent(props: Props) {\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  return (\n    <div>\n      <input\n        ref={props.inputRef}\n        css={{\n          color: 'red',\n        }}\n        value={state.name}\n        onChange={(event) => (state.name = event.target.value)}\n      />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-ref-assignment.raw.tsx",
    "content": "import { useRef } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefAssignmentComponent(props: Props) {\n  let holdValueRef = useRef('Patrick');\n\n  function handlerClick(event: Event) {\n    event.preventDefault();\n    console.log('current value', holdValueRef);\n    holdValueRef = holdValueRef + 'JS';\n  }\n\n  return (\n    <div>\n      <button onClick={async (evt) => await handlerClick(evt)}>Click</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-ref-attribute-passing-custom-ref.raw.tsx",
    "content": "import { useMetadata, useRef } from '@builder.io/mitosis';\n\nuseMetadata({\n  attributePassing: {\n    enabled: true,\n    customRef: 'buttonRef',\n  },\n});\n\nexport default function BasicRefAttributePassingCustomRefComponent() {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  return (\n    <div>\n      <button ref={buttonRef}>Attribute Passing</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-ref-attribute-passing.raw.tsx",
    "content": "import { onMount, useMetadata, useRef } from '@builder.io/mitosis';\n\nuseMetadata({\n  attributePassing: {\n    enabled: true,\n  },\n});\n\nexport default function BasicRefAttributePassingComponent() {\n  const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n  onMount(() => {\n    console.log('onMount');\n  });\n\n  return <button ref={buttonRef}>Attribute Passing</button>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-ref-usePrevious.raw.tsx",
    "content": "import { onUpdate, useRef, useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport function usePrevious<T>(value: T) {\n  // The ref object is a generic container whose current property is mutable ...\n  // ... and can hold any value, similar to an instance property on a class\n  let ref = useRef<T>(null);\n  // Store current value in ref\n  onUpdate(() => {\n    ref = value;\n  }, [value]); // Only re-run if value changes\n  // Return previous value (happens before update in useEffect above)\n  return ref;\n}\n\nexport default function MyPreviousComponent(props: Props) {\n  const state = useStore({\n    count: 0,\n  });\n\n  let prevCount = useRef(state.count);\n\n  onUpdate(() => {\n    prevCount = state.count;\n  }, [state.count]); //\n  // Get the previous value (was passed into hook on last render)\n  // const prevCount = usePrevious(state.count);\n  // Display both current and previous count value\n  return (\n    <div>\n      <h1>\n        Now: {state.count}, before: {prevCount}\n      </h1>\n      <button onClick={() => (state.count += 1)}>Increment</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/ref/basic-ref.raw.tsx",
    "content": "import { useRef, useStore } from '@builder.io/mitosis';\n\nexport interface Props {\n  showInput: boolean;\n}\n\nexport default function MyBasicRefComponent(props: Props) {\n  const inputRef = useRef<HTMLInputElement | null>(null);\n  const inputNoArgRef = useRef<HTMLLabelElement | null>(null);\n\n  const state = useStore({\n    name: 'PatrickJS',\n  });\n\n  function onBlur() {\n    // Maintain focus\n    inputRef?.focus();\n  }\n\n  function lowerCaseName() {\n    return state.name.toLowerCase();\n  }\n\n  return (\n    <div>\n      {props.showInput && (\n        <>\n          <input\n            ref={inputRef}\n            css={{\n              color: 'red',\n            }}\n            value={state.name}\n            onBlur={(event) => onBlur()}\n            onChange={(event) => (state.name = event.target.value)}\n          />\n\n          <label ref={inputNoArgRef} for=\"cars\">\n            Choose a car:\n          </label>\n\n          <select name=\"cars\" id=\"cars\">\n            <option value=\"supra\">GR Supra</option>\n            <option value=\"86\">GR 86</option>\n          </select>\n        </>\n      )}\n      Hello\n      {lowerCaseName()}! I can run in React, Qwik, Vue, Solid, or Web Component!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/render-content.raw.tsx",
    "content": "import { onMount, onUpdate, setContext } from '@builder.io/mitosis';\nimport BuilderContext from '@dummy/context.lite';\nimport {\n  dispatchNewContentToVisualEditor,\n  sendComponentsToVisualEditor,\n  trackClick,\n} from '@dummy/injection-js';\nimport RenderBlocks from '@dummy/RenderBlocks.lite.tsx';\n\ntype Props = {\n  customComponents: string[];\n  content: { blocks: any[]; id: string };\n};\n\nexport default function RenderContent(props: Props) {\n  onMount(() => {\n    sendComponentsToVisualEditor(props.customComponents);\n  });\n\n  onUpdate(() => {\n    dispatchNewContentToVisualEditor(props.content);\n  }, [props.content]);\n\n  setContext(BuilderContext, {\n    get content() {\n      return 3;\n    },\n    get registeredComponents() {\n      return 4;\n    },\n  });\n\n  return (\n    <div\n      css={{ display: 'flex', flexDirection: 'columns' }}\n      onClick={() => trackClick(props.content.id)}\n    >\n      <RenderBlocks blocks={props.content.blocks} />\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/show/nested-show.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\ninterface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\nexport default function NestedShow(props: Props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <Show when={!props.conditionB} else={<div>else-condition-B</div>}>\n        <div>if condition A and condition B</div>\n      </Show>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/show/show-expressions.raw.tsx",
    "content": "interface Props {\n  conditionA: boolean;\n  conditionB: boolean;\n}\n\nexport default function ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      {props.conditionA ? 'Content0' : 'ContentA'}\n\n      {props.conditionA ? 'ContentA' : null}\n      {props.conditionA ? null : 'ContentA'}\n\n      {props.conditionA ? 'ContentB' : undefined}\n      {props.conditionA ? undefined : 'ContentB'}\n\n      {props.conditionA ? 'ContentC' : true}\n      {props.conditionA ? true : 'ContentC'}\n\n      {props.conditionA ? 'ContentD' : false}\n      {props.conditionA ? false : 'ContentD'}\n\n      {props.conditionA ? 'ContentE' : 'hello'}\n      {props.conditionA ? 'hello' : 'ContentE'}\n\n      {props.conditionA ? 'ContentF' : 123}\n      {props.conditionA ? 123 : 'ContentF'}\n\n      {props.conditionA === 'Default' ? '4mb' : props.conditionB === 'Complete' ? '20mb' : '9mb'}\n      {props.conditionA === 'Default' ? (props.conditionB === 'Complete' ? '20mb' : '9mb') : '4mb'}\n\n      {props.conditionA === 'Default' ? (\n        props.conditionB === 'Complete' ? (\n          <div>complete</div>\n        ) : (\n          '9mb'\n        )\n      ) : props.conditionC === 'Complete' ? (\n        'dff'\n      ) : (\n        <div>complete else</div>\n      )}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/show/show-with-for.raw.tsx",
    "content": "import { For, Show } from '@builder.io/mitosis';\n\ninterface Props {\n  conditionA: boolean;\n  items: string[];\n}\nexport default function NestedShow(props: Props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      <For each={props.items}>{(item, idx) => <div key={idx}>{item}</div>}</For>\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/show/show-with-other-values.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowWithOtherValues(props: Props) {\n  return (\n    <div>\n      <Show when={props.conditionA} else={null}>\n        ContentA\n      </Show>\n      <Show when={props.conditionA} else={undefined}>\n        ContentB\n      </Show>\n      <Show when={props.conditionA} else={true}>\n        ContentC\n      </Show>\n      <Show when={props.conditionA} else={false}>\n        ContentD\n      </Show>\n      <Show when={props.conditionA} else={'hello'}>\n        ContentE\n      </Show>\n      <Show when={props.conditionA} else={123}>\n        ContentF\n      </Show>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/show/show-with-root-text.raw.tsx",
    "content": "import { Show } from '@builder.io/mitosis';\n\ninterface Props {\n  conditionA: boolean;\n}\n\nexport default function ShowRootText(props: Props) {\n  return (\n    <Show when={props.conditionA} else={<div>else-condition-A</div>}>\n      ContentA\n    </Show>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/signals-onUpdate.raw.tsx",
    "content": "import { Signal, onUpdate } from '@builder.io/mitosis';\n\ntype Props = {\n  id: Signal<string>;\n  foo: Signal<{\n    bar: {\n      baz: number;\n    };\n  }>;\n};\n\nexport default function MyBasicComponent(props: Props) {\n  onUpdate(() => {\n    console.log('props.id changed', props.id);\n    console.log('props.foo.value.bar.baz changed', props.foo.value.bar.baz);\n  }, [props.id, props.foo.value.bar.baz]);\n\n  return (\n    <div\n      class=\"test\"\n      css={{\n        padding: '10px',\n      }}\n    >\n      {props.id}\n      {props.foo.value.bar.baz}\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/spread/multiple-spreads.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyBasicComponent(props: any) {\n  const [attrs, setAttrs] = useState({ hello: 'world' });\n\n  return <input {...attrs} {...props}></input>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/spread/spread-attrs.raw.tsx",
    "content": "export default function MyBasicComponent() {\n  const attrs = { hello: 'world' };\n  return <input {...attrs}></input>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/spread/spread-nested-props.raw.tsx",
    "content": "export default function MyBasicComponent() {\n  const props = { nested: { hello: 'world' } };\n  return <input {...props.nested}></input>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/spread/spread-props.raw.tsx",
    "content": "export default function MyBasicComponent() {\n  const props = { hello: 'world' };\n  return <input {...props}></input>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/state/context-state.raw.tsx",
    "content": "import { setContext } from '@builder.io/mitosis';\nimport BuilderContext from '@dummy/context.lite';\n\nexport default function RenderContent(props) {\n  setContext(BuilderContext, {\n    content: props.content,\n    registeredComponents: props.customComponents,\n  });\n\n  return <div>setting context</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/state/expression-state.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const [refToUse] = useState(\n    !(props.componentRef instanceof Function) ? props.componentRef : null,\n  );\n\n  return <div>{refToUse}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/state/set-state.raw.tsx",
    "content": "import { useState, useStore } from '@builder.io/mitosis';\n\nexport default function SetState() {\n  const [n] = useState(['123'], { reactive: true });\n\n  const state = useStore({\n    someFn() {\n      n.value[0] = '123';\n    },\n  });\n\n  return (\n    <div>\n      <button onClick={() => state.someFn()}>Click me</button>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/arrow-function-in-use-store.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: 'steve',\n    setName(value) {\n      state.name = value;\n    },\n    updateNameWithArrowFn: (value) => {\n      state.name = value;\n    },\n  });\n\n  return <div>Hello {state.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/nested-store.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\ntype MyStore = {\n  _id?: string;\n  _messageId?: string;\n};\n\nexport default function NestedStore() {\n  /* prettier-ignore */\n  const state = useStore<MyStore>({ _id: \"abc\", _messageId: this._id + \"-message\" });\n\n  return (\n    <div id={state._id}>\n      Test\n      <p id={state._messageId}>Message</p>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/store-comment.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function StringLiteralStore() {\n  const state = useStore({\n    foo: true, // Comment\n    bar() {},\n  });\n\n  return <>{state.foo}</>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/store-shadow-vars.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  const state = useStore({\n    errors: {},\n    foo(errors) {\n      return errors;\n    },\n  });\n\n  return <>{state.foo(state.errors)}</>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/store-with-state.raw.tsx",
    "content": "import { useState, useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  const [foo, _] = useState(false);\n  const state = useStore({\n    bar() {\n      return foo;\n    },\n  });\n\n  return <>{state.bar()}</>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/string-literal-store-kebab.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\n// TODO PLAN-207\nexport default function StringLiteralStore() {\n  const state = useStore({ 'foo-bar': 123 });\n\n  return <div>{state['foo-bar']}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/string-literal-store.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function StringLiteralStore() {\n  /* prettier-ignore */\n  const state = useStore({ \"foo\": 123 });\n\n  return <div>{state.foo}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store/use-value-and-fn-from-store.raw.tsx",
    "content": "import { onUpdate, useStore } from '@builder.io/mitosis';\n\ntype MyProps = {\n  onChange?: (active: boolean) => void;\n};\n\ntype MyStore = {\n  _id?: string;\n  _active?: boolean;\n  _do?: (id?: string) => void;\n};\n\nexport default function UseValueAndFnFromStore(props: MyProps) {\n  const state = useStore<MyStore>({\n    _id: 'abc',\n    _active: false,\n    _do: (id?: string) => {\n      this._active = !!id;\n      if (props.onChange) {\n        props.onChange(this._active);\n      }\n    },\n  });\n\n  onUpdate(() => {\n    if (state._do) {\n      state._do(state._id);\n    }\n  });\n\n  return <div>Test</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/store-async-function.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\nexport default function StringLiteralStore() {\n  const state = useStore({\n    arrowFunction: async () => {\n      return Promise.resolve();\n    },\n    namedFunction: async function namedFunction() {\n      return Promise.resolve();\n    },\n    async fetchUsers() {\n      return Promise.resolve();\n    },\n  });\n\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/class-and-className.raw.tsx",
    "content": "import MyComp from './my-component.lite';\n\nexport default function MyBasicComponent() {\n  return (\n    <div>\n      <MyComp class=\"test\" className=\"test2\">\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </MyComp>\n      <div\n        className=\"test\"\n        class=\"test2\"\n        css={{\n          padding: '10px',\n        }}\n      >\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/class.raw.tsx",
    "content": "export default function MyBasicComponent() {\n  return (\n    <div\n      class=\"test\"\n      css={{\n        padding: '10px',\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/className.raw.tsx",
    "content": "export default function MyBasicComponent() {\n  return (\n    <div\n      className=\"test\"\n      css={{\n        padding: '10px',\n      }}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/classState.raw.tsx",
    "content": "import { useState } from '@builder.io/mitosis';\n\nexport default function MyBasicComponent() {\n  const [classState, setClassState] = useState('testClassName');\n  const [styleState, setStyleState] = useState({ color: 'red' });\n\n  return (\n    <div\n      class={classState}\n      css={{\n        padding: '10px',\n      }}\n      style={styleState}\n    >\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/style-class-and-css.raw.tsx",
    "content": "export default function MyComponent(props) {\n  return (\n    <div\n      style={{ width: '100%' }}\n      class=\"builder-column\"\n      css={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'stretch',\n      }}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/style-prop-class-and-css.raw.tsx",
    "content": "import { useTarget } from '@builder.io/mitosis';\n\nexport default function StylePropClassAndCss(props) {\n  return (\n    <div\n      style={props.attributes.style}\n      class={useTarget({\n        vue: props.attributes.className,\n        svelte: props.attributes.classfdsa,\n        default: props.attributes.class,\n      })}\n      css={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'stretch',\n      }}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/use-style-and-css.raw.tsx",
    "content": "import { useStyle } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  useStyle(`\n        button {\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    `);\n\n  return (\n    <button\n      css={{\n        background: 'blue',\n        color: 'white',\n      }}\n      type=\"button\"\n    >\n      Button\n    </button>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/use-style-outside-component.raw.tsx",
    "content": "import { useStyle } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  return <button type=\"button\">Button</button>;\n}\n\nuseStyle(`\n  button {\n      background: blue;\n      color: white;\n      font-size: 12px;\n      outline: 1px solid black;\n  }\n`);\n"
  },
  {
    "path": "packages/core/src/__tests__/data/styles/use-style.raw.tsx",
    "content": "import { useStyle } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  useStyle(`\n        button {\n            background: blue;\n            color: white;\n            font-size: 12px;\n            outline: 1px solid black;\n        }\n    `);\n\n  return <button type=\"button\">Button</button>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/sub-component.raw.tsx",
    "content": "import Foo from './foo-sub-component.lite';\n\nexport default function SubComponent() {\n  return <Foo />;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/svg.raw.tsx",
    "content": "export default function SvgComponent() {\n  return (\n    <svg viewBox={'0 0 ' + 42 + ' ' + 42} fill=\"none\" role=\"img\" width={42} height={42}>\n      <defs>\n        <filter id=\"prefix__filter0_f\" filterUnits=\"userSpaceOnUse\">\n          <feFlood result=\"BackgroundImageFix\" />\n          <feBlend in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n          <feGaussianBlur stdDeviation={7} result=\"effect1_foregroundBlur\" />\n        </filter>\n      </defs>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/swift/plain-component-export.raw.tsx",
    "content": "import { Image } from '@components';\n\nexport default function MyComponent(props) {\n  return (\n    <div\n      $name=\"HeroWithChildren\"\n      css={{\n        backgroundColor: 'rgba(250, 250, 250, 1)',\n        display: 'flex',\n        paddingTop: '99px',\n        paddingBottom: '107px',\n        flexDirection: 'column',\n        alignItems: 'center',\n        fontFamily: 'Poppins, -apple-system, Roboto, Helvetica, sans-serif',\n        textAlign: 'center',\n        justifyContent: 'start',\n        '@media (max-width: 991px)': {\n          paddingBottom: '100px',\n        },\n      }}\n    >\n      {Array.from({ length: 10 }, (person, count) => {\n        console.log(person);\n        return (\n          <span>\n            {person} {count}\n          </span>\n        );\n      })}\n      <div\n        css={{\n          display: 'flex',\n          width: '1243px',\n          maxWidth: '100%',\n          flexDirection: 'column',\n          alignItems: 'stretch',\n        }}\n      >\n        <div\n          $name=\"WHAT'S DIFFERENT ABOUT SHOPAHOLIC\"\n          css={{\n            color: '#000',\n            fontSize: '25px',\n            fontStyle: 'normal',\n            fontWeight: '600',\n            lineHeight: 'normal',\n            letterSpacing: '5.25px',\n            alignSelf: 'center',\n            '@media (max-width: 991px)': {\n              maxWidth: '100%',\n            },\n          }}\n        >\n          WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n        </div>\n        <div\n          css={{\n            color: '#000',\n            fontSize: '18px',\n            fontStyle: 'normal',\n            fontWeight: '400',\n            lineHeight: '1.6',\n            maxWidth: '800px',\n            margin: '40px auto 0',\n            '@media (max-width: 991px)': {\n              maxWidth: '90%',\n              fontSize: '16px',\n            },\n          }}\n        >\n          At Shopaholic, we're revolutionizing the online shopping experience through our commitment\n          to sustainability, innovation, and customer satisfaction. Our unique approach combines\n          lightning-fast delivery, eco-friendly practices, and cutting-edge technology to ensure you\n          get the best products while minimizing environmental impact.\n        </div>\n        <div\n          css={{\n            display: 'flex',\n            marginTop: '113px',\n            alignItems: 'start',\n            gap: '40px 100px',\n            fontSize: '18px',\n            justifyContent: 'space-between',\n            flexWrap: 'wrap',\n            '@media (max-width: 991px)': {\n              maxWidth: '100%',\n              marginTop: '40px',\n            },\n          }}\n        >\n          <div\n            $name=\"IconCard\"\n            css={{\n              display: 'flex',\n              minWidth: '240px',\n              minHeight: '268px',\n              flexDirection: 'column',\n              overflow: 'hidden',\n              alignItems: 'center',\n              justifyContent: 'space-between',\n              width: '341px',\n            }}\n          >\n            <div\n              $name=\"assets_a87584e551b6472fa0f0a2eb10f2c0ff_a6b9b54b817a4350b286bb6daebbad80 1\"\n              css={{\n                display: 'flex',\n                minHeight: '91px',\n                width: '91px',\n              }}\n            />\n            <div\n              $name=\"2-Day Shipping\"\n              css={{\n                color: 'rgba(0, 0, 0, 1)',\n                fontWeight: '700',\n                letterSpacing: '3.78px',\n                marginTop: '21px',\n              }}\n            >\n              2-Day Shipping\n            </div>\n            <div\n              $name=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante vestibulum, in volutpat ligula elementum.\"\n              css={{\n                color: '#000',\n                fontStyle: 'normal',\n                fontWeight: '400',\n                lineHeight: 'normal',\n                marginTop: '21px',\n              }}\n            >\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n              vestibulum, in volutpat ligula elementum.\n            </div>\n          </div>\n          <div\n            $name=\"IconCard\"\n            css={{\n              display: 'flex',\n              minWidth: '240px',\n              minHeight: '268px',\n              flexDirection: 'column',\n              alignItems: 'center',\n              justifyContent: 'space-between',\n              width: '341px',\n            }}\n          >\n            <Image\n              $name=\"assets_a87584e551b6472fa0f0a2eb10f2c0ff_a6b9b54b817a4350b286bb6daebbad80 1\"\n              image=\"https://cdn.builder.io/api/v1/image/assets/cc2296d13ce34ad099275699f1dacdd3/c8b7932e8101830763605c2767a2a74d7d969e9b5264075696a53cc45f3782be?placeholderIfAbsent=true\"\n              backgroundSize=\"contain\"\n              aspectRatio={1}\n              noWebp={true}\n              css={{\n                position: 'relative',\n                display: 'flex',\n                width: '91px',\n                overflow: 'hidden',\n              }}\n            />\n            <div\n              $name=\"2-Day Shipping\"\n              css={{\n                color: 'rgba(0, 0, 0, 1)',\n                fontWeight: '700',\n                letterSpacing: '3.78px',\n                marginTop: '21px',\n              }}\n            >\n              Carbon Neutral\n            </div>\n            <div\n              $name=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante vestibulum, in volutpat ligula elementum.\"\n              css={{\n                color: '#000',\n                fontStyle: 'normal',\n                fontWeight: '400',\n                lineHeight: 'normal',\n                marginTop: '21px',\n              }}\n            >\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n              vestibulum, in volutpat ligula elementum.\n            </div>\n          </div>\n          <div\n            $name=\"IconCard\"\n            css={{\n              display: 'flex',\n              minWidth: '240px',\n              minHeight: '268px',\n              flexDirection: 'column',\n              alignItems: 'center',\n              justifyContent: 'space-between',\n              width: '341px',\n            }}\n          >\n            <Image\n              $name=\"assets_a87584e551b6472fa0f0a2eb10f2c0ff_a6b9b54b817a4350b286bb6daebbad80 1\"\n              image=\"https://cdn.builder.io/api/v1/image/assets/cc2296d13ce34ad099275699f1dacdd3/deb954f9a60494f01064d6b7ae9a3b19e15f8c86edb8783a237f0b5c953139c0?placeholderIfAbsent=true\"\n              backgroundSize=\"contain\"\n              aspectRatio={1}\n              noWebp={true}\n              css={{\n                position: 'relative',\n                display: 'flex',\n                width: '91px',\n                overflow: 'hidden',\n              }}\n            />\n            <div\n              $name=\"2-Day Shipping\"\n              css={{\n                color: 'rgba(0, 0, 0, 1)',\n                fontWeight: '700',\n                letterSpacing: '3.78px',\n                marginTop: '21px',\n              }}\n            >\n              Advanced Dye Tech\n            </div>\n            <div\n              $name=\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante vestibulum, in volutpat ligula elementum.\"\n              css={{\n                color: '#000',\n                fontStyle: 'normal',\n                fontWeight: '400',\n                lineHeight: 'normal',\n                marginTop: '21px',\n              }}\n            >\n              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam posuere erat a ante\n              vestibulum, in volutpat ligula elementum.\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/swift/single-quotes-replacement.raw.tsx",
    "content": "export default function MyComponent(props) {\n  return (\n    <div\n      $name=\"HeroWithChildren\"\n      css={{\n        backgroundColor: 'rgba(250, 250, 250, 1)',\n        display: 'flex',\n        paddingTop: '99px',\n        paddingBottom: '107px',\n        flexDirection: 'column',\n        alignItems: 'center',\n        fontFamily: 'Poppins, -apple-system, Roboto, Helvetica, sans-serif',\n        fontFeatureSettings: \"'liga' off, 'clig'\",\n        textAlign: 'center',\n        justifyContent: 'start',\n        '@media (max-width: 991px)': {\n          paddingBottom: '100px',\n        },\n      }}\n    >\n      WHAT'S DIFFERENT ABOUT SHOPAHOLIC\n    </div>\n  );\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/component-props-interface.raw.tsx",
    "content": "interface Person {\n  name: string;\n  age?: number;\n}\n\nexport default function MyBasicComponent(props: Person | never) {\n  return <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/component-props-type.raw.tsx",
    "content": "type Person = {\n  name: string;\n  age?: number;\n};\n\nexport default function MyBasicComponent(props: Person) {\n  return <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/component-with-default-values-types.raw.tsx",
    "content": "type Props = {\n  name: string;\n};\n\nconst DEFAULT_VALUES: Props = {\n  name: 'Sami',\n};\n\nexport default function ComponentWithTypes(props: Props) {\n  return <div> Hello {props.name || DEFAULT_VALUES.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/foo-props.ts",
    "content": "export type FooProps = { name?: string };\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/foo-store.ts",
    "content": "export type FooStore = {\n  _name?: string;\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/foo-type.ts",
    "content": "export type Foo = null;\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/preserve-typing.raw.tsx",
    "content": "export type A = 'test';\nexport interface C {\n  n: 'test';\n}\n\ntype B = 'test2';\ninterface D {\n  n: 'test';\n}\n\nexport default function MyBasicComponent(props: { name: string; age?: number }) {\n  return <div>Hello! I can run in React, Vue, Solid, or Liquid! {props.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/type-dependency.raw.tsx",
    "content": "import type { Foo } from './foo-type';\nimport type { Foo as Foo2 } from './type-export.lite';\n\nexport type TypeDependencyProps = {\n  foo: Foo;\n  foo2: Foo2;\n};\n\nexport default function TypeDependency(props: TypeDependencyProps) {\n  return <div>{props.foo}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/type-export.lite.tsx",
    "content": "export interface Foo {}\n\nexport default function MyComponent() {\n  return <div></div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/type-external-props.raw.tsx",
    "content": "import { FooProps } from './foo-props';\n\nexport default function TypeExternalProps(props: FooProps) {\n  return <div>Hello {props.name}! </div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/type-external-store.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\nimport { FooStore } from './foo-store';\n\nexport default function TypeExternalStore() {\n  const state = useStore<FooStore>({\n    _name: 'test',\n  });\n\n  return <div>Hello {state._name}! </div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/types/type-getter-store.raw.tsx",
    "content": "import { useStore } from '@builder.io/mitosis';\n\ntype GetterStore = {\n  getName: () => string;\n  name: string;\n  get test(): string;\n};\n\nexport default function TypeGetterStore() {\n  const state = useStore<GetterStore>({\n    name: 'test',\n    getName: () => {\n      if (state.name === 'a') {\n        return 'b';\n      }\n\n      return state.name;\n    },\n    get test() {\n      return 'test';\n    },\n  });\n\n  return <div>Hello {state.name}! </div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/data/use-target.raw.tsx",
    "content": "import { onMount, useState, useStore, useTarget } from '@builder.io/mitosis';\n\nexport default function UseTargetComponent() {\n  const state = useStore({\n    get name() {\n      const prefix = useTarget<string | number | boolean>({\n        default: 'Default str',\n        react: 123,\n        angular: true,\n        vue: 'v',\n        alpine: 'a',\n        customElement: 'c',\n        html: 'h',\n        liquid: 'l',\n        lit: 'li',\n        marko: 'm',\n        mitosis: 'mi',\n        preact: 'p',\n        qwik: 'q',\n        reactNative: 'rn',\n        svelte: 's',\n        rsc: 'rsc',\n        solid: 'so',\n        stencil: 'st',\n        swift: 'sw',\n        taro: 't',\n        template: 'te',\n        webcomponent: 'wc',\n      });\n      return prefix + 'foo';\n    },\n\n    lastName: 'bar',\n  });\n\n  const [foo, setFoo] = useState('bar');\n\n  onMount(() => {\n    console.log(foo);\n    setFoo('bar');\n\n    useTarget({\n      react: () => {\n        console.log('react');\n        state.lastName = 'baz';\n        console.log(foo);\n        setFoo('baz');\n      },\n      qwik: () => {\n        console.log('qwik');\n        state.lastName = 'baz';\n        console.log(foo);\n        setFoo('baz');\n      },\n    });\n  });\n\n  return <div>{state.name}</div>;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/hash-code.test.ts",
    "content": "import { hashCodeAsString } from '..';\n\ndescribe('hashCode', () => {\n  test('should compute object', () => {\n    expect(hashCodeAsString({ foo: 'bar' })).toEqual('1jo4fm');\n  });\n\n  test('order of properties should not matter', () => {\n    expect(hashCodeAsString({ a: 'first', b: 'second' })).toEqual(\n      hashCodeAsString({ b: 'second', a: 'first' }),\n    );\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/html.test.ts",
    "content": "import { componentToHtml } from '../generators/html';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Html', () => {\n  runTestsForTarget({ options: {}, target: 'html', generator: componentToHtml });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/liquid.test.ts",
    "content": "import { componentToLiquid } from '../generators/liquid';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Liquid', () => {\n  runTestsForTarget({ options: {}, target: 'liquid', generator: componentToLiquid });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/lit.test.ts",
    "content": "import { componentToLit } from '../generators/lit';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Lit', () => {\n  runTestsForTarget({ options: {}, target: 'lit', generator: componentToLit });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/local.test.ts",
    "content": "import { describe, expect, test } from 'vitest';\nimport { componentToQwik, parseJsx } from '..';\n\nconst getRawFile = async (filePath: string) => {\n  const code = await import(`${filePath}?raw`).then((x) => x.default as string);\n  return { code, filePath: ['src', '__tests__', filePath].join('/') };\n};\n\nconst file = getRawFile('./data/blocks/getter-state.raw.tsx');\n\ndescribe('LOCAL', () => {\n  /**\n   * this test is for local development only, to conveniently iterate on one file/one generator.\n   */\n  test.skip('file', async () => {\n    const { code, filePath } = await file;\n    const mitosisJSON = await parseJsx(code);\n\n    const output = componentToQwik({})({\n      component: mitosisJSON,\n      path: filePath,\n    });\n\n    expect(mitosisJSON).toMatchSnapshot();\n    expect(output).matchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/marko.test.ts",
    "content": "import {\n  componentToMarko,\n  markoFormatHtml,\n  postprocessHtml,\n  preprocessHtml,\n} from '../generators/marko';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Marko', () => {\n  test('formatting', () => {\n    const exampleCode = `\n      <div>\n        <if(input.foo === 'bar')>\n          Hello\n        </if>\n        <for|items| of=(some.long ? expression : yo)>\n          World\n        </for>\n        <input \n          placeholder=\"Hello world...\"\n          value=(this.state.name) \n          on-click=(event => {\n            console.log('hello', \"world\")\n          })\n          on-input=(event => this.state.name = event.target.value) /> \n          \n          Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>`;\n    const preprocessed = preprocessHtml(exampleCode);\n    expect(preprocessed).toMatchSnapshot();\n    expect(postprocessHtml(preprocessed)).toMatchSnapshot();\n    expect(markoFormatHtml(exampleCode)).toMatchSnapshot();\n  });\n\n  runTestsForTarget({ options: {}, target: 'marko', generator: componentToMarko });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/mitosis.test.ts",
    "content": "import { componentToMitosis } from '@/generators/mitosis';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { createMitosisComponent } from '@/helpers/create-mitosis-component';\nimport { createMitosisNode } from '@/helpers/create-mitosis-node';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Mitosis, format: legacy', () => {\n  runTestsForTarget({\n    options: { format: 'legacy' },\n    target: 'mitosis',\n    generator: componentToMitosis,\n  });\n});\n\ndescribe('Mitosis, format: legacy (native loops and conditionals)', () => {\n  runTestsForTarget({\n    options: {\n      format: 'legacy',\n      nativeLoops: true,\n      nativeConditionals: true,\n      returnArray: true,\n    },\n    target: 'mitosis',\n    generator: componentToMitosis,\n  });\n});\n\ndescribe('Mitosis, format: react', () => {\n  runTestsForTarget({\n    options: {\n      format: 'react',\n    },\n    target: 'mitosis',\n    generator: componentToMitosis,\n  });\n});\n\ndescribe('Can encode <> in text', () => {\n  it('should encode <> in text', () => {\n    const result = componentToMitosis()({\n      component: createMitosisComponent({\n        children: [\n          createMitosisNode({\n            properties: { _text: '<>{}' },\n          }),\n        ],\n        hooks: {},\n      }),\n    });\n\n    expect(result).toMatchSnapshot();\n  });\n  it('should not encode valid jsx', () => {\n    const result = componentToMitosis()({\n      component: createMitosisComponent({\n        children: [\n          createMitosisNode({\n            properties: { _text: 'hello <b>world</b>' },\n          }),\n        ],\n        hooks: {},\n      }),\n    });\n\n    expect(result).toMatchSnapshot();\n  });\n\n  it('encode single > character', () => {\n    const result = componentToMitosis()({\n      component: createMitosisComponent({\n        children: [\n          createMitosisNode({\n            properties: { _text: '>' },\n          }),\n        ],\n        hooks: {},\n      }),\n    });\n\n    expect(result).toMatchInlineSnapshot(`\n      \"export default function MyComponent(props) {\n        return <>&amp;gt;</>;\n      }\n      \"\n    `);\n  });\n\n  it('should not output invalid jsx attributes', () => {\n    const result = componentToMitosis()({\n      component: createMitosisComponent({\n        children: [\n          createMitosisNode({\n            properties: { ':click': 'onClick()', '@click': 'onClick()' },\n            bindings: {\n              ':key': createSingleBinding({ code: '1' }),\n            },\n          }),\n        ],\n        hooks: {},\n      }),\n    });\n\n    expect(result).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/parse-jsx.test.ts",
    "content": "import { parseJsx } from '../parsers/jsx';\nimport { parseStateObjectToMitosisState } from '../parsers/jsx/state';\nimport { SPEC } from './data/jsx-json.spec';\nimport { runTestsForJsx } from './test-generator';\n\nimport basicBooleanAttribute from './data/basic-boolean-attribute.raw.tsx?raw';\nimport buttonWithMetadata from './data/blocks/button-with-metadata.raw.tsx?raw';\nimport basicPropsDestructureRaw from './data/props/basic-props-destructure.raw.tsx?raw';\nimport basicPropsRaw from './data/props/basic-props.raw.tsx?raw';\n\ndescribe('Parse JSX', () => {\n  test('parseStateObject', () => {\n    const out = parseStateObjectToMitosisState(SPEC);\n    expect(out).toMatchSnapshot();\n  });\n  test('boolean attribute', () => {\n    const out = parseJsx(basicBooleanAttribute);\n    expect(out).toMatchSnapshot();\n  });\n  test('metadata', () => {\n    const json = parseJsx(buttonWithMetadata);\n    expect(json).toMatchSnapshot();\n  });\n\n  test('custom mitosis package', () => {\n    expect(parseJsx(basicPropsRaw)).toEqual(parseJsx(basicPropsDestructureRaw));\n  });\n\n  runTestsForJsx();\n});\n\ndescribe('null values', () => {\n  test('null is removed from For', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            <For>\n             {null}\n            </For>\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {},\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"For\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n  });\n  test('null expression is removed', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            {null}\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children).toMatchInlineSnapshot('[]');\n  });\n\n  test('null in logical expression is removed', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            {foo && null}\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"when\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"foo\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"Show\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n  });\n\n  test('null in conditional expression is removed', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            {foo ? \"A\" : null}\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"when\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"foo\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"div\",\n            \"properties\": {\n              \"_text\": \"A\",\n            },\n            \"scope\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"Show\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n  });\n  test('null in map is removed', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            {[].map(() => {\n              return null;\n            })}\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"each\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"[]\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [],\n        \"meta\": {},\n        \"name\": \"For\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n  });\n  test('null in Show is removed', () => {\n    const result = parseJsx(`\n     export default function MyComponent() {\n       return (\n         <>\n            <Show when={true} else={null}>A</Show>\n         </>\n       );\n     }\n    `);\n    expect(result.children[0].children[0]).toMatchInlineSnapshot(`\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"when\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"true\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"div\",\n            \"properties\": {\n              \"_text\": \"A\",\n            },\n            \"scope\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"Show\",\n        \"properties\": {},\n        \"scope\": {},\n      }\n    `);\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/parse-svelte.test.ts",
    "content": "import { runTestsForSvelteSyntax } from './test-generator';\n\ndescribe('Parse JSX', () => {\n  runTestsForSvelteSyntax();\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/preact.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Preact', () => {\n  runTestsForTarget({\n    options: { preact: true },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/convert-method-to-function.test.ts",
    "content": "import { convertMethodToFunction } from '../../generators/qwik/helpers/convert-method-to-function';\nimport { MethodMap } from '../../generators/qwik/helpers/state';\n\ndescribe('convertMethodToFunction', () => {\n  const methodMap: MethodMap = {\n    methodA: 'method',\n    getterB: 'getter',\n    getCssFromFont: 'method',\n  };\n  const lexicalArgs = ['props', 'state'];\n\n  describe('rewrite', () => {\n    test('method', () => {\n      expect(convertMethodToFunction('this.methodA(123)', methodMap, lexicalArgs)).toEqual(\n        'methodA(props,state,123)',\n      );\n    });\n    test('getter', () => {\n      expect(convertMethodToFunction('this.getterB', methodMap, lexicalArgs)).toEqual(\n        'getterB(props,state)',\n      );\n    });\n    test('method binding', () => {\n      expect(convertMethodToFunction('this.methodA', methodMap, lexicalArgs)).toEqual(\n        'methodA.bind(null,props,state)',\n      );\n    });\n    test('handle comments', () => {\n      expect(convertMethodToFunction('//\\nreturn this.getterB;', methodMap, lexicalArgs)).toEqual(\n        '//\\nreturn getterB(props,state);',\n      );\n    });\n\n    test('braces', () => {\n      let code = 'getFontCss({}: {}) { this.getCssFromFont(font) }';\n      expect(convertMethodToFunction(code, methodMap, lexicalArgs)).toEqual(\n        'getFontCss({}: {}) { getCssFromFont(props,state,font) }',\n      );\n    });\n  });\n\n  describe('string', () => {\n    test('should not rewrite string', () => {\n      expect(convertMethodToFunction('\"this.getterB\"', methodMap, lexicalArgs)).toEqual(\n        '\"this.getterB\"',\n      );\n    });\n    test('should rewrite template string', () => {\n      expect(\n        convertMethodToFunction('`${this.getterB}this.getterB`', methodMap, lexicalArgs),\n      ).toEqual('`${getterB(props,state)}this.getterB`');\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.accordion.json",
    "content": "{\n  \"data\": {\n    \"title\": \"Builtin: Accordion\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-bb2f62792e464d73b7cb89258027f356\",\n        \"component\": {\n          \"name\": \"Builder:Accordion\",\n          \"options\": {\n            \"items\": [\n              {\n                \"title\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Accordion item title\",\n                    \"id\": \"builder-5fed2723c1cc4fb39e9d22b9c54ef179\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"id\": \"builder-2cad86b387ec405d82917895d7af0a12\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": { \"text\": \"<p>Item 1</p>\" }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"textAlign\": \"left\",\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"marginTop\": \"10px\",\n                        \"position\": \"relative\",\n                        \"display\": \"flex\",\n                        \"alignItems\": \"stretch\",\n                        \"flexDirection\": \"column\",\n                        \"paddingBottom\": \"10px\"\n                      }\n                    }\n                  }\n                ],\n                \"detail\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Accordion item detail\",\n                    \"id\": \"builder-18279a99b32240f19aa21d3f4b015cc9\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"id\": \"builder-2dbfa56b8988461c8566bbe759580e9b\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": { \"text\": \"<p>Item 1 content</p>\" }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"paddingTop\": \"50px\",\n                            \"textAlign\": \"left\",\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"paddingBottom\": \"50px\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"position\": \"relative\",\n                        \"display\": \"flex\",\n                        \"alignItems\": \"stretch\",\n                        \"flexDirection\": \"column\",\n                        \"marginTop\": \"10px\",\n                        \"paddingBottom\": \"10px\"\n                      }\n                    }\n                  }\n                ]\n              },\n              {\n                \"title\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Accordion item title\",\n                    \"id\": \"builder-2a93def22a354cf7aa193c20d1ad6def\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"id\": \"builder-1365fc457ece45db82ad90dbe9819e7c\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": { \"text\": \"<p>Item 2</p>\" }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"textAlign\": \"left\",\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"marginTop\": \"10px\",\n                        \"position\": \"relative\",\n                        \"display\": \"flex\",\n                        \"alignItems\": \"stretch\",\n                        \"flexDirection\": \"column\",\n                        \"paddingBottom\": \"10px\"\n                      }\n                    }\n                  }\n                ],\n                \"detail\": [\n                  {\n                    \"@type\": \"@builder.io/sdk:Element\",\n                    \"@version\": 2,\n                    \"layerName\": \"Accordion item detail\",\n                    \"id\": \"builder-fd6ef41da6d040328fbd8b0801611fe5\",\n                    \"children\": [\n                      {\n                        \"@type\": \"@builder.io/sdk:Element\",\n                        \"@version\": 2,\n                        \"id\": \"builder-7362f9fd64c647c5a400d9e75c74473f\",\n                        \"component\": {\n                          \"name\": \"Text\",\n                          \"options\": { \"text\": \"<p>Item 2 content</p>\" }\n                        },\n                        \"responsiveStyles\": {\n                          \"large\": {\n                            \"paddingTop\": \"50px\",\n                            \"textAlign\": \"left\",\n                            \"display\": \"flex\",\n                            \"flexDirection\": \"column\",\n                            \"paddingBottom\": \"50px\"\n                          }\n                        }\n                      }\n                    ],\n                    \"responsiveStyles\": {\n                      \"large\": {\n                        \"position\": \"relative\",\n                        \"display\": \"flex\",\n                        \"alignItems\": \"stretch\",\n                        \"flexDirection\": \"column\",\n                        \"marginTop\": \"10px\",\n                        \"paddingBottom\": \"10px\"\n                      }\n                    }\n                  }\n                ]\n              }\n            ],\n            \"animate\": true,\n            \"gridRowWidth\": \"25%\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"alignItems\": \"stretch\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.bindings.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1647644026249,\n  \"data\": {\n    \"inputs\": [\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"advanced\": false,\n        \"autoFocus\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"copyOnAdd\": true,\n        \"defaultValue\": \"\\\"Default title value\\\"\",\n        \"disallowRemove\": false,\n        \"helperText\": \"\",\n        \"hidden\": false,\n        \"hideFromFieldsEditor\": false,\n        \"hideFromUI\": false,\n        \"mandatory\": false,\n        \"model\": \"\",\n        \"name\": \"title\",\n        \"noPhotoPicker\": false,\n        \"onChange\": \"\",\n        \"permissionsRequiredToEdit\": \"\",\n        \"required\": false,\n        \"showIf\": \"\",\n        \"showTemplatePicker\": true,\n        \"simpleTextOnly\": false,\n        \"subFields\": [],\n        \"type\": \"text\"\n      },\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"advanced\": false,\n        \"autoFocus\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"copyOnAdd\": true,\n        \"defaultValue\": true,\n        \"disallowRemove\": false,\n        \"helperText\": \"\",\n        \"hidden\": false,\n        \"hideFromFieldsEditor\": false,\n        \"hideFromUI\": false,\n        \"mandatory\": false,\n        \"model\": \"\",\n        \"name\": \"hiliteTitle\",\n        \"noPhotoPicker\": false,\n        \"onChange\": \"\",\n        \"permissionsRequiredToEdit\": \"\",\n        \"required\": true,\n        \"showIf\": \"\",\n        \"showTemplatePicker\": true,\n        \"simpleTextOnly\": false,\n        \"subFields\": [],\n        \"type\": \"boolean\"\n      }\n    ],\n    \"title\": \"bindings\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"component.options.text\": \"var _virtual_index=state.title;return _virtual_index\",\n          \"style.backgroundColor\": \"var _virtual_index=state.hilitTitle?\\\"red\\\":\\\"gray\\\";return _virtual_index\"\n        },\n        \"code\": {\n          \"bindings\": {\n            \"component.options.text\": \"state.title\",\n            \"style.backgroundColor\": \"export default state.hilitTitle ? \\\"red\\\" : \\\"gray\\\";\\n\"\n          }\n        },\n        \"id\": \"builder-192569f8d0a943398ec7ab9c327e104f\",\n        \"meta\": {\n          \"bindingActions\": {\n            \"style\": {\n              \"backgroundColor\": [\n                {\n                  \"@type\": \"@builder.io/core:Action\",\n                  \"action\": \"@builder.io:conditionalValue\",\n                  \"options\": {\n                    \"expression\": \"state.hilitTitle\",\n                    \"then\": \"red\",\n                    \"else\": \"gray\"\n                  }\n                }\n              ]\n            }\n          }\n        },\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"Enter some text...\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-w2blpqiawu\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/bindings\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": {\n        \"path\": \"\",\n        \"query\": {}\n      }\n    }\n  },\n  \"id\": \"5d5a2d612df542978577d83c0aefad1e\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": {\n    \"hasLinks\": false,\n    \"kind\": \"page\",\n    \"needsHydration\": false\n  },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"bindings\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/bindings\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1647645316392,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2Fea4ba0dded1b45598e4ec8ed11098d65\",\n  \"firstPublished\": 1647644971428,\n  \"rev\": \"4bbs1wjshdf\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.button.json",
    "content": "{\n  \"data\": {\n    \"title\": \"BuiltIn: CoreButton\",\n    \"inputs\": [],\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"actions\": { \"click\": \"alert(\\\"WORKS!\\\")\" },\n        \"bindings\": { \"_newProperty\": \"\" },\n        \"code\": {\n          \"actions\": { \"click\": \"alert(\\\"WORKS!\\\");\\n\" },\n          \"bindings\": { \"_newProperty\": \"\" }\n        },\n        \"id\": \"builder-0517715d902e4e7db0a03721dbdf028f\",\n        \"meta\": {\n          \"eventActions\": {\n            \"click\": [\n              {\n                \"@type\": \"@builder.io/core:Action\",\n                \"action\": \"@builder.io:customCode\",\n                \"options\": { \"code\": \"alert('WORKS!');\" }\n              }\n            ]\n          }\n        },\n        \"component\": {\n          \"name\": \"Core:Button\",\n          \"options\": { \"text\": \"Click me!\" }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"appearance\": \"none\",\n            \"paddingTop\": \"15px\",\n            \"paddingBottom\": \"15px\",\n            \"paddingLeft\": \"25px\",\n            \"paddingRight\": \"25px\",\n            \"backgroundColor\": \"#3898EC\",\n            \"color\": \"white\",\n            \"borderRadius\": \"4px\",\n            \"textAlign\": \"center\",\n            \"cursor\": \"pointer\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.component-binding.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1642697008934,\n  \"data\": {\n    \"inputs\": [],\n    \"jsCode\": \"var __awaiter=function(e,n,t,r){return new(t||(t=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function u(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(a,u)}l((r=r.apply(e,n||[])).next())}))},__generator=function(e,n){var t,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},\\\"function\\\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(t)throw new TypeError(\\\"Generator is already executing.\\\");for(;a;)try{if(t=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=n.call(e,a)}catch(e){i=[6,e],r=0}finally{t=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}};function main(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){return Builder.isServer,Builder.isBrowser,state.something=\\\"works!\\\",[2]}))}))}var _virtual_index=main();return _virtual_index\",\n    \"title\": \"Component binding: parent\",\n    \"tsCode\": \"/*\\n  * Global objects available:\\n  *\\n  * state - builder state object - learn about state https://www.builder.io/c/docs/guides/state-and-actions\\n  * context - builder context object - learn about state https://github.com/BuilderIO/builder/tree/main/packages/react#passing-data-and-functions-down\\n  * fetch - Fetch API - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API'\\n  * Builder - Builder object - useful values include: Builder.isServer, Builder.isBrowser, Builder.isPreviewing, Builder.isEditing\\n  *\\n  * visit https://www.builder.io/c/docs/guides/custom-code\\n  * for more information on writing custom code\\n  */\\n async function main () {\\n  if (Builder.isServer) {\\n    // Place any code here you want to only run on the server. Any  \\n    // data fetched on the server will be available to re-hydrate on the client\\n    // if added to the state object\\n  }\\n\\n  if (Builder.isBrowser) {\\n    // Place code that you only want to run in the browser (client side only) here\\n    // For example, anything that uses document/window access or DOM manipulation\\n  }\\n  state.something = \\\"works!\\\";\\n}\\n\\nexport default main();\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-50b2438beaa4498b985eb9d8a7659afa\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"model\": \"page\",\n              \"entry\": \"d187055af171488fad843acf045d6bf7\",\n              \"data\": { \"title\": \"First title from parent\" },\n              \"content\": {\n                \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"createdDate\": 1642696980986,\n                \"data\": {\n                  \"inputs\": [\n                    {\n                      \"@type\": \"@builder.io/core:Field\",\n                      \"advanced\": false,\n                      \"autoFocus\": false,\n                      \"broadcast\": false,\n                      \"bubble\": false,\n                      \"copyOnAdd\": true,\n                      \"defaultValue\": \"default-title\",\n                      \"disallowRemove\": false,\n                      \"helperText\": \"\",\n                      \"hidden\": false,\n                      \"hideFromFieldsEditor\": false,\n                      \"hideFromUI\": false,\n                      \"mandatory\": false,\n                      \"model\": \"\",\n                      \"name\": \"title\",\n                      \"noPhotoPicker\": false,\n                      \"onChange\": \"\",\n                      \"permissionsRequiredToEdit\": \"\",\n                      \"required\": true,\n                      \"showIf\": \"\",\n                      \"showTemplatePicker\": true,\n                      \"simpleTextOnly\": false,\n                      \"subFields\": [],\n                      \"type\": \"text\"\n                    }\n                  ],\n                  \"title\": \"Component binding: child\",\n                  \"blocks\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"@version\": 2,\n                      \"id\": \"builder-139a8479536b4c4f9c2738e724ed0952\",\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"@version\": 2,\n                          \"bindings\": {\n                            \"component.options.text\": \"var _virtual_index=state.title;return _virtual_index\"\n                          },\n                          \"code\": {\n                            \"bindings\": {\n                              \"component.options.text\": \"state.title\"\n                            }\n                          },\n                          \"id\": \"builder-2ae3b4104cc0478e85eff49694792d9c\",\n                          \"component\": {\n                            \"name\": \"Text\",\n                            \"options\": { \"text\": \"Enter some text...\" }\n                          },\n                          \"responsiveStyles\": {\n                            \"large\": {\n                              \"display\": \"flex\",\n                              \"flexDirection\": \"column\",\n                              \"position\": \"relative\",\n                              \"flexShrink\": \"0\",\n                              \"boxSizing\": \"border-box\",\n                              \"marginTop\": \"20px\",\n                              \"lineHeight\": \"normal\",\n                              \"height\": \"auto\",\n                              \"textAlign\": \"center\"\n                            }\n                          }\n                        }\n                      ],\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"display\": \"flex\",\n                          \"flexDirection\": \"column\",\n                          \"position\": \"relative\",\n                          \"flexShrink\": \"0\",\n                          \"boxSizing\": \"border-box\",\n                          \"marginTop\": \"20px\",\n                          \"height\": \"auto\",\n                          \"backgroundColor\": \"rgba(227, 227, 227, 1)\",\n                          \"borderRadius\": \"5px\",\n                          \"borderStyle\": \"solid\",\n                          \"borderColor\": \"rgb(0, 0, 0)\",\n                          \"borderWidth\": \"1px\",\n                          \"paddingBottom\": \"30px\"\n                        }\n                      }\n                    },\n                    {\n                      \"id\": \"builder-pixel-notk590l4p\",\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"tagName\": \"img\",\n                      \"properties\": {\n                        \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n                        \"role\": \"presentation\",\n                        \"width\": \"0\",\n                        \"height\": \"0\"\n                      },\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"height\": \"0\",\n                          \"width\": \"0\",\n                          \"display\": \"inline-block\",\n                          \"opacity\": \"0\",\n                          \"overflow\": \"hidden\",\n                          \"pointerEvents\": \"none\"\n                        }\n                      }\n                    }\n                  ],\n                  \"url\": \"/component-binding-child\",\n                  \"state\": {\n                    \"deviceSize\": \"large\",\n                    \"location\": { \"path\": \"\", \"query\": {} }\n                  }\n                },\n                \"id\": \"d187055af171488fad843acf045d6bf7\",\n                \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"meta\": {\n                  \"hasLinks\": false,\n                  \"kind\": \"page\",\n                  \"needsHydration\": false\n                },\n                \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n                \"name\": \"Component binding: child\",\n                \"published\": \"published\",\n                \"query\": [\n                  {\n                    \"@type\": \"@builder.io/core:Query\",\n                    \"operator\": \"is\",\n                    \"property\": \"urlPath\",\n                    \"value\": \"/component-binding-child\"\n                  }\n                ],\n                \"testRatio\": 1,\n                \"variations\": {},\n                \"lastUpdated\": 1642697638361,\n                \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F8752c41b2db1441987bd6d8482f18504\",\n                \"rev\": \"ygf06l14u29\"\n              }\n            }\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-33f427415bef4725b0c9fcd4fed325f2\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"model\": \"page\",\n              \"entry\": \"d187055af171488fad843acf045d6bf7\",\n              \"data\": { \"title\": \"Second title from parent\" },\n              \"content\": {\n                \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"createdDate\": 1642696980986,\n                \"data\": {\n                  \"inputs\": [\n                    {\n                      \"@type\": \"@builder.io/core:Field\",\n                      \"advanced\": false,\n                      \"autoFocus\": false,\n                      \"broadcast\": false,\n                      \"bubble\": false,\n                      \"copyOnAdd\": true,\n                      \"defaultValue\": \"default-title\",\n                      \"disallowRemove\": false,\n                      \"helperText\": \"\",\n                      \"hidden\": false,\n                      \"hideFromFieldsEditor\": false,\n                      \"hideFromUI\": false,\n                      \"mandatory\": false,\n                      \"model\": \"\",\n                      \"name\": \"title\",\n                      \"noPhotoPicker\": false,\n                      \"onChange\": \"\",\n                      \"permissionsRequiredToEdit\": \"\",\n                      \"required\": true,\n                      \"showIf\": \"\",\n                      \"showTemplatePicker\": true,\n                      \"simpleTextOnly\": false,\n                      \"subFields\": [],\n                      \"type\": \"text\"\n                    }\n                  ],\n                  \"title\": \"Component binding: child\",\n                  \"blocks\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"@version\": 2,\n                      \"id\": \"builder-139a8479536b4c4f9c2738e724ed0952\",\n                      \"children\": [\n                        {\n                          \"@type\": \"@builder.io/sdk:Element\",\n                          \"@version\": 2,\n                          \"bindings\": {\n                            \"component.options.text\": \"var _virtual_index=state.title;return _virtual_index\"\n                          },\n                          \"code\": {\n                            \"bindings\": {\n                              \"component.options.text\": \"state.title\"\n                            }\n                          },\n                          \"id\": \"builder-2ae3b4104cc0478e85eff49694792d9c\",\n                          \"component\": {\n                            \"name\": \"Text\",\n                            \"options\": { \"text\": \"Enter some text...\" }\n                          },\n                          \"responsiveStyles\": {\n                            \"large\": {\n                              \"display\": \"flex\",\n                              \"flexDirection\": \"column\",\n                              \"position\": \"relative\",\n                              \"flexShrink\": \"0\",\n                              \"boxSizing\": \"border-box\",\n                              \"marginTop\": \"20px\",\n                              \"lineHeight\": \"normal\",\n                              \"height\": \"auto\",\n                              \"textAlign\": \"center\"\n                            }\n                          }\n                        }\n                      ],\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"display\": \"flex\",\n                          \"flexDirection\": \"column\",\n                          \"position\": \"relative\",\n                          \"flexShrink\": \"0\",\n                          \"boxSizing\": \"border-box\",\n                          \"marginTop\": \"20px\",\n                          \"height\": \"auto\",\n                          \"backgroundColor\": \"rgba(227, 227, 227, 1)\",\n                          \"borderRadius\": \"5px\",\n                          \"borderStyle\": \"solid\",\n                          \"borderColor\": \"rgb(0, 0, 0)\",\n                          \"borderWidth\": \"1px\",\n                          \"paddingBottom\": \"30px\"\n                        }\n                      }\n                    },\n                    {\n                      \"id\": \"builder-pixel-notk590l4p\",\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"tagName\": \"img\",\n                      \"properties\": {\n                        \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n                        \"role\": \"presentation\",\n                        \"width\": \"0\",\n                        \"height\": \"0\"\n                      },\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"height\": \"0\",\n                          \"width\": \"0\",\n                          \"display\": \"inline-block\",\n                          \"opacity\": \"0\",\n                          \"overflow\": \"hidden\",\n                          \"pointerEvents\": \"none\"\n                        }\n                      }\n                    }\n                  ],\n                  \"url\": \"/component-binding-child\",\n                  \"state\": {\n                    \"deviceSize\": \"large\",\n                    \"location\": { \"path\": \"\", \"query\": {} }\n                  }\n                },\n                \"id\": \"d187055af171488fad843acf045d6bf7\",\n                \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"meta\": {\n                  \"hasLinks\": false,\n                  \"kind\": \"page\",\n                  \"needsHydration\": false\n                },\n                \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n                \"name\": \"Component binding: child\",\n                \"published\": \"published\",\n                \"query\": [\n                  {\n                    \"@type\": \"@builder.io/core:Query\",\n                    \"operator\": \"is\",\n                    \"property\": \"urlPath\",\n                    \"value\": \"/component-binding-child\"\n                  }\n                ],\n                \"testRatio\": 1,\n                \"variations\": {},\n                \"lastUpdated\": 1642697638361,\n                \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F8752c41b2db1441987bd6d8482f18504\",\n                \"rev\": \"ygf06l14u29\"\n              }\n            }\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-7yl1eqgxxru\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/component-binding-parent\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": { \"path\": \"\", \"query\": {} },\n      \"something\": \"works!\"\n    }\n  },\n  \"id\": \"0937630137c94676ba24f95d9d12e426\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": { \"hasLinks\": false, \"kind\": \"page\", \"needsHydration\": false },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"Component binding: parent\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/component-binding-parent\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1644446933525,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2Ff707039a7f3b4b6da6ccfafc0f29c50c\",\n  \"firstPublished\": 1644365244190,\n  \"rev\": \"7hqhcicsdl\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.component-inputs.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1647970305560,\n  \"data\": {\n    \"inputs\": [\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"advanced\": false,\n        \"autoFocus\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"copyOnAdd\": true,\n        \"defaultValue\": 0,\n        \"disallowRemove\": false,\n        \"helperText\": \"\",\n        \"hidden\": false,\n        \"hideFromFieldsEditor\": false,\n        \"hideFromUI\": false,\n        \"mandatory\": false,\n        \"model\": \"\",\n        \"name\": \"data\",\n        \"noPhotoPicker\": false,\n        \"onChange\": \"\",\n        \"permissionsRequiredToEdit\": \"\",\n        \"required\": false,\n        \"showIf\": \"\",\n        \"showTemplatePicker\": true,\n        \"simpleTextOnly\": false,\n        \"subFields\": [],\n        \"type\": \"number\"\n      }\n    ],\n    \"title\": \"PageSimple\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"component.options.text\": \"var _virtual_index=state.data;return _virtual_index\"\n        },\n        \"code\": {\n          \"bindings\": {\n            \"component.options.text\": \"state.data\"\n          }\n        },\n        \"id\": \"builder-71f26e4ffffe4e24940aa12e5250fa5f\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"Enter some text...\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"actions\": {\n          \"click\": \"state.data=state.data+1\"\n        },\n        \"code\": {\n          \"actions\": {\n            \"click\": \"state.data = state.data + 1;\\n\"\n          }\n        },\n        \"id\": \"builder-6f8fe6a1d2284f2890ae97657eed084a\",\n        \"meta\": {\n          \"eventActions\": {\n            \"click\": [\n              {\n                \"@type\": \"@builder.io/core:Action\",\n                \"action\": \"@builder.io:customCode\",\n                \"options\": {\n                  \"code\": \"\\nstate.data = state.data+1;\"\n                }\n              }\n            ]\n          }\n        },\n        \"component\": {\n          \"name\": \"Core:Button\",\n          \"options\": {\n            \"text\": \"Something else\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"appearance\": \"none\",\n            \"paddingTop\": \"15px\",\n            \"paddingBottom\": \"15px\",\n            \"paddingLeft\": \"25px\",\n            \"paddingRight\": \"25px\",\n            \"backgroundColor\": \"#3898EC\",\n            \"color\": \"white\",\n            \"borderRadius\": \"4px\",\n            \"textAlign\": \"center\",\n            \"cursor\": \"pointer\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-mn1ccx41c6\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/initial-state\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": {\n        \"path\": \"\",\n        \"query\": {}\n      }\n    }\n  },\n  \"id\": \"3f0d0f934e454ee38c72d213a2f9a96f\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": {\n    \"hasLinks\": false,\n    \"kind\": \"page\",\n    \"needsHydration\": true\n  },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"Initial State\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/initial-state\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1647970461344,\n  \"firstPublished\": 1647970461341,\n  \"rev\": \"lvmodyn8xy\",\n  \"modelName\": \"page\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.for-loop.binding.json",
    "content": "{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"imports\": [],\n  \"inputs\": [\n    {\n      \"name\": \"offset\",\n      \"defaultValue\": \"0\"\n    },\n    {\n      \"name\": \"limit\",\n      \"defaultValue\": 3\n    },\n    {\n      \"name\": \"blogCategory\",\n      \"defaultValue\": {\n        \"@type\": \"@builder.io/core:Reference\",\n        \"id\": \"\",\n        \"model\": \"\"\n      }\n    }\n  ],\n  \"meta\": {\n    \"useMetadata\": {},\n    \"builderElId\": \"builder-1b6533030f634b67b70105c51ca78a2b\"\n  },\n  \"state\": {},\n  \"children\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"name\": \"div\",\n      \"meta\": {},\n      \"scope\": {},\n      \"properties\": {\n        \"builder-id\": \"builder-d2b6ee30433348ffa51a17334b8b6c73\"\n      },\n      \"bindings\": {\n        \"css\": {\n          \"code\": \"{\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"row\\\",\\\"position\\\":\\\"relative\\\",\\\"flexShrink\\\":\\\"0\\\",\\\"boxSizing\\\":\\\"border-box\\\",\\\"marginTop\\\":\\\"20px\\\",\\\"paddingBottom\\\":\\\"30px\\\",\\\"flexWrap\\\":\\\"wrap\\\",\\\"width\\\":\\\"calc(100%+3vw)\\\",\\\"height\\\":\\\"100%\\\",\\\"minHeight\\\":\\\"100%\\\",\\\"marginLeft\\\":\\\"-1.5vw\\\",\\\"marginRight\\\":\\\"-1.5vw\\\",\\\"@media (max-width: 991px)\\\":{\\\"width\\\":\\\"100%\\\",\\\"marginLeft\\\":\\\"auto\\\",\\\"marginRight\\\":\\\"auto\\\"},\\\"@media (max-width: 640px)\\\":{\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"alignItems\\\":\\\"stretch\\\"}}\"\n        }\n      },\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"name\": \"For\",\n          \"meta\": {},\n          \"scope\": {},\n          \"properties\": {\n            \"_forName\": \"item\"\n          },\n          \"bindings\": {\n            \"each\": {\n              \"code\": \"state.hits\"\n            }\n          },\n          \"children\": [\n            {\n              \"@type\": \"@builder.io/mitosis/node\",\n              \"name\": \"div\",\n              \"meta\": {},\n              \"scope\": {},\n              \"properties\": {\n                \"builder-id\": \"builder-cc43bc95cde743a59b269cb0157b99cd\"\n              },\n              \"bindings\": {\n                \"symbol.data.title\": {\n                  \"code\": \"state.hitsItem.name\"\n                },\n                \"symbol.data.linkUrl\": {\n                  \"code\": \"state.hitsItem.url\"\n                },\n                \"symbol.data.subCategory\": {\n                  \"code\": \"state.hitsItem.blogSubcategory\"\n                },\n                \"symbol.data.imageUrl\": {\n                  \"code\": \"state.hitsItem.heroImage\"\n                },\n                \"symbol.data.publicationDate\": {\n                  \"code\": \"state.hitsItem.createdDate\"\n                },\n                \"symbol.data.heroImageAltText\": {\n                  \"code\": \"state.hitsItem.heroImageAltText\"\n                },\n                \"css\": {\n                  \"code\": \"{\\\"display\\\":\\\"flex\\\",\\\"flexDirection\\\":\\\"column\\\",\\\"position\\\":\\\"relative\\\",\\\"flexShrink\\\":\\\"0\\\",\\\"boxSizing\\\":\\\"border-box\\\",\\\"marginTop\\\":\\\"20px\\\",\\\"width\\\":\\\"33.3%\\\",\\\"@media (max-width: 640px)\\\":{\\\"width\\\":\\\"98%\\\",\\\"marginLeft\\\":\\\"auto\\\",\\\"marginRight\\\":\\\"auto\\\",\\\"marginTop\\\":\\\"-10px\\\"}}\"\n                }\n              },\n              \"children\": [\n                {\n                  \"@type\": \"@builder.io/mitosis/node\",\n                  \"name\": \"Component000013\",\n                  \"meta\": {},\n                  \"scope\": {},\n                  \"properties\": {\n                    \"builder-id\": \"builder-cx8eewmyu3\",\n                    \"title\": \"This is my title\",\n                    \"subCategory\": \"blogSubcategory \",\n                    \"publicationDate\": \"20/10/2021\",\n                    \"imageUrl\": \"https://cdn.builder.io/api/v1/image/assets%2Fdc5c96804c6c4a068e9558f30660aaee%2F5d478cd6970142aa83158900cdaa722d\",\n                    \"altText\": \"\",\n                    \"serverStateId\": \"woo8b6\"\n                  },\n                  \"bindings\": {},\n                  \"children\": []\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"hooks\": {\n    \"onMount\": []\n  },\n  \"context\": {\n    \"get\": {},\n    \"set\": {}\n  },\n  \"name\": \"Component000012\",\n  \"subComponents\": []\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.for-loop.json",
    "content": "{\n  \"data\": {\n    \"title\": \"Builtin: For\",\n    \"inputs\": [],\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-a58a66676d9b4ecc826c1b8bc5ad91f1\",\n        \"component\": {\n          \"name\": \"Core:Section\",\n          \"options\": { \"maxWidth\": 1200 }\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/sdk:Element\",\n            \"@version\": 2,\n            \"bindings\": {\n              \"component.options.text\": \"var _virtual_index=state.resultsItem.data.title;return _virtual_index\"\n            },\n            \"code\": {\n              \"bindings\": {\n                \"component.options.text\": \"state.resultsItem.data.title\"\n              }\n            },\n            \"repeat\": { \"collection\": \"state.simpleList.results\" },\n            \"id\": \"builder-927e0013cb8142a9bd46a4f3811d0865\",\n            \"component\": {\n              \"name\": \"Text\",\n              \"options\": {\n                \"text\": \"text_content\"\n              }\n            },\n            \"responsiveStyles\": { \"large\": { \"textAlign\": \"center\" } }\n          }\n        ],\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"0px\",\n            \"paddingLeft\": \"20px\",\n            \"paddingRight\": \"20px\",\n            \"paddingTop\": \"50px\",\n            \"paddingBottom\": \"50px\",\n            \"width\": \"100vw\",\n            \"marginLeft\": \"calc(50% - 50vw)\"\n          }\n        }\n      }\n    ],\n    \"httpRequests\": {\n      \"simpleList\": \"https://cdn.builder.io/api/v2/content/simple-list?apiKey=23dfd7cef1104af59f281d58ec525923&includeRefs=true&fields=data&limit=10\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.hello_world.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1635373785718,\n  \"data\": {\n    \"title\": \"HelloWorld\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-72cc5d17a18e4d7cb5e6a61a4cad2f94\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Hello <span class=\\\"names\\\">World</span></p>\\n\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"123px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\",\n            \"marginLeft\": \"auto\",\n            \"marginRight\": \"auto\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-fpw076sg02v\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/hello-world\",\n    \"state\": { \"deviceSize\": \"large\", \"location\": { \"path\": \"\", \"query\": {} } }\n  },\n  \"id\": \"e220cbd1206f42bb93171b2535200638\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": { \"hasLinks\": false, \"kind\": \"page\", \"needsHydration\": false },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"HelloWorld\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/hello-world\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1635455511587,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F3186a4a9dd8d451584a26691e31ba194\",\n  \"rev\": \"jms2wvvpyts\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.image.json",
    "content": "{\n  \"data\": {\n    \"inputs\": [\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"name\": \"myState\",\n        \"type\": \"text\",\n        \"defaultValue\": \"initialValue\",\n        \"required\": false,\n        \"subFields\": [],\n        \"helperText\": \"\",\n        \"autoFocus\": false,\n        \"simpleTextOnly\": false,\n        \"disallowRemove\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"hideFromUI\": false,\n        \"hideFromFieldsEditor\": false,\n        \"showTemplatePicker\": true,\n        \"permissionsRequiredToEdit\": \"\",\n        \"advanced\": false,\n        \"copyOnAdd\": true,\n        \"onChange\": \"\",\n        \"showIf\": \"\",\n        \"mandatory\": false,\n        \"hidden\": false,\n        \"noPhotoPicker\": false,\n        \"model\": \"\"\n      }\n    ],\n    \"title\": \"Builtin: Image\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"actions\": { \"click\": \"state.myState=\\\"changed value\\\"\" },\n        \"code\": {\n          \"actions\": { \"click\": \"state.myState = \\\"changed value\\\";\\n\" }\n        },\n        \"id\": \"builder-fa4480d2f48a44a7a2e98cf07c54927b\",\n        \"meta\": {\n          \"eventActions\": {\n            \"click\": [\n              {\n                \"@type\": \"@builder.io/core:Action\",\n                \"action\": \"@builder.io:setState\",\n                \"options\": { \"value\": \"changed value\", \"name\": \"myState\" }\n              }\n            ]\n          }\n        },\n        \"component\": {\n          \"name\": \"Image\",\n          \"options\": {\n            \"image\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160\",\n            \"backgroundSize\": \"cover\",\n            \"backgroundPosition\": \"center\",\n            \"lazy\": false,\n            \"fitContent\": true,\n            \"aspectRatio\": 1,\n            \"height\": 1300,\n            \"width\": 1300,\n            \"srcset\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=100 100w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=200 200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=400 400w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=800 800w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1200 1200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1600 1600w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=2000 2000w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160 1160w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=598 598w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=958 958w\",\n            \"sizes\": \"(max-width: 638px) 94vw, (max-width: 998px) 96vw, 83vw\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"minHeight\": \"20px\",\n            \"minWidth\": \"20px\",\n            \"overflow\": \"hidden\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"component.options.text\": \"var _virtual_index=state.myState;return _virtual_index\"\n        },\n        \"code\": { \"bindings\": { \"component.options.text\": \"state.myState\" } },\n        \"id\": \"builder-1072afed47764e7cb37d088fd66f3a67\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": { \"text\": \"Enter some text...\" }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.mount.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1647644026249,\n  \"data\": {\n    \"inputs\": [\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"advanced\": false,\n        \"autoFocus\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"copyOnAdd\": true,\n        \"defaultValue\": \"\\\"Default title value\\\"\",\n        \"disallowRemove\": false,\n        \"helperText\": \"\",\n        \"hidden\": false,\n        \"hideFromFieldsEditor\": false,\n        \"hideFromUI\": false,\n        \"mandatory\": false,\n        \"model\": \"\",\n        \"name\": \"title\",\n        \"noPhotoPicker\": false,\n        \"onChange\": \"\",\n        \"permissionsRequiredToEdit\": \"\",\n        \"required\": false,\n        \"showIf\": \"\",\n        \"showTemplatePicker\": true,\n        \"simpleTextOnly\": false,\n        \"subFields\": [],\n        \"type\": \"text\"\n      },\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"advanced\": false,\n        \"autoFocus\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"copyOnAdd\": true,\n        \"defaultValue\": true,\n        \"disallowRemove\": false,\n        \"helperText\": \"\",\n        \"hidden\": false,\n        \"hideFromFieldsEditor\": false,\n        \"hideFromUI\": false,\n        \"mandatory\": false,\n        \"model\": \"\",\n        \"name\": \"hiliteTitle\",\n        \"noPhotoPicker\": false,\n        \"onChange\": \"\",\n        \"permissionsRequiredToEdit\": \"\",\n        \"required\": true,\n        \"showIf\": \"\",\n        \"showTemplatePicker\": true,\n        \"simpleTextOnly\": false,\n        \"subFields\": [],\n        \"type\": \"boolean\"\n      }\n    ],\n    \"title\": \"bindings\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"component.options.text\": \"var _virtual_index=state.title;return _virtual_index\",\n          \"style.backgroundColor\": \"var _virtual_index=state.hilitTitle?\\\"red\\\":\\\"gray\\\";return _virtual_index\"\n        },\n        \"code\": {\n          \"bindings\": {\n            \"component.options.text\": \"state.title\",\n            \"style.backgroundColor\": \"export default state.hilitTitle ? \\\"red\\\" : \\\"gray\\\";\\n\"\n          }\n        },\n        \"id\": \"builder-192569f8d0a943398ec7ab9c327e104f\",\n        \"meta\": {\n          \"bindingActions\": {\n            \"style\": {\n              \"backgroundColor\": [\n                {\n                  \"@type\": \"@builder.io/core:Action\",\n                  \"action\": \"@builder.io:conditionalValue\",\n                  \"options\": {\n                    \"expression\": \"state.hilitTitle\",\n                    \"then\": \"red\",\n                    \"else\": \"gray\"\n                  }\n                }\n              ]\n            }\n          }\n        },\n        \"component\": {\n          \"name\": \"Core:Button\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-w2blpqiawu\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/bindings\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": {\n        \"path\": \"\",\n        \"query\": {}\n      }\n    },\n    \"jsCode\": \"var _virtual_index=1234; _virtual_index\"\n  },\n  \"id\": \"5d5a2d612df542978577d83c0aefad1e\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": {\n    \"hasLinks\": false,\n    \"kind\": \"page\",\n    \"needsHydration\": false\n  },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"bindings\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/bindings\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1647645316392,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2Fea4ba0dded1b45598e4ec8ed11098d65\",\n  \"firstPublished\": 1647644971428,\n  \"rev\": \"4bbs1wjshdf\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.page-with-symbol.json",
    "content": "{\n  \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"createdDate\": 1635533791714,\n  \"data\": {\n    \"title\": \"Page with symbol\",\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-390a9f5be3154542a7d217301b9368f1\",\n        \"component\": {\n          \"name\": \"Symbol\",\n          \"options\": {\n            \"symbol\": {\n              \"model\": \"page\",\n              \"entry\": \"36da1052e57e47f084ea8b1fbde248e4\",\n              \"data\": {},\n              \"content\": {\n                \"createdBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"createdDate\": 1635533585222,\n                \"data\": {\n                  \"title\": \"header_symbol\",\n                  \"blocks\": [\n                    {\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"@version\": 2,\n                      \"id\": \"builder-1011cfade07e4fe1a8527923735da269\",\n                      \"component\": {\n                        \"name\": \"Text\",\n                        \"options\": {\n                          \"text\": \"<p>Header</p>\"\n                        }\n                      },\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"display\": \"flex\",\n                          \"flexDirection\": \"column\",\n                          \"position\": \"relative\",\n                          \"flexShrink\": \"0\",\n                          \"boxSizing\": \"border-box\",\n                          \"marginTop\": \"20px\",\n                          \"lineHeight\": \"normal\",\n                          \"height\": \"auto\",\n                          \"textAlign\": \"center\",\n                          \"backgroundColor\": \"rgba(0, 0, 0, 1)\",\n                          \"color\": \"rgba(255, 255, 255, 1)\",\n                          \"fontSize\": \"48px\",\n                          \"paddingBottom\": \"1em\",\n                          \"paddingTop\": \"1em\"\n                        }\n                      }\n                    },\n                    {\n                      \"id\": \"builder-pixel-ns33ck32vnf\",\n                      \"@type\": \"@builder.io/sdk:Element\",\n                      \"tagName\": \"img\",\n                      \"properties\": {\n                        \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n                        \"role\": \"presentation\",\n                        \"width\": \"0\",\n                        \"height\": \"0\"\n                      },\n                      \"responsiveStyles\": {\n                        \"large\": {\n                          \"height\": \"0\",\n                          \"width\": \"0\",\n                          \"display\": \"inline-block\",\n                          \"opacity\": \"0\",\n                          \"overflow\": \"hidden\",\n                          \"pointerEvents\": \"none\"\n                        }\n                      }\n                    }\n                  ],\n                  \"url\": \"/header-symbol\",\n                  \"state\": {\n                    \"deviceSize\": \"large\",\n                    \"location\": {\n                      \"path\": \"\",\n                      \"query\": {}\n                    }\n                  }\n                },\n                \"id\": \"36da1052e57e47f084ea8b1fbde248e4\",\n                \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n                \"meta\": {\n                  \"hasLinks\": false,\n                  \"kind\": \"page\",\n                  \"needsHydration\": false\n                },\n                \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n                \"name\": \"header_symbol\",\n                \"published\": \"published\",\n                \"query\": [\n                  {\n                    \"@type\": \"@builder.io/core:Query\",\n                    \"operator\": \"is\",\n                    \"property\": \"urlPath\",\n                    \"value\": \"/header-symbol\"\n                  }\n                ],\n                \"testRatio\": 1,\n                \"variations\": {},\n                \"lastUpdated\": 1635533686415,\n                \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2Ff67be4fd8d35470ca69749457dd6338a\",\n                \"rev\": \"j8dx00p6x7\"\n              }\n            }\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-0362b5109657483c9f7cb083fbbef511\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": {\n            \"text\": \"<p>Main Text</p>\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\",\n            \"paddingTop\": \"1em\",\n            \"paddingBottom\": \"1em\",\n            \"fontWeight\": \"700\",\n            \"fontSize\": \"24px\"\n          }\n        }\n      },\n      {\n        \"id\": \"builder-pixel-nnc1t2f8o8\",\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"tagName\": \"img\",\n        \"properties\": {\n          \"src\": \"https://cdn.builder.io/api/v1/pixel?apiKey=23dfd7cef1104af59f281d58ec525923\",\n          \"role\": \"presentation\",\n          \"width\": \"0\",\n          \"height\": \"0\"\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"height\": \"0\",\n            \"width\": \"0\",\n            \"display\": \"inline-block\",\n            \"opacity\": \"0\",\n            \"overflow\": \"hidden\",\n            \"pointerEvents\": \"none\"\n          }\n        }\n      }\n    ],\n    \"url\": \"/page-with-symbol\",\n    \"state\": {\n      \"deviceSize\": \"large\",\n      \"location\": {\n        \"pathname\": \"/page-with-symbol\",\n        \"path\": [\"page-with-symbol\"],\n        \"query\": {}\n      }\n    }\n  },\n  \"id\": \"51505da68a7f4f06b73c2d1b324245dd\",\n  \"lastUpdatedBy\": \"HESl6HBVxFhHEFalzlH4zWRRdkl1\",\n  \"meta\": {\n    \"hasLinks\": false,\n    \"kind\": \"page\",\n    \"needsHydration\": false\n  },\n  \"modelId\": \"86462c9c132240a7aa177f2f4535f8af\",\n  \"name\": \"Page with symbol\",\n  \"published\": \"published\",\n  \"query\": [\n    {\n      \"@type\": \"@builder.io/core:Query\",\n      \"operator\": \"is\",\n      \"property\": \"urlPath\",\n      \"value\": \"/page-with-symbol\"\n    }\n  ],\n  \"testRatio\": 1,\n  \"variations\": {},\n  \"lastUpdated\": 1635533862224,\n  \"screenshot\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F1b25c2c50d994075b0d41996a51f549f\",\n  \"rev\": \"lsd865i0o2l\"\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.show-hide.json",
    "content": "{\n  \"data\": {\n    \"title\": \"show/hide bindings\",\n    \"inputs\": [\n      {\n        \"@type\": \"@builder.io/core:Field\",\n        \"name\": \"visible\",\n        \"type\": \"boolean\",\n        \"defaultValue\": false,\n        \"required\": false,\n        \"subFields\": [],\n        \"helperText\": \"\",\n        \"autoFocus\": false,\n        \"simpleTextOnly\": false,\n        \"disallowRemove\": false,\n        \"broadcast\": false,\n        \"bubble\": false,\n        \"hideFromUI\": false,\n        \"hideFromFieldsEditor\": false,\n        \"showTemplatePicker\": true,\n        \"permissionsRequiredToEdit\": \"\",\n        \"advanced\": false,\n        \"copyOnAdd\": true,\n        \"onChange\": \"\",\n        \"showIf\": \"\",\n        \"mandatory\": false,\n        \"hidden\": false,\n        \"noPhotoPicker\": false,\n        \"model\": \"\"\n      }\n    ],\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"actions\": { \"click\": \"state.visible=!state.visible\" },\n        \"code\": { \"actions\": { \"click\": \"state.visible = !state.visible;\\n\" } },\n        \"id\": \"builder-7ac4d7c20b01404ca338b2f4c59b3f82\",\n        \"meta\": {\n          \"eventActions\": {\n            \"click\": [\n              {\n                \"@type\": \"@builder.io/core:Action\",\n                \"action\": \"@builder.io:toggleState\",\n                \"options\": { \"name\": \"visible\" }\n              }\n            ]\n          }\n        },\n        \"component\": { \"name\": \"Core:Button\", \"options\": { \"text\": \"Toggle\" } },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"appearance\": \"none\",\n            \"paddingTop\": \"15px\",\n            \"paddingBottom\": \"15px\",\n            \"paddingLeft\": \"25px\",\n            \"paddingRight\": \"25px\",\n            \"backgroundColor\": \"#3898EC\",\n            \"color\": \"white\",\n            \"borderRadius\": \"4px\",\n            \"textAlign\": \"center\",\n            \"cursor\": \"pointer\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"show\": {\n            \"code\": \"var _virtual_index=state.visible;return _virtual_index\"\n          }\n        },\n        \"code\": { \"bindings\": { \"show\": \"state.visible\" } },\n        \"layerName\": \"Shown when visible=true...\",\n        \"id\": \"builder-845ebd803c89485383568d433b6fd517\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": { \"text\": \"<p>Show when visible=true</p>\" }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": {\n          \"hide\": {\n            \"code\": \"var _virtual_index=state.visible;return _virtual_index\"\n          }\n        },\n        \"code\": { \"bindings\": { \"hide\": \"state.visible\" } },\n        \"id\": \"builder-67baa3b2073942b99017e846759776aa\",\n        \"component\": {\n          \"name\": \"Text\",\n          \"options\": { \"text\": \"<p>Show when visible=false</p>\" }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"lineHeight\": \"normal\",\n            \"height\": \"auto\",\n            \"textAlign\": \"center\"\n          }\n        }\n      },\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"bindings\": { \"hide\": { \"code\": \"return visible\" } },\n        \"code\": { \"bindings\": { \"hide\": \"visible\" } },\n        \"id\": \"builder-e42f7b40d40a442ea72dac7a1ceb2021\",\n        \"component\": {\n          \"name\": \"Image\",\n          \"options\": {\n            \"image\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160\",\n            \"backgroundSize\": \"cover\",\n            \"backgroundPosition\": \"center\",\n            \"lazy\": false,\n            \"fitContent\": true,\n            \"aspectRatio\": 1,\n            \"sizes\": \"(max-width: 638px) 94vw, (max-width: 998px) 96vw, 83vw\",\n            \"height\": 1300,\n            \"width\": 1300,\n            \"srcset\": \"https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=100 100w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=200 200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=400 400w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=800 800w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1200 1200w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1600 1600w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=2000 2000w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=1160 1160w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=598 598w, https://cdn.builder.io/api/v1/image/assets%2F23dfd7cef1104af59f281d58ec525923%2F4ecf7b7554464b0183ab8250f67e797b?width=958 958w\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"20px\",\n            \"width\": \"100%\",\n            \"minHeight\": \"20px\",\n            \"minWidth\": \"20px\",\n            \"overflow\": \"hidden\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/specs/qwik.test.svg.json",
    "content": "{\n  \"data\": {\n    \"title\": \"BuiltIn: CoreButton\",\n    \"inputs\": [],\n    \"blocks\": [\n      {\n        \"@type\": \"@builder.io/sdk:Element\",\n        \"@version\": 2,\n        \"id\": \"builder-5bdc93549f3a4c30b28e85aa1fd91a1c\",\n        \"component\": {\n          \"name\": \"Custom Code\",\n          \"options\": {\n            \"code\": \"<svg\\n  width=\\\"42\\\"\\n  height=\\\"42\\\"\\n  viewBox=\\\"0 0 42 42\\\"\\n  fill=\\\"none\\\"\\n  xmlns=\\\"http://www.w3.org/2000/svg\\\"\\n>\\n  <path\\n    d=\\\"M19.626 0.0327762C19.5357 0.0409786 19.2486 0.0696867 18.9903 0.0901925C13.0313 0.627445 7.4496 3.84276 3.9144 8.78466C1.94585 11.5324 0.686788 14.6493 0.211053 17.9508C0.0429057 19.1032 0.0223999 19.4436 0.0223999 21.0061C0.0223999 22.5687 0.0429057 22.9091 0.211053 24.0615C1.35118 31.9398 6.95747 38.5591 14.561 41.0116C15.9226 41.4504 17.358 41.7498 18.9903 41.9302C19.626 42 22.3737 42 23.0094 41.9302C25.8269 41.6186 28.2138 40.9214 30.5679 39.7197C30.9288 39.5352 30.9985 39.486 30.9493 39.4449C30.9165 39.4203 29.3785 37.3575 27.533 34.8639L24.1782 30.3322L19.9746 24.1107C17.6615 20.6903 15.7586 17.8933 15.7422 17.8933C15.7257 17.8892 15.7093 20.6534 15.7011 24.0287C15.6888 29.9385 15.6847 30.1763 15.6109 30.3158C15.5043 30.5167 15.4223 30.5987 15.25 30.689C15.1188 30.7546 15.0039 30.7669 14.3847 30.7669H13.6752L13.4865 30.648C13.3635 30.57 13.2733 30.4675 13.2117 30.3486L13.1256 30.164L13.1338 21.9412L13.1461 13.7143L13.2733 13.5543C13.3389 13.4682 13.4783 13.3575 13.5767 13.3041C13.7449 13.2221 13.8105 13.2139 14.52 13.2139C15.3566 13.2139 15.4961 13.2467 15.7134 13.4846C15.775 13.5502 18.0511 16.9788 20.7743 21.1086C23.4975 25.2385 27.2213 30.8776 29.0504 33.6459L32.3724 38.678L32.5405 38.5673C34.0292 37.5994 35.6041 36.2214 36.8508 34.786C39.5043 31.7389 41.2145 28.0232 41.7886 24.0615C41.9568 22.9091 41.9773 22.5687 41.9773 21.0061C41.9773 19.4436 41.9568 19.1032 41.7886 17.9508C40.6485 10.0724 35.0422 3.45315 27.4387 1.00065C26.0976 0.565927 24.6704 0.266542 23.0709 0.0860913C22.6772 0.0450797 19.9664 -3.30508e-05 19.626 0.0327762ZM28.2138 12.7218C28.4106 12.8202 28.5706 13.0089 28.628 13.2057C28.6608 13.3123 28.669 15.5926 28.6608 20.7313L28.6485 28.1052L27.3484 26.1121L26.0443 24.1189V18.7587C26.0443 15.2932 26.0607 13.3451 26.0853 13.2508C26.1509 13.0212 26.2944 12.8407 26.4913 12.7341C26.6595 12.648 26.721 12.6397 27.3649 12.6397C27.9718 12.6397 28.0785 12.648 28.2138 12.7218Z\\\"\\n    fill=\\\"#9CD3D7\\\"\\n  />\\n  <path\\n    d=\\\"M32.1674 38.7681C32.0239 38.8584 31.9787 38.9199 32.1059 38.8502C32.1961 38.7968 32.3437 38.6861 32.3191 38.682C32.3068 38.682 32.2371 38.723 32.1674 38.7681ZM31.8844 38.9527C31.8106 39.0101 31.8106 39.0142 31.9008 38.9691C31.95 38.9445 31.991 38.9158 31.991 38.9076C31.991 38.8748 31.9705 38.883 31.8844 38.9527ZM31.6794 39.0757C31.6055 39.1331 31.6055 39.1372 31.6958 39.0921C31.745 39.0675 31.786 39.0388 31.786 39.0306C31.786 38.9978 31.7655 39.006 31.6794 39.0757ZM31.4743 39.1988C31.4005 39.2562 31.4005 39.2603 31.4907 39.2152C31.5399 39.1906 31.5809 39.1618 31.5809 39.1536C31.5809 39.1208 31.5604 39.129 31.4743 39.1988ZM31.1626 39.3628C31.0068 39.4448 31.015 39.4776 31.1708 39.3997C31.2405 39.3628 31.2938 39.3259 31.2938 39.3177C31.2938 39.289 31.2897 39.2931 31.1626 39.3628Z\\\"\\n    fill=\\\"#9CD3D7\\\"\\n  />\\n</svg>\\n\"\n          }\n        },\n        \"responsiveStyles\": {\n          \"large\": {\n            \"display\": \"flex\",\n            \"flexDirection\": \"column\",\n            \"alignItems\": \"stretch\",\n            \"position\": \"relative\",\n            \"flexShrink\": \"0\",\n            \"boxSizing\": \"border-box\",\n            \"marginTop\": \"auto\",\n            \"marginBottom\": \"auto\"\n          }\n        }\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/src-generator.test.ts",
    "content": "import {\n  File,\n  isStatement,\n  SrcBuilder,\n  SrcBuilderOptions,\n  Symbol,\n} from '../../generators/qwik/src-generator';\n\ndescribe('src-generator', () => {\n  describe('isStatement', () => {\n    test('is an expression', () => {\n      expect(isStatement('a.b')).toBe(false);\n      expect(isStatement('a.b!')).toBe(false);\n      expect(isStatement('1?2:\"bar\"')).toBe(false);\n      expect(isStatement('\"var x; return foo + \\'\\\\\"\\';\"')).toBe(false);\n      expect(isStatement('\"foo\" + `bar\\nbaz`')).toBe(false);\n      expect(isStatement('(...)()')).toBe(false);\n    });\n    test('regression', () => {\n      expect(isStatement('props.attributes?.class || props.attributes?.className')).toBe(false);\n    });\n\n    test('is a statement', () => {\n      expect(isStatement('var x; return x;')).toBe(true);\n      expect(isStatement('var x')).toBe(true);\n    });\n\n    test('regressions', () => {\n      expect(\n        isStatement(\n          \"if(state.deviceSize == \\\"small\\\"){    \\r\\n    return\\r\\n}\\r\\n\\r\\nif (state.imageLeft){    \\r\\n    return 'row-reverse'\\r\\n}\\r\\n\\r\\nreturn 'row'\",\n        ),\n      ).toBe(true);\n      expect(isStatement(\"if (state.imageLeft){     return 'flex-direction: row-reverse;' }\")).toBe(\n        true,\n      );\n      expect(isStatement('() => null')).toBe(true);\n    });\n  });\n\n  describe('import', () => {\n    let options: SrcBuilderOptions;\n    let src: SrcBuilder;\n    describe('module', () => {\n      beforeEach(() => {\n        options = {\n          isJSX: true,\n          isPretty: true,\n          isTypeScript: false,\n          isModule: true,\n          isBuilder: false,\n        };\n        src = new SrcBuilder(new File('test', options, '', ''), options);\n      });\n      test('import to string', () => {\n        src.import('module', [new Symbol('importName', 'asLocalName')]);\n        expect(src.toString().trim()).toEqual('import{importName as asLocalName}from\"module\";');\n      });\n      test('import from default', () => {\n        src.import('module', [new Symbol('default', 'asLocalName')]);\n        expect(src.toString().trim()).toEqual('import asLocalName from\"module\";');\n      });\n    });\n    describe('require', () => {\n      beforeEach(() => {\n        options = {\n          isJSX: true,\n          isPretty: true,\n          isTypeScript: false,\n          isModule: false,\n          isBuilder: false,\n        };\n        src = new SrcBuilder(new File('test', options, '', ''), options);\n      });\n      test('import to string', () => {\n        src.import('module', [new Symbol('importName', 'asLocalName')]);\n        expect(src.toString().trim()).toEqual('const asLocalName=require(\"module\").importName;');\n      });\n      test('import from default', () => {\n        src.import('module', [new Symbol('default', 'asLocalName')]);\n        expect(src.toString().trim()).toEqual('const asLocalName=require(\"module\");');\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik/stable-serializer.test.ts",
    "content": "import { stableJSONserialize } from '../../generators/qwik/helpers/stable-serialize';\n\ndescribe('stable-serializer', () => {\n  test('is an expression', () => {\n    expect(stableJSONserialize({})).toBe('{}');\n    expect(stableJSONserialize({ b: 1, a: 2 })).toBe('{\"a\":2,\"b\":1}');\n    expect(stableJSONserialize([1, undefined])).toBe('[1,null]');\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik.directive.test.ts",
    "content": "import { Image } from '../generators/qwik/directives';\n\ndescribe('qwik directives', () => {\n  beforeEach(() => {\n    (global as any).h = mockH;\n  });\n  afterEach(() => ((global as any).h = undefined));\n  describe('Image', () => {\n    test('altText', () => {\n      expect(Image({ altText: 'foo', image: 'http://some.url' }).children[0][0]).toMatchSnapshot();\n      expect(Image({ image: 'http://some.url' }).children[0][0]).toMatchSnapshot();\n    });\n    test('builder-pixel is eager', () => {\n      expect(\n        Image({\n          builderBlock: { id: 'builder-pixel-foo' },\n          image: 'http://some.url',\n        }).children[0][0],\n      ).toMatchSnapshot();\n    });\n    test('images are lazy loaded', () => {\n      expect(\n        Image({\n          image: 'http://some.url',\n        }).children[0][0],\n      ).toMatchSnapshot();\n    });\n    test('builder.io URLs are served using webp', () => {\n      expect(\n        find(\n          'source',\n          Image({\n            image: 'http://foo.builder.io/foo',\n          }),\n        ),\n      ).toMatchSnapshot();\n    });\n    test('maxWidth is added to the srcs', () => {\n      expect(\n        find(\n          'source',\n          Image({\n            image: 'http://foo.builder.io/foo',\n            srcsetSizes: '1234 456',\n          }),\n        ),\n      ).toMatchSnapshot();\n    });\n    test('anchor should wrap in <a>', () => {\n      expect(\n        find(\n          'a',\n          Image({\n            image: 'http://some.url',\n            href: 'my-url',\n          }),\n        ),\n      ).toMatchSnapshot();\n    });\n  });\n});\n\nfunction find(tag: string, jsx: MockJSX): MockJSX | undefined {\n  if (tag == jsx.tag) return jsx;\n  return findInChildren(tag, jsx.children);\n\n  function findInChildren(tag: string, jsxs: MockJSX[]): MockJSX | undefined {\n    let value: MockJSX | undefined = undefined;\n    for (let i = 0; i < jsxs.length; i++) {\n      const jsx = jsxs[i];\n      if (Array.isArray(jsx)) {\n        value = findInChildren(tag, jsx);\n      } else {\n        value = find(tag, jsx);\n      }\n      if (value) return value;\n    }\n    return undefined;\n  }\n}\n\nconst mockH = (tag: string, props: Record<string, any>, children: any[]): MockJSX => ({\n  tag,\n  props,\n  children,\n});\n\ninterface MockJSX {\n  tag: string;\n  props: Record<string, any>;\n  children: MockJSX[];\n}\n\nfunction srcSet(url: string, additionalSizes: string = ''): any {\n  return ['100', '200', '400', '800', '1200', '1600', '2000']\n    .concat(additionalSizes ? additionalSizes.split(' ') : [])\n    .map((size) => {\n      const parsedUrl = new URL(url);\n      parsedUrl.searchParams.set('width', size);\n      return `${parsedUrl} ${size}w`;\n    })\n    .concat([url.replace('?format=webp', '')])\n    .join(', ');\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/qwik.test.ts",
    "content": "import { mkdirSync, writeFileSync } from 'fs';\nimport { resolve } from 'path';\nimport stripAnsi from 'strip-ansi';\nimport { File } from '../generators/qwik';\nimport { componentToQwik } from '../generators/qwik/component-generator';\nimport { FileSet, addComponent, createFileSet } from '../generators/qwik/index';\nimport { builderContentToMitosisComponent } from '../parsers/builder';\nimport { parseJsx } from '../parsers/jsx';\nimport {\n  compileAwayBuilderComponentsFromTree,\n  components as compileAwayComponents,\n} from '../plugins/compile-away-builder-components';\nimport {\n  convertBuilderContentToSymbolHierarchy,\n  convertBuilderElementToMitosisComponent,\n} from '../symbols/symbol-processor';\nimport { runTestsForTarget } from './test-generator';\n\nimport todo from '../../../../examples/todo/src/components/todo.lite.tsx?raw';\nimport todos from '../../../../examples/todo/src/components/todos.lite.tsx?raw';\n\nconst debugFiles = true;\n\nconst debugOutput = async (fileSet: FileSet) => {\n  const testName = stripAnsi(expect.getState().currentTestName as string);\n  const base = 'dist/test/' + testName.split(/[\\s>]+/g).join('/') + '/';\n  if (debugFiles) {\n    for (const key in fileSet) {\n      const file = (fileSet as any)[key];\n      await mkdirSync(base, { recursive: true });\n      await writeFileSync(resolve(base, file.path), file.contents);\n    }\n  }\n};\n\ndescribe('qwik', () => {\n  runTestsForTarget({ options: {}, target: 'qwik', generator: componentToQwik });\n\n  describe('todo', () => {\n    test('Todo.tsx', async () => {\n      const json = parseJsx(todo);\n      const fileSet = createFileSet({ output: 'ts' });\n      addComponent(fileSet, json);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n\n    test('Todo.cjs', async () => {\n      const json = parseJsx(todo);\n      const fileSet = createFileSet({ output: 'cjs', jsx: false });\n      addComponent(fileSet, json);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n\n    test('Todo.js', async () => {\n      const json = parseJsx(todo);\n      const fileSet = createFileSet({\n        output: 'mjs',\n        jsx: false,\n      });\n      addComponent(fileSet, json);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n  });\n\n  describe('todos', () => {\n    test('Todo.tsx', async () => {\n      const json = parseJsx(todos);\n      const fileSet = createFileSet({ output: 'ts' });\n      addComponent(fileSet, json);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n  });\n\n  describe('hello_world', () => {\n    test('stylesheet', async () => {\n      const component = builderContentToMitosisComponent(\n        require('./qwik/specs/qwik.test.hello_world.json'),\n      );\n      const fileSet = createFileSet({ output: 'mjs' });\n\n      addComponent(fileSet, component);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n  });\n\n  test('page-with-symbol', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.page-with-symbol.json'),\n    );\n    const fileSet = createFileSet({ output: 'mjs', jsx: false });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('button', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.button.json'),\n    );\n    const fileSet = createFileSet({ output: 'mjs', jsx: false });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('svg', async () => {\n    const component = builderContentToMitosisComponent(require('./qwik/specs/qwik.test.svg.json'), {\n      includeBuilderExtras: true,\n      preserveTextBlocks: true,\n    });\n    const fileSet = createFileSet({ output: 'mjs', jsx: false });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('Image', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.image.json'),\n      {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      },\n    );\n    const fileSet = createFileSet({ output: 'mjs', jsx: false });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('Image.slow', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.image.json'),\n      {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      },\n    );\n    const fileSet = createFileSet({ output: 'mjs', jsx: false });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('Accordion', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.accordion.json'),\n      {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      },\n    );\n    compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n    const fileSet = createFileSet({ output: 'mjs', jsx: true });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('For', async () => {\n    const component = builderContentToMitosisComponent(\n      require('./qwik/specs/qwik.test.for-loop.json'),\n      {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      },\n    );\n    compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n    const fileSet = createFileSet({ output: 'mjs', jsx: true });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  describe('component', () => {\n    test('bindings', async () => {\n      // https://builder.io/content/0937630137c94676ba24f95d9d12e426/edit\n      // https://cdn.builder.io/api/v2/content/page/0937630137c94676ba24f95d9d12e426?apiKey=23dfd7cef1104af59f281d58ec525923&noTraverse=false&preserveAllFields=true&single=true&cachebust=true\n      const content = require('./qwik/specs/qwik.test.component-binding.json');\n      const state: Record<string, any> = {};\n      const hierarchy = convertBuilderContentToSymbolHierarchy(content, {\n        collectComponentState: state,\n      });\n      expect(state).toMatchSnapshot();\n      const fileSet = createFileSet({ output: 'mjs', jsx: true });\n      hierarchy.depthFirstSymbols.forEach((builderComponent) => {\n        const mitosisComponent = convertBuilderElementToMitosisComponent(builderComponent);\n        mitosisComponent && addComponent(fileSet, mitosisComponent, { isRoot: false });\n      });\n\n      const component = builderContentToMitosisComponent(content, {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      });\n      compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n\n      addComponent(fileSet, component);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n    test('component inputs', async () => {\n      const content = require('./qwik/specs/qwik.test.component-inputs.json');\n      const state: Record<string, any> = {};\n      expect(state).toMatchSnapshot();\n      const fileSet = createFileSet({ output: 'cjs', jsx: true });\n      const component = builderContentToMitosisComponent(content, {\n        includeBuilderExtras: true,\n        preserveTextBlocks: true,\n      });\n\n      addComponent(fileSet, component);\n      await debugOutput(fileSet);\n      expect(toObj(fileSet)).toMatchSnapshot();\n    });\n  });\n\n  test('show-hide', async () => {\n    const content = require('./qwik/specs/qwik.test.show-hide.json');\n    const state: Record<string, any> = {};\n    expect(state).toMatchSnapshot();\n    const fileSet = createFileSet({ output: 'mjs', jsx: true });\n    const component = builderContentToMitosisComponent(content, {\n      includeBuilderExtras: true,\n      preserveTextBlocks: true,\n    });\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('bindings', async () => {\n    // https://builder.io/content/5d5a2d612df542978577d83c0aefad1e\n    // https://cdn.builder.io/api/v2/content/page/5d5a2d612df542978577d83c0aefad1e?apiKey=23dfd7cef1104af59f281d58ec525923\n    const content = require('./qwik/specs/qwik.test.bindings.json');\n    const fileSet = createFileSet({ output: 'cjs', jsx: false });\n    const component = builderContentToMitosisComponent(content, {\n      includeBuilderExtras: true,\n      preserveTextBlocks: true,\n    });\n    compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('for-loop.bindings', async () => {\n    const component = require('./qwik/specs/qwik.test.for-loop.binding.json');\n    const fileSet = createFileSet({ output: 'cjs', jsx: false });\n    compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  test('mount', async () => {\n    const content = require('./qwik/specs/qwik.test.mount.json');\n    const fileSet = createFileSet({ output: 'cjs', jsx: false });\n    const component = builderContentToMitosisComponent(content, {\n      includeBuilderExtras: true,\n      preserveTextBlocks: true,\n    });\n    compileAwayBuilderComponentsFromTree(component, compileAwayComponents);\n\n    addComponent(fileSet, component);\n    await debugOutput(fileSet);\n    expect(toObj(fileSet)).toMatchSnapshot();\n  });\n\n  describe('src-generator', () => {\n    let file: File;\n    beforeEach(() => {\n      file = new File(\n        'test.js',\n        {\n          isPretty: true,\n          isTypeScript: false,\n          isJSX: true,\n          isModule: true,\n          isBuilder: true,\n        },\n        '',\n        '',\n      );\n    });\n\n    test('should format code', () => {\n      file.src.emit('const x=1');\n      expect(file.toString()).toEqual('const x = 1;\\n');\n    });\n\n    test('should deal with empty bindings', () => {\n      file.src.jsxBegin('Image', {}, { image: '' });\n      file.src.jsxEnd('Image');\n      expect(file.toString()).toEqual('<Image></Image>;\\n');\n    });\n  });\n});\n\nfunction toObj(fileSet: FileSet): any {\n  const obj: Record<string, string> = {};\n  for (const key in fileSet) {\n    if (Object.prototype.hasOwnProperty.call(fileSet, key)) {\n      const file: File = (fileSet as any)[key];\n      obj[file.path] = file.contents;\n    }\n  }\n  return obj;\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/react-native.test.ts",
    "content": "import { componentToReactNative } from '../generators/react-native';\nimport { runTestsForTarget } from './test-generator';\n\nimport { parseJsx } from '..';\nimport nativeStyles from './data/react-native/native-styles.raw.tsx?raw';\nimport twrncStateComplexStyledComponentRN from './data/react-native/twrnc-state-complex-styled-component.raw.tsx?raw';\nimport twrncStateStyledComponentRN from './data/react-native/twrnc-state-styled-component.raw.tsx?raw';\nimport twrncStyledComponentRN from './data/react-native/twrnc-styled-component.raw.tsx?raw';\n\ndescribe('React Native', () => {\n  runTestsForTarget({ options: {}, target: 'reactNative', generator: componentToReactNative });\n\n  test('twrnc style', () => {\n    const component = parseJsx(twrncStyledComponentRN);\n    const output = componentToReactNative({\n      stylesType: 'twrnc',\n    })({ component });\n\n    expect(output).toMatchSnapshot();\n  });\n\n  test('Vaild react-native styles', () => {\n    const component = parseJsx(nativeStyles);\n    const output = componentToReactNative({\n      // stylesType: 'twrnc',\n      sanitizeReactNative: true,\n    })({ component });\n\n    expect(output).toMatchSnapshot();\n  });\n\n  test('twrnc state style', () => {\n    const component = parseJsx(twrncStateStyledComponentRN);\n    const output = componentToReactNative({\n      stylesType: 'twrnc',\n    })({ component });\n\n    expect(output).toMatchSnapshot();\n  });\n\n  test('twrnc state complex style', () => {\n    const component = parseJsx(twrncStateComplexStyledComponentRN);\n    const output = componentToReactNative({\n      stylesType: 'twrnc',\n    })({ component });\n\n    expect(output).toMatchSnapshot();\n  });\n\n  test('native-wind style', () => {\n    const component = parseJsx(twrncStyledComponentRN);\n    const output = componentToReactNative({\n      stylesType: 'native-wind',\n    })({ component });\n\n    expect(output).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react-state-builder.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('React - stateType: builder', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'builder',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react-state-mobx.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('React - stateType: mobx', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'mobx',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react-state-solid.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('React - stateType: solid', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'solid',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react-state-valtio.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('React - stateType: valtio', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'valtio',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react-state-variables.test.ts",
    "content": "import { componentToReact } from '../generators/react';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('React - stateType: variables', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'variables',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/react.test.ts",
    "content": "import { componentToReact } from '@/generators/react';\nimport { parseJsx } from '..';\nimport { runTestsForTarget } from './test-generator';\n\nimport columns from './data/blocks/columns.raw.tsx?raw';\nimport stamped from './data/blocks/stamped-io.raw.tsx?raw';\n\ndescribe('React - stateType: useState', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'useState',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n  runTestsForTarget({\n    options: {\n      stateType: 'useState',\n      stylesType: 'styled-components',\n    },\n    target: 'react',\n    generator: componentToReact,\n  });\n  test('stamped (useState)', () => {\n    const component = parseJsx(stamped);\n    const output = componentToReact({\n      stylesType: 'style-tag',\n      stateType: 'useState',\n    })({ component });\n    expect(output).toMatchSnapshot();\n  });\n\n  test('stamped (mobx)', () => {\n    const component = parseJsx(stamped);\n    const output = componentToReact({\n      stylesType: 'style-tag',\n      stateType: 'mobx',\n    })({ component });\n    expect(output).toMatchSnapshot();\n  });\n\n  test('(style-tag, top)', () => {\n    const component = parseJsx(columns);\n    const output = componentToReact({\n      stylesType: 'style-tag',\n      styleTagsPlacement: 'top',\n    })({ component });\n    expect(output).toMatchSnapshot();\n  });\n});\n\n/*describe('React - test', () => {\n  runTestsForTarget({\n    options: {\n      stateType: 'useState',\n    },\n    target: 'react',\n    generator: componentToReact,\n    only: ['defaultProps'],\n    logOutput: true,\n  });\n});*/\n"
  },
  {
    "path": "packages/core/src/__tests__/rsc.test.ts",
    "content": "import { componentToRsc } from '../generators/rsc';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('RSC', () => {\n  runTestsForTarget({ options: {}, target: 'rsc', generator: componentToRsc });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/solid.test.ts",
    "content": "import { componentToSolid } from '../generators/solid';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Solid', () => {\n  runTestsForTarget({ options: {}, target: 'solid', generator: componentToSolid });\n  runTestsForTarget({\n    options: { stylesType: 'style-tag' },\n    target: 'solid',\n    generator: componentToSolid,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/stencil.test.ts",
    "content": "import { componentToStencil } from '@/generators/stencil';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Stencil', () => {\n  runTestsForTarget({\n    target: 'stencil',\n    generator: componentToStencil,\n    options: {},\n  });\n});\n/*describe('Stencil local', () => {\n  runTestsForTarget({\n    target: 'stencil',\n    generator: componentToStencil,\n    options: {},\n    logOutput: true,\n    only: ['eventProps'],\n  });\n});*/\n"
  },
  {
    "path": "packages/core/src/__tests__/styles.test.ts",
    "content": "import { parseJsx } from '../parsers/jsx';\n\nimport classAndClassName from './data/styles/class-and-className.raw.tsx?raw';\nimport classRaw from './data/styles/class.raw.tsx?raw';\nimport className from './data/styles/className.raw.tsx?raw';\n\ndescribe('Styles', () => {\n  test('class and className are equivalent', () => {\n    expect(parseJsx(classRaw)).toEqual(parseJsx(className));\n  });\n  test('class and CSS are merged', () => {\n    const component = parseJsx(classRaw);\n    expect(component).toMatchSnapshot();\n  });\n  test('className and CSS are merged', () => {\n    const component = parseJsx(className);\n    expect(component).toMatchSnapshot();\n  });\n  test('class and className are merged', () => {\n    const component = parseJsx(classAndClassName);\n    expect(component).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/svelte.test.ts",
    "content": "import { componentToSvelte } from '../generators/svelte';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Svelte', () => {\n  runTestsForTarget({ target: 'svelte', generator: componentToSvelte, options: {} });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/swift.test.ts",
    "content": "import { describe } from 'vitest';\nimport { componentToSwift } from '..';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('swift', () => {\n  const generator = componentToSwift;\n\n  runTestsForTarget({\n    options: {},\n    target: 'swift',\n    generator,\n  });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/basic.raw.svelte",
    "content": "<script>\n  let name = 'Steve';\n</script>\n\n<div>\n  <input bind:value={name} />\n  Hello! I can run in React, Vue, Solid, or Liquid!\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/bind-group.raw.svelte",
    "content": "<script>\n  let tortilla = 'Plain';\n  let fillings = [];\n</script>\n\n<div>\n  <!-- grouped radio inputs are mutually exclusive -->\n  <input type=\"radio\" bind:group={tortilla} value=\"Plain\" />\n  <input type=\"radio\" bind:group={tortilla} value=\"Whole wheat\" />\n  <input type=\"radio\" bind:group={tortilla} value=\"Spinach\" />\n  <br />\n  <br />\n  <!-- grouped checkbox inputs populate an array -->\n  <input type=\"checkbox\" bind:group={fillings} value=\"Rice\" />\n  <input type=\"checkbox\" bind:group={fillings} value=\"Beans\" />\n  <input type=\"checkbox\" bind:group={fillings} value=\"Cheese\" />\n  <input type=\"checkbox\" bind:group={fillings} value=\"Guac (extra)\" />\n  <p>Tortilla: {tortilla}</p>\n  <p>Fillings: {fillings}</p>\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/bind-property.raw.svelte",
    "content": "<script>\n  let value = 'hello';\n</script>\n\n<input {value} />\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/class-directive.raw.svelte",
    "content": "<script>\n  export let disabled = false;\n  let focus = true;\n</script>\n\n<input class=\"form-input\" class:disabled class:focus />\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/context.raw.svelte",
    "content": "<script>\n  import { getContext, setContext } from 'svelte';\n\n  let activeTab = 0;\n\n  let disabled = getContext('disabled');\n\n  setContext('activeTab', activeTab);\n</script>\n\n<div>\n  {activeTab}\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/each.raw.svelte",
    "content": "<script>\n  let numbers = ['one', 'two', 'three'];\n</script>\n\n<ul>\n  {#each numbers as num}\n    <li>{num}</li>\n  {/each}\n</ul>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/event-handlers.raw.svelte",
    "content": "<script>\n  function log(msg = 'hello') {\n    console.log(msg);\n  }\n</script>\n\n<div>\n  <button on:click={(a) => log('hi')}>Log</button>\n  <button on:click={log}>Log</button>\n  <button on:click={log()}>Log</button>\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/html.raw.svelte",
    "content": "<script>\n  let html = '<b>bold</b>';\n</script>\n\n<div>\n  {@html html}\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/if-else.raw.svelte",
    "content": "<script>\n  let show = true;\n\n  function toggle() {\n    show = !show;\n  }\n</script>\n\n{#if show}\n  <button on:click={toggle}> Hide </button>\n{:else}\n  <button on:click={toggle}> Show </button>\n{/if}\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/imports.raw.svelte",
    "content": "<script>\n  import Button from './Button.svelte';\n\n  let disabled = false;\n</script>\n\n<div>\n  <Button type=\"button\" {disabled}><slot /></Button>\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/lifecycle-hooks.raw.svelte",
    "content": "<script>\n  import { onMount, onDestroy, onAfterUpdate } from 'svelte';\n\n  onMount(() => {\n    console.log('onMount');\n  });\n\n  onDestroy(() => {\n    console.log('onDestroy');\n  });\n\n  onAfterUpdate(() => {\n    console.log('onAfterUpdate');\n  });\n</script>\n\n<div />\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/reactive-with-fn.raw.svelte",
    "content": "<script>\n  let a = 2;\n  let b = 5;\n  let result;\n\n  $: calculateResult(a, b);\n\n  function calculateResult(a, b) {\n    result = a * b;\n  }\n</script>\n\n<div>\n  <input type=\"number\" bind:value={a} />\n  <input type=\"number\" bind:value={b} />\n  Result: {result}\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/reactive.raw.svelte",
    "content": "<script>\n  let name = 'Steve';\n\n  $: lowercaseName = name.toLowerCase();\n</script>\n\n<div>\n  <input value={name} />\n  Lowercase: {lowercaseName}\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/slots.raw.svelte",
    "content": "<div>\n  <slot>default</slot>\n  <slot name=\"test\"><div>default</div></slot>\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/style.raw.svelte",
    "content": "<script>\n</script>\n\n<input class=\"form-input\" />\n\n<style>\n  input {\n    color: red;\n    font-size: 12px;\n  }\n\n  .form-input:focus {\n    outline: 1px solid blue;\n  }\n</style>\n"
  },
  {
    "path": "packages/core/src/__tests__/syntax/svelte/text-expressions.raw.svelte",
    "content": "<script>\n  let a = 5;\n  let b = 12;\n</script>\n\n<div>\n  normal:\n  {a + b}\n  <br />\n  conditional\n  {a > 2 ? 'hello' : 'bye'}\n</div>\n"
  },
  {
    "path": "packages/core/src/__tests__/taro.test.ts",
    "content": "import { componentToTaro } from '../generators/taro';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Taro', () => {\n  runTestsForTarget({ options: {}, target: 'taro', generator: componentToTaro });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/test-generator.ts",
    "content": "import { parseJsx } from '@/parsers/jsx';\nimport { Target } from '@/types/config';\nimport { BaseTranspilerOptions, TranspilerGenerator } from '@/types/transpiler';\nimport { describe, expect, test } from 'vitest';\nimport { MitosisComponent, Plugin, createTypescriptProject, parseSvelte } from '..';\n\nconst getRawFile = async (filePath: string) => {\n  const code = await import(`${filePath}?raw`).then((x) => x.default as string);\n  return { code, filePath: ['src', '__tests__', filePath].join('/') };\n};\n\ntype RawFile = ReturnType<typeof getRawFile>;\n\nconst getterState = getRawFile('./data/blocks/getter-state.raw.tsx');\nconst advancedFor = getRawFile('./data/for/advanced-for.raw.tsx');\n\nconst basicForFragment = getRawFile('./data/for/basic-for-fragment.raw.tsx');\nconst basicForShow = getRawFile('./data/for/basic-for-show.raw.tsx');\nconst basicBooleanAttribute = getRawFile('./data/basic-boolean-attribute.raw.tsx');\nconst basicOnMountUpdate = getRawFile('./data/basic-onMount-update.raw.tsx');\nconst basicContext = getRawFile('./data/basic-context.raw.tsx');\nconst complexMeta = getRawFile('./data/meta/sub/complex-meta.raw.tsx');\nconst figmaMeta = getRawFile('./data/meta/figma/figma.raw.tsx');\nconst basicOutputsMeta = getRawFile('./data/basic-outputs-meta.raw.tsx');\nconst basicOutputs = getRawFile('./data/basic-outputs.raw.tsx');\nconst subComponent = getRawFile('./data/sub-component.raw.tsx');\nconst componentWithContext = getRawFile('./data/context/component-with-context.raw.tsx');\nconst componentWithContextMultiRoot = getRawFile(\n  './data/context/component-with-context-multi-root.raw.tsx',\n);\n\nconst basic = getRawFile('./data/basic.raw.tsx');\nconst classnameProps = getRawFile('./data/props/classname-props.raw.tsx');\nconst basicAttribute = getRawFile('./data/basic-attribute.raw.tsx');\nconst basicMitosis = getRawFile('./data/basic-custom-mitosis-package.raw.tsx');\nconst basicChildComponent = getRawFile('./data/basic-child-component.raw.tsx');\nconst basicFor = getRawFile('./data/for/basic-for.raw.tsx');\nconst basicForNoTagReference = getRawFile('./data/for/basic-for-no-tag-reference.raw.tsx');\nconst basicRef = getRawFile('./data/ref/basic-ref.raw.tsx');\nconst basicRefAttributePassing = getRawFile('./data/ref/basic-ref-attribute-passing.raw.tsx');\nconst basicRefAttributePassingCustomRef = getRawFile(\n  './data/ref/basic-ref-attribute-passing-custom-ref.raw.tsx',\n);\nconst normalizeLayerNames = getRawFile('./data/normalize-layer-names.raw.tsx');\nconst basicForwardRef = getRawFile('./data/ref/basic-forwardRef.raw.tsx');\nconst basicForwardRefMetadata = getRawFile('./data/ref/basic-forwardRef-metadata.raw.tsx');\nconst basicRefPrevious = getRawFile('./data/ref/basic-ref-usePrevious.raw.tsx');\nconst basicRefAssignment = getRawFile('./data/ref/basic-ref-assignment.raw.tsx');\nconst eventInputAndChange = getRawFile('./data/events/event-input-and-change.raw.tsx');\nconst propsDestructure = getRawFile('./data/props/basic-props-destructure.raw.tsx');\nconst eventProps = getRawFile('./data/props/event-props.raw.tsx');\nconst functionProps = getRawFile('./data/function-props.raw.tsx');\nconst nestedStyles = getRawFile('./data/nested-styles.raw.tsx');\nconst preserveExportOrLocalStatement = getRawFile(\n  './data/basic-preserve-export-or-local-statement.raw.tsx',\n);\nconst svgComponent = getRawFile('./data/svg.raw.tsx');\nconst webComponent = getRawFile('./data/basic-web-component.raw.tsx');\nconst propsType = getRawFile('./data/types/component-props-type.raw.tsx');\nconst propsInterface = getRawFile('./data/types/component-props-interface.raw.tsx');\nconst preserveTyping = getRawFile('./data/types/preserve-typing.raw.tsx');\nconst typeDependency = getRawFile('./data/types/type-dependency.raw.tsx');\nconst typeExternalStore = getRawFile('./data/types/type-external-store.raw.tsx');\nconst typeExternalProps = getRawFile('./data/types/type-external-props.raw.tsx');\nconst typeGetterStore = getRawFile('./data/types/type-getter-store.raw.tsx');\n\nconst defaultProps = getRawFile('./data/default-props/default-props.raw.tsx');\nconst defaultPropsOutsideComponent = getRawFile(\n  './data/default-props/default-props-outside-component.raw.tsx',\n);\n\nconst signalsOnUpdate = getRawFile('./data/signals-onUpdate.raw.tsx');\n\nconst classRaw = getRawFile('./data/styles/class.raw.tsx');\nconst className = getRawFile('./data/styles/className.raw.tsx');\nconst classAndClassName = getRawFile('./data/styles/class-and-className.raw.tsx');\nconst classState = getRawFile('./data/styles/classState.raw.tsx');\nconst useStyle = getRawFile('./data/styles/use-style.raw.tsx');\nconst useStyleOutsideComponent = getRawFile('./data/styles/use-style-outside-component.raw.tsx');\nconst useStyleAndCss = getRawFile('./data/styles/use-style-and-css.raw.tsx');\nconst styleClassAndCss = getRawFile('./data/styles/style-class-and-css.raw.tsx');\nconst stylePropClassAndCss = getRawFile('./data/styles/style-prop-class-and-css.raw.tsx');\nconst useTarget = getRawFile('./data/use-target.raw.tsx');\nconst layerName = getRawFile('./data/layer-name.raw.tsx');\n\nconst button = getRawFile('./data/blocks/button.raw.tsx');\nconst classNameJsx = getRawFile('./data/blocks/classname-jsx.raw.tsx');\nconst columns = getRawFile('./data/blocks/columns.raw.tsx');\nconst contentSlotHtml = getRawFile('./data/blocks/content-slot-html.raw.tsx');\nconst contentSlotJsx = getRawFile('./data/blocks/content-slot-jsx.raw.tsx');\nconst customCode = getRawFile('./data/blocks/custom-code.raw.tsx');\nconst formBlock = getRawFile('./data/blocks/form.raw.tsx');\nconst image = getRawFile('./data/blocks/image.raw.tsx');\nconst imageState = getRawFile('./data/blocks/img-state.raw.tsx');\nconst img = getRawFile('./data/blocks/img.raw.tsx');\nconst inputBlock = getRawFile('./data/blocks/input.raw.tsx');\nconst inputParentBlock = getRawFile('./data/blocks/input-parent.raw.tsx');\nconst multipleOnUpdate = getRawFile('./data/blocks/multiple-onUpdate.raw.tsx');\nconst multipleOnUpdateWithDeps = getRawFile('./data/blocks/multiple-onUpdateWithDeps.raw.tsx');\nconst onInit = getRawFile('./data/blocks/onInit.raw.tsx');\nconst onInitPlain = getRawFile('./data/blocks/onInit-plain.raw.tsx');\nconst onEvent = getRawFile('./data/blocks/onEvent.raw.tsx');\nconst onInitonMount = getRawFile('./data/blocks/onInit-onMount.raw.tsx');\nconst onMount = getRawFile('./data/blocks/onMount.raw.tsx');\nconst onMountMultiple = getRawFile('./data/blocks/onMount-multiple.raw.tsx');\nconst onUpdate = getRawFile('./data/blocks/onUpdate.raw.tsx');\nconst onUpdateWithDeps = getRawFile('./data/blocks/onUpdateWithDeps.raw.tsx');\nconst rawText = getRawFile('./data/blocks/raw-text.raw.tsx');\nconst section = getRawFile('./data/blocks/section.raw.tsx');\nconst sectionState = getRawFile('./data/blocks/section-state.raw.tsx');\nconst selectBlock = getRawFile('./data/blocks/select.raw.tsx');\nconst selfRefCompWChildren = getRawFile(\n  './data/blocks/self-referencing-component-with-children.raw.tsx',\n);\nconst selfRefComp = getRawFile('./data/blocks/self-referencing-component.raw.tsx');\nconst slotDefault = getRawFile('./data/blocks/slot-default.raw.tsx');\nconst slotHtml = getRawFile('./data/blocks/slot-html.raw.tsx');\nconst slotJsx = getRawFile('./data/blocks/slot-jsx.raw.tsx');\nconst slotNamed = getRawFile('./data/blocks/slot-named.raw.tsx');\nconst stamped = getRawFile('./data/blocks/stamped-io.raw.tsx');\nconst submitButtonBlock = getRawFile('./data/blocks/submit-button.raw.tsx');\nconst text = getRawFile('./data/blocks/text.raw.tsx');\nconst textarea = getRawFile('./data/blocks/textarea.raw.tsx');\nconst video = getRawFile('./data/blocks/video.raw.tsx');\nconst referencingFunInsideHook = getRawFile(\n  './data/blocks/referencing-function-inside-hook.raw.tsx',\n);\nconst renderBlock = getRawFile('./data/blocks/render-block.raw.tsx');\nconst multipleSpreads = getRawFile('./data/spread/multiple-spreads.raw.tsx');\nconst spreadAttrs = getRawFile('./data/spread/spread-attrs.raw.tsx');\nconst spreadNestedProps = getRawFile('./data/spread/spread-nested-props.raw.tsx');\nconst spreadProps = getRawFile('./data/spread/spread-props.raw.tsx');\n\nconst builderRenderContent = getRawFile('./data/blocks/builder-render-content.raw.tsx');\n\nconst rootFragmentMultiNode = getRawFile('./data/blocks/root-fragment-multi-node.raw.tsx');\nconst renderContentExample = getRawFile('./data/render-content.raw.tsx');\nconst onClickToPressable = getRawFile('./data/react-native/onclick-to-pressable.raw.tsx');\nconst inputToTextInputRN = getRawFile('./data/react-native/text-input.raw.tsx');\n\n// State\nconst setState = getRawFile('./data/state/set-state.raw.tsx');\nconst expressionState = getRawFile('./data/state/expression-state.raw.tsx');\nconst contentState = getRawFile('./data/state/context-state.raw.tsx');\n\n// Store\nconst arrowFunctionInUseStore = getRawFile('./data/store/arrow-function-in-use-store.raw.tsx');\nconst NestedStore = getRawFile('./data/store/nested-store.raw.tsx');\nconst UseValueAndFnFromStore = getRawFile('./data/store/use-value-and-fn-from-store.raw.tsx');\nconst StringLiteralStore = getRawFile('./data/store/string-literal-store.raw.tsx');\nconst StringLiteralStoreKebab = getRawFile('./data/store/string-literal-store-kebab.raw.tsx');\nconst StoreAsyncFunction = getRawFile('./data/store-async-function.raw.tsx');\nconst StoreShadowVars = getRawFile('./data/store/store-shadow-vars.raw.tsx');\nconst StoreWithState = getRawFile('./data/store/store-with-state.raw.tsx');\nconst StoreComment = getRawFile('./data/store/store-comment.raw.tsx');\n\n// Swift\nconst SwiftPlainComponent = getRawFile('./data/swift/plain-component-export.raw.tsx');\nconst SwiftSingleQuotesReplacement = getRawFile('./data/swift/single-quotes-replacement.raw.tsx');\n/**\n * Use TestsWithFailFor when you want to write a test that you know will fail\n * on certain targets. This is useful in test driven development when you want\n * to capture a test before support for a specific target has been implemented.\n */\ntype TestWithFailFor = { file: RawFile; failFor: Target[] };\ntype Tests = { [index: string]: RawFile | TestWithFailFor };\nconst isTestWithFailFor = (test: RawFile | TestWithFailFor): test is TestWithFailFor => {\n  return 'failFor' in test;\n};\n\nconst SVELTE_SYNTAX_TESTS: Tests = {\n  basic: getRawFile('./syntax/svelte/basic.raw.svelte'),\n  bindGroup: getRawFile('./syntax/svelte/bind-group.raw.svelte'),\n  bindProperty: getRawFile('./syntax/svelte/bind-property.raw.svelte'),\n  classDirective: getRawFile('./syntax/svelte/class-directive.raw.svelte'),\n  context: getRawFile('./syntax/svelte/context.raw.svelte'),\n  each: getRawFile('./syntax/svelte/each.raw.svelte'),\n  html: getRawFile('./syntax/svelte/html.raw.svelte'),\n  eventHandlers: getRawFile('./syntax/svelte/event-handlers.raw.svelte'),\n  ifElse: getRawFile('./syntax/svelte/if-else.raw.svelte'),\n  imports: getRawFile('./syntax/svelte/imports.raw.svelte'),\n  lifecycleHooks: getRawFile('./syntax/svelte/lifecycle-hooks.raw.svelte'),\n  reactive: getRawFile('./syntax/svelte/reactive.raw.svelte'),\n  reactiveWithFn: getRawFile('./syntax/svelte/reactive-with-fn.raw.svelte'),\n  slots: getRawFile('./syntax/svelte/slots.raw.svelte'),\n  style: getRawFile('./syntax/svelte/style.raw.svelte'),\n  textExpressions: getRawFile('./syntax/svelte/text-expressions.raw.svelte'),\n};\n\nconst REACT_NATIVE_TESTS: Tests = {\n  onClickToPressable,\n  inputToTextInputRN,\n};\n\nconst SWIFT_TESTS: Tests = {\n  SwiftPlainComponent,\n  SwiftSingleQuotesReplacement,\n};\n\nconst BASIC_TESTS: Tests = {\n  Basic: basic,\n  BasicAttribute: basicAttribute,\n  BasicBooleanAttribute: basicBooleanAttribute,\n  BasicRef: basicRef,\n  basicRefAttributePassing,\n  basicRefAttributePassingCustomRef,\n  BasicRefPrevious: basicRefPrevious,\n  BasicRefAssignment: basicRefAssignment,\n  BasicChildComponent: basicChildComponent,\n  BasicFor: basicFor,\n  basicForFragment,\n  basicForNoTagReference: basicForNoTagReference,\n  functionProps: functionProps,\n  Input: inputBlock,\n  InputParent: inputParentBlock,\n  Submit: submitButtonBlock,\n  Select: selectBlock,\n  Button: button,\n  Textarea: textarea,\n  Img: img,\n  Video: video,\n  Section: section,\n  Text: text,\n  RawText: rawText,\n  'Stamped.io': stamped,\n  CustomCode: customCode,\n  Embed: customCode,\n  Image: image,\n  Columns: columns,\n  onUpdate: onUpdate,\n  onInit: onInit,\n  onInitPlain,\n  onEvent,\n  onUpdateWithDeps: onUpdateWithDeps,\n  onMount: onMount,\n  onMountMultiple,\n  propsType: propsType,\n  propsInterface: propsInterface,\n  defaultProps: defaultProps,\n  defaultPropsOutsideComponent,\n  preserveTyping,\n  typeDependency,\n  typeExternalStore,\n  typeExternalProps,\n  typeGetterStore,\n  defaultValsWithTypes: getRawFile('./data/types/component-with-default-values-types.raw.tsx'),\n  'import types': builderRenderContent,\n  subComponent,\n  nestedStyles,\n  eventProps,\n  propsDestructure,\n  'onInit & onMount': onInitonMount,\n  'Basic Context': basicContext,\n  'Basic Outputs Meta': basicOutputsMeta,\n  complexMeta,\n  figmaMeta,\n  'Basic Outputs': basicOutputs,\n  className: classNameJsx,\n  'Image State': imageState,\n  'Basic OnMount Update': basicOnMountUpdate,\n  preserveExportOrLocalStatement,\n  'class + css': classRaw,\n  'className + css': className,\n  'class + ClassName + css': classAndClassName,\n  'use-style': useStyle,\n  'use-style-and-css': useStyleAndCss,\n  layerName,\n  normalizeLayerNames,\n  styleClassAndCss,\n  stylePropClassAndCss,\n  'use-style-outside-component': useStyleOutsideComponent,\n  'self-referencing component with children': selfRefCompWChildren,\n  'self-referencing component': selfRefComp,\n  classnameProps,\n  rootFragmentMultiNode,\n  multipleSpreads,\n  spreadAttrs,\n  spreadNestedProps,\n  spreadProps,\n  renderContentExample,\n  arrowFunctionInUseStore,\n  setState,\n  expressionState,\n  contentState,\n  referencingFunInsideHook,\n  svgComponent,\n  webComponent,\n  renderBlock,\n  useTarget,\n  signalsOnUpdate,\n  getterState,\n  eventInputAndChange,\n  NestedStore,\n  StoreShadowVars,\n  StoreWithState,\n  UseValueAndFnFromStore,\n  StoreComment,\n  'store-async-function': StoreAsyncFunction,\n  'string-literal-store': StringLiteralStore,\n  'string-literal-store-kebab': {\n    file: StringLiteralStoreKebab,\n    failFor: [\n      'alpine',\n      'customElement',\n      'mitosis',\n      'react',\n      'reactNative',\n      'solid',\n      'svelte',\n      'swift',\n      'template',\n      'webcomponent',\n      'stencil',\n      'qwik',\n      'preact',\n      'lit',\n      'rsc',\n      'taro',\n    ],\n  },\n};\n\nconst SLOTS_TESTS: Tests = {\n  ContentSlotJSX: contentSlotJsx,\n  ContentSlotHtml: contentSlotHtml,\n  SlotDefault: slotDefault,\n  SlotJsx: slotJsx,\n  SlotHtml: slotHtml,\n  SlotNamed: slotNamed,\n  classState,\n};\n\nconst MULTI_ON_UPDATE_TESTS: Tests = {\n  multipleOnUpdate: multipleOnUpdate,\n  multipleOnUpdateWithDeps: multipleOnUpdateWithDeps,\n};\n\nconst FORM_BLOCK_TESTS: Tests = {\n  Form: formBlock,\n};\n\nconst FOR_SHOW_TESTS: Tests = {\n  Section: sectionState,\n  Basic: basicForShow,\n  Advanced: advancedFor,\n};\n\nconst FORWARD_REF_TESTS: Tests = {\n  basicForwardRef,\n  basicForwardRefMetadata,\n};\n\nconst SHOW_TESTS: Tests = {\n  rootShow: getRawFile('./data/blocks/rootShow.raw.tsx'),\n  nestedShow: getRawFile('./data/show/nested-show.raw.tsx'),\n  showWithFor: getRawFile('./data/show/show-with-for.raw.tsx'),\n  showWithRootText: getRawFile('./data/show/show-with-root-text.raw.tsx'),\n  showWithOtherValues: getRawFile('./data/show/show-with-other-values.raw.tsx'),\n  showExpressions: getRawFile('./data/show/show-expressions.raw.tsx'),\n};\n\nconst ADVANCED_REF: Tests = {\n  AdvancedRef: getRawFile('./data/ref/advanced-ref.raw.tsx'),\n};\n\nconst ON_UPDATE_RETURN: Tests = {\n  basicOnUpdateReturn: getRawFile('./data/basic-onUpdate-return.raw.tsx'),\n};\n\nconst IMPORT_TEST: Tests = {\n  importRaw: getRawFile('./data/import.raw.tsx'),\n};\n\nconst ANGULAR_TESTS: Tests = {\n  prettierInline: getRawFile('./data/angular/prettier-inline.raw.tsx'),\n  customSelector: getRawFile('./data/angular/custom-selector.raw.tsx'),\n  nativeAttributes: getRawFile('./data/angular/native-attributes.raw.tsx'),\n  outputEventBinding: getRawFile('./data/angular/output-event-bindings.raw.tsx'),\n  dynamicComponent: getRawFile('./data/angular/dynamic-component.raw.tsx'),\n  dynamicComponentWithEventArg: getRawFile(\n    './data/angular/dynamic-component-with-event-args.raw.tsx',\n  ),\n  twoForsTrackBy: getRawFile('./data/angular/two-fors.raw.tsx'),\n  stateInit: getRawFile('./data/angular/state-init.raw.tsx'),\n  stateInitSequence: getRawFile('./data/angular/state-init-sequence.raw.tsx'),\n  useObjectWrapper: getRawFile('./data/angular/use-object-wrapper.raw.tsx'),\n  allSpread: getRawFile('./data/angular/all-spread.raw.tsx'),\n  changeDetection: getRawFile('./data/angular/change-detection.raw.tsx'),\n  sanitizeInnerHTML: getRawFile('./data/angular/sanitize-inner-html.raw.tsx'),\n  signals: getRawFile('./data/angular/signals-test.raw.tsx'),\n};\n\nconst CONTEXT_TEST: Tests = {\n  componentWithContext,\n  componentWithContextMultiRoot,\n};\n\nconst JSX_TESTS: Tests[] = [\n  BASIC_TESTS,\n  SLOTS_TESTS,\n  SHOW_TESTS,\n  FORWARD_REF_TESTS,\n  MULTI_ON_UPDATE_TESTS,\n  FORM_BLOCK_TESTS,\n  ADVANCED_REF,\n  ON_UPDATE_RETURN,\n  FOR_SHOW_TESTS,\n  CONTEXT_TEST,\n];\n\nconst JSX_TESTS_FOR_TARGET: Partial<Record<Target, Tests[]>> = {\n  alpine: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS, // Slots not implemented\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  react: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    // FOR_SHOW_TESTS,\n  ],\n  rsc: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    // FOR_SHOW_TESTS,\n  ],\n  angular: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    IMPORT_TEST,\n    ANGULAR_TESTS,\n  ],\n  lit: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  marko: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  mitosis: [\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    FOR_SHOW_TESTS,\n    CONTEXT_TEST,\n  ],\n  webcomponent: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    // FORM_BLOCK_TESTS\n  ],\n  vue: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  svelte: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  html: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    // FORM_BLOCK_TESTS\n  ],\n  stencil: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    FOR_SHOW_TESTS,\n  ],\n  solid: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  reactNative: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n    REACT_NATIVE_TESTS,\n    // FOR_SHOW_TESTS,\n  ],\n  liquid: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  qwik: [\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    FOR_SHOW_TESTS,\n  ],\n  taro: [\n    CONTEXT_TEST,\n    BASIC_TESTS,\n    SLOTS_TESTS,\n    SHOW_TESTS,\n    FORWARD_REF_TESTS,\n    MULTI_ON_UPDATE_TESTS,\n    FORM_BLOCK_TESTS,\n    ADVANCED_REF,\n    ON_UPDATE_RETURN,\n  ],\n  swift: [\n    // CONTEXT_TEST,\n    SWIFT_TESTS,\n    // BASIC_TESTS,\n    // SLOTS_TESTS,\n    // SHOW_TESTS,\n    // FORWARD_REF_TESTS,\n    // MULTI_ON_UPDATE_TESTS,\n    // FORM_BLOCK_TESTS,\n    // ADVANCED_REF,\n    // ON_UPDATE_RETURN,\n    // FOR_SHOW_TESTS,\n  ],\n};\n\nconst metaDataPlugin: Plugin = () => ({\n  code: {\n    pre: (code: string, json: MitosisComponent) => {\n      if (json.meta.useMetadata) {\n        return `\n          /**\n          useMetadata:\n          ${JSON.stringify(json.meta.useMetadata)}\n          */\n\n          ${code}`;\n      }\n\n      return code;\n    },\n  },\n});\n\nexport const runTestsForJsx = () => {\n  test('Remove Internal mitosis package', async () => {\n    const component = parseJsx((await basicMitosis).code, {\n      compileAwayPackages: ['@dummy/custom-mitosis'],\n    });\n    expect(component).toMatchSnapshot();\n  });\n\n  const configurations: Array<Parameters<typeof parseJsx>[1] & { testName: string }> = [\n    { typescript: true, testName: 'Typescript' },\n    { typescript: false, testName: 'Javascript' },\n  ];\n\n  configurations.forEach((config) => {\n    describe(config.testName, () => {\n      JSX_TESTS.forEach((tests) => {\n        Object.keys(tests).forEach((key) => {\n          test(key, async () => {\n            const singleTest = tests[key];\n            const testPromise = isTestWithFailFor(singleTest) ? singleTest.file : singleTest;\n            const t = await testPromise;\n            const component = parseJsx(t.code, { ...config, filePath: t.filePath });\n            expect(component).toMatchSnapshot();\n          });\n        });\n      });\n    });\n  });\n};\nexport const runTestsForSvelteSyntax = () => {\n  Object.keys(SVELTE_SYNTAX_TESTS).forEach((key) => {\n    test(key, async () => {\n      const singleTest = SVELTE_SYNTAX_TESTS[key];\n      const t = isTestWithFailFor(singleTest) ? singleTest.file : singleTest;\n      const component = await parseSvelte((await t).code);\n      expect(component).toMatchSnapshot();\n    });\n  });\n};\n\nconst tsProject = createTypescriptProject(__dirname + '/tsconfig.json');\n\nconst filterTests = (testArray?: Tests[], only?: string[]) =>\n  testArray?.map((tests: Tests) => {\n    if (!only) {\n      return tests;\n    }\n\n    const filteredTests: Tests = {};\n\n    Object.entries(tests).forEach(([key, test]) => {\n      if (only.some((o) => o.toLowerCase() === key.toLowerCase())) {\n        filteredTests[key] = test;\n      }\n    });\n\n    return filteredTests;\n  });\n\nexport const runTestsForTarget = <X extends BaseTranspilerOptions>({\n  target,\n  generator,\n  options,\n  only,\n  logOutput,\n}: {\n  target: Target;\n  generator: TranspilerGenerator<X>;\n  options: X;\n  logOutput?: boolean;\n  only?: string[]; // Test only some tests based on key\n}) => {\n  const configurations: { options: X; testName: string }[] = only\n    ? [\n        {\n          options: { ...options, plugins: [metaDataPlugin] },\n          testName: 'Only Test',\n        },\n      ]\n    : [\n        {\n          options: { ...options, typescript: false, plugins: [metaDataPlugin] },\n          testName: 'Javascript Test',\n        },\n        {\n          options: { ...options, typescript: true, plugins: [metaDataPlugin] },\n          testName: 'Typescript Test',\n        },\n      ];\n\n  type ParserConfig = {\n    name: 'jsx' | 'svelte';\n    parser: (args: { code: string; filePath: string }) => Promise<MitosisComponent>;\n    testsArray?: Tests[];\n  };\n\n  configurations.forEach(({ options, testName }) => {\n    const parsers: ParserConfig[] = [\n      {\n        name: 'jsx',\n        parser: async ({ code, filePath }) =>\n          parseJsx(\n            code,\n            options.typescript\n              ? {\n                  typescript: true,\n                  filePath,\n                  tsProject,\n                }\n              : {\n                  typescript: false,\n                  filePath,\n                },\n          ),\n        testsArray: filterTests(JSX_TESTS_FOR_TARGET[target], only),\n      },\n      {\n        name: 'svelte',\n        parser: async ({ code }) => parseSvelte(code),\n        testsArray: filterTests([SVELTE_SYNTAX_TESTS], only),\n      },\n    ];\n    for (const { name, parser, testsArray } of parsers) {\n      if (testsArray && (only || Object.keys(testsArray[0]).length > 0)) {\n        describe(name, () => {\n          if (!only) {\n            if (name === 'jsx' && options.typescript === false) {\n              test('Remove Internal mitosis package', async () => {\n                const t = await basicMitosis;\n                const component = parseJsx(t.code, {\n                  compileAwayPackages: ['@dummy/custom-mitosis'],\n                  filePath: t.filePath,\n                });\n                const output = generator(options)({ component, path: t.filePath });\n                expect(output).toMatchSnapshot();\n              });\n            }\n          }\n          describe(testName, () => {\n            testsArray.forEach((tests) => {\n              Object.keys(tests).forEach((key) => {\n                const singleTest = tests[key];\n                const shouldFail =\n                  isTestWithFailFor(singleTest) && singleTest.failFor.includes(target);\n                test(key, async () => {\n                  const t = isTestWithFailFor(singleTest)\n                    ? await singleTest.file\n                    : await singleTest;\n                  const component = await parser(t);\n                  const getOutput = () => generator(options)({ component, path: t.filePath });\n                  if (shouldFail) {\n                    expect(getOutput).toThrowError();\n                  } else {\n                    try {\n                      const output = getOutput();\n                      if (logOutput) {\n                        process.stdout.write(`--- Start: ${key} ---\\n\\n`);\n                        process.stdout.write(output);\n                        process.stdout.write(`--- End: ${key} ---\\n\\n`);\n                      }\n                      expect(output).toMatchSnapshot();\n                    } catch (error) {\n                      if (logOutput) {\n                        throw error;\n                      } else {\n                        expect(getOutput).toThrowErrorMatchingSnapshot();\n                      }\n                    }\n                  }\n                });\n              });\n            });\n          });\n        });\n      }\n    }\n  });\n};\n"
  },
  {
    "path": "packages/core/src/__tests__/tsconfig.json",
    "content": "/**\n * This tsconfig is used by our tests.\n */\n{\n  \"compilerOptions\": {\n    \"lib\": [\"es7\", \"dom\", \"esnext\", \"esnext.asynciterable\"],\n    \"composite\": true,\n    \"strict\": true,\n    \"declaration\": true,\n    \"jsx\": \"preserve\",\n    \"skipLibCheck\": true,\n    \"skipDefaultLibCheck\": true,\n    \"exactOptionalPropertyTypes\": false,\n    \"esModuleInterop\": true,\n    \"target\": \"ES5\",\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@builder.io/mitosis\": [\"../\"]\n    },\n    \"jsxImportSource\": \"@builder.io/mitosis\",\n    \"types\": [\"vitest/globals\"]\n  },\n  \"include\": [\"data/**/*.raw.tsx\", \"../typings.d.ts\", \"../jsx-runtime.d.ts\"],\n  \"exclude\": [\"src/**/*.raw.svelte\"]\n}\n"
  },
  {
    "path": "packages/core/src/__tests__/vue-composition.test.ts",
    "content": "import { componentToVue } from '../generators/vue';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Vue', () => {\n  runTestsForTarget({ target: 'vue', generator: componentToVue, options: { api: 'composition' } });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/vue.test.ts",
    "content": "import { componentToVue } from '../generators/vue';\nimport { runTestsForTarget } from './test-generator';\n\ndescribe('Vue', () => {\n  runTestsForTarget({ options: { api: 'options' }, target: 'vue', generator: componentToVue });\n});\n"
  },
  {
    "path": "packages/core/src/__tests__/webcomponent.test.ts",
    "content": "import { parseJsx } from '..';\nimport { componentToCustomElement } from '../generators/html';\nimport { runTestsForTarget } from './test-generator';\n\nimport shadowDom from './data/blocks/shadow-dom.raw.tsx?raw';\n\ndescribe('webcomponent', () => {\n  const generator = componentToCustomElement;\n\n  runTestsForTarget({ options: {}, target: 'webcomponent', generator });\n\n  test('Shadow DOM', () => {\n    const component = parseJsx(shadowDom);\n    const html = generator()({ component });\n    expect(html).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/constants/hooks.ts",
    "content": "export const HOOKS = {\n  STORE: 'useStore',\n  STATE: 'useState',\n  CONTEXT: 'useContext',\n  REF: 'useRef',\n  DEFAULT_PROPS: 'useDefaultProps',\n  STYLE: 'useStyle',\n  TARGET: 'useTarget',\n  METADATA: 'useMetadata',\n  MOUNT: 'onMount',\n  EVENT: 'onEvent',\n  UNMOUNT: 'onUnMount',\n  UPDATE: 'onUpdate',\n  INIT: 'onInit',\n  SET_CONTEXT: 'setContext',\n} as const;\n"
  },
  {
    "path": "packages/core/src/constants/html_tags.ts",
    "content": "export const VALID_HTML_TAGS = [\n  'html',\n  'base',\n  'head',\n  'link',\n  'meta',\n  'style',\n  'title',\n  'body',\n  'address',\n  'article',\n  'aside',\n  'footer',\n  'header',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'main',\n  'nav',\n  'section',\n  'blockquote',\n  'dd',\n  'div',\n  'dl',\n  'dt',\n  'figcaption',\n  'figure',\n  'hr',\n  'li',\n  'menu',\n  'ol',\n  'p',\n  'pre',\n  'ul',\n  'a',\n  'abbr',\n  'b',\n  'bdi',\n  'bdo',\n  'br',\n  'cite',\n  'code',\n  'data',\n  'dfn',\n  'em',\n  'i',\n  'kbd',\n  'mark',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'small',\n  'span',\n  'strong',\n  'sub',\n  'sup',\n  'time',\n  'u',\n  'var',\n  'wbr',\n  'area',\n  'audio',\n  'img',\n  'map',\n  'track',\n  'video',\n  'embed',\n  'iframe',\n  'object',\n  'param',\n  'picture',\n  'portal',\n  'source',\n  'svg',\n  'math',\n  'canvas',\n  'noscript',\n  'script',\n  'del',\n  'ins',\n  'caption',\n  'col',\n  'colgroup',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'tr',\n  'button',\n  'datalist',\n  'fieldset',\n  'form',\n  'input',\n  'label',\n  'legend',\n  'meter',\n  'optgroup',\n  'option',\n  'output',\n  'progress',\n  'select',\n  'textarea',\n  'details',\n  'dialog',\n  'summary',\n  'slot',\n  'template',\n  // tags below are SVG tags. See the below article for list of SVG tags\n  // https://developer.mozilla.org/en-US/docs/Web/SVG/Element\n  'animate',\n  'animateMotion',\n  'animateTransform',\n  'circle',\n  'clipPath',\n  'defs',\n  'desc',\n  'discard',\n  'ellipse',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'filter',\n  'foreignObject',\n  'g',\n  'hatch',\n  'hatchpath',\n  'image',\n  'line',\n  'linearGradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialGradient',\n  'rect',\n  'set',\n  'stop',\n  'switch',\n  'symbol',\n  'text',\n  'textPath',\n  'tspan',\n  'use',\n  'view',\n];\n\nexport const SELF_CLOSING_HTML_TAGS = new Set([\n  'area',\n  'base',\n  'br',\n  'col',\n  'embed',\n  'hr',\n  'img',\n  'input',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr',\n]);\n"
  },
  {
    "path": "packages/core/src/constants/media-sizes.ts",
    "content": "export type Size = 'large' | 'medium' | 'small';\nexport const sizeNames: Size[] = ['small', 'medium', 'large'];\n\nexport const sizes = {\n  small: {\n    min: 320,\n    default: 321,\n    max: 640,\n  },\n  medium: {\n    min: 641,\n    default: 642,\n    max: 991,\n  },\n  large: {\n    min: 990,\n    default: 991,\n    max: 1200,\n  },\n  getWidthForSize(size: Size) {\n    return this[size].default;\n  },\n  getSizeForWidth(width: number) {\n    for (const size of sizeNames) {\n      const value = this[size];\n      if (width <= value.max) {\n        return size;\n      }\n    }\n    return 'large';\n  },\n};\n\nexport const mediaQueryRegex = /@\\s*?media\\s*?\\(\\s*?max-width\\s*?:\\s*?(\\d+)(px)\\s*?\\)\\s*?/;\n"
  },
  {
    "path": "packages/core/src/constants/method-literal-prefix.ts",
    "content": ""
  },
  {
    "path": "packages/core/src/flow.ts",
    "content": "import { JSX } from '../jsx-runtime';\n/**\n * Flow control based on Solid\n *\n * https://github.com/ryansolid/solid/blob/master/packages/solid/src/rendering/flow.ts\n * https://github.com/ryansolid/solid/blob/master/documentation/rendering.md\n *\n * These elements all compile away so they return `null`\n */\n\nexport function For<T, U extends JSX.Element>(props: {\n  each?: readonly T[];\n  children: (item: T, index: number) => U;\n}): any {\n  return null;\n}\n\nexport function Slot<T, U extends JSX.Element>(\n  props:\n    | {\n        name?: JSX.Element;\n      }\n    | { [key: string]: any },\n): any {\n  return null;\n}\n\nexport function Show<T>(props: {\n  when: T | undefined | null | false;\n  else?: JSX.Element;\n  children?: JSX.Element | null;\n}): any {\n  return null;\n}\n\nexport function Fragment(props: { children: JSX.Element | JSX.Element[] }): any {\n  return null;\n}\n"
  },
  {
    "path": "packages/core/src/generators/alpine/generate.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS } from '@/constants/html_tags';\nimport { ToAlpineOptions } from '@/generators/alpine/types';\nimport { babelTransformCode } from '@/helpers/babel-transform';\nimport { dashCase } from '@/helpers/dash-case';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { replaceIdentifiers } from '@/helpers/replace-identifiers';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { ForNode, MitosisNode, checkIsForNode } from '@/types/mitosis-node';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { camelCase, flowRight as compose, curry, flow } from 'lodash';\nimport { format } from 'prettier/standalone';\nimport { renderMountHook } from './render-mount-hook';\nimport { hasRootUpdateHook, renderUpdateHooks } from './render-update-hooks';\n\nexport const checkIsComponentNode = (node: MitosisNode): boolean =>\n  node.name === '@builder.io/mitosis/component';\n\n/**\n * Test if the binding expression would be likely to generate\n * valid or invalid liquid. If we generate invalid liquid tags\n * Shopify will reject our PUT to update the template\n */\nexport const isValidAlpineBinding = (str = '') => {\n  return true;\n  /*\n  const strictMatches = Boolean(\n    // Test for our `context.shopify.liquid.*(expression), which\n    // we regex out later to transform back into valid liquid expressions\n    str.match(/(context|ctx)\\s*(\\.shopify\\s*)?\\.liquid\\s*\\./),\n  );\n\n  return (\n    strictMatches ||\n    // Test is the expression is simple and would map to Shopify bindings\t    // Test for our `context.shopify.liquid.*(expression), which\n    // e.g. `state.product.price` -> `{{product.price}}\t    // we regex out later to transform back into valid liquid expressions\n    Boolean(str.match(/^[a-z0-9_\\.\\s]+$/i))\n  );\n  */\n};\n\nconst removeOnFromEventName = (str: string) => str.replace(/^on/, '');\nconst removeTrailingSemicolon = (str: string) => str.replace(/;$/, '');\nconst trim = (str: string) => str.trim();\n\nconst replaceInputRefs = curry((json: MitosisComponent, str: string) => {\n  getRefs(json).forEach((value) => {\n    str = str.replaceAll(value, `this.$refs.${value}`);\n  });\n\n  return str;\n});\nconst replaceStateWithThis = (str: string) => str.replaceAll('state.', 'this.');\nconst getStateObjectString = (json: MitosisComponent) =>\n  flow(\n    getStateObjectStringFromComponent,\n    trim,\n    replaceInputRefs(json),\n    renderMountHook(json),\n    renderUpdateHooks(json),\n    replaceStateWithThis,\n    // cleanup bad regexes that result in malformed JSON strings that start with `{,`\n    (x) => (x.startsWith('{,') ? x.replace('{,', '{') : x),\n  )(json);\n\nconst bindEventHandlerKey = compose(dashCase, removeOnFromEventName);\nconst bindEventHandlerValue = compose(\n  (x: string) =>\n    replaceIdentifiers({\n      code: x,\n      from: 'event',\n      to: '$event',\n    }),\n  removeTrailingSemicolon,\n  trim,\n  removeSurroundingBlock,\n  stripStateAndPropsRefs,\n);\n\nconst bindEventHandler =\n  ({ useShorthandSyntax }: ToAlpineOptions) =>\n  (eventName: string, code: string) => {\n    const bind = useShorthandSyntax ? '@' : 'x-on:';\n    return ` ${bind}${bindEventHandlerKey(eventName)}=\"${bindEventHandlerValue(code).trim()}\"`;\n  };\n\nconst mappers: {\n  [key: string]: (json: MitosisNode, options: ToAlpineOptions) => string;\n} = {\n  For: (json, options) =>\n    !(\n      checkIsForNode(json) &&\n      isValidAlpineBinding(json.bindings.each?.code) &&\n      isValidAlpineBinding(json.scope.forName)\n    )\n      ? ''\n      : `<template x-for=\"${json.scope.forName} in ${stripStateAndPropsRefs(\n          json.bindings.each?.code,\n        )}\">\n    ${(json.children ?? []).map((item) => blockToAlpine(item, options)).join('\\n')}\n    </template>`,\n  Fragment: (json, options) => blockToAlpine({ ...json, name: 'div' }, options),\n  Show: (json, options) =>\n    !isValidAlpineBinding(json.bindings.when?.code)\n      ? ''\n      : `<template x-if=\"${stripStateAndPropsRefs(json.bindings.when?.code)}\">\n    ${(json.children ?? []).map((item) => blockToAlpine(item, options)).join('\\n')}\n    </template>`,\n};\n\n// TODO: spread support\nconst blockToAlpine = (json: MitosisNode | ForNode, options: ToAlpineOptions = {}): string => {\n  if (mappers[json.name]) {\n    return mappers[json.name](json, options);\n  }\n\n  // TODO: Add support for `{props.children}` bindings\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n\n  if (json.bindings._text?.code) {\n    return isValidAlpineBinding(json.bindings._text.code)\n      ? `<span x-html=\"${stripStateAndPropsRefs(json.bindings._text.code as string)}\"></span>`\n      : '';\n  }\n\n  let str = `<${json.name} `;\n\n  /*\n  // Copied from the liquid generator. Not sure what it does. \n  if (\n    json.bindings._spread?.code === '_spread' &&\n    isValidAlpineBinding(json.bindings._spread.code)\n  ) {\n    str += `\n          <template x-for=\"_attr in ${json.bindings._spread.code}\">\n            {{ _attr[0] }}=\"{{ _attr[1] }}\"\n          </template>\n        `;\n  }\n  */\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    str += ` ${key}=\"${value}\" `;\n  }\n\n  for (const key in json.bindings) {\n    if (key === '_spread' || key === 'css') {\n      continue;\n    }\n    const { code: value, type: bindingType } = json.bindings[key]!;\n    // TODO: proper babel transform to replace. Util for this\n    const useValue = stripStateAndPropsRefs(value);\n\n    if (checkIsEvent(key)) {\n      str += bindEventHandler(options)(key, value);\n    } else if (key === 'ref') {\n      str += ` x-ref=\"${useValue}\"`;\n    } else if (isValidAlpineBinding(useValue)) {\n      const bind = options.useShorthandSyntax && bindingType !== 'spread' ? ':' : 'x-bind:';\n      str += ` ${bind}${bindingType === 'spread' ? '' : key}=\"${useValue}\" `.replace(':=', '=');\n    }\n  }\n  return SELF_CLOSING_HTML_TAGS.has(json.name)\n    ? `${str} />`\n    : `${str}>${(json.children ?? []).map((item) => blockToAlpine(item, options)).join('\\n')}</${\n        json.name\n      }>`;\n};\n\nexport const componentToAlpine: TranspilerGenerator<ToAlpineOptions> =\n  (_options = {}) =>\n  ({ component }) => {\n    const options = initializeOptions({ target: 'alpine', component, defaults: _options });\n\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    const css = collectCss(json);\n    stripMetaProperties(json);\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    const componentName = camelCase(json.name) || 'MyComponent';\n\n    const stateObjectString = getStateObjectString(json);\n    // Set x-data on root element\n    json.children[0].properties['x-data'] = options.inlineState\n      ? stateObjectString\n      : `${componentName}()`;\n\n    if (hasRootUpdateHook(json)) {\n      json.children[0].properties['x-effect'] = 'onUpdate';\n    }\n\n    let str = css.trim().length ? `<style>${css}</style>` : '';\n    str += json.children.map((item) => blockToAlpine(item, options)).join('\\n');\n\n    if (!options.inlineState) {\n      str += `<script>\n          ${babelTransformCode(`document.addEventListener('alpine:init', () => {\n              Alpine.data('${componentName}', () => (${stateObjectString}))\n          })`)}\n        </script>`;\n    }\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'html',\n          htmlWhitespaceSensitivity: 'ignore',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/alpine/index.ts",
    "content": "export * from './generate';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/alpine/render-mount-hook.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { curry } from 'lodash';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\nimport { hasWatchHooks, renderWatchHooks } from './render-update-hooks';\n\nfunction shouldRenderMountHook(json: MitosisComponent): boolean {\n  return json.hooks.onMount.length > 0 || hasWatchHooks(json);\n}\n\nexport const renderMountHook = curry((json: MitosisComponent, objectString: string) => {\n  return shouldRenderMountHook(json)\n    ? objectString.replace(\n        /(?:,)?(\\s*)(}\\s*)$/,\n        `, init() {\n      ${renderWatchHooks(json)}\n      ${stringifySingleScopeOnMount(json)}\n    }$1$2`,\n      )\n    : objectString;\n});\n"
  },
  {
    "path": "packages/core/src/generators/alpine/render-update-hooks.ts",
    "content": "import { BaseHook, MitosisComponent } from '@/types/mitosis-component';\nimport { curry } from 'lodash';\n\nconst extractCode = (hook: BaseHook) => hook.code;\nfunction renderRootUpdateHook(hooks: BaseHook[], output: string) {\n  if (hooks.length === 0) {\n    return output;\n  }\n  const str = `onUpdate() {\n        ${hooks.map(extractCode).join('\\n')}\n    }`;\n\n  return output.replace(/,?(\\s*})$/, `,\\n${str}$1`);\n}\n\nfunction getRootUpdateHooks(json: MitosisComponent) {\n  return (json.hooks.onUpdate ?? []).filter((hook) => hook.deps == '');\n}\n\nexport function hasRootUpdateHook(json: MitosisComponent): boolean {\n  return getRootUpdateHooks(json).length > 0;\n}\n\nexport const renderUpdateHooks = curry((json: MitosisComponent, output: string) => {\n  return renderRootUpdateHook(getRootUpdateHooks(json), output);\n});\n\nfunction getWatchHooks(json: MitosisComponent) {\n  return (json.hooks.onUpdate ?? []).filter((hook) => hook.deps?.match(/state|this/));\n}\n\nexport const hasWatchHooks = (json: MitosisComponent): boolean => {\n  return getWatchHooks(json).length > 0;\n};\n\nfunction renderWatchHook(hook: BaseHook): string {\n  const deps = (hook.deps ?? '')\n    ?.slice(1)\n    .slice(0, -1)\n    .split(', ')\n    .filter((dep) => dep.match(/state|this/));\n\n  return deps\n    .map(\n      (dep) =>\n        `this.$watch('${dep.replace(/(state|this)\\./, '')}', (value, oldValue) => { ${\n          hook.code\n        } });`,\n    )\n    .join('\\n');\n}\n\nexport const renderWatchHooks = (json: MitosisComponent): string => {\n  return hasWatchHooks(json) ? getWatchHooks(json).map(renderWatchHook).join('\\n') : '';\n};\n"
  },
  {
    "path": "packages/core/src/generators/alpine/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToAlpineOptions extends BaseTranspilerOptions {\n  /**\n   * use @on and : instead of `x-on` and `x-bind`\n   */\n  useShorthandSyntax?: boolean;\n  /**\n   * If true, the javascript won't be extracted into a separate script block.\n   */\n  inlineState?: boolean;\n}\n\nexport type AlpineMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/angular/README.md",
    "content": "# Angular Configuration\n\n## Global Options\n\nAdd the options to `options.angular` inside [MitosisConfig](https://github.com/BuilderIO/mitosis/blob/main/docs/configuration.md):\n\n```ts\nexport interface ToAngularOptions extends BaseTranspilerOptions {\n  standalone?: boolean;\n  preserveImports?: boolean;\n  preserveFileExtensions?: boolean;\n  importMapper?: Function;\n  bootstrapMapper?: Function;\n}\n```\n\n## Component Metadata\n\nUse the `useMetadata.angular` hook to pass some component options to a single component:\n\n```ts\nexport type ComponentMetadata = {\n    ...\n  angular?: {\n    /* Mitosis uses `attr.XXX` as default see https://angular.io/guide/attribute-binding.\n    If you want to skip adding `attr` as prefix you can use the 'nativeAttributes' array.\n    An example would be `<input disabled>` which can be boolean. With `attr` it becomes a string, which is always true.  */\n    nativeAttributes?: string[];\n      /* Overwrite default selector for component. Default will be kebab case (MyComponent -> my-component) */\n      selector?: string;\n  };\n    ...\n}\n```\n"
  },
  {
    "path": "packages/core/src/generators/angular/classic/blocks.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS, VALID_HTML_TAGS } from '@/constants/html_tags';\nimport { HELPER_FUNCTIONS, hasFirstChildKeyAttribute } from '@/generators/angular/helpers';\nimport {\n  addCodeNgAfterViewInit,\n  addCodeToOnInit,\n  addCodeToOnUpdate,\n  makeReactiveState,\n} from '@/generators/angular/helpers/hooks';\nimport { parseSelector } from '@/generators/angular/helpers/parse-selector';\nimport { AngularBlockOptions, ToAngularOptions } from '@/generators/angular/types';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { checkIsBindingNativeEvent, checkIsEvent } from '@/helpers/event-handlers';\nimport { getBuilderTagName } from '@/helpers/get-tag-name';\nimport isChildren from '@/helpers/is-children';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { isSlotProperty, stripSlotPrefix, toKebabSlot } from '@/helpers/slots';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport { BaseHook, MitosisComponent } from '@/types/mitosis-component';\nimport { Binding, MitosisNode, checkIsForNode } from '@/types/mitosis-node';\nimport { pipe } from 'fp-ts/function';\nimport { isString, kebabCase } from 'lodash';\n\nconst mappers: {\n  [key: string]: (\n    root: MitosisComponent,\n    json: MitosisNode,\n    options: ToAngularOptions,\n    blockOptions: AngularBlockOptions,\n  ) => string;\n} = {\n  Fragment: (root, json, options, blockOptions) => {\n    return `<ng-container>${json.children\n      .map((item) => blockToAngular({ root, json: item, options, blockOptions }))\n      .join('\\n')}</ng-container>`;\n  },\n  Slot: (root, json, options, blockOptions) => {\n    const renderChildren = () =>\n      json.children\n        ?.map((item) => blockToAngular({ root, json: item, options, blockOptions }))\n        .join('\\n');\n\n    return `<ng-content ${Object.entries({ ...json.bindings, ...json.properties })\n      .map(([binding, value]) => {\n        if (value && binding === 'name') {\n          const selector = pipe(isString(value) ? value : value.code, stripSlotPrefix, kebabCase);\n          return `select=\"[${selector}]\"`;\n        }\n      })\n      .join('\\n')}>${Object.entries(json.bindings)\n      .map(([binding, value]) => {\n        if (value && binding !== 'name') {\n          return value.code;\n        }\n      })\n      .join('\\n')}${renderChildren()}</ng-content>`;\n  },\n};\n\n// TODO: Maybe in the future allow defining `string | function` as values\nconst BINDINGS_MAPPER: { [key: string]: string | undefined } = {\n  innerHTML: 'innerHTML',\n  style: 'ngStyle',\n};\n\nconst handleNgOutletBindings = (node: MitosisNode, options: ToAngularOptions) => {\n  let allProps = '';\n  for (const key in node.properties) {\n    if (key.startsWith('$')) {\n      continue;\n    }\n    if (key === 'key') {\n      continue;\n    }\n    const value = node.properties[key];\n    allProps += `${key}: '${value}', `;\n  }\n\n  for (const key in node.bindings) {\n    if (key.startsWith('\"')) {\n      continue;\n    }\n    if (key.startsWith('$')) {\n      continue;\n    }\n    let { code, arguments: cusArgs = ['event'] } = node.bindings[key]!;\n    if (options.state === 'class-properties') {\n      code = `this.${code}`;\n\n      if (node.bindings[key]?.type === 'spread') {\n        allProps += `...${code}, `;\n        continue;\n      }\n    }\n\n    let keyToUse = key.includes('-') ? `'${key}'` : key;\n    keyToUse = keyToUse.replace('state.', '').replace('props.', '');\n\n    if (checkIsEvent(key)) {\n      const { event, value } = processEventBinding(key, code, node.name, cusArgs[0]);\n      allProps += `on${event.charAt(0).toUpperCase() + event.slice(1)}: ${value.replace(\n        /\\(.*?\\)/g,\n        '',\n      )}.bind(this), `;\n    } else {\n      const codeToUse =\n        options.state === 'inline-with-wrappers' ? processCodeBlockInTemplate(code) : code;\n      allProps += `${keyToUse}: ${codeToUse}, `;\n    }\n  }\n\n  if (allProps.endsWith(', ')) {\n    allProps = allProps.slice(0, -2);\n  }\n\n  if (allProps.startsWith(', ')) {\n    allProps = allProps.slice(2);\n  }\n\n  return allProps;\n};\n\nconst handleObjectBindings = (code: string) => {\n  let objectCode = code.replace(/^{/, '').replace(/}$/, '');\n  objectCode = objectCode.replace(/\\/\\/.*\\n/g, '');\n\n  let temp = objectCode;\n\n  //STEP 1. remove spread operator for expressions like '{ ...objectName }' and replace them with object name, example {...obj} => obj\n  temp = temp.replace(/\\{\\s*\\.\\.\\.(\\w+)\\s*}/g, '$1');\n  //STEP 2. remove all remaining spread operators that could be nested somewhere deeper, example { ...obj, field1: value1 } => { obj, field1: value1 }\n  temp = temp.replace(/\\.\\.\\./g, '');\n  //STEP 3. deal with consequences of STEP 2 - for all left field assignments we create new objects provided to useObjectWrapper,\n  //and we get rid of surrounding brackets of the initial input value, example {...obj1,test:true,...obj2} => obj1, {test: true}, obj2\n  temp = temp.replace(/(\\s*\\w+\\s*:\\s*(([\"'].+[\"'])|(\\[.+])|([\\w.]+)))(,|[\\n\\s]*)/g, `{ $1 },`);\n\n  // handle template strings\n  if (temp.includes('`')) {\n    // template str\n    let str = temp.match(/`[^`]*`/g);\n\n    let values = str && str[0].match(/\\${[^}]*}/g);\n    let forValues = values?.map((val) => val.slice(2, -1)).join(' + ');\n\n    if (str && forValues) {\n      temp = temp.replace(str[0], forValues);\n    }\n  }\n\n  return temp;\n};\n\nconst processCodeBlockInTemplate = (code: string) => {\n  // contains helper calls as Angular doesn't support JS expressions in templates\n  if (code.startsWith('{') && code.includes('...')) {\n    // Objects cannot be spread out directly in Angular so we need to use `useObjectWrapper`\n    return `useObjectWrapper(${handleObjectBindings(code)})`;\n  } else if (code.startsWith('Object.values')) {\n    let stripped = code.replace('Object.values', '');\n    return `useObjectDotValues${stripped}`;\n  } else if (code.includes('JSON.stringify')) {\n    let obj = code.match(/JSON.stringify\\((.*)\\)/);\n    return `useJsonStringify(${obj})`;\n  } else if (code.includes(' as ')) {\n    const asIndex = code.indexOf('as');\n    const asCode = code.slice(0, asIndex - 1);\n    return `$any${asCode})`;\n  } else {\n    return `${code}`;\n  }\n};\n\nconst processEventBinding = (key: string, code: string, nodeName: string, customArg: string) => {\n  let event = key.replace('on', '');\n  event = event.charAt(0).toLowerCase() + event.slice(1);\n\n  // TODO: proper babel transform to replace. Util for this\n  const eventName = customArg;\n  const regexp = new RegExp(\n    '(^|\\\\n|\\\\r| |;|\\\\(|\\\\[|!)' + eventName + '(\\\\?\\\\.|\\\\.|\\\\(| |;|\\\\)|$)',\n    'g',\n  );\n  const replacer = '$1$event$2';\n  const finalValue = removeSurroundingBlock(code.replace(regexp, replacer));\n  return {\n    event,\n    value: finalValue,\n  };\n};\n\nconst stringifyBinding =\n  (node: MitosisNode, options: ToAngularOptions, blockOptions: AngularBlockOptions) =>\n  ([key, binding]: [string, Binding | undefined]) => {\n    if (key.startsWith('$') || key.startsWith('\"') || key === 'key') {\n      return;\n    }\n    if (binding?.type === 'spread') {\n      return;\n    }\n\n    const keyToUse = BINDINGS_MAPPER[key] || key;\n    const { code, arguments: cusArgs = ['event'] } = binding!;\n    // TODO: proper babel transform to replace. Util for this\n\n    if (checkIsEvent(keyToUse)) {\n      const { event, value } = processEventBinding(keyToUse, code, node.name, cusArgs[0]);\n\n      // native events are all lowerCased\n      const lowerCaseEvent = event.toLowerCase();\n      const eventKey =\n        checkIsBindingNativeEvent(event) ||\n        blockOptions.nativeEvents?.find(\n          (nativeEvent) =>\n            nativeEvent === keyToUse || nativeEvent === event || nativeEvent === lowerCaseEvent,\n        )\n          ? lowerCaseEvent\n          : event;\n      return ` (${eventKey})=\"${value}\"`;\n    } else if (keyToUse === 'class') {\n      return ` [class]=\"${code}\" `;\n    } else if (keyToUse === 'ref' || keyToUse === 'spreadRef') {\n      return ` #${code} `;\n    } else if (\n      (VALID_HTML_TAGS.includes(node.name.trim()) || keyToUse.includes('-')) &&\n      !blockOptions.nativeAttributes?.includes(keyToUse) &&\n      !Object.values(BINDINGS_MAPPER).includes(keyToUse)\n    ) {\n      // standard html elements need the attr to satisfy the compiler in many cases: eg: svg elements and [fill]\n      return ` [attr.${keyToUse}]=\"${code}\" `;\n    } else if (keyToUse === 'innerHTML') {\n      return blockOptions.sanitizeInnerHTML\n        ? ` [innerHTML]=\"${code}\" `\n        : ` [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(${code})\" `;\n    } else {\n      const codeToUse =\n        options.state === 'inline-with-wrappers' ? processCodeBlockInTemplate(code) : code;\n      return `[${keyToUse}]=\"${codeToUse}\"`;\n    }\n  };\n\nexport const blockToAngular = ({\n  root,\n  json,\n  options = {},\n  blockOptions = {\n    nativeAttributes: [],\n    nativeEvents: [],\n  },\n  rootRef,\n}: {\n  root: MitosisComponent;\n  json: MitosisNode;\n  options?: ToAngularOptions;\n  rootRef?: string;\n  blockOptions?: AngularBlockOptions;\n}): string => {\n  const childComponents = blockOptions?.childComponents || [];\n\n  if (mappers[json.name]) {\n    return mappers[json.name](root, json, options, blockOptions);\n  }\n\n  if (isChildren({ node: json })) {\n    return `<ng-content></ng-content>`;\n  }\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  const textCode = json.bindings._text?.code;\n  if (textCode) {\n    if (isSlotProperty(textCode)) {\n      return `<ng-content select=\"[${toKebabSlot(textCode)}]\"></ng-content>`;\n    }\n\n    if (textCode.includes('JSON.stringify')) {\n      const obj = textCode.replace(/JSON.stringify\\(\\s*(\\w+)\\s*,?.*\\)/, '$1');\n      return `{{${obj} | json}}`;\n    }\n\n    return `{{${textCode}}}`;\n  }\n\n  let str = '';\n\n  if (checkIsForNode(json)) {\n    const indexName = json.scope.indexName;\n    const forName = json.scope.forName;\n\n    // Check if \"key\" is present for the first child of the for loop\n    if (hasFirstChildKeyAttribute(json)) {\n      const fnIndex = (root.meta?._trackByForIndex as number) || 0;\n      const trackByFnName = `trackBy${\n        forName ? forName.charAt(0).toUpperCase() + forName.slice(1) : ''\n      }${fnIndex}`;\n      root.meta._trackByForIndex = fnIndex + 1;\n      let code = json.children[0].bindings.key?.code;\n\n      root.state[trackByFnName] = {\n        code: `${trackByFnName}(${indexName ?? '_'}, ${forName}) { return ${code}; }`,\n        type: 'method',\n      };\n\n      str += `<ng-container *ngFor=\"let ${forName ?? '_'} of ${json.bindings.each?.code}${\n        indexName ? `; index as ${indexName}` : ''\n      }; trackBy: ${trackByFnName}\">`;\n    } else {\n      str += `<ng-container *ngFor=\"let ${forName ?? '_'} of ${json.bindings.each?.code}${\n        indexName ? `; index as ${indexName}` : ''\n      }\">`;\n    }\n    str += json.children\n      .map((item) => blockToAngular({ root, json: item, options, blockOptions }))\n      .join('\\n');\n    str += `</ng-container>`;\n  } else if (json.name === 'Show') {\n    let condition = json.bindings.when?.code;\n    if (options.state === 'inline-with-wrappers' && condition?.includes('typeof')) {\n      let wordAfterTypeof = condition.split('typeof')[1].trim().split(' ')[0];\n      condition = condition.replace(`typeof ${wordAfterTypeof}`, `useTypeOf(${wordAfterTypeof})`);\n    }\n    str += `<ng-container *ngIf=\"${condition}\">`;\n    str += json.children\n      .map((item) => blockToAngular({ root, json: item, options, blockOptions }))\n      .join('\\n');\n    str += `</ng-container>`;\n    // else condition\n    if (isMitosisNode(json.meta?.else)) {\n      str += `<ng-container *ngIf=\"!(${condition})\">`;\n      str += blockToAngular({ root, json: json.meta.else, options, blockOptions });\n      str += `</ng-container>`;\n    }\n  } else if (json.name.includes('.')) {\n    const elSelector = childComponents.find((impName) => impName === json.name)\n      ? kebabCase(json.name)\n      : json.name;\n\n    let allProps = handleNgOutletBindings(json, options);\n    if (options.state === 'class-properties') {\n      const inputsPropsStateName = `mergedInputs_${hashCodeAsString(allProps)}`;\n      root.state[inputsPropsStateName] = {\n        code: '{}' + (options.typescript ? ' as any' : ''),\n        type: 'property',\n      };\n      if (!root.hooks.onInit?.code.includes(inputsPropsStateName)) {\n        addCodeToOnInit(root, `this.${inputsPropsStateName} = {${allProps}};`);\n      }\n      if (\n        !root.hooks.onUpdate\n          ?.map((hook) => hook.code)\n          .join('')\n          .includes(inputsPropsStateName)\n      ) {\n        addCodeToOnUpdate(root, `this.${inputsPropsStateName} = {${allProps}};`);\n      }\n      allProps = `${inputsPropsStateName}`;\n    } else {\n      allProps = `{ ${allProps} }`;\n    }\n\n    str += `<ng-container *ngComponentOutlet=\"\n      ${elSelector.replace('state.', '').replace('props.', '')};\n      inputs: ${allProps};\n      content: myContent;\n      \">  `;\n\n    str += `</ng-container>`;\n  } else {\n    let element: string | null = null,\n      classNames: string[] = [],\n      attributes;\n\n    const isComponent = childComponents.find((impName) => impName === json.name);\n    const tagName = getBuilderTagName(json);\n    const selector = json.meta.selector || blockOptions?.selector;\n    if (selector) {\n      try {\n        ({ element, classNames, attributes } = parseSelector(`${selector}`));\n      } catch {\n        element = tagName ?? kebabCase(json.name);\n      }\n    }\n    if (!element) {\n      if (isComponent) {\n        element = tagName ?? kebabCase(json.name);\n      } else {\n        element = tagName ?? json.name;\n      }\n    }\n\n    str += `<${element} `;\n\n    // TODO: merge with existing classes/bindings\n    if (classNames.length) {\n      str += `class=\"${classNames.join(' ')}\" `;\n    }\n\n    // TODO: Merge with existing properties\n    if (attributes) {\n      Object.entries(attributes).forEach(([key, value]) => {\n        if (value) {\n          str += `${key}=${JSON.stringify(value)} `;\n        } else {\n          str += `${key} `;\n        }\n      });\n    }\n\n    for (const key in json.properties) {\n      if (key.startsWith('$')) {\n        continue;\n      }\n      const value = json.properties[key];\n      str += ` ${key}=\"${value}\" `;\n    }\n\n    for (const key in json.bindings) {\n      if (json.bindings[key]?.type === 'spread' && VALID_HTML_TAGS.includes(json.name.trim())) {\n        if (json.bindings[key]?.code === 'this') {\n          // if its an arbitrary { ...props } spread then we skip because Angular needs a named prop to be defined\n          continue;\n        }\n\n        let refName = '';\n        if (json.bindings['spreadRef']?.code) {\n          refName = json.bindings['spreadRef'].code;\n        } else {\n          const spreadRefIndex = root.meta._spreadRefIndex || 0;\n          refName = `elRef${spreadRefIndex}`;\n          root.meta._spreadRefIndex = (spreadRefIndex as number) + 1;\n          json.bindings['spreadRef'] = createSingleBinding({ code: refName });\n          root.refs[refName] = { argument: '' };\n        }\n        json.bindings['spreadRef'] = createSingleBinding({ code: refName });\n        root.refs[refName] = { argument: '' };\n        root.meta.onViewInit = (root.meta.onViewInit || { code: '' }) as BaseHook;\n        let spreadCode = '';\n        let changesCode = '';\n        if (json.bindings[key]?.code.startsWith('{')) {\n          json.meta._spreadStateRef = json.meta._spreadStateRef || 0;\n          const name = `${refName}_state_${json.meta._spreadStateRef}`;\n          json.meta._spreadStateRef = (json.meta._spreadStateRef as number) + 1;\n          makeReactiveState(root, name, `this.${name} = ${json.bindings[key]?.code};`);\n          spreadCode = `this.${name}`;\n          changesCode = `changes['${spreadCode.replace('this.', '')}']?.currentValue`;\n        } else {\n          spreadCode = `${json.bindings[key]?.code}`;\n          changesCode = `changes['${spreadCode.replace('this.', '')}']?.currentValue`;\n        }\n        addCodeNgAfterViewInit(\n          root,\n          `\\nthis.setAttributes(this.${refName}?.nativeElement, ${spreadCode});`,\n        );\n\n        addCodeToOnUpdate(\n          root,\n          `this.setAttributes(this.${refName}?.nativeElement, ${spreadCode}${\n            changesCode ? `, ${changesCode}` : ''\n          });`,\n        );\n        if (!root.state['setAttributes']) {\n          root.state['setAttributes'] = {\n            code: HELPER_FUNCTIONS(options?.typescript).setAttributes as string,\n            type: 'method',\n          };\n        }\n      }\n    }\n\n    const stringifiedBindings = Object.entries(json.bindings)\n      .map(stringifyBinding(json, options, blockOptions))\n      .join('');\n\n    str += stringifiedBindings;\n\n    if (rootRef && !str.includes(`#${rootRef}`)) {\n      // Add ref for passing attributes\n      str += `#${rootRef}`;\n    }\n\n    if (SELF_CLOSING_HTML_TAGS.has(element)) {\n      return str + ' />';\n    }\n    str += '>';\n\n    if (json.children) {\n      str += json.children\n        .map((item) => blockToAngular({ root, json: item, options, blockOptions }))\n        .join('\\n');\n    }\n\n    str += `</${element}>`;\n  }\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/classic/component.ts",
    "content": "import { blockToAngular } from '@/generators/angular/classic/blocks';\nimport { getClassPropertiesPlugin } from '@/generators/angular/classic/plugins/get-class-properties-plugin';\nimport { getCodeProcessorPlugins } from '@/generators/angular/classic/plugins/get-code-processor-plugins';\nimport {\n  generateNgModule,\n  getAppropriateTemplateFunctionKeys,\n  getDefaultProps,\n  getTemplateFormat,\n  HELPER_FUNCTIONS,\n  processAngularCode,\n  transformState,\n  traverseAndCheckIfInnerHTMLIsUsed,\n  traverseToGetAllDynamicComponents,\n} from '@/generators/angular/helpers';\nimport { getInputs } from '@/generators/angular/helpers/get-inputs';\nimport { getOutputs } from '@/generators/angular/helpers/get-outputs';\nimport { getDomRefs } from '@/generators/angular/helpers/get-refs';\nimport { getAngularStyles } from '@/generators/angular/helpers/get-styles';\nimport {\n  BUILT_IN_COMPONENTS,\n  DEFAULT_ANGULAR_OPTIONS,\n  ToAngularOptions,\n} from '@/generators/angular/types';\nimport { stringifySingleScopeOnMount } from '@/generators/helpers/on-mount';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getChildComponents } from '@/helpers/get-child-components';\nimport { getComponentsUsed } from '@/helpers/get-components-used';\nimport { getCustomImports } from '@/helpers/get-custom-imports';\nimport { getPropFunctions } from '@/helpers/get-prop-functions';\nimport { getProps } from '@/helpers/get-props';\nimport { getPropsRef } from '@/helpers/get-props-ref';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { getTypedFunction } from '@/helpers/get-typed-function';\nimport { isUpperCase } from '@/helpers/is-upper-case';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport {\n  getAddAttributePassingRef,\n  getAttributePassingString,\n  ROOT_REF,\n  shouldAddAttributePassing,\n} from '@/helpers/web-components/attribute-passing';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { kebabCase, uniq } from 'lodash';\nimport { tryFormat } from '../helpers/format';\n\nexport const componentToAngularClassic: TranspilerGenerator<ToAngularOptions> = (\n  userOptions = {},\n) => {\n  return ({ component: _component }) => {\n    // Make a copy we can safely mutate, similar to babel's toolchain\n    let json = fastClone(_component);\n\n    const useMetadata = json.meta?.useMetadata;\n\n    const contextVars: string[] = Object.keys(json?.context?.get || {});\n    const metaOutputVars: string[] = (useMetadata?.outputs as string[]) || [];\n\n    const outputVars: string[] = uniq([...metaOutputVars, ...getPropFunctions(json)]);\n\n    const options = initializeOptions({\n      target: 'angular',\n      component: _component,\n      defaults: DEFAULT_ANGULAR_OPTIONS,\n      userOptions,\n    });\n    options.plugins = getCodeProcessorPlugins({ json, options, outputVars, contextVars });\n\n    if (options.state === 'class-properties') {\n      options.plugins.push(getClassPropertiesPlugin());\n    }\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    // Prepare Props\n    const [forwardProp, hasPropRef] = getPropsRef(json, true);\n    const props = getProps(json);\n    // prevent jsx props from showing up as @Input\n    if (hasPropRef) {\n      props.delete(forwardProp);\n    }\n    props.delete('children');\n\n    // remove props for outputs\n    for (const variableName of outputVars) {\n      props.delete(variableName);\n    }\n\n    const childComponents: string[] = getChildComponents(json);\n\n    const customImports: string[] = getCustomImports(json);\n\n    const { exports: localExports = {} } = json;\n    const localExportVars: string[] = Object.keys(localExports)\n      .filter((key) => localExports[key].usedInLocal)\n      .map((key) => `${key} = ${key};`);\n\n    // Context handling\n    const injectables: string[] = contextVars.map((variableName) => {\n      const variableType = json?.context?.get[variableName].name;\n      if (options?.experimental?.injectables) {\n        return options?.experimental?.injectables(variableName, variableType);\n      }\n      if (options?.experimental?.inject) {\n        return `@Inject(forwardRef(() => ${variableType})) public ${variableName}: ${variableType}`;\n      }\n      return `public ${variableName} : ${variableType}`;\n    });\n\n    // Handle refs\n    const withAttributePassing = shouldAddAttributePassing(json, options);\n    const rootRef = getAddAttributePassingRef(json, options);\n    const domRefs = getDomRefs({ json, options, withAttributePassing, rootRef });\n    const jsRefs = Object.keys(json.refs).filter((ref) => !domRefs.has(ref));\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    // CSS\n    const styles = getAngularStyles({ json, options });\n\n    const helperFunctions = new Set<string>();\n    const shouldUseSanitizer =\n      !useMetadata?.angular?.sanitizeInnerHTML && traverseAndCheckIfInnerHTMLIsUsed(json);\n    const changeDetectionStrategy = useMetadata?.angular?.changeDetection;\n\n    let template = json.children\n      .map((item) => {\n        const tmpl = blockToAngular({\n          root: json,\n          json: item,\n          options,\n          rootRef: withAttributePassing && rootRef === ROOT_REF ? rootRef : undefined, // only pass rootRef if it's not the default\n          blockOptions: {\n            childComponents,\n            nativeAttributes: useMetadata?.angular?.nativeAttributes ?? [],\n            nativeEvents: useMetadata?.angular?.nativeEvents ?? [],\n            sanitizeInnerHTML: !shouldUseSanitizer,\n          },\n        });\n        if (options.state === 'inline-with-wrappers') {\n          getAppropriateTemplateFunctionKeys(tmpl).forEach((key) =>\n            helperFunctions.add(HELPER_FUNCTIONS(options.typescript)[key]),\n          );\n        }\n        return tmpl;\n      })\n      .join('\\n');\n\n    if (options.prettier !== false) {\n      template = tryFormat(template, 'html');\n    }\n\n    stripMetaProperties(json);\n\n    const { components: dynamicComponents, dynamicTemplate } = traverseToGetAllDynamicComponents(\n      json,\n      options,\n      {\n        childComponents,\n        nativeAttributes: useMetadata?.angular?.nativeAttributes ?? [],\n        nativeEvents: useMetadata?.angular?.nativeEvents ?? [],\n      },\n    );\n\n    transformState(json);\n\n    const dataString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      withType: options.typescript,\n      valueMapper: (code, type, typeParameter) => {\n        let value = code;\n        if (type !== 'data') {\n          value = getTypedFunction(code, options.typescript, typeParameter);\n        }\n\n        return processAngularCode({\n          replaceWith: 'this',\n          contextVars,\n          outputVars,\n          domRefs: Array.from(domRefs),\n        })(value);\n      },\n    });\n\n    const refsForObjSpread = getRefs(json, 'spreadRef');\n\n    // Preparing built in component metadata parameters\n    const componentsUsed = Array.from(getComponentsUsed(json)).filter(\n      (item) => item.length && isUpperCase(item[0]) && !BUILT_IN_COMPONENTS.has(item),\n    );\n    const componentMetadata: Record<string, any> = {\n      selector: useMetadata?.angular?.selector\n        ? `'${useMetadata?.angular?.selector}'`\n        : `'${kebabCase(json.name || 'my-component')}'`,\n      template: `\\`\n          ${getTemplateFormat(dynamicTemplate)}\n          ${getTemplateFormat(template)}\n          \\``,\n      ...(changeDetectionStrategy === 'OnPush'\n        ? {\n            changeDetection: 'ChangeDetectionStrategy.OnPush',\n          }\n        : {}),\n      ...(styles\n        ? {\n            styles: `[\\`${styles}\\`]`,\n          }\n        : {}),\n      ...(options.standalone\n        ? // TODO: also add child component imports here as well\n          {\n            standalone: 'true',\n            imports: `[${['CommonModule', ...componentsUsed].join(', ')}]`,\n          }\n        : {}),\n    };\n    // Taking into consideration what user has passed in options and allowing them to override the default generated metadata\n    Object.entries(json.meta.angularConfig || {}).forEach(([key, value]) => {\n      componentMetadata[key] = value;\n    });\n\n    const hasConstructor =\n      Boolean(injectables.length) ||\n      dynamicComponents.size ||\n      refsForObjSpread.size ||\n      shouldUseSanitizer;\n\n    const angularCoreImports = [\n      ...(outputVars.length ? ['Output', 'EventEmitter'] : []),\n      ...(options?.experimental?.inject ? ['Inject', 'forwardRef'] : []),\n      'Component',\n      ...(domRefs.size || dynamicComponents.size || refsForObjSpread.size\n        ? ['ViewChild', 'ElementRef']\n        : []),\n      ...(refsForObjSpread.size ? ['Renderer2'] : []),\n      ...(props.size ? ['Input'] : []),\n      ...(dynamicComponents.size ? ['ViewContainerRef', 'TemplateRef'] : []),\n      ...(json.hooks.onUpdate?.length && options.typescript ? ['SimpleChanges'] : []),\n      ...(changeDetectionStrategy === 'OnPush' ? ['ChangeDetectionStrategy'] : []),\n    ].join(', ');\n\n    const constructorInjectables = [\n      ...injectables,\n      ...(dynamicComponents.size\n        ? [`private vcRef${options.typescript ? ': ViewContainerRef' : ''}`]\n        : []),\n      ...(refsForObjSpread.size\n        ? [`private renderer${options.typescript ? ': Renderer2' : ''}`]\n        : []),\n      ...(shouldUseSanitizer\n        ? [`protected sanitizer${options.typescript ? ': DomSanitizer' : ''}`]\n        : []),\n    ].join(',\\n');\n\n    let str = dedent`\n        import { ${angularCoreImports} } from '@angular/core';\n        ${shouldUseSanitizer ? `import { DomSanitizer } from '@angular/platform-browser';` : ''}\n        ${options.standalone ? `import { CommonModule } from '@angular/common';` : ''}\n    \n        ${json.types ? json.types.join('\\n') : ''}\n        ${getDefaultProps(json)}\n        ${renderPreComponent({\n          explicitImportFileExtension: options.explicitImportFileExtension,\n          component: json,\n          target: 'angular',\n          excludeMitosisComponents: !options.standalone && !options.preserveImports,\n          preserveFileExtensions: options.preserveFileExtensions,\n          componentsUsed,\n          importMapper: options?.importMapper,\n        })}\n    \n        @Component({\n          ${Object.entries(componentMetadata)\n            .map(([k, v]) => `${k}: ${v}`)\n            .join(',')}\n        })\n        export default class ${json.name} {\n          ${localExportVars.join('\\n')}\n          ${customImports.map((name) => `${name} = ${name}`).join('\\n')}\n    \n          ${getInputs({\n            json,\n            options,\n            props: Array.from(props),\n          })}    \n          ${getOutputs({ json, outputVars })}\n    \n          ${[...Array.from(domRefs), ...Array.from(refsForObjSpread)]\n            .map(\n              (refName) =>\n                `@ViewChild('${refName}') ${refName}${options.typescript ? '!: ElementRef' : ''}`,\n            )\n            .join('\\n')}\n    \n          ${Array.from(dynamicComponents)\n            .map(\n              (component) =>\n                `@ViewChild('${component\n                  .split('.')[1]\n                  .toLowerCase()}Template', { static: true }) ${component\n                  .split('.')[1]\n                  .toLowerCase()}TemplateRef${options.typescript ? '!: TemplateRef<any>' : ''}`,\n            )\n            .join('\\n')}\n    \n          ${dynamicComponents.size ? `myContent${options.typescript ? '?: any[][];' : ''}` : ''}\n          ${\n            refsForObjSpread.size\n              ? `_listenerFns = new Map${options.typescript ? '<string, () => void>' : ''}()`\n              : ''\n          }\n    \n          ${dataString}\n    \n          ${helperFunctions.size ? Array.from(helperFunctions).join('\\n') : ''}\n    \n          ${jsRefs\n            .map((ref) => {\n              const argument = json.refs[ref].argument;\n              const typeParameter = json.refs[ref].typeParameter;\n              return `private _${ref}${typeParameter ? `: ${typeParameter}` : ''}${\n                argument\n                  ? ` = ${processAngularCode({\n                      replaceWith: 'this.',\n                      contextVars,\n                      outputVars,\n                      domRefs: Array.from(domRefs),\n                    })(argument)}`\n                  : ''\n              };`;\n            })\n            .join('\\n')}\n    \n          ${!hasConstructor ? '' : `constructor(\\n${constructorInjectables}) {}`}\n          \n          ${withAttributePassing ? getAttributePassingString(options.typescript) : ''}\n          \n          ${\n            !json.hooks.onMount.length && !dynamicComponents.size && !json.hooks.onInit?.code\n              ? ''\n              : `ngOnInit() {\n                  ${\n                    !json.hooks?.onInit\n                      ? ''\n                      : `\n                        ${json.hooks.onInit?.code}\n                        `\n                  }\n                  ${\n                    json.hooks.onMount.length > 0\n                      ? `\n                        if (typeof window !== 'undefined') {\n                          ${stringifySingleScopeOnMount(json)}\n                        }\n                        `\n                      : ''\n                  }\n                  ${\n                    dynamicComponents.size\n                      ? `\n                  this.myContent = [${Array.from(dynamicComponents)\n                    .map(\n                      (component) =>\n                        `this.vcRef.createEmbeddedView(this.${component\n                          .split('.')[1]\n                          .toLowerCase()}TemplateRef).rootNodes`,\n                    )\n                    .join(', ')}];\n                  `\n                      : ''\n                  }\n                }`\n          }\n    \n          ${\n            // hooks specific to Angular\n            json.compileContext?.angular?.hooks\n              ? Object.entries(json.compileContext?.angular?.hooks)\n                  .map(([key, value]) => {\n                    return `${key}() {\n                ${value.code}\n              }`;\n                  })\n                  .join('\\n')\n              : ''\n          }\n    \n          ${\n            !json.hooks.onUpdate?.length\n              ? ''\n              : `ngOnChanges(changes${options.typescript ? ': SimpleChanges' : ''}) {\n                  if (typeof window !== 'undefined') {\n                    ${json.hooks.onUpdate?.reduce((code, hook) => {\n                      code += hook.code;\n                      return code + '\\n';\n                    }, '')}\n                  }\n                }\n                    `\n          }\n    \n          ${\n            !json.hooks.onUnMount && !refsForObjSpread.size\n              ? ''\n              : `ngOnDestroy() {\n                  ${json.hooks.onUnMount?.code || ''}\n                  ${\n                    refsForObjSpread.size\n                      ? `for (const fn of this._listenerFns.values()) { fn(); }`\n                      : ''\n                  }\n                }`\n          }\n    \n        }\n      `;\n\n    if (options.standalone !== true) {\n      str = generateNgModule(str, json.name, componentsUsed, json, options.bootstrapMapper);\n    }\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      str = tryFormat(str, 'typescript');\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n\n    return str;\n  };\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/classic/plugins/get-class-properties-plugin.ts",
    "content": "import { makeReactiveState } from '@/generators/angular/helpers/hooks';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport isChildren from '@/helpers/is-children';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { traverseNodes } from '@/helpers/traverse-nodes';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport { MitosisPlugin } from '@/types/plugins';\n\nconst isASimpleProperty = (code: string) => {\n  const expressions = ['==', '===', '!=', '!==', '<', '>', '<=', '>='];\n  const invalidChars = ['{', '}', '(', ')', 'typeof'];\n\n  return !invalidChars.some((char) => code.includes(char)) && !expressions.includes(code);\n};\n\nconst generateNewBindingName = (index: number, name: string) =>\n  `node_${index}_${name.replaceAll('.', '_').replaceAll('-', '_')}`;\n\nconst handleBindings = (\n  json: MitosisComponent,\n  item: MitosisNode,\n  index: number,\n  forName?: string,\n  indexName?: string,\n) => {\n  for (const key in item.bindings) {\n    if (\n      key.startsWith('\"') ||\n      key.startsWith('$') ||\n      key === 'css' ||\n      key === 'ref' ||\n      isASimpleProperty(item.bindings[key]!.code)\n    ) {\n      continue;\n    }\n\n    const newBindingName = generateNewBindingName(index, item.name);\n\n    if (forName) {\n      if (item.name === 'For') continue;\n      if (key === 'key') continue;\n\n      if (checkIsEvent(key)) {\n        const { arguments: cusArgs = ['event'] } = item.bindings[key]!;\n        const eventBindingName = `${generateNewBindingName(index, item.name)}_event`;\n        if (\n          item.bindings[key]?.code.trim().startsWith('{') &&\n          item.bindings[key]?.code.trim().endsWith('}')\n        ) {\n          const forAndIndex = `${forName ? `, ${forName}` : ''}${\n            indexName ? `, ${indexName}` : ''\n          }`;\n          const eventArgs = `${cusArgs.join(', ')}${forAndIndex}`;\n          json.state[eventBindingName] = {\n            code: `(${eventArgs}) => ${item.bindings[key]!.code}`,\n            type: 'function',\n          };\n          item.bindings[key]!.code = `state.${eventBindingName}(${eventArgs})`;\n          json.state[newBindingName] = {\n            code: `(${eventArgs}) => (${item.bindings[key]!.code})`,\n            type: 'function',\n          };\n          item.bindings[key]!.code = `state.${newBindingName}($${eventArgs})`;\n        }\n      } else {\n        json.state[newBindingName] = {\n          code: `(${forName}${indexName ? `, ${indexName}` : ''}) => (${item.bindings[key]!.code})`,\n          type: 'function',\n        };\n        item.bindings[key]!.code = `state.${newBindingName}(${forName}${\n          indexName ? `, ${indexName}` : ''\n        })`;\n      }\n    } else if (item.bindings[key]?.code) {\n      if (item.bindings[key]?.type !== 'spread' && !checkIsEvent(key)) {\n        json.state[newBindingName] = { code: 'null', type: 'property' };\n        makeReactiveState(\n          json,\n          newBindingName,\n          `this.${newBindingName} = ${item.bindings[key]!.code}`,\n        );\n        item.bindings[key]!.code = `state.${newBindingName}`;\n      } else if (checkIsEvent(key)) {\n        const { arguments: cusArgs = ['event'] } = item.bindings[key]!;\n        if (\n          item.bindings[key]?.code.trim().startsWith('{') &&\n          item.bindings[key]?.code.trim().endsWith('}')\n        ) {\n          json.state[newBindingName] = {\n            code: `(${cusArgs.join(', ')}) => ${item.bindings[key]!.code}`,\n            type: 'function',\n          };\n          item.bindings[key]!.code = `state.${newBindingName}(${cusArgs.join(', ')})`;\n        }\n      } else {\n        makeReactiveState(\n          json,\n          newBindingName,\n          `state.${newBindingName} = {...(${item.bindings[key]!.code})}`,\n        );\n        item.bindings[newBindingName] = item.bindings[key];\n        item.bindings[key]!.code = `state.${newBindingName}`;\n        delete item.bindings[key];\n      }\n    }\n    index++;\n  }\n  return index;\n};\n\nconst handleProperties = (json: MitosisComponent, item: MitosisNode, index: number) => {\n  for (const key in item.properties) {\n    if (key.startsWith('$') || isASimpleProperty(item.properties[key]!)) {\n      continue;\n    }\n    const newBindingName = generateNewBindingName(index, item.name);\n    json.state[newBindingName] = { code: '`' + `${item.properties[key]}` + '`', type: 'property' };\n    item.bindings[key] = createSingleBinding({ code: `state.${newBindingName}` });\n    delete item.properties[key];\n    index++;\n  }\n  return index;\n};\n\nconst handleAngularBindings = (\n  json: MitosisComponent,\n  item: MitosisNode,\n  index: number,\n  { forName, indexName }: { forName?: string; indexName?: string } = {},\n): number => {\n  if (isChildren({ node: item })) return index;\n\n  index = handleBindings(json, item, index, forName, indexName);\n  index = handleProperties(json, item, index);\n\n  return index;\n};\n\nexport const getClassPropertiesPlugin = (): MitosisPlugin => () => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      let lastId = 0;\n      traverseNodes(json, (item) => {\n        if (isMitosisNode(item)) {\n          if (item.name === 'For') {\n            const forName = (item.scope as any).forName;\n            const indexName = (item.scope as any).indexName;\n            traverseNodes(item, (child) => {\n              if (isMitosisNode(child)) {\n                (child as any)._traversed = true;\n                lastId = handleAngularBindings(json, child, lastId, {\n                  forName,\n                  indexName,\n                });\n              }\n            });\n          } else if (!(item as any)._traversed) {\n            lastId = handleAngularBindings(json, item, lastId);\n          }\n        }\n      });\n      return json;\n    },\n  },\n});\n"
  },
  {
    "path": "packages/core/src/generators/angular/classic/plugins/get-code-processor-plugins.ts",
    "content": "import { VALID_HTML_TAGS } from '@/constants/html_tags';\nimport { processAngularCode } from '@/generators/angular/helpers';\nimport { ToAngularOptions } from '@/generators/angular/types';\nimport { getRefs } from '@/helpers/get-refs';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { replaceIdentifiers } from '@/helpers/replace-identifiers';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { flow } from 'fp-ts/function';\n\nexport const getCodeProcessorPlugins = ({\n  json,\n  contextVars,\n  options,\n  outputVars,\n}: {\n  json: MitosisComponent;\n  options: ToAngularOptions;\n  contextVars: string[];\n  outputVars: string[];\n}) => {\n  return [\n    ...(options.plugins || []),\n    CODE_PROCESSOR_PLUGIN((codeType, _, node) => {\n      switch (codeType) {\n        case 'hooks':\n          return flow(\n            processAngularCode({\n              replaceWith: 'this',\n              contextVars,\n              outputVars,\n              domRefs: Array.from(getRefs(json)),\n            }),\n            (code) => {\n              const allMethodNames = Object.entries(json.state)\n                .filter(([_, value]) => value?.type === 'function' || value?.type === 'method')\n                .map(([key]) => key);\n\n              return replaceIdentifiers({\n                code,\n                from: allMethodNames,\n                to: (name) => `this.${name}`,\n              });\n            },\n          );\n\n        case 'bindings':\n          return (code, key) => {\n            // we create a separate state property for spread binding and use ref to attach the attributes\n            // so we need to use `this.` inside the class to access state and props\n            const isSpreadAttributeBinding =\n              node?.bindings[key]?.type === 'spread' && VALID_HTML_TAGS.includes(node.name.trim());\n\n            // If we have a For loop with \"key\" it will be transformed to\n            // trackOfXXX, we need to use \"this\" for state properties\n            const isKey = key === 'key';\n\n            const newLocal = processAngularCode({\n              contextVars: [],\n              outputVars,\n              domRefs: [], // the template doesn't need the this keyword.\n              replaceWith: isKey || isSpreadAttributeBinding ? 'this' : undefined,\n            })(code);\n            return newLocal.replace(/\"/g, '&quot;');\n          };\n        case 'hooks-deps':\n        case 'hooks-deps-array':\n        case 'state':\n        case 'context-set':\n        case 'properties':\n        case 'dynamic-jsx-elements':\n        case 'types':\n          return (code) => code;\n      }\n    }),\n  ];\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/component.ts",
    "content": "import { componentToAngularClassic } from '@/generators/angular/classic/component';\nimport { componentToAngularSignals } from '@/generators/angular/signals/component';\nimport { DEFAULT_ANGULAR_OPTIONS, ToAngularOptions } from '@/generators/angular/types';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { TranspilerGenerator } from '@/types/transpiler';\n\nexport const componentToAngular: TranspilerGenerator<ToAngularOptions> = (userOptions = {}) => {\n  return (args) => {\n    const options = initializeOptions({\n      target: 'angular',\n      component: args.component,\n      defaults: DEFAULT_ANGULAR_OPTIONS,\n      userOptions,\n    });\n\n    if (options.api === 'signals') {\n      /*\n       * Some features aren't available to reduce complexity for now:\n       * - Spread props\n       * - Dynamic components\n       */\n      return componentToAngularSignals(userOptions)(args);\n    }\n\n    return componentToAngularClassic(userOptions)(args);\n  };\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/format.ts",
    "content": "import { format } from 'prettier/standalone';\n\nexport const tryFormat = (\n  str: string,\n  parser: string,\n  htmlWhitespaceSensitivity: 'css' | 'strict' | 'ignore' = 'css',\n) => {\n  try {\n    return format(str, {\n      parser,\n      plugins: [\n        // To support running in browsers\n        require('prettier/parser-typescript'),\n        require('prettier/parser-postcss'),\n        require('prettier/parser-html'),\n        require('prettier/parser-babel'),\n      ],\n      htmlWhitespaceSensitivity,\n    });\n  } catch (err) {\n    console.warn('Could not prettify', { string: str }, err);\n  }\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/get-inputs.ts",
    "content": "import { ToAngularOptions } from '@/generators/angular/types';\nimport type { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getInputs = ({\n  props,\n  json,\n  options,\n}: {\n  props: string[];\n  json: MitosisComponent;\n  options: ToAngularOptions;\n}) => {\n  const propsTypeRef = json.propsTypeRef !== 'any' ? json.propsTypeRef : undefined;\n\n  return props\n    .map((prop) => {\n      const hasDefaultProp = json.defaultProps && json.defaultProps.hasOwnProperty(prop);\n      const propType = propsTypeRef ? `${propsTypeRef}[\"${prop}\"]` : 'any';\n      let propDeclaration = `@Input() ${prop}${\n        options.typescript ? `${hasDefaultProp ? '' : '!'}: ${propType}` : ''\n      }`;\n      if (hasDefaultProp) {\n        propDeclaration += ` = defaultProps[\"${prop}\"]`;\n      }\n      return propDeclaration;\n    })\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/get-outputs.ts",
    "content": "import { AngularApi } from '@/generators/angular/types';\nimport { getEventNameWithoutOn } from '@/helpers/event-handlers';\nimport type { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getOutputs = ({\n  json,\n  outputVars,\n  api,\n}: {\n  json: MitosisComponent;\n  outputVars: string[];\n  api?: AngularApi;\n}) => {\n  const propsTypeRef = json.propsTypeRef !== 'any' ? json.propsTypeRef : undefined;\n  if (api === 'signals') {\n    return outputVars\n      .map((output) => {\n        const propType = propsTypeRef\n          ? `<Parameters<Required<${propsTypeRef}>[\"${output}\"]>[number] | void> `\n          : '';\n        return `${getEventNameWithoutOn(output)} = output${propType}()`;\n      })\n      .join('\\n');\n  }\n\n  return outputVars\n    .map((output) => {\n      return `@Output() ${output} = new EventEmitter<any>()`;\n    })\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/get-refs.ts",
    "content": "import { addCodeNgAfterViewInit } from '@/generators/angular/helpers/hooks';\nimport { ToAngularOptions } from '@/generators/angular/types';\nimport { dashCase } from '@/helpers/dash-case';\nimport { getRefs } from '@/helpers/get-refs';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { isAssignmentExpression } from '@babel/types';\n\nexport const getDomRefs = ({\n  json,\n  options,\n  withAttributePassing,\n  rootRef,\n}: {\n  json: MitosisComponent;\n  options: ToAngularOptions;\n  withAttributePassing?: boolean;\n  rootRef: string;\n}): Set<string> => {\n  const domRefs = getRefs(json);\n\n  const nativeElement = options.api === 'signals' ? `()?.nativeElement` : '?.nativeElement';\n\n  if (withAttributePassing) {\n    if (!domRefs.has(rootRef)) {\n      domRefs.add(rootRef);\n    }\n\n    addCodeNgAfterViewInit(\n      json,\n      `\n            const element: HTMLElement | null = this.${rootRef}${nativeElement};\n            this.enableAttributePassing(element, \"${dashCase(json.name)}\");\n            `,\n    );\n  }\n\n  mapRefs(json, (refName, extra) => {\n    const isDomRef = domRefs.has(refName);\n    let additional = nativeElement;\n    if (extra?.type === 'bindings' && options.api === 'signals') {\n      // we don't need nativeElement and this. for bindings in signals\n      return refName;\n    } else if (extra?.type === 'hooks-deps-array' && options.api === 'signals') {\n      // we don't need nativeElement for deps-array in hooks\n      additional = '()';\n    } else if (extra?.path.parentPath && isAssignmentExpression(extra?.path.parentPath.container)) {\n      // we cannot use conditionals for assignments, it has to be checked before\n      additional = options.api === 'signals' ? `()!.nativeElement` : '!.nativeElement';\n    }\n    return `this.${isDomRef ? '' : '_'}${refName}${isDomRef ? additional : ''}`;\n  });\n\n  return domRefs;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/get-styles.ts",
    "content": "import { tryFormat } from '@/generators/angular/helpers/format';\nimport { preprocessCssAsJson } from '@/generators/angular/helpers/index';\nimport { ToAngularOptions } from '@/generators/angular/types';\nimport { indent } from '@/helpers/indent';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getAngularStyles = ({\n  json,\n  options,\n}: {\n  json: MitosisComponent;\n  options: ToAngularOptions;\n}): string => {\n  preprocessCssAsJson(json);\n  let css = collectCss(json);\n  if (options.prettier !== false) {\n    css = tryFormat(css, 'css');\n  }\n\n  const hostDisplayCss = options.visuallyIgnoreHostElement ? ':host { display: contents; }' : '';\n  return indent(css.length ? [hostDisplayCss, css].join('\\n') : hostDisplayCss, 8);\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/hooks.ts",
    "content": "import type { MitosisComponent } from '@/types/mitosis-component';\n\nexport const addCodeNgAfterViewInit = (json: MitosisComponent, code: string) => {\n  if (!json.compileContext) {\n    json.compileContext = {\n      angular: {\n        hooks: {\n          ngAfterViewInit: {\n            code: '',\n          },\n        },\n      },\n    };\n  }\n\n  json.compileContext!.angular!.hooks!.ngAfterViewInit.code += code;\n};\n\n/**\n * Adds code to the `onUpdate` hook of a MitosisComponent.\n *\n * @param {MitosisComponent} root - The root MitosisComponent.\n * @param {string} code - The code to be added to the `onUpdate` hook.\n */\nexport const addCodeToOnUpdate = (root: MitosisComponent, code: string) => {\n  root.hooks.onUpdate = root.hooks.onUpdate || [];\n  root.hooks.onUpdate.push({\n    code,\n  });\n};\n\n/**\n * Adds code to the `onInit` hook of a MitosisComponent.\n *\n * @param {MitosisComponent} root - The root MitosisComponent.\n * @param {string} code - The code to be added to the `onInit` hook.\n */\nexport const addCodeToOnInit = (root: MitosisComponent, code: string) => {\n  if (!root.hooks.onInit?.code) {\n    root.hooks.onInit = { code: '' };\n  }\n  root.hooks.onInit.code += `\\n${code};`;\n};\n\n/**\n * Creates a reactive state in Angular.\n * Initializes the state with `null` because we cannot access `state.` or `props.` properties before the component is initialized.\n * Adds the code (init/re-init code) to the `onInit` and `onUpdate` hooks.\n * @param root The root MitosisComponent.\n * @param stateName The name of the reactive state.\n * @param code The code to be added to the onInit and onUpdate hooks.\n */\nexport const makeReactiveState = (root: MitosisComponent, stateName: string, code: string) => {\n  root.state[stateName] = { code: 'null', type: 'property' };\n  addCodeToOnInit(root, code);\n  addCodeToOnUpdate(root, code);\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/index.ts",
    "content": "import { blockToAngular } from '@/generators/angular/classic/blocks';\nimport { AngularBlockOptions, ToAngularOptions } from '@/generators/angular/types';\nimport { indent } from '@/helpers/indent';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { replaceNodes } from '@/helpers/replace-identifiers';\nimport {\n  DO_NOT_USE_VARS_TRANSFORMS,\n  stripStateAndPropsRefs,\n} from '@/helpers/strip-state-and-props-refs';\nimport { nodeHasCss } from '@/helpers/styles/helpers';\nimport { type MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport * as babel from '@babel/core';\nimport { pipe } from 'fp-ts/function';\nimport traverse from 'neotraverse/legacy';\nimport { blockToAngularSignals } from '../signals/blocks';\n\nexport const HELPER_FUNCTIONS = (\n  isTs?: boolean,\n): {\n  [key: string]: string;\n} => ({\n  useObjectWrapper: `useObjectWrapper(...args${isTs ? ': any[]' : ''}) {\n    let obj = {}\n    args.forEach((arg) => {\n      obj = { ...obj, ...arg };\n    });\n    return obj;\n  }`,\n  useObjectDotValues: `useObjectDotValues(obj${isTs ? ': any' : ''})${isTs ? ': any[]' : ''}) {\n    return Object.values(obj);\n  }`,\n  useTypeOf: `useTypeOf(obj${isTs ? ': any' : ''})${isTs ? ': string' : ''}) {\n    return typeof obj;\n  }`,\n  useJsonStringify: `useJsonStringify(...args${isTs ? ': any' : ''})${isTs ? ': string' : ''}) {\n    return JSON.stringify(...args);\n  }`,\n  setAttributes: `setAttributes(el${isTs ? ': HTMLElement' : ''}, value${\n    isTs ? ': any' : ''\n  }, changes${isTs ? '?: any' : ''}) {\n    if (!el) {\n      return;\n    }\n    const target = typeof changes === 'undefined' ? value : changes;\n    Object.keys(target).forEach((key) => {\n      if (key.startsWith('on')) {\n        if (this._listenerFns.has(key)) {\n          this._listenerFns.get(key)${isTs ? '!' : ''}();\n        }\n        this._listenerFns.set(key, this.renderer.listen(\n          el,\n          key.replace('on', '').toLowerCase(),\n          target[key]\n        ));\n      } else {\n        this.renderer.setAttribute(el, key.toLowerCase(), target[key] ?? '');\n      }\n    });\n  }`,\n});\n\nexport const getAppropriateTemplateFunctionKeys = (code: string) =>\n  Object.keys(HELPER_FUNCTIONS()).filter((key) => code.includes(key));\n\nexport const getDefaultProps = ({ defaultProps }: MitosisComponent) => {\n  if (!defaultProps) return '';\n  const defalutPropsString = Object.keys(defaultProps)\n    .map((prop) => {\n      const value = defaultProps!.hasOwnProperty(prop) ? defaultProps![prop]?.code : 'undefined';\n      return `${prop}: ${value}`;\n    })\n    .join(',');\n  return `const defaultProps: any = {${defalutPropsString}};\\n`;\n};\n\n/**\n * if any state \"property\" is trying to access state.* or props.*\n * then we need to move them to onInit where they can be accessed\n * @param json The MitosisComponent.\n */\nexport const transformState = (json: MitosisComponent) => {\n  Object.entries(json.state)\n    .reverse()\n    .forEach(([key, value]) => {\n      if (value?.type === 'property') {\n        if (value.code && (value.code.includes('state.') || value.code.includes('props.'))) {\n          const code = stripStateAndPropsRefs(value.code, { replaceWith: 'this' });\n          json.state[key]!.code = 'null';\n          if (!json.hooks.onInit?.code) {\n            json.hooks.onInit = { code: '' };\n          }\n          json.hooks.onInit.code = `\\nthis.${key} = ${code};\\n${json.hooks.onInit.code}`;\n        }\n      }\n    });\n};\n\n/**\n * Checks if the first child has a \"key\" attribute - used for \"For\" elements\n * @param node The node which should be \"For\"\n */\nexport const hasFirstChildKeyAttribute = (node: MitosisNode): boolean => {\n  if (!node.children || node.children.length === 0) {\n    return false;\n  }\n\n  const firstChildBinding = node.children[0].bindings;\n  return Boolean(firstChildBinding && firstChildBinding.key?.code);\n};\n\nexport const preprocessCssAsJson = (json: MitosisComponent) => {\n  traverse(json).forEach((item) => {\n    if (isMitosisNode(item)) {\n      if (nodeHasCss(item)) {\n        if (item.bindings.css?.code?.includes('&quot;')) {\n          item.bindings.css.code = item.bindings.css.code.replace(/&quot;/g, '\"');\n        }\n      }\n    }\n  });\n};\n\nexport const generateNgModule = (\n  content: string,\n  name: string,\n  componentsUsed: string[],\n  component: MitosisComponent,\n  bootstrapMapper: Function | null | undefined,\n): string => {\n  return `import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\n${content}\n\n@NgModule({\n  declarations: [${name}],\n  imports: [CommonModule${\n    componentsUsed.length ? ', ' + componentsUsed.map((comp) => `${comp}Module`).join(', ') : ''\n  }],\n  exports: [${name}],\n  ${bootstrapMapper ? bootstrapMapper(name, componentsUsed, component) : ''}\n})\nexport class ${name}Module {}`;\n};\n\nexport const traverseToGetAllDynamicComponents = (\n  json: MitosisComponent,\n  options: ToAngularOptions,\n  blockOptions: AngularBlockOptions,\n  api: 'signals' | 'classic' = 'classic',\n) => {\n  const components: Set<string> = new Set();\n  let dynamicTemplate = '';\n  traverse(json).forEach((item) => {\n    if (isMitosisNode(item) && item.name.includes('.')) {\n      const children = item.children\n        .map((child) =>\n          api === 'classic'\n            ? blockToAngular({ root: json, json: child, options, blockOptions })\n            : blockToAngularSignals({ root: json, json: child, options, blockOptions }),\n        )\n        .join('\\n');\n      dynamicTemplate = `<ng-template #${\n        item.name.split('.')[1].toLowerCase() + 'Template'\n      }>${children}</ng-template>`;\n      components.add(item.name);\n    }\n  });\n  return {\n    components,\n    dynamicTemplate,\n  };\n};\n\nexport const getTemplateFormat = (template: string): string =>\n  indent(template, 8).replace(/`/g, '\\\\`').replace(/\\$\\{/g, '\\\\${');\n\nexport const traverseAndCheckIfInnerHTMLIsUsed = (json: MitosisComponent) => {\n  let innerHTMLIsUsed = false;\n  traverse(json).forEach((item) => {\n    if (isMitosisNode(item)) {\n      Object.keys(item.bindings).forEach((key) => {\n        if (key === 'innerHTML') {\n          innerHTMLIsUsed = true;\n          return;\n        }\n      });\n    }\n  });\n  return innerHTMLIsUsed;\n};\n\nconst { types } = babel;\n\n/**\n * Prefixes state identifiers with this.\n * e.g. state.foo --> this.foo\n */\nconst prefixState = (code: string): string => {\n  return replaceNodes({\n    code,\n    nodeMaps: [\n      {\n        from: types.identifier('state'),\n        to: types.thisExpression(),\n      },\n    ],\n  }).trim();\n};\n\nexport const processAngularCode =\n  ({\n    contextVars,\n    outputVars,\n    domRefs,\n    replaceWith,\n  }: {\n    contextVars: string[];\n    outputVars: string[];\n    domRefs: string[];\n    replaceWith?: string;\n  }) =>\n  (code: string) =>\n    pipe(\n      DO_NOT_USE_VARS_TRANSFORMS(code, {\n        contextVars,\n        domRefs,\n        outputVars,\n      }),\n      /**\n       * Only prefix state that is in the Angular class component.\n       * Do not prefix state referenced in the template\n       */\n      replaceWith === 'this' ? prefixState : (x) => x,\n      (newCode) => stripStateAndPropsRefs(newCode, { replaceWith }),\n    );\n"
  },
  {
    "path": "packages/core/src/generators/angular/helpers/parse-selector.ts",
    "content": "import { CssSelector } from '@angular/compiler';\n\nexport function parseSelector(selector: string) {\n  const { element, classNames, attrs } = CssSelector.parse(selector)[0];\n  const attributes = attrs.reduce((acc, attr, i) => {\n    if (i % 2 === 0) {\n      acc[attr] = attrs[i + 1];\n    }\n    return acc;\n  }, {} as Record<string, string>);\n\n  return {\n    element,\n    classNames,\n    attributes,\n  };\n}\n"
  },
  {
    "path": "packages/core/src/generators/angular/index.ts",
    "content": "export * from './component';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/blocks.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS, VALID_HTML_TAGS } from '@/constants/html_tags';\nimport { HELPER_FUNCTIONS, hasFirstChildKeyAttribute } from '@/generators/angular/helpers';\nimport { parseSelector } from '@/generators/angular/helpers/parse-selector';\nimport { AngularBlockOptions, ToAngularOptions } from '@/generators/angular/types';\nimport { babelTransformExpression } from '@/helpers/babel-transform';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport {\n  checkIsBindingNativeEvent,\n  checkIsEvent,\n  getEventNameWithoutOn,\n} from '@/helpers/event-handlers';\nimport { getBuilderTagName } from '@/helpers/get-tag-name';\nimport isChildren from '@/helpers/is-children';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { stripSlotPrefix } from '@/helpers/slots';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { Binding, ForNode, MitosisNode } from '@/types/mitosis-node';\nimport { isCallExpression } from '@babel/types';\nimport { pipe } from 'fp-ts/function';\nimport { isString, kebabCase } from 'lodash';\nimport { addCodeNgAfterViewInit, addCodeToOnUpdate } from '../helpers/hooks';\n\nconst getChildren = (\n  root: MitosisComponent,\n  json: MitosisNode,\n  options: ToAngularOptions,\n  blockOptions: AngularBlockOptions,\n): string =>\n  json.children\n    ?.map((item) => blockToAngularSignals({ root, json: item, options, blockOptions }))\n    .join('\\n');\n\nconst MAPPERS: {\n  [key: string]: (\n    root: MitosisComponent,\n    json: MitosisNode,\n    options: ToAngularOptions,\n    blockOptions: AngularBlockOptions,\n  ) => string;\n} = {\n  Fragment: (root, json, options, blockOptions) => {\n    const children = getChildren(root, json, options, blockOptions);\n    // TODO: Handle `key`?\n    return `<ng-container>${children}</ng-container>`;\n  },\n  Slot: (root, json, options, blockOptions) => {\n    const children = getChildren(root, json, options, blockOptions);\n\n    const namedSlotTransform = Object.entries({ ...json.bindings, ...json.properties })\n      .map(([binding, value]) => {\n        if (value && binding === 'name') {\n          const selector = pipe(isString(value) ? value : value.code, stripSlotPrefix, kebabCase);\n          return `select=\"[${selector}]\"`;\n        }\n      })\n      .join('\\n');\n    return `<ng-content ${namedSlotTransform}>\n${children}\n</ng-content>`;\n  },\n  For: (root, json, options, blockOptions) => {\n    const forNode = json as ForNode;\n    const indexName = forNode.scope.indexName;\n    const forName = forNode.scope.forName;\n\n    let trackByFnName;\n    // Check if \"key\" is present for the first child of the for loop\n    if (hasFirstChildKeyAttribute(forNode)) {\n      const fnIndex = (root.meta?._trackByForIndex as number) || 0;\n      trackByFnName = `trackBy${\n        forName ? forName.charAt(0).toUpperCase() + forName.slice(1) : ''\n      }${fnIndex}`;\n      root.meta._trackByForIndex = fnIndex + 1;\n      let code = forNode.children[0].bindings.key?.code;\n\n      root.state[trackByFnName] = {\n        code: `${trackByFnName}(${indexName ?? '_'}: number, ${forName}: any) { return ${code}; }`,\n        type: 'method',\n      };\n    }\n\n    const children = getChildren(root, json, options, blockOptions);\n    const item = forName ?? '_';\n    const of = forNode.bindings.each?.code;\n    const track = `track ${\n      trackByFnName\n        ? `${trackByFnName}(${indexName ?? 'i'}, ${forName})`\n        : indexName\n        ? indexName\n        : 'i'\n    };`;\n    const index = indexName ? `let ${indexName} = $index` : 'let i = $index';\n\n    return `\n    @for (${item} of ${of};${track}${index}) {\n      ${children}\n     }\n    `;\n  },\n  Show: (root, json, options, blockOptions) => {\n    let condition = json.bindings.when?.code;\n    const children = getChildren(root, json, options, blockOptions);\n\n    let elseBlock = '';\n    // else condition\n    if (isMitosisNode(json.meta?.else)) {\n      elseBlock = `@else{\n      ${blockToAngularSignals({ root, json: json.meta.else, options, blockOptions })}\n      }`;\n    }\n\n    if (condition?.includes('children()')) {\n      console.error(`\n${json.name}: You can't use children() in a Show block for \\`when\\` targeting angular.\nTry to invert it like this: \n\"<Show when={props.label} else={props.children}>{props.label}</Show>\"\n`);\n    }\n\n    return `@if(${condition}){\n    ${children}\n    }${elseBlock}`;\n  },\n};\n\n// TODO: Maybe in the future allow defining `string | function` as values\nconst BINDINGS_MAPPER: { [key: string]: string | undefined } = {\n  innerHTML: 'innerHTML',\n  style: 'ngStyle',\n};\n\nconst handleDynamicComponentBindings = (node: MitosisNode) => {\n  let allProps = '';\n\n  for (const key in node.properties) {\n    if (key.startsWith('$') || key === 'key') {\n      continue;\n    }\n    const value = node.properties[key];\n    allProps += `${key}: '${value}', `;\n  }\n\n  for (const key in node.bindings) {\n    if (key.startsWith('\"') || key.startsWith('$') || key === 'key') {\n      continue;\n    }\n    const { code } = node.bindings[key]!;\n\n    if (key === 'ref') {\n      allProps += `${key}: this.${code}(), `;\n      continue;\n    }\n\n    if (node.bindings[key]?.type === 'spread') {\n      allProps += `...${code}, `;\n      continue;\n    }\n\n    let keyToUse = key.includes('-') ? `'${key}'` : key;\n    keyToUse = keyToUse.replace('state.', '').replace('props.', '');\n\n    if (checkIsEvent(key)) {\n      const eventName = getEventNameWithoutOn(key);\n      allProps += `on${eventName.charAt(0).toUpperCase() + eventName.slice(1)}: ${code.replace(\n        /\\(.*?\\)/g,\n        '',\n      )}.bind(this), `;\n    } else {\n      allProps += `${keyToUse}: ${code}, `;\n    }\n  }\n\n  if (allProps.endsWith(', ')) {\n    allProps = allProps.slice(0, -2);\n  }\n\n  if (allProps.startsWith(', ')) {\n    allProps = allProps.slice(2);\n  }\n\n  return allProps;\n};\n\nconst codeSetAttributes = (refName: string, code: string) => {\n  return `this.setAttributes(this.${refName}()?.nativeElement, ${code});`;\n};\n\nconst saveSpreadRef = (root: MitosisComponent, refName: string) => {\n  root.compileContext = root.compileContext || {};\n  root.compileContext.angular = root.compileContext.angular || { extra: {} };\n  root.compileContext.angular.extra = root.compileContext.angular.extra || {};\n  root.compileContext.angular.extra.spreadRefs = root.compileContext.angular.extra.spreadRefs || [];\n  root.compileContext.angular.extra.spreadRefs.push(refName);\n};\n\nconst handleSpreadBinding = (node: MitosisNode, binding: Binding, root: MitosisComponent) => {\n  if (VALID_HTML_TAGS.includes(node.name.trim())) {\n    if (binding.code === 'this') {\n      // if its an arbitrary { ...props } spread then we skip because Angular needs a named prop to be defined\n      return;\n    }\n\n    let refName = '';\n    if (node.meta._spreadRefName) {\n      refName = node.meta._spreadRefName as string;\n      const shouldAddRef = !node.meta._spreadRefAdded;\n      node.meta._spreadRefAdded = true;\n\n      addCodeToOnUpdate(root, codeSetAttributes(refName, binding.code));\n      addCodeNgAfterViewInit(root, codeSetAttributes(refName, binding.code));\n\n      return shouldAddRef ? `#${refName} ` : '';\n    }\n\n    const spreadRefIndex = root.meta._spreadRefIndex || 0;\n    refName = `elRef${spreadRefIndex}`;\n    root.meta._spreadRefIndex = (spreadRefIndex as number) + 1;\n\n    node.meta._spreadRefName = refName;\n    node.meta._spreadRefAdded = true;\n\n    node.bindings['spreadRef'] = createSingleBinding({ code: refName });\n    if (!root.refs[refName]) {\n      root.refs[refName] = { argument: '' };\n    }\n\n    if (!root.state['_listenerFns']) {\n      root.state['_listenerFns'] = {\n        code: 'new Map()',\n        type: 'property',\n      };\n    }\n\n    addCodeToOnUpdate(root, codeSetAttributes(refName, binding.code));\n    addCodeNgAfterViewInit(root, codeSetAttributes(refName, binding.code));\n\n    if (!root.state['setAttributes']) {\n      root.state['setAttributes'] = {\n        code: HELPER_FUNCTIONS(true).setAttributes,\n        type: 'method',\n      };\n    }\n\n    if (!root.hooks.onUnMount) {\n      root.hooks.onUnMount = {\n        code: `\n          for (const fn of this._listenerFns.values()) {\n            fn();\n          }\n        `,\n      };\n    }\n\n    saveSpreadRef(root, refName);\n\n    return `#${refName} `;\n  }\n};\n\nconst stringifyBinding =\n  (node: MitosisNode, blockOptions: AngularBlockOptions, root: MitosisComponent) =>\n  ([key, binding]: [string, Binding | undefined]) => {\n    if (key.startsWith('$') || key === 'key') {\n      return;\n    }\n    if (binding?.type === 'spread') {\n      return handleSpreadBinding(node, binding, root);\n    }\n\n    const keyToUse = BINDINGS_MAPPER[key] || key;\n\n    if (!binding) return '';\n\n    const { code } = binding;\n\n    if (checkIsEvent(keyToUse)) {\n      const args: string[] = binding.arguments || [];\n      const event = getEventNameWithoutOn(keyToUse);\n\n      if (code.includes('event.target.')) {\n        console.error(`\nComponent ${node.name} has an event ${event} that uses 'event.target.xxx'. \nThis will cause an error in Angular.\nPlease create a new function with the EventTarget and use e.g:\n'(event.target as HTMLInputElement).value'`);\n      }\n\n      const value = babelTransformExpression(code, {\n        Identifier(path) {\n          // Only change arguments inside a call expression or event\n          if (\n            (isCallExpression(path.parent) && args.includes(path.node.name)) ||\n            path.node.name === 'event'\n          ) {\n            path.node.name = '$event';\n          }\n        },\n      });\n\n      // native events are all lowerCased\n      const lowerCaseEvent = event.toLowerCase();\n      const eventKey =\n        checkIsBindingNativeEvent(event) ||\n        blockOptions.nativeEvents?.find(\n          (nativeEvent) =>\n            nativeEvent === keyToUse || nativeEvent === event || nativeEvent === lowerCaseEvent,\n        )\n          ? lowerCaseEvent\n          : event;\n      return ` (${eventKey})=\"${value}\"`;\n    } else if (keyToUse === 'class') {\n      return ` [class]=\"${code}\" `;\n    } else if (keyToUse === 'ref' || keyToUse === 'spreadRef') {\n      return ` #${code} `;\n    } else if (\n      (VALID_HTML_TAGS.includes(node.name.trim()) || keyToUse.includes('-')) &&\n      !blockOptions.nativeAttributes?.includes(keyToUse) &&\n      !Object.values(BINDINGS_MAPPER).includes(keyToUse)\n    ) {\n      // standard html elements need the attr to satisfy the compiler in many cases: eg: svg elements and [fill]\n      return ` [attr.${keyToUse}]=\"${code}\" `;\n    } else if (keyToUse === 'innerHTML') {\n      return blockOptions.sanitizeInnerHTML\n        ? ` [innerHTML]=\"${code}\" `\n        : ` [innerHTML]=\"sanitizer.bypassSecurityTrustHtml(${code})\" `;\n    } else {\n      return `[${keyToUse}]=\"${code}\"`;\n    }\n  };\n\nconst getElementTag = (json: MitosisNode, blockOptions?: AngularBlockOptions) => {\n  const childComponents = blockOptions?.childComponents || [];\n  let element,\n    classNames: string[] = [],\n    attributes;\n\n  const isComponent = childComponents.find((impName) => impName === json.name);\n  const tagName = getBuilderTagName(json);\n  const selector = json.meta.selector || blockOptions?.selector;\n  if (selector) {\n    try {\n      ({ element, classNames, attributes } = parseSelector(`${selector}`));\n    } catch {\n      element = tagName ?? kebabCase(json.name);\n    }\n  }\n  if (!element) {\n    if (isComponent) {\n      element = tagName ?? kebabCase(json.name);\n    } else {\n      element = tagName ?? json.name;\n    }\n  }\n\n  let additionalString = '';\n  // TODO: merge with existing classes/bindings\n  if (classNames.length) {\n    additionalString += `class=\"${classNames.join(' ')}\" `;\n  }\n\n  // TODO: Merge with existing properties\n  if (attributes) {\n    Object.entries(attributes).forEach(([key, value]) => {\n      if (value) {\n        additionalString += `${key}=${JSON.stringify(value)} `;\n      } else {\n        additionalString += `${key} `;\n      }\n    });\n  }\n\n  return { element, additionalString };\n};\n\nexport const blockToAngularSignals = ({\n  root,\n  json,\n  options = {},\n  blockOptions = {\n    nativeAttributes: [],\n    nativeEvents: [],\n  },\n  rootRef,\n}: {\n  root: MitosisComponent;\n  json: MitosisNode;\n  options?: ToAngularOptions;\n  rootRef?: string;\n  blockOptions?: AngularBlockOptions;\n}): string => {\n  if (MAPPERS[json.name]) {\n    return MAPPERS[json.name](root, json, options, blockOptions);\n  }\n\n  if (isChildren({ node: json })) {\n    return `<ng-content></ng-content>`;\n  }\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n\n  const textCode = json.bindings._text?.code;\n  if (textCode) {\n    return `{{${textCode}}}`;\n  }\n\n  let str = '';\n\n  // Handle dynamic components, state.MyComponent / props.MyComponent\n  if (json.name.includes('.')) {\n    const elSelector = blockOptions.childComponents?.find((impName) => impName === json.name)\n      ? kebabCase(json.name)\n      : json.name;\n\n    const elSelectorProcessed = elSelector.replace('state.', '').replace('props.', '');\n    const dynamicComponentRef = elSelectorProcessed.replace(/^this\\.([^.]+)/, '$1()');\n\n    let allProps = handleDynamicComponentBindings(json);\n    const computedName = `dynamicProps_${hashCodeAsString(allProps)}`;\n\n    if (allProps) {\n      if (!root.state[computedName]) {\n        root.state[computedName] = {\n          code: `get ${computedName}() { \n          return { ${allProps} };\n        }`,\n          type: 'getter',\n        };\n      }\n    }\n\n    str += `<ng-container *ngComponentOutlet=\"\n      ${dynamicComponentRef};${allProps ? `\\ninputs: ${computedName}();` : ''}\n      content: myContent();\n      \">  `;\n\n    str += `</ng-container>`;\n    return str;\n  }\n\n  const { element, additionalString } = getElementTag(json, blockOptions);\n  str += `<${element} ${additionalString}`;\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    str += ` ${key}=\"${value}\" `;\n  }\n\n  const stringifiedBindings = Object.entries(json.bindings)\n    .map(stringifyBinding(json, blockOptions, root))\n    .join('');\n\n  str += stringifiedBindings;\n\n  if (rootRef && !str.includes(`#${rootRef}`)) {\n    // Add ref for passing attributes\n    str += `#${rootRef}`;\n  }\n\n  if (SELF_CLOSING_HTML_TAGS.has(element)) {\n    return str + ' />';\n  }\n  str += '>';\n\n  if (json.children) {\n    str += json.children\n      .map((item) => blockToAngularSignals({ root, json: item, options, blockOptions }))\n      .join('\\n');\n  }\n\n  str += `</${element}>`;\n\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/component.ts",
    "content": "import {\n  getDefaultProps,\n  getTemplateFormat,\n  traverseAndCheckIfInnerHTMLIsUsed,\n  traverseToGetAllDynamicComponents,\n} from '@/generators/angular/helpers';\nimport { tryFormat } from '@/generators/angular/helpers/format';\nimport { getOutputs } from '@/generators/angular/helpers/get-outputs';\nimport { getDomRefs } from '@/generators/angular/helpers/get-refs';\nimport { getAngularStyles } from '@/generators/angular/helpers/get-styles';\nimport { addCodeNgAfterViewInit } from '@/generators/angular/helpers/hooks';\nimport { blockToAngularSignals } from '@/generators/angular/signals/blocks';\nimport { getAngularCoreImportsAsString } from '@/generators/angular/signals/helpers';\nimport { getComputedGetters } from '@/generators/angular/signals/helpers/get-computed';\nimport { getSignalInputs } from '@/generators/angular/signals/helpers/get-inputs';\nimport { getCodeProcessorPlugins } from '@/generators/angular/signals/plugins/get-code-processor-plugins';\nimport {\n  BUILT_IN_COMPONENTS,\n  DEFAULT_ANGULAR_OPTIONS,\n  ToAngularOptions,\n} from '@/generators/angular/types';\nimport { ProcessBindingOptions } from '@/helpers/class-components';\nimport { dedent } from '@/helpers/dedent';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getChildComponents } from '@/helpers/get-child-components';\nimport { getComponentsUsed } from '@/helpers/get-components-used';\nimport { getProps } from '@/helpers/get-props';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { isHookEmpty } from '@/helpers/is-hook-empty';\nimport { isUpperCase } from '@/helpers/is-upper-case';\nimport { initializeOptions } from '@/helpers/merge-options';\n\nimport { ImportValues, renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport {\n  ROOT_REF,\n  getAddAttributePassingRef,\n  getAttributePassingString,\n  shouldAddAttributePassing,\n} from '@/helpers/web-components/attribute-passing';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent, MitosisImport } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { kebabCase, uniq } from 'lodash';\nimport { getDynamicTemplateRefs, getInitEmbedViewCode } from './helpers/get-dynamic-template-refs';\n\nexport const componentToAngularSignals: TranspilerGenerator<ToAngularOptions> = (\n  userOptions = {},\n) => {\n  return ({ component }) => {\n    // Make a copy we can safely mutate, similar to babel's toolchain\n    let json = fastClone(component);\n\n    // Init compileContext\n    json.compileContext = {\n      angular: {\n        hooks: {\n          ngAfterViewInit: {\n            code: '',\n          },\n          ngAfterContentInit: {\n            code: '',\n          },\n        },\n        extra: {\n          importCalls: [],\n        },\n      },\n    };\n\n    const options = initializeOptions({\n      target: 'angular',\n      component,\n      defaults: DEFAULT_ANGULAR_OPTIONS,\n      userOptions,\n    });\n    options.typescript = true; // Angular uses ts all the time\n    options.api = 'signals';\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    const withAttributePassing = shouldAddAttributePassing(json, options);\n    const rootRef = getAddAttributePassingRef(json, options);\n    const domRefs = getDomRefs({ json, options, rootRef, withAttributePassing });\n\n    let props: string[] = Array.from(getProps(json));\n    const events: string[] = props.filter((prop) => checkIsEvent(prop));\n    const childComponents: string[] = getChildComponents(json);\n\n    props = props.filter((prop) => {\n      // Best practise for Angular is to use Events without \"on\"\n      // Stencil doesn't need children as a prop\n      return prop !== 'children' && !checkIsEvent(prop);\n    });\n    const processBindingOptions: ProcessBindingOptions = {\n      events,\n      props,\n      target: 'angular',\n      skipAppendEmit: true,\n    };\n\n    options.plugins = getCodeProcessorPlugins(json, options, processBindingOptions);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    // CSS\n    const styles = getAngularStyles({ json, options });\n\n    // Mitosis Metadata\n    const useMetadata = json.meta?.useMetadata;\n    const onPush = useMetadata?.angular?.changeDetection == 'OnPush';\n    const writeableSignals = useMetadata?.angular?.signals?.writeable || [];\n    const requiredSignals = useMetadata?.angular?.signals?.required || [];\n\n    // Context & Injectables\n    const injectables: string[] = Object.entries(json?.context?.get || {}).map(\n      ([variableName, { name }]) => {\n        return `public ${variableName} : ${name}`;\n      },\n    );\n    const shouldUseSanitizer =\n      !useMetadata?.angular?.sanitizeInnerHTML && traverseAndCheckIfInnerHTMLIsUsed(json);\n    if (shouldUseSanitizer) {\n      injectables.push('protected sanitizer: DomSanitizer');\n    }\n\n    // HTML\n    let template = json.children\n      .map((item) => {\n        return blockToAngularSignals({\n          root: json,\n          json: item,\n          options,\n          rootRef: withAttributePassing && rootRef === ROOT_REF ? rootRef : undefined, // only pass rootRef if it's not the default\n          blockOptions: {\n            childComponents,\n            nativeAttributes: useMetadata?.angular?.nativeAttributes ?? [],\n            nativeEvents: useMetadata?.angular?.nativeEvents ?? [],\n            sanitizeInnerHTML: !shouldUseSanitizer,\n          },\n        });\n      })\n      .join('\\n');\n\n    if (options.prettier !== false) {\n      // We need to use 'strict' mode for Angular otherwise it could add spaces around some content\n      template = tryFormat(template, 'html', 'strict');\n    }\n\n    const { components: dynamicComponents, dynamicTemplate } = traverseToGetAllDynamicComponents(\n      json,\n      options,\n      {\n        childComponents,\n        nativeAttributes: json.meta?.useMetadata?.angular?.nativeAttributes ?? [],\n        nativeEvents: json.meta?.useMetadata?.angular?.nativeEvents ?? [],\n      },\n      'signals',\n    );\n\n    const hasDynamicComponents = dynamicComponents.size > 0;\n    if (hasDynamicComponents) {\n      injectables.push('private viewContainer: ViewContainerRef');\n      json.compileContext!.angular!.hooks!.ngAfterContentInit.code =\n        `this._updateView();` + json.compileContext!.angular!.hooks!.ngAfterContentInit.code;\n    }\n    // Angular component settings\n    const componentsUsed = Array.from(getComponentsUsed(json)).filter(\n      (item) => item.length && isUpperCase(item[0]) && !BUILT_IN_COMPONENTS.has(item),\n    );\n    const componentSettings: Record<string, any> = {\n      selector: useMetadata?.angular?.selector\n        ? `'${useMetadata?.angular?.selector}'`\n        : `'${kebabCase(json.name || 'my-component')}'`,\n      standalone: 'true',\n      imports: `[${['CommonModule', ...componentsUsed].join(', ')}]`,\n      template: `\\`${dynamicTemplate}${getTemplateFormat(template)}\\``,\n    };\n    if (onPush) {\n      componentSettings.changeDetection = 'ChangeDetectionStrategy.OnPush';\n    }\n    if (styles) {\n      componentSettings.styles = `\\`${styles}\\``;\n    }\n    if (useMetadata?.angular?.skipHydration) {\n      componentSettings.host = `{ ngSkipHydration: 'true' }`;\n    }\n\n    stripMetaProperties(json);\n\n    const dataString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: true,\n      functions: false,\n      getters: false,\n      valueMapper: (\n        code: string,\n        _: 'data' | 'function' | 'getter',\n        typeParameter: string | undefined,\n        key: string | undefined,\n      ) => {\n        if (typeParameter && !code.length) {\n          console.error(`\nComponent ${json.name} has state property without an initial value'. \nThis will cause an error in Angular.\nPlease add a initial value for every state property even if it's \\`undefined\\`.`);\n        }\n\n        // Special case for _listenerFns - don't wrap in signal()\n        if (key === '_listenerFns') {\n          return code;\n        }\n\n        if (key) {\n          const propRefs = props.filter((prop) => code.includes(`this.${prop}()`));\n          if (propRefs.length > 0) {\n            if (!json.hooks.onInit?.code) {\n              json.hooks.onInit = {\n                code: `\n          this.${key}.set(${code});\n        `,\n              };\n            } else {\n              json.hooks.onInit.code = `this.${key}.set(${code});`.concat(json.hooks.onInit.code);\n            }\n            return `signal${typeParameter ? `<${typeParameter}>` : ''}(undefined)`;\n          }\n        }\n\n        return `signal${typeParameter ? `<${typeParameter}>` : ''}(${code})`;\n      },\n    });\n\n    const methodsString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: false,\n      functions: true,\n      getters: false,\n      onlyValueMapper: true,\n      valueMapper: (\n        code: string,\n        type: 'data' | 'function' | 'getter',\n        _: string | undefined,\n        key: string | undefined,\n      ) => {\n        return code.startsWith('function') ? code.replace('function', '').trim() : code;\n      },\n    });\n\n    // Handle getters as computed signals\n    const gettersString = getComputedGetters({ json });\n\n    // Check if we need Renderer2 for spread attributes\n    const usesRenderer2 = !!json.state['_listenerFns'];\n    if (usesRenderer2) {\n      injectables.push('private renderer: Renderer2');\n    }\n\n    const importsViewChild =\n      hasDynamicComponents ||\n      domRefs.size !== 0 ||\n      json.compileContext?.angular?.extra?.spreadRefs?.length > 0;\n\n    // Imports\n    const emptyOnMount = isHookEmpty(json.hooks.onMount);\n    const emptyOnUnMount = isHookEmpty(json.hooks.onUnMount);\n    const AfterViewInit = Boolean(!emptyOnMount || withAttributePassing);\n    const OnDestroy = !emptyOnUnMount;\n\n    const coreImports = getAngularCoreImportsAsString({\n      refs: domRefs.size !== 0,\n      input: props.length !== 0,\n      output: events.length !== 0,\n      model: writeableSignals.length !== 0,\n      effect: json.hooks.onUpdate?.length !== 0,\n      signal: dataString.length !== 0 || hasDynamicComponents,\n      computed: gettersString.length !== 0,\n      onPush,\n      AfterViewInit,\n      OnDestroy,\n      viewChild: importsViewChild,\n      viewContainerRef: hasDynamicComponents,\n      templateRef: hasDynamicComponents,\n      renderer: usesRenderer2,\n    });\n\n    // Hooks\n\n    if (!emptyOnMount) {\n      addCodeNgAfterViewInit(json, json.hooks.onMount.map((onMount) => onMount.code).join('\\n'));\n    }\n\n    // Angular interfaces\n    const angularInterfaces = [];\n    if (AfterViewInit) {\n      angularInterfaces.push('AfterViewInit');\n    }\n    if (OnDestroy) {\n      angularInterfaces.push('OnDestroy');\n    }\n\n    let str = dedent`\n        import { ${coreImports} } from '@angular/core';\n        import { CommonModule } from '@angular/common';\n        ${shouldUseSanitizer ? `import { DomSanitizer } from '@angular/platform-browser';` : ''}\n\n    \n        ${json.types ? json.types.join('\\n') : ''}\n        ${getDefaultProps(json)}\n        \n        ${renderPreComponent({\n          explicitImportFileExtension: options.explicitImportFileExtension,\n          component: json,\n          target: 'angular',\n          preserveFileExtensions: options.preserveFileExtensions,\n          importMapper: (\n            _: MitosisComponent,\n            theImport: MitosisImport,\n            importedValues: ImportValues,\n          ) => {\n            if (options.defaultExportComponents) return undefined;\n\n            const { defaultImport } = importedValues;\n            const { path } = theImport;\n\n            if (defaultImport && componentsUsed.includes(defaultImport)) {\n              return `import { ${defaultImport} } from '${path}';`;\n            }\n\n            return undefined;\n          },\n        })}\n    \n        @Component({\n          ${Object.entries(componentSettings)\n            .map(([k, v]) => `${k}: ${v}`)\n            .join(',')}\n        })\n        export ${options.defaultExportComponents ? 'default ' : ''}class ${json.name} ${\n      angularInterfaces.length ? ` implements ${angularInterfaces.join(',')}` : ''\n    } {   \n          ${uniq<string>(json.compileContext!.angular!.extra!.importCalls)\n            .map((importCall: string) => `protected readonly ${importCall} = ${importCall};`)\n            .join('\\n')}\n\n          ${hasDynamicComponents ? getDynamicTemplateRefs(dynamicComponents) : ''}\n          ${getSignalInputs({\n            json,\n            writeableSignals,\n            requiredSignals,\n            props: Array.from(props),\n          })}    \n          ${getOutputs({ json, outputVars: events, api: options.api })}\n    \n          ${Array.from(domRefs)\n            .map((refName) => `${refName} = viewChild<ElementRef>(\"${refName}\")`)\n            .join('\\n')}\n          ${\n            json.compileContext?.angular?.extra?.spreadRefs\n              ? Array.from(new Set(json.compileContext.angular.extra.spreadRefs as string[]))\n                  .filter((refName) => !Array.from(domRefs).includes(refName))\n                  .map((refName) => `${refName} = viewChild<ElementRef>(\"${refName}\")`)\n                  .join('\\n')\n              : ''\n          }\n    \n          ${dataString}\n          ${gettersString}\n          ${methodsString}\n    \n          constructor(${injectables.join(',\\n')}) {\n          ${\n            isHookEmpty(json.hooks.onUpdate)\n              ? ''\n              : `if (typeof window !== 'undefined') {\n                ${json.hooks.onUpdate\n                  ?.map(\n                    ({ code, depsArray }) =>\n                      /**\n                       * We need allowSignalWrites only for Angular 17 https://angular.dev/api/core/CreateEffectOptions#allowSignalWrites\n                       * TODO: remove on 2025-05-15 https://angular.dev/reference/releases#actively-supported-versions\n                       */\n                      `effect(() => {\n                      ${\n                        depsArray?.length\n                          ? `\n                      // --- Mitosis: Workaround to make sure the effect() is triggered ---\n                      ${depsArray.join('\\n')}\n                      // --- \n                      `\n                          : ''\n                      }\n                      ${code}\n                      },\n                      {\n                      allowSignalWrites: true, // Enable writing to signals inside effects\n                      }\n                      );`,\n                  )\n                  .join('\\n')}\n                  }\n                  `\n          }}\n          \n          ${withAttributePassing ? getAttributePassingString(options.typescript) : ''}\n          \n          ${\n            isHookEmpty(json.hooks.onInit)\n              ? ''\n              : `ngOnInit() {\n                  ${!json.hooks?.onInit ? '' : json.hooks.onInit?.code}\n                }`\n          }\n\n          ${\n            !hasDynamicComponents\n              ? ''\n              : `\n              _updateView() {\n                ${getInitEmbedViewCode(dynamicComponents)}\n              }`\n          }\n    \n          ${\n            // hooks specific to Angular\n            json.compileContext?.angular?.hooks\n              ? Object.entries(json.compileContext?.angular?.hooks)\n                  .filter(([_, value]) => !isHookEmpty(value))\n                  .map(([key, value]) => {\n                    return `${key}() {\n                    if (typeof window !== 'undefined') {\n                ${value.code}\n                }\n              }`;\n                  })\n                  .join('\\n')\n              : ''\n          }\n    \n          ${\n            emptyOnUnMount\n              ? ''\n              : `ngOnDestroy() {\n                  ${json.hooks.onUnMount?.code || ''}\n                }`\n          }\n    \n        }\n      `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      str = tryFormat(str, 'typescript');\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/helpers/get-computed.ts",
    "content": "import { babelTransformExpression } from '@/helpers/babel-transform';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport type { MitosisComponent } from '@/types/mitosis-component';\nimport type { Binding } from '@/types/mitosis-node';\nimport { isIdentifier, isMemberExpression } from '@babel/types';\nimport { pickBy } from 'lodash';\n\nexport const getComputedGetters = ({ json }: { json: MitosisComponent }) => {\n  const getterKeys = Object.keys(pickBy(json.state, (i) => i?.type === 'getter'));\n\n  if (!getterKeys.length) {\n    return '';\n  }\n\n  return getterKeys\n    .map((key) => {\n      const code = json.state[key]?.code?.toString();\n      if (!code) {\n        return '';\n      }\n\n      // Transform `get foo() { return this.bar }` to `foo = computed(() => { return bar.value })`\n      const getterAsFunction = code\n        .replace('get', '')\n        .replace(key, '')\n        .trim()\n        .replace(/^\\(\\)/, '() =>');\n\n      return `${key} = computed(${getterAsFunction})`;\n    })\n    .filter(Boolean)\n    .join('\\n');\n};\n\nexport const createObjectSpreadComputed = (\n  json: MitosisComponent,\n  binding: Binding,\n  key: string,\n  isForContext: boolean = false,\n  forName: string = '',\n  indexName: string = '',\n): string => {\n  const computedName = `objSpread_${key}_${hashCodeAsString(binding.code)}`;\n\n  const transformedCode = babelTransformExpression(binding.code, {\n    MemberExpression(path) {\n      if (\n        isMemberExpression(path.node) &&\n        isIdentifier(path.node.object) &&\n        isIdentifier(path.node.property) &&\n        (path.node.object.name === 'props' || path.node.object.name === 'state') &&\n        !path.node.extra?.processed\n      ) {\n        path.node.object.name = 'this';\n        path.node.extra = { ...path.node.extra, processed: true };\n        const code = path.toString();\n        path.replaceWithSourceString(`${code}()`);\n      }\n    },\n  });\n\n  const finalCode = transformedCode\n    // Replace props.x.y with this.x().y\n    .replace(/\\bprops\\.(\\w+)(\\.\\w+|\\?\\.\\w+|\\[.*?\\])/g, (match, prop, rest) => {\n      return `this.${prop}()${rest}`;\n    })\n    // Replace state.x.y with this.x().y\n    .replace(/\\bstate\\.(\\w+)(\\.\\w+|\\?\\.\\w+|\\[.*?\\])/g, (match, prop, rest) => {\n      return `this.${prop}()${rest}`;\n    });\n\n  if (isForContext && (forName || indexName)) {\n    // Create a method that accepts the for loop context variables\n    const params = [];\n    if (forName) params.push(forName);\n    if (indexName) params.push(indexName);\n\n    json.state[computedName] = {\n      code: `${computedName}(${params.join(', ')}) { return ${finalCode} }`,\n      type: 'method',\n    };\n  } else {\n    // Creates a getter that gets converted to Angular's computed\n    json.state[computedName] = {\n      code: `get ${computedName}() { return ${finalCode} }`,\n      type: 'getter',\n    };\n  }\n\n  return computedName;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/helpers/get-dynamic-template-refs.ts",
    "content": "const getViewContainerRefName = (component: string) => {\n  return component.split('.')[1].toLowerCase() + 'TemplateRef';\n};\n\nconst getNgTemplateRefName = (component: string) => {\n  return component.split('.')[1].toLowerCase() + 'Template';\n};\n\nexport const getDynamicTemplateRefs = (dynamicComponents: Set<string>) => {\n  return `\n  myContent = signal<any[]>([]);\n  ${Array.from(dynamicComponents)\n    .map(\n      (component) =>\n        `${getViewContainerRefName(\n          component,\n        )} = viewChild<TemplateRef<any>>('${getNgTemplateRefName(component)}');`,\n    )\n    .join('\\n')}\n  `;\n};\n\nexport const getInitEmbedViewCode = (dynamicComponents: Set<string>) => {\n  return `\n  this.myContent.set([${Array.from(dynamicComponents)\n    .map(\n      (component) =>\n        `this.viewContainer.createEmbeddedView(this.${getViewContainerRefName(\n          component,\n        )}()).rootNodes`,\n    )\n    .join(', ')}]);`;\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/helpers/get-inputs.ts",
    "content": "import type { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getSignalInputs = ({\n  props,\n  json,\n  writeableSignals,\n  requiredSignals,\n}: {\n  props: string[];\n  json: MitosisComponent;\n  writeableSignals: string[];\n  requiredSignals: string[];\n}) => {\n  const propsTypeRef = json.propsTypeRef !== 'any' ? json.propsTypeRef : undefined;\n  return props\n    .map((prop) => {\n      const hasDefaultProp = json.defaultProps && json.defaultProps.hasOwnProperty(prop);\n      const propType = propsTypeRef ? `${propsTypeRef}[\"${prop}\"]` : 'any';\n      const defaultProp = hasDefaultProp ? `defaultProps[\"${prop}\"]` : '';\n      return `${prop}: ${\n        writeableSignals.includes(prop) ? 'ModelSignal' : 'InputSignal'\n      }<${propType}> = ${writeableSignals.includes(prop) ? 'model' : 'input'}${\n        requiredSignals.includes(prop) ? '.required' : ''\n      }<${propType}>(${defaultProp})`;\n    })\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/helpers/index.ts",
    "content": "export const getAngularCoreImportsAsString = ({\n  refs,\n  output,\n  input,\n  model,\n  onPush,\n  effect,\n  signal,\n  AfterViewInit,\n  OnDestroy,\n  computed,\n  viewChild,\n  viewContainerRef,\n  templateRef,\n  renderer,\n}: {\n  refs: boolean;\n  output: boolean;\n  input: boolean;\n  model: boolean;\n  onPush: boolean;\n  AfterViewInit: boolean;\n  OnDestroy: boolean;\n  effect: boolean;\n  signal: boolean;\n  computed: boolean;\n  viewChild: boolean;\n  viewContainerRef: boolean;\n  templateRef: boolean;\n  renderer?: boolean;\n}): string => {\n  const angularCoreImports: Record<string, boolean | undefined> = {\n    Component: true,\n    viewChild: refs || viewChild,\n    ElementRef: refs || viewChild,\n    ViewContainerRef: viewContainerRef,\n    TemplateRef: templateRef,\n    Renderer2: renderer,\n    model,\n    output,\n    input,\n    effect,\n    signal,\n    computed,\n    ChangeDetectionStrategy: onPush,\n    OnDestroy,\n    AfterViewInit,\n    InputSignal: input,\n    ModelSignal: model,\n  };\n  return Object.entries(angularCoreImports)\n    .map(([key, bool]) => (bool ? key : ''))\n    .filter((key) => !!key)\n    .join(', ');\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/signals/plugins/get-code-processor-plugins.ts",
    "content": "import { createObjectSpreadComputed } from '@/generators/angular/signals/helpers/get-computed';\nimport { ToAngularOptions } from '@/generators/angular/types';\nimport { babelTransformExpression } from '@/helpers/babel-transform';\nimport { ProcessBindingOptions, processClassComponentBinding } from '@/helpers/class-components';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { ForNodeName } from '@/types/mitosis-node';\nimport { NodePath } from '@babel/core';\nimport {\n  AssignmentExpression,\n  BinaryExpression,\n  MemberExpression,\n  TemplateLiteral,\n  arrowFunctionExpression,\n  assignmentExpression,\n  blockStatement,\n  callExpression,\n  expressionStatement,\n  identifier,\n  isCallExpression,\n  isIdentifier,\n  isIfStatement,\n  isMemberExpression,\n  memberExpression,\n  objectExpression,\n  objectProperty,\n  returnStatement,\n  spreadElement,\n  updateExpression,\n} from '@babel/types';\n\n// Helper functions for handling nested state updates\nconst getBaseObject = (node: any): any => {\n  if (!node) return null;\n  if (!isMemberExpression(node)) return node;\n  return getBaseObject(node.object);\n};\n\nconst getPropertyFromStateChain = (node: any): string | null => {\n  // Start at the leftmost object and traverse up to find the first property after 'state'\n  let current = node;\n  while (isMemberExpression(current)) {\n    if (\n      isMemberExpression(current.object) &&\n      isIdentifier(current.object.object) &&\n      current.object.object.name === 'state' &&\n      isIdentifier(current.object.property)\n    ) {\n      return current.object.property.name;\n    }\n    current = current.object;\n  }\n  return null;\n};\n\nconst getNestedPath = (node: any, topLevelProp: string): string[] => {\n  const path: string[] = [];\n  let current = node;\n\n  // Collect all property names starting after the top-level property\n  let foundTopLevel = false;\n  while (isMemberExpression(current)) {\n    if (isIdentifier(current.property)) {\n      path.unshift(current.property.name);\n    }\n\n    if (\n      isMemberExpression(current.object) &&\n      isIdentifier(current.object.object) &&\n      current.object.object.name === 'state' &&\n      isIdentifier(current.object.property) &&\n      current.object.property.name === topLevelProp\n    ) {\n      foundTopLevel = true;\n      break;\n    }\n\n    current = current.object;\n  }\n\n  return foundTopLevel ? path : [];\n};\n\nconst buildPathAccess = (baseParam: any, propertyPath: string[]): any => {\n  return propertyPath.reduce((acc, prop) => {\n    return memberExpression(acc, identifier(prop));\n  }, baseParam);\n};\n\nconst isStateOrPropsExpression = (path: NodePath) => {\n  return (\n    isMemberExpression(path.node) &&\n    isIdentifier(path.node.object) &&\n    isIdentifier(path.node.property) &&\n    (path.node.object.name === 'props' || path.node.object.name === 'state')\n  );\n};\n\nconst isAFunctionOrMethod = (\n  json: MitosisComponent | undefined,\n  path: NodePath<MemberExpression>,\n) => {\n  return (\n    json &&\n    isIdentifier(path.node.object) &&\n    isIdentifier(path.node.property) &&\n    path.node.object.name === 'state' &&\n    json.state &&\n    typeof path.node.property.name === 'string' &&\n    json.state[path.node.property.name] &&\n    json.state[path.node.property.name]?.type &&\n    (json.state[path.node.property.name]?.type === 'method' ||\n      json.state[path.node.property.name]?.type === 'function')\n  );\n};\n\nconst handleAssignmentExpression = (path: NodePath<AssignmentExpression | BinaryExpression>) => {\n  if (\n    isMemberExpression(path.node.left) &&\n    isIdentifier(path.node.left.object) &&\n    isIdentifier(path.node.left.property) &&\n    path.node.left.object.name === 'state'\n  ) {\n    const root = memberExpression(path.node.left, identifier('set'));\n    root.extra = { ...root.extra, updateExpression: true };\n    const call = callExpression(root, [path.node.right]);\n    path.replaceWith(call);\n  } else if (\n    isMemberExpression(path.node.left) &&\n    path.node.left.computed &&\n    ((isMemberExpression(path.node.left.object) &&\n      isIdentifier(path.node.left.object.object) &&\n      path.node.left.object.object.name === 'state') ||\n      (isIdentifier(path.node.left.object) && path.node.left.object.name === 'state'))\n  ) {\n    /**\n     * Handle array element assignments like: state.arr[0] = '123'\n     * Example:\n     * Input:  state.arr[0] = '123'\n     * Output: state.arr.update(arr => {\n     *   arr[0] = '123';\n     *   return arr;\n     * })\n     */\n\n    let stateProp;\n    let baseObject;\n\n    if (isIdentifier(path.node.left.object) && path.node.left.object.name === 'state') {\n      stateProp = path.node.left.property;\n      baseObject = path.node.left.object;\n    } else {\n      stateProp = getPropertyFromStateChain(path.node.left);\n      if (!stateProp) return;\n      baseObject = memberExpression(identifier('state'), identifier(stateProp));\n    }\n\n    const root = memberExpression(baseObject, identifier('update'));\n    root.extra = { ...root.extra, updateExpression: true };\n\n    const paramName =\n      typeof stateProp === 'string' ? stateProp : isIdentifier(stateProp) ? stateProp.name : 'item';\n    const param = identifier(paramName);\n\n    let assignTarget;\n\n    if (isIdentifier(path.node.left.object) && path.node.left.object.name === 'state') {\n      // Direct state array: state[index] = value\n      assignTarget = memberExpression(param, path.node.left.property, true);\n    } else {\n      // Property array: state.arr[index] = value\n      assignTarget = memberExpression(param, path.node.left.property, true);\n    }\n\n    const block = blockStatement([\n      expressionStatement(assignmentExpression('=', assignTarget, path.node.right)),\n      returnStatement(param),\n    ]);\n\n    const arrowFunction = arrowFunctionExpression([param], block);\n    const call = callExpression(root, [arrowFunction]);\n    path.replaceWith(call);\n  } else if (\n    isMemberExpression(path.node.left) &&\n    isMemberExpression(path.node.left.object) &&\n    isIdentifier(getBaseObject(path.node.left)) &&\n    getBaseObject(path.node.left).name === 'state'\n  ) {\n    /**\n     * Handle any level of nested updates like state.store.something.nested = newVal\n     * Example:\n     * Input:  state.store.something.nested = newVal\n     * Output: state.store.update(obj => ({\n     *   ...obj,\n     *   store: {\n     *     ...obj.store,\n     *     something: {\n     *       ...obj.store.something,\n     *       nested: newVal\n     *     }\n     *   }\n     * }))\n     */\n\n    const stateProp = getPropertyFromStateChain(path.node.left);\n    if (!stateProp) return;\n\n    const topLevelProp = memberExpression(identifier('state'), identifier(stateProp));\n\n    const nestedPaths = getNestedPath(path.node.left, stateProp);\n\n    const root = memberExpression(topLevelProp, identifier('update'));\n    root.extra = { ...root.extra, updateExpression: true };\n\n    const paramName = stateProp;\n    const param = identifier(paramName);\n\n    let innerValue = path.node.right;\n\n    for (let i = nestedPaths.length - 1; i >= 0; i--) {\n      const spreadTarget = i === 0 ? param : buildPathAccess(param, nestedPaths.slice(0, i));\n\n      innerValue = objectExpression([\n        spreadElement(spreadTarget),\n        objectProperty(identifier(nestedPaths[i]), innerValue, false, false),\n      ]);\n    }\n\n    const arrowFunction = arrowFunctionExpression([param], innerValue, false);\n\n    const call = callExpression(root, [arrowFunction]);\n    path.replaceWith(call);\n  }\n};\n\nconst handleMemberExpression = (path: NodePath<MemberExpression>, json?: MitosisComponent) => {\n  if (path.node.extra?.makeCallExpressionDone || path.parentPath?.node.extra?.updateExpression) {\n    // Don't add a function if we've done it already\n    return;\n  }\n\n  if (\n    isCallExpression(path.parent) &&\n    isMemberExpression(path.parent.callee) &&\n    isIdentifier(path.parent.callee.object) &&\n    (path.parent.callee.object.name === 'props' || path.parent.callee.object.name === 'state') &&\n    !path.parent.callee.extra?.updateExpression\n  ) {\n    // Don't add a function if it is already\n    return;\n  }\n\n  if (isStateOrPropsExpression(path)) {\n    // Check if the state property is a method or function type, and if so, bind it to 'this'\n    if (isAFunctionOrMethod(json, path)) {\n      const bindExpr = `${path.toString()}.bind(this)`;\n      path.replaceWith(identifier(bindExpr));\n      return;\n    }\n\n    path.node.extra = { ...path.node.extra, makeCallExpressionDone: true };\n    path.replaceWith(callExpression(path.node, []));\n  }\n};\n\nconst handleHookAndStateOnEvents = (\n  path: NodePath<MemberExpression>,\n  isHookDepArray?: boolean,\n): boolean => {\n  if (isIdentifier(path.node.property) && checkIsEvent(path.node.property.name)) {\n    if (isIfStatement(path.parent)) {\n      // We don't do anything if the event is in an IfStatement\n      path.node.extra = { ...path.node.extra, updateExpression: true };\n      return true;\n    } else if (\n      isCallExpression(path.parent) &&\n      isIdentifier(path.node.object) &&\n      isMemberExpression(path.parent.callee)\n    ) {\n      // We add \"emit\" to events\n      const root = memberExpression(path.node, identifier('emit'));\n      root.extra = { ...root.extra, updateExpression: true };\n      path.replaceWith(root);\n    } else if (isHookDepArray && isIdentifier(path.node.object)) {\n      const iden = identifier(\n        `// \"${path.node.object.name}.${path.node.property.name}\" is an event skip it.`,\n      );\n\n      path.replaceWith(iden);\n      return true;\n    }\n  }\n  return false;\n};\n\nconst handleTemplateLiteral = (\n  path: NodePath<TemplateLiteral>,\n  json: MitosisComponent,\n  context?: any,\n) => {\n  const fnName = `templateStr_${hashCodeAsString(path.toString())}`;\n  const extraParams = new Set<string>();\n\n  // Collect loop variables from context\n  let currentContext = context;\n  while (currentContext?.parent) {\n    if (currentContext.parent.node?.name === ForNodeName) {\n      const forNode = currentContext.parent.node;\n      if (forNode.scope.forName) extraParams.add(forNode.scope.forName);\n      if (forNode.scope.indexName) extraParams.add(forNode.scope.indexName);\n    }\n    currentContext = currentContext.parent;\n  }\n\n  const processedExpressions = path.node.expressions.map((expr) => {\n    let exprCode = '';\n    try {\n      const { code } = require('@babel/generator').default(expr);\n      exprCode = code;\n    } catch (e) {\n      exprCode = expr.toString();\n    }\n\n    // Replace state.x with this.x() for signals\n    return exprCode\n      .replace(/\\bstate\\.(\\w+)(?!\\()/g, 'this.$1()')\n      .replace(/\\bprops\\.(\\w+)(?!\\()/g, 'this.$1()');\n  });\n\n  // Convert Set to Array for final usage\n  const paramsList = Array.from(extraParams);\n\n  json.state[fnName] = {\n    code: `${fnName}(${paramsList.join(', ')}) { \n      return \\`${path.node.quasis\n        .map((quasi, i) => {\n          const escapedRaw = quasi.value.raw.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n          return (\n            escapedRaw +\n            (i < processedExpressions.length ? '${' + processedExpressions[i] + '}' : '')\n          );\n        })\n        .join('')}\\`; \n    }`,\n    type: 'method',\n  };\n\n  // Return the function call with any needed parameters\n  return `${fnName}(${paramsList.join(', ')})`;\n};\n\nconst handleCallExpressionArgument = (json: MitosisComponent | undefined, arg: any) => {\n  if (\n    isMemberExpression(arg) &&\n    isIdentifier(arg.object) &&\n    isIdentifier(arg.property) &&\n    (arg.object.name === 'state' || arg.object.name === 'props') &&\n    !arg.extra?.makeCallExpressionDone\n  ) {\n    if (arg.object.name === 'state' && json) {\n      const argPath = { node: arg } as unknown as NodePath<MemberExpression>;\n      if (isAFunctionOrMethod(json, argPath)) {\n        const argStr = arg.object.name + '.' + arg.property.name;\n        return identifier(`${argStr}.bind(this)`);\n      }\n    }\n\n    const newArg = callExpression(arg, []);\n    newArg.extra = { makeCallExpressionDone: true };\n    return newArg;\n  }\n  return arg;\n};\n\nconst transformHooksAndState = (\n  code: string,\n  isHookDepArray?: boolean,\n  json?: MitosisComponent,\n) => {\n  return babelTransformExpression(code, {\n    AssignmentExpression(path) {\n      handleAssignmentExpression(path);\n    },\n    UpdateExpression(path) {\n      /*\n       * If we have a function like this:\n       * `state._counter++;`\n       *\n       * We need to convert it and use the \"update\" example from https://angular.dev/guide/signals#writable-signals:\n       * `state._counter.update(_counter=>_counter++)`\n       *\n       */\n      if (\n        isMemberExpression(path.node.argument) &&\n        isIdentifier(path.node.argument.object) &&\n        path.node.argument.object.name === 'state' &&\n        isIdentifier(path.node.argument.property)\n      ) {\n        const root = memberExpression(path.node.argument, identifier('update'));\n        root.extra = { ...root.extra, updateExpression: true };\n        const argument = path.node.argument.property;\n        const block = blockStatement([\n          expressionStatement(updateExpression(path.node.operator, argument)),\n          returnStatement(argument),\n        ]);\n\n        const arrowFunction = arrowFunctionExpression([argument], block);\n        const call = callExpression(root, [arrowFunction]);\n        path.replaceWith(call);\n      } else if (\n        isMemberExpression(path.node.argument) &&\n        isMemberExpression(path.node.argument.object) &&\n        isIdentifier(getBaseObject(path.node.argument)) &&\n        getBaseObject(path.node.argument).name === 'state'\n      ) {\n        // Handle nested update expressions like: state.obj.counter++\n        // Example:\n        // Input:  state.obj.counter++\n        // Output: state.obj.update(obj => {\n        //   Object.assign(obj, {\n        //     counter: obj.counter + 1\n        //   });\n        //   return obj;\n        // });\n        //\n        const stateProp = getPropertyFromStateChain(path.node.argument);\n        if (!stateProp) return;\n\n        const topLevelProp = memberExpression(identifier('state'), identifier(stateProp));\n\n        const nestedPaths = getNestedPath(path.node.argument, stateProp);\n\n        const root = memberExpression(topLevelProp, identifier('update'));\n        root.extra = { ...root.extra, updateExpression: true };\n\n        const paramName = stateProp;\n        const param = identifier(paramName);\n\n        const lastPropName = nestedPaths[nestedPaths.length - 1];\n        const innerParamName = lastPropName + '_value';\n\n        const nestedPathAccess = buildPathAccess(param, nestedPaths.slice(0, -1));\n\n        let innerValue = objectExpression([\n          spreadElement(nestedPathAccess),\n          objectProperty(\n            identifier(lastPropName),\n            updateExpression(path.node.operator, identifier(innerParamName), path.node.prefix),\n            false,\n            false,\n          ),\n        ]);\n\n        for (let i = nestedPaths.length - 2; i >= 0; i--) {\n          const spreadTarget = i === 0 ? param : buildPathAccess(param, nestedPaths.slice(0, i));\n\n          innerValue = objectExpression([\n            spreadElement(spreadTarget),\n            objectProperty(identifier(nestedPaths[i]), innerValue, false, false),\n          ]);\n        }\n\n        const block = blockStatement([\n          expressionStatement(\n            callExpression(memberExpression(identifier('Object'), identifier('assign')), [\n              param,\n              innerValue,\n            ]),\n          ),\n          returnStatement(param),\n        ]);\n\n        const arrowFunction = arrowFunctionExpression([param], block);\n        const call = callExpression(root, [arrowFunction]);\n        path.replaceWith(call);\n      }\n    },\n    MemberExpression(path) {\n      const skip = handleHookAndStateOnEvents(path, isHookDepArray);\n      if (skip) {\n        return;\n      }\n\n      handleMemberExpression(path, json);\n    },\n    CallExpression(path) {\n      // if args has a state.x or props.x, we need to add this.x() to the args\n      if (path.node.arguments.length > 0) {\n        const newArgs = path.node.arguments.map((arg) => handleCallExpressionArgument(json, arg));\n        // Only replace arguments if we made any changes\n        if (newArgs.some((arg, i) => arg !== path.node.arguments[i])) {\n          path.node.arguments = newArgs;\n        }\n      }\n    },\n  });\n};\n\nconst addToImportCall = (json: MitosisComponent, importName: string) => {\n  const importInstance = json.imports.find((imp) => imp.imports[importName]);\n  // Check if this is a type import - if it is, don't add it to importCalls\n  if (importInstance?.importKind === 'type') {\n    return;\n  }\n\n  const isImportCall = !!importInstance;\n  const isExportCall = json.exports ? !!json.exports[importName] : false;\n  if (isImportCall || isExportCall) {\n    json.compileContext!.angular!.extra!.importCalls.push(importName);\n  }\n};\n\nconst transformBindings = (\n  json: MitosisComponent,\n  code: string,\n  key?: string,\n  context?: any,\n): string => {\n  return babelTransformExpression(code, {\n    BlockStatement() {\n      console.error(`\nComponent ${json.name} has a BlockStatement inside JSX'. \nThis will cause an error in Angular.\nPlease create and call a new function instead with this code:\n${code}`);\n    },\n    CallExpression(path) {\n      // If we call a function from an import we need to add it to the Component as well\n      if (isIdentifier(path.node.callee)) {\n        addToImportCall(json, path.node.callee.name);\n      }\n\n      if (path.node.arguments.length > 0) {\n        const newArgs = path.node.arguments.map((arg) => handleCallExpressionArgument(json, arg));\n        // Only replace arguments if we made any changes\n        if (newArgs.some((arg, i) => arg !== path.node.arguments[i])) {\n          path.node.arguments = newArgs;\n        }\n      }\n    },\n    Identifier(path) {\n      // If we use a constant from an import we need to add it to the Component as well\n      if (isIdentifier(path.node)) {\n        addToImportCall(json, path.node.name);\n      }\n    },\n    StringLiteral(path) {\n      // We cannot use \" for string literal in template\n      if (path.node.extra?.raw) {\n        path.node.extra.raw = (path.node.extra.raw as string).replaceAll('\"', '&quot;');\n      }\n    },\n    AssignmentExpression(path) {\n      handleAssignmentExpression(path);\n    },\n    MemberExpression(path) {\n      handleMemberExpression(path, json);\n    },\n    TemplateLiteral(path) {\n      // they are already created as trackBy functions\n      if (key === 'key') {\n        return;\n      }\n\n      // skip template literals in spread bindings\n      if (key && context?.node?.bindings?.[key]?.code.includes('...')) {\n        return;\n      }\n\n      // When we encounter a template literal, convert it to a function\n      const fnCall = handleTemplateLiteral(path, json, context);\n      path.replaceWith(identifier(fnCall));\n    },\n  });\n};\n\nexport const getCodeProcessorPlugins = (\n  json: MitosisComponent,\n  options: ToAngularOptions,\n  processBindingOptions: ProcessBindingOptions,\n) => {\n  return [\n    ...(options.plugins || []),\n    CODE_PROCESSOR_PLUGIN((codeType) => {\n      switch (codeType) {\n        case 'bindings':\n          return (code, key, context) => {\n            // Handle object spread expressions or TypeScript type assertions\n            if ((code.startsWith('{') && code.includes('...')) || code.includes(' as ')) {\n              if (context?.node?.bindings && key) {\n                const binding = context.node.bindings[key];\n\n                let isForContext = false;\n                let forName = '';\n                let indexName = '';\n\n                let currentContext = context;\n                while (currentContext?.parent) {\n                  if (currentContext.parent.node?.name === ForNodeName) {\n                    isForContext = true;\n                    const forNode = currentContext.parent.node;\n                    forName = forNode.scope.forName || '_';\n                    indexName = forNode.scope.indexName || '_';\n                    break;\n                  }\n                  currentContext = currentContext.parent;\n                }\n\n                const computedName = createObjectSpreadComputed(\n                  json,\n                  binding,\n                  key,\n                  isForContext,\n                  forName,\n                  indexName,\n                );\n\n                if (isForContext) {\n                  const params = [];\n                  if (forName) params.push(forName);\n                  if (indexName) params.push(indexName);\n\n                  if (params.length > 0) {\n                    return processClassComponentBinding(\n                      json,\n                      `${computedName}(${params.join(', ')})`,\n                      {\n                        ...processBindingOptions,\n                        replaceWith: 'this.',\n                      },\n                    );\n                  }\n                }\n\n                return processClassComponentBinding(json, `${computedName}()`, {\n                  ...processBindingOptions,\n                  replaceWith: 'this.',\n                });\n              }\n            }\n\n            const needsToReplaceWithThis =\n              (code.startsWith('{') && code.includes('...')) ||\n              code.includes(' as ') ||\n              context?.node.name.includes('.') ||\n              context?.node.bindings[key]?.type === 'spread';\n\n            let replaceWith = '';\n            if (key === 'key') {\n              /**\n               * If we have a key attribute we need to check if it is inside a @for loop.\n               * We will create a new function for the key attribute.\n               * Therefore, we need to add \"this\" to state and props.\n               */\n              const isForParent = context?.parent?.parent?.node?.name === ForNodeName;\n              if (isForParent) {\n                replaceWith = 'this.';\n              }\n            }\n            if (needsToReplaceWithThis) {\n              replaceWith = 'this.';\n            }\n\n            return processClassComponentBinding(json, transformBindings(json, code, key, context), {\n              ...processBindingOptions,\n              replaceWith,\n            });\n          };\n        case 'hooks-deps-array':\n        case 'hooks':\n        case 'state':\n          return (code) => {\n            return processClassComponentBinding(\n              json,\n              transformHooksAndState(code, codeType === 'hooks-deps-array', json),\n              processBindingOptions,\n            );\n          };\n        case 'properties':\n        case 'hooks-deps':\n        case 'context-set':\n        case 'dynamic-jsx-elements':\n        case 'types':\n          return (code) => {\n            return processClassComponentBinding(json, code, processBindingOptions);\n          };\n      }\n    }),\n  ];\n};\n"
  },
  {
    "path": "packages/core/src/generators/angular/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport const BUILT_IN_COMPONENTS = new Set(['Show', 'For', 'Fragment', 'Slot']);\n\nexport type AngularApi = 'classic' | 'signals';\n\nexport interface ToAngularOptions extends BaseTranspilerOptions {\n  api?: AngularApi;\n  state?: 'class-properties' | 'inline-with-wrappers';\n  standalone?: boolean;\n  preserveImports?: boolean;\n  preserveFileExtensions?: boolean;\n  importMapper?: Function;\n  bootstrapMapper?: Function;\n  visuallyIgnoreHostElement?: boolean;\n  defaultExportComponents?: boolean;\n  experimental?: {\n    injectables?: (variableName: string, variableType: string) => string;\n    inject?: boolean;\n  };\n}\n\nexport const DEFAULT_ANGULAR_OPTIONS: ToAngularOptions = {\n  api: 'classic',\n  state: 'inline-with-wrappers',\n  preserveImports: false,\n  preserveFileExtensions: false,\n  visuallyIgnoreHostElement: true,\n  defaultExportComponents: false,\n};\n\nexport type AngularMetadata = {\n  /**\n   * Mitosis uses `attr.XXX` as default see https://angular.io/guide/attribute-binding.\n   * If you want to skip some you can use the 'nativeAttributes'.\n   */\n  nativeAttributes?: string[];\n  /**\n   * If you encounter some native events which aren't generated in lower-case.\n   * Create a new PR inside [event-handlers.ts](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/helpers/event-handlers.ts) to fix it for all.\n   */\n  nativeEvents?: string[];\n  /**\n   * Overwrite default selector for component. Default will be kebab case (MyComponent -> my-component)\n   */\n  selector?: string;\n  /**\n   * Overwrite default change detection strategy.\n   * `OnPush` adds `changeDetection: ChangeDetectionStrategy.OnPush` to the component metadata.\n   */\n  changeDetection?: 'Default' | 'OnPush';\n  /**\n   * Overwrite default sanitizeInnerHTML. Default is `false`\n   */\n  sanitizeInnerHTML?: boolean;\n\n  /**\n   * @deprecated Only for api=classic\n   * Add additional @Output() properties to the component.\n   * Can be used with `useTarget({angular: ()=> ...})` if needed.\n   */\n  outputs?: string[];\n\n  /**\n   * Skip hydration for the component.\n   * Adds `host: { ngSkipHydration: \"true\" }` to the component decorator.\n   */\n  skipHydration?: boolean;\n\n  /**\n   * Only for api=signals\n   */\n  signals?: {\n    /**\n     * Turns every property in this array to [`model`](https://angular.dev/api/core/model).\n     * This is useful if you want to use ngModel(`[(prop)]`) syntax in Angular.\n     */\n    writeable?: string[];\n    /**\n     * Adds [`.required`](https://angular.dev/api/core/input#required()) to the `input()` properties.\n     */\n    required?: string[];\n  };\n};\n\nexport type AngularBlockOptions = {\n  childComponents?: string[];\n} & AngularMetadata;\n"
  },
  {
    "path": "packages/core/src/generators/builder/generator.ts",
    "content": "import { mediaQueryRegex, sizes } from '@/constants/media-sizes';\nimport { ToBuilderOptions } from '@/generators/builder/types';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { hasProps } from '@/helpers/has-props';\nimport { isComponent } from '@/helpers/is-component';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { isUpperCase } from '@/helpers/is-upper-case';\nimport { parseCodeToAst } from '@/helpers/parsers';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { replaceNodes } from '@/helpers/replace-identifiers';\nimport { checkHasState } from '@/helpers/state';\nimport { isBuilderElement, symbolBlocksAsChildren } from '@/parsers/builder';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { Binding, ForNode, MitosisNode, checkIsForNode } from '@/types/mitosis-node';\nimport { MitosisStyles } from '@/types/mitosis-styles';\nimport { TranspilerArgs } from '@/types/transpiler';\nimport { traverse as babelTraverse, types } from '@babel/core';\nimport generate from '@babel/generator';\nimport { parseExpression } from '@babel/parser';\nimport type { Node } from '@babel/types';\nimport { BuilderContent, BuilderElement } from '@builder.io/sdk';\nimport json5 from 'json5';\nimport { attempt, cloneDeep, filter, get, mapValues, omit, omitBy, set } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { format } from 'prettier/standalone';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\n\nconst isValidCollection = (code: string) => {\n  if (!code || typeof code !== 'string') {\n    return false;\n  }\n\n  // Pattern: Array.from({ length: number })\n  // Examples: \"Array.from({ length: 10 })\", \"Array.from({ length: 5 })\"\n  const arrayFromPattern = /^Array\\.from\\(\\{\\s*length\\s*:\\s*\\d+\\s*\\}\\)$/;\n  if (arrayFromPattern.test(code)) {\n    return false;\n  }\n\n  // Pattern: alphanumeric strings separated by dots\n  // Examples: \"abc.def\", \"state.list1\", \"data.items\"\n  const dotPattern = /^[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)*$/;\n  return dotPattern.test(code);\n};\n\nconst replaceWithStateVariable = (code: string, stateMap?: Map<string, string>): string => {\n  if (!code) {\n    return '';\n  }\n\n  if (stateMap?.has(code)) {\n    return 'state.' + (stateMap.get(code) || '');\n  }\n\n  return code;\n};\n\nconst generateUniqueKey = (state: Record<string, string>) => {\n  let newKeyPrefix = 'dataBuilderList';\n  let counter = 1;\n  while (state[newKeyPrefix + counter]) {\n    counter++;\n  }\n  return newKeyPrefix + counter;\n};\n\nconst convertMitosisStateToBuilderState = (state: MitosisComponent['state']) => {\n  return Object.entries(state).reduce((acc: any, [key, value]) => {\n    if (value?.type === 'property' && value?.code) {\n      if (value.code === 'true' || value.code === 'false') {\n        acc[key] = value.code === 'true';\n      } else if (value.code === 'null') {\n        acc[key] = null;\n      } else if (value.code === 'undefined') {\n        acc[key] = undefined;\n      } else if (!Number.isNaN(Number(value.code))) {\n        acc[key] = Number(value.code);\n      } else {\n        try {\n          acc[key] = JSON.parse(value.code);\n        } catch (e) {\n          acc[key] = value.code;\n        }\n      }\n    }\n    return acc;\n  }, {});\n};\n\nconst findStateWithinMitosisNode = (\n  node: MitosisNode,\n  options: ToBuilderOptions,\n  state: {\n    [key: string]: any;\n  },\n  stateMap: Map<string, string>,\n) => {\n  if (checkIsForNode(node)) {\n    if (\n      !isValidCollection(node.bindings.each?.code as string) &&\n      !stateMap.has(node.bindings.each?.code as string)\n    ) {\n      const newKey = generateUniqueKey(state);\n      const code = node.bindings.each?.code as string;\n      try {\n        state[newKey] = JSON.parse(code);\n        stateMap.set(code, newKey);\n      } catch (parseError) {\n        // The parsing error happens when `code` is a function or expression\n        // We would need `eval` to parse the code and then set the state. But because\n        // of security concerns we are not handling this case right now.\n        // Will revisit this if we need to support this.\n        console.log('Failed to parse:', code, parseError);\n      }\n    }\n  }\n  node.children.forEach((child) => findStateWithinMitosisNode(child, options, state, stateMap));\n};\n\nconst findStateWithinMitosisComponent = (\n  component: MitosisComponent,\n  options: ToBuilderOptions,\n  state: {\n    [key: string]: any;\n  },\n  stateMap: Map<string, string>,\n) => {\n  component.children.forEach((child) =>\n    findStateWithinMitosisNode(child, options, state, stateMap),\n  );\n  return state;\n};\n\nconst omitMetaProperties = (obj: Record<string, any>) =>\n  omitBy(obj, (_value, key) => key.startsWith('$'));\n\nexport const builderBlockPrefixes = ['Amp', 'Core', 'Builder', 'Raw', 'Form'];\nconst mapComponentName = (name: string, properties?: { [key: string]: string | undefined }) => {\n  if (properties?.['data-builder-originalName']) {\n    return properties['data-builder-originalName'];\n  }\n  if (name === 'CustomCode') {\n    return 'Custom Code';\n  }\n  for (const prefix of builderBlockPrefixes) {\n    if (name.startsWith(prefix)) {\n      const suffix = name.replace(prefix, '');\n      const restOfName = suffix[0];\n      if (restOfName && isUpperCase(restOfName)) {\n        return `${prefix}:${name.replace(prefix, '')}`;\n      }\n    }\n  }\n  return name;\n};\n\nconst componentMappers: {\n  [key: string]: (node: MitosisNode, options: ToBuilderOptions) => BuilderElement;\n} = {\n  // TODO: add back if this direction (blocks as children not prop) is desired\n  ...(!symbolBlocksAsChildren\n    ? {}\n    : {\n        Symbol(node, options) {\n          const child = node.children[0];\n          const symbolOptions =\n            (node.bindings.symbol && json5.parse(node.bindings.symbol.code)) || {};\n\n          if (child) {\n            set(\n              symbolOptions,\n              'content.data.blocks',\n              child.children.map((item) => blockToBuilder(item, options)),\n            );\n          }\n\n          return el(\n            {\n              component: {\n                name: 'Symbol',\n                options: {\n                  // TODO: forward other symbol options\n                  symbol: symbolOptions,\n                },\n              },\n            },\n            options,\n          );\n        },\n      }),\n  Columns(node, options) {\n    const block = blockToBuilder(node, options, { skipMapper: true });\n\n    const columns = block.children!.map((item) => ({\n      blocks: item.children,\n      width: item.component?.options?.width,\n    }));\n\n    block.component!.options.columns = columns;\n\n    block.children = [];\n\n    return block;\n  },\n  Fragment(node, options) {\n    const block = blockToBuilder(node, options, { skipMapper: true });\n    block.component = { name: 'Core:Fragment' };\n    block.tagName = undefined;\n    return block;\n  },\n  PersonalizationContainer(node, options) {\n    const block = blockToBuilder(node, options, { skipMapper: true });\n    const variants: any[] = [];\n    let defaultVariant: BuilderElement[] = [];\n    const validFakeNodeNames = [\n      'Variant',\n      'PersonalizationOption',\n      'PersonalizationVariant',\n      'Personalization',\n    ];\n    block.children!.forEach((item) => {\n      if (item.component && validFakeNodeNames.includes(item.component?.name)) {\n        let query: any;\n        if (item.component.options.query) {\n          const optionsQuery = item.component.options.query;\n          if (Array.isArray(optionsQuery)) {\n            query = optionsQuery.map((q) => ({\n              '@type': '@builder.io/core:Query',\n              ...q,\n            }));\n          } else {\n            query = [\n              {\n                '@type': '@builder.io/core:Query',\n                ...optionsQuery,\n              },\n            ];\n          }\n          const newVariant = {\n            ...item.component.options,\n            query,\n            blocks: item.children,\n          };\n          variants.push(newVariant);\n        } else if (item.children) {\n          defaultVariant.push(...item.children);\n        }\n      } else {\n        defaultVariant.push(item);\n      }\n    });\n    delete block.properties;\n    delete block.bindings;\n\n    block.component!.options.variants = variants;\n    block.children = defaultVariant;\n\n    return block;\n  },\n  For(_node, options) {\n    const node = _node as any as ForNode;\n    const stateMap = options.stateMap;\n    const replaceIndexNode = (str: string) =>\n      replaceNodes({\n        code: str,\n        nodeMaps: [\n          {\n            from: types.identifier(target),\n            to: types.memberExpression(types.identifier('state'), types.identifier('$index')),\n          },\n        ],\n      });\n\n    // rename `index` var to `state.$index`\n    const target = node.scope.indexName || 'index';\n    const replaceIndex = (node: MitosisNode) => {\n      traverse(node).forEach(function (thing) {\n        if (!isMitosisNode(thing)) return;\n        for (const [key, value] of Object.entries(thing.bindings)) {\n          if (!value) continue;\n          if (!value.code.includes(target)) continue;\n\n          if (value.type === 'single' && value.bindingType === 'function') {\n            try {\n              const code = value.code;\n\n              const programNode = parseCodeToAst(code);\n\n              if (!programNode) continue;\n\n              babelTraverse(programNode, {\n                Program(path) {\n                  if (path.scope.hasBinding(target)) return;\n\n                  const x = {\n                    id: types.identifier(target),\n                    init: types.identifier('PLACEHOLDER'),\n                  };\n                  path.scope.push(x);\n                  path.scope.rename(target, 'state.$index');\n                  path.traverse({\n                    VariableDeclaration(p) {\n                      if (p.node.declarations.length === 1 && p.node.declarations[0].id === x.id) {\n                        p.remove();\n                      }\n                    },\n                  });\n                },\n              });\n\n              thing.bindings[key]!.code = generate(programNode).code;\n            } catch (error) {\n              console.error(\n                'Error processing function binding. Falling back to simple replacement.',\n                error,\n              );\n              thing.bindings[key]!.code = replaceIndexNode(value.code);\n            }\n          } else {\n            thing.bindings[key]!.code = replaceIndexNode(value.code);\n          }\n        }\n      });\n      return node;\n    };\n\n    return el(\n      {\n        component: {\n          name: 'Core:Fragment',\n        },\n        repeat: {\n          collection: isValidCollection(node.bindings.each?.code as string)\n            ? (node.bindings.each?.code as string) || ''\n            : replaceWithStateVariable(node.bindings.each?.code as string, stateMap),\n          itemName: node.scope.forName,\n        },\n        children: node.children\n          .filter(filterEmptyTextNodes)\n          .map((node) => blockToBuilder(replaceIndex(node), options)),\n      },\n      options,\n    );\n  },\n  Show(node, options) {\n    const elseCase = node.meta.else as MitosisNode;\n    const children = node.children.filter(filterEmptyTextNodes);\n    const showNode =\n      children.length > 0\n        ? el(\n            {\n              // TODO: the reverse mapping for this\n              component: {\n                name: 'Core:Fragment',\n              },\n              bindings: {\n                show: node.bindings.when?.code as string,\n              },\n              children: children.map((node) => blockToBuilder(node, options)),\n            },\n            options,\n          )\n        : undefined;\n\n    const elseNode =\n      elseCase && filterEmptyTextNodes(elseCase)\n        ? el(\n            {\n              // TODO: the reverse mapping for this\n              component: {\n                name: 'Core:Fragment',\n              },\n              bindings: {\n                hide: node.bindings.when?.code as string,\n              },\n              children: [blockToBuilder(elseCase, options)],\n            },\n            options,\n          )\n        : undefined;\n\n    if (elseNode && showNode) {\n      return el(\n        {\n          component: {\n            name: 'Core:Fragment',\n          },\n          children: [showNode, elseNode],\n        },\n        options,\n      );\n    } else if (showNode) {\n      return showNode;\n    } else if (elseNode) {\n      return elseNode;\n    }\n    return el(\n      {\n        // TODO: the reverse mapping for this\n        component: {\n          name: 'Core:Fragment',\n        },\n        bindings: {\n          show: node.bindings.when?.code as string,\n        },\n        children: [],\n      },\n      options,\n    );\n  },\n};\n\nconst el = (\n  options: Partial<BuilderElement>,\n  toBuilderOptions: ToBuilderOptions,\n): BuilderElement => ({\n  '@type': '@builder.io/sdk:Element',\n  ...(toBuilderOptions.includeIds && {\n    id: 'builder-' + hashCodeAsString(options),\n  }),\n  ...options,\n});\n\nfunction tryFormat(code: string) {\n  let str = code;\n  try {\n    str = format(str, {\n      parser: 'babel',\n      plugins: [\n        require('prettier/parser-babel'), // To support running in browsers\n      ],\n    });\n  } catch (err) {\n    console.error('Format error for code:', str);\n    throw err;\n  }\n  return str;\n}\n\ntype InternalOptions = {\n  skipMapper?: boolean;\n  includeStateMap?: boolean;\n};\n\nconst processLocalizedValues = (element: BuilderElement, node: MitosisNode) => {\n  if (node.localizedValues) {\n    for (const [path, value] of Object.entries(node.localizedValues)) {\n      set(element, path, value);\n    }\n  }\n  return element;\n};\n\n/**\n * Turns a stringified object into an object that can be looped over.\n * Since values in the stringified object could be JS expressions, all\n * values in the resulting object will remain strings.\n * @param input - The stringified object\n */\nconst parseJSObject = (\n  input: string,\n): {\n  parsed: Record<string, string>;\n  unparsed?: string;\n} => {\n  const unparsed: string[] = [];\n  let parsed: Record<string, string> = {};\n\n  try {\n    const ast = parseExpression(`(${input})`, {\n      plugins: ['jsx', 'typescript'],\n      sourceType: 'module',\n    });\n\n    if (ast.type !== 'ObjectExpression') {\n      return { parsed, unparsed: input };\n    }\n\n    for (const prop of ast.properties) {\n      /**\n       * If the object includes spread or method, we stop. We can't really break the component into Key/Value\n       * and the whole expression is considered dynamic. We return `false` to signify that.\n       */\n      if (prop.type === 'ObjectMethod' || prop.type === 'SpreadElement') {\n        if (!!prop.start && !!prop.end) {\n          if (typeof input === 'string') {\n            unparsed.push(input.slice(prop.start - 1, prop.end - 1));\n          }\n        }\n        continue;\n      }\n\n      /**\n       * Ignore shorthand objects when processing incomplete objects. Otherwise we may\n       * create identifiers unintentionally.\n       * Example: When accounting for shorthand objects, \"{ color\" would become\n       * { color: color } thus creating a \"color\" identifier that does not exist.\n       */\n      if (prop.type === 'ObjectProperty') {\n        if (prop.extra?.shorthand) {\n          if (typeof input === 'string') {\n            unparsed.push(input.slice(prop.start! - 1, prop.end! - 1));\n          }\n          continue;\n        }\n\n        let key = '';\n        if (prop.key.type === 'Identifier') {\n          key = prop.key.name;\n        } else if (prop.key.type === 'StringLiteral') {\n          key = prop.key.value;\n        } else {\n          continue;\n        }\n\n        if (typeof input === 'string') {\n          const [val, err] = extractValue(input, prop.value);\n          if (err === null) {\n            parsed[key] = val;\n          }\n        }\n      }\n    }\n\n    return {\n      parsed,\n      unparsed: unparsed.length > 0 ? `{${unparsed.join('\\n')}}` : undefined,\n    };\n  } catch (err) {\n    return {\n      parsed,\n      unparsed: unparsed.length > 0 ? `{${unparsed.join('\\n')}}` : undefined,\n    };\n  }\n};\n\nconst extractValue = (input: string, node: Node | null): [string, null] | [null, string] => {\n  const start = node?.loc?.start;\n  const end = node?.loc?.end;\n  const startIndex =\n    start !== undefined && 'index' in start && typeof start['index'] === 'number'\n      ? start['index']\n      : undefined;\n  const endIndex =\n    end !== undefined && 'index' in end && typeof end['index'] === 'number'\n      ? end['index']\n      : undefined;\n\n  if (startIndex === undefined || endIndex === undefined || node === null) {\n    const err = `bad value: ${node}`;\n    return [null, err];\n  }\n\n  const value = input.slice(startIndex - 1, endIndex - 1);\n  return [value, null];\n};\n\n/**\n * Maps and styles that are bound with dynamic values onto their respective\n * binding keys for Builder elements. This function also maps media queries\n * with dynamic values.\n * @param - bindings - The bindings object that has your styles. This param\n * will be modified in-place, and the old \"style\" key will be removed.\n */\nconst mapBoundStyles = (bindings: { [key: string]: Binding | undefined }) => {\n  const styles = bindings['style'];\n  if (!styles) {\n    return;\n  }\n  const { parsed, unparsed } = parseJSObject(styles.code);\n\n  for (const key in parsed) {\n    const mediaQueryMatch = key.match(mediaQueryRegex);\n\n    if (mediaQueryMatch) {\n      const { parsed: mParsed } = parseJSObject(parsed[key]);\n      const [_, pixelSize] = mediaQueryMatch;\n      const size = sizes.getSizeForWidth(Number(pixelSize));\n      for (const mKey in mParsed) {\n        bindings[`responsiveStyles.${size}.${mKey}`] = {\n          code: mParsed[mKey],\n          bindingType: 'expression',\n          type: 'single',\n        };\n      }\n    } else {\n      if (isGlobalStyle(key)) {\n        console.warn(\n          `The following bound styles are not supported by Builder JSON and have been removed:\n  \"${key}\": ${parsed[key]}\n          `,\n        );\n      } else {\n        bindings[`style.${key}`] = {\n          code: parsed[key],\n          bindingType: 'expression',\n          type: 'single',\n        };\n      }\n    }\n  }\n\n  delete bindings['style'];\n\n  // unparsed data could be something else such as a function call\n  if (unparsed) {\n    try {\n      const ast = parseExpression(`(${unparsed})`, {\n        plugins: ['jsx', 'typescript'],\n        sourceType: 'module',\n      });\n\n      // style={state.getStyles()}\n      if (ast.type === 'CallExpression') {\n        bindings['style'] = {\n          code: unparsed,\n          bindingType: 'expression',\n          type: 'single',\n        };\n      } else {\n        throw 'unsupported style';\n      }\n    } catch {\n      console.warn(`The following bound styles are invalid and have been removed: ${unparsed}`);\n    }\n  }\n};\n\nfunction isGlobalStyle(key: string) {\n  // These are mapped to their respective responsiveStyle and support bindings\n  if (/max-width: (.*?)px/gm.exec(key)) {\n    return false;\n  }\n\n  return (\n    // pseudo class\n    key.startsWith('&:') ||\n    key.startsWith(':') ||\n    // @ rules\n    key.startsWith('@')\n  );\n}\n\nexport const blockToBuilder = (\n  json: MitosisNode,\n  options: ToBuilderOptions = {},\n  _internalOptions: InternalOptions = {},\n): BuilderElement => {\n  const mapper = !_internalOptions.skipMapper && componentMappers[json.name];\n\n  if (mapper) {\n    const element = mapper(json, options);\n    return processLocalizedValues(element, json);\n  }\n\n  const symbolBinding = json.bindings.symbol;\n  if (symbolBinding?.code) {\n    const isExplicitUserSymbol = json.type === 'user-symbol';\n\n    let hasValidSymbolMetadata = false;\n    if (!isExplicitUserSymbol) {\n      const parsed = attempt(() => json5.parse(symbolBinding.code));\n      hasValidSymbolMetadata =\n        !(parsed instanceof Error) &&\n        parsed &&\n        typeof parsed === 'object' &&\n        (parsed.entry || parsed.model === 'symbol');\n    }\n\n    if (isExplicitUserSymbol || hasValidSymbolMetadata) {\n      const symbolOptions = attempt(() => json5.parse(symbolBinding.code));\n\n      if (!(symbolOptions instanceof Error)) {\n        if (!symbolOptions.name) {\n          const displayName = json.name\n            .replace(/^Symbol/, '')\n            .replace(/([A-Z])/g, ' $1')\n            .trim();\n          if (displayName) {\n            symbolOptions.name = displayName;\n          }\n        }\n\n        const inputData: Record<string, any> = {};\n        for (const key of Object.keys(json.bindings)) {\n          if (key !== 'symbol' && key !== 'css' && key !== 'style') {\n            const value = attempt(() => json5.parse(json.bindings[key]!.code));\n            if (!(value instanceof Error)) {\n              inputData[key] = value;\n            }\n          }\n        }\n        for (const key of Object.keys(json.properties)) {\n          if (!key.startsWith('$') && !key.startsWith('_') && !key.startsWith('data-')) {\n            inputData[key] = json.properties[key];\n          }\n        }\n        if (Object.keys(inputData).length > 0) {\n          symbolOptions.data = { ...symbolOptions.data, ...inputData };\n        }\n\n        const element = el(\n          {\n            component: {\n              name: 'Symbol',\n              options: {\n                symbol: symbolOptions,\n              },\n            },\n          },\n          options,\n        );\n        return processLocalizedValues(element, json);\n      }\n    }\n  }\n\n  if (json.properties._text || json.bindings._text?.code) {\n    const element = el(\n      {\n        tagName: 'span',\n        bindings: {\n          ...(json.bindings._text?.code\n            ? {\n                'component.options.text': json.bindings._text.code,\n                'json.bindings._text.code': undefined as any,\n              }\n            : {}),\n        },\n        component: {\n          name: 'Text',\n          options: {\n            // Mitosis uses {} for bindings, but Builder expects {{}} so we need to convert\n            text: json.properties._text?.replace(/\\{(.*?)\\}/g, '{{$1}}'),\n          },\n        },\n      },\n      options,\n    );\n    return processLocalizedValues(element, json);\n  }\n\n  const thisIsComponent = isComponent(json);\n\n  let bindings = json.bindings;\n  const actions: { [key: string]: string } = {};\n\n  for (const key in bindings) {\n    const eventBindingKeyRegex = /^on([A-Z])/;\n    const firstCharMatchForEventBindingKey = key.match(eventBindingKeyRegex)?.[1];\n    if (firstCharMatchForEventBindingKey) {\n      let actionBody = bindings[key]?.async\n        ? `(async () => ${bindings[key]?.code as string})()`\n        : removeSurroundingBlock(bindings[key]?.code as string);\n\n      const eventIdentifier = bindings[key]?.arguments?.[0];\n      if (typeof eventIdentifier === 'string' && eventIdentifier !== 'event') {\n        actionBody = replaceNodes({\n          code: actionBody,\n          nodeMaps: [{ from: types.identifier(eventIdentifier), to: types.identifier('event') }],\n        });\n      }\n      actions[key.replace(eventBindingKeyRegex, firstCharMatchForEventBindingKey.toLowerCase())] =\n        actionBody;\n      delete bindings[key];\n    }\n\n    if (key === 'style') {\n      mapBoundStyles(bindings);\n    }\n  }\n\n  const builderBindings: Record<string, string> = {};\n  const componentOptions: Record<string, any> = omitMetaProperties(json.properties);\n\n  if (thisIsComponent) {\n    for (const key in bindings) {\n      if (key === 'css') {\n        continue;\n      }\n      const value = bindings[key];\n      const parsed = attempt(() => json5.parse(value?.code as string));\n\n      if (!(parsed instanceof Error)) {\n        componentOptions[key] = parsed;\n      } else {\n        if (!json.slots?.[key]) {\n          builderBindings[`component.options.${key}`] = bindings[key]!.code;\n        }\n      }\n    }\n  }\n\n  for (const key in json.slots) {\n    componentOptions[key] = json.slots[key].map((node) => blockToBuilder(node, options));\n  }\n\n  for (const key in json.blocksSlots) {\n    const value = json.blocksSlots[key];\n    traverse(value).forEach(function (v) {\n      if (isMitosisNode(v)) {\n        this.update(blockToBuilder(v, options, _internalOptions));\n      }\n    });\n    componentOptions[key] = value;\n  }\n\n  const hasCss = !!bindings.css?.code;\n\n  let responsiveStyles: {\n    large: MitosisStyles;\n    medium?: MitosisStyles;\n    small?: MitosisStyles;\n  } = {\n    large: {},\n  };\n\n  if (hasCss) {\n    const cssRules = json5.parse(bindings.css?.code as string);\n    const cssRuleKeys = Object.keys(cssRules);\n    for (const ruleKey of cssRuleKeys) {\n      const mediaQueryMatch = ruleKey.match(mediaQueryRegex);\n      if (mediaQueryMatch) {\n        const [fullmatch, pixelSize] = mediaQueryMatch;\n        const sizeForWidth = sizes.getSizeForWidth(Number(pixelSize));\n        const currentSizeStyles = responsiveStyles[sizeForWidth] || {};\n        responsiveStyles[sizeForWidth] = {\n          ...currentSizeStyles,\n          ...cssRules[ruleKey],\n        };\n      } else {\n        responsiveStyles.large = {\n          ...responsiveStyles.large,\n          [ruleKey]: cssRules[ruleKey],\n        };\n      }\n    }\n\n    delete json.bindings.css;\n  }\n\n  const element = el(\n    {\n      tagName: thisIsComponent ? undefined : json.name,\n      ...(hasCss && {\n        responsiveStyles,\n      }),\n      layerName: json.properties.$name,\n      ...(json.properties['data-builder-layerLocked'] !== undefined && {\n        layerLocked: json.properties['data-builder-layerLocked'] === 'true',\n      }),\n      ...(json.properties['data-builder-groupLocked'] !== undefined && {\n        groupLocked: json.properties['data-builder-groupLocked'] === 'true',\n      }),\n      ...(thisIsComponent && {\n        component: {\n          name: mapComponentName(json.name, json.properties),\n          options: omit(componentOptions, ['data-builder-originalName']),\n        },\n      }),\n      code: {\n        bindings: builderBindings,\n        actions,\n      },\n      properties: thisIsComponent ? undefined : omitMetaProperties(json.properties),\n      bindings: thisIsComponent\n        ? builderBindings\n        : omit(\n            mapValues(bindings, (value) => value?.code!),\n            'css',\n          ),\n      actions,\n      children: json.children\n        .filter(filterEmptyTextNodes)\n        .map((child) => blockToBuilder(child, options)),\n    },\n    options,\n  );\n\n  return processLocalizedValues(element, json);\n};\n\nconst recursivelyCheckForChildrenWithSameComponent = (\n  elementOrContent: BuilderContent | BuilderElement,\n  componentName: string,\n  path: string = '',\n): string => {\n  if (isBuilderElement(elementOrContent)) {\n    if (elementOrContent.component?.name === componentName) {\n      return path;\n    }\n\n    return (\n      elementOrContent.children\n        ?.map((child, index) =>\n          recursivelyCheckForChildrenWithSameComponent(\n            child,\n            componentName,\n            `${path}.children[${index}]`,\n          ),\n        )\n        .find(Boolean) || ''\n    );\n  }\n\n  if (elementOrContent.data?.blocks) {\n    return (\n      elementOrContent.data?.blocks\n        ?.map((block, index) =>\n          recursivelyCheckForChildrenWithSameComponent(\n            block,\n            componentName,\n            `${path ? `${path}.` : ''}data.blocks[${index}]`,\n          ),\n        )\n        .find(Boolean) || ''\n    );\n  }\n  return '';\n};\n\nfunction removeItem(obj: BuilderContent, path: string, indexToRemove: number) {\n  return set(\n    cloneDeep(obj), // Clone to ensure immutability\n    path,\n    filter(get(obj, path), (item: any, index: number) => index !== indexToRemove),\n  );\n}\n\nexport const componentToBuilder =\n  (options: ToBuilderOptions = {}) =>\n  ({ component }: TranspilerArgs): BuilderContent => {\n    const hasState = checkHasState(component);\n\n    if (!options.stateMap) {\n      options.stateMap = new Map<string, string>();\n    }\n\n    const result: BuilderContent = fastClone({\n      data: {\n        httpRequests: component?.meta?.useMetadata?.httpRequests,\n        jsCode: tryFormat(dedent`\n        ${!hasProps(component) ? '' : `var props = state;`}\n\n        ${!hasState ? '' : `Object.assign(state, ${getStateObjectStringFromComponent(component)});`}\n\n        ${stringifySingleScopeOnMount(component)}\n      `),\n        tsCode: tryFormat(dedent`\n        ${!hasProps(component) ? '' : `var props = state;`}\n\n        ${!hasState ? '' : `useStore(${getStateObjectStringFromComponent(component)});`}\n\n        ${\n          !component.hooks.onMount.length\n            ? ''\n            : `onMount(() => {\n                ${stringifySingleScopeOnMount(component)}\n              })`\n        }\n      `),\n        cssCode: component?.style,\n        ...(() => {\n          const stateData = findStateWithinMitosisComponent(\n            component,\n            options,\n            { ...convertMitosisStateToBuilderState(component.state) },\n            options.stateMap,\n          );\n          return { state: stateData };\n        })(),\n        blocks: component.children\n          .filter(filterEmptyTextNodes)\n          .map((child) => blockToBuilder(child, options)),\n      },\n    });\n\n    if (result.data?.state && Object.keys(result.data.state).length === 0) {\n      delete result.data.state;\n    }\n\n    const subComponentMap: Record<string, BuilderContent> = {};\n\n    for (const subComponent of component.subComponents) {\n      const name = subComponent.name;\n      subComponentMap[name] = componentToBuilder(options)({\n        component: subComponent,\n      });\n    }\n\n    traverse([result, subComponentMap]).forEach(function (el) {\n      if (isBuilderElement(el) && !el.meta?.preventRecursion) {\n        const value = subComponentMap[el.component?.name!];\n        if (value) {\n          // Recursive Components are handled in the following steps :\n          // 1. Find out the path in which the component is self-referenced ( where that component reoccurs within it’s tree ).\n          // 2. We populate that component recursively for 4 times in a row.\n          // 3. Finally remove the recursive part from the last component which was populated.\n          // Also note that it doesn’t mean that component will render that many times, the rendering logic depends on the logic in it's parent. (Eg. show property binding)\n\n          const path = recursivelyCheckForChildrenWithSameComponent(value, el.component?.name!);\n          if (path) {\n            let tempElement = el;\n            for (let i = 0; i < 4; i++) {\n              const tempValue = cloneDeep(value);\n              set(tempElement, 'component.options.symbol.content', tempValue);\n              set(tempElement, 'meta.preventRecursion', true);\n              tempElement = get(tempValue, path) as BuilderElement;\n            }\n\n            // Finally remove the recursive part.\n            const arrayPath = path.replace(/\\[\\d+\\]$/, '');\n            const newValue = removeItem(value, arrayPath, Number(path.match(/\\[(\\d+)\\]$/)?.[1]));\n            set(tempElement, 'component.options.symbol.content', newValue);\n            set(tempElement, 'meta.preventRecursion', true);\n          } else {\n            set(el, 'component.options.symbol.content', value);\n          }\n        }\n        if (el.bindings) {\n          for (const [key, value] of Object.entries(el.bindings)) {\n            if (value.match(/\\n|;/)) {\n              if (!el.code) {\n                el.code = {};\n              }\n              if (!el.code.bindings) {\n                el.code.bindings = {};\n              }\n              el.code.bindings[key] = value;\n              el.bindings[key] = ` return ${value}`;\n            }\n          }\n        }\n      }\n      if (isBuilderElement(el) && el.meta?.preventRecursion) {\n        delete el.meta.preventRecursion;\n        if (el.meta && Object.keys(el.meta).length === 0) {\n          delete el.meta;\n        }\n      }\n    });\n\n    return result;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/builder/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/builder/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToBuilderOptions extends BaseTranspilerOptions {\n  includeIds?: boolean;\n  stateMap?: Map<string, string>;\n}\n\nexport type BuilderMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/context/angular.ts",
    "content": "import { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { MitosisContext } from '@/types/mitosis-context';\nimport { format } from 'prettier/standalone';\n\ntype ContextToAngularOptions = {\n  format?: boolean;\n  typescript?: boolean;\n};\n\nexport const contextToAngular =\n  (options: ContextToAngularOptions = { typescript: false }) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport default class ${context.name}Context {\n    ${stringifyContextValue(context.value)\n      .replace(/^\\{/, '')\n      .replace(/\\}$/, '')\n      .replaceAll(',', ';\\n')\n      .replaceAll(':', ': any = ')}\n    constructor() { }\n}\n  `;\n\n    if (options.format !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/helpers/context-with-symbol-key.ts",
    "content": "import { format } from 'prettier/standalone';\nimport { stringifyContextValue } from '../../../helpers/get-state-object-string';\nimport { MitosisContext } from '../../../types/mitosis-context';\nimport { BaseTranspilerOptions } from '../../../types/transpiler';\n\nexport const getContextWithSymbolKey =\n  (options: Pick<BaseTranspilerOptions, 'prettier'>) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\n  const key = Symbol();  \n\n  export default {\n    ${context.name}: ${stringifyContextValue(context.value)}, \n    key \n  }\n  `;\n\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/qwik.ts",
    "content": "import { MitosisContext } from '@/types/mitosis-context';\nimport { format } from 'prettier/standalone';\n\ntype ContextToQwikOptions = {\n  format?: boolean;\n};\n\nexport const contextToQwik =\n  (options: ContextToQwikOptions = {}) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\n  import { createContextId } from '@builder.io/qwik';\n\n  export default createContextId<any>(\"${context.name}\")\n  `;\n\n    if (options.format !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/react.ts",
    "content": "import { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { MitosisContext } from '@/types/mitosis-context';\nimport { format } from 'prettier/standalone';\n\ntype ContextToReactOptions = {\n  format?: boolean;\n  preact?: boolean;\n  typescript?: boolean;\n};\n\nexport const contextToReact =\n  (options: ContextToReactOptions = { typescript: false, preact: false }) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\n  import { createContext } from '${options.preact ? 'preact' : 'react'}';\n\n  export default createContext${options.typescript ? '<any>' : ''}(${stringifyContextValue(\n      context.value,\n    )})\n  `;\n\n    if (options.format !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/rsc.ts",
    "content": "import { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { MitosisContext } from '@/types/mitosis-context';\nimport { format } from 'prettier/standalone';\n\ntype ContextToRscOptions = {\n  format?: boolean;\n};\n\n/**\n * React Server Components currently do not support context, so we use\n * plain objects and prop drilling instead.\n */\nexport const contextToRsc =\n  (options: ContextToRscOptions = {}) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\n    export default ${stringifyContextValue(context.value)}\n    `;\n\n    if (options.format !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/solid.ts",
    "content": "import { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { MitosisContext } from '@/types/mitosis-context';\nimport { format } from 'prettier/standalone';\n\ntype ContextToSolidOptions = {\n  format?: boolean;\n};\n\nexport const contextToSolid =\n  (options: ContextToSolidOptions = {}) =>\n  ({ context }: { context: MitosisContext }): string => {\n    let str = `\n    import { createContext } from 'solid-js';\n\n    export default createContext(${stringifyContextValue(context.value)})\n    `;\n\n    if (options.format !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/svelte.ts",
    "content": "import { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { MitosisContext } from '@/types/mitosis-context';\nimport { BaseTranspilerOptions } from '@/types/transpiler';\nimport { format } from 'prettier/standalone';\n\ninterface ContextToSvelteOptions extends Pick<BaseTranspilerOptions, 'prettier'> {}\n\n/**\n * TO-DO: support types\n */\nexport const contextToSvelte =\n  (options: ContextToSvelteOptions) =>\n  ({ context }: { context: MitosisContext }): string => {\n    const isReactive = context.type === 'reactive';\n\n    let str = `\nconst key = Symbol();  \n${isReactive ? 'import {writable} from \"svelte/store\";' : ''}\n\nexport default {\n  ${context.name}: ${[\n      isReactive && 'writable(',\n      stringifyContextValue(context.value),\n      isReactive && ')',\n    ]\n      .filter(Boolean)\n      .join('')}, \n  key \n}\n`;\n\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/context/vue.ts",
    "content": "import { getContextWithSymbolKey } from './helpers/context-with-symbol-key';\n\nexport const contextToVue = getContextWithSymbolKey;\n"
  },
  {
    "path": "packages/core/src/generators/helpers/context.ts",
    "content": "import {\n  ContextGetInfo,\n  ContextSetInfo,\n  MitosisComponent,\n  ReactivityType,\n} from '@/types/mitosis-component';\n\nexport const hasContext = (component: MitosisComponent) =>\n  hasSetContext(component) || hasGetContext(component);\n\nexport const hasSetContext = (component: MitosisComponent) =>\n  Object.keys(component.context.set).length > 0;\n\nexport const hasGetContext = (component: MitosisComponent) =>\n  Object.keys(component.context.get).length > 0;\n\nexport const getContextType = ({\n  component,\n  context,\n}: {\n  component: MitosisComponent;\n  context: ContextGetInfo | ContextSetInfo;\n}): ReactivityType => {\n  // TO-DO: remove useMetadata check if no longer needed.\n  return component.meta.useMetadata?.contextTypes?.[context.name] || context.type || 'normal';\n};\n"
  },
  {
    "path": "packages/core/src/generators/helpers/functions.ts",
    "content": "import { prefixWithFunction } from '@/helpers/patterns';\nimport { MitosisPlugin } from '../../modules/plugins';\n\nexport const FUNCTION_HACK_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    pre: (json) => {\n      for (const key in json.state) {\n        const state = json.state[key];\n        const value = state?.code;\n        const type = state?.type;\n        if (typeof value === 'string' && type === 'method') {\n          const newValue = prefixWithFunction(value);\n          json.state[key] = {\n            ...state,\n            code: newValue,\n            type: 'method',\n          };\n        } else if (typeof value === 'string' && type === 'function') {\n          json.state[key] = {\n            ...state,\n            code: value,\n            type: 'method',\n          };\n        }\n      }\n    },\n  },\n});\n"
  },
  {
    "path": "packages/core/src/generators/helpers/minify.ts",
    "content": "export function minify(messageParts: TemplateStringsArray, ...expressions: readonly any[]): string {\n  let text = '';\n  for (let i = 0; i < messageParts.length; i++) {\n    const part = messageParts[i];\n    text += part;\n    if (i < expressions.length) {\n      text += expressions[i];\n    }\n  }\n\n  return text\n    .replace('\\n', ' ')\n    .replace(/^\\s+/, '')\n    .replace(/\\s+$/, '')\n    .replace(/\\s+/g, ' ')\n    .replace(/\\s?([,;\\:\\-\\{\\}\\(\\)\\<\\>])\\s?/g, (_, match) => match);\n}\n"
  },
  {
    "path": "packages/core/src/generators/helpers/on-mount.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\n\n/**\n * Helper for frameworks where all `onMount()`s must share a single scope.\n */\nexport const stringifySingleScopeOnMount = (json: MitosisComponent) => {\n  const hooks = json.hooks.onMount;\n\n  if (hooks.length === 0) return '';\n\n  if (hooks.length === 1) {\n    return hooks[0].code;\n  }\n\n  return hooks\n    .map((hook, i) => {\n      const hookFnName = `onMountHook_${i}`;\n      return `\n    const ${hookFnName} = () => {\n      ${hook.code}\n    }\n    ${hookFnName}();`;\n    })\n    .join('');\n};\n"
  },
  {
    "path": "packages/core/src/generators/helpers/rsc.ts",
    "content": "import { checkIsEvent } from '@/helpers/event-handlers';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport type { MitosisComponent } from '@/types/mitosis-component';\nimport type { MitosisNode } from '@/types/mitosis-node';\nimport traverse from 'neotraverse/legacy';\n\nconst checkIsNodeAMitosisComponent = (node: MitosisNode) =>\n  node.name[0] === node.name[0].toUpperCase();\n\nexport const checkIfIsClientComponent = (json: MitosisComponent) => {\n  if (json.hooks.onMount.length) return true;\n  if (json.hooks.onUnMount?.code) return true;\n  if (json.hooks.onUpdate?.length) return true;\n  if (Object.keys(json.refs).length) return true;\n  if (Object.keys(json.context.set).length) return true;\n  if (Object.keys(json.context.get).length) return true;\n  if (Object.values(json.state).filter((s) => s?.type === 'property').length) return true;\n\n  let foundEventListener = false;\n  traverse(json).forEach(function (node) {\n    if (isMitosisNode(node) && !checkIsNodeAMitosisComponent(node)) {\n      if (Object.keys(node.bindings).filter((item) => checkIsEvent(item)).length) {\n        foundEventListener = true;\n        this.stop();\n      }\n    }\n  });\n\n  return foundEventListener;\n};\n"
  },
  {
    "path": "packages/core/src/generators/html/generator.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS } from '@/constants/html_tags';\nimport { ToHtmlOptions } from '@/generators/html/types';\nimport { babelTransformExpression } from '@/helpers/babel-transform';\nimport { dashCase } from '@/helpers/dash-case';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getPropFunctions } from '@/helpers/get-prop-functions';\nimport { getProps } from '@/helpers/get-props';\nimport { getPropsRef } from '@/helpers/get-props-ref';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { hasBindingsText } from '@/helpers/has-bindings-text';\nimport { hasComponent } from '@/helpers/has-component';\nimport { hasProps } from '@/helpers/has-props';\nimport { hasStatefulDom } from '@/helpers/has-stateful-dom';\nimport { isHtmlAttribute } from '@/helpers/is-html-attribute';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { getForArguments } from '@/helpers/nodes/for';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport {\n  DO_NOT_USE_ARGS,\n  DO_NOT_USE_CONTEXT_VARS_TRANSFORMS,\n  DO_NOT_USE_VARS_TRANSFORMS,\n  StripStateAndPropsRefsOptions,\n  stripStateAndPropsRefs,\n} from '@/helpers/strip-state-and-props-refs';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode, checkIsForNode } from '@/types/mitosis-node';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { NodePath, types } from '@babel/core';\nimport { pipe } from 'fp-ts/lib/function';\nimport { camelCase, kebabCase } from 'lodash';\nimport traverse from 'neotraverse/legacy';\n\nimport isChildren from '@/helpers/is-children';\nimport { format } from 'prettier/standalone';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\n\ntype ScopeVars = Array<string>;\ntype StringRecord = { [key: string]: string };\ntype NumberRecord = { [key: string]: number };\ntype InternalToHtmlOptions = ToHtmlOptions & {\n  onChangeJsById: StringRecord;\n  js: string;\n  namesMap: NumberRecord;\n  experimental?: any;\n};\ninterface BlockOptions {\n  contextVars?: string[];\n  context?: string;\n  scopeVars?: ScopeVars;\n  childComponents?: string[];\n  outputs?: string[];\n  props?: Set<string>;\n  ComponentName?: string;\n}\n\nconst isAttribute = (key: string): boolean => {\n  return /-/.test(key);\n};\n\nconst ATTRIBUTE_KEY_EXCEPTIONS_MAP: { [key: string]: string } = {\n  class: 'className',\n  innerHtml: 'innerHTML',\n};\n\nconst updateKeyIfException = (key: string): string => {\n  return ATTRIBUTE_KEY_EXCEPTIONS_MAP[key] ?? key;\n};\n\nconst generateSetElementAttributeCode = (\n  key: string,\n  tagName: string,\n  useValue: string,\n  options: InternalToHtmlOptions,\n  meta: any = {},\n): string => {\n  if (options?.experimental?.props) {\n    return options?.experimental?.props(key, useValue, options);\n  }\n  const isKey = key === 'key';\n  const ignoreKey = /^(innerHTML|key|class|value)$/.test(key);\n  const isTextarea = key === 'value' && tagName === 'textarea';\n  const isDataSet = /^data-/.test(key);\n  const isComponent = Boolean(meta?.component);\n  const isHtmlAttr = isHtmlAttribute(key, tagName);\n  const setAttr = !ignoreKey && (isHtmlAttr || !isTextarea || isAttribute(key));\n  return [\n    // is html attribute or dash-case\n    setAttr ? `;el.setAttribute(\"${key}\", ${useValue});` : '',\n\n    // not attr or dataset or html attr\n    !setAttr || !(isHtmlAttr || isDataSet || !isComponent || isKey)\n      ? `el.${updateKeyIfException(camelCase(key))} = ${useValue};`\n      : '',\n\n    // is component but not html attribute\n    isComponent && !isHtmlAttr\n      ? // custom-element is created but we're in the middle of the update loop\n        `\n      if (el.props) {\n        ;el.props.${camelCase(key)} = ${useValue};\n        if (el.update) {\n          ;el.update();\n        }\n      } else {\n        ;el.props = {};\n        ;el.props.${camelCase(key)} = ${useValue};\n      }\n      `\n      : '',\n  ].join('\\n');\n};\n\nconst addUpdateAfterSet = (json: MitosisComponent, options: InternalToHtmlOptions) => {\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      for (const key in item.bindings) {\n        const value = item.bindings[key]?.code;\n\n        if (value) {\n          const newValue = addUpdateAfterSetInCode(value, options);\n          if (newValue !== value) {\n            item.bindings[key]!.code = newValue;\n          }\n        }\n      }\n    }\n  });\n};\n\nconst getChildComponents = (json: MitosisComponent, options: InternalToHtmlOptions) => {\n  const childComponents: string[] = [];\n  json.imports.forEach(({ imports }) => {\n    Object.keys(imports).forEach((key) => {\n      if (imports[key] === 'default') {\n        childComponents.push(key);\n      }\n    });\n  });\n  return childComponents;\n};\n\nconst getScopeVars = (parentScopeVars: ScopeVars, value: string | boolean) => {\n  return parentScopeVars.filter((scopeVar) => {\n    if (typeof value === 'boolean') {\n      return value;\n    }\n    const checkVar = new RegExp('(\\\\.\\\\.\\\\.|,| |;|\\\\(|^|!)' + scopeVar + '(\\\\.|,| |;|\\\\)|$)', 'g');\n    return checkVar.test(value);\n  });\n};\nconst addScopeVars = (\n  parentScopeVars: ScopeVars,\n  value: string | boolean,\n  fn: (scope: string) => string,\n) => {\n  return `${getScopeVars(parentScopeVars, value)\n    .map((scopeVar) => {\n      return fn(scopeVar);\n    })\n    .join('\\n')}`;\n};\n\nconst mappers: {\n  [key: string]: (\n    json: MitosisNode,\n    options: InternalToHtmlOptions,\n    blockOptions: BlockOptions,\n  ) => string;\n} = {\n  Fragment: (json, options, blockOptions) => {\n    return json.children.map((item) => blockToHtml(item, options, blockOptions)).join('\\n');\n  },\n};\n\nconst getId = (json: MitosisNode, options: InternalToHtmlOptions) => {\n  const name = json.properties.$name\n    ? dashCase(json.properties.$name)\n    : /^h\\d$/.test(json.name || '') // don't dashcase h1 into h-1\n    ? json.name\n    : dashCase(json.name || 'div');\n\n  const newNameNum = (options.namesMap[name] || 0) + 1;\n  options.namesMap[name] = newNameNum;\n  return `${name}${options.prefix ? `-${options.prefix}` : ''}${\n    name !== json.name && newNameNum === 1 ? '' : `-${newNameNum}`\n  }`;\n};\n\nconst createGlobalId = (name: string, options: InternalToHtmlOptions) => {\n  const newNameNum = (options.namesMap[name] || 0) + 1;\n  options.namesMap[name] = newNameNum;\n  return `${name}${options.prefix ? `-${options.prefix}` : ''}-${newNameNum}`;\n};\n\nconst deprecatedStripStateAndPropsRefs = (\n  code: string,\n  {\n    context,\n    contextVars,\n    domRefs,\n    includeProps,\n    includeState,\n    outputVars,\n    replaceWith,\n    stateVars,\n  }: StripStateAndPropsRefsOptions & DO_NOT_USE_ARGS,\n) => {\n  return pipe(\n    stripStateAndPropsRefs(code, {\n      includeProps,\n      includeState,\n      replaceWith,\n    }),\n    (newCode) =>\n      DO_NOT_USE_VARS_TRANSFORMS(newCode, {\n        context,\n        contextVars,\n        domRefs,\n        outputVars,\n        stateVars,\n      }),\n  );\n};\n\n// TODO: overloaded function\nconst updateReferencesInCode = (\n  code: string,\n  options: InternalToHtmlOptions,\n  blockOptions: BlockOptions = {},\n): string => {\n  const contextVars = blockOptions.contextVars || [];\n  const context = blockOptions?.context || 'this.';\n  if (options?.experimental?.updateReferencesInCode) {\n    return options?.experimental?.updateReferencesInCode(code, options, {\n      stripStateAndPropsRefs: deprecatedStripStateAndPropsRefs,\n    });\n  }\n  if (options.format === 'class') {\n    return pipe(\n      stripStateAndPropsRefs(code, {\n        includeProps: false,\n        includeState: true,\n        replaceWith: context + 'state.',\n      }),\n      (newCode) =>\n        stripStateAndPropsRefs(newCode, {\n          // TODO: replace with `this.` and add setters that call this.update()\n          includeProps: true,\n          includeState: false,\n          replaceWith: context + 'props.',\n        }),\n      (newCode) => DO_NOT_USE_CONTEXT_VARS_TRANSFORMS({ code: newCode, context, contextVars }),\n    );\n  }\n  return code;\n};\n\nconst addOnChangeJs = (id: string, options: InternalToHtmlOptions, code: string) => {\n  if (!options.onChangeJsById[id]) {\n    options.onChangeJsById[id] = '';\n  }\n  options.onChangeJsById[id] += code;\n};\n\n// TODO: spread support\nconst blockToHtml = (\n  json: MitosisNode,\n  options: InternalToHtmlOptions,\n  blockOptions: BlockOptions = {},\n) => {\n  const ComponentName = blockOptions.ComponentName;\n  const scopeVars = blockOptions?.scopeVars || [];\n  const childComponents = blockOptions?.childComponents || [];\n\n  const hasData = Object.keys(json.bindings).length;\n  const hasDomState = /input|textarea|select/.test(json.name);\n  let elId = '';\n  if (hasData) {\n    elId = getId(json, options);\n    json.properties['data-el'] = elId;\n  }\n  if (hasDomState) {\n    json.properties['data-dom-state'] = createGlobalId(\n      (ComponentName ? ComponentName + '-' : '') + json.name,\n      options,\n    );\n  }\n\n  if (mappers[json.name]) {\n    return mappers[json.name](json, options, blockOptions);\n  }\n\n  if (isChildren({ node: json })) {\n    return `<slot></slot>`;\n  }\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  if (json.bindings._text?.code) {\n    // TO-DO: textContent might be better performance-wise\n    addOnChangeJs(\n      elId,\n      options,\n      `\n      ${addScopeVars(\n        scopeVars,\n        json.bindings._text.code as string,\n        (scopeVar: string) =>\n          `const ${scopeVar} = ${\n            options.format === 'class' ? 'this.' : ''\n          }getScope(el, \"${scopeVar}\");`,\n      )}\n      ${options.format === 'class' ? 'this.' : ''}renderTextNode(el, ${json.bindings._text.code});`,\n    );\n\n    return `<template data-el=\"${elId}\"><!-- ${json.bindings._text?.code} --></template>`;\n  }\n\n  let str = '';\n\n  if (checkIsForNode(json)) {\n    const forArguments = getForArguments(json);\n    const localScopeVars: ScopeVars = [...scopeVars, ...forArguments];\n    const argsStr = forArguments.map((arg) => `\"${arg}\"`).join(',');\n    addOnChangeJs(\n      elId,\n      options,\n      // TODO: be smarter about rendering, deleting old items and adding new ones by\n      // querying dom potentially\n      `\n        let array = ${json.bindings.each?.code};\n        ${options.format === 'class' ? 'this.' : ''}renderLoop(el, array, ${argsStr});\n      `,\n    );\n    // TODO: decide on how to handle this...\n    str += `\n      <template data-el=\"${elId}\">`;\n    if (json.children) {\n      str += json.children\n        .map((item) =>\n          blockToHtml(item, options, {\n            ...blockOptions,\n            scopeVars: localScopeVars,\n          }),\n        )\n        .join('\\n');\n    }\n    str += '</template>';\n  } else if (json.name === 'Show') {\n    const whenCondition = (json.bindings.when?.code as string).replace(/;$/, '');\n    addOnChangeJs(\n      elId,\n      options,\n      `\n        ${addScopeVars(\n          scopeVars,\n          whenCondition,\n          (scopeVar: string) =>\n            `const ${scopeVar} = ${\n              options.format === 'class' ? 'this.' : ''\n            }getScope(el, \"${scopeVar}\");`,\n        )}\n        const whenCondition = ${whenCondition};\n        if (whenCondition) {\n          ${options.format === 'class' ? 'this.' : ''}showContent(el)\n        }\n      `,\n    );\n\n    str += `<template data-el=\"${elId}\">`;\n    if (json.children) {\n      str += json.children.map((item) => blockToHtml(item, options, blockOptions)).join('\\n');\n    }\n\n    str += '</template>';\n  } else {\n    const component = childComponents.find((impName) => impName === json.name);\n    const elSelector = component ? kebabCase(json.name) : json.name;\n    str += `<${elSelector} `;\n\n    // For now, spread is not supported\n    // if (json.bindings._spread === '_spread') {\n    //   str += `\n    //       {% for _attr in ${json.bindings._spread} %}\n    //         {{ _attr[0] }}=\"{{ _attr[1] }}\"\n    //       {% endfor %}\n    //     `;\n    // }\n\n    for (const key in json.properties) {\n      if (key === 'innerHTML') {\n        continue;\n      }\n      if (key.startsWith('$')) {\n        continue;\n      }\n      const value = (json.properties[key] || '').replace(/\"/g, '&quot;').replace(/\\n/g, '\\\\n');\n      str += ` ${key}=\"${value}\" `;\n    }\n\n    // batch all local vars within the bindings\n    let batchScopeVars: any = {};\n    let injectOnce = false;\n    let startInjectVar = '%%START_VARS%%';\n\n    for (const key in json.bindings) {\n      if (json.bindings[key]?.type === 'spread' || key === 'css') {\n        continue;\n      }\n      const value = json.bindings[key]?.code as string;\n      const cusArg = json.bindings[key]?.arguments || ['event'];\n      // TODO: proper babel transform to replace. Util for this\n      const useValue = value;\n\n      if (checkIsEvent(key)) {\n        let event = key.replace('on', '').toLowerCase();\n        const fnName = camelCase(`on-${elId}-${event}`);\n        const codeContent: string = removeSurroundingBlock(\n          updateReferencesInCode(useValue, options, blockOptions),\n        );\n        const asyncKeyword = json.bindings[key]?.async ? 'async ' : '';\n        options.js += `\n          // Event handler for '${event}' event on ${elId}\n          ${\n            options.format === 'class'\n              ? `this.${fnName} = ${asyncKeyword}(${cusArg.join(',')}) => {`\n              : `${asyncKeyword}function ${fnName} (${cusArg.join(',')}) {`\n          }\n              ${addScopeVars(\n                scopeVars,\n                codeContent,\n                (scopeVar: string) =>\n                  `const ${scopeVar} = ${\n                    options.format === 'class' ? 'this.' : ''\n                  }getScope(event.currentTarget, \"${scopeVar}\");`,\n              )}\n            ${codeContent}\n          }\n        `;\n        const fnIdentifier = `${options.format === 'class' ? 'this.' : ''}${fnName}`;\n\n        addOnChangeJs(\n          elId,\n          options,\n          `\n            ;el.removeEventListener('${event}', ${fnIdentifier});\n            ;el.addEventListener('${event}', ${fnIdentifier});\n          `,\n        );\n      } else if (key === 'ref') {\n        str += ` data-ref=\"${ComponentName}-${useValue}\" `;\n      } else {\n        if (key === 'style') {\n          addOnChangeJs(\n            elId,\n            options,\n            `\n            ${addScopeVars(\n              scopeVars,\n              useValue as string,\n              (scopeVar: string) =>\n                `const ${scopeVar} = ${\n                  options.format === 'class' ? 'this.' : ''\n                }getScope(el, \"${scopeVar}\");`,\n            )}\n            ;Object.assign(el.style, ${useValue});`,\n          );\n        } else {\n          // gather all local vars to inject later\n          getScopeVars(scopeVars, useValue).forEach((key) => {\n            // unique keys\n            batchScopeVars[key] = true;\n          });\n          addOnChangeJs(\n            elId,\n            options,\n            `\n            ${injectOnce ? '' : startInjectVar}\n            ${generateSetElementAttributeCode(key, elSelector, useValue, options, {\n              component,\n            })}\n            `,\n          );\n          if (!injectOnce) {\n            injectOnce = true;\n          }\n        }\n      }\n    }\n\n    // batch inject local vars in the beginning of the function block\n    const codeBlock = options.onChangeJsById[elId];\n    const testInjectVar = new RegExp(startInjectVar);\n    if (codeBlock && testInjectVar.test(codeBlock)) {\n      const localScopeVars = Object.keys(batchScopeVars);\n      options.onChangeJsById[elId] = (codeBlock as string).replace(\n        startInjectVar,\n        `\n        ${addScopeVars(\n          localScopeVars,\n          true,\n          (scopeVar: string) =>\n            `const ${scopeVar} = ${\n              options.format === 'class' ? 'this.' : ''\n            }getScope(el, \"${scopeVar}\");`,\n        )}\n        `,\n      );\n    }\n\n    if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n      return str + ' />';\n    }\n    str += '>';\n    if (json.children) {\n      str += json.children.map((item) => blockToHtml(item, options, blockOptions)).join('\\n');\n    }\n    if (json.properties.innerHTML) {\n      // Maybe put some kind of safety here for broken HTML such as no close tag\n      str += htmlDecode(json.properties.innerHTML);\n    }\n\n    str += `</${elSelector}>`;\n  }\n  return str;\n};\n\nfunction addUpdateAfterSetInCode(\n  code = '',\n  options: InternalToHtmlOptions,\n  useString = options.format === 'class' ? 'this.update' : 'update',\n) {\n  let updates = 0;\n  return babelTransformExpression(code, {\n    AssignmentExpression(path: babel.NodePath<babel.types.AssignmentExpression>) {\n      const { node } = path;\n      if (types.isMemberExpression(node.left)) {\n        if (types.isIdentifier(node.left.object)) {\n          // TODO: utillity to properly trace this reference to the beginning\n          if (node.left.object.name === 'state') {\n            // TODO: ultimately do updates by property, e.g. updateName()\n            // that updates any attributes dependent on name, etcç\n            let parent: NodePath<any> | null = path;\n\n            // `_temp = ` assignments are created sometimes when we insertAfter\n            // for simple expressions. this causes us to re-process the same expression\n            // in an infinite loop\n            while ((parent = parent.parentPath)) {\n              if (\n                types.isAssignmentExpression(parent.node) &&\n                types.isIdentifier(parent.node.left) &&\n                parent.node.left.name.startsWith('_temp')\n              ) {\n                return;\n              }\n            }\n\n            // Uncomment to debug infinite loops:\n            // if (updates++ > 1000) {\n            //   console.error('Infinite assignment detected');\n            //   return;\n            // }\n            if (options?.experimental?.addUpdateAfterSetInCode) {\n              useString = options?.experimental?.addUpdateAfterSetInCode(useString, options, {\n                node,\n                code,\n                types,\n              });\n            }\n            path.insertAfter(types.callExpression(types.identifier(useString), []));\n          }\n        }\n      }\n    },\n  });\n}\n\nconst htmlDecode = (html: string) => html.replace(/&quot;/gi, '\"');\n\n// TODO: props support via custom elements\nexport const componentToHtml: TranspilerGenerator<ToHtmlOptions> =\n  (_options = {}) =>\n  ({ component }) => {\n    const options: InternalToHtmlOptions = initializeOptions({\n      target: 'html',\n      component,\n      defaults: {\n        ..._options,\n        onChangeJsById: {},\n        js: '',\n        namesMap: {},\n        format: 'script',\n      },\n    });\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    addUpdateAfterSet(json, options);\n    const componentHasProps = hasProps(json);\n\n    const hasLoop = hasComponent('For', json);\n    const hasShow = hasComponent('Show', json);\n    const hasTextBinding = hasBindingsText(json);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    const css = collectCss(json, {\n      prefix: options.prefix,\n    });\n\n    let str = json.children.map((item) => blockToHtml(item, options)).join('\\n');\n\n    if (css.trim().length) {\n      str += `<style>${css}</style>`;\n    }\n\n    const hasChangeListeners = Boolean(Object.keys(options.onChangeJsById).length);\n    const hasGeneratedJs = Boolean(options.js.trim().length);\n\n    if (hasChangeListeners || hasGeneratedJs || json.hooks.onMount.length || hasLoop) {\n      // TODO: collectJs helper for here and liquid\n      str += `\n      <script>\n      (() => {\n        const state = ${getStateObjectStringFromComponent(json, {\n          valueMapper: (value) =>\n            addUpdateAfterSetInCode(updateReferencesInCode(value, options), options),\n        })};\n        ${componentHasProps ? `let props = {};` : ''}\n        let context = null;\n        let nodesToDestroy = [];\n        let pendingUpdate = false;\n        ${!json.hooks?.onInit?.code ? '' : 'let onInitOnce = false;'}\n\n        function destroyAnyNodes() {\n          // destroy current view template refs before rendering again\n          nodesToDestroy.forEach(el => el.remove());\n          nodesToDestroy = [];\n        }\n        ${\n          !hasChangeListeners\n            ? ''\n            : `\n\n        // Function to update data bindings and loops\n        // call update() when you mutate state and need the updates to reflect\n        // in the dom\n        function update() {\n          if (pendingUpdate === true) {\n            return;\n          }\n          pendingUpdate = true;\n          ${Object.keys(options.onChangeJsById)\n            .map((key) => {\n              const value = options.onChangeJsById[key];\n              if (!value) {\n                return '';\n              }\n              return `\n              document.querySelectorAll(\"[data-el='${key}']\").forEach((el) => {\n                ${value}\n              });\n            `;\n            })\n            .join('\\n\\n')}\n\n          destroyAnyNodes();\n\n          ${\n            !json.hooks.onUpdate?.length\n              ? ''\n              : `\n                ${json.hooks.onUpdate.reduce((code, hook) => {\n                  code += addUpdateAfterSetInCode(\n                    updateReferencesInCode(hook.code, options),\n                    options,\n                  );\n                  return code + '\\n';\n                }, '')}\n                `\n          }\n\n          pendingUpdate = false;\n        }\n\n        ${options.js}\n\n        // Update with initial state on first load\n        update();\n        `\n        }\n\n        ${\n          !json.hooks?.onInit?.code\n            ? ''\n            : `\n            if (!onInitOnce) {\n              ${updateReferencesInCode(\n                addUpdateAfterSetInCode(json.hooks?.onInit?.code, options),\n                options,\n              )}\n              onInitOnce = true;\n            }\n            `\n        }\n\n        ${\n          !json.hooks.onMount.length\n            ? ''\n            : // TODO: make prettier by grabbing only the function body\n              `\n              // onMount\n              ${updateReferencesInCode(\n                addUpdateAfterSetInCode(stringifySingleScopeOnMount(json), options),\n                options,\n              )}\n              `\n        }\n\n        ${\n          !hasShow\n            ? ''\n            : `\n          function showContent(el) {\n            // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n            // grabs the content of a node that is between <template> tags\n            // iterates through child nodes to register all content including text elements\n            // attaches the content after the template\n\n\n            const elementFragment = el.content.cloneNode(true);\n            const children = Array.from(elementFragment.childNodes)\n            children.forEach(child => {\n              if (el?.scope) {\n                child.scope = el.scope;\n              }\n              if (el?.context) {\n                child.context = el.context;\n              }\n              nodesToDestroy.push(child);\n            });\n            el.after(elementFragment);\n          }\n\n        `\n        }\n        ${\n          !hasTextBinding\n            ? ''\n            : `\n          // Helper text DOM nodes\n          function renderTextNode(el, text) {\n            const textNode = document.createTextNode(text);\n            if (el?.scope) {\n              textNode.scope = el.scope\n            }\n            if (el?.context) {\n              child.context = el.context;\n            }\n            el.after(textNode);\n            nodesToDestroy.push(el.nextSibling);\n          }\n          `\n        }\n        ${\n          !hasLoop\n            ? ''\n            : `\n          // Helper to render loops\n          function renderLoop(template, array, itemName, itemIndex, collectionName) {\n            const collection = [];\n            for (let [index, value] of array.entries()) {\n              const elementFragment = template.content.cloneNode(true);\n              const children = Array.from(elementFragment.childNodes)\n              const localScope = {};\n              let scope = localScope;\n              if (template?.scope) {\n                const getParent = {\n                  get(target, prop, receiver) {\n                    if (prop in target) {\n                      return target[prop];\n                    }\n                    if (prop in template.scope) {\n                      return template.scope[prop];\n                    }\n                    return target[prop];\n                  }\n                };\n                scope = new Proxy(localScope, getParent);\n              }\n              children.forEach((child) => {\n                if (itemName !== undefined) {\n                  scope[itemName] = value;\n                }\n                if (itemIndex !== undefined) {\n                  scope[itemIndex] = index;\n                }\n                if (collectionName !== undefined) {\n                  scope[collectionName] = array;\n                }\n                child.scope = scope;\n                if (template.context) {\n                  child.context = template.context;\n                }\n                this.nodesToDestroy.push(child);\n                collection.unshift(child);\n              });\n              collection.forEach(child => template.after(child));\n            }\n          }\n\n          function getScope(el, name) {\n            do {\n              let value = el?.scope?.[name]\n              if (value !== undefined) {\n                return value\n              }\n            } while ((el = el.parentNode));\n          }\n        `\n        }\n      })()\n      </script>\n    `;\n    }\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'html',\n          htmlWhitespaceSensitivity: 'ignore',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n\n// TODO: props support via custom elements\nexport const componentToCustomElement: TranspilerGenerator<ToHtmlOptions> =\n  (_options = {}) =>\n  ({ component }) => {\n    const ComponentName = component.name;\n    const kebabName = kebabCase(ComponentName);\n\n    const options: InternalToHtmlOptions = initializeOptions({\n      target: 'customElement',\n      component,\n      defaults: {\n        prefix: kebabName,\n        ..._options,\n        onChangeJsById: {},\n        js: '',\n        namesMap: {},\n        format: 'class',\n      },\n    });\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    const [forwardProp, hasPropRef] = getPropsRef(json, true);\n\n    const contextVars = Object.keys(json?.context?.get || {});\n    const childComponents = getChildComponents(json, options);\n    const componentHasProps = hasProps(json);\n    const componentHasStatefulDom = hasStatefulDom(json);\n    const props = getProps(json);\n    // prevent jsx props from showing up as @Input\n    if (hasPropRef) {\n      props.delete(forwardProp);\n    }\n    const outputs = getPropFunctions(json);\n    const domRefs = getRefs(json);\n    const jsRefs = Object.keys(json.refs).filter((ref) => !domRefs.has(ref));\n    mapRefs(json, (refName) => `self._${refName}`);\n    const context: string[] = contextVars.map((variableName) => {\n      const token = json?.context?.get[variableName].name;\n      if (options?.experimental?.htmlContext) {\n        return options?.experimental?.htmlContext(variableName, token);\n      }\n      return `this.${variableName} = this.getContext(this._root, ${token})`;\n    });\n\n    const setContext = [];\n    for (const key in json.context.set) {\n      const { name, value, ref } = json.context.set[key];\n      setContext.push({ name, value, ref });\n    }\n\n    addUpdateAfterSet(json, options);\n\n    const hasContext = context.length;\n    const hasLoop = hasComponent('For', json);\n    const hasScope = hasLoop;\n    const hasShow = hasComponent('Show', json);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    let css = '';\n    if (options?.experimental?.css) {\n      css = options?.experimental?.css(json, options, {\n        collectCss,\n        prefix: options.prefix,\n      });\n    } else {\n      css = collectCss(json, {\n        prefix: options.prefix,\n      });\n    }\n\n    stripMetaProperties(json);\n\n    let html = json.children\n      .map((item) =>\n        blockToHtml(item, options, {\n          childComponents,\n          props,\n          outputs,\n          ComponentName,\n          contextVars,\n        }),\n      )\n      .join('\\n');\n    if (options?.experimental?.childrenHtml) {\n      html = options?.experimental?.childrenHtml(html, kebabName, json, options);\n    }\n\n    if (options?.experimental?.cssHtml) {\n      html += options?.experimental?.cssHtml(css);\n    } else if (css.length) {\n      html += `<style>${css}</style>`;\n    }\n\n    if (options.prettier !== false) {\n      try {\n        html = format(html, {\n          parser: 'html',\n          htmlWhitespaceSensitivity: 'ignore',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n            require('prettier/parser-typescript'),\n          ],\n        });\n        html = html.trim().replace(/\\n/g, '\\n      ');\n      } catch (err) {\n        console.warn('Could not prettify', { string: html }, err);\n      }\n    }\n\n    let str = `\n      ${json.types ? json.types.join('\\n') : ''}\n      ${renderPreComponent({\n        explicitImportFileExtension: options.explicitImportFileExtension,\n        component: json,\n        target: 'customElement',\n      })}\n      /**\n       * Usage:\n       *\n       *  <${kebabName}></${kebabName}>\n       *\n       */\n      class ${ComponentName} extends ${\n      options?.experimental?.classExtends\n        ? options?.experimental?.classExtends(json, options)\n        : 'HTMLElement'\n    } {\n        ${Array.from(domRefs)\n          .map((ref) => {\n            return `\n        get _${ref}() {\n          return this._root.querySelector(\"[data-ref='${ComponentName}-${ref}']\")\n        }\n            `;\n          })\n          .join('\\n')}\n\n        get _root() {\n          return this.shadowRoot || this;\n        }\n\n        constructor() {\n          super();\n          const self = this;\n          ${\n            // TODO: more than one context not injector\n            setContext.length === 1 && setContext?.[0]?.ref\n              ? `this.context = ${setContext[0].ref}`\n              : ''\n          }\n\n          ${!json.hooks?.onInit?.code ? '' : 'this.onInitOnce = false;'}\n\n          this.state = ${getStateObjectStringFromComponent(json, {\n            valueMapper: (value) =>\n              pipe(\n                stripStateAndPropsRefs(addUpdateAfterSetInCode(value, options, 'self.update'), {\n                  includeProps: false,\n                  includeState: true,\n                  // TODO: if it's an arrow function it's this.state.\n                  replaceWith: 'self.state.',\n                }),\n                (newCode) =>\n                  stripStateAndPropsRefs(newCode, {\n                    // TODO: replace with `this.` and add setters that call this.update()\n                    includeProps: true,\n                    includeState: false,\n                    replaceWith: 'self.props.',\n                  }),\n                (code) =>\n                  DO_NOT_USE_CONTEXT_VARS_TRANSFORMS({\n                    code,\n                    contextVars,\n                    // correctly ref the class not state object\n                    context: 'self.',\n                  }),\n              ),\n          })};\n          if (!this.props) {\n            this.props = {};\n          }\n          ${\n            !componentHasProps\n              ? ''\n              : `\n          this.componentProps = [${Array.from(props)\n            .map((prop) => `\"${prop}\"`)\n            .join(',')}];\n          `\n          }\n\n          ${\n            !json.hooks.onUpdate?.length\n              ? ''\n              : `\n            this.updateDeps = [${json.hooks.onUpdate\n              ?.map((hook) => updateReferencesInCode(hook?.deps || '[]', options))\n              .join(',')}];\n            `\n          }\n\n          // used to keep track of all nodes created by show/for\n          this.nodesToDestroy = [];\n          // batch updates\n          this.pendingUpdate = false;\n          ${\n            options?.experimental?.componentConstructor\n              ? options?.experimental?.componentConstructor(json, options)\n              : ''\n          }\n\n          ${options.js}\n\n          ${jsRefs\n            .map((ref) => {\n              // const typeParameter = json['refs'][ref]?.typeParameter || '';\n              const argument = json['refs'][ref]?.argument || 'null';\n              return `this._${ref} = ${argument}`;\n            })\n            .join('\\n')}\n\n          if (${json.meta.useMetadata?.isAttachedToShadowDom}) {\n            this.attachShadow({ mode: 'open' })\n          }\n        }\n\n\n        ${\n          !json.hooks.onUnMount?.code\n            ? ''\n            : `\n          disconnectedCallback() {\n            ${\n              options?.experimental?.disconnectedCallback\n                ? options?.experimental?.disconnectedCallback(json, options)\n                : `\n            // onUnMount\n            ${updateReferencesInCode(\n              addUpdateAfterSetInCode(json.hooks.onUnMount.code, options),\n              options,\n              {\n                contextVars,\n              },\n            )}\n            this.destroyAnyNodes(); // clean up nodes when component is destroyed\n            ${!json.hooks?.onInit?.code ? '' : 'this.onInitOnce = false;'}\n            `\n            }\n          }\n          `\n        }\n\n        destroyAnyNodes() {\n          // destroy current view template refs before rendering again\n          this.nodesToDestroy.forEach(el => el.remove());\n          this.nodesToDestroy = [];\n        }\n\n        connectedCallback() {\n          ${context.join('\\n')}\n          ${\n            !componentHasProps\n              ? ''\n              : `\n          this.getAttributeNames().forEach((attr) => {\n            const jsVar = attr.replace(/-/g, '');\n            const regexp = new RegExp(jsVar, 'i');\n            this.componentProps.forEach(prop => {\n              if (regexp.test(prop)) {\n                const attrValue = this.getAttribute(attr);\n                if (this.props[prop] !== attrValue) {\n                  this.props[prop] = attrValue;\n                }\n              }\n            });\n          });\n          `\n          }\n          ${\n            options?.experimental?.connectedCallbackUpdate\n              ? options?.experimental?.connectedCallbackUpdate(json, html, options)\n              : `\n              this._root.innerHTML = \\`\n      ${html}\\`;\n              this.pendingUpdate = true;\n              ${!json.hooks?.onInit?.code ? '' : 'this.onInit();'}\n              this.render();\n              this.onMount();\n              this.pendingUpdate = false;\n              this.update();\n              `\n          }\n        }\n        ${\n          !json.hooks?.onInit?.code\n            ? ''\n            : `\n            onInit() {\n              ${\n                !json.hooks?.onInit?.code\n                  ? ''\n                  : `\n                  if (!this.onInitOnce) {\n                    ${updateReferencesInCode(\n                      addUpdateAfterSetInCode(json.hooks?.onInit?.code, options),\n                      options,\n                      {\n                        contextVars,\n                      },\n                    )}\n                    this.onInitOnce = true;\n                  }`\n              }\n            }\n            `\n        }\n\n        ${\n          !hasShow\n            ? ''\n            : `\n          showContent(el) {\n            // https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/content\n            // grabs the content of a node that is between <template> tags\n            // iterates through child nodes to register all content including text elements\n            // attaches the content after the template\n\n\n            const elementFragment = el.content.cloneNode(true);\n            const children = Array.from(elementFragment.childNodes)\n            children.forEach(child => {\n              if (el?.scope) {\n                child.scope = el.scope;\n              }\n              if (el?.context) {\n                child.context = el.context;\n              }\n              this.nodesToDestroy.push(child);\n            });\n            el.after(elementFragment);\n          }`\n        }\n        ${\n          !options?.experimental?.attributeChangedCallback\n            ? ''\n            : `\n          attributeChangedCallback(name, oldValue, newValue) {\n            ${options?.experimental?.attributeChangedCallback(\n              ['name', 'oldValue', 'newValue'],\n              json,\n              options,\n            )}\n          }\n          `\n        }\n\n        onMount() {\n          ${\n            !json.hooks.onMount.length\n              ? ''\n              : // TODO: make prettier by grabbing only the function body\n                `\n                // onMount\n                ${updateReferencesInCode(\n                  addUpdateAfterSetInCode(stringifySingleScopeOnMount(json), options),\n                  options,\n                  {\n                    contextVars,\n                  },\n                )}\n                `\n          }\n        }\n\n        onUpdate() {\n          ${\n            !json.hooks.onUpdate?.length\n              ? ''\n              : `\n              const self = this;\n            ${json.hooks.onUpdate.reduce((code, hook, index) => {\n              // create check update\n              if (hook?.deps) {\n                code += `\n                ;(function (__prev, __next) {\n                  const __hasChange = __prev.find((val, index) => val !== __next[index]);\n                  if (__hasChange !== undefined) {\n                    ${updateReferencesInCode(hook.code, options, {\n                      contextVars,\n                      context: 'self.',\n                    })}\n                    self.updateDeps[${index}] = __next;\n                  }\n                }(self.updateDeps[${index}], ${updateReferencesInCode(hook?.deps || '[]', options, {\n                  contextVars,\n                  context: 'self.',\n                })}));\n                `;\n              } else {\n                code += `\n                ${updateReferencesInCode(hook.code, options, {\n                  contextVars,\n                  context: 'self.',\n                })}\n                `;\n              }\n              return code + '\\n';\n            }, '')}\n            `\n          }\n        }\n\n        update() {\n          if (this.pendingUpdate === true) {\n            return;\n          }\n          this.pendingUpdate = true;\n          this.render();\n          this.onUpdate();\n          this.pendingUpdate = false;\n        }\n\n        render() {\n          ${\n            !componentHasStatefulDom\n              ? ''\n              : `\n          // grab previous input state\n          const preStateful = this.getStateful(this._root);\n          const preValues = this.prepareHydrate(preStateful);\n          `\n          }\n\n          // re-rendering needs to ensure that all nodes generated by for/show are refreshed\n          this.destroyAnyNodes();\n          this.updateBindings();\n\n          ${\n            !componentHasStatefulDom\n              ? ''\n              : `\n          // hydrate input state\n          if (preValues.length) {\n            const nextStateful = this.getStateful(this._root);\n            this.hydrateDom(preValues, nextStateful);\n          }\n          `\n          }\n        }\n        ${\n          !componentHasStatefulDom\n            ? ''\n            : `\n            getStateful(el) {\n              const stateful = el.querySelectorAll('[data-dom-state]');\n              return stateful ? Array.from(stateful) : [];\n            }\n            prepareHydrate(stateful) {\n              return stateful.map(el => {\n                return {\n                  id: el.dataset.domState,\n                  value: el.value,\n                  active: document.activeElement === el,\n                  selectionStart: el.selectionStart\n                };\n              });\n            }\n            hydrateDom(preValues, stateful) {\n              return stateful.map((el, index) => {\n                const prev = preValues.find((prev) => el.dataset.domState === prev.id);\n                if (prev) {\n                  el.value = prev.value;\n                  if (prev.active) {\n                     el.focus();\n                     el.selectionStart = prev.selectionStart;\n                  }\n                }\n              });\n            }\n          `\n        }\n\n        updateBindings() {\n          ${Object.keys(options.onChangeJsById)\n            .map((key) => {\n              const value = options.onChangeJsById[key];\n              if (!value) {\n                return '';\n              }\n              let code = '';\n              if (options?.experimental?.updateBindings) {\n                key = options?.experimental?.updateBindings?.key(key, value, options);\n                code = options?.experimental?.updateBindings?.code(key, value, options);\n              } else {\n                code = updateReferencesInCode(value, options, {\n                  contextVars,\n                });\n              }\n              return `\n              ${\n                options?.experimental?.generateQuerySelectorAll\n                  ? `\n              ${options?.experimental?.generateQuerySelectorAll(key, code)}\n              `\n                  : `\n              this._root.querySelectorAll(\"[data-el='${key}']\").forEach((el) => {\n                ${code}\n              })\n              `\n              }\n            `;\n            })\n            .join('\\n\\n')}\n        }\n\n        // Helper to render content\n        renderTextNode(el, text) {\n          const textNode = document.createTextNode(text);\n          if (el?.scope) {\n            textNode.scope = el.scope;\n          }\n          if (el?.context) {\n            textNode.context = el.context;\n          }\n          el.after(textNode);\n          this.nodesToDestroy.push(el.nextSibling);\n        }\n        ${\n          !hasContext\n            ? ''\n            : `\n            // get Context Helper\n            getContext(el, token) {\n              do {\n                let value;\n                if (el?.context?.get) {\n                  value = el.context.get(token);\n                } else if (el?.context?.[token]) {\n                  value = el.context[token];\n                }\n                if (value !== undefined) {\n                  return value;\n                }\n              } while ((el = el.parentNode));\n            }\n            `\n        }\n        ${\n          !hasScope\n            ? ''\n            : `\n            // scope helper\n            getScope(el, name) {\n              do {\n                let value = el?.scope?.[name]\n                if (value !== undefined) {\n                  return value\n                }\n              } while ((el = el.parentNode));\n            }\n            `\n        }\n\n        ${\n          !hasLoop\n            ? ''\n            : `\n\n          // Helper to render loops\n          renderLoop(template, array, itemName, itemIndex, collectionName) {\n            const collection = [];\n            for (let [index, value] of array.entries()) {\n              const elementFragment = template.content.cloneNode(true);\n              const children = Array.from(elementFragment.childNodes)\n              const localScope = {};\n              let scope = localScope;\n              if (template?.scope) {\n                const getParent = {\n                  get(target, prop, receiver) {\n                    if (prop in target) {\n                      return target[prop];\n                    }\n                    if (prop in template.scope) {\n                      return template.scope[prop];\n                    }\n                    return target[prop];\n                  }\n                };\n                scope = new Proxy(localScope, getParent);\n              }\n              children.forEach((child) => {\n                if (itemName !== undefined) {\n                  scope[itemName] = value;\n                }\n                if (itemIndex !== undefined) {\n                  scope[itemIndex] = index;\n                }\n                if (collectionName !== undefined) {\n                  scope[collectionName] = array;\n                }\n                child.scope = scope;\n                if (template.context) {\n                  child.context = context;\n                }\n                this.nodesToDestroy.push(child);\n                collection.unshift(child)\n              });\n            }\n            collection.forEach(child => template.after(child));\n          }\n        `\n        }\n      }\n\n      ${\n        options?.experimental?.customElementsDefine\n          ? options?.experimental?.customElementsDefine(kebabName, component, options)\n          : `customElements.define('${kebabName}', ${ComponentName});`\n      }\n    `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n            require('prettier/parser-typescript'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/html/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/html/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToHtmlOptions extends BaseTranspilerOptions {\n  format?: 'class' | 'script';\n  prefix?: string;\n}\n\nexport type HtmlMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/liquid/generator.ts",
    "content": "import { ToLiquidOptions } from '@/generators/liquid/types';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { format } from 'prettier/standalone';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport { fastClone } from '../../helpers/fast-clone';\nimport { getStateObjectStringFromComponent } from '../../helpers/get-state-object-string';\nimport { stripMetaProperties } from '../../helpers/strip-meta-properties';\nimport { stripStateAndPropsRefs } from '../../helpers/strip-state-and-props-refs';\nimport { collectCss } from '../../helpers/styles/collect-css';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { MitosisNode, checkIsForNode } from '../../types/mitosis-node';\nimport { TranspilerGenerator } from '../../types/transpiler';\n\n/**\n * Test if the binding expression would be likely to generate\n * valid or invalid liquid. If we generate invalid liquid tags\n * Shopify will reject our PUT to update the template\n */\nexport const isValidLiquidBinding = (str = '') => {\n  const strictMatches = Boolean(\n    // Test for our `context.shopify.liquid.*(expression), which\n    // we regex out later to transform back into valid liquid expressions\n    str.match(/(context|ctx)\\s*(\\.shopify\\s*)?\\.liquid\\s*\\./),\n  );\n\n  return (\n    strictMatches ||\n    // Test is the expression is simple and would map to Shopify bindings\t    // Test for our `context.shopify.liquid.*(expression), which\n    // e.g. `state.product.price` -> `{{product.price}}\t    // we regex out later to transform back into valid liquid expressions\n    Boolean(str.match(/^[a-z0-9_\\.\\s]+$/i))\n  );\n};\n\nconst mappers: {\n  [key: string]: (json: MitosisNode, options: ToLiquidOptions) => string;\n} = {\n  Fragment: (json, options) => {\n    return `<div>${json.children.map((item) => blockToLiquid(item, options)).join('\\n')}</div>`;\n  },\n};\n\n// TODO: spread support\nconst blockToLiquid = (json: MitosisNode, options: ToLiquidOptions = {}): string => {\n  if (mappers[json.name]) {\n    return mappers[json.name](json, options);\n  }\n\n  // TODO: Add support for `{props.children}` bindings\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n\n  if (json.bindings._text?.code) {\n    if (!isValidLiquidBinding(json.bindings._text.code as string)) {\n      return '';\n    }\n    return `{{${stripStateAndPropsRefs(json.bindings._text.code as string)}}}`;\n  }\n\n  let str = '';\n\n  if (checkIsForNode(json)) {\n    if (\n      !(isValidLiquidBinding(json.bindings.each?.code) && isValidLiquidBinding(json.scope.forName))\n    ) {\n      return str;\n    }\n    str += `{% for ${json.scope.forName} in ${stripStateAndPropsRefs(json.bindings.each?.code)} %}`;\n    if (json.children) {\n      str += json.children.map((item) => blockToLiquid(item, options)).join('\\n');\n    }\n\n    str += '{% endfor %}';\n  } else if (json.name === 'Show') {\n    if (!isValidLiquidBinding(json.bindings.when?.code)) {\n      return str;\n    }\n    str += `{% if ${stripStateAndPropsRefs(json.bindings.when?.code)} %}`;\n    if (json.children) {\n      str += json.children.map((item) => blockToLiquid(item, options)).join('\\n');\n    }\n\n    str += '{% endif %}';\n  } else {\n    str += `<${json.name} `;\n\n    if (\n      json.bindings._spread?.code === '_spread' &&\n      isValidLiquidBinding(json.bindings._spread.code)\n    ) {\n      str += `\n          {% for _attr in ${json.bindings._spread.code} %}\n            {{ _attr[0] }}=\"{{ _attr[1] }}\"\n          {% endfor %}\n        `;\n    }\n\n    for (const key in json.properties) {\n      const value = json.properties[key];\n      str += ` ${key}=\"${value}\" `;\n    }\n\n    for (const key in json.bindings) {\n      if (key === '_spread' || key === 'ref' || key === 'css') {\n        continue;\n      }\n      const { code: value } = json.bindings[key]!;\n      // TODO: proper babel transform to replace. Util for this\n      const useValue = stripStateAndPropsRefs(value);\n\n      if (checkIsEvent(key)) {\n        // Do nothing\n      } else if (isValidLiquidBinding(useValue)) {\n        str += ` ${key}=\"{{${useValue}}}\" `;\n      }\n    }\n    if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n      return str + ' />';\n    }\n    str += '>';\n    if (json.children) {\n      str += json.children.map((item) => blockToLiquid(item, options)).join('\\n');\n    }\n\n    str += `</${json.name}>`;\n  }\n  return str;\n};\n\n// TODO: add JS support similar to componentToHtml()\nexport const componentToLiquid: TranspilerGenerator<ToLiquidOptions> =\n  (options = {}) =>\n  ({ component }) => {\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    const css = collectCss(json);\n    stripMetaProperties(json);\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    let str = json.children.map((item) => blockToLiquid(item)).join('\\n');\n\n    if (css.trim().length) {\n      str += `<style>${css}</style>`;\n    }\n\n    if (options.reactive) {\n      const stateObjectString = getStateObjectStringFromComponent(json);\n      if (stateObjectString.trim().length > 4) {\n        str += `<script reactive>\n        export default {\n          state: ${stateObjectString}\n        }\n      </script>`;\n      }\n    }\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'html',\n          htmlWhitespaceSensitivity: 'ignore',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/liquid/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/liquid/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToLiquidOptions extends BaseTranspilerOptions {\n  reactive?: boolean;\n}\n\nexport type LiquidMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/lit/collect-class-string.ts",
    "content": "import { MitosisNode } from '@/types/mitosis-node';\n\n// This should really be a preprocessor mapping the `class` attribute binding based on what other values have\n// to make this more pluggable\nexport function collectClassString(\n  json: MitosisNode,\n  bindingOpenChar = '{',\n  bindingCloseChar = '}',\n): string | null {\n  const staticClasses: string[] = [];\n\n  const hasStaticClasses = Boolean(staticClasses.length);\n  if (json.properties.class) {\n    staticClasses.push(json.properties.class);\n    delete json.properties.class;\n  }\n  if (json.properties.className) {\n    staticClasses.push(json.properties.className);\n    delete json.properties.className;\n  }\n\n  const dynamicClasses: string[] = [];\n  if (typeof json.bindings.class?.code === 'string') {\n    dynamicClasses.push(json.bindings.class.code as any);\n    delete json.bindings.class;\n  }\n  if (typeof json.bindings.className?.code === 'string') {\n    dynamicClasses.push(json.bindings.className.code as any);\n    delete json.bindings.className;\n  }\n\n  const staticClassesString = staticClasses.join(' ');\n\n  const dynamicClassesString = dynamicClasses.join(\" + ' ' + \");\n\n  const hasDynamicClasses = Boolean(dynamicClasses.length);\n\n  if (hasStaticClasses && !hasDynamicClasses) {\n    return `\"${staticClassesString}\"`;\n  }\n\n  if (hasDynamicClasses && !hasStaticClasses) {\n    return `${bindingOpenChar}${dynamicClassesString}${bindingCloseChar}`;\n  }\n\n  if (hasDynamicClasses && hasStaticClasses) {\n    return `${bindingOpenChar}\"${staticClassesString} \" + ${dynamicClassesString}${bindingCloseChar}`;\n  }\n\n  return null;\n}\n"
  },
  {
    "path": "packages/core/src/generators/lit/generate.ts",
    "content": "import { ToLitOptions } from '@/generators/lit/types';\nimport { dashCase } from '@/helpers/dash-case';\nimport { dedent } from '@/helpers/dedent';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { getProps } from '@/helpers/get-props';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { has } from '@/helpers/has';\nimport { indent } from '@/helpers/indent';\nimport { isUpperCase } from '@/helpers/is-upper-case';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { checkIsForNode, MitosisNode } from '@/types/mitosis-node';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { camelCase, some } from 'lodash';\nimport { format } from 'prettier/standalone';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\nimport { collectClassString } from './collect-class-string';\n\nconst getCustomTagName = (name: string, options: ToLitOptions) => {\n  if (!name || !isUpperCase(name[0])) {\n    return name;\n  }\n\n  const kebabCaseName = dashCase(name);\n  if (!kebabCaseName.includes('-')) {\n    // TODO: option to choose your prefix\n    return 'my-' + kebabCaseName;\n  }\n\n  return kebabCaseName;\n};\n\nconst blockToLit = (json: MitosisNode, options: ToLitOptions = {}): string => {\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  if (json.bindings._text?.code) {\n    return `\\${${processBinding(json.bindings?._text.code as string)}}`;\n  }\n\n  if (checkIsForNode(json)) {\n    return `\\${${processBinding(json.bindings.each?.code as string)}?.map((${\n      json.scope.forName ?? '_'\n    }, ${json.scope.indexName ?? 'index'}) => (\n      html\\`${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToLit(item, options))\n        .join('\\n')}\\`\n    ))}`;\n  } else if (json.name === 'Show') {\n    return `\\${${processBinding(json.bindings.when?.code as string)} ?\n      html\\`${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToLit(item, options))\n        .join('\\n')}\\`\n    : ${!json.meta.else ? 'null' : `html\\`${blockToLit(json.meta.else as any, options)}\\``}}`;\n  }\n\n  let str = '';\n\n  const tagName = getCustomTagName(json.name, options);\n  str += `<${tagName} `;\n\n  const classString = collectClassString(json);\n  if (classString) {\n    str += ` class=${classString} `;\n  }\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    str += ` ${key}=\"${value}\" `;\n  }\n  for (const key in json.bindings) {\n    const { code, arguments: cusArgs = ['event'], type } = json.bindings[key]!;\n\n    if (type === 'spread') {\n      str += ` \\${spread(${code})} `;\n    } else if (key === 'ref') {\n      // TODO: maybe use ref directive instead\n      // https://lit.dev/docs/templates/directives/#ref\n      str += ` ref=\"${code}\" `;\n    } else if (checkIsEvent(key)) {\n      const asyncKeyword = json.bindings[key]?.async ? 'async ' : '';\n      const useKey = '@' + key.substring(2).toLowerCase();\n\n      str += ` ${useKey}=\\${${asyncKeyword}(${cusArgs.join(',')}) => ${processBinding(\n        code as string,\n      )}} `;\n    } else {\n      const value = processBinding(code as string);\n      // If they key includes a '-' it's an attribute, not a property\n      if (key.includes('-')) {\n        str += ` ${key}=\\${${value}} `;\n      } else {\n        // TODO: handle boolean attributes too by matching list of html boolean attributes\n        // https://lit.dev/docs/templates/expressions/#boolean-attribute-expressions\n        str += ` .${key}=\\${${value}} `;\n      }\n    }\n  }\n  if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n    return str + ' />';\n  }\n  str += '>';\n  if (json.children) {\n    str += json.children.map((item) => blockToLit(item, options)).join('\\n');\n  }\n\n  str += `</${tagName}>`;\n\n  return str;\n};\n\nfunction processBinding(code: string) {\n  return stripStateAndPropsRefs(code, { replaceWith: 'this.' });\n}\n\nexport const componentToLit: TranspilerGenerator<ToLitOptions> =\n  (_options = {}) =>\n  ({ component }) => {\n    const options = initializeOptions({ target: 'lit', component, defaults: _options });\n\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    const props = getProps(component);\n    let css = collectCss(json);\n\n    const domRefs = getRefs(json);\n    mapRefs(json, (refName) => `this.${camelCase(refName)}`);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    stripMetaProperties(json);\n\n    const dataString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: true,\n      functions: false,\n      getters: false,\n      keyPrefix: '@state() ',\n      valueMapper: (code) => processBinding(code),\n    });\n\n    const methodsString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: false,\n      functions: true,\n      getters: true,\n      valueMapper: (code) => processBinding(code),\n    });\n\n    if (options.prettier !== false) {\n      try {\n        css = format(css, {\n          parser: 'css',\n          plugins: [require('prettier/parser-postcss')],\n        });\n      } catch (err) {\n        console.warn('Could not format css', err);\n      }\n    }\n\n    let html = json.children.map((item) => blockToLit(item, options)).join('\\n');\n\n    const hasSpread = has(json, (node) => some(node.bindings, { type: 'spread' }));\n\n    if (options.prettier !== false) {\n      try {\n        css = format(css, {\n          parser: 'css',\n          plugins: [require('prettier/parser-postcss')],\n        });\n      } catch (err) {\n        console.warn('Could not format css', err);\n      }\n      try {\n        html = format(html, {\n          parser: 'html',\n          plugins: [require('prettier/parser-html')],\n        });\n      } catch (err) {\n        // If can't format HTML (this can happen with lit given it is tagged template strings),\n        // at least remove excess fspace\n        html = html.replace(/\\n{3,}/g, '\\n\\n');\n      }\n    }\n\n    let str = dedent`\n    ${renderPreComponent({\n      explicitImportFileExtension: options.explicitImportFileExtension,\n      component: json,\n      target: 'lit',\n    })}\n    import { LitElement, html, css } from 'lit';\n    import { customElement, property, state, query } from 'lit/decorators.js';\n\n    ${json.types ? json.types.join('\\n') : ''}\n    ${\n      hasSpread\n        ? `\n      const spread = (properties) =>\n        directive((part) => {\n          for (const property in properties) {\n            const value = properties[attr];\n            part.element[property] = value;\n          }\n        });\n    `\n        : ''\n    }\n\n    @customElement('${json.meta.useMetadata?.tagName || getCustomTagName(json.name, options)}')\n    export default class ${json.name} extends LitElement {\n      ${\n        options.useShadowDom\n          ? ''\n          : `\n        createRenderRoot() {\n          return this;\n        }\n        `\n      }\n\n      ${\n        options.useShadowDom && css.length\n          ? `static styles = css\\`\n      ${indent(css, 8)}\\`;`\n          : ''\n      }\n\n      ${Array.from(domRefs)\n        .map(\n          (refName) => `\n          @query('[ref=\"${refName}\"]')\n          ${camelCase(refName)}!: HTMLElement;\n          `,\n        )\n        .join('\\n')}\n\n\n      ${Array.from(props)\n        .map((item) => `@property() ${item}: any`)\n        .join('\\n')}\n\n        ${dataString}\n        ${methodsString}\n\n        ${\n          json.hooks.onMount.length === 0\n            ? ''\n            : `connectedCallback() { ${processBinding(stringifySingleScopeOnMount(json))} }`\n        }\n        ${\n          !json.hooks.onUnMount?.code\n            ? ''\n            : `disconnectedCallback() { ${processBinding(json.hooks.onUnMount.code)} }`\n        }\n        ${\n          !json.hooks.onUpdate?.length\n            ? ''\n            : `updated() {\n              ${json.hooks.onUpdate.map((hook) => processBinding(hook.code)).join('\\n\\n')}\n            }`\n        }\n\n      render() {\n        return html\\`\n          ${options.useShadowDom || !css.length ? '' : `<style>${css}</style>`}\n          ${indent(html, 8)}\n        \\`\n      }\n    }\n  `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [require('prettier/parser-typescript')],\n        });\n      } catch (err) {\n        console.warn('Could not format Lit typescript', err);\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/lit/index.ts",
    "content": "export * from './generate';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/lit/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToLitOptions extends BaseTranspilerOptions {\n  /**\n   * Enabled shadowDOM for generated lit components. Default: enabled\n   */\n  useShadowDom?: boolean;\n}\n\nexport type LitMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/marko/generate.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS } from '@/constants/html_tags';\nimport { ToMarkoOptions } from '@/generators/marko/types';\nimport { dashCase } from '@/helpers/dash-case';\nimport { dedent } from '@/helpers/dedent';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { hasProps } from '@/helpers/has-props';\nimport { indent } from '@/helpers/indent';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { getForArguments } from '@/helpers/nodes/for';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode, checkIsForNode } from '@/types/mitosis-node';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport hash from 'hash-sum';\nimport { camelCase } from 'lodash';\nimport { format } from 'prettier/standalone';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\n\ninterface InternalToMarkoOptions extends ToMarkoOptions {\n  component: MitosisComponent;\n}\n\n// Having issues with this, so off for now\nconst USE_MARKO_PRETTIER = false;\n\n/**\n * Return the names of properties (basic literal values) on state\n */\nfunction getStatePropertyNames(json: MitosisComponent) {\n  return Object.keys(json.state).filter((key) => json.state[key]?.type === 'property');\n}\n\nconst blockToMarko = (json: MitosisNode, options: InternalToMarkoOptions): string => {\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  if (json.bindings._text?.code) {\n    return `\\${${processBinding(options.component, json.bindings?._text.code as string)}}`;\n  }\n\n  if (json.name === 'Fragment') {\n    return json.children.map((child) => blockToMarko(child, options)).join('\\n');\n  }\n\n  if (checkIsForNode(json)) {\n    const forArguments = getForArguments(json).join(',');\n    return `<for|${forArguments}| of=(${processBinding(\n      options.component,\n      json.bindings.each?.code as string,\n    )})>\n      ${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToMarko(item, options))\n        .join('\\n')}\n    </for>`;\n  } else if (json.name === 'Show') {\n    return `<if(${processBinding(options.component, json.bindings.when?.code as string)})>\n      ${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToMarko(item, options))\n        .join('\\n')}</if>\n    ${!json.meta.else ? '' : `<else>${blockToMarko(json.meta.else as any, options)}</else>`}`;\n  }\n\n  let str = '';\n\n  str += `<${json.name} `;\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    str += ` ${key}=\"${value}\" `;\n  }\n  for (const key in json.bindings) {\n    const { code, arguments: cusArgs = ['event'], type, async } = json.bindings[key]!;\n\n    if (type === 'spread') {\n      str += ` ...(${code}) `;\n    } else if (key === 'ref') {\n      str += ` key=\"${camelCase(code)}\" `;\n    } else if (checkIsEvent(key)) {\n      const asyncKeyword = async ? 'async ' : '';\n      const useKey = key === 'onChange' && json.name === 'input' ? 'onInput' : key;\n      str += ` ${dashCase(useKey)}=(${asyncKeyword}(${cusArgs.join(',')}) => ${processBinding(\n        options.component,\n        code as string,\n      )}) `;\n    } else if (key !== 'innerHTML') {\n      str += ` ${key}=(${processBinding(options.component, code as string)}) `;\n    }\n  }\n  if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n    return str + ' />';\n  }\n  str += '>';\n\n  if (json.bindings.innerHTML?.code) {\n    str += `$!{${processBinding(options.component, json.bindings.innerHTML.code as string)}}`;\n  }\n\n  if (json.children) {\n    str += json.children.map((item) => blockToMarko(item, options)).join('\\n');\n  }\n\n  str += `</${json.name}>`;\n\n  return str;\n};\n\nfunction processBinding(\n  json: MitosisComponent,\n  code: string,\n  type: 'attribute' | 'class' | 'state' = 'attribute',\n) {\n  try {\n    return stripStateAndPropsRefs(\n      stripStateAndPropsRefs(code, {\n        replaceWith: type === 'state' ? 'input.' : type === 'class' ? 'this.input.' : 'input.',\n        includeProps: true,\n        includeState: false,\n      }),\n      {\n        replaceWith: (key) => {\n          const isProperty = getStatePropertyNames(json).includes(key);\n          if (isProperty) {\n            return (type === 'state' || type === 'class' ? 'this.state.' : 'state.') + key;\n          }\n          return (type === 'class' || type === 'state' ? 'this.' : 'component.') + key;\n        },\n        includeProps: false,\n        includeState: true,\n      },\n    );\n  } catch (error) {\n    console.error('Marko: could not process binding', code);\n    return code;\n  }\n}\n\nexport const componentToMarko: TranspilerGenerator<ToMarkoOptions> =\n  (userOptions = {}) =>\n  ({ component }) => {\n    let json = fastClone(component);\n    const options = initializeOptions<InternalToMarkoOptions>({\n      target: 'marko',\n      component,\n      defaults: {\n        ...userOptions,\n        component: json,\n      },\n    });\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    let css = collectCss(json, {\n      prefix: hash(json),\n    });\n\n    const domRefs = getRefs(json);\n    mapRefs(json, (refName) => `this.${camelCase(refName)}`);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    stripMetaProperties(json);\n\n    const dataString = getStateObjectStringFromComponent(json, {\n      format: 'object',\n      data: true,\n      functions: false,\n      getters: false,\n      valueMapper: (code) => processBinding(json, code, 'state'),\n    });\n\n    const thisHasProps = hasProps(json);\n\n    const methodsString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: false,\n      functions: true,\n      getters: true,\n      valueMapper: (code) => processBinding(json, code, 'class'),\n    });\n\n    const hasState = dataString.trim().length > 5;\n\n    if (options.prettier !== false) {\n      try {\n        css = format(css, {\n          parser: 'css',\n          plugins: [require('prettier/parser-postcss')],\n        });\n      } catch (err) {\n        console.warn('Could not format css', err);\n      }\n    }\n\n    let jsString = dedent`\n    ${renderPreComponent({\n      explicitImportFileExtension: options.explicitImportFileExtension,\n      component: json,\n      target: 'marko',\n    })}\n\n    class {\n        ${methodsString}\n\n        ${\n          !hasState\n            ? ''\n            : `onCreate(${thisHasProps ? 'input' : ''}) {\n          this.state = ${dataString}\n        }`\n        }\n\n        ${Array.from(domRefs)\n          .map(\n            (refName) => `get ${camelCase(refName)}() {\n            return this.getEl('${camelCase(refName)}')\n          }`,\n          )\n          .join('\\n')}\n\n        ${\n          !json.hooks.onMount.length\n            ? ''\n            : `onMount() { ${processBinding(json, stringifySingleScopeOnMount(json), 'class')} }`\n        }\n        ${\n          !json.hooks.onUnMount?.code\n            ? ''\n            : `onDestroy() { ${processBinding(json, json.hooks.onUnMount.code, 'class')} }`\n        }\n        ${\n          !json.hooks.onUpdate?.length\n            ? ''\n            : `onRender() { ${json.hooks.onUpdate\n                .map((hook) => processBinding(json, hook.code, 'class'))\n                .join('\\n\\n')} }`\n        }\n    }\n  `;\n\n    let htmlString = json.children.map((item) => blockToMarko(item, options)).join('\\n');\n    const cssString = css.length\n      ? `style {\n  ${indent(css, 2).trim()}\n}`\n      : '';\n\n    if (options.prettier !== false && !USE_MARKO_PRETTIER) {\n      try {\n        htmlString = markoFormatHtml(htmlString);\n      } catch (err) {\n        console.warn('Could not format html', err);\n      }\n      try {\n        jsString = format(jsString, {\n          parser: 'typescript',\n          plugins: [require('prettier/parser-typescript')],\n        });\n      } catch (err) {\n        console.warn('Could not format js', err);\n      }\n    }\n\n    htmlString = htmlString\n      // Convert on-click=(...) -> on-click(...)\n      .replace(/(on-[a-z]+)=\\(/g, (_match, group) => group + '(')\n      // Fix a weird edge case where </if> becomes </if \\n > which is invalid in marko\n      .replace(/<\\/([a-z]+)\\s+>/gi, '</$1>');\n\n    let finalStr = `\n${jsString}\n${cssString}\n${htmlString}\n    `\n      .replace(/\\n{3,}/g, '\\n\\n')\n      .trim();\n\n    if (options.plugins) {\n      finalStr = runPreCodePlugins({ json, code: finalStr, plugins: options.plugins });\n    }\n\n    if (USE_MARKO_PRETTIER && options.prettier !== false) {\n      // Commented out for now as there are strange module import issues as\n      // a result, causing builds to fail\n      // format(finalStr, {\n      //   parser: 'marko',\n      //   plugins: [require('prettier-plugin-marko')],\n      // });\n    }\n\n    if (options.plugins) {\n      finalStr = runPostCodePlugins({ json, code: finalStr, plugins: options.plugins });\n    }\n    return finalStr;\n  };\n\n/**\n * Convert marko expressions to valid html\n *\n * <div on-click=(() => doSomething())> -> <div on-click=\"() => doSomething()\">\n */\nexport function preprocessHtml(htmlString: string) {\n  return (\n    htmlString\n      // Convert <for|foo| to <for |foo|, otherwise HTML will think the tag is not just <for> and complain\n      // when we close it with </for>\n      .replace(/<for\\|/g, '<for |')\n      // Convert <if(foo) to <if _=\"foo\", otherwise HTML will think the tag is not just <if> and complain\n      // when we close it with </if>\n      .replace(/<if\\(([\\s\\S]+?)\\)\\s*>/g, (_match, group) => {\n        return `<if _=\"${encodeAttributeValue(group)}\">`;\n      })\n      .replace(/=\\(([\\s\\S]*?)\\)(\\s*[a-z\\/>])/g, (_match, group, after) => {\n        return `=\"(${encodeAttributeValue(group)})\"${after}`;\n      })\n  );\n}\n\n/**\n * Convert HTML back to marko expressions\n *\n * <div on-click=\"() => doSomething()\"> -> <div on-click=(() => doSomething())>\n */\nexport function postprocessHtml(htmlString: string) {\n  return htmlString\n    .replace(/<for \\|/g, '<for|')\n    .replace(/<if _=\"([\\s\\S]+?)\"\\s*>/g, (_match, group) => {\n      return `<if(${decodeAttributeValue(group)})>`;\n    })\n    .replace(/=\"\\(([\\s\\S]*?)\\)\"(\\s*[a-z\\/>])/g, (_match, group, after) => {\n      return `=(${decodeAttributeValue(group)})${after}`;\n    });\n}\n\n// Encode quotes and spaces for HTML attribute values\nfunction encodeAttributeValue(value: string) {\n  return value.replace(/\"/g, '&quot;').replace(/\\n/g, '&#10;');\n}\n\n// Decode quotes and spaces for HTML attribute values\nfunction decodeAttributeValue(value: string) {\n  return value.replace(/&quot;/g, '\"').replace(/&#10;/g, '\\n');\n}\n\n/**\n * Format Marko HTML using the built-in HTML parser for prettier,\n * given issues with Marko's plugin\n */\nexport function markoFormatHtml(htmlString: string) {\n  return postprocessHtml(\n    format(preprocessHtml(htmlString), {\n      parser: 'html',\n      plugins: [require('prettier/parser-html')],\n    }),\n  );\n}\n"
  },
  {
    "path": "packages/core/src/generators/marko/index.ts",
    "content": "export * from './generate';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/marko/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToMarkoOptions extends BaseTranspilerOptions {}\n\nexport type MarkoMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/mitosis/generator.ts",
    "content": "import { HOOKS } from '@/constants/hooks';\nimport { SELF_CLOSING_HTML_TAGS } from '@/constants/html_tags';\nimport { ToMitosisOptions } from '@/generators/mitosis/types';\nimport { dedent } from '@/helpers/dedent';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getComponents } from '@/helpers/get-components';\nimport { getRefs } from '@/helpers/get-refs';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { isRootTextNode } from '@/helpers/is-root-text-node';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { checkHasState } from '@/helpers/state';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode, checkIsForNode, checkIsShowNode } from '@/types/mitosis-node';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport json5 from 'json5';\nimport traverse from 'neotraverse/legacy';\nimport { check, format } from 'prettier/standalone';\n\nimport { blockToReact, componentToReact } from '../react';\n\nexport const DEFAULT_FORMAT: ToMitosisOptions['format'] = 'legacy';\n\n// Special isValidAttributeName for Mitosis so we can allow for $ in names\nconst isValidAttributeName = (str: string) => {\n  return Boolean(str && /^[$a-z0-9\\-_:]+$/i.test(str));\n};\n\nconst isInvalidJsxAttributeName = (str: string) => {\n  let attr = str.trim();\n  if (attr.startsWith(':') || str.startsWith('@')) {\n    return true;\n  }\n  return false;\n};\n\nexport const blockToMitosis = (\n  json: MitosisNode,\n  toMitosisOptions: Partial<ToMitosisOptions> = {},\n  component: MitosisComponent,\n  insideJsx: boolean,\n): string => {\n  const options: ToMitosisOptions = {\n    format: DEFAULT_FORMAT,\n    ...toMitosisOptions,\n  };\n  if (options.format === 'react') {\n    return blockToReact(\n      json,\n      {\n        format: 'lite',\n        stateType: 'useState',\n        stylesType: 'emotion',\n        type: 'dom',\n        prettier: options.prettier,\n      },\n      component,\n      insideJsx,\n    );\n  }\n\n  if (checkIsShowNode(json)) {\n    const when = json.bindings.when?.code;\n    const elseCase = json.meta.else as MitosisNode;\n    if (options.nativeConditionals) {\n      const needsWrapper = json.children.length !== 1;\n\n      const renderChildren = `${needsWrapper ? '<>' : ''}\n        ${json.children\n          .map((child) => blockToMitosis(child, options, component, needsWrapper))\n          .join('\\n')}\n    ${needsWrapper ? '</>' : ''}`;\n\n      const renderElse =\n        elseCase && isMitosisNode(elseCase)\n          ? blockToMitosis(elseCase, options, component, false)\n          : 'null';\n      return `${insideJsx ? '{' : ''}(${when}) ? ${renderChildren} : ${renderElse}${\n        insideJsx ? '}' : ''\n      }`;\n    } else {\n      const elseHandler = elseCase\n        ? ` else={${blockToMitosis(elseCase, options, component, false)}}`\n        : '';\n      return `<Show when={${when}}${elseHandler}>\n  ${json.children.map((child) => blockToMitosis(child, options, component, true)).join('\\n')}\n</Show>`;\n    }\n  }\n\n  if (checkIsForNode(json)) {\n    const needsWrapper = json.children.length !== 1;\n    if (options.nativeLoops) {\n      const a = `${insideJsx ? '{' : ''}(${json.bindings.each?.code}).map(\n      (${json.scope.forName || '_'}, ${json.scope.indexName || 'index'}) => (\n      ${needsWrapper ? '<>' : ''}\n        ${json.children\n          .map((child) => blockToMitosis(child, options, component, needsWrapper))\n          .join('\\n')}\n      ${needsWrapper ? '</>' : ''}\n      ))${insideJsx ? '}' : ''}`;\n      return a;\n    }\n    return `<For each={${json.bindings.each?.code}}>\n    {(${json.scope.forName || '_'}, ${json.scope.indexName || 'index'}) =>\n      ${needsWrapper ? '<>' : ''}\n        ${json.children.map((child) => blockToMitosis(child, options, component, needsWrapper))}}\n      ${needsWrapper ? '</>' : ''}\n    </For>`;\n  }\n\n  if (json.properties._text) {\n    let text = json.properties._text\n      // Convert HTML <br> to JSX-valid <br />\n      .replace(/<br\\s*>/g, '<br />');\n\n    let isInvalidJsx = text.includes('{') || text.includes('}');\n\n    if (text.includes('<') || text.includes('>')) {\n      // test if this can parse as jsx\n      try {\n        /**\n         * We intentionally use the typescript parser here because texts like \">\" will crash\n         * in the typescript parser but will not crash in the babel parser. The Prettier\n         * formatting that is run after JSX is generated also uses the typescript parser,\n         * so we want to make sure that doesn't crash.\n         */\n        check(`let _ = <>${text}</>;`, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n        isInvalidJsx = false;\n      } catch (e) {\n        isInvalidJsx = true;\n      }\n    }\n\n    if (isInvalidJsx) {\n      text = text\n        .replace(/>/g, '&gt;')\n        .replace(/</g, '&lt;')\n        .replace(/{/g, '&#123;')\n        .replace(/}/g, '&#125;')\n        .replace(/&/g, '&amp;');\n    }\n\n    if (insideJsx) {\n      return `${text}`;\n    } else {\n      return `<>${text}</>`;\n    }\n  }\n\n  if (json.bindings._text?.code) {\n    if (insideJsx) {\n      return `{${json.bindings._text.code}}`;\n    } else {\n      return `${json.bindings._text.code}`;\n    }\n  }\n\n  let str = '';\n\n  str += `<${json.name} `;\n\n  for (const key in json.properties) {\n    if (isInvalidJsxAttributeName(key)) {\n      console.warn('Skipping invalid attribute name:', key);\n      continue;\n    }\n    const value = (json.properties[key] || '').replace(/\"/g, '&quot;').replace(/\\n/g, '\\\\n');\n\n    if (!isValidAttributeName(key)) {\n      console.warn('Skipping invalid attribute name:', key);\n    } else {\n      str += ` ${key}=\"${value}\" `;\n    }\n  }\n  for (const key in json.bindings) {\n    if (isInvalidJsxAttributeName(key)) {\n      console.warn('Skipping invalid attribute name:', key);\n      continue;\n    }\n    const value = json.bindings[key]?.code as string;\n\n    if (!value || json.slots?.[key]) {\n      continue;\n    }\n\n    if (json.bindings[key]?.type === 'spread') {\n      str += ` {...(${json.bindings[key]?.code})} `;\n    } else if (checkIsEvent(key)) {\n      const { arguments: cusArgs = ['event'], async } = json.bindings[key]!;\n      const asyncKeyword = async ? 'async ' : '';\n      str += ` ${key}={${asyncKeyword}(${cusArgs.join(',')}) => ${value.replace(/\\s*;$/, '')}} `;\n    } else {\n      if (!isValidAttributeName(key)) {\n        console.warn('Skipping invalid attribute name:', key);\n      } else {\n        str += ` ${key}={${value}} `;\n      }\n    }\n  }\n\n  for (const key in json.slots) {\n    const value = json.slots[key];\n    str += ` ${key}={`;\n\n    /**\n     * Pass the empty array as foo={[]} could be treated differently than not\n     * passing the prop at all.\n     */\n    if (value.length === 0) {\n      str += '[]';\n    } else if (value.length > 1) {\n      str += '<>';\n    }\n    str += json.slots[key]\n      .map((item) => blockToMitosis(item, options, component, insideJsx))\n      .join('\\n');\n    if (value.length > 1) {\n      str += '</>';\n    }\n    str += `}`;\n  }\n\n  for (const key in json.blocksSlots) {\n    const value = json.blocksSlots[key];\n    traverse(value).forEach(function (v) {\n      if (isMitosisNode(v)) {\n        this.update(blockToMitosis(v, toMitosisOptions, component, insideJsx));\n      }\n    });\n\n    str += `${key}={${generateBlockSlotsCode(value)}}`;\n  }\n\n  if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n    return str + ' />';\n  }\n\n  // Self close by default if no children\n  if (!json.children.length) {\n    str += ' />';\n    return str;\n  }\n  str += '>';\n\n  if (json.children) {\n    str += json.children.map((item) => blockToMitosis(item, options, component, true)).join('\\n');\n  }\n\n  str += `</${json.name}>`;\n\n  return str;\n};\n\nconst generateBlockSlotsCode = (blockSlot: any) => {\n  let code = '';\n  // generate array props (foo=[...])\n  if (Array.isArray(blockSlot)) {\n    code += `[${blockSlot.map(generateBlockSlotsCode).join(',')}]`;\n    // generate object props (foo={{ ... }})\n  } else if (typeof blockSlot === 'object' && blockSlot !== null) {\n    code += '{';\n\n    for (const key in blockSlot) {\n      if (blockSlot.hasOwnProperty(key)) {\n        code += `${key}: ${generateBlockSlotsCode(blockSlot[key])},`;\n      }\n    }\n\n    code += '}';\n  } else {\n    code += blockSlot;\n  }\n\n  return code;\n};\n\nconst getRefsString = (json: MitosisComponent, refs = Array.from(getRefs(json))) => {\n  let str = '';\n\n  for (const ref of refs) {\n    const typeParameter = json['refs'][ref]?.typeParameter || '';\n    const argument = json['refs'][ref]?.argument || '';\n    str += `\\nconst ${ref} = useRef${typeParameter ? `<${typeParameter}>` : ''}(${argument});`;\n  }\n\n  return str;\n};\n\nconst mitosisCoreComponents = ['Show', 'For'];\n\nexport const componentToMitosis: TranspilerGenerator<Partial<ToMitosisOptions>> =\n  (toMitosisOptions = {}) =>\n  ({ component }) => {\n    const options: ToMitosisOptions = {\n      format: DEFAULT_FORMAT,\n      ...toMitosisOptions,\n    };\n\n    if (options.format === 'react') {\n      return componentToReact({\n        format: 'lite',\n        stateType: 'useState',\n        stylesType: 'emotion',\n        prettier: options.prettier,\n      })({ component });\n    }\n\n    let json = fastClone(component);\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    const domRefs = getRefs(component);\n    // grab refs not used for bindings\n    const jsRefs = Object.keys(component.refs).filter((ref) => domRefs.has(ref));\n\n    const refs = [...jsRefs, ...Array.from(domRefs)];\n\n    mapRefs(json, (refName) => {\n      return `${refName}${domRefs.has(refName) ? `.current` : ''}`;\n    });\n\n    const addWrapper = json.children.length !== 1 || isRootTextNode(json);\n\n    const components = Array.from(getComponents(json));\n    const mitosisCoreComponents: string[] = [];\n    if (!options.nativeConditionals) {\n      mitosisCoreComponents.push('Show');\n    }\n    if (!options.nativeLoops) {\n      mitosisCoreComponents.push('For');\n    }\n\n    const mitosisComponents = components.filter((item) => mitosisCoreComponents.includes(item));\n    const otherComponents = components.filter((item) => !mitosisCoreComponents.includes(item));\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    const hasState = checkHasState(component);\n\n    const needsMitosisCoreImport = Boolean(hasState || refs.length || mitosisComponents.length);\n\n    const stringifiedUseMetadata = json5.stringify(component.meta.useMetadata);\n\n    // TODO: smart only pull in imports as needed\n    let str = dedent`\n    ${\n      !needsMitosisCoreImport\n        ? ''\n        : `import { ${!hasState ? '' : 'useStore, '} ${\n            !refs.length ? '' : 'useRef, '\n          } ${mitosisComponents.join(', ')} } from '@builder.io/mitosis';`\n    }\n    ${!otherComponents.length ? '' : `import { ${otherComponents.join(',')} } from '@components';`}\n    ${json.types ? json.types.join('\\n') : ''}\n\n    ${renderPreComponent({\n      explicitImportFileExtension: options.explicitImportFileExtension,\n      component: json,\n      target: 'mitosis',\n    })}\n\n    ${\n      stringifiedUseMetadata && stringifiedUseMetadata !== '{}'\n        ? `${HOOKS.METADATA}(${stringifiedUseMetadata})`\n        : ''\n    }\n\n    export default function ${component.name}(props) {\n      ${!hasState ? '' : `const state = useStore(${getStateObjectStringFromComponent(json)});`}\n      ${getRefsString(json, refs)}\n\n      ${json.hooks.onMount.map((hook) => `onMount(() => { ${hook.code} })`)}\n\n      ${!json.hooks.onUnMount?.code ? '' : `onUnMount(() => { ${json.hooks.onUnMount.code} })`}\n\n      ${json.style ? `useStyle(\\`${json.style}\\`)` : ''}\n\n      return ${options.returnArray ? '[' : '('}${addWrapper ? '<>' : ''}\n        ${json.children\n          .map((item) => blockToMitosis(item, options, component, addWrapper))\n          .join('\\n')}\n        ${addWrapper ? '</>' : ''}${options.returnArray ? ']' : ')'}\n    }\n\n  `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n          ],\n        });\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str, JSON.stringify(json, null, 2));\n        }\n        throw err;\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/mitosis/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/mitosis/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToMitosisOptions extends BaseTranspilerOptions {\n  format: 'react' | 'legacy';\n  nativeConditionals?: boolean;\n  nativeLoops?: boolean;\n  returnArray?: boolean;\n}\n\nexport type MitosisMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/qwik/component-generator.ts",
    "content": "import { ToQwikOptions } from '@/generators/qwik/types';\nimport { convertTypeScriptToJS } from '@/helpers/babel-transform';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { getOnEventHandlerName, processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { transformImportPath } from '@/helpers/render-imports';\nimport { replaceIdentifiers, replaceStateIdentifier } from '@/helpers/replace-identifiers';\nimport { checkHasState } from '@/helpers/state';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { format } from 'prettier/standalone';\nimport {\n  MitosisPlugin,\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { addPreventDefault } from './helpers/add-prevent-default';\nimport { stableInject } from './helpers/stable-inject';\nimport { StateInit, emitStateMethodsAndRewriteBindings, emitUseStore } from './helpers/state';\nimport { renderJSXNodes } from './jsx';\nimport { File, SrcBuilder, arrowFnBlock, invoke } from './src-generator';\n\nError.stackTraceLimit = 9999;\n\nconst DEBUG = false;\n\nconst PLUGINS: MitosisPlugin[] = [\n  () => ({\n    json: {\n      post: (json) => {\n        addPreventDefault(json);\n\n        return json;\n      },\n    },\n  }),\n  processOnEventHooksPlugin({ setBindings: false, includeRootEvents: false }),\n  CODE_PROCESSOR_PLUGIN((codeType, json) => {\n    switch (codeType) {\n      case 'types':\n        return (c) => c;\n      case 'bindings':\n      case 'state':\n      case 'context-set':\n      case 'hooks':\n      case 'hooks-deps':\n      case 'hooks-deps-array':\n      case 'properties':\n      case 'dynamic-jsx-elements':\n        // update signal getters to have `.value`\n        return (code, k) => {\n          // `ref` should not update the signal value access\n          if (k === 'ref') {\n            return code;\n          }\n          Object.keys(json.refs).forEach((ref) => {\n            code = replaceIdentifiers({\n              code,\n              from: ref,\n              to: (x) => (x === ref ? `${x}.value` : `${ref}.value.${x}`),\n            });\n          });\n          // update signal getters to have `.value`\n          return replaceStateIdentifier((name) => {\n            const state = json.state[name];\n            switch (state?.type) {\n              case 'getter':\n                return `${name}.value`;\n\n              case 'function':\n              case 'method':\n              case 'property':\n              case undefined:\n                return `state.${name}`;\n            }\n          })(code);\n        };\n    }\n  }),\n];\n\nconst DEFAULT_OPTIONS: ToQwikOptions = {\n  plugins: PLUGINS,\n};\n\nexport const componentToQwik: TranspilerGenerator<ToQwikOptions> =\n  (userOptions = {}) =>\n  ({ component: _component, path }): string => {\n    // Make a copy we can safely mutate, similar to babel's toolchain\n    let component = fastClone(_component);\n\n    const options = initializeOptions({\n      target: 'qwik',\n      component,\n      defaults: DEFAULT_OPTIONS,\n      userOptions: userOptions,\n    });\n\n    component = runPreJsonPlugins({ json: component, plugins: options.plugins });\n    component = runPostJsonPlugins({ json: component, plugins: options.plugins });\n\n    const isTypeScript = !!options.typescript;\n    const file = new File(\n      component.name + (isTypeScript ? '.ts' : '.js'),\n      {\n        isPretty: true,\n        isJSX: true,\n        isTypeScript: isTypeScript,\n        isModule: true,\n        isBuilder: false,\n      },\n      '@builder.io/qwik',\n      '',\n    );\n    try {\n      emitImports(file, component);\n      emitTypes(file, component);\n      emitExports(file, component);\n      const metadata = component.meta.useMetadata;\n      const isLightComponent: boolean = metadata?.qwik?.component?.isLight || false;\n      const mutable: string[] = metadata?.qwik?.mutable || [];\n\n      const imports: Record<string, string> = metadata?.qwik?.imports || {};\n      Object.keys(imports).forEach((key) => file.import(imports[key], key));\n\n      const state: StateInit = emitStateMethodsAndRewriteBindings(file, component, metadata);\n      const hasState = checkHasState(component);\n\n      let css: string | null = null;\n\n      const emitStore = () =>\n        hasState && emitUseStore({ file, stateInit: state, isDeep: metadata?.qwik?.hasDeepStore });\n\n      const componentFn = arrowFnBlock(\n        ['props'],\n        [\n          function (this: SrcBuilder) {\n            if (metadata?.qwik?.setUseStoreFirst) emitStore();\n            css = emitUseStyles(file, component);\n            emitUseComputed(file, component);\n            emitUseContext(file, component);\n            emitUseRef(file, component);\n            if (!metadata?.qwik?.setUseStoreFirst) emitStore();\n            emitUseOn(file, component);\n            emitUseContextProvider(file, component);\n            emitUseClientEffect(file, component);\n            emitUseMount(file, component);\n            emitUseTask(file, component);\n\n            emitJSX(file, component, mutable);\n          },\n        ],\n        [(component.propsTypeRef || 'any') + (isLightComponent ? '&{key?:any}' : '')],\n      );\n      file.src.const(\n        component.name,\n        isLightComponent\n          ? componentFn\n          : invoke(file.import(file.qwikModule, 'component$'), [componentFn]),\n        true,\n        true,\n      );\n      file.exportDefault(component.name);\n      emitStyles(file, css);\n      DEBUG && file.exportConst('COMPONENT', JSON.stringify(component));\n      let sourceFile = file.toString();\n      sourceFile = runPreCodePlugins({\n        json: component,\n        code: sourceFile,\n        plugins: options.plugins,\n      });\n      sourceFile = runPostCodePlugins({\n        json: component,\n        code: sourceFile,\n        plugins: options.plugins,\n      });\n      return sourceFile;\n    } catch (e) {\n      console.error(e);\n      throw e;\n    }\n  };\n\nfunction emitExports(file: File, component: MitosisComponent) {\n  Object.keys(component.exports || {}).forEach((key) => {\n    const exportObj = component.exports![key]!;\n    const code = exportObj.code.startsWith('export ') ? exportObj.code : `export ${exportObj.code}`;\n    file.src.emit(code);\n  });\n}\n\nfunction emitUseClientEffect(file: File, component: MitosisComponent) {\n  component.hooks.onMount.forEach((onMount) => {\n    const code = onMount.code;\n    const hookToUse = onMount.onSSR ? 'useTask$' : 'useVisibleTask$';\n    file.src.emit(file.import(file.qwikModule, hookToUse).localName, '(()=>{', code, '});');\n  });\n}\n\nfunction emitUseMount(file: File, component: MitosisComponent) {\n  if (component.hooks.onInit) {\n    const code = component.hooks.onInit.code;\n    file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(()=>{', code, '});');\n  }\n}\n\nfunction emitUseTask(file: File, component: MitosisComponent) {\n  if (component.hooks.onUpdate) {\n    component.hooks.onUpdate.forEach((onUpdate) => {\n      file.src.emit(file.import(file.qwikModule, 'useTask$').localName, '(({track})=>{');\n      emitTrackExpressions(file.src, onUpdate.deps);\n      file.src.emit(convertTypeScriptToJS(onUpdate.code));\n      file.src.emit('});');\n    });\n  }\n}\n\nfunction emitTrackExpressions(src: SrcBuilder, deps?: string) {\n  if (!deps) {\n    return;\n  }\n\n  const dependencies = deps.substring(1, deps.length - 1).split(',');\n  dependencies.forEach((dep) => {\n    src.emit(`track(() => ${dep});`);\n  });\n}\n\nfunction emitJSX(file: File, component: MitosisComponent, mutable: string[]) {\n  const directives = new Map();\n  const handlers = new Map<string, string>();\n  const styles = new Map();\n  const parentSymbolBindings = {};\n  if (file.options.isPretty) {\n    file.src.emit('\\n\\n');\n  }\n  file.src.emit(\n    'return ',\n    renderJSXNodes(\n      file,\n      directives,\n      handlers,\n      component.children,\n      styles,\n      null,\n      parentSymbolBindings,\n    ),\n  );\n}\n\nfunction emitUseContextProvider(file: File, component: MitosisComponent) {\n  Object.entries(component.context.set).forEach(([_ctxKey, context]) => {\n    file.src.emit(\n      `${file.import(file.qwikModule, 'useContextProvider').localName}(${context.name}, `,\n    );\n\n    if (context.ref) {\n      file.src.emit(`${context.ref}`);\n    } else {\n      file.src.emit(`${file.import(file.qwikModule, 'useStore').localName}({`);\n      for (const [prop, propValue] of Object.entries(context.value || {})) {\n        file.src.emit(`${prop}: `);\n        switch (propValue?.type) {\n          case 'getter':\n            file.src.emit(`(()=>{\n            ${extractGetterBody(propValue.code)}\n          })()`);\n            break;\n\n          case 'function':\n          case 'method':\n            throw new Error('Qwik: Functions are not supported in context');\n\n          case 'property':\n            file.src.emit(stableInject(propValue.code));\n            break;\n        }\n        file.src.emit(',');\n      }\n      file.src.emit('})');\n    }\n    file.src.emit(');');\n  });\n}\n\nfunction emitUseContext(file: File, component: MitosisComponent) {\n  Object.keys(component.context.get).forEach((ctxKey) => {\n    const context = component.context.get[ctxKey];\n    file.src.emit(\n      'const ',\n      ctxKey,\n      '=',\n      file.import(file.qwikModule, 'useContext').localName,\n      '(',\n      context.name,\n      ');',\n    );\n  });\n}\n\nfunction emitUseOn(file: File, component: MitosisComponent) {\n  component.hooks.onEvent.forEach((hook) => {\n    const eventName = `\"${hook.eventName}\"`;\n\n    if (hook.isRoot) {\n      const wrappedHandlerFn = `${file.import(file.qwikModule, '$').localName}((${\n        hook.eventArgName\n      }, ${hook.elementArgName}) => {\n        ${hook.code}\n      }) as Parameters<typeof useOn>[1]`; // this type hack is needed until https://github.com/BuilderIO/qwik/issues/5398 is fixed\n      file.src.emit(\n        file.import(file.qwikModule, 'useOn').localName,\n        `(${eventName}, ${wrappedHandlerFn});`,\n      );\n    } else {\n      file.src.emit(\n        file.import(file.qwikModule, 'useVisibleTask$').localName,\n        `(() => {\n          ${hook.refName}.value?.addEventListener(${eventName}, ${getOnEventHandlerName(hook)});\n          return () => ${\n            hook.refName\n          }.value?.removeEventListener(${eventName}, ${getOnEventHandlerName(hook)});\n        })  \n        `,\n      );\n    }\n  });\n}\n\nfunction emitUseRef(file: File, component: MitosisComponent) {\n  Object.keys(component.refs).forEach((refKey) => {\n    file.src.emit(\n      `const `,\n      refKey,\n      '=',\n      file.import(file.qwikModule, 'useSignal').localName,\n      `${file.options.isTypeScript ? '<Element>' : ''}();`,\n    );\n  });\n}\n\nfunction emitUseStyles(file: File, component: MitosisComponent): string {\n  const css = collectCss(component, { prefix: component.name });\n  if (css) {\n    file.src.emit(file.import(file.qwikModule, 'useStylesScoped$').localName, '(STYLES);');\n    if (file.options.isPretty) {\n      file.src.emit('\\n\\n');\n    }\n  }\n  return css;\n}\n\nfunction emitStyles(file: File, css: string | null) {\n  if (!css) {\n    return;\n  }\n\n  if (file.options.isPretty) {\n    file.src.emit('\\n\\n');\n    try {\n      css = format(css, {\n        parser: 'css',\n        plugins: [\n          // To support running in browsers\n          require('prettier/parser-postcss'),\n        ],\n      });\n    } catch (e) {\n      throw new Error(\n        e +\n          '\\n' +\n          '========================================================================\\n' +\n          css +\n          '\\n\\n========================================================================',\n      );\n    }\n  }\n  file.exportConst('STYLES', '`\\n' + css.replace(/`/g, '\\\\`') + '`\\n');\n}\n\nfunction emitTypes(file: File, component: MitosisComponent) {\n  if (file.options.isTypeScript) {\n    component.types?.forEach((t) => file.src.emit(t, '\\n'));\n  }\n}\n\nfunction emitImports(file: File, component: MitosisComponent) {\n  // <SELF> is used for self-referencing within the file.\n  file.import('<SELF>', component.name);\n  component.imports?.forEach((i) => {\n    const importPath = transformImportPath({\n      target: 'qwik',\n      theImport: i,\n      preserveFileExtensions: false,\n      explicitImportFileExtension: false,\n    });\n    Object.keys(i.imports).forEach((key) => {\n      const keyValue = i.imports[key]!;\n      file.import(importPath, keyValue, key);\n    });\n  });\n}\n\nfunction extractGetterBody(code: string): string {\n  const start = code.indexOf('{');\n  const end = code.lastIndexOf('}');\n  return code.substring(start + 1, end).trim();\n}\n\nfunction emitUseComputed(file: File, component: MitosisComponent) {\n  for (const [key, stateValue] of Object.entries(component.state)) {\n    switch (stateValue?.type) {\n      case 'getter':\n        file.src.const(`\n          ${key} = ${file.import(file.qwikModule, 'useComputed$').localName}(() => {\n            ${extractGetterBody(stateValue.code)}\n          })\n        `);\n        continue;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/component.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport {\n  compileAwayBuilderComponentsFromTree,\n  components as compileAwayComponents,\n} from '../../plugins/compile-away-builder-components';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\nimport { DIRECTIVES } from './directives';\nimport { renderHandlers } from './helpers/handlers';\nimport { stableJSONserialize } from './helpers/stable-serialize';\nimport { CssStyles, collectStyles, renderStyles } from './helpers/styles';\nimport { renderJSXNodes } from './jsx';\nimport {\n  EmitFn,\n  File,\n  SrcBuilder,\n  SrcBuilderOptions,\n  arrowFnValue,\n  invoke,\n  quote,\n} from './src-generator';\n\nexport type QwikOptions = {\n  qwikLib?: string;\n  qrlPrefix?: string;\n  output?: 'ts' | 'cjs' | 'mjs';\n  jsx?: boolean;\n  minify?: boolean;\n};\n\nexport interface FileSet {\n  high: File;\n  med: File;\n  low: File;\n}\n\nexport function createFileSet(options: QwikOptions = {}): FileSet {\n  const opts: Required<QwikOptions> = {\n    qwikLib: '@builder.io/qwik',\n    qrlPrefix: './',\n    output: 'ts',\n    minify: false,\n    jsx: true,\n    ...options,\n  };\n  const extension = (opts.output == 'mjs' ? 'js' : opts.output) + (opts.jsx ? 'x' : '');\n  const srcOptions: SrcBuilderOptions = {\n    isPretty: !opts.minify,\n    isModule: opts.output != 'cjs',\n    isTypeScript: opts.output == 'ts',\n    isJSX: opts.jsx,\n    isBuilder: true,\n  };\n  const fileSet = {\n    high: new File('high.' + extension, srcOptions, opts.qwikLib, opts.qrlPrefix),\n    med: new File('med.' + extension, srcOptions, opts.qwikLib, opts.qrlPrefix),\n    low: new File('low.' + extension, srcOptions, opts.qwikLib, opts.qrlPrefix),\n  };\n  Object.defineProperty(fileSet, 'CommonStyles', {\n    enumerable: false,\n    value: { styles: new Map<string, CssStyles>() as any, symbolName: null },\n  });\n  return fileSet;\n}\n\nfunction getCommonStyles(fileSet: FileSet): {\n  styles: Map<string, CssStyles>;\n  symbolName: string | null;\n} {\n  return (fileSet as any)['CommonStyles'];\n}\n\nexport function addComponent(\n  fileSet: FileSet,\n  component: MitosisComponent,\n  opts: { isRoot?: boolean; shareStyles?: boolean } = {},\n) {\n  const _opts = { isRoot: false, shareStyles: false, ...opts };\n  compileAwayBuilderComponentsFromTree(component, {\n    ...compileAwayComponents,\n    // A set of components that should not be compiled away because they are implemented as runtime components.\n    Image: undefined!,\n    CoreButton: undefined!,\n  });\n  addBuilderBlockClass(component.children);\n  const componentName = component.name;\n  const handlers = renderHandlers(fileSet.high, componentName, component.children);\n  // If the component has no handlers, than it is probably static\n  // and so it is unlikely to be re-rendered on the client, therefore\n  // put it in a low priority bucket.\n  const isStatic = Array.from(handlers.keys()).reduce(\n    (p, v) => p && v.indexOf('state') == -1,\n    true,\n  );\n  const onRenderFile = isStatic ? fileSet.low : fileSet.med;\n  const componentFile = fileSet.med;\n  const styles = _opts.shareStyles ? getCommonStyles(fileSet).styles : new Map<string, CssStyles>();\n  collectStyles(component.children, styles);\n  let useStyles: EmitFn = () => null;\n  if (styles.size) {\n    if (_opts.shareStyles) {\n      if (_opts.isRoot) {\n        const symbolName = componentName + 'Styles';\n        getCommonStyles(fileSet).symbolName = symbolName;\n        useStyles = generateStyles(onRenderFile, fileSet.low, symbolName, false);\n      }\n    } else {\n      const symbolName = componentName + 'Styles';\n      onRenderFile.exportConst(symbolName, renderStyles(styles));\n      useStyles = generateStyles(onRenderFile, onRenderFile, symbolName, true);\n    }\n  }\n  if (component.meta.cssCode) {\n    const symbolName = componentName + 'UsrStyles';\n    onRenderFile.exportConst(symbolName, stableJSONserialize(component.meta.cssCode));\n    useStyles = ((fns: EmitFn[]) =>\n      function (this: SrcBuilder) {\n        fns.forEach((fn) => fn.apply(this));\n      })([useStyles, generateStyles(onRenderFile, onRenderFile, symbolName, false)]);\n  }\n  const directives: Map<string, string> = new Map();\n  let rootChildren = component.children;\n  addComponentOnMount(\n    onRenderFile,\n    function (this: SrcBuilder) {\n      return this.emit(\n        'return ',\n        renderJSXNodes(onRenderFile, directives, handlers, rootChildren, styles, null, {}),\n        ';',\n      );\n    },\n    componentName,\n    component,\n    useStyles,\n  );\n  componentFile.exportConst(\n    componentName,\n    invoke(\n      componentFile.import(componentFile.qwikModule, 'componentQrl'),\n      [generateQrl(componentFile, onRenderFile, componentName + 'OnMount')],\n      ['any', 'any'],\n    ),\n  );\n\n  directives.forEach((code, name) => {\n    fileSet.med.import(fileSet.med.qwikModule, 'h');\n    fileSet.med.exportConst(name, code, true);\n  });\n  fileSet.low.exportConst('__proxyMerge__', DIRECTIVES['__proxyMerge__'], true);\n  fileSet.med.exportConst('__proxyMerge__', DIRECTIVES['__proxyMerge__'], true);\n  fileSet.high.exportConst('__proxyMerge__', DIRECTIVES['__proxyMerge__'], true);\n}\n\nfunction generateStyles(fromFile: File, dstFile: File, symbol: string, scoped: boolean): EmitFn {\n  return function (this: SrcBuilder) {\n    if (this.file.options.isPretty) {\n      this.emit('\\n\\n');\n    }\n    this.emit(\n      invoke(fromFile.import(fromFile.qwikModule, scoped ? 'useStylesScopedQrl' : 'useStylesQrl'), [\n        generateQrl(fromFile, dstFile, symbol),\n      ]),\n      ';',\n    );\n    if (this.file.options.isPretty) {\n      this.emit('\\n\\n');\n    }\n  };\n}\n\nfunction addBuilderBlockClass(children: MitosisNode[]) {\n  children.forEach((child) => {\n    const props = child.properties;\n    if (props['builder-id']) {\n      props.class = (props.class ? props.class + ' ' : '') + 'builder-block';\n    }\n  });\n}\n\nexport function renderUseLexicalScope(file: File) {\n  return function (this: SrcBuilder) {\n    if (this.file.options.isBuilder) {\n      return this.emit(\n        'const [s,l]=',\n        file.import(file.qwikModule, 'useLexicalScope').localName,\n        '();',\n        'const state=__proxyMerge__(s,l);',\n      );\n    } else {\n      return this.emit(\n        'const state=',\n        file.import(file.qwikModule, 'useLexicalScope').localName,\n        '()[0]',\n      );\n    }\n  };\n}\n\nexport function addCommonStyles(fileSet: FileSet) {\n  const { styles, symbolName } = getCommonStyles(fileSet);\n  const onRenderFile = fileSet.low;\n  if (symbolName) {\n    onRenderFile.exportConst(symbolName, renderStyles(styles));\n  }\n}\n\nfunction addComponentOnMount(\n  componentFile: File,\n  onRenderEmit: EmitFn,\n  componentName: string,\n  component: MitosisComponent,\n  useStyles: EmitFn,\n) {\n  const inputInitializer: any[] = [];\n  if (component.inputs) {\n    component.inputs.forEach((input) => {\n      input.defaultValue !== undefined &&\n        inputInitializer.push(\n          'if(!state.hasOwnProperty(\"',\n          input.name,\n          '\"))state.',\n          input.name,\n          '=',\n          stableJSONserialize(input.defaultValue),\n          ';',\n        );\n    });\n  }\n  componentFile.exportConst(componentName + 'OnMount', function (this: SrcBuilder) {\n    this.emit(\n      arrowFnValue(['p'], () =>\n        this.emit(\n          '{',\n          'const s=',\n          componentFile.import(componentFile.qwikModule, 'useStore').localName,\n          '(()=>{',\n          'const state=Object.assign({},structuredClone(typeof __STATE__===\"object\"&&__STATE__[p.serverStateId]),p);',\n          ...inputInitializer,\n          inlineCode(stringifySingleScopeOnMount(component)),\n          'return state;',\n          '},{deep:true});',\n          'const l={};',\n          'const state=__proxyMerge__(s,l);',\n          useStyles,\n          onRenderEmit,\n          ';}',\n        ),\n      ),\n    );\n  });\n}\n\nfunction inlineCode(code: string | undefined) {\n  return function (this: SrcBuilder) {\n    if (code) {\n      // HACK: remove the return value as it is not the state we are creating.\n      code = code\n        .trim()\n        .replace(/return main\\(\\);?$/, '')\n        .trim();\n      this.emit(code, ';');\n    }\n  };\n}\n\nfunction generateQrl(\n  fromFile: File,\n  dstFile: File,\n  componentName: string,\n  capture: string[] = [],\n): any {\n  return invoke(fromFile.import(fromFile.qwikModule, 'qrl'), [\n    dstFile.toQrlChunk(),\n    quote(componentName),\n    `[${capture.join(',')}]`,\n  ]);\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/directives.ts",
    "content": "import { getForArguments } from '@/helpers/nodes/for';\nimport { ForNode, MitosisNode } from '@/types/mitosis-node';\nimport { minify } from '../helpers/minify';\nimport { SrcBuilder, iteratorProperty } from './src-generator';\n\nexport const DIRECTIVES: Record<\n  string,\n  string | ((node: MitosisNode, blockFn: () => void) => void)\n> = {\n  Show: (node: MitosisNode, blockFn: () => void) =>\n    function (this: SrcBuilder) {\n      const expr = node.bindings.when?.code;\n      const elseBlockFn = (blockFn as { else?: () => void }).else;\n      this.jsxExpression(() => {\n        this.emit(expr, '?');\n        blockFn();\n        this.emit(':');\n        if (elseBlockFn) {\n          elseBlockFn();\n        } else {\n          this.emit('null');\n        }\n      });\n    },\n  For: (_node: MitosisNode, blockFn: () => void) =>\n    function (this: SrcBuilder) {\n      const node = _node as ForNode;\n      const expr = node.bindings.each?.code!;\n      this.jsxExpression(() => {\n        const forArgs = getForArguments(node);\n        const forName = forArgs[0];\n        this.emit('(', expr, '||[]).map(');\n\n        this.isBuilder && this.emit('((');\n\n        this.emit('(', forArgs, ') => {');\n\n        if (this.isBuilder) {\n          this.emit(\n            'const l={...this,',\n            iteratorProperty(expr),\n            ':',\n            forName,\n            '==null?{}:',\n            forName,\n            ',',\n            () =>\n              forArgs.forEach((arg) => {\n                this.emit(arg, ':', arg, ',');\n              }),\n            '};',\n          );\n          this.emit('const state = __proxyMerge__(s,l);');\n        }\n        this.emit('return(');\n        blockFn();\n        this.emit(');}');\n        this.isBuilder && this.emit(').bind(l))');\n        this.emit(')');\n      });\n    },\n  Image: minify`${Image}`,\n  CoreButton: minify`${CoreButton}`,\n  __passThroughProps__: minify`${__passThroughProps__}`,\n  __proxyMerge__: minify`${__proxyMerge__}`,\n};\n\ndeclare const h: (name: string, props: Record<string, any>, children?: any[]) => any;\n\ninterface ImageProps {\n  altText?: string;\n  image?: string;\n  href?: string;\n  height?: number;\n  width?: number;\n  builderBlock?: any;\n  attributes?: any;\n  sizes?: string;\n  srcsetSizes?: string;\n  srcset?: string;\n  backgroundSize?: string;\n  backgroundPosition?: string;\n  fitContent?: boolean;\n  aspectRatio?: number;\n  lazy?: boolean;\n  class?: string;\n  children?: any[];\n  noWebp?: boolean;\n}\n\nexport function Image(props: ImageProps) {\n  let jsx: any[] = props.children || [];\n  let image = props.image;\n  if (image) {\n    const isBuilderIoImage = !!(image || '').match(/\\.builder\\.io/) && !props.noWebp;\n    const isPixel = props.builderBlock?.id.startsWith('builder-pixel-');\n    const imgProps = {\n      src: props.image,\n      style:\n        `object-fit:${props.backgroundSize || 'cover'};object-position:${\n          props.backgroundPosition || 'center'\n        };` + (props.aspectRatio ? 'position:absolute;height:100%;width:100%;top:0;left:0' : ''),\n      sizes: props.sizes,\n      alt: props.altText,\n      role: !props.altText ? 'presentation' : undefined,\n      loading: isPixel ? 'eager' : 'lazy',\n      srcset: undefined as string | undefined,\n    };\n    const qwikBugWorkaround = (imgProps: any) =>\n      Object.keys(imgProps).forEach(\n        (k) => (imgProps as any)[k] === undefined && delete (imgProps as any)[k],\n      );\n    qwikBugWorkaround(imgProps);\n    if (isBuilderIoImage) {\n      const webpImage = updateQueryParam(image, 'format', 'webp');\n      const srcset = ['100', '200', '400', '800', '1200', '1600', '2000']\n        .concat(props.srcsetSizes ? String(props.srcsetSizes).split(' ') : [])\n        .map((size) => {\n          return updateQueryParam(webpImage, 'width', size) + ' ' + size + 'w';\n        })\n        .concat(tryAppendWidth(image))\n        .join(', ');\n      imgProps.srcset = srcset;\n      jsx = jsx = [\n        h('picture', {}, [\n          h('source', { type: 'image/webp', srcset: srcset }),\n          h('img', imgProps, jsx),\n        ]),\n      ];\n    } else {\n      jsx = [h('img', imgProps, jsx)];\n    }\n    if (props.aspectRatio && !(props.fitContent && props.children && props.children.length)) {\n      const sizingDiv = h('div', {\n        class: 'builder-image-sizer',\n        style: `width:100%;padding-top:${\n          (props.aspectRatio || 1) * 100\n        }%;pointer-events:none;font-size:0`,\n      });\n      jsx.push(sizingDiv);\n    }\n  }\n  const children = props.children ? [jsx].concat(props.children) : [jsx];\n  return h(\n    props.href ? 'a' : 'div',\n    __passThroughProps__({ href: props.href, class: props.class }, props),\n    children,\n  );\n\n  function updateQueryParam(uri = '', key: string, value: string) {\n    const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n    const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n    if (uri.match(re)) {\n      return uri.replace(re, '$1' + key + '=' + encodeURIComponent(value) + '$2');\n    }\n\n    return uri + separator + key + '=' + encodeURIComponent(value);\n  }\n\n  function tryAppendWidth(url: string) {\n    const match = url.match(/[?&]width=(\\d+)/);\n    const width = match && match[1];\n    if (width) {\n      return [url + ' ' + width + 'w'];\n    }\n    return [];\n  }\n}\n\nfunction __passThroughProps__(\n  dstProps: Record<string, any>,\n  srcProps: Record<string, any>,\n): Record<string, any> {\n  for (const key in srcProps) {\n    if (\n      Object.prototype.hasOwnProperty.call(srcProps, key) &&\n      ((key.startsWith('on') && key.endsWith('$')) || key == 'style')\n    ) {\n      (dstProps as any)[key] = (srcProps as any)[key];\n    }\n  }\n  return dstProps;\n}\n\nfunction CoreButton(props: {\n  text?: string;\n  link?: string;\n  class?: string;\n  openInNewTab?: string;\n  tagName$: string;\n}) {\n  const hasLink = !!props.link;\n  const hProps = {\n    dangerouslySetInnerHTML: props.text || '',\n    href: props.link,\n    target: props.openInNewTab ? '_blank' : '_self',\n    class: props.class,\n  };\n  return h(hasLink ? 'a' : props.tagName$ || 'span', __passThroughProps__(hProps, props));\n}\n\nfunction __proxyMerge__(state: any, local: any) {\n  return new Proxy(state, {\n    get: (obj: any, prop: any) => {\n      if (local && prop in local) {\n        return local[prop];\n      } else {\n        return state[prop];\n      }\n    },\n    set: (obj: any, prop: any, value: any) => {\n      obj[prop] = value;\n      return true;\n    },\n  });\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/add-prevent-default.ts",
    "content": "import { checkIsEvent } from '@/helpers/event-handlers';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport traverse from 'neotraverse/legacy';\n\n/**\n * Find event handlers that explicitly call .preventDefault() and\n * add preventdefault:event\n * https://qwik.builder.io/tutorial/events/preventdefault\n */\nexport function addPreventDefault(json: MitosisComponent) {\n  traverse(json).forEach((node) => {\n    if (isMitosisNode(node)) {\n      if (node.bindings) {\n        for (const key of Object.keys(node.bindings)) {\n          if (checkIsEvent(key)) {\n            if (node.bindings[key]?.code.includes('.preventDefault()')) {\n              const event = key.slice(2).toLowerCase();\n              node.properties['preventdefault:' + event] = '';\n              node.bindings[key]!.code = node.bindings[key]!.code.replace(\n                /.*?\\.preventDefault\\(\\);?/,\n                '',\n              ).trim();\n            }\n          }\n        }\n      }\n    }\n  });\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/convert-method-to-function.ts",
    "content": "import type { MethodMap } from './state';\n\nexport function convertMethodToFunction(\n  code: string,\n  properties: MethodMap,\n  lexicalArgs: string[],\n): string {\n  const out: string[] = [];\n  let idx = 0;\n  let lastIdx = idx;\n  let end = code.length;\n  let mode: Mode = Mode.code;\n  let braceDepth = 0;\n  let stringEndBraceDepth = -1;\n  let stringEndBraceDepthQueue: number[] = [];\n  let lastCh = null;\n  while (idx < end) {\n    const ch = code.charCodeAt(idx++);\n    switch (mode) {\n      case Mode.code:\n        if (ch === QUOTE_DOUBLE) {\n          mode = Mode.stringDouble;\n        } else if (ch === QUOTE_SINGLE) {\n          mode = Mode.stringSingle;\n        } else if (ch === QUOTE_BACK_TICK) {\n          mode = Mode.stringTemplate;\n        } else if (ch === OPEN_BRACE) {\n          braceDepth++;\n        } else if (lastCh == FORWARD_SLASH && ch == FORWARD_SLASH) {\n          mode = Mode.commentSingleline;\n        } else if (lastCh == FORWARD_SLASH && ch == STAR) {\n          mode = Mode.commentMultiline;\n        } else if (ch === CLOSE_BRACE) {\n          braceDepth--;\n          if (braceDepth === stringEndBraceDepth) {\n            stringEndBraceDepth = stringEndBraceDepthQueue.pop()!;\n            mode = Mode.stringTemplate;\n          }\n        } else if (isWord(ch, code, idx, 'this') || isWord(ch, code, idx, 'state')) {\n          idx--;\n          flush();\n          consumeIdent();\n          if (code.charCodeAt(idx) == DOT) {\n            idx++;\n            const propEndIdx = findIdentEnd();\n            const identifier = code.substring(idx, propEndIdx);\n            const propType = properties[identifier];\n            if (propType) {\n              const isGetter = code.charCodeAt(propEndIdx) !== OPEN_PAREN;\n              lastIdx = idx = propEndIdx + (isGetter ? 0 : 1);\n              if (isGetter) {\n                if (propType === 'method') {\n                  out.push(identifier, `.bind(null,${lexicalArgs.join(',')})`);\n                } else {\n                  out.push(identifier, `(${lexicalArgs.join(',')})`);\n                }\n              } else {\n                out.push(identifier, `(${lexicalArgs.join(',')},`);\n              }\n            } else {\n              flush();\n            }\n          }\n        }\n        break;\n      case Mode.commentSingleline:\n        if (ch == EOL) mode = Mode.code;\n        break;\n      case Mode.commentMultiline:\n        if (lastCh == STAR && ch == FORWARD_SLASH) mode = Mode.code;\n        break;\n      case Mode.stringSingle:\n        if (lastCh !== BACKSLASH && ch == QUOTE_SINGLE) mode = Mode.code;\n        break;\n      case Mode.stringDouble:\n        if (lastCh !== BACKSLASH && ch == QUOTE_DOUBLE) mode = Mode.code;\n        break;\n      case Mode.stringTemplate:\n        if (lastCh !== BACKSLASH && ch == QUOTE_BACK_TICK) {\n          mode = Mode.code;\n        } else if (lastCh === DOLLAR && ch == OPEN_BRACE) {\n          mode = Mode.code;\n          stringEndBraceDepthQueue.push(stringEndBraceDepth);\n          stringEndBraceDepth = braceDepth;\n          braceDepth++;\n        }\n        break;\n    }\n    lastCh = ch;\n  }\n  flush();\n  return out.join('');\n\n  function flush() {\n    out.push(code.substring(lastIdx, idx));\n    lastIdx = idx;\n  }\n\n  function findIdentEnd(): number {\n    let scanIdx = idx;\n    while (isIdentCh(code.charCodeAt(scanIdx)) && scanIdx < end) {\n      scanIdx++;\n    }\n    return scanIdx;\n  }\n\n  function consumeIdent() {\n    while (isIdentCh(code.charCodeAt(idx))) {\n      idx++;\n    }\n  }\n}\n\nconst enum Mode {\n  code = 'code', // {code: true}\n  stringSingle = 'stringSingle', // 'text'\n  stringDouble = 'stringDouble', // 'text'\n  stringTemplate = 'stringTemplate', // `text`\n  commentSingleline = 'commentSingleline', // // comment\n  commentMultiline = 'commentMultiline', // /* ... */\n}\n\nfunction isIdentCh(ch: number): boolean {\n  return (\n    (CHAR_0 <= ch && ch <= CHAR_9) ||\n    (CHAR_a <= ch && ch <= CHAR_z) ||\n    (CHAR_A <= ch && ch <= CHAR_Z) ||\n    ch === UNDERSCORE ||\n    ch === DOLLAR\n  );\n}\n\nfunction isWord(ch: number, code: string, idx: number, word: string) {\n  if (ch !== word.charCodeAt(0)) return false;\n  for (let i = 1; i < word.length; i++) {\n    if (code.charCodeAt(idx + i - 1) !== word.charCodeAt(i)) {\n      return false;\n    }\n  }\n  if (isIdentCh(code.charCodeAt(idx + word.length - 1))) {\n    return false;\n  }\n  return true;\n}\n\nconst QUOTE_DOUBLE = '\"'.charCodeAt(0);\nconst QUOTE_SINGLE = \"'\".charCodeAt(0);\nconst QUOTE_BACK_TICK = '`'.charCodeAt(0);\nconst BACKSLASH = `\\\\`.charCodeAt(0);\nconst FORWARD_SLASH = `/`.charCodeAt(0);\nconst EOL = `\\n`.charCodeAt(0);\nconst STAR = `*`.charCodeAt(0);\nconst CHAR_0 = `0`.charCodeAt(0);\nconst CHAR_9 = `9`.charCodeAt(0);\nconst CHAR_a = `a`.charCodeAt(0);\nconst CHAR_z = `z`.charCodeAt(0);\nconst CHAR_A = `A`.charCodeAt(0);\nconst CHAR_Z = `Z`.charCodeAt(0);\nconst UNDERSCORE = `_`.charCodeAt(0);\nconst DOLLAR = `$`.charCodeAt(0);\nconst DOT = `.`.charCodeAt(0);\nconst OPEN_PAREN = '('.charCodeAt(0);\nconst OPEN_BRACE = '{'.charCodeAt(0);\nconst CLOSE_BRACE = '}'.charCodeAt(0);\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/handlers.ts",
    "content": "import { checkIsEvent } from '@/helpers/event-handlers';\nimport { MitosisNode } from '../../../types/mitosis-node';\nimport { renderUseLexicalScope } from '../component';\nimport { arrowFnBlock, EmitFn, File, SrcBuilder } from '../src-generator';\n\nconst IIF_START = '(() => {';\nconst IIF_END = '})()';\nfunction extractJSBlock(binding: any): string | null {\n  if (typeof binding == 'string') {\n    if (\n      binding.startsWith('{') &&\n      binding.endsWith('}') &&\n      !binding.startsWith('{\"') &&\n      !binding.endsWith('\"}')\n    ) {\n      return binding.substring(1, binding.length - 2);\n    } else if (binding.startsWith(IIF_START) && binding.endsWith(IIF_END)) {\n      return binding.substring(IIF_START.length, binding.length - IIF_END.length - 1);\n    }\n  }\n  return null;\n}\n\nexport function renderHandlers(\n  file: File,\n  componentName: string,\n  children: MitosisNode[],\n): Map<string, string> {\n  let id = 0;\n  const map = new Map<string, string>();\n  const nodes = [...children];\n  while (nodes.length) {\n    const node = nodes.shift()!;\n    const bindings = node.bindings;\n    for (const key in bindings) {\n      if (Object.prototype.hasOwnProperty.call(bindings, key)) {\n        const { code: binding } = bindings[key]!;\n        if (binding != null) {\n          if (isEventName(key)) {\n            let block = extractJSBlock(binding) || binding;\n            const symbol = `${componentName}_${key}_${id++}`;\n            map.set(binding, symbol);\n            renderHandler(file, symbol, block);\n          }\n        }\n      }\n    }\n    nodes.push(...node.children);\n  }\n  return map;\n}\n\nfunction renderHandler(file: File, symbol: string, code: string) {\n  const body: (string | EmitFn)[] = [code];\n  const shouldRenderStateRestore = code.indexOf('state') !== -1;\n  if (shouldRenderStateRestore) {\n    body.unshift(renderUseLexicalScope(file));\n  }\n  file.exportConst(symbol, function (this: SrcBuilder) {\n    this.emit([arrowFnBlock(['event'], body)]);\n  });\n}\n\nfunction isEventName(name: string) {\n  return checkIsEvent(name) && name.charAt(2).toUpperCase() == name.charAt(2);\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/stable-inject.ts",
    "content": "/**\n * Similar to our `stableJSONSerialize` function, except that it does not stringify the values: it injects them as-is.\n * This is needed for our `MitosisState` values which are JS expressions stored as strings.\n */\nexport function stableInject(obj: any): string {\n  const output: string[] = [];\n  _serialize(output, obj);\n  return output.join('');\n}\n\nfunction _serialize(output: string[], obj: any) {\n  if (obj == null) {\n    output.push('null');\n  } else if (typeof obj === 'object') {\n    if (Array.isArray(obj)) {\n      output.push('[');\n      let sep = '';\n      for (let i = 0; i < obj.length; i++) {\n        output.push(sep);\n        _serialize(output, obj[i]);\n        sep = ',';\n      }\n      output.push(']');\n    } else {\n      const keys = Object.keys(obj).sort();\n      output.push('{');\n      let sep = '';\n      for (const key of keys) {\n        const value = obj[key];\n        if (value !== undefined) {\n          output.push(sep);\n          output.push(JSON.stringify(key));\n          output.push(':');\n          _serialize(output, value);\n          sep = ',';\n        }\n      }\n      output.push('}');\n    }\n  } else {\n    output.push(obj);\n  }\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/stable-serialize.ts",
    "content": "/**\n * Same as JSON.stringify, but sorts keys ensuring that the output is stable across runs.\n * @param obj\n * @returns JSON serialized string\n */\nexport function stableJSONserialize(obj: any): string {\n  const output: string[] = [];\n  _serialize(output, obj);\n  return output.join('');\n}\n\nfunction _serialize(output: string[], obj: any) {\n  if (obj == null) {\n    output.push('null');\n  } else if (typeof obj === 'object') {\n    if (Array.isArray(obj)) {\n      output.push('[');\n      let sep = '';\n      for (let i = 0; i < obj.length; i++) {\n        output.push(sep);\n        _serialize(output, obj[i]);\n        sep = ',';\n      }\n      output.push(']');\n    } else {\n      const keys = Object.keys(obj).sort();\n      output.push('{');\n      let sep = '';\n      for (const key of keys) {\n        const value = obj[key];\n        if (value !== undefined) {\n          output.push(sep);\n          output.push(JSON.stringify(key));\n          output.push(':');\n          _serialize(output, value);\n          sep = ',';\n        }\n      }\n      output.push('}');\n    }\n  } else {\n    output.push(JSON.stringify(obj));\n  }\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/state.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { convertTypeScriptToJS } from '../../../helpers/babel-transform';\nimport { ComponentMetadata } from '../../../types/metadata';\nimport { MitosisComponent } from '../../../types/mitosis-component';\nimport { File } from '../src-generator';\nimport { convertMethodToFunction } from './convert-method-to-function';\nimport { stableInject } from './stable-inject';\n\n/**\n * Stores getters and initialization map.\n */\nexport type StateInit = [\n  StateValues,\n  /**\n   * Set of state initializers.\n   */\n  ...string[],\n];\n\nexport type PropertyName = string;\nexport type StateValue = string;\n\n/**\n * Map of getters that need to be rewritten to function invocations.\n */\nexport type StateValues = Record<PropertyName, StateValue>;\n\n/**\n * @param file\n * @param stateInit\n */\nexport function emitUseStore({\n  file,\n  stateInit,\n  isDeep,\n}: {\n  file: File;\n  stateInit: StateInit;\n  isDeep?: boolean;\n}) {\n  const state = stateInit[0];\n  const hasState = state && Object.keys(state).length > 0;\n  if (hasState) {\n    file.src.emit('const state=', file.import(file.qwikModule, 'useStore').localName);\n    if (file.options.isTypeScript) {\n      file.src.emit('<any>');\n    }\n    const fnArgs = [stableInject(state), isDeep ? '{deep: true}' : undefined].filter(Boolean);\n    file.src.emit(`(${fnArgs});`);\n  } else {\n    // TODO hack for now so that `state` variable is defined, even though it is never read.\n    file.src.emit(`const state${file.options.isTypeScript ? ': any' : ''} = {};`);\n  }\n}\n\nfunction emitStateMethods(\n  file: File,\n  componentState: MitosisComponent['state'],\n  lexicalArgs: string[],\n): StateInit {\n  const stateValues: StateValues = {};\n  const stateInit: StateInit = [stateValues];\n  const methodMap = getStateMethodsAndGetters(componentState);\n  for (const key in componentState) {\n    const stateValue = componentState[key];\n\n    switch (stateValue?.type) {\n      case 'method':\n      case 'function':\n        let code = stateValue.code;\n        const isAsync = code.startsWith('async');\n        if (!isAsync) {\n          let prefixIdx = 0;\n          if (stateValue.type === 'function') {\n            prefixIdx += 'function '.length;\n          }\n          code = code.substring(prefixIdx);\n          code = convertMethodToFunction(code, methodMap, lexicalArgs).replace(\n            '(',\n            `(${lexicalArgs.join(',')},`,\n          );\n        }\n        const functionName = code.split(/\\(/)[0];\n        if (!file.options.isTypeScript) {\n          // Erase type information\n          code = convertTypeScriptToJS(code);\n        }\n        file.exportConst(isAsync ? key : functionName, isAsync ? code : 'function ' + code, true);\n        continue;\n\n      case 'property':\n        stateValues[key] = stateValue.code;\n        continue;\n    }\n  }\n\n  return stateInit;\n}\n\nexport function emitStateMethodsAndRewriteBindings(\n  file: File,\n  component: MitosisComponent,\n  metadata?: ComponentMetadata,\n): StateInit {\n  const lexicalArgs = getLexicalScopeVars(component);\n  const state: StateInit = emitStateMethods(file, component.state, lexicalArgs);\n  const methodMap = getStateMethodsAndGetters(component.state);\n  rewriteCodeExpr(component, methodMap, lexicalArgs, metadata?.qwik?.replace);\n  return state;\n}\n\nconst checkIsObjectWithCodeBlock = (obj: any): obj is { code: string } => {\n  return typeof obj == 'object' && obj?.code && typeof obj.code === 'string';\n};\n\nexport function getLexicalScopeVars(component: MitosisComponent) {\n  const newLocal = [\n    'props',\n    'state',\n\n    // all `useComputed` values\n    ...Object.keys(component.state).filter((k) => component.state[k]!.type === 'getter'),\n\n    ...Object.keys(component.refs),\n    ...Object.keys(component.context.get),\n  ];\n\n  return newLocal;\n}\n\nfunction rewriteCodeExpr(\n  component: MitosisComponent,\n  methodMap: MethodMap,\n  lexicalArgs: string[],\n  replace: Record<string, string> | undefined = {},\n) {\n  traverse(component).forEach(function (item) {\n    if (!checkIsObjectWithCodeBlock(item)) {\n      return;\n    }\n\n    let code = convertMethodToFunction(item.code, methodMap, lexicalArgs);\n\n    Object.keys(replace).forEach((key) => {\n      code = code.replace(key, replace[key]);\n    });\n\n    item.code = code;\n  });\n}\n\nexport type MethodMap = Record<string, 'method' | 'getter'>;\n\nexport function getStateMethodsAndGetters(state: MitosisComponent['state']): MethodMap {\n  const methodMap: MethodMap = {};\n  Object.keys(state).forEach((key) => {\n    const stateVal = state[key];\n    if (stateVal?.type === 'getter' || stateVal?.type === 'method') {\n      methodMap[key] = stateVal.type;\n    }\n  });\n  return methodMap;\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/helpers/styles.ts",
    "content": "import json5 from 'json5';\nimport { MitosisNode } from '../../..';\nimport { dashCase } from '../../../helpers/dash-case';\nimport { SrcBuilder } from '../src-generator';\n\nexport type CssStyles = {\n  CLASS_NAME: string;\n} & Record<string, string>;\n\nexport function collectStyles(\n  children: MitosisNode[],\n  styleMap: Map<string, CssStyles>,\n): Map<string, CssStyles> {\n  const nodes = [...children];\n  while (nodes.length) {\n    const child = nodes.shift()!;\n    nodes.push(...child.children);\n    const css = child.bindings.css?.code;\n    if (css && typeof css == 'string') {\n      const value = { CLASS_NAME: 'c' + hashCode(css), ...json5.parse(css) };\n      styleMap.set(css, value);\n    }\n  }\n  return styleMap;\n}\n\nfunction hashCode(text: string) {\n  var hash = 0,\n    i,\n    chr;\n  if (text.length === 0) return hash;\n  for (i = 0; i < text.length; i++) {\n    chr = text.charCodeAt(i);\n    hash = (hash << 5) - hash + chr;\n    hash |= 0; // Convert to 32bit integer\n  }\n  return Number(Math.abs(hash)).toString(36);\n}\n\nexport function renderStyles(styles: Map<string, CssStyles>) {\n  return function (this: SrcBuilder) {\n    this.emit('`');\n    const mediaStyles: (string | object)[] = [];\n    styles.forEach((styles) => {\n      this.emit('.', styles.CLASS_NAME, /*'.🏷️�', WS,*/ '{');\n      for (const key in styles) {\n        if (key !== 'CLASS_NAME' && Object.prototype.hasOwnProperty.call(styles, key)) {\n          const value = styles[key];\n          if (value && typeof value == 'object') {\n            mediaStyles.push(styles.CLASS_NAME, key, value);\n          } else {\n            this.emit(dashCase(key), ':', value, ';');\n          }\n        }\n      }\n      this.emit('}');\n    });\n    while (mediaStyles.length) {\n      const className: string = mediaStyles.shift() as string;\n      const mediaKey: string = mediaStyles.shift() as string;\n      const mediaObj: Record<string, string> = mediaStyles.shift() as Record<string, string>;\n      this.emit(mediaKey, '{.', className, /*'.🏷️�',*/ '{');\n      for (const key in mediaObj) {\n        if (Object.prototype.hasOwnProperty.call(mediaObj, key)) {\n          const value = mediaObj[key];\n          this.emit(dashCase(key), ':', value, ';');\n        }\n      }\n      this.emit('}}');\n    }\n    this.emit('`');\n  };\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/index.ts",
    "content": "export { addCommonStyles, addComponent, createFileSet } from './component';\nexport type { FileSet, QwikOptions } from './component';\nexport { componentToQwik } from './component-generator';\nexport { File } from './src-generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/qwik/jsx.ts",
    "content": "import { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { Binding, MitosisNode } from '@/types/mitosis-node';\nimport { DIRECTIVES } from './directives';\nimport { CssStyles } from './helpers/styles';\nimport { File, SrcBuilder, invoke, lastProperty, quote } from './src-generator';\n\n/**\n * Convert a Mitosis nodes to a JSX nodes.\n *\n * @param file File into which the output will be written to.\n * @param directives Store for directives which we came across so that they can be imported.\n * @param handlers A set of handlers which we came across so that they can be rendered\n * @param children A list of children to convert to JSX\n * @param styles Store for styles which we came across so that they can be rendered.\n * @param key Key to be used for the node if needed\n * @param parentSymbolBindings A set of bindings from parent to be written into the child.\n * @param root True if this is the root JSX, and may need a Fragment wrapper.\n * @returns\n */\nexport function renderJSXNodes(\n  file: File,\n  directives: Map<string, string>,\n  handlers: Map<string, string>,\n  children: MitosisNode[],\n  styles: Map<string, CssStyles>,\n  key: string | null | undefined,\n  parentSymbolBindings: Record<string, string>,\n  root = true,\n): any {\n  return function (this: SrcBuilder) {\n    const srcBuilder = this;\n    if (children.length == 0) return;\n    if (root) this.emit('(');\n    const needsFragment =\n      root &&\n      (children.length > 1 ||\n        (children.length && (isInlinedDirective(children[0]) || isTextNode(children[0]))));\n    file.import(file.qwikModule, 'h');\n    const fragmentSymbol = file.import(file.qwikModule, 'Fragment');\n    if (needsFragment) {\n      this.jsxBeginFragment(fragmentSymbol);\n    }\n    children.forEach((child) => {\n      if (isEmptyTextNode(child)) return;\n      if (isTextNode(child)) {\n        const text = child.properties._text;\n        const textExpr = child.bindings._text?.code;\n        if (typeof text == 'string') {\n          this.isJSX ? this.emit(text) : this.jsxTextBinding(quote(text));\n        } else if (typeof textExpr == 'string') {\n          this.isJSX ? this.emit('{', textExpr, '}') : this.jsxTextBinding(textExpr);\n        }\n      } else if (isSlotProjection(child)) {\n        this.file.import(this.file.qwikModule, 'Slot');\n        this.jsxBegin('Slot', {}, {});\n        this.jsxEnd('Slot');\n      } else {\n        let childName = child.name;\n        const directive = DIRECTIVES[childName];\n        if (typeof directive == 'function') {\n          const blockFn = mitosisNodeToRenderBlock(child.children);\n          const meta = child.meta;\n          Object.keys(meta).forEach((key) => {\n            const value = meta[key];\n            if (isMitosisNode(value)) {\n              (blockFn as any)[key] = mitosisNodeToRenderBlock([value]);\n            }\n          });\n          this.emit(directive(child, blockFn));\n          !this.isJSX && this.emit(',');\n          includedHelperDirectives(directive.toString(), directives);\n        } else {\n          if (childName === 'Slot') {\n            this.file.import(this.file.qwikModule, 'Slot');\n          } else {\n            if (typeof directive == 'string') {\n              directives.set(childName, directive);\n              includedHelperDirectives(directive, directives);\n              if (file.module !== 'med' && file.imports.hasImport(childName)) {\n                file.import('./med.js', childName);\n              }\n            }\n            if (isSymbol(childName)) {\n              // TODO(misko): We are hard coding './med.js' which is not right.\n              !file.imports.hasImport(childName) && file.import('./med.js', childName);\n              let exportedChildName = file.exports.get(childName);\n              if (exportedChildName) {\n                childName = exportedChildName;\n              }\n            }\n          }\n          let props: Record<string, any> = child.properties;\n          const css = child.bindings.css?.code;\n          const specialBindings: Record<string, any> = {};\n          if (css) {\n            props = { ...props };\n            const styleProps = styles.get(css)!;\n            const imageMaxWidth = childName == 'Image' && styleProps.maxWidth;\n            if (imageMaxWidth && imageMaxWidth.endsWith('px')) {\n              // special case for Images. We want to make sure that we include the maxWidth in a srcset\n              specialBindings.srcsetSizes = Number.parseInt(imageMaxWidth);\n            }\n            if (styleProps?.CLASS_NAME) {\n              props.class = addClass(styleProps.CLASS_NAME, props.class);\n            }\n          }\n          key = props['builder-id'] || key;\n          if (props.innerHTML) {\n            // Special case. innerHTML requires `key` in Qwik\n            props = {\n              key: key || 'default',\n              ...props,\n            };\n          }\n          const symbolBindings: Record<string, string> = {};\n          const bindings = rewriteHandlers(file, handlers, child.bindings, symbolBindings);\n          this.jsxBegin(childName, props, {\n            ...bindings,\n            ...parentSymbolBindings,\n            ...specialBindings,\n          });\n          renderJSXNodes(\n            file,\n            directives,\n            handlers,\n            child.children,\n            styles,\n            key,\n            symbolBindings,\n            false,\n          ).call(this);\n          this.jsxEnd(childName);\n        }\n      }\n    });\n    if (needsFragment) {\n      this.jsxEndFragment();\n    }\n    if (root) this.emit(')');\n\n    function mitosisNodeToRenderBlock(children: MitosisNode[]) {\n      return () => {\n        children = children.filter((c) => !isEmptyTextNode(c));\n        const childNeedsFragment =\n          children.length > 1 || (children.length && isTextNode(children[0]));\n        childNeedsFragment && srcBuilder.jsxBeginFragment(fragmentSymbol);\n        renderJSXNodes(file, directives, handlers, children, styles, null, {}, false).call(\n          srcBuilder,\n        );\n        childNeedsFragment && srcBuilder.jsxEndFragment();\n      };\n    }\n  };\n}\n\nfunction includedHelperDirectives(directive: string, directives: Map<string, string>) {\n  Array.from(directive.matchAll(/(__[\\w]+__)/g)).forEach((match) => {\n    const name = match[0];\n    const code = DIRECTIVES[name];\n    typeof code == 'string' && directives.set(name, code);\n  });\n}\n\nfunction isSymbol(name: string): boolean {\n  return (\n    name.charAt(0) === name.charAt(0).toUpperCase() &&\n    // we want to exclude any property access, as that can't be a symbol\n    !name.includes('.')\n  );\n}\n\nfunction addClass(className: string, existingClass: string | undefined): string {\n  return [className, ...(existingClass ? existingClass.split(' ') : [])].join(' ');\n}\n\nfunction isEmptyTextNode(child: MitosisNode) {\n  return child.properties._text?.trim() == '';\n}\n\nfunction isTextNode(child: MitosisNode) {\n  if (child.properties._text !== undefined) {\n    return true;\n  }\n  const code = child.bindings._text?.code;\n  if (code !== undefined && code !== 'props.children') {\n    return true;\n  }\n  return false;\n}\n\nfunction isSlotProjection(child: MitosisNode) {\n  return child.bindings._text?.code === 'props.children';\n}\n\n/**\n * Rewrites bindings:\n * - Remove `css`\n * - Rewrites event handles\n * - Extracts symbol bindings.\n *\n * @param file\n * @param handlers\n * @param bindings\n * @param symbolBindings Options record which will receive the symbol bindings\n * @returns\n */\nfunction rewriteHandlers(\n  file: File,\n  handlers: Map<string, string>,\n  bindings: {\n    [key: string]: Binding | undefined;\n  },\n  symbolBindings: Record<string, string>,\n): { [key: string]: Binding } {\n  const outBindings: { [key: string]: Binding } = {};\n  for (let key in bindings) {\n    if (Object.prototype.hasOwnProperty.call(bindings, key)) {\n      const bindingValue = bindings[key]!;\n      let bindingExpr: string = bindingValue.code;\n      const handlerBlock = handlers.get(bindingExpr);\n\n      if (key == 'css') {\n        continue;\n      } else if (handlerBlock) {\n        key = `${key}$`;\n        bindingExpr = invoke(file.import(file.qwikModule, 'qrl'), [\n          quote(file.qrlPrefix + 'high.js'),\n          quote(handlerBlock),\n          file.options.isBuilder ? '[s,l]' : '[state]',\n        ]) as any;\n      } else if (symbolBindings && key.startsWith('symbol.data.')) {\n        symbolBindings[lastProperty(key)] = bindingExpr;\n      } else if (key.startsWith('component.options.')) {\n        key = lastProperty(key);\n      }\n\n      outBindings[key] = {\n        ...bindingValue,\n        code: bindingExpr,\n      };\n    }\n  }\n  return outBindings;\n}\n\nfunction isInlinedDirective(node: MitosisNode) {\n  return (isMitosisNode(node) && node.name == 'Show') || node.name == 'For';\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/src-generator.ts",
    "content": "import parserTypeScript from 'prettier/parser-typescript';\nimport { format } from 'prettier/standalone';\n\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport { convertExportDefaultToReturn } from '../../parsers/builder';\nimport { stableJSONserialize } from './helpers/stable-serialize';\nexport interface SrcBuilderOptions {\n  isPretty: boolean;\n  isTypeScript: boolean;\n  isModule: boolean;\n  isJSX: boolean;\n  isBuilder: boolean;\n}\n\nexport type EmitFn = (this: SrcBuilder) => void;\n\nexport class File {\n  filename: string;\n  imports = new Imports();\n  options: SrcBuilderOptions;\n  src: SrcBuilder;\n  qwikModule: string;\n  qrlPrefix: string;\n  exports: Map<string, string> = new Map();\n\n  get module() {\n    return this.filename.substr(0, this.filename.lastIndexOf('.'));\n  }\n  get path() {\n    return this.filename;\n  }\n  get contents() {\n    return this.toString();\n  }\n\n  constructor(filename: string, options: SrcBuilderOptions, qwikModule: string, qrlPrefix: string) {\n    this.filename = filename;\n    this.options = options;\n    this.src = new SrcBuilder(this, this.options);\n    this.qwikModule = qwikModule;\n    this.qrlPrefix = qrlPrefix;\n  }\n\n  import(module: string, symbol: string, as?: string): Symbol {\n    return this.imports.get(module, symbol, as);\n  }\n\n  toQrlChunk() {\n    return quote(this.qrlPrefix + this.module + '.js');\n  }\n\n  exportConst(name: string, value?: any, locallyVisible = false) {\n    if (this.exports.has(name)) return;\n    this.exports.set(name, this.src.isModule ? name : 'exports.' + name);\n    this.src.const(name, value, true, locallyVisible);\n  }\n\n  exportDefault(symbolName: any) {\n    if (this.options.isPretty) {\n      this.src.emit('\\n\\n');\n    }\n    if (this.options.isModule) {\n      this.src.emit('export default ', symbolName, ';');\n    } else {\n      this.src.emit('module.exports=', symbolName, ';');\n    }\n  }\n\n  toString() {\n    const srcImports = new SrcBuilder(this, this.options);\n    const imports = this.imports.imports;\n    const modules = Array.from(imports.keys()).sort();\n    modules.forEach((module) => {\n      if (module == '<SELF>') return;\n      const symbolMap = imports.get(module)!;\n      const symbols = Array.from(symbolMap.values());\n      symbols.sort(symbolSort);\n      if (removeExt(module) !== removeExt(this.qrlPrefix + this.filename)) {\n        srcImports.import(module, symbols);\n      }\n    });\n    let source = srcImports.toString() + this.src.toString();\n    if (this.options.isPretty) {\n      try {\n        source = format(source, {\n          parser: 'typescript',\n          plugins: [\n            'prettier/parser-postcss',\n            parserTypeScript,\n            'prettier-plugin-organize-imports',\n          ],\n          htmlWhitespaceSensitivity: 'ignore',\n        });\n      } catch (e) {\n        throw new Error(\n          e +\n            '\\n' +\n            '========================================================================\\n' +\n            source +\n            '\\n\\n========================================================================',\n        );\n      }\n    }\n    return source;\n  }\n}\n\nfunction symbolSort(a: Symbol, b: Symbol) {\n  return a.importName < b.importName ? -1 : a.importName === b.importName ? 0 : 1;\n}\n\nfunction removeExt(filename: string): string {\n  const indx = filename.lastIndexOf('.');\n  return indx == -1 ? filename : filename.substr(0, indx);\n}\n\nexport class SrcBuilder {\n  file: File;\n  isTypeScript: boolean;\n  isModule: boolean;\n  isJSX: boolean;\n\n  buf: string[] = [];\n  jsxDepth: number = 0;\n  /**\n   * Used to signal that we are generating code for Builder.\n   *\n   * In builder the `<For/>` iteration places the value on the state.\n   */\n  isBuilder: any = false;\n\n  constructor(file: File, options: SrcBuilderOptions) {\n    this.file = file;\n    this.isTypeScript = options.isTypeScript;\n    this.isModule = options.isModule;\n    this.isJSX = options.isJSX;\n    this.isBuilder = options.isBuilder;\n  }\n\n  import(module: string, symbols: Symbol[]) {\n    if (this.isModule) {\n      this.emit('import');\n      if (symbols.length === 1 && symbols[0].importName === 'default') {\n        this.emit(' ', symbols[0].localName, ' ');\n      } else {\n        this.emit('{');\n        symbols.forEach((symbol) => {\n          if (symbol.importName === symbol.localName) {\n            this.emit(symbol.importName);\n          } else {\n            this.emit(symbol.importName, ' as ', symbol.localName);\n          }\n          this.emit(',');\n        });\n        this.emit('}');\n      }\n      this.emit('from', quote(module), ';');\n    } else {\n      symbols.forEach((symbol) => {\n        this.const(symbol.localName, function (this: SrcBuilder) {\n          this.emit(invoke('require', [quote(module)]));\n          if (symbol.importName !== 'default') {\n            this.emit('.', symbol.importName);\n          }\n        });\n      });\n    }\n    if (this.file.options.isPretty) {\n      this.emit('\\n\\n');\n    }\n    return this;\n  }\n\n  emit(...values: any[]) {\n    for (let i = 0; i < values.length; i++) {\n      const value = values[i];\n      if (typeof value == 'function') {\n        value.call(this);\n      } else if (value === null) {\n        this.push('null');\n      } else if (value === undefined) {\n        this.push('undefined');\n      } else if (typeof value == 'string') {\n        this.push(value);\n      } else if (typeof value == 'number') {\n        this.push(String(value));\n      } else if (typeof value == 'boolean') {\n        this.push(String(value));\n      } else if (Array.isArray(value)) {\n        this.emitList(value);\n      } else if (typeof value == 'object') {\n        this.emit('{');\n        let separator = false;\n        for (const key in value) {\n          if (Object.prototype.hasOwnProperty.call(value, key)) {\n            if (separator) {\n              this.emit(',');\n            }\n            this.emit(possiblyQuotePropertyName(key)).emit(':', value[key]);\n            separator = true;\n          }\n        }\n        this.emit('}');\n      } else {\n        throw new Error('Unexpected value: ' + value);\n      }\n    }\n    return this;\n  }\n\n  private push(value: string) {\n    if (\n      value.startsWith(')') ||\n      value.startsWith(':') ||\n      value.startsWith(']') ||\n      value.startsWith('}') ||\n      value.startsWith(',') ||\n      value.startsWith('?')\n    ) {\n      // clear last ',' or ';';\n      let index = this.buf.length - 1;\n      let ch: string = this.buf[index];\n      if (ch.endsWith(',') || ch.endsWith(';')) {\n        ch = ch.substring(0, ch.length - 1);\n        this.buf[index] = ch;\n      }\n    }\n    this.buf.push(value);\n  }\n\n  emitList(values: any[], sep: string = ',') {\n    let separator = false;\n    for (const value of values) {\n      if (separator) {\n        this.emit(sep);\n      }\n      this.emit(value);\n      separator = true;\n    }\n    return this;\n  }\n\n  const(name: string, value?: any, export_: boolean = false, locallyVisible: boolean = false) {\n    if (export_) {\n      this.emit(\n        this.isModule\n          ? 'export const '\n          : (locallyVisible ? 'const ' + name + '=' : '') + 'exports.',\n      );\n    } else {\n      this.emit('const ');\n    }\n    this.emit(name);\n    if (value !== undefined) {\n      this.emit('=', value);\n    }\n    this.emit(';');\n    return this;\n  }\n\n  type(def: string) {\n    if (this.isTypeScript) {\n      this.emit(':', def);\n    }\n    return this;\n  }\n\n  typeParameters(typeParameters: string[] | undefined) {\n    if (this.isTypeScript && typeParameters && typeParameters.length) {\n      this.emit('<', typeParameters, '>');\n    }\n  }\n\n  jsxExpression(expression: EmitFn) {\n    const previousJsxDepth = this.jsxDepth;\n    try {\n      if (previousJsxDepth) {\n        this.jsxDepth = 0;\n        this.isJSX && this.emit('{');\n      }\n      expression.apply(this);\n    } finally {\n      if (previousJsxDepth) {\n        this.isJSX && this.emit('}');\n      }\n      this.jsxDepth = previousJsxDepth;\n    }\n  }\n\n  jsxBegin(symbol: Symbol | string, props: Record<string, any>, bindings: Record<string, any>) {\n    this.jsxDepth++;\n    const self = this;\n    if (symbol == 'div' && ('href' in props || 'href' in bindings)) {\n      // HACK: if we contain href then we are `a` not `div`\n      symbol = 'a';\n    }\n    if (this.isJSX) {\n      this.emit('<' + symbol);\n    } else {\n      this.emit('h(', literalTagName(symbol), ',{');\n    }\n    for (const key in props) {\n      if (\n        Object.prototype.hasOwnProperty.call(props, key) &&\n        !ignoreKey(key) &&\n        !Object.prototype.hasOwnProperty.call(bindings, key)\n      ) {\n        emitJsxProp(key, quote(props[key]));\n      }\n    }\n    for (const rawKey in bindings) {\n      if (bindings[rawKey].type === 'spread') {\n        if (this.isJSX) {\n          this.emit('{...', bindings[rawKey].code, '}');\n        } else {\n          this.emit('...', bindings[rawKey].code);\n        }\n      } else if (Object.prototype.hasOwnProperty.call(bindings, rawKey) && !ignoreKey(rawKey)) {\n        let binding = bindings[rawKey];\n        binding =\n          binding && typeof binding == 'object' && 'code' in binding ? binding.code : binding;\n        if (rawKey === 'class' && props.class) {\n          // special case for classes as they can have both static and dynamic binding\n          binding = quote(props.class + ' ') + '+' + binding;\n        }\n        let key = lastProperty(rawKey);\n        if (isEvent(key)) {\n          key = key + '$';\n          binding = `${this.file.import(this.file.qwikModule, '$').localName}((event)=>${binding})`;\n        } else if (!binding && rawKey in props) {\n          binding = quote(props[rawKey]);\n        } else if (binding != null && binding === props[key]) {\n          // HACK: workaround for the fact that sometimes the `bindings` have string literals\n          // We assume that when the binding content equals prop content.\n          binding = quote(binding);\n        } else if (typeof binding == 'string' && isStatement(binding)) {\n          binding = iif(binding);\n        }\n        if (key === 'hide' || key === 'show') {\n          let [truthy, falsy] = key == 'hide' ? ['\"none\"', '\"inherit\"'] : ['\"inherit\"', '\"none\"'];\n          emitJsxProp('style', function (this: SrcBuilder) {\n            this.emit('{display:', binding, '?', truthy, ':', falsy, '}');\n          });\n        } else {\n          emitJsxProp(key, binding);\n        }\n      }\n    }\n    if (this.isJSX) {\n      if (!this.isSelfClosingTag(symbol)) {\n        this.emit('>');\n      }\n    } else {\n      this.emit('},');\n    }\n\n    function emitJsxProp(key: string, value: any) {\n      if (value) {\n        if (key === 'innerHTML') key = 'dangerouslySetInnerHTML';\n        if (key === 'dataSet') return; // ignore\n        if (self.isJSX) {\n          if (key.includes(':') && value === '\"\"') {\n            self.emit(' ', key);\n            return;\n          }\n          self.emit(' ', key, '=');\n          if (typeof value == 'string' && value.startsWith('\"') && value.endsWith('\"')) {\n            self.emit(value);\n          } else {\n            self.emit('{', value, '}');\n          }\n        } else {\n          self.emit(possiblyQuotePropertyName(key), ':', value, ',');\n        }\n      }\n    }\n  }\n\n  isSelfClosingTag(symbol: Symbol | string) {\n    return SELF_CLOSING_HTML_TAGS.has(String(symbol));\n  }\n\n  jsxEnd(symbol: Symbol | string) {\n    if (this.isJSX) {\n      if (this.isSelfClosingTag(symbol)) {\n        this.emit(' />');\n      } else {\n        this.emit('</', symbol, '>');\n      }\n    } else {\n      this.emit('),');\n    }\n    this.jsxDepth--;\n  }\n\n  jsxBeginFragment(symbol: Symbol) {\n    this.jsxDepth++;\n    if (this.isJSX) {\n      this.emit('<>');\n    } else {\n      this.emit('h(', symbol.localName, ',null,');\n    }\n  }\n  jsxEndFragment() {\n    this.jsxDepth--;\n    if (this.isJSX) {\n      this.emit('</>');\n    } else {\n      this.emit(')');\n    }\n  }\n\n  jsxTextBinding(exp: string) {\n    if (this.isJSX) {\n      this.emit('{', exp, '}');\n    } else {\n      this.emit(exp);\n    }\n  }\n\n  toString() {\n    return this.buf.join('');\n  }\n}\n\nfunction isEvent(name: string): boolean {\n  return checkIsEvent(name) && isUppercase(name.charAt(2)) && !name.endsWith('$');\n}\n\nfunction isUppercase(ch: string): boolean {\n  return ch == ch.toUpperCase();\n}\n\nexport class Symbol {\n  importName: string;\n  localName: string;\n  constructor(importName: string, localName: string) {\n    this.importName = importName;\n    this.localName = localName;\n  }\n}\n\nexport class Imports {\n  imports: Map<string, Map<string, Symbol>> = new Map();\n\n  get(moduleName: string, symbolName: string, asVar?: string) {\n    let importSymbols = this.imports.get(moduleName);\n    if (!importSymbols) {\n      importSymbols = new Map();\n      this.imports.set(moduleName, importSymbols);\n    }\n    let symbol = importSymbols.get(symbolName);\n    if (!symbol) {\n      symbol = new Symbol(symbolName, asVar || symbolName);\n      importSymbols.set(symbolName, symbol);\n    }\n    return symbol;\n  }\n\n  hasImport(localName: string): boolean {\n    for (const symbolMap of Array.from(this.imports.values())) {\n      for (const symbol of Array.from(symbolMap.values())) {\n        if (symbol.localName === localName) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n}\n\nfunction ignoreKey(key: string): boolean {\n  return (\n    key.startsWith('$') ||\n    key.startsWith('_') ||\n    key == 'code' ||\n    key == '' ||\n    key.indexOf('.') !== -1\n  );\n}\n\nfunction possiblyQuotePropertyName(key: string): any {\n  return /^\\w[\\w\\d]*$/.test(key) ? key : quote(key);\n}\n\nexport function quote(text: string) {\n  const string = stableJSONserialize(text);\n  // So \\u2028 is a line separator character and prettier treats it as such\n  // https://www.fileformat.info/info/unicode/char/2028/index.htm\n  // That means it can't be inside of a string, so we replace it with `\\\\u2028`.\n  // (see double `\\\\` vs `\\`)\n  const parts = string.split('\\u2028');\n  return parts.join('\\\\u2028');\n}\n\nexport function invoke(symbol: Symbol | string, args: any[], typeParameters?: string[]) {\n  return function (this: SrcBuilder) {\n    this.emit(typeof symbol == 'string' ? symbol : symbol.localName);\n    this.typeParameters(typeParameters);\n    this.emit('(', args, ')');\n  };\n}\n\nexport function arrowFnBlock(args: string[], statements: any[], argTypes?: string[]) {\n  return function (this: SrcBuilder) {\n    this.emit('(');\n    for (let i = 0; i < args.length; i++) {\n      const arg = args[i];\n      const type = argTypes && argTypes[i];\n      this.emit(arg);\n      if (type && this.file.options.isTypeScript) {\n        this.emit(':', type);\n      }\n      this.emit(',');\n    }\n    this.emit(')=>{').emitList(statements, ';').emit('}');\n  };\n}\n\nexport function arrowFnValue(args: string[], expression: any) {\n  return function (this: SrcBuilder) {\n    this.emit('(', args, ')=>', expression);\n  };\n}\n\nconst _virtual_index = '_virtual_index;';\nconst return_virtual_index = 'return _virtual_index;';\n\nexport function iif(code: any) {\n  if (!code) return;\n  code = code.trim();\n  if (code.endsWith(_virtual_index) && !code.endsWith(return_virtual_index)) {\n    code = code.substr(0, code.length - _virtual_index.length) + return_virtual_index;\n  }\n  if (code.indexOf('export') !== -1) {\n    code = convertExportDefaultToReturn(code);\n  }\n  return function (this: SrcBuilder) {\n    code && this.emit('(()=>{', code, '})()');\n  };\n}\n\nconst LOWER_CASE = 'a'.charCodeAt(0) - 1;\n\nfunction literalTagName(symbol: string | Symbol): string | Symbol {\n  if (\n    typeof symbol == 'string' &&\n    symbol.charCodeAt(0) > LOWER_CASE &&\n    symbol.indexOf('.') === -1\n  ) {\n    return quote(symbol);\n  }\n  return symbol;\n}\n\n/**\n * Returns `true` if the code is a statement (rather than expression).\n *\n * Code is an expression if it is a list of identifiers all connected with a valid separator\n * identifier: [a-z_$](a-z0-9_$)*\n * separator: [()[]{}.-+/*,]\n *\n * it is not 100% but a good enough approximation\n */\nexport function isStatement(code: string) {\n  // remove trailing `!` as it is used to mark a non-null assertion in TS\n  // it messes up the logic afterwards\n  if (code.endsWith('!')) {\n    code = code.substr(0, code.length - 1);\n  }\n\n  code = code.trim();\n  if (\n    (code.startsWith('(') && code.endsWith(')')) ||\n    (code.startsWith('{') && code.endsWith('}'))\n  ) {\n    // Code starting with `(` is most likely an IFF and hence is an expression.\n    return false;\n  }\n  const codeNoStrings = code.replace(STRING_LITERAL, 'STRING_LITERAL');\n  const identifiers = codeNoStrings.split(EXPRESSION_SEPARATORS);\n  const filteredIdentifiers = identifiers.filter((i) => {\n    i = i.trim();\n    return i && !i.match(EXPRESSION_IDENTIFIER);\n  });\n  return filteredIdentifiers.length !== 0;\n}\n\n// https://regexr.com/6cppf\nconst STRING_LITERAL = /([\"'`])((\\\\{2})*|((\\n|.)*?[^\\\\](\\\\{2})*))\\1/g;\n\n// https://regexr.com/6cpk4\nconst EXPRESSION_SEPARATORS = /[()\\[\\]{}.\\?:\\-+/*,|&]+/;\n\n// https://regexr.com/6cpka\nconst EXPRESSION_IDENTIFIER = /^\\s*[a-zA-Z0-9_$]+\\s*$/;\n\nexport function lastProperty(expr: string): string {\n  const parts = expr.split('.');\n  return parts[parts.length - 1];\n}\n\nexport function iteratorProperty(expr: string): string {\n  return lastProperty(expr) + 'Item';\n}\n"
  },
  {
    "path": "packages/core/src/generators/qwik/types.ts",
    "content": "import { Dictionary } from '@/helpers/typescript';\nimport { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToQwikOptions extends BaseTranspilerOptions {}\n\nexport type QwikMetadata = {\n  component?: {\n    isLight?: boolean;\n  };\n  setUseStoreFirst?: boolean;\n  hasDeepStore?: boolean;\n  mutable?: string[];\n  imports?: Dictionary<string>;\n  replace?: Record<string, string>;\n};\n"
  },
  {
    "path": "packages/core/src/generators/react/blocks.ts",
    "content": "import { checkIsEvent } from '@/helpers/event-handlers';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport isChildren from '@/helpers/is-children';\nimport { isRootTextNode } from '@/helpers/is-root-text-node';\nimport { isValidAttributeName } from '@/helpers/is-valid-attribute-name';\nimport { getForArguments } from '@/helpers/nodes/for';\nimport { isSlotProperty } from '@/helpers/slots';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { checkIsForNode, ForNode, MitosisNode } from '@/types/mitosis-node';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport {\n  closeFrag,\n  getFragment,\n  isFragmentWithKey,\n  openFrag,\n  processBinding,\n  wrapInFragment,\n} from './helpers';\nimport { updateStateSettersInCode } from './helpers/state';\nimport { ToReactOptions } from './types';\n\nconst NODE_MAPPERS: {\n  [key: string]: (\n    json: MitosisNode,\n    options: ToReactOptions,\n    component: MitosisComponent,\n    insideJsx: boolean,\n    parentSlots: any[],\n  ) => string;\n} = {\n  Slot(json, options, component, _insideJsx, parentSlots) {\n    const slotName = json.bindings.name?.code || json.properties.name;\n\n    const hasChildren = json.children.length;\n\n    const renderChildren = () => {\n      const childrenStr = json.children\n        ?.map((item) => blockToReact(item, options, component, true))\n        .join('\\n')\n        .trim();\n      /**\n       * Ad-hoc way of figuring out if the children defaultProp is:\n       * - a JSX element, e.g. `<div>foo</div>`\n       * - a JS expression, e.g. `true`, `false`\n       * - a string, e.g. `'Default text'`\n       *\n       * and correctly wrapping it in quotes when appropriate.\n       */\n      if (childrenStr.startsWith(`<`) && childrenStr.endsWith(`>`)) {\n        return childrenStr;\n      } else if (['false', 'true', 'null', 'undefined'].includes(childrenStr)) {\n        return childrenStr;\n      } else {\n        return `\"${childrenStr}\"`;\n      }\n    };\n\n    if (!slotName) {\n      // TODO: update MitosisNode for simple code\n      const key = Object.keys(json.bindings).find(Boolean);\n      if (key && parentSlots) {\n        parentSlots.push({ key, value: json.bindings[key]?.code });\n        return '';\n      }\n\n      const children = processBinding('props.children', options);\n      return `<>{${children} ${hasChildren ? `|| (${renderChildren()})` : ''}}</>`;\n    }\n\n    let slotProp = processBinding(slotName as string, options).replace('name=', '');\n\n    if (!slotProp.startsWith('props.')) {\n      slotProp = `props.${slotProp}`;\n    }\n\n    return `<>{${slotProp} ${hasChildren ? `|| (${renderChildren()})` : ''}}</>`;\n  },\n  Fragment(json, options, component) {\n    const wrap = isFragmentWithKey(json) || wrapInFragment(json) || isRootTextNode(json);\n    return `${wrap ? getFragment('open', options, json) : ''}${json.children\n      .map((item) => blockToReact(item, options, component, wrap))\n      .join('\\n')}${wrap ? getFragment('close', options, json) : ''}`;\n  },\n  For(_json, options, component, insideJsx) {\n    const json = _json as ForNode;\n    const wrap = wrapInFragment(json);\n    const forArguments = getForArguments(json).join(', ');\n    const expression = `${processBinding(\n      json.bindings.each?.code as string,\n      options,\n    )}?.map((${forArguments}) => (\n      ${wrap ? openFrag(options) : ''}${json.children\n      .filter(filterEmptyTextNodes)\n      .map((item) => blockToReact(item, options, component, wrap))\n      .join('\\n')}${wrap ? closeFrag(options) : ''}\n    ))`;\n    if (insideJsx) {\n      return `{${expression}}`;\n    } else {\n      return expression;\n    }\n  },\n  Show(json, options, component, insideJsx) {\n    const wrap =\n      wrapInFragment(json) ||\n      isRootTextNode(json) ||\n      component.children[0] === json ||\n      // when `<Show><For>...</For></Show>`, we need to wrap the For generated code in a fragment\n      // since it's a `.map()` call\n      (json.children.length === 1 && ['For', 'Show'].includes(json.children[0].name));\n\n    const wrapElse = !!(\n      json.meta.else &&\n      (wrapInFragment(json.meta.else as any) || checkIsForNode(json.meta.else as any))\n    );\n\n    const expression = `${processBinding(json.bindings.when?.code as string, options)} ? (\n      ${wrap ? openFrag(options) : ''}${json.children\n      .filter(filterEmptyTextNodes)\n      .map((item) => blockToReact(item, options, component, wrap))\n      .join('\\n')}${wrap ? closeFrag(options) : ''}\n    ) : ${\n      !json.meta.else\n        ? 'null'\n        : (wrapElse ? openFrag(options) : '') +\n          blockToReact(json.meta.else as any, options, component, wrapElse) +\n          (wrapElse ? closeFrag(options) : '')\n    }`;\n    if (insideJsx) {\n      return `{${expression}}`;\n    } else {\n      return expression;\n    }\n  },\n};\n\nconst ATTTRIBUTE_MAPPERS: { [key: string]: string } = {\n  spellcheck: 'spellCheck',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  for: 'htmlFor',\n};\n\n// TODO: Maybe in the future allow defining `string | function` as values\nconst BINDING_MAPPERS: {\n  [key: string]:\n    | string\n    | ((\n        key: string,\n        value: string,\n        options?: ToReactOptions,\n        isProperty?: boolean,\n      ) => [string, string]);\n} = {\n  ref(ref, value, options) {\n    if (options?.preact) {\n      return [ref, value];\n    }\n    const regexp = /(.+)?props\\.(.+)( |\\)|;|\\()?$/m;\n    if (regexp.test(value)) {\n      const match = regexp.exec(value);\n      const prop = match?.[2];\n      if (prop) {\n        return [ref, prop];\n      }\n    }\n    return [ref, value];\n  },\n  innerHTML(_key, value, _options, isProperty) {\n    const wrapChar = isProperty ? '\"' : '';\n    let useValue = value.replace(/\\s+/g, ' ');\n\n    if (isProperty) {\n      useValue = value.replace(/\"/g, '\\\\\"');\n    }\n    return ['dangerouslySetInnerHTML', `{__html: ${wrapChar}${useValue}${wrapChar}}`];\n  },\n  ...ATTTRIBUTE_MAPPERS,\n};\n\nconst NATIVE_EVENT_MAPPER: {\n  [key: string]: string;\n} = {\n  onClick: 'onPress',\n};\n\nexport const blockToReact = (\n  json: MitosisNode,\n  options: ToReactOptions,\n  component: MitosisComponent,\n  insideJsx: boolean,\n  parentSlots: any[] = [],\n) => {\n  const needsToRenderSlots: any[] = [];\n\n  if (NODE_MAPPERS[json.name]) {\n    return NODE_MAPPERS[json.name](json, options, component, insideJsx, parentSlots);\n  }\n\n  if (json.properties._text) {\n    const text = json.properties._text;\n    if (options.type === 'native' && text.trim().length) {\n      return `<Text>${text}</Text>`;\n    }\n    return text;\n  }\n\n  if (json.bindings._text?.code) {\n    const processed = processBinding(json.bindings._text.code, options);\n    if (\n      options.type === 'native' &&\n      !isChildren({ node: json }) &&\n      !isSlotProperty(json.bindings._text.code.split('.')[1] || '')\n    ) {\n      return `<Text>{${processed}}</Text>`;\n    }\n    return `{${processed}}`;\n  }\n\n  let str = '';\n\n  str += `<${json.name} `;\n\n  for (const key in json.properties) {\n    const value = (json.properties[key] || '').replace(/\"/g, '&quot;').replace(/\\n/g, '\\\\n');\n\n    // Handle src for Image\n    // Handle src for Image\n    if (json.name === 'Image' && key === 'src') {\n      let src;\n      const imageSource = json.properties.src;\n      if (imageSource) {\n        const isUrl = /^(http|https):\\/\\/[^ \"]+$/.test(imageSource);\n        src = isUrl ? `{ uri: '${imageSource}' }` : `require('${imageSource}')`;\n        str += `source={${src}} `;\n        continue; // Skip further processing for 'src' in Image\n      }\n    }\n\n    // Handle href for TouchableOpacity\n    if (json.name === 'TouchableOpacity' && key === 'href') {\n      const hrefValue = processBinding(value, options);\n      if (hrefValue) {\n        const onPress = `() => Linking.openURL(${JSON.stringify(hrefValue)})`;\n        str += ` onPress={${onPress}} `;\n      }\n      continue; // Skip further processing for 'href' in TouchableOpacity\n    }\n\n    // Ignore target for TouchableOpacity\n    if (json.name === 'TouchableOpacity' && key === 'target') {\n      continue; // Skip further processing for 'target' in TouchableOpacity\n    }\n\n    if (key === 'class') {\n      str = `${str.trim()} className=\"${value}\" `;\n    } else if (BINDING_MAPPERS[key]) {\n      const mapper = BINDING_MAPPERS[key];\n      if (typeof mapper === 'function') {\n        const [newKey, newValue] = mapper(key, value, options, true);\n        str += ` ${newKey}={${newValue}} `;\n      } else {\n        str += ` ${BINDING_MAPPERS[key]}=\"${value}\" `;\n      }\n    } else {\n      if (isValidAttributeName(key)) {\n        str += ` ${key}=\"${(value as string).replace(/\"/g, '&quot;')}\" `;\n      }\n    }\n  }\n\n  for (const key in json.bindings) {\n    // ignore duplicate slot attribute\n    if (json.slots?.[key]) {\n      continue;\n    }\n\n    const value = String(json.bindings[key]?.code);\n\n    if (key === 'css' && value.trim() === '{}') {\n      continue;\n    }\n\n    const useBindingValue = processBinding(value, options);\n\n    if (json.name === 'Image' && key === 'src') {\n      let src;\n      const imageSource = processBinding(value, options);\n      if (imageSource) {\n        src = `{ uri: ${imageSource} }`;\n        str += `source={${src}} `;\n        continue; // Skip further processing for 'src' in Image\n      }\n    }\n    // Handle href for TouchableOpacity\n    if (json.name === 'TouchableOpacity' && key === 'href') {\n      const hrefValue = processBinding(value, options);\n      if (hrefValue) {\n        const onPress = `() => Linking.openURL(${hrefValue})`;\n        str += ` onPress={${onPress}} `;\n        continue; // Skip further processing for 'href' in TouchableOpacity\n      }\n    }\n\n    // Ignore target for TouchableOpacity\n    if (json.name === 'TouchableOpacity' && key === 'target') {\n      continue; // Skip further processing for 'target' in TouchableOpacity\n    }\n    if (json.bindings[key]?.type === 'spread') {\n      str += ` {...(${value})} `;\n    } else if (checkIsEvent(key)) {\n      const asyncKeyword = json.bindings[key]?.async ? 'async ' : '';\n      const { arguments: cusArgs = ['event'] } = json.bindings[key]!;\n      const eventName = options.type === 'native' ? NATIVE_EVENT_MAPPER[key] || key : key;\n      str += ` ${eventName}={${asyncKeyword}(${cusArgs.join(',')}) => ${updateStateSettersInCode(\n        useBindingValue,\n        options,\n      )} } `;\n    } else if (key.startsWith('slot')) {\n      // <Component slotProjected={<AnotherComponent />} />\n      str += ` ${key}={${value}} `;\n    } else if (key === 'class') {\n      str += ` className={${useBindingValue}} `;\n    } else if (BINDING_MAPPERS[key]) {\n      const mapper = BINDING_MAPPERS[key];\n      if (typeof mapper === 'function') {\n        const [newKey, newValue] = mapper(key, useBindingValue, options);\n        str += ` ${newKey}={${newValue}} `;\n      } else {\n        if (useBindingValue === 'true') {\n          str += ` ${BINDING_MAPPERS[key]} `;\n        } else {\n          str += ` ${BINDING_MAPPERS[key]}={${useBindingValue}} `;\n        }\n      }\n    } else if (key === 'style' && options.type === 'native' && json.name === 'ScrollView') {\n      // React Native's ScrollView has a different prop for styles: `contentContainerStyle`\n      str += ` contentContainerStyle={${useBindingValue}} `;\n    } else {\n      if (isValidAttributeName(key)) {\n        if (useBindingValue === 'true') {\n          str += ` ${key} `;\n        } else {\n          str += ` ${key}={${useBindingValue}} `;\n        }\n      }\n    }\n  }\n\n  if (json.slots) {\n    for (const key in json.slots) {\n      const value = json.slots[key];\n      if (!value?.length) {\n        continue;\n      }\n      const reactComponents = value.map((node) => blockToReact(node, options, component, true));\n      const slotStringValue =\n        reactComponents.length === 1 ? reactComponents[0] : `<>${reactComponents.join('\\n')}</>`;\n      str += ` ${key}={${slotStringValue}} `;\n    }\n  }\n\n  if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n    return str + ' />';\n  }\n\n  // Self close by default if no children\n  if (!json.children.length) {\n    str += ' />';\n    return str;\n  }\n\n  // TODO: update MitosisNode for simple code\n  let childrenNodes = '';\n  if (json.children) {\n    childrenNodes = json.children\n      .map((item) => blockToReact(item, options, component, true, needsToRenderSlots))\n      .join('');\n  }\n  if (needsToRenderSlots.length) {\n    needsToRenderSlots.forEach(({ key, value }) => {\n      str += ` ${key}={${value}} `;\n    });\n  }\n  str = str.trim() + '>';\n\n  if (json.children) {\n    str += childrenNodes;\n  }\n\n  return str + `</${json.name}>`;\n};\n"
  },
  {
    "path": "packages/core/src/generators/react/generator.ts",
    "content": "import { getDefaultProps } from '@/generators/react/helpers/default-props';\nimport {\n  getOnEventHookComponentBody,\n  getOnInitHookComponentBody,\n  getOnMountComponentBody,\n  getOnUnMountComponentBody,\n  getOnUpdateComponentBody,\n} from '@/generators/react/helpers/hooks';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { createMitosisNode } from '@/helpers/create-mitosis-node';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getPropsRef } from '@/helpers/get-props-ref';\nimport { getRefs } from '@/helpers/get-refs';\nimport { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { gettersToFunctions } from '@/helpers/getters-to-functions';\nimport { handleMissingState } from '@/helpers/handle-missing-state';\nimport { isRootTextNode } from '@/helpers/is-root-text-node';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { checkIsDefined } from '@/helpers/nullable';\nimport { processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { processHttpRequests } from '@/helpers/process-http-requests';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { replaceNodes, replaceStateIdentifier } from '@/helpers/replace-identifiers';\nimport { stripNewlinesInStrings } from '@/helpers/replace-new-lines-in-strings';\nimport { checkHasState } from '@/helpers/state';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { collectStyledComponents } from '@/helpers/styles/collect-styled-components';\nimport { hasCss } from '@/helpers/styles/helpers';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { types } from '@babel/core';\nimport hash from 'hash-sum';\nimport json5 from 'json5';\nimport { format } from 'prettier/standalone';\nimport { hasContext } from '../helpers/context';\nimport { checkIfIsClientComponent } from '../helpers/rsc';\nimport { collectReactNativeStyles } from '../react-native';\nimport { blockToReact } from './blocks';\nimport {\n  closeFrag,\n  isReactForwardRef,\n  openFrag,\n  processTagReferences,\n  wrapInFragment,\n} from './helpers';\nimport {\n  getDefaultImport,\n  getReactVariantStateImportString,\n  getReactVariantStateString,\n  getUseStateCode,\n  processHookCode,\n  updateStateSetters,\n} from './helpers/state';\nimport { ToReactOptions } from './types';\n\nexport const contextPropDrillingKey = '_context';\n\n/**\n * If the root Mitosis component only has 1 child, and it is a `Show`/`For` node, then we need to wrap it in a fragment.\n * Otherwise, we end up with invalid React render code.\n */\nconst isRootSpecialNode = (json: MitosisComponent) =>\n  json.children.length === 1 && ['Show', 'For'].includes(json.children[0].name);\n\nconst getRefsString = (json: MitosisComponent, refs: string[], options: ToReactOptions) => {\n  let hasStateArgument = false;\n  let code = '';\n  const domRefs = getRefs(json);\n\n  for (const ref of refs) {\n    const typeParameter = json['refs'][ref]?.typeParameter || '';\n    // domRefs must have null argument\n    const argument = json['refs'][ref]?.argument || (domRefs.has(ref) ? 'null' : '');\n    hasStateArgument = /state\\./.test(argument);\n    code += `\\nconst ${ref} = useRef${\n      typeParameter && options.typescript ? `<${typeParameter}>` : ''\n    }(${processHookCode({\n      str: argument,\n      options,\n    })});`;\n  }\n\n  return [hasStateArgument, code];\n};\n\nfunction provideContext(json: MitosisComponent, options: ToReactOptions): string | void {\n  if (options.contextType === 'prop-drill') {\n    let str = '';\n    for (const key in json.context.set) {\n      const { name, ref, value } = json.context.set[key];\n      if (value) {\n        str += `\n          ${contextPropDrillingKey}.${name} = ${stringifyContextValue(value)};\n        `;\n      }\n      // TODO: support refs. I'm not sure what those are so unclear how to support them\n    }\n    return str;\n  } else {\n    for (const key in json.context.set) {\n      const { name, ref, value } = json.context.set[key];\n      if (value) {\n        json.children = [\n          createMitosisNode({\n            name: `${name}.Provider`,\n            children: json.children,\n            ...(value && {\n              bindings: {\n                value: createSingleBinding({\n                  code: stringifyContextValue(value),\n                }),\n              },\n            }),\n          }),\n        ];\n      } else if (ref) {\n        json.children = [\n          createMitosisNode({\n            name: `${name}.Provider`,\n            children: json.children,\n            ...(ref && {\n              bindings: {\n                value: createSingleBinding({ code: ref }),\n              },\n            }),\n          }),\n        ];\n      }\n    }\n  }\n}\n\nfunction getContextString(component: MitosisComponent, options: ToReactOptions) {\n  let str = '';\n  for (const key in component.context.get) {\n    if (options.contextType === 'prop-drill') {\n      str += `\n        const ${key} = ${contextPropDrillingKey}['${component.context.get[key].name}'];\n      `;\n    } else {\n      str += `\n        const ${key} = useContext(${component.context.get[key].name});\n      `;\n    }\n  }\n\n  return str;\n}\n\ntype ReactExports =\n  | 'useState'\n  | 'useRef'\n  | 'useCallback'\n  | 'useEffect'\n  | 'useContext'\n  | 'forwardRef';\n\nexport const componentToPreact: TranspilerGenerator<Partial<ToReactOptions>> = (\n  reactOptions = {},\n) =>\n  componentToReact({\n    ...reactOptions,\n    preact: true,\n  });\n\nexport const componentToReact: TranspilerGenerator<Partial<ToReactOptions>> =\n  (reactOptions = {}) =>\n  ({ component, path }) => {\n    let json = fastClone(component);\n\n    const target = reactOptions.preact\n      ? 'preact'\n      : reactOptions.type === 'native'\n      ? 'reactNative'\n      : reactOptions.type === 'taro'\n      ? 'taro'\n      : reactOptions.rsc\n      ? 'rsc'\n      : 'react';\n\n    const stateType = reactOptions.stateType || 'useState';\n\n    const DEFAULT_OPTIONS: ToReactOptions = {\n      addUseClientDirectiveIfNeeded: true,\n      stateType,\n      stylesType: 'styled-jsx',\n      styleTagsPlacement: 'bottom',\n      type: 'dom',\n      plugins: [\n        processOnEventHooksPlugin({ setBindings: false }),\n        ...(stateType === 'variables'\n          ? [\n              CODE_PROCESSOR_PLUGIN((codeType, json) => (code, hookType) => {\n                if (codeType === 'types') return code;\n\n                code = replaceNodes({\n                  code,\n                  nodeMaps: Object.entries(json.state)\n                    .filter(([key, value]) => value?.type === 'getter')\n                    .map(([key, value]) => {\n                      const expr = types.memberExpression(\n                        types.identifier('state'),\n                        types.identifier(key),\n                      );\n                      return {\n                        from: expr,\n                        // condition: (path) => !types.isObjectMethod(path.parent),\n                        to: types.callExpression(expr, []),\n                      };\n                    }),\n                });\n\n                code = replaceStateIdentifier(null)(code);\n\n                return code;\n              }),\n            ]\n          : []),\n      ],\n    };\n\n    const options = initializeOptions({\n      target,\n      component,\n      defaults: DEFAULT_OPTIONS,\n      userOptions: reactOptions,\n    });\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    let str = _componentToReact(json, options);\n\n    str +=\n      '\\n\\n\\n' +\n      json.subComponents.map((item) => _componentToReact(item, options, true)).join('\\n\\n\\n');\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          plugins: [\n            require('prettier/parser-typescript'), // To support running in browsers\n            require('prettier/parser-postcss'),\n          ],\n        })\n          // Remove spaces between imports\n          .replace(/;\\n\\nimport\\s/g, ';\\nimport ');\n      } catch (err) {\n        if (process.env.NODE_ENV !== 'test') {\n          console.error('Format error for file:', str);\n        }\n        throw err;\n      }\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n\nconst isRSC = (json: MitosisComponent, options: ToReactOptions) => {\n  // When using RSC generator, we check `componentType` field in metadata to determine if it's a server component\n  const componentType = json.meta.useMetadata?.rsc?.componentType;\n  if (options.rsc && checkIsDefined(componentType)) {\n    return componentType === 'server';\n  }\n\n  return !checkIfIsClientComponent(json);\n};\nconst checkShouldAddUseClientDirective = (json: MitosisComponent, options: ToReactOptions) => {\n  if (!options.addUseClientDirectiveIfNeeded) return false;\n  if (options.type === 'native') return false;\n  if (options.preact) return false;\n\n  return !isRSC(json, options);\n};\n\nconst generateStyleTags = (\n  placement: 'top' | 'bottom',\n  json: MitosisComponent,\n  options: ToReactOptions,\n  componentHasStyles: boolean,\n  css: string | null,\n  shouldInjectCustomStyles: boolean,\n) => {\n  if (placement !== options.styleTagsPlacement) return '';\n  return dedent`\n  ${\n    componentHasStyles && options.stylesType === 'styled-jsx'\n      ? `<style jsx>{\\`${css}\\`}</style>`\n      : ''\n  }\n  ${componentHasStyles && options.stylesType === 'style-tag' ? `<style>{\\`${css}\\`}</style>` : ''}\n  ${shouldInjectCustomStyles ? `<style>{\\`${json.style}\\`}</style>` : ''}\n  `;\n};\n\nconst _componentToReact = (\n  json: MitosisComponent,\n  options: ToReactOptions,\n  isSubComponent = false,\n) => {\n  processHttpRequests(json);\n  handleMissingState(json);\n  processTagReferences(json, options);\n  const contextStr = provideContext(json, options);\n  const componentHasStyles = hasCss(json);\n  if (options.stateType === 'useState') {\n    gettersToFunctions(json);\n    updateStateSetters(json, options);\n  }\n\n  if (!json.name) {\n    json.name = 'MyComponent';\n  }\n\n  // const domRefs = getRefs(json);\n  const allRefs = Object.keys(json.refs);\n  mapRefs(json, (refName) => `${refName}.current`);\n\n  // Always use state if we are generate Builder react code\n  const hasState = options.stateType === 'builder' || checkHasState(json);\n\n  const [forwardRef, hasPropRef] = getPropsRef(json);\n  const isForwardRef = !options.preact && Boolean(isReactForwardRef(json) || hasPropRef);\n  if (isForwardRef) {\n    const meta = isReactForwardRef(json) as string;\n    options.forwardRef = meta || forwardRef;\n  }\n  const forwardRefType =\n    options.typescript && json.propsTypeRef && forwardRef && json.propsTypeRef !== 'any'\n      ? `<${json.propsTypeRef}[\"${forwardRef}\"]>`\n      : '';\n\n  const useStateCode = options.stateType === 'useState' ? getUseStateCode(json, options) : '';\n  if (options.plugins) {\n    json = runPostJsonPlugins({ json, plugins: options.plugins });\n  }\n\n  const css =\n    options.stylesType === 'styled-jsx'\n      ? collectCss(json)\n      : options.stylesType === 'style-tag'\n      ? collectCss(json, {\n          prefix: hash(json),\n        })\n      : null;\n\n  const styledComponentsCode =\n    (options.stylesType === 'styled-components' &&\n      componentHasStyles &&\n      collectStyledComponents(json)) ||\n    '';\n\n  if (options.format !== 'lite') {\n    stripMetaProperties(json);\n  }\n\n  const reactLibImports: Set<ReactExports> = new Set();\n  if (useStateCode.includes('useState')) {\n    reactLibImports.add('useState');\n  }\n  if (hasContext(json) && options.contextType !== 'prop-drill') {\n    reactLibImports.add('useContext');\n  }\n\n  const shouldAddUseClientDirective = checkShouldAddUseClientDirective(json, options);\n\n  const shouldInlineOnInitHook =\n    !shouldAddUseClientDirective && options.rsc && isRSC(json, options);\n\n  if (allRefs.length || (json.hooks.onInit?.code && !shouldInlineOnInitHook)) {\n    reactLibImports.add('useRef');\n  }\n  if (!options.preact && hasPropRef) {\n    reactLibImports.add('forwardRef');\n  }\n  if (json.hooks.onMount.length || json.hooks.onUnMount?.code || json.hooks.onUpdate?.length) {\n    reactLibImports.add('useEffect');\n  }\n\n  const hasCustomStyles = !!json.style?.length;\n  const shouldInjectCustomStyles =\n    hasCustomStyles &&\n    (options.stylesType === 'styled-components' || options.stylesType === 'emotion');\n\n  const wrap =\n    wrapInFragment(json) ||\n    isRootTextNode(json) ||\n    (componentHasStyles &&\n      (options.stylesType === 'styled-jsx' || options.stylesType === 'style-tag')) ||\n    shouldInjectCustomStyles ||\n    isRootSpecialNode(json);\n\n  const [hasStateArgument, refsString] = getRefsString(json, allRefs, options);\n\n  // NOTE: `collectReactNativeStyles` must run before style generation in the component generation body, as it has\n  // side effects that delete styles bindings from the JSON.\n  const reactNativeStyles =\n    options.stylesType === 'react-native' && componentHasStyles\n      ? collectReactNativeStyles(json, options)\n      : undefined;\n\n  const propType = json.propsTypeRef || 'any';\n  const componentArgs = [`props${options.typescript ? `:${propType}` : ''}`, options.forwardRef]\n    .filter(Boolean)\n    .join(',');\n\n  const componentBody = dedent`\n    ${\n      options.contextType === 'prop-drill'\n        ? `const ${contextPropDrillingKey} = { ...props['${contextPropDrillingKey}'] };`\n        : ''\n    }\n    ${hasStateArgument ? '' : refsString}\n    ${getReactVariantStateString({ hasState, useStateCode, json, options })}\n    ${hasStateArgument ? refsString : ''}\n    ${getContextString(json, options)}\n    ${json.hooks.init?.code ? processHookCode({ str: json.hooks.init?.code, options }) : ''}\n    ${contextStr || ''}\n\n    ${getOnInitHookComponentBody({ shouldInlineOnInitHook, json, options })}\n    ${getOnEventHookComponentBody(json)}\n    ${getOnMountComponentBody({ json, options })}\n    ${getOnUpdateComponentBody({ json, options })}\n    ${getOnUnMountComponentBody({ json, options })}\n\n    return (\n      ${wrap ? openFrag(options) : ''}\n      ${generateStyleTags('top', json, options, componentHasStyles, css, shouldInjectCustomStyles)}\n      ${json.children.map((item) => blockToReact(item, options, json, wrap, [])).join('\\n')}\n      ${generateStyleTags(\n        'bottom',\n        json,\n        options,\n        componentHasStyles,\n        css,\n        shouldInjectCustomStyles,\n      )}\n      ${wrap ? closeFrag(options) : ''}\n    );\n  `;\n\n  const str = dedent`\n  ${shouldAddUseClientDirective ? `'use client';` : ''}\n  ${getDefaultImport(options, json)}\n  ${styledComponentsCode ? `import styled from 'styled-components';\\n` : ''}\n  ${\n    reactLibImports.size\n      ? `import { ${Array.from(reactLibImports).join(', ')} } from '${\n          options.preact ? 'preact/hooks' : 'react'\n        }'`\n      : ''\n  }\n  ${options.stylesType === 'twrnc' ? `import tw from 'twrnc';\\n` : ''}\n  ${\n    componentHasStyles && options.stylesType === 'emotion' && options.format !== 'lite'\n      ? `/** @jsx jsx */\n    import { jsx } from '@emotion/react'`.trim()\n      : ''\n  }\n    ${getReactVariantStateImportString(hasState, options)}\n    ${json.types && options.typescript ? json.types.join('\\n') : ''}\n    ${renderPreComponent({\n      explicitImportFileExtension: options.explicitImportFileExtension,\n      component: json,\n      target: options.type === 'native' ? 'reactNative' : 'react',\n    })}\n    ${isForwardRef ? `const ${json.name} = forwardRef${forwardRefType}(` : ''}function ${\n    json.name\n  }(${componentArgs}) {\n  ${getDefaultProps(json)}\n    ${componentBody}\n  }${isForwardRef ? ')' : ''}\n\n    ${\n      reactNativeStyles && Object.keys(reactNativeStyles).length > 0\n        ? `const styles = StyleSheet.create(${json5.stringify(reactNativeStyles)});`\n        : ''\n    }\n\n    ${styledComponentsCode ?? ''}\n    ${\n      isSubComponent\n        ? ''\n        : options.stateType === 'mobx'\n        ? `\n      const observed${json.name} = observer(${json.name});\n      export default observed${json.name};\n    `\n        : `export default ${json.name};`\n    }\n\n  `;\n\n  return stripNewlinesInStrings(str);\n};\n"
  },
  {
    "path": "packages/core/src/generators/react/helpers/default-props.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getDefaultProps = (json: MitosisComponent) => {\n  if (!json.defaultProps) return '';\n  const defaultPropsString = Object.keys(json.defaultProps)\n    .map((prop) => {\n      const value = json.defaultProps!.hasOwnProperty(prop)\n        ? json.defaultProps![prop]?.code\n        : 'undefined';\n      return `${prop}: ${value}`;\n    })\n    .join(',');\n  if (defaultPropsString) {\n    return `props = {${defaultPropsString}, ...props}`;\n  }\n  return '';\n};\n"
  },
  {
    "path": "packages/core/src/generators/react/helpers/hooks.ts",
    "content": "import { ToReactOptions } from '@/generators/react';\nimport { processHookCode } from '@/generators/react/helpers/state';\nimport { getOnEventHandlerName } from '@/helpers/on-event';\nimport { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getOnInitHookComponentBody = ({\n  shouldInlineOnInitHook,\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  options: ToReactOptions;\n  shouldInlineOnInitHook?: boolean;\n}) =>\n  json.hooks.onInit?.code\n    ? shouldInlineOnInitHook\n      ? processHookCode({ str: json.hooks.onInit.code, options })\n      : `\n        const hasInitialized = useRef(false);\n        if (!hasInitialized.current) {\n          ${processHookCode({\n            str: json.hooks.onInit.code,\n            options,\n          })}\n          hasInitialized.current = true;\n        }\n        `\n    : '';\n\nexport const getOnEventHookComponentBody = (json: MitosisComponent) =>\n  json.hooks.onEvent\n    .map((hook) => {\n      const eventName = `\"${hook.eventName}\"`;\n      const handlerName = getOnEventHandlerName(hook);\n      return `\n      useEffect(() => {\n        ${hook.refName}.current?.addEventListener(${eventName}, ${handlerName});\n        return () => ${hook.refName}.current?.removeEventListener(${eventName}, ${handlerName});\n      }, []);\n      `;\n    })\n    .join('\\n');\n\nexport const getOnMountComponentBody = ({\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  options: ToReactOptions;\n}) =>\n  json.hooks.onMount\n    .map(\n      (hook) =>\n        `useEffect(() => {\n          ${processHookCode({\n            str: hook.code,\n            options,\n          })}\n        }, [])`,\n    )\n    .join('\\n');\n\nexport const getOnUpdateComponentBody = ({\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  options: ToReactOptions;\n}) =>\n  json.hooks.onUpdate\n    ?.map(\n      (hook) => `useEffect(() => {\n          ${processHookCode({ str: hook.code, options })}\n        },\n        ${hook.deps ? processHookCode({ str: hook.deps, options }) : ''})`,\n    )\n    .join(';') ?? '';\n\nexport const getOnUnMountComponentBody = ({\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  options: ToReactOptions;\n}) =>\n  json.hooks.onUnMount?.code\n    ? `useEffect(() => {\n          return () => {\n            ${processHookCode({\n              str: json.hooks.onUnMount.code,\n              options,\n            })}\n          }\n        }, [])`\n    : '';\n"
  },
  {
    "path": "packages/core/src/generators/react/helpers/index.ts",
    "content": "import { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport { upperFirst } from 'lodash';\nimport traverse from 'neotraverse/legacy';\n\nimport { ToReactOptions } from '../types';\n\nexport const processBinding = (str: string, options: ToReactOptions) => {\n  // fix web-component tag transform issue with dashes by not transforming it\n  if (options.stateType !== 'useState') {\n    return str;\n  }\n\n  return stripStateAndPropsRefs(str, {\n    includeState: true,\n    includeProps: false,\n  });\n};\n\nexport const openFrag = (options: ToReactOptions) => getFragment('open', options);\nexport const closeFrag = (options: ToReactOptions) => getFragment('close', options);\nexport const isFragmentWithKey = (node?: MitosisNode): boolean =>\n  node?.name === 'Fragment' && !!node?.bindings['key'];\nexport function getFragment(type: 'open' | 'close', options: ToReactOptions, node?: MitosisNode) {\n  let tag = '';\n  if (node && node.bindings && isFragmentWithKey(node)) {\n    tag = options.preact ? 'Fragment' : 'React.Fragment';\n    const keyCode = node.bindings['key']?.code;\n    if (type === 'open' && keyCode) {\n      tag += ` key={${processBinding(keyCode, options)}}`;\n    }\n  } else if (options.preact) {\n    tag = 'Fragment';\n  }\n  return type === 'open' ? `<${tag}>` : `</${tag}>`;\n}\nexport const wrapInFragment = (json: MitosisComponent | MitosisNode) => json.children.length !== 1;\n\nfunction getRefName(path: string) {\n  return upperFirst(path) + 'Ref';\n}\n\nexport function processTagReferences(json: MitosisComponent, options: ToReactOptions) {\n  const namesFound = new Set<string>();\n\n  traverse(json).forEach((el) => {\n    if (!isMitosisNode(el)) {\n      return;\n    }\n\n    const processedRefName = el.name.includes('-') ? el.name : processBinding(el.name, options);\n\n    if (el.name.includes('state.')) {\n      switch (json.state[processedRefName]?.type) {\n        case 'getter':\n          const refName = getRefName(processedRefName);\n          if (!namesFound.has(el.name)) {\n            namesFound.add(el.name);\n            json.hooks.init = {\n              ...json.hooks.init,\n              code: `\n            ${json.hooks.init?.code || ''}\n            const ${refName} = ${el.name};\n            `,\n            };\n          }\n\n          el.name = refName;\n          break;\n\n        // NOTE: technically, it should be impossible for the tag to be a method or a function in Mitosis JSX syntax,\n        // as that will fail JSX parsing.\n        case 'method':\n        case 'function':\n\n        case 'property':\n          const capitalizedName = upperFirst(processedRefName);\n\n          if (capitalizedName !== processedRefName) {\n            el.name = capitalizedName;\n            json.state[capitalizedName] = { ...json.state[processedRefName]! };\n\n            delete json.state[processedRefName];\n          } else {\n            el.name = processedRefName;\n          }\n\n          break;\n      }\n    } else {\n      el.name = processedRefName;\n    }\n  });\n}\n\nexport const isReactForwardRef = (json: MitosisComponent): string | undefined =>\n  json.meta.useMetadata?.forwardRef || json.meta.useMetadata?.react?.forwardRef;\n"
  },
  {
    "path": "packages/core/src/generators/react/helpers/state.ts",
    "content": "import { capitalize } from '@/helpers/capitalize';\nimport { getFunctionString } from '@/helpers/get-function-string';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { getTypedFunction } from '@/helpers/get-typed-function';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { prefixWithFunction, replaceGetterWithFunction } from '@/helpers/patterns';\nimport { transformStateSetters } from '@/helpers/transform-state-setters';\nimport { MitosisComponent, StateValue } from '@/types/mitosis-component';\nimport { types } from '@babel/core';\nimport { pipe } from 'fp-ts/lib/function';\nimport traverse from 'neotraverse/legacy';\nimport { processBinding } from '../helpers';\nimport { ToReactOptions } from '../types';\n\n/**\n * Removes all `this.` references.\n */\nconst stripThisRefs = (str: string, options: ToReactOptions) => {\n  if (options.stateType !== 'useState') {\n    return str;\n  }\n\n  return str.replace(/this\\.([a-zA-Z_\\$0-9]+)/g, '$1');\n};\n\nexport const processHookCode = ({ str, options }: { str: string; options: ToReactOptions }) =>\n  processBinding(updateStateSettersInCode(str, options), options);\n\nconst valueMapper = (options: ToReactOptions) => (val: string) => {\n  const x = processHookCode({ str: val, options });\n  return stripThisRefs(x, options);\n};\nconst getSetStateFnName = (stateName: string) => `set${capitalize(stateName)}`;\n\nconst processStateValue = (options: ToReactOptions) => {\n  const mapValue = valueMapper(options);\n\n  return ([key, stateVal]: [key: string, stateVal: StateValue | undefined]) => {\n    if (!stateVal) {\n      return '';\n    }\n\n    let value = stateVal.code || '';\n    const type = stateVal.type;\n    const typeParameter = stateVal.typeParameter;\n    const stateType =\n      options.typescript && stateVal.typeParameter ? `<${stateVal.typeParameter}>` : '';\n\n    let result = '';\n    if (type === 'getter') {\n      result = pipe(value, replaceGetterWithFunction, mapValue);\n    } else if (type === 'function') {\n      result = mapValue(value);\n    } else if (type === 'method') {\n      result = pipe(value, prefixWithFunction, mapValue);\n    } else {\n      return `const [${key}, ${getSetStateFnName(key)}] = useState${stateType}(() => (${mapValue(\n        value,\n      )}))`;\n    }\n\n    return getTypedFunction(result, options.typescript, typeParameter);\n  };\n};\n\nexport const getUseStateCode = (json: MitosisComponent, options: ToReactOptions) => {\n  const lineItemDelimiter = '\\n\\n\\n';\n\n  const stringifiedState = Object.entries(json.state).map(processStateValue(options));\n  return stringifiedState.join(lineItemDelimiter);\n};\n\nexport const updateStateSetters = (json: MitosisComponent, options: ToReactOptions) => {\n  if (options.stateType !== 'useState') {\n    return;\n  }\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      for (const key in item.bindings) {\n        let values = item.bindings[key]!;\n        const newValue = updateStateSettersInCode(values?.code as string, options);\n        if (newValue !== values?.code) {\n          item.bindings[key] = {\n            ...values,\n            code: newValue,\n          };\n        }\n      }\n    }\n  });\n};\n\nexport const updateStateSettersInCode = (value: string, options: ToReactOptions) => {\n  if (options.stateType !== 'useState') {\n    return value;\n  }\n  return transformStateSetters({\n    value,\n    transformer: ({ path, propertyName }) =>\n      types.callExpression(types.identifier(getSetStateFnName(propertyName)), [path.node.right]),\n  });\n};\n\nexport const getReactVariantStateImportString = (hasState: boolean, options: ToReactOptions) => {\n  return !hasState\n    ? ''\n    : options.stateType === 'valtio'\n    ? `import { useLocalProxy } from 'valtio/utils';`\n    : options.stateType === 'solid'\n    ? `import { useMutable } from 'react-solid-state';`\n    : options.stateType === 'mobx'\n    ? `import { useLocalObservable, observer } from 'mobx-react-lite';`\n    : '';\n};\n\nexport const getReactVariantStateString = ({\n  hasState,\n  options,\n  json,\n  useStateCode,\n}: {\n  useStateCode: string;\n  hasState: boolean;\n  json: MitosisComponent;\n  options: ToReactOptions;\n}) =>\n  hasState\n    ? options.stateType === 'mobx'\n      ? `const state = useLocalObservable(() => (${getStateObjectStringFromComponent(json)}));`\n      : options.stateType === 'useState'\n      ? useStateCode\n      : options.stateType === 'solid'\n      ? `const state = useMutable(${getStateObjectStringFromComponent(json)});`\n      : options.stateType === 'builder'\n      ? `const state = useBuilderState(${getStateObjectStringFromComponent(json)});`\n      : options.stateType === 'variables'\n      ? getStateObjectStringFromComponent(json, {\n          format: 'variables',\n          keyPrefix: 'const',\n          valueMapper: (code, type, _, key) => {\n            if (key) {\n              const constPrefix = !code.startsWith('function') ? `${key} = ` : '';\n\n              if (type === 'getter')\n                return `${constPrefix}${getFunctionString(code.replace('get ', ''))}`;\n              if (type === 'function')\n                return code.startsWith('async') ? code : `${constPrefix}${getFunctionString(code)}`;\n            }\n            return code;\n          },\n        })\n      : `const state = useLocalProxy(${getStateObjectStringFromComponent(json)});`\n    : '';\n\nexport const getDefaultImport = (options: ToReactOptions, json: MitosisComponent): string => {\n  const { preact, type } = options;\n  if (preact) {\n    return `\n    /** @jsx h */\n    import { h, Fragment } from 'preact';\n    `;\n  }\n  if (type === 'native') {\n    const namesUsed = new Set<string>(),\n      knownImports = new Set<string>();\n\n    json.imports.forEach((imported) => {\n      if (imported.imports) {\n        Object.keys(imported.imports).forEach((name) => {\n          knownImports.add(name);\n        });\n      }\n    });\n\n    traverse(json).forEach((node) => {\n      if (!isMitosisNode(node)) {\n        return;\n      }\n\n      // ReactNative has a special case for converting _text to Text\n      if (node.properties._text?.trim().length || node.bindings._text?.code?.trim()?.length) {\n        namesUsed.add('Text');\n      }\n\n      if (node.properties.style || node.bindings.style) {\n        namesUsed.add('StyleSheet');\n      }\n\n      if (\n        node.name === 'TouchableOpacity' &&\n        ('href' in node.bindings || 'href' in node.properties)\n      ) {\n        namesUsed.add('Linking');\n      }\n\n      namesUsed.add(node.name);\n    });\n\n    const components = [\n      'FlatList',\n      'ScrollView',\n      'View',\n      'StyleSheet',\n      'Image',\n      'Text',\n      'Pressable',\n      'TextInput',\n      'TouchableOpacity',\n      'Button',\n      'Linking',\n    ].filter((name) => {\n      // Ony import if the name is used and not imported from somewhere else\n      return namesUsed.has(name) && !knownImports.has(name);\n    });\n\n    return `\n    import * as React from 'react';\n    import { ${components.join(', ')} } from 'react-native';\n    `;\n  }\n  if (type === 'taro') {\n    return `\n    import * as React from 'react';\n    `;\n  }\n\n  return \"import * as React from 'react';\";\n};\n"
  },
  {
    "path": "packages/core/src/generators/react/index.ts",
    "content": "export { blockToReact } from './blocks';\nexport * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/react/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToReactOptions extends BaseTranspilerOptions {\n  stylesType:\n    | 'emotion'\n    | 'styled-components'\n    | 'styled-jsx'\n    | 'react-native'\n    | 'style-tag'\n    | 'twrnc'\n    | 'native-wind';\n  styleTagsPlacement?: 'top' | 'bottom';\n  stateType: 'useState' | 'mobx' | 'valtio' | 'solid' | 'builder' | 'variables';\n  format?: 'lite' | 'safe';\n  type: 'dom' | 'native' | 'taro';\n  preact?: boolean;\n  sanitizeReactNative?: boolean;\n  rsc?: boolean;\n  forwardRef?: string;\n  experimental?: any;\n  /**\n   * For RSC, normal React context is currently not supported, so provide a prop drilling\n   * option\n   */\n  contextType?: 'context' | 'prop-drill';\n  addUseClientDirectiveIfNeeded?: boolean;\n}\n\nexport type ReactMetadata = {\n  forwardRef?: string;\n};\n"
  },
  {
    "path": "packages/core/src/generators/react-native/extract-css-var-default-value.ts",
    "content": "export function extractCssVarDefaultValue(value: string): string {\n  // Regular expression to find var() expressions\n  const varRegex = /var\\(--[^,]+?,\\s*([^)]+)\\)/;\n\n  // Function to replace var() with its fallback\n  let newValue = value;\n  let match: string[] | null;\n  while ((match = newValue.match(varRegex))) {\n    newValue = newValue.replace(match[0], match[1].trim());\n  }\n\n  return newValue;\n}\n"
  },
  {
    "path": "packages/core/src/generators/react-native/helpers.ts",
    "content": "import { extractCssVarDefaultValue } from './extract-css-var-default-value';\n\n// Define types for React Native styles\ntype Styles = Record<string, string | number>;\n\ntype CSSPropertyValidator = (value: string) => boolean;\n\nconst lengthPattern = /^-?\\d*\\.?\\d+(px|%)?$/;\nconst pixelPattern = /^-?\\d*\\.?\\d+(px)?$/;\nconst numberPattern = /^-?\\d*\\.?\\d+$/;\nconst colorPattern = /^(#[0-9A-Fa-f]{3,8}|(rgb|hsl)a?\\(.*\\)|[a-zA-Z]+)$/;\n\n// List of unsupported properties in React Native\nconst unsupportedProps = [\n  'textShadow',\n  'boxShadow',\n  'transition',\n  'cursor',\n  'filter',\n  'overflowX',\n  'overflowY',\n  'animation',\n  'backgroundImage',\n  'backgroundPosition',\n  'backgroundSize',\n  'backgroundRepeat',\n  'whiteSpace',\n];\n\n// Ensure CSS property value is valid for React Native\nfunction validateReactNativeCssProperty(key: string, value: string | number): boolean {\n  const cssProperties: Record<string, CSSPropertyValidator> = {\n    width: (value) => lengthPattern.test(value),\n    height: (value) => lengthPattern.test(value),\n    backgroundColor: (value) => pixelPattern.test(value) || /^#[0-9A-Fa-f]{6}/.test(value),\n    minWidth: (value: string) => lengthPattern.test(value) || value === 'auto',\n    maxWidth: (value: string) => lengthPattern.test(value) || value === 'auto',\n    minHeight: (value: string) => lengthPattern.test(value) || value === 'auto',\n    maxHeight: (value: string) => lengthPattern.test(value) || value === 'auto',\n    aspectRatio: (value: string) => numberPattern.test(value) || /^\\d+\\/\\d+$/.test(value),\n\n    // Flexbox Properties\n    flex: (value: string) => numberPattern.test(value),\n    flexBasis: (value: string) => lengthPattern.test(value) || value === 'auto',\n    flexDirection: (value: string) =>\n      ['row', 'row-reverse', 'column', 'column-reverse'].includes(value),\n    flexGrow: (value: string) => numberPattern.test(value),\n    flexShrink: (value: string) => numberPattern.test(value),\n    flexWrap: (value: string) => ['wrap', 'nowrap', 'wrap-reverse'].includes(value),\n\n    // Alignment Properties\n    alignContent: (value: string) =>\n      ['flex-start', 'flex-end', 'center', 'stretch', 'space-between', 'space-around'].includes(\n        value,\n      ),\n    alignItems: (value: string) =>\n      ['flex-start', 'flex-end', 'center', 'stretch', 'baseline'].includes(value),\n    alignSelf: (value: string) =>\n      ['auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline'].includes(value),\n    justifyContent: (value: string) =>\n      [\n        'flex-start',\n        'flex-end',\n        'center',\n        'space-between',\n        'space-around',\n        'space-evenly',\n      ].includes(value),\n\n    // Text Properties\n    color: (value: string) => colorPattern.test(value),\n    fontFamily: () => true, // Any string is valid\n    fontSize: (value: string) => pixelPattern.test(value),\n    fontStyle: (value: string) => ['normal', 'italic'].includes(value),\n    fontWeight: (value: string) =>\n      ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'].includes(\n        value,\n      ),\n\n    display: (value: string) => ['none', 'flex'].includes(value),\n  };\n\n  // If the property is not explicitly defined, consider it valid\n  if (!cssProperties[key]) return true;\n\n  // Convert number to string for validation\n  const stringValue = typeof value === 'number' ? value.toString() : value;\n  return cssProperties[key](stringValue);\n}\n\n// Clean up shorthand and unsupported styles for React Native\nexport function cleanReactNativeBlockStyles(styles: Styles): Styles {\n  return Object.entries(styles).reduce<Styles>((acc, [key, value]) => {\n    // Remove unsupported properties\n    if (unsupportedProps.includes(key)) return acc;\n\n    // Handle CSS variables\n    if (typeof value === 'string' && value.includes('var(')) {\n      value = extractCssVarDefaultValue(value) ?? value;\n    }\n\n    // Parse pixel units\n    if (typeof value === 'string') {\n      const pixelMatch = value.match(/^(-?\\d+(\\.\\d+)?)px$/);\n      if (pixelMatch) value = parseFloat(pixelMatch[1]);\n    }\n\n    // Handle shorthand properties\n    if (key === 'margin' || key === 'padding') {\n      return { ...acc, ...expandShorthand(key, value) };\n    }\n\n    // Convert 'background' to 'backgroundColor'\n    if (key === 'background' && typeof value === 'string') {\n      acc.backgroundColor = value;\n      return { ...acc, backgroundColor: value };\n    }\n\n    // Handle borderRadius\n    if (key === 'borderRadius' && typeof value === 'string') {\n      return { ...acc, ...expandBorderRadius(value) };\n    }\n\n    // Handle invalid display values\n    if (key === 'display' && value !== 'flex' && value !== 'none') {\n      return acc;\n    }\n\n    // Validate and add the property\n    if (validateReactNativeCssProperty(key, value)) {\n      acc[key] = value;\n    }\n\n    return acc;\n  }, {});\n}\n\nfunction expandShorthand(property: string, value: string | number): Styles {\n  if (typeof value !== 'string') return { [property]: value };\n\n  const values = value.split(' ').map((v) => parseFloat(v) || 0);\n  const [top, right = top, bottom = top, left = right] = values;\n\n  return {\n    [`${property}Top`]: top,\n    [`${property}Right`]: right,\n    [`${property}Bottom`]: bottom,\n    [`${property}Left`]: left,\n  };\n}\n\nfunction expandBorderRadius(value: string): Styles {\n  const values = value.split(' ').map((v) => parseInt(v, 10));\n  const [topLeft, topRight = topLeft, bottomRight = topLeft, bottomLeft = topRight] = values;\n\n  return {\n    borderTopLeftRadius: topLeft,\n    borderTopRightRadius: topRight,\n    borderBottomRightRadius: bottomRight,\n    borderBottomLeftRadius: bottomLeft,\n  };\n}\n"
  },
  {
    "path": "packages/core/src/generators/react-native/index.ts",
    "content": "import { ToReactNativeOptions } from '@/generators/react-native/types';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { fastClone } from '@/helpers/fast-clone';\nimport isChildren from '@/helpers/is-children';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { mergeOptions } from '@/helpers/merge-options';\nimport { ClassStyleMap } from '@/helpers/styles/helpers';\nimport { Dictionary } from '@/helpers/typescript';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport json5 from 'json5';\nimport { camelCase, size } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { MitosisNode, MitosisPlugin } from '../..';\nimport { VALID_HTML_TAGS } from '../../constants/html_tags';\nimport { ToReactOptions, componentToReact } from '../react';\nimport { sanitizeReactNativeBlockStyles } from './sanitize-react-native-block-styles';\n\nconst stylePropertiesThatMustBeNumber = new Set(['lineHeight']);\n\nconst MEDIA_QUERY_KEY_REGEX = /^@media.*/;\n\nconst sanitizeStyle = (obj: any) => (key: string, value: string) => {\n  const propertyValue = obj[key];\n\n  if (key.match(MEDIA_QUERY_KEY_REGEX)) {\n    console.warn('Unsupported: skipping media queries for react-native: ', key, propertyValue);\n    delete obj[key];\n    return;\n  }\n};\n\nexport const collectReactNativeStyles = (\n  json: MitosisComponent,\n  options: ToReactOptions,\n): ClassStyleMap => {\n  const styleMap: ClassStyleMap = {};\n\n  const componentIndexes: Dictionary<number | undefined> = {};\n  const getStyleSheetName = (item: MitosisNode) => {\n    const componentName = camelCase(item.name || 'view');\n    // If we have already seen this component name, we will increment the index. Otherwise, we will set the index to 1.\n    const index = (componentIndexes[componentName] = (componentIndexes[componentName] || 0) + 1);\n    return `${componentName}${index}`;\n  };\n  traverse(json).forEach(function (item) {\n    if (!isMitosisNode(item)) {\n      return;\n    }\n    let cssValue = json5.parse(item.bindings.css?.code || '{}');\n    delete item.bindings.css;\n\n    if (size(cssValue)) {\n      // Style properties like `\"20px\"` need to be numbers like `20` for react native\n      for (const key in cssValue) {\n        sanitizeStyle(cssValue)(key, cssValue[key]);\n        cssValue = sanitizeReactNativeBlockStyles(cssValue, options);\n      }\n    }\n\n    try {\n      let styleValue = json5.parse(item.bindings.style?.code || '{}');\n      if (size(styleValue)) {\n        // Style properties like `\"20px\"` need to be numbers like `20` for react native\n        for (const key in styleValue) {\n          sanitizeStyle(styleValue)(key, styleValue[key]);\n          styleValue = sanitizeReactNativeBlockStyles(styleValue, options);\n        }\n\n        item.bindings.style!.code = json5.stringify(styleValue);\n      }\n    } catch (e) {}\n\n    if (!size(cssValue)) {\n      return;\n    }\n\n    const styleSheetName = getStyleSheetName(item);\n    const styleSheetAccess = `styles.${styleSheetName}`;\n    styleMap[styleSheetName] = cssValue;\n\n    if (!item.bindings.style) {\n      item.bindings.style = createSingleBinding({\n        code: styleSheetAccess,\n      });\n      return;\n    }\n    try {\n      // run the code below only if the style binding is a JSON object\n      json5.parse(item.bindings.style.code || '{}');\n\n      item.bindings.style = createSingleBinding({\n        code:\n          item.bindings.style?.code.replace(/}$/, `, ...${styleSheetAccess} }`) || styleSheetAccess,\n      });\n    } catch (e) {\n      // if not a JSON, then it's a property, so we should spread it.\n      item.bindings.style = createSingleBinding({\n        code: `{\n        ...${styleSheetAccess},\n        ...${item.bindings.style.code}\n        }`,\n      });\n    }\n  });\n\n  return styleMap;\n};\n\n/**\n * Plugin that handles necessary transformations from React to React Native:\n * - Converts DOM tags to <View /> and <Text />\n */\nconst PROCESS_REACT_NATIVE_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      traverse(json).forEach((node) => {\n        if (isMitosisNode(node)) {\n          // TODO: handle TextInput, Image, etc\n          if (isChildren({ node })) {\n            node.name = '';\n          } else if (node.name.toLowerCase() === node.name && VALID_HTML_TAGS.includes(node.name)) {\n            if (node.name === 'input') {\n              node.name = 'TextInput';\n            } else if (node.name === 'img') {\n              node.name = 'Image';\n            } else if (node.name === 'a') {\n              node.name = 'TouchableOpacity';\n            } else if (node.name === 'button') {\n              node.name = 'Button';\n            }\n            // if node is not button or a and still has onClick it needs to pressable\n            else if (node.bindings.onClick) {\n              node.name = 'Pressable';\n            } else {\n              node.name = 'View';\n            }\n          } else if (\n            node.properties._text?.trim().length ||\n            node.bindings._text?.code?.trim()?.length\n          ) {\n            node.name = 'Text';\n          }\n        }\n      });\n    },\n  },\n});\n\n/**\n * Removes React Native className and class properties from the JSON\n */\nconst REMOVE_REACT_NATIVE_CLASSES_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      traverse(json).forEach(function (node) {\n        if (isMitosisNode(node)) {\n          if (node.properties.class) {\n            delete node.properties.class;\n          }\n          if (node.properties.className) {\n            delete node.properties.className;\n          }\n          if (node.bindings.class) {\n            delete node.bindings.class;\n          }\n          if (node.bindings.className) {\n            delete node.bindings.className;\n          }\n        }\n      });\n    },\n  },\n});\n\n/**\n * Converts class and className properties to twrnc style syntax\n */\nconst TWRNC_STYLES_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    post: (json: MitosisComponent) => {\n      traverse(json).forEach(function (node) {\n        if (isMitosisNode(node)) {\n          let staticClasses = [node.properties.class, node.properties.className]\n            .filter(Boolean)\n            .join(' ');\n\n          let dynamicClasses = [node.bindings.class, node.bindings.className].filter(Boolean);\n\n          if (staticClasses || dynamicClasses.length) {\n            let styleCode = '';\n\n            if (staticClasses) {\n              styleCode = `tw\\`${staticClasses}\\``;\n            }\n\n            if (dynamicClasses.length) {\n              let dynamicCode = dynamicClasses\n                .map((dc) => (dc && dc.code ? dc.code : null))\n                .filter(Boolean)\n                .join(', ');\n\n              if (dynamicCode) {\n                if (styleCode) {\n                  // If we have both static and dynamic classes\n                  styleCode = `tw.style(${styleCode}, ${dynamicCode})`;\n                } else if (dynamicClasses.length > 1) {\n                  // If we have multiple dynamic classes\n                  styleCode = `tw.style([${dynamicCode}])`;\n                } else {\n                  // If we have a single dynamic class\n                  styleCode = `tw.style(${dynamicCode})`;\n                }\n              }\n            }\n\n            if (styleCode) {\n              node.bindings.style = createSingleBinding({ code: styleCode });\n            }\n          }\n\n          // Clean up original class and className properties/bindings\n          delete node.properties.class;\n          delete node.properties.className;\n          delete node.bindings.class;\n          delete node.bindings.className;\n        }\n      });\n    },\n  },\n});\n\n/**\n * Converts class and className properties to native-wind style syntax\n * Note: We only support the \"with babel\" setup: https://www.nativewind.dev/guides/babel\n */\nconst NATIVE_WIND_STYLES_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    post: (json: MitosisComponent) => {\n      traverse(json).forEach(function (node) {\n        if (isMitosisNode(node)) {\n          let combinedClasses = [\n            node.properties.class,\n            node.properties.className,\n            node.bindings.class,\n            node.bindings.className,\n          ]\n            .filter(Boolean)\n            .join(' ');\n\n          if (node.properties.class) {\n            delete node.properties.class;\n          }\n          if (node.properties.className) {\n            delete node.properties.className;\n          }\n          if (node.bindings.class) {\n            delete node.bindings.class;\n          }\n          if (node.bindings.className) {\n            delete node.bindings.className;\n          }\n\n          if (combinedClasses) {\n            node.properties.className = combinedClasses;\n          }\n        }\n      });\n    },\n  },\n});\n\nconst DEFAULT_OPTIONS: ToReactNativeOptions = {\n  stateType: 'useState',\n  stylesType: 'react-native',\n  plugins: [PROCESS_REACT_NATIVE_PLUGIN],\n};\n\nexport const componentToReactNative: TranspilerGenerator<Partial<ToReactNativeOptions>> =\n  (_options = {}) =>\n  ({ component, path }) => {\n    const json = fastClone(component);\n\n    const options = mergeOptions(DEFAULT_OPTIONS, _options);\n\n    if (options.stylesType === 'twrnc') {\n      options.plugins.push(TWRNC_STYLES_PLUGIN);\n    } else if (options.stylesType === 'native-wind') {\n      options.plugins.push(NATIVE_WIND_STYLES_PLUGIN);\n    } else {\n      options.plugins.push(REMOVE_REACT_NATIVE_CLASSES_PLUGIN);\n    }\n\n    return componentToReact({ ...options, type: 'native' })({ component: json, path });\n  };\n\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/react-native/sanitize-react-native-block-styles.ts",
    "content": "import { ToReactOptions } from '../react/types';\nimport { cleanReactNativeBlockStyles } from './helpers';\n\nconst propertiesThatMustBeNumber = new Set(['lineHeight']);\nconst displayValues = new Set(['flex', 'none']);\n\ntype Styles = Record<string, string | number>;\n\nconst normalizeNumber = (value: number): number | undefined => {\n  if (Number.isNaN(value)) {\n    return undefined;\n  } else if (value < 0) {\n    // TODO: why are negative values not allowed?\n    return 0;\n  } else {\n    return value;\n  }\n};\n\nexport const sanitizeReactNativeBlockStyles = (styles: Styles, options: ToReactOptions): Styles => {\n  if (options.sanitizeReactNative) {\n    return cleanReactNativeBlockStyles(styles);\n  }\n  return Object.keys(styles).reduce<Styles>((acc, key): Styles => {\n    const propertyValue = styles[key];\n\n    if (\n      typeof propertyValue === 'string' &&\n      key === 'display' &&\n      !displayValues.has(propertyValue)\n    ) {\n      console.warn(\n        `Style value for key \"display\" must be \"flex\" or \"none\" but had ${propertyValue}`,\n      );\n      return acc;\n    }\n\n    if (propertiesThatMustBeNumber.has(key) && typeof propertyValue !== 'number') {\n      console.warn(`Style key ${key} must be a number, but had value \\`${styles[key]}\\``);\n      return acc;\n    }\n\n    if (typeof propertyValue === 'string') {\n      // `px` units need to be stripped and replaced with numbers\n      // https://regexr.com/6ualn\n      const isPixelUnit = propertyValue.match(/^-?(\\d*)(\\.?)(\\d*)*px$/);\n\n      if (isPixelUnit) {\n        const newValue = parseFloat(propertyValue);\n        const normalizedValue = normalizeNumber(newValue);\n        if (normalizedValue) {\n          return { ...acc, [key]: normalizedValue };\n        } else {\n          return acc;\n        }\n      } else if (propertyValue === '0') {\n        // 0 edge case needs to be handled\n        return { ...acc, [key]: 0 };\n      }\n    }\n\n    return { ...acc, [key]: propertyValue };\n  }, {});\n};\n"
  },
  {
    "path": "packages/core/src/generators/react-native/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToReactNativeOptions extends BaseTranspilerOptions {\n  sanitizeReactNative?: boolean;\n  stylesType: 'emotion' | 'react-native' | 'twrnc' | 'native-wind';\n  stateType: 'useState' | 'mobx' | 'valtio' | 'solid' | 'builder';\n}\n\nexport type ReactNativeMetadata = {\n  forwardRef?: string;\n};\n"
  },
  {
    "path": "packages/core/src/generators/rsc/generator.ts",
    "content": "import { ToRscOptions } from '@/generators/rsc/types';\nimport traverse from 'neotraverse/legacy';\nimport { MitosisPlugin } from '../..';\nimport { isMitosisNode } from '../../helpers/is-mitosis-node';\nimport { mergeOptions } from '../../helpers/merge-options';\nimport { checkIsDefined } from '../../helpers/nullable';\nimport { MitosisComponent } from '../../types/mitosis-component';\nimport { TranspilerGenerator } from '../../types/transpiler';\nimport { checkIfIsClientComponent } from '../helpers/rsc';\nimport { componentToReact } from '../react';\n\n/**\n * Transform react to be RSC compatible, such as\n * - remove event listeners\n * - remove lifecycle hooks\n * - remove refs\n * - transform context to prop drilling\n */\nconst RSC_TRANSFORM_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      json.hooks.onMount = [];\n      delete json.hooks.onUnMount;\n      delete json.hooks.onUpdate;\n      json.refs = {};\n\n      json.context.get = {};\n      json.context.set = {};\n\n      traverse(json).forEach((node) => {\n        if (isMitosisNode(node)) {\n          const isComponent = node.name.match(/[A-Z]/);\n          // if (isComponent) {\n          //   // Drill context down, aka\n          //   // function (props) { return <Component _context{props._context} /> }\n          //   if (!node.bindings[contextPropDrillingKey]) {\n          //     node.bindings[contextPropDrillingKey] = createSingleBinding({\n          //       code: contextPropDrillingKey,\n          //     });\n          //   }\n          // }\n          if (node.bindings.ref) {\n            delete node.bindings.ref;\n          }\n          // for (const key in node.bindings) {\n          //   if (key.match(/^on[A-Z]/)) {\n          //     delete node.bindings[key];\n          //   }\n          // }\n        }\n      });\n    },\n  },\n});\n\nconst RscOptions: Partial<ToRscOptions> = {\n  plugins: [RSC_TRANSFORM_PLUGIN],\n  stateType: 'variables',\n};\n\nexport const componentToRsc: TranspilerGenerator<Partial<ToRscOptions>> =\n  (_options = {}) =>\n  ({ component, path }) => {\n    if (\n      !checkIsDefined(component.meta.useMetadata?.rsc?.componentType) &&\n      !checkIfIsClientComponent(component)\n    ) {\n      component.meta.useMetadata = {\n        ...component.meta.useMetadata,\n        rsc: {\n          ...component.meta.useMetadata?.rsc,\n          componentType: 'server',\n        },\n      };\n    }\n    const isRSC = component.meta.useMetadata?.rsc?.componentType === 'server';\n\n    const options = mergeOptions<Partial<ToRscOptions>>(\n      {\n        rsc: true,\n        ...(isRSC ? RscOptions : {}),\n      },\n      _options,\n    );\n\n    return componentToReact(options)({ component, path });\n  };\n"
  },
  {
    "path": "packages/core/src/generators/rsc/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/rsc/types.ts",
    "content": "import { ToReactOptions } from '@/generators/react';\n\nexport type ToRscOptions = ToReactOptions;\n\nexport type ReactServerComponentsMetadata = {\n  componentType?: 'client' | 'server';\n};\n"
  },
  {
    "path": "packages/core/src/generators/solid/blocks.ts",
    "content": "import { babelTransformExpression } from '@/helpers/babel-transform';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { objectHasKey } from '@/helpers/typescript';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { checkIsForNode, MitosisNode } from '@/types/mitosis-node';\nimport { types } from '@babel/core';\nimport { kebabCase } from 'lodash';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport { collectClassString } from './helpers/styles';\nimport { ToSolidOptions } from './types';\n\nconst ATTTRIBUTE_MAPPERS = {\n  // for: 'htmlFor',\n};\n\nconst transformAttributeName = (name: string) => {\n  if (objectHasKey(ATTTRIBUTE_MAPPERS, name)) return ATTTRIBUTE_MAPPERS[name];\n  return name;\n};\n\nexport const blockToSolid = (\n  json: MitosisNode,\n  component: MitosisComponent,\n  options: ToSolidOptions,\n  insideJsx: boolean,\n): string => {\n  if (insideJsx) {\n    if (json.properties._text) {\n      return json.properties._text;\n    }\n    if (json.bindings._text?.code) {\n      return `{${json.bindings._text.code}}`;\n    }\n  } else {\n    if (json.properties._text) {\n      return `<>${json.properties._text}</>`;\n    }\n    if (json.bindings._text?.code) {\n      return `${json.bindings._text.code}`;\n    }\n  }\n\n  if (checkIsForNode(json)) {\n    const needsWrapper = json.children.length !== 1;\n    // The SolidJS `<For>` component has a special index() signal function.\n    // https://www.solidjs.com/docs/latest#%3Cfor%3E\n    return `<For each={${json.bindings.each?.code}}>\n    {(${json.scope.forName}, _index) => {\n      const ${json.scope.indexName || 'index'} = _index();\n      return ${needsWrapper ? '<>' : ''}${json.children\n      .filter(filterEmptyTextNodes)\n      .map((child) => blockToSolid(child, component, options, needsWrapper))}}}\n      ${needsWrapper ? '</>' : ''}\n    </For>`;\n  }\n\n  let str = '';\n\n  const isFragment = json.name === 'Fragment';\n\n  if (isFragment) {\n    str += '<';\n  } else {\n    str += `<${json.name} `;\n  }\n\n  if (json.name === 'Show' && isMitosisNode(json.meta.else)) {\n    str += `fallback={${blockToSolid(json.meta.else, component, options, false)}}`;\n  }\n\n  const classString = collectClassString(json, options);\n  if (classString && !isFragment) {\n    str += ` class=${classString} `;\n  }\n\n  for (const key in json.properties) {\n    if (isFragment) continue;\n\n    const value = json.properties[key];\n    const newKey = transformAttributeName(key);\n    str += ` ${newKey}=\"${value}\" `;\n  }\n  for (const key in json.bindings) {\n    if (isFragment) continue;\n\n    const { code, arguments: cusArg = ['event'], type } = json.bindings[key]!;\n    if (!code) continue;\n\n    if (type === 'spread') {\n      str += ` {...(${code})} `;\n    } else if (checkIsEvent(key)) {\n      const useKey = key === 'onChange' && json.name === 'input' ? 'onInput' : key;\n      const asyncKeyword = json.bindings[key]?.async ? 'async ' : '';\n      str += ` ${useKey}={${asyncKeyword}(${cusArg.join(',')}) => ${code}} `;\n    } else if (key === 'ref' && options.typescript) {\n      str += ` ${key}={${code}!} `;\n    } else {\n      let useValue = code;\n      if (key === 'style') {\n        // Convert camelCase keys to kebab-case\n        // TODO: support more than top level objects, may need\n        // a runtime helper for expressions that are not a direct\n        // object literal, such as ternaries and other expression\n        // types\n        useValue = babelTransformExpression(code, {\n          ObjectExpression(path: babel.NodePath<babel.types.ObjectExpression>) {\n            // TODO: limit to top level objects only\n            for (const property of path.node.properties) {\n              if (types.isObjectProperty(property)) {\n                if (types.isIdentifier(property.key) || types.isStringLiteral(property.key)) {\n                  const key = types.isIdentifier(property.key)\n                    ? property.key.name\n                    : property.key.value;\n                  property.key = types.stringLiteral(kebabCase(key));\n                }\n              }\n            }\n          },\n        });\n      }\n      const newKey = transformAttributeName(key);\n      str += ` ${newKey}={${useValue}} `;\n    }\n  }\n  if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n    return str + ' />';\n  }\n  str += '>';\n  if (json.children) {\n    str += json.children\n      .filter(filterEmptyTextNodes)\n      .map((item) => blockToSolid(item, component, options, true))\n      .join('\\n');\n  }\n\n  if (isFragment) {\n    str += '</>';\n  } else {\n    str += `</${json.name}>`;\n  }\n\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/solid/helpers/styles.ts",
    "content": "import { MitosisNode } from '../../../types/mitosis-node';\nimport { ToSolidOptions } from '../types';\n\n// This should really be a preprocessor mapping the `class` attribute binding based on what other values have\n// to make this more pluggable\nexport const collectClassString = (json: MitosisNode, options: ToSolidOptions): string | null => {\n  const staticClasses: string[] = [];\n\n  if (json.properties.class) {\n    staticClasses.push(json.properties.class);\n    delete json.properties.class;\n  }\n  if (json.properties.className) {\n    staticClasses.push(json.properties.className);\n    delete json.properties.className;\n  }\n\n  const dynamicClasses: string[] = [];\n  if (typeof json.bindings.class?.code === 'string') {\n    dynamicClasses.push(json.bindings.class.code as any);\n    delete json.bindings.class;\n  }\n  if (typeof json.bindings.className?.code === 'string') {\n    dynamicClasses.push(json.bindings.className.code as any);\n    delete json.bindings.className;\n  }\n  if (\n    typeof json.bindings.css?.code === 'string' &&\n    json.bindings.css.code.trim().length > 4 &&\n    options.stylesType === 'styled-components'\n  ) {\n    dynamicClasses.push(`css(${json.bindings.css.code})`);\n  }\n  delete json.bindings.css;\n  const staticClassesString = staticClasses.join(' ');\n\n  const dynamicClassesString = dynamicClasses.join(\" + ' ' + \");\n\n  const hasStaticClasses = Boolean(staticClasses.length);\n  const hasDynamicClasses = Boolean(dynamicClasses.length);\n\n  if (hasStaticClasses && !hasDynamicClasses) {\n    return `\"${staticClassesString}\"`;\n  }\n\n  if (hasDynamicClasses && !hasStaticClasses) {\n    return `{${dynamicClassesString}}`;\n  }\n\n  if (hasDynamicClasses && hasStaticClasses) {\n    return `{\"${staticClassesString} \" + ${dynamicClassesString}}`;\n  }\n\n  return null;\n};\n"
  },
  {
    "path": "packages/core/src/generators/solid/index.ts",
    "content": "import { createSingleBinding } from '@/helpers/bindings';\nimport { createMitosisNode } from '@/helpers/create-mitosis-node';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { getComponentsUsed } from '@/helpers/get-components-used';\nimport { getRefs } from '@/helpers/get-refs';\nimport { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { isRootTextNode } from '@/helpers/is-root-text-node';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { checkIsDefined } from '@/helpers/nullable';\nimport { processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { hasCss } from '@/helpers/styles/helpers';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { uniq } from 'fp-ts/lib/Array';\nimport * as S from 'fp-ts/string';\nimport hash from 'hash-sum';\nimport traverse from 'neotraverse/legacy';\nimport { format } from 'prettier/standalone';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { hasGetContext } from '../helpers/context';\nimport { blockToSolid } from './blocks';\nimport { getState } from './state';\nimport { updateStateCode } from './state/helpers';\nimport { ToSolidOptions } from './types';\n\n// Transform <foo.bar key={value} /> to <Dynamic compnent={foo.bar} key={value} />\nfunction processDynamicComponents(json: MitosisComponent, options: ToSolidOptions) {\n  let found = false;\n  traverse(json).forEach((node) => {\n    if (isMitosisNode(node)) {\n      if (node.name.includes('.') && !node.name.endsWith('.Provider')) {\n        node.bindings.component = createSingleBinding({ code: node.name });\n        node.name = 'Dynamic';\n        found = true;\n      }\n    }\n  });\n  return found;\n}\n\nfunction getContextString(component: MitosisComponent, options: ToSolidOptions) {\n  let str = '';\n  for (const key in component.context.get) {\n    str += `\n      const ${key} = useContext(${component.context.get[key].name});\n    `;\n  }\n\n  return str;\n}\n\nconst getRefsString = (json: MitosisComponent, options: ToSolidOptions) =>\n  Array.from(getRefs(json))\n    .map((ref) => {\n      // fix prettier issue when encounter `let props.ref`\n      // Prettier playground: https://prettier.io/playground/#N4Igxg9gdgLgprEAuEAzArlMMCW0AEAsgJ4DCEAtgA7QIwAUVAThFQM5ICGUxAlPsAA6UfPgA2cGPmas2AOhxQq6GACU4qANzDRTSeiYj6O0fgA8i5VPx7UAXmAz2CpSvWoAhAF9RAegB8JqK8wl7CcAAeNExSACYanOhiUiTk1LSwmiAANCCsuNBsyKCcTCwA7gAKpQhFKJxi5ZzERbkARkycYADWkgDKnBRwADKKcMioDWxw7Z09-VRdigDmyDBM6DMg0xQ4axtbkVRwTDhDsA0AKidQpThwdZNi07lsKxIAiugQ8BNTWwArNgRPrvOBfH7jJBPF4gACO33glRY7GQIE4bAAtFA4HB4rEciB1pwcGIVmkKJw0Q0xIS3lBlhIAIIwdY4NoqOCVE6jHF-Z5bAAWMAoYgA6oKcPA2IswHA+rUpTgAG5S4hosBsVogZWbACSUHisD6YFOVBgTMNfRgxAk-NhMmmYs6VDRzAeJ2V41yimmMWRnGWlPtW0WTD9aJtxzYppw5sJzEUMDFOFiMEFyAAHAAGXJ6BE4PQBoNU6H-XIwThtFNpjNIABMuXQ00uVce5ZAcAobTx+OG3GW6EDcAAYhAmJTWStqSoICAvF4gA\n      if (ref.includes('.')) return '';\n      const typeParameter = (options.typescript && json['refs'][ref]?.typeParameter) || '';\n      return `let ${ref}${typeParameter ? ': ' + typeParameter : ''};`;\n    })\n    .join('\\n');\n\nfunction addProviderComponents(json: MitosisComponent, options: ToSolidOptions) {\n  for (const key in json.context.set) {\n    const { name, value, ref } = json.context.set[key];\n\n    const bindingValue = value\n      ? createSingleBinding({ code: stringifyContextValue(value) })\n      : ref\n      ? createSingleBinding({ code: ref })\n      : undefined;\n\n    json.children = [\n      createMitosisNode({\n        name: `${name}.Provider`,\n        children: json.children,\n        ...(bindingValue && { bindings: { value: bindingValue } }),\n      }),\n    ];\n  }\n}\n\nconst DEFAULT_OPTIONS: ToSolidOptions = {\n  state: 'signals',\n  stylesType: 'style-tag',\n};\n\nexport const componentToSolid: TranspilerGenerator<Partial<ToSolidOptions>> =\n  (passedOptions) =>\n  ({ component }) => {\n    let json = fastClone(component);\n\n    const options = initializeOptions({\n      target: 'solid',\n      component,\n      defaults: DEFAULT_OPTIONS,\n      userOptions: passedOptions,\n    });\n    options.plugins = [\n      ...(options.plugins || []),\n      processOnEventHooksPlugin(),\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        switch (codeType) {\n          case 'state':\n          case 'context-set':\n          case 'dynamic-jsx-elements':\n          case 'types':\n            return (c) => c;\n          case 'bindings':\n          case 'hooks':\n          case 'hooks-deps':\n          case 'hooks-deps-array':\n          case 'properties':\n            return updateStateCode({\n              component: json,\n              options,\n              updateSetters: codeType === 'properties' ? false : true,\n            });\n        }\n      }),\n    ];\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    addProviderComponents(json, options);\n    const componentHasStyles = hasCss(json);\n    const hasCustomStyles = !!json.style?.length;\n    const shouldInjectCustomStyles = hasCustomStyles && options.stylesType === 'styled-components';\n    const addWrapper =\n      json.children.filter(filterEmptyTextNodes).length !== 1 ||\n      options.stylesType === 'style-tag' ||\n      shouldInjectCustomStyles ||\n      isRootTextNode(json);\n\n    // we need to run this before we run the code processor plugin, so the dynamic component variables are transformed\n    const foundDynamicComponents = processDynamicComponents(json, options);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    stripMetaProperties(json);\n    const css = options.stylesType === 'style-tag' && collectCss(json, { prefix: hash(json) });\n\n    const state = getState({ json, options });\n    const componentsUsed = getComponentsUsed(json);\n\n    const hasShowComponent = componentsUsed.has('Show');\n    const hasForComponent = componentsUsed.has('For');\n\n    const solidJSImports = uniq(S.Eq)(\n      [\n        hasGetContext(json) ? 'useContext' : undefined,\n        hasShowComponent ? 'Show' : undefined,\n        hasForComponent ? 'For' : undefined,\n        json.hooks.onMount.length ? 'onMount' : undefined,\n        ...(json.hooks.onUpdate?.length ? ['on', 'createEffect', 'createMemo'] : []),\n        ...(state?.import.solidjs ?? []),\n      ].filter(checkIsDefined),\n    );\n\n    const storeImports = state?.import.store ?? [];\n\n    const propType = json.propsTypeRef || 'any';\n    const propsArgs = `props${options.typescript ? `:${propType}` : ''}`;\n\n    let str = dedent`\n    ${solidJSImports.length > 0 ? `import { ${solidJSImports.join(', ')} } from 'solid-js';` : ''}\n    ${!foundDynamicComponents ? '' : `import { Dynamic } from 'solid-js/web';`}\n    ${storeImports.length > 0 ? `import { ${storeImports.join(', ')} } from 'solid-js/store';` : ''}\n    ${\n      componentHasStyles && options.stylesType === 'styled-components'\n        ? 'import { css } from \"solid-styled-components\";'\n        : ``\n    }\n    ${json.types && options.typescript ? json.types.join('\\n') : ''}\n    ${renderPreComponent({\n      explicitImportFileExtension: options.explicitImportFileExtension,\n      component: json,\n      target: 'solid',\n    })}\n\n    function ${json.name}(${propsArgs}) {\n      ${state?.str ?? ''}\n\n      ${getRefsString(json, options)}\n      ${getContextString(json, options)}\n      ${json.hooks.onInit?.code ?? ''}\n\n      ${json.hooks.onMount.map((hook) => `onMount(() => { ${hook.code} })`).join('\\n')}\n      ${\n        json.hooks.onUpdate\n          ? json.hooks.onUpdate\n              .map((hook, index) => {\n                // TO-DO: support `onUpdate` without `deps`\n                if (!hook.deps) return '';\n\n                const hookName = `onUpdateFn_${index}`;\n\n                const depsArray = hook.deps\n                  .slice(1, hook.deps.length - 1)\n                  .split(',')\n                  .map((x) => x.trim());\n\n                const getReactiveDepName = (dep: string) => {\n                  const newLocal = dep.replace(/(\\.|\\?|\\(|\\)|\\[|\\])/g, '_');\n                  return `${hookName}_${newLocal}`;\n                };\n\n                const needsMemo = (dep: string) => true;\n\n                const reactiveDepsWorkaround = depsArray\n                  .filter(needsMemo)\n                  .map((dep) => `const ${getReactiveDepName(dep)} = createMemo(() => ${dep});`)\n                  .join('\\n');\n\n                const depsArrayStr = depsArray\n                  .map((x) => (needsMemo(x) ? `${getReactiveDepName(x)}()` : x))\n                  .join(', ');\n\n                return `\n                    ${reactiveDepsWorkaround}\n                    function ${hookName}() { ${hook.code} };\n                    createEffect(on(() => [${depsArrayStr}], ${hookName}));\n                  `;\n              })\n              .join('\\n')\n          : ''\n      }\n\n      return (${addWrapper ? '<>' : ''}\n        ${json.children\n          .filter(filterEmptyTextNodes)\n          .map((item) => blockToSolid(item, component, options, addWrapper))\n          .join('\\n')}\n        ${\n          options.stylesType === 'style-tag' && css && css.trim().length > 4\n            ? `<style>{\\`${css}\\`}</style>`\n            : ''\n        }\n        ${shouldInjectCustomStyles ? `<style>{\\`${json.style}\\`}</style>` : ''}\n        ${addWrapper ? '</>' : ''})\n    }\n\n    export default ${json.name};\n  `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      str = format(str, {\n        parser: 'typescript',\n        plugins: [require('prettier/parser-typescript'), require('prettier/parser-postcss')],\n      });\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/solid/state/helpers.ts",
    "content": "import { types } from '@babel/core';\nimport { flow, identity } from 'fp-ts/lib/function';\nimport { capitalize } from '../../../helpers/capitalize';\nimport { replaceStateIdentifier } from '../../../helpers/replace-identifiers';\nimport { stripStateAndPropsRefs } from '../../../helpers/strip-state-and-props-refs';\nimport { transformStateSetters } from '../../../helpers/transform-state-setters';\nimport { MitosisComponent } from '../../../types/mitosis-component';\nimport { ToSolidOptions } from '../types';\n\nexport const getStateSetterName = (stateName: string) => `set${capitalize(stateName)}`;\n\nexport const getStateTypeForValue = ({\n  value,\n  component,\n  options,\n}: {\n  value: string;\n  component: MitosisComponent;\n  options: ToSolidOptions;\n}) => {\n  // e.g. state.useContent?.blocks[0].id => useContent\n  const extractStateSliceName = stripStateAndPropsRefs(value).split('.')[0].split('?')[0];\n\n  const stateOverrideForValue = component.meta?.useMetadata?.solid?.state?.[extractStateSliceName];\n\n  const stateType = stateOverrideForValue || options.state;\n\n  return stateType;\n};\n\nconst getNewStateSetterExpression =\n  (stateType: Exclude<ToSolidOptions['state'], 'mutable'>) =>\n  ({\n    path,\n    propertyName,\n  }: {\n    path: babel.NodePath<babel.types.AssignmentExpression>;\n    propertyName: string;\n  }): babel.types.CallExpression => {\n    /**\n     * passes the value to the setter function\n     * ```ts\n     * // BEFORE\n     * state.count = newCount\n     * // AFTER\n     * setCount(newCount)\n     * ```\n     */\n    const callValueSetter = (args: types.Expression) =>\n      types.callExpression(types.identifier(getStateSetterName(propertyName)), [args]);\n\n    switch (stateType) {\n      case 'signals':\n        return callValueSetter(path.node.right);\n      case 'store':\n        /**\n         * Wrap value in a reconcile() call for Stores updates\n         * ```ts\n         * // BEFORE\n         * state.count = newCount\n         * // AFTER\n         * setCount(reconcile(newCount))\n         * ```\n         */\n        return callValueSetter(\n          types.callExpression(types.identifier('reconcile'), [path.node.right]),\n        );\n    }\n  };\nconst updateStateSettersInCode =\n  ({ options, component }: { options: ToSolidOptions; component: MitosisComponent }) =>\n  (value: string): string => {\n    const stateType = getStateTypeForValue({ value, component, options });\n\n    switch (stateType) {\n      case 'mutable':\n        return value;\n      case 'store':\n      case 'signals':\n        try {\n          return transformStateSetters({\n            value,\n            transformer: getNewStateSetterExpression(stateType),\n          });\n        } catch (error) {\n          console.error(`[Solid.js]: could not update state setters in ${stateType} code`, value);\n          throw error;\n        }\n    }\n  };\n\nconst updateStateGettersInCode = (options: ToSolidOptions, component: MitosisComponent) =>\n  replaceStateIdentifier((name) => {\n    const stateType = getStateTypeForValue({ value: name, component, options });\n    const state = component.state[name];\n    switch (stateType) {\n      case 'signals':\n        if (\n          // signal accessors are lazy, so we need to add a function call to property calls\n          state?.type === 'property' ||\n          // getters become plain functions, requiring a function call to access their value\n          state?.type === 'getter'\n        ) {\n          return `${name}()`;\n        } else {\n          return name;\n        }\n\n      case 'store':\n      case 'mutable':\n        return name;\n    }\n  });\n\nexport const updateStateCode = ({\n  options,\n  component,\n  updateSetters = true,\n}: {\n  options: ToSolidOptions;\n  component: MitosisComponent;\n  updateSetters?: boolean;\n}) =>\n  flow(\n    updateSetters ? updateStateSettersInCode({ options, component }) : identity,\n    updateStateGettersInCode(options, component),\n    (x) => x.trim(),\n  );\n"
  },
  {
    "path": "packages/core/src/generators/solid/state/index.ts",
    "content": "export { getState } from './state';\n"
  },
  {
    "path": "packages/core/src/generators/solid/state/signals.ts",
    "content": "import { pipe } from 'fp-ts/lib/function';\nimport { extractGetterCodeBlock, prefixWithFunction } from '../../../helpers/patterns';\nimport { MitosisComponent, MitosisState, StateValue } from '../../../types/mitosis-component';\nimport { ToSolidOptions } from '../types';\nimport { getStateSetterName, updateStateCode } from './helpers';\n\nconst processSignalStateValue = ({\n  options,\n  component,\n}: {\n  options: ToSolidOptions;\n  component: MitosisComponent;\n}) => {\n  const mapValue = updateStateCode({ options, component });\n\n  return ([key, stateVal]: [key: string, stateVal: StateValue | undefined]) => {\n    if (!stateVal) {\n      return '';\n    }\n\n    const getDefaultCase = () =>\n      pipe(\n        value,\n        mapValue,\n        (x) => `const [${key}, ${getStateSetterName(key)}] = createSignal(${x})`,\n      );\n\n    const value = stateVal.code;\n    const type = stateVal.type;\n    if (typeof value === 'string') {\n      switch (type) {\n        case 'getter':\n          return pipe(\n            value,\n            mapValue,\n            extractGetterCodeBlock,\n            (x) => `const ${key} = createMemo(() => {${x}})`,\n          );\n        case 'function':\n          return mapValue(value);\n        case 'method':\n          return pipe(value, prefixWithFunction, mapValue);\n        default:\n          return getDefaultCase();\n      }\n    } else {\n      return getDefaultCase();\n    }\n  };\n};\n\nconst LINE_ITEM_DELIMITER = '\\n\\n\\n';\nexport const getSignalsCode = ({\n  json,\n  options,\n  state,\n}: {\n  json: MitosisComponent;\n  options: ToSolidOptions;\n  state: MitosisState;\n}) =>\n  Object.entries(state)\n    .map(processSignalStateValue({ options, component: json }))\n    /**\n     * We need to sort state so that signals are at the top.\n     */\n    .sort((a, b) => {\n      const aHasSignal = a.includes('createSignal(');\n      const bHasSignal = b.includes('createSignal(');\n      if (aHasSignal && !bHasSignal) {\n        return -1;\n      } else if (!aHasSignal && bHasSignal) {\n        return 1;\n      } else {\n        return 0;\n      }\n    })\n    .join(LINE_ITEM_DELIMITER);\n"
  },
  {
    "path": "packages/core/src/generators/solid/state/state.ts",
    "content": "import { pipe } from 'fp-ts/lib/function';\nimport { getMemberObjectString } from '../../../helpers/get-state-object-string';\nimport { checkHasState } from '../../../helpers/state';\nimport { MitosisComponent, MitosisState } from '../../../types/mitosis-component';\nimport { ToSolidOptions } from '../types';\nimport { getStateTypeForValue } from './helpers';\nimport { getSignalsCode } from './signals';\nimport { getStoreCode } from './store';\n\ntype State = {\n  str: string;\n  import: {\n    store?: string[];\n    solidjs?: string[];\n  };\n};\n\nexport const getState = ({\n  json,\n  options,\n}: {\n  json: MitosisComponent;\n  options: ToSolidOptions;\n}): State | undefined => {\n  const hasState = checkHasState(json);\n\n  if (!hasState) {\n    return undefined;\n  }\n\n  // unbundle state in case the user provides a type override of one of the state values\n  const { mutable, signal, store } = Object.entries(json.state).reduce(\n    (acc, [key, value]) => {\n      const stateType = getStateTypeForValue({ value: key, component: json, options });\n\n      switch (stateType) {\n        case 'mutable':\n          return { ...acc, mutable: { ...acc.mutable, [key]: value } };\n        case 'signals':\n          return { ...acc, signal: { ...acc.signal, [key]: value } };\n        case 'store':\n          return { ...acc, store: { ...acc.store, [key]: value } };\n      }\n    },\n    { mutable: {}, signal: {}, store: {} } as {\n      mutable: MitosisState;\n      signal: MitosisState;\n      store: MitosisState;\n    },\n  );\n\n  const hasMutableState = Object.keys(mutable).length > 0;\n  const hasSignalState = Object.keys(signal).length > 0;\n  const hasStoreState = Object.keys(store).length > 0;\n\n  const mutableStateStr = hasMutableState\n    ? pipe(mutable, getMemberObjectString, (str) => `const state = createMutable(${str});`)\n    : '';\n  const signalStateStr = hasSignalState ? getSignalsCode({ json, options, state: signal }) : '';\n  const storeStateStr = hasStoreState ? getStoreCode({ json, options, state: store }) : '';\n\n  const stateStr = `\n  ${mutableStateStr}\n  ${signalStateStr}\n  ${storeStateStr}\n  `;\n\n  const importObj: State['import'] = {\n    store: [\n      ...(hasMutableState ? ['createMutable'] : []),\n      ...(hasStoreState ? ['createStore', 'reconcile'] : []),\n    ],\n    solidjs: [\n      ...(hasSignalState ? ['createSignal', 'createMemo'] : []),\n      ...(hasStoreState ? ['createEffect', 'on'] : []),\n    ],\n  };\n\n  return {\n    str: stateStr,\n    import: importObj,\n  };\n};\n"
  },
  {
    "path": "packages/core/src/generators/solid/state/store.ts",
    "content": "import { types } from '@babel/core';\nimport { pipe } from 'fp-ts/lib/function';\nimport { babelTransformExpression } from '../../../helpers/babel-transform';\nimport { capitalize } from '../../../helpers/capitalize';\nimport { prefixWithFunction, replaceGetterWithFunction } from '../../../helpers/patterns';\nimport { MitosisComponent, MitosisState, StateValue } from '../../../types/mitosis-component';\nimport { ToSolidOptions } from '../types';\nimport { getStateSetterName, updateStateCode } from './helpers';\n\nconst collectUsedStateAndPropsInFunction = (fnValue: string) => {\n  const stateUsed = new Set<string>();\n  const propsUsed = new Set<string>();\n  babelTransformExpression(fnValue, {\n    MemberExpression(path) {\n      const { node } = path;\n      if (types.isIdentifier(node.object)) {\n        if (types.isIdentifier(node.property)) {\n          if (node.object.name === 'state') {\n            stateUsed.add(`state.${node.property.name}`);\n          } else if (node.object.name === 'props') {\n            propsUsed.add(`props.${node.property.name}`);\n          }\n        }\n      }\n    },\n  });\n  return { stateUsed, propsUsed };\n};\n\nexport const getStoreCode = ({\n  json: component,\n  options,\n  state,\n}: {\n  json: MitosisComponent;\n  options: ToSolidOptions;\n  state: MitosisState;\n}) => {\n  const mapValue = updateStateCode({ options, component });\n\n  const stateUpdater = ([key, stateVal]: [\n    key: string,\n    stateVal: StateValue | undefined,\n  ]): string => {\n    if (!stateVal) {\n      return '';\n    }\n\n    const getCreateStoreStr = (initialValue: string) =>\n      `const [${key}, ${getStateSetterName(key)}] = createStore(${initialValue})`;\n\n    const getDefaultCase = () => pipe(value, mapValue, getCreateStoreStr);\n\n    const value = stateVal.code;\n    const type = stateVal.type;\n    if (typeof value === 'string') {\n      switch (type) {\n        case 'getter':\n          const getterValueAsFunction = replaceGetterWithFunction(value);\n          const { stateUsed, propsUsed } =\n            collectUsedStateAndPropsInFunction(getterValueAsFunction);\n\n          const fnValueWithMappedRefs = mapValue(getterValueAsFunction);\n\n          const FUNCTION_NAME = `update${capitalize(key)}`;\n          const deps = [\n            ...Array.from(stateUsed).map(\n              updateStateCode({\n                options,\n                component,\n                // there are no setters in deps\n                updateSetters: false,\n              }),\n            ),\n            ...Array.from(propsUsed),\n          ].join(', ');\n          return `\n          const ${FUNCTION_NAME} = ${fnValueWithMappedRefs}\n          ${getCreateStoreStr(`${FUNCTION_NAME}()`)}\n          createEffect(on(() => [${deps}], () => ${getStateSetterName(\n            key,\n          )}(reconcile(${FUNCTION_NAME}()))))\n          `;\n        case 'function':\n          return mapValue(value);\n        case 'method':\n          return pipe(value, prefixWithFunction, mapValue);\n        default:\n          return getDefaultCase();\n      }\n    } else {\n      return getDefaultCase();\n    }\n  };\n\n  return Object.entries(state).map(stateUpdater).join(LINE_ITEM_DELIMITER);\n};\n\nconst LINE_ITEM_DELIMITER = '\\n\\n\\n';\n"
  },
  {
    "path": "packages/core/src/generators/solid/types.ts",
    "content": "import { Dictionary } from '@/helpers/typescript';\nimport { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport type SolidState = 'mutable' | 'signals' | 'store';\n\nexport interface ToSolidOptions extends BaseTranspilerOptions {\n  state: SolidState;\n  stylesType?: 'styled-components' | 'style-tag';\n}\n\nexport type SolidMetadata = {\n  state?: Dictionary<SolidState>;\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/blocks.ts",
    "content": "import { SELF_CLOSING_HTML_TAGS } from '@/constants/html_tags';\nimport { getTagName } from '@/generators/stencil/helpers';\nimport { collectClassString } from '@/generators/stencil/helpers/collect-class-string';\nimport { ToStencilOptions } from '@/generators/stencil/types';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { getForArguments } from '@/helpers/nodes/for';\nimport { transformAttributeToJSX } from '@/helpers/transform-to-jsx';\nimport { MitosisNode, checkIsForNode } from '@/types/mitosis-node';\n\nexport const blockToStencil = ({\n  json,\n  options = {},\n  insideJsx,\n  rootRef,\n  childComponents,\n}: {\n  json: MitosisNode;\n  options: ToStencilOptions;\n  insideJsx?: boolean;\n  rootRef?: string;\n  childComponents: string[];\n}): string => {\n  let blockName = childComponents.find((impName) => impName === json.name)\n    ? getTagName(json.name, options)\n    : json.name;\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  if (json.bindings._text?.code) {\n    if (json.bindings._text?.code === 'this.children') {\n      // Replace this.children with default <slot>\n      return '<slot></slot>';\n    }\n\n    let code = json.bindings._text.code;\n\n    if (insideJsx) {\n      return `{${code}}`;\n    }\n    return code;\n  }\n\n  if (checkIsForNode(json) && json.bindings.each?.code) {\n    const wrap = json.children.length !== 1;\n    const forArgs = getForArguments(json).join(', ');\n\n    const expression = `${json.bindings.each?.code}?.map((${forArgs}) => (\n      ${wrap ? '<Fragment>' : ''}\n      ${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToStencil({ json: item, options, insideJsx: wrap, childComponents }))\n        .join('\\n')}\n      ${wrap ? '</Fragment>' : ''}\n    ))`;\n    if (insideJsx) {\n      return `{${expression}}`;\n    } else {\n      return expression;\n    }\n  } else if (blockName === 'Show' && json.bindings.when?.code) {\n    const wrap = json.children.length !== 1;\n    const expression = `${json.bindings.when?.code} ? (\n      ${wrap ? '<Fragment>' : ''}\n      ${json.children\n        .filter(filterEmptyTextNodes)\n        .map((item) => blockToStencil({ json: item, options, insideJsx: wrap, childComponents }))\n        .join('\\n')}\n      ${wrap ? '</Fragment>' : ''}\n    ) : ${\n      !json.meta.else\n        ? 'null'\n        : `(${blockToStencil({\n            json: json.meta.else as any,\n            options,\n            childComponents,\n          })})`\n    }`;\n\n    if (insideJsx) {\n      return `{${expression}}`;\n    } else {\n      return expression;\n    }\n  } else if (blockName === 'Slot') {\n    blockName = 'slot';\n  }\n\n  let str = '';\n\n  str += `<${blockName} `;\n\n  const classString = collectClassString(json);\n  if (classString) {\n    str += ` class=${classString} `;\n  }\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    // Stencil uses ´htmlFor´ (JSX) instead of ´for´ (HTML)\n    str += ` ${transformAttributeToJSX(key)}=\"${value}\" `;\n  }\n  for (const key in json.bindings) {\n    const { code, arguments: cusArgs = [], type } = json.bindings[key]!;\n    if (type === 'spread') {\n      str += ` {...(${code})} `;\n    } else if (key === 'ref') {\n      str += ` ref={(el:any) => {\n        ${rootRef ? `this.${rootRef} = el` : ''}\n        ${code.startsWith('this.') ? code : `this.${code}`} = el}\n      } `;\n    } else if (checkIsEvent(key)) {\n      const asyncKeyword = json.bindings[key]?.async ? 'async ' : '';\n      str += ` ${key}={${asyncKeyword}(${cusArgs.join(',')}) => ${code}} `;\n    } else {\n      str += ` ${key}={${code}} `;\n    }\n  }\n  if (SELF_CLOSING_HTML_TAGS.has(blockName)) {\n    return str + ' />';\n  }\n  str += '>';\n  if (json.children) {\n    str += json.children\n      .map((item) =>\n        blockToStencil({\n          json: item,\n          options,\n          insideJsx: true,\n          childComponents,\n        }),\n      )\n      .join('\\n');\n  }\n\n  str += `</${blockName}>`;\n\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/component.ts",
    "content": "import { stringifySingleScopeOnMount } from '@/generators/helpers/on-mount';\nimport { blockToStencil } from '@/generators/stencil/blocks';\nimport {\n  getDepsAsArray,\n  getExportsAndLocal,\n  getImports,\n  getPropsAsCode,\n  getStencilCoreImportsAsString,\n  getTagName,\n  needsWrap,\n} from '@/generators/stencil/helpers';\nimport { getCodeProcessorPlugins } from '@/generators/stencil/plugins/get-code-processor-plugins';\nimport { StencilPropOption, ToStencilOptions } from '@/generators/stencil/types';\nimport { ProcessBindingOptions } from '@/helpers/class-components';\nimport { dashCase } from '@/helpers/dash-case';\nimport { dedent } from '@/helpers/dedent';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getChildComponents } from '@/helpers/get-child-components';\nimport { getProps } from '@/helpers/get-props';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { indent } from '@/helpers/indent';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport {\n  ROOT_REF,\n  getAddAttributePassingRef,\n  getAttributePassingString,\n  shouldAddAttributePassing,\n} from '@/helpers/web-components/attribute-passing';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '@/modules/plugins';\nimport { BaseHook, MitosisState } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { format } from 'prettier/standalone';\n\nexport const componentToStencil: TranspilerGenerator<ToStencilOptions> = (\n  _options = {\n    typescript: true, // Stencil is uses .tsx always\n  },\n) => {\n  return ({ component }) => {\n    let json = fastClone(component);\n    const options: ToStencilOptions = initializeOptions({\n      target: 'stencil',\n      component,\n      defaults: _options,\n    });\n\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n\n    mapRefs(json, (refName) => `this.${refName}`);\n    let css = collectCss(json);\n    let props: string[] = Array.from(getProps(json));\n    const events: string[] = props.filter((prop) => checkIsEvent(prop));\n    const defaultProps: MitosisState | undefined = json.defaultProps;\n    const childComponents: string[] = getChildComponents(json);\n\n    props = props.filter((prop) => {\n      // Stencil doesn't need children as a prop\n      return prop !== 'children';\n    });\n    const processBindingOptions: ProcessBindingOptions = { events, props, target: 'stencil' };\n\n    options.plugins = getCodeProcessorPlugins(json, options, processBindingOptions);\n\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    stripMetaProperties(json);\n\n    const dataString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: true,\n      functions: false,\n      getters: false,\n      keyPrefix: '@State() ',\n    });\n\n    const methodsString = getStateObjectStringFromComponent(json, {\n      format: 'class',\n      data: false,\n      functions: true,\n      getters: true,\n    });\n\n    let refs = json.refs\n      ? Object.entries(json.refs)\n          .map(([key, value]) => `private ${key}!: ${value.typeParameter ?? 'HTMLElement'};`)\n          .join('\\n')\n      : '';\n\n    const wrap = needsWrap(json.children);\n    const withAttributePassing = !wrap && shouldAddAttributePassing(json, options);\n    const rootRef = getAddAttributePassingRef(json, options);\n    if (withAttributePassing && !refs.includes(rootRef)) {\n      refs += `\\nprivate ${rootRef}!: HTMLElement;`;\n    }\n\n    if (options.prettier !== false) {\n      try {\n        css = format(css, {\n          parser: 'css',\n          plugins: [require('prettier/parser-postcss')],\n        });\n      } catch (err) {\n        console.warn('Could not format css', err);\n      }\n    }\n\n    let tagName = getTagName(json.name, options);\n    if (json.meta.useMetadata?.tagName) {\n      // Deprecated option, we shouldn't use this, instead change the name of your Mitosis component\n      tagName = json.meta.useMetadata?.tagName;\n    }\n\n    const noDependencyOnUpdateHooks = json.hooks.onUpdate?.filter((hook) => !hook.deps) ?? [];\n    /*\n     * We want to create a function for every onUpdate hook that has dependencies.\n     * We call the function once in \"componentDidLoad\"\n     * And we create \"Watch\" decorators for every dependency\n     */\n    const dependencyOnUpdateHooks = json.hooks.onUpdate?.filter((hook) => hook.deps) ?? [];\n\n    const coreImports = getStencilCoreImportsAsString({\n      wrap,\n      events,\n      props,\n      dataString,\n      watch: Boolean(dependencyOnUpdateHooks?.length),\n    });\n\n    const propOptions: Record<string, StencilPropOption> = {\n      ...options.propOptions,\n      ...json.meta.useMetadata?.stencil?.propOptions,\n    };\n\n    let str = dedent`\n      ${getImports(json, options, childComponents)}\n      \n      import { ${coreImports} } from '@stencil/core';\n      \n      @Component({\n        tag: '${tagName}',\n        ${json.meta.useMetadata?.isAttachedToShadowDom ? 'shadow: true,' : ''}\n        ${\n          css.length\n            ? `styles: \\`\n          ${indent(css, 8)}\\`,`\n            : ''\n        }\n      })\n      export class ${json.name} {\n          ${refs}\n          ${getPropsAsCode({ props, json, defaultProps, propOptions })}\n          ${dataString}\n          ${methodsString}\n          ${getExportsAndLocal(json)}\n          ${withAttributePassing ? getAttributePassingString(true) : ''}\n          \n          ${dependencyOnUpdateHooks\n            .map((hook: BaseHook, index: number) => {\n              return `\n            watch${index}Fn() { \n              ${hook.code} \n            }\n            \n            ${getDepsAsArray(hook.deps!)\n              .map((dep) => `@Watch(\"${dep}\")`)\n              .join('\\n')}\n              watch${index}(){\n                this.watch${index}Fn();\n              }            \n            `;\n            })\n            .join('\\n')}\n  \n          ${`componentDidLoad() { \n              ${\n                withAttributePassing\n                  ? `this.enableAttributePassing(this.${rootRef}, \"${dashCase(json.name)}\");`\n                  : ''\n              }\n              ${json.hooks.onMount.length ? stringifySingleScopeOnMount(json) : ''} \n              ${dependencyOnUpdateHooks\n                .map((_, index: number) => `this.watch${index}Fn();`)\n                .join('\\n')}\n              }`}\n          ${\n            !json.hooks.onUnMount?.code\n              ? ''\n              : `disconnectedCallback() { ${json.hooks.onUnMount.code} }`\n          }\n          ${\n            noDependencyOnUpdateHooks.length\n              ? `componentDidUpdate() { ${noDependencyOnUpdateHooks\n                  .map((hook) => hook.code)\n                  .join('\\n')} }`\n              : ''\n          }\n  \n        render() {\n          return (${wrap ? '<Host>' : ''}\n  \n            ${json.children\n              .map((item) =>\n                blockToStencil({\n                  json: item,\n                  options,\n                  insideJsx: true,\n                  childComponents,\n                  rootRef: withAttributePassing && rootRef === ROOT_REF ? rootRef : undefined, // only pass rootRef if it's not the default\n                }),\n              )\n              .join('\\n')}\n  \n          ${wrap ? '</Host>' : ''})\n        }\n      }\n    `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    if (options.prettier !== false) {\n      str = format(str, {\n        parser: 'typescript',\n        plugins: [require('prettier/parser-typescript')],\n      });\n    }\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/helpers/collect-class-string.ts",
    "content": "import { MitosisNode } from '@/types/mitosis-node';\n\nconst bindingOpenChar = '{';\nconst bindingCloseChar = '}';\n\n// This should really be a preprocessor mapping the `class` attribute binding based on what other values have\n// to make this more pluggable\nexport const collectClassString = (json: MitosisNode): string | null => {\n  const staticClasses: string[] = [];\n\n  if (json.properties.class) {\n    staticClasses.push(json.properties.class);\n    delete json.properties.class;\n  }\n  if (json.properties.className) {\n    staticClasses.push(json.properties.className);\n    delete json.properties.className;\n  }\n\n  const dynamicClasses: string[] = [];\n  if (typeof json.bindings.class?.code === 'string') {\n    dynamicClasses.push(json.bindings.class.code);\n    delete json.bindings.class;\n  }\n  if (typeof json.bindings.className?.code === 'string') {\n    dynamicClasses.push(json.bindings.className.code);\n    delete json.bindings.className;\n  }\n\n  const staticClassesString = staticClasses.join(' ');\n\n  const dynamicClassesString = dynamicClasses.join(\" + ' ' + \");\n\n  const hasStaticClasses = Boolean(staticClasses.length);\n\n  const hasDynamicClasses = Boolean(dynamicClasses.length);\n\n  if (hasStaticClasses && !hasDynamicClasses) {\n    return `\"${staticClassesString}\"`;\n  }\n\n  if (hasDynamicClasses && !hasStaticClasses) {\n    return `${bindingOpenChar}${dynamicClassesString}${bindingCloseChar}`;\n  }\n\n  if (hasDynamicClasses && hasStaticClasses) {\n    return `${bindingOpenChar}\"${staticClassesString} \" + ${dynamicClassesString}${bindingCloseChar}`;\n  }\n\n  return null;\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/helpers/index.ts",
    "content": "import { StencilPropOption, ToStencilOptions } from '@/generators/stencil/types';\nimport { dashCase } from '@/helpers/dash-case';\nimport { checkIsEvent, getEventNameWithoutOn } from '@/helpers/event-handlers';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { MitosisComponent, MitosisState } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\n\nexport const getTagName = (name: string, { prefix }: ToStencilOptions): string => {\n  const dashName = dashCase(name);\n\n  if (prefix) {\n    const dashPrefix = prefix.endsWith('-') ? prefix : `${prefix}-`;\n    if (!dashName.startsWith(dashPrefix)) {\n      return `${dashPrefix}${dashName}`;\n    }\n  }\n\n  return dashName;\n};\n\nexport const getPropsAsCode = ({\n  props,\n  propOptions,\n  defaultProps,\n  json,\n}: {\n  props: string[];\n  json: MitosisComponent;\n  defaultProps?: MitosisState | undefined;\n  propOptions: Record<string, StencilPropOption>;\n}): string => {\n  const propsTypeRef: string | undefined = json.propsTypeRef;\n  const internalTypes: string[] | undefined = json.types;\n  const isInternalType =\n    propsTypeRef && internalTypes && internalTypes.find((iType) => iType.includes(propsTypeRef));\n\n  return props\n    .map((item: string) => {\n      const defaultProp: string | undefined = defaultProps ? defaultProps[item]?.code : undefined;\n      const defaultPropString = defaultProp ? ` = ${defaultProp}` : '';\n      const propOption = propOptions[item];\n\n      const hasTyping =\n        propsTypeRef &&\n        propsTypeRef !== 'any' &&\n        propsTypeRef !== 'unknown' &&\n        propsTypeRef !== 'never' &&\n        !isInternalType;\n\n      if (checkIsEvent(item)) {\n        // Stencil adds \"on\" to every `@Event` so we need to remove \"on\" from event props\n        // https://stenciljs.com/docs/events#using-events-in-jsx\n        const eventType = hasTyping\n          ? `EventEmitter<Parameters<Required<${propsTypeRef}>[\"${item}\"]>[number]> | void`\n          : 'any';\n\n        return `@Event() ${getEventNameWithoutOn(item)}: ${eventType}${defaultPropString}`;\n      }\n\n      const propType = hasTyping ? `${propsTypeRef}[\"${item}\"]` : 'any';\n      return `@Prop(${\n        propOption ? JSON.stringify(propOption) : ''\n      }) ${item}: ${propType}${defaultPropString}`;\n    })\n    .join(';\\n');\n};\n\n/**\n * Check for root element if it needs a wrapping <Host>\n * @param children\n */\nexport const needsWrap = (children: MitosisNode[]): boolean => {\n  if (children.length !== 1) {\n    return true;\n  } else if (children.length === 1) {\n    const firstChild = children.at(0);\n    if (firstChild?.name === 'Show' || firstChild?.name === 'For') {\n      return true;\n    }\n  }\n\n  return false;\n};\n\n/**\n * Dynamically creates all imports from `@stencil/core`\n * @param wrap\n * @param events\n * @param props\n * @param dataString\n * @param watch\n */\nexport const getStencilCoreImportsAsString = ({\n  wrap,\n  events,\n  props,\n  dataString,\n  watch,\n}: {\n  wrap: boolean;\n  events: string[];\n  props: string[];\n  dataString: string;\n  watch: boolean;\n}): string => {\n  const stencilCoreImports: Record<string, boolean> = {\n    Component: true,\n    h: true,\n    Fragment: true,\n    Host: wrap,\n    Watch: watch,\n    Event: events.length > 0,\n    EventEmitter: events.length > 0,\n    Prop: props.length > 0,\n    State: dataString.length > 0,\n  };\n  return Object.entries(stencilCoreImports)\n    .map(([key, bool]) => (bool ? key : ''))\n    .filter((key) => !!key)\n    .join(', ');\n};\n\nexport const getImports = (\n  json: MitosisComponent,\n  options: ToStencilOptions,\n  childComponents: string[],\n) => {\n  return renderPreComponent({\n    explicitImportFileExtension: options.explicitImportFileExtension,\n    component: json,\n    target: 'stencil',\n    excludeExportAndLocal: true,\n    importMapper: (_: any, theImport: any, importedValues: any) => {\n      const childImport = importedValues.defaultImport;\n      if (childImport && childComponents.includes(childImport)) {\n        return `import {${childImport}} from '${theImport.path}';`;\n      }\n\n      return undefined;\n    },\n  });\n};\n\n/**\n * Converts the deps string into an array of strings\n * @param deps The hook dependencies as string e.g.: \"[this.a,this.b]\"\n */\nexport const getDepsAsArray = (deps: string): string[] => {\n  return deps\n    .replace('[', '')\n    .replace(']', '')\n    .replaceAll('this.', '')\n    .split(',')\n    .map((dep) => dep.trim());\n};\n\nexport const getExportsAndLocal = (json: MitosisComponent) => {\n  return Object.entries(json.exports || {})\n    .map(([key, { usedInLocal, code }]) => {\n      if (usedInLocal) {\n        return `${key} = ${code.substring(code.indexOf('=') + 1)}`;\n      }\n\n      return '';\n    })\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/index.ts",
    "content": "export * from './component';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/stencil/plugins/get-code-processor-plugins.ts",
    "content": "import { ToStencilOptions } from '@/generators/stencil/types';\nimport { ProcessBindingOptions, processClassComponentBinding } from '@/helpers/class-components';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { MitosisComponent } from '@/types/mitosis-component';\n\nexport const getCodeProcessorPlugins = (\n  json: MitosisComponent,\n  options: ToStencilOptions,\n  processBindingOptions: ProcessBindingOptions,\n) => {\n  return [\n    ...(options.plugins || []),\n    CODE_PROCESSOR_PLUGIN((codeType) => {\n      switch (codeType) {\n        case 'bindings':\n        case 'properties':\n        case 'hooks':\n        case 'hooks-deps':\n        case 'hooks-deps-array':\n        case 'state':\n        case 'context-set':\n        case 'dynamic-jsx-elements':\n        case 'types':\n          return (code) => processClassComponentBinding(json, code, processBindingOptions);\n      }\n    }),\n  ];\n};\n"
  },
  {
    "path": "packages/core/src/generators/stencil/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\n// https://stenciljs.com/docs/properties#prop-options\nexport interface StencilPropOption {\n  attribute?: string;\n  mutable?: boolean;\n  reflect?: boolean;\n}\n\nexport interface StencilPropOptions {\n  /**\n   * Add additional options for Stencil properties: https://stenciljs.com/docs/properties#prop-options.\n   * You need to map your properties you provide to the component.\n   *\n   * Example:\n   * ```tsx\n   *  propOptions: {\n   *             className: {\n   *                 attribute: 'classname',\n   *                 mutable: false,\n   *                 reflect: false,\n   *             },\n   *         }\n   * ```\n   */\n  propOptions?: Record<string, StencilPropOption>;\n}\n\nexport interface ToStencilOptions extends BaseTranspilerOptions, StencilPropOptions {\n  /**\n   * Add a prefix for every component like `my`.\n   * A Stencil component needs a prefix with a dash.\n   * You don't need this option if your Mitosis component includes the prefix already:\n   *\n   * Error: `export default function Button ...` ->  tag: 'button'\n   * Success: `export default function MyButton ...` ->  tag: 'my-button'\n   * Success: prefix=\"my\" + `export default function Button ...` ->  tag: 'my-button'\n   */\n  prefix?: string;\n}\n\nexport type StencilMetadata = {} & StencilPropOptions;\n"
  },
  {
    "path": "packages/core/src/generators/svelte/blocks.ts",
    "content": "import { createSingleBinding } from '@/helpers/bindings';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport isChildren from '@/helpers/is-children';\nimport { isUpperCase } from '@/helpers/is-upper-case';\nimport { getForArguments } from '@/helpers/nodes/for';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { isSlotProperty, stripSlotPrefix, toKebabSlot } from '@/helpers/slots';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { BaseNode, Binding, ForNode, MitosisNode } from '@/types/mitosis-node';\nimport { SELF_CLOSING_HTML_TAGS, VALID_HTML_TAGS } from '../../constants/html_tags';\nimport { stripStateAndProps } from './helpers';\nimport { ToSvelteOptions } from './types';\n\n/**\n * blockToSvelte executed after stripStateAndProps,\n * when stripStateAndProps is executed,\n * SLOT_PREFIX from `slot` change to `$$slots.`\n */\nconst SLOT_PREFIX = '$$slots.';\n\nconst mappers: {\n  For: BlockToSvelte<ForNode>;\n  Fragment: BlockToSvelte;\n  Show: BlockToSvelte;\n  Slot: BlockToSvelte;\n  style: BlockToSvelte;\n  script: BlockToSvelte;\n} = {\n  style: ({ json, options, parentComponent }) => {\n    let props = '';\n    for (const key in json.properties) {\n      const value = json.properties[key];\n      props += ` ${key}=\"${value}\" `;\n    }\n\n    let bindings = '';\n\n    for (const key in json.bindings) {\n      const value = json.bindings[key];\n      if (value && key !== 'innerHTML') {\n        bindings += ` ${key}=\\${${value.code}} `;\n      }\n    }\n\n    const innerText = json.bindings.innerHTML?.code || '';\n\n    // We have to obfuscate `\"style\"` due to a limitation in the svelte-preprocessor plugin.\n    // https://github.com/sveltejs/vite-plugin-svelte/issues/315#issuecomment-1109000027\n    return `{@html \\`<\\${'style'} ${bindings} ${props}>\\${${innerText}}<\\${'/style'}>\\`}`;\n  },\n  script: ({ json, options, parentComponent }) => {\n    let props = '';\n    for (const key in json.properties) {\n      const value = json.properties[key];\n      props += ` ${key}=\"${value}\" `;\n    }\n\n    let bindings = '';\n\n    for (const key in json.bindings) {\n      const value = json.bindings[key];\n      if (value && key !== 'innerHTML') {\n        bindings += ` ${key}=\\${${value.code}} `;\n      }\n    }\n\n    const innerText = json.bindings.innerHTML?.code || '';\n\n    return `{@html \\`<script ${bindings} ${props}>\\${${innerText}}</script>\\`}`;\n  },\n  Fragment: ({ json, options, parentComponent }) => {\n    if (json.bindings.innerHTML?.code) {\n      return BINDINGS_MAPPER.innerHTML(json, options);\n    } else if (json.children.length > 0) {\n      return `${json.children\n        .map((item) => blockToSvelte({ json: item, options, parentComponent }))\n        .join('\\n')}`;\n    } else {\n      return '';\n    }\n  },\n  For: ({ json, options, parentComponent }) => {\n    const firstChild = json.children[0];\n    const keyValue = firstChild.properties.key || firstChild.bindings.key?.code;\n\n    if (keyValue) {\n      // we remove extraneous prop which Svelte does not use\n      delete firstChild.properties.key;\n      delete firstChild.bindings.key;\n    }\n\n    const args = getForArguments(json, { excludeCollectionName: true }).join(', ');\n\n    return `\n{#each ${json.bindings.each?.code} as ${args} ${keyValue ? `(${keyValue})` : ''}}\n${json.children.map((item) => blockToSvelte({ json: item, options, parentComponent })).join('\\n')}\n{/each}\n`;\n  },\n  Show: ({ json, options, parentComponent }) => {\n    return `\n{#if ${json.bindings.when?.code} }\n${json.children.map((item) => blockToSvelte({ json: item, options, parentComponent })).join('\\n')}\n\n  ${\n    json.meta.else\n      ? `\n  {:else}\n  ${blockToSvelte({\n    json: json.meta.else as MitosisNode,\n    options,\n    parentComponent,\n  })}\n  `\n      : ''\n  }\n{/if}`;\n  },\n  Slot({ json, options, parentComponent }) {\n    const slotName = json.bindings.name?.code || json.properties.name;\n\n    const renderChildren = () =>\n      json.children\n        ?.map((item) => blockToSvelte({ json: item, options, parentComponent }))\n        .join('\\n');\n\n    if (!slotName) {\n      const key = Object.keys(json.bindings).find(Boolean);\n      if (!key) {\n        if (!json.children?.length) {\n          return '<slot/>';\n        }\n        return `<slot>${renderChildren()}</slot>`;\n      }\n\n      return `\n        <span #${key}>\n        ${json.bindings[key]?.code}\n        </span>\n      `;\n    }\n\n    return `<slot name=\"${toKebabSlot(slotName, SLOT_PREFIX)}\">${renderChildren()}</slot>`;\n  },\n};\n\nconst BINDINGS_MAPPER = {\n  innerHTML: (json: MitosisNode, options: ToSvelteOptions) =>\n    `{@html ${json.bindings.innerHTML?.code}}`,\n};\n\nconst SVELTE_SPECIAL_TAGS = {\n  COMPONENT: 'svelte:component',\n  ELEMENT: 'svelte:element',\n  SELF: 'svelte:self',\n} as const;\n\nconst getTagName = ({\n  json,\n  parentComponent,\n  options,\n}: {\n  json: MitosisNode;\n  parentComponent: MitosisComponent;\n  options: ToSvelteOptions;\n}) => {\n  if (parentComponent && json.name === parentComponent.name) {\n    return SVELTE_SPECIAL_TAGS.SELF;\n  }\n\n  /**\n   * These are special HTML tags that svelte requires `<svelte:element this={TAG}>`\n   */\n  const SPECIAL_HTML_TAGS = ['script', 'template'];\n\n  if (SPECIAL_HTML_TAGS.includes(json.name)) {\n    json.bindings.this = createSingleBinding({\n      code: `\"${json.name}\"`,\n    });\n\n    return SVELTE_SPECIAL_TAGS.ELEMENT;\n  }\n\n  const isValidHtmlTag = VALID_HTML_TAGS.includes(json.name);\n\n  const isSpecialSvelteTag = json.name.startsWith('svelte:');\n\n  // Check if any import matches `json.name`\n  const hasMatchingImport = parentComponent.imports.some(({ imports }) =>\n    Object.keys(imports).some((name) => name === json.name),\n  );\n\n  // If none of these are true, then we have some type of dynamic tag name\n  if (!isValidHtmlTag && !isSpecialSvelteTag && !hasMatchingImport) {\n    json.bindings.this = createSingleBinding({\n      code: stripStateAndProps({ json: parentComponent, options })(json.name),\n    });\n\n    // TO-DO: no way to perfectly decide between <svelte:component> and <svelte:element> for dynamic\n    // values...need to do that through metadata overrides for now.\n    return SVELTE_SPECIAL_TAGS.COMPONENT;\n  }\n\n  return json.name;\n};\n\ntype BlockToSvelte<T extends BaseNode = MitosisNode> = (props: {\n  json: T;\n  options: ToSvelteOptions;\n  parentComponent: MitosisComponent;\n}) => string;\n\nconst stringifyBinding =\n  (node: MitosisNode, options: ToSvelteOptions) =>\n  ([key, binding]: [string, Binding | undefined]) => {\n    if (key === 'innerHTML' || !binding) {\n      return '';\n    }\n\n    const { code, arguments: cusArgs = ['event'], type } = binding;\n    const isValidHtmlTag = VALID_HTML_TAGS.includes(node.name) || node.name === 'svelte:element';\n\n    if (type === 'spread') {\n      const spreadValue = key === 'props' ? '$$props' : code;\n      return ` {...${spreadValue}} `;\n    } else if (checkIsEvent(key) && isValidHtmlTag) {\n      const { async } = binding;\n      // handle html native on[event] props\n      const event = key.replace('on', '').toLowerCase();\n      // TODO: handle quotes in event handler values\n\n      const valueWithoutBlock = removeSurroundingBlock(code);\n\n      if (valueWithoutBlock === key && !async) {\n        return ` on:${event}={${valueWithoutBlock}} `;\n      } else {\n        const asyncKeyword = async ? 'async ' : '';\n        return ` on:${event}=\"{${asyncKeyword}(${cusArgs.join(',')}) => {${valueWithoutBlock}}}\" `;\n      }\n    } else if (checkIsEvent(key)) {\n      // handle on[custom event] props\n      const valueWithoutBlock = removeSurroundingBlock(code);\n\n      if (valueWithoutBlock === key) {\n        return ` ${key}={${valueWithoutBlock}} `;\n      } else {\n        return ` ${key}={(${cusArgs.join(',')}) => ${valueWithoutBlock}}`;\n      }\n    } else if (key === 'ref') {\n      return ` bind:this={${code}} `;\n    } else {\n      return ` ${key}={${code}} `;\n    }\n  };\n\nexport const blockToSvelte: BlockToSvelte = ({ json, options, parentComponent }) => {\n  // Handling key binding by wrapping the element in a #key block\n  if (json.bindings.key) {\n    const keyCode = json.bindings.key.code;\n    delete json.bindings.key;\n    const str = `\n      {#key ${keyCode}}\n        ${blockToSvelte({ json, options, parentComponent })}\n      {/key}\n      `;\n    return str;\n  }\n\n  if (mappers[json.name as keyof typeof mappers]) {\n    return mappers[json.name as keyof typeof mappers]({\n      json: json as any,\n      options,\n      parentComponent,\n    });\n  }\n\n  const tagName = getTagName({ json, parentComponent, options });\n\n  if (isChildren({ node: json, extraMatches: ['$$slots.default'] })) {\n    return `<slot></slot>`;\n  }\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n\n  const textCode = json.bindings._text?.code;\n\n  if (textCode) {\n    if (isSlotProperty(textCode, SLOT_PREFIX)) {\n      return `<slot name=\"${stripSlotPrefix(textCode, SLOT_PREFIX).toLowerCase()}\"/>`;\n    }\n    return `{${textCode}}`;\n  }\n\n  let str = '';\n\n  str += `<${tagName} `;\n\n  const isComponent = Boolean(tagName[0] && isUpperCase(tagName[0]));\n  if ((json.bindings.style?.code || json.properties.style) && !isComponent) {\n    const useValue = json.bindings.style?.code || json.properties.style;\n\n    str += `style={stringifyStyles(${useValue})}`;\n    delete json.bindings.style;\n    delete json.properties.style;\n  }\n\n  for (const key in json.properties) {\n    const value = json.properties[key];\n    str += ` ${key}=\"${value}\" `;\n  }\n\n  const stringifiedBindings = Object.entries(json.bindings)\n    .map(stringifyBinding(json, options))\n    .join('');\n\n  str += stringifiedBindings;\n\n  // if we have innerHTML, it doesn't matter whether we have closing tags or not, or children or not.\n  // we use the innerHTML content as children and don't render the self-closing tag.\n  if (json.bindings.innerHTML?.code) {\n    str += '>';\n    str += BINDINGS_MAPPER.innerHTML(json, options);\n    str += `</${tagName}>`;\n    return str;\n  }\n\n  if (SELF_CLOSING_HTML_TAGS.has(tagName)) {\n    return str + ' />';\n  }\n  str += '>';\n  if (json.children) {\n    str += json.children\n      .map((item) => blockToSvelte({ json: item, options, parentComponent }))\n      .join('');\n  }\n\n  str += `</${tagName}>`;\n\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/generators/svelte/helpers.ts",
    "content": "import { isSlotProperty, replaceSlotsInString } from '@/helpers/slots';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { ToSvelteOptions } from './types';\n\nexport const stripStateAndProps =\n  ({ options, json }: { options: ToSvelteOptions; json: MitosisComponent }) =>\n  (code: string) =>\n    stripStateAndPropsRefs(code, {\n      includeState: options.stateType === 'variables',\n      replaceWith: (name) =>\n        name === 'children'\n          ? '$$slots.default'\n          : isSlotProperty(name)\n          ? replaceSlotsInString(name, (x) => `$$slots.${x}`)\n          : name,\n    });\n"
  },
  {
    "path": "packages/core/src/generators/svelte/index.ts",
    "content": "export { componentToSvelte } from './svelte';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/svelte/svelte.ts",
    "content": "import { babelTransformCode, convertTypeScriptToJS } from '@/helpers/babel-transform';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getProps } from '@/helpers/get-props';\nimport { getRefs } from '@/helpers/get-refs';\nimport {\n  getStateObjectStringFromComponent,\n  stringifyContextValue,\n} from '@/helpers/get-state-object-string';\nimport { gettersToFunctions } from '@/helpers/getters-to-functions';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { stripGetter } from '@/helpers/patterns';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { isSlotProperty } from '@/helpers/slots';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { hasStyle } from '@/helpers/styles/helpers';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { flow, pipe } from 'fp-ts/lib/function';\nimport traverse from 'neotraverse/legacy';\nimport * as prettierPluginSvelte from 'prettier-plugin-svelte';\nimport prettierParserBabel from 'prettier/parser-babel';\nimport prettierParserHtml from 'prettier/parser-html';\nimport prettierParserPostcss from 'prettier/parser-postcss';\nimport prettierParserTypescript from 'prettier/parser-typescript';\nimport { format } from 'prettier/standalone';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { getContextType, hasGetContext, hasSetContext } from '../helpers/context';\nimport { FUNCTION_HACK_PLUGIN } from '../helpers/functions';\nimport { blockToSvelte } from './blocks';\nimport { stripStateAndProps } from './helpers';\nimport { ToSvelteOptions } from './types';\n\nconst getContextCode = (json: MitosisComponent) => {\n  const contextGetters = json.context.get;\n  return Object.entries(contextGetters)\n    .map(([key, context]): string => {\n      const { name } = context;\n\n      const contextType = getContextType({ component: json, context });\n\n      switch (contextType) {\n        case 'reactive':\n        case 'normal':\n          return `let ${key} = getContext(${name}.key);`;\n      }\n    })\n    .join('\\n');\n};\n\nconst setContextCode = ({\n  json,\n  options,\n}: {\n  json: MitosisComponent;\n  options: ToSvelteOptions;\n}) => {\n  const processCode = stripStateAndProps({ json, options });\n\n  return Object.values(json.context.set)\n    .map((context) => {\n      const { value, name, ref } = context;\n      const nameIsStringLiteral =\n        (name.startsWith(\"'\") && name.endsWith(\"'\")) ||\n        (name.startsWith('\"') && name.endsWith('\"'));\n\n      const key = nameIsStringLiteral ? name : `${name}.key`;\n\n      const valueStr = value\n        ? processCode(stringifyContextValue(value))\n        : ref\n        ? processCode(ref)\n        : 'undefined';\n\n      const contextType = getContextType({ component: json, context });\n\n      switch (contextType) {\n        case 'normal':\n          return `setContext(${key}, ${valueStr});`;\n        case 'reactive':\n          const storeName = `${name}ContextStoreValue`;\n\n          return `\n            const ${storeName} = writable(${valueStr});\n            setContext(${key}, ${storeName});\n          `;\n      }\n    })\n    .join('\\n');\n};\n\n/**\n * Replace\n *    <input value={state.name} onChange={event => state.name = event.target.value}\n * with\n *    <input bind:value={state.name}/>\n * when easily identified, for more idiomatic svelte code\n */\nconst useBindValue = (json: MitosisComponent, options: ToSvelteOptions) => {\n  function normalizeStr(str: string) {\n    return str\n      .trim()\n      .replace(/\\n|\\r/g, '')\n      .replace(/^{/, '')\n      .replace(/}$/, '')\n      .replace(/;$/, '')\n      .replace(/\\s+/g, '');\n  }\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      const { value, onChange } = item.bindings;\n      if (value && onChange) {\n        const { arguments: cusArgs = ['event'] } = onChange;\n        if (\n          normalizeStr(onChange.code) === `${normalizeStr(value.code)}=${cusArgs[0]}.target.value`\n        ) {\n          delete item.bindings.value;\n          delete item.bindings.onChange;\n          item.bindings['bind:value'] = value;\n        }\n      }\n    }\n  });\n};\n\nconst DEFAULT_OPTIONS: ToSvelteOptions = {\n  stateType: 'variables',\n  prettier: true,\n};\n\nexport const componentToSvelte: TranspilerGenerator<ToSvelteOptions> =\n  (userProvidedOptions) =>\n  ({ component }) => {\n    const options = initializeOptions({\n      target: 'svelte',\n      component,\n      defaults: DEFAULT_OPTIONS,\n      userOptions: userProvidedOptions,\n    });\n\n    options.plugins = [\n      ...(options.plugins || []),\n      processOnEventHooksPlugin(),\n      FUNCTION_HACK_PLUGIN,\n      // Strip types from any JS code that ends up in the template, because Svelte does not support TS code in templates.\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        switch (codeType) {\n          case 'bindings':\n          case 'properties':\n            return convertTypeScriptToJS;\n          case 'hooks':\n          case 'hooks-deps':\n          case 'hooks-deps-array':\n          case 'state':\n          case 'context-set':\n          case 'dynamic-jsx-elements':\n          case 'types':\n            return (x) => x;\n        }\n      }),\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        switch (codeType) {\n          case 'hooks':\n            return flow(stripStateAndProps({ json, options }), babelTransformCode);\n          case 'bindings':\n          case 'hooks-deps':\n          case 'state':\n            return flow(stripStateAndProps({ json, options }), stripGetter);\n          case 'properties':\n          case 'context-set':\n            return flow(stripStateAndProps({ json, options }));\n          case 'dynamic-jsx-elements':\n          case 'hooks-deps-array':\n          case 'types':\n            return (x) => x;\n        }\n      }),\n    ];\n\n    // Make a copy we can safely mutate, similar to babel's toolchain\n    let json = fastClone(component);\n    json = runPreJsonPlugins({ json, plugins: options.plugins });\n\n    useBindValue(json, options);\n\n    gettersToFunctions(json);\n\n    const filteredProps = Array.from(getProps(json))\n      .filter((prop) => !isSlotProperty(prop))\n      // map $prop to prop for reactive state\n      .map((x) => (x.startsWith('$') ? x.slice(1) : x));\n\n    // this helps make sure we don't have duplicate props\n    const props = Array.from(new Set(filteredProps));\n\n    const refs = Array.from(getRefs(json))\n      .map(stripStateAndProps({ json, options }))\n      .filter((x) => !props.includes(x));\n\n    json = runPostJsonPlugins({ json, plugins: options.plugins });\n\n    const css = collectCss(json);\n    stripMetaProperties(json);\n\n    let usesWritable = false;\n\n    const dataString = pipe(\n      getStateObjectStringFromComponent(json, {\n        data: true,\n        functions: false,\n        getters: false,\n        format: options.stateType === 'proxies' ? 'object' : 'variables',\n        keyPrefix: options.stateType === 'variables' ? 'let ' : '',\n        valueMapper: (code, _t, _p, key) => {\n          if (json.state[key!]?.propertyType === 'reactive') {\n            usesWritable = true;\n            return `writable(${code})`;\n          }\n          return code;\n        },\n      }),\n      babelTransformCode,\n    );\n\n    const getterString = pipe(\n      getStateObjectStringFromComponent(json, {\n        data: false,\n        getters: true,\n        functions: false,\n        format: 'variables',\n        keyPrefix: '$: ',\n        valueMapper: (code) => {\n          return code\n            .trim()\n            .replace(/^([a-zA-Z_\\$0-9]+)/, '$1 = ')\n            .replace(/\\)/, ') => ');\n        },\n      }),\n      babelTransformCode,\n    );\n\n    const functionsString = pipe(\n      getStateObjectStringFromComponent(json, {\n        data: false,\n        getters: false,\n        functions: true,\n        format: 'variables',\n      }),\n      babelTransformCode,\n    );\n\n    const hasData = dataString.length > 4;\n\n    let str = '';\n\n    const tsLangAttribute = options.typescript ? `lang='ts'` : '';\n\n    if (options.typescript && json.types?.length) {\n      str += dedent`\n      <script context='module' ${tsLangAttribute}>\n        ${json.types ? json.types.join('\\n\\n') + '\\n' : ''}\n      </script>\n      \\n\n      \\n\n      `;\n    }\n\n    // prepare svelte imports\n    let svelteImports: string[] = [];\n    let svelteStoreImports: string[] = [];\n\n    if (json.hooks.onMount.length) {\n      svelteImports.push('onMount');\n    }\n    if (json.hooks.onUpdate?.filter((x) => !x.deps)?.length) {\n      svelteImports.push('afterUpdate');\n    }\n    if (json.hooks.onUnMount?.code?.length) {\n      svelteImports.push('onDestroy');\n    }\n    if (hasGetContext(component)) {\n      svelteImports.push('getContext');\n    }\n    if (hasSetContext(component)) {\n      svelteImports.push('setContext');\n    }\n\n    if (usesWritable) {\n      svelteStoreImports.push('writable');\n    }\n\n    str += dedent`\n      <script ${tsLangAttribute}>\n      ${!svelteImports.length ? '' : `import { ${svelteImports.sort().join(', ')} } from 'svelte'`}\n      ${\n        !svelteStoreImports.length\n          ? ''\n          : `import { ${svelteStoreImports.sort().join(', ')} } from 'svelte/store'`\n      }\n\n      ${renderPreComponent({\n        explicitImportFileExtension: options.explicitImportFileExtension,\n        component: json,\n        target: 'svelte',\n      })}\n\n      ${!hasData || options.stateType === 'variables' ? '' : `import onChange from 'on-change'`}\n      ${props\n        .map((name) => {\n          if (name === 'children') {\n            return '';\n          }\n\n          let propDeclaration = `export let ${name}`;\n\n          if (options.typescript && json.propsTypeRef && json.propsTypeRef !== 'any') {\n            propDeclaration += `: ${json.propsTypeRef.split(' |')[0]}['${name}']`;\n          }\n\n          if (json.defaultProps && json.defaultProps.hasOwnProperty(name)) {\n            propDeclaration += `=${json.defaultProps[name]?.code}`;\n          } else if (json.props?.[name]?.optional) {\n            propDeclaration += `= undefined`;\n          }\n\n          propDeclaration += ';';\n\n          return propDeclaration;\n        })\n        .join('\\n')}\n      ${\n        // https://github.com/sveltejs/svelte/issues/7311\n        hasStyle(json)\n          ? dedent`\n        \tfunction stringifyStyles(stylesObj) {\n            let styles = '';\n            for (let key in stylesObj) {\n              const dashedKey = key.replace(/[A-Z]/g, function(match) {\n                return '-' + match.toLowerCase();\n              });\n              styles += dashedKey + \":\" + stylesObj[key] + \";\";\n            }\n            return styles;\n          }\n      `\n          : ''\n      }\n      ${getContextCode(json)}\n\n      ${functionsString.length < 4 ? '' : functionsString}\n      ${getterString.length < 4 ? '' : getterString}\n\n      ${refs.map((ref) => `let ${ref}`).join('\\n')}\n\n      ${\n        options.stateType === 'proxies'\n          ? dataString.length < 4\n            ? ''\n            : `let state = onChange(${dataString}, () => state = state)`\n          : dataString\n      }\n      ${json.hooks.onInit?.code ?? ''}\n\n      ${json.hooks.onMount.map((hook) => `onMount(() => { ${hook.code} });`).join('\\n')}\n\n      ${\n        json.hooks.onUpdate\n          ?.map(({ code, deps }, index) => {\n            if (!deps) {\n              return `afterUpdate(() => { ${code} });`;\n            }\n\n            const fnName = `onUpdateFn_${index}`;\n            const depsArray = deps\n              .slice(1, deps.length - 1)\n              .split(',')\n              .map((x) => x.trim());\n            const getReactiveDepName = (dep: string) =>\n              `${fnName}_${dep.slice(1).replace(/(\\.|\\?)/g, '_')}`;\n\n            const isStoreAccessDep = (dep: string) => dep.startsWith('$');\n\n            const reactiveDepsWorkaround = depsArray\n              .filter(isStoreAccessDep)\n              .map((dep) => `$: ${getReactiveDepName(dep)} = ${dep};`)\n              .join('\\n');\n\n            const depsArrayStr = depsArray\n              .map((x) => (isStoreAccessDep(x) ? getReactiveDepName(x) : x))\n              .join(', ');\n\n            /**\n             * We create a reactive value for each `onUpdate`'s dependency that\n             * accesses a store so that Svelte has accurate dependency tracking.\n             *\n             * Otherwise, if the dependency is a value within a store, Svelte will\n             * rerun the effect every time the parent store is changed in any way.\n             */\n            return `\n              function ${fnName}(..._args${options.typescript ? ': any[]' : ''}) {\n                ${code}\n              }\n              ${reactiveDepsWorkaround}\n              $: ${fnName}(...[${depsArrayStr}]);\n            `;\n          })\n          .join('\\n') || ''\n      }\n\n      ${\n        // make sure this is after all other state/code is initialized\n        setContextCode({ json, options })\n      }\n\n      ${!json.hooks.onUnMount?.code ? '' : `onDestroy(() => { ${json.hooks.onUnMount.code} });`}\n    </script>\n\n    ${json.children\n      .map((item) =>\n        blockToSvelte({\n          json: item,\n          options: options,\n          parentComponent: json,\n        }),\n      )\n      .join('\\n')}\n\n    ${\n      !css.trim().length\n        ? ''\n        : `<style>\n      ${css}\n    </style>`\n    }\n  `;\n\n    str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'svelte',\n          plugins: [\n            // To support running in browsers\n            prettierParserHtml,\n            prettierParserPostcss,\n            prettierParserBabel,\n            prettierParserTypescript,\n            prettierPluginSvelte,\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify');\n        console.warn(str, err);\n      }\n    }\n\n    str = str.replace(/<script>\\n<\\/script>/g, '').trim();\n\n    str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/svelte/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport type ToSvelteOptions = BaseTranspilerOptions & {\n  stateType?: 'proxies' | 'variables';\n};\n\nexport type SvelteMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/swift/blocks.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport {\n  cssToSwiftUIModifiers,\n  getBindingType,\n  getEventHandlerName,\n  getForEachParams,\n  jsxElementToSwiftUIView,\n  needsScrollView,\n  stripStateAndProps,\n} from './helpers';\nimport { ToSwiftOptions } from './types';\n\n// Helper function to sanitize text content for SwiftUI\nconst sanitizeTextForSwift = (text: string): string => {\n  if (!text) return '\"\"';\n\n  // Check if text contains newlines\n  if (text.includes('\\n')) {\n    // Use triple quotes for multiline strings\n    return `\"\"\"${text}\"\"\"`;\n  }\n\n  // Escape double quotes in the text\n  return `\"${text.replace(/\"/g, '\\\\\"')}\"`;\n};\n\nexport const blockToSwift = ({\n  json,\n  options,\n  parentComponent,\n}: {\n  json: MitosisNode;\n  options: ToSwiftOptions;\n  parentComponent: MitosisComponent;\n}): string => {\n  if (json.properties._text) {\n    return `Text(${sanitizeTextForSwift(json.properties._text)})`;\n  }\n\n  const tag = json.name;\n\n  // For fragments, render children without a wrapper\n  if (tag === 'Fragment') {\n    return json.children\n      .map((child) => blockToSwift({ json: child, options, parentComponent }))\n      .join('\\n');\n  }\n\n  // Process bindings and properties - use parentComponent here instead of json\n  const processCode = stripStateAndProps({ json: parentComponent, options });\n\n  // Handle ForEach blocks - use bindings.each pattern like other generators\n  if (json.bindings.each?.code) {\n    const { collection, itemName, indexName } = getForEachParams(json, processCode);\n    const forEachContent = json.children\n      .map((child) => blockToSwift({ json: child, options, parentComponent }))\n      .join('\\n');\n\n    // Check if the collection is using Array.from({length: X}) pattern\n    const arrayFromMatch = collection.match(/Array\\.from\\(\\s*\\{\\s*length:\\s*(\\d+)\\s*\\}\\s*\\)/);\n\n    if (arrayFromMatch) {\n      // Convert to SwiftUI's ForEach with a range\n      const length = arrayFromMatch[1];\n      if (indexName) {\n        // With index\n        return `ForEach(0..<${length}, id: \\\\.self) { ${indexName} in\n  let ${itemName} = ${indexName}\n  ${forEachContent}\n}`;\n      } else {\n        // Without index\n        return `ForEach(0..<${length}, id: \\\\.self) { ${itemName} in\n  ${forEachContent}\n}`;\n      }\n    } else {\n      // Standard collection-based ForEach\n      if (indexName) {\n        return `ForEach(Array(zip(${collection}.indices, ${collection})), id: \\\\.0) { ${indexName}, ${itemName} in\n  ${forEachContent}\n}`;\n      } else {\n        return `ForEach(${collection}, id: \\\\.self) { ${itemName} in\n  ${forEachContent}\n}`;\n      }\n    }\n  }\n\n  // Determine the SwiftUI component name\n  const component = jsxElementToSwiftUIView(tag);\n\n  // Handle children\n  const hasChildren = json.children && json.children.length > 0;\n\n  // Handle event handlers\n  const eventHandlers = Object.entries(json.bindings)\n    .filter(([key]) => key.startsWith('on') && json.bindings[key]?.code)\n    .map(([key, binding]) => {\n      const swiftEventName = getEventHandlerName(key);\n      return `.${swiftEventName}(${processCode(binding?.code || '')})`;\n    });\n\n  // Handle data bindings (like bind:value)\n  const dataBindings = Object.entries(json.bindings)\n    .filter(([key]) => key.startsWith('bind:') && json.bindings[key]?.code)\n    .map(([key, binding]) => {\n      const bindingType = getBindingType(key);\n      const bindingValue = processCode(binding?.code || '');\n      return { type: bindingType, value: bindingValue };\n    });\n\n  // Handle style properties\n  const styleModifiers: string[] = [];\n  if (json.bindings.style) {\n    // Dynamic styles\n    styleModifiers.push(`// Dynamic styles not fully implemented`);\n    styleModifiers.push(`.modifier(/* Dynamic style handling needed here */)\"`);\n  } else if (json.properties.style) {\n    // Static styles\n    try {\n      const styleObj = JSON.parse(json.properties.style);\n      styleModifiers.push(...cssToSwiftUIModifiers(styleObj));\n    } catch (e) {\n      styleModifiers.push(`// Could not parse style: ${json.properties.style}`);\n    }\n  }\n\n  // Check if we need a ScrollView\n  const needsScroll = needsScrollView(json);\n\n  // Conditional rendering\n  let result = '';\n  if (json.bindings.if?.code) {\n    result += `if ${processCode(json.bindings.if.code)} {\\n`;\n  } else if (json.bindings.show?.code) {\n    // In SwiftUI we can use opacity for show/hide\n    styleModifiers.push(`.opacity(${processCode(json.bindings.show.code)} ? 1 : 0)`);\n  }\n\n  // Start building the component\n  let componentCode = '';\n\n  switch (component) {\n    case 'Text':\n      // Text components in SwiftUI need their content as a parameter\n      let textContent = '';\n      if (json.properties._text) {\n        textContent = sanitizeTextForSwift(json.properties._text);\n      } else if (json.bindings.innerHTML?.code) {\n        // For dynamic content, we'll need to handle it as an expression\n        textContent = processCode(json.bindings.innerHTML.code);\n      } else {\n        textContent = '\"\"';\n      }\n      componentCode = `Text(${textContent})`;\n      break;\n\n    case 'Button':\n      // Find the action from eventHandlers or create an empty one\n      let buttonAction = '{}';\n      const onClickHandler = eventHandlers.find((h) => h.includes('onTapGesture'));\n      if (onClickHandler) {\n        buttonAction = onClickHandler.replace('.onTapGesture(', '').replace(')', '');\n        // Remove this handler from the list since we're using it directly\n        eventHandlers.splice(eventHandlers.indexOf(onClickHandler), 1);\n      }\n\n      const buttonLabel = hasChildren\n        ? json.children\n            .map((child) => blockToSwift({ json: child, options, parentComponent }))\n            .join('\\n')\n        : `Text(\"${json.properties._text || 'Button'}\")`;\n\n      componentCode = `Button(action: { ${buttonAction} }) {\\n${buttonLabel}\\n}`;\n      break;\n\n    case 'TextField':\n      // TextField can have either bind:value or direct value binding\n      let bindingExpression = '';\n\n      // First check for explicit bind:value\n      const textBinding = dataBindings.find((b) => b.type === 'value');\n\n      // If not found, check for direct value binding\n      const directValueBinding = json.bindings.value?.code\n        ? processCode(json.bindings.value.code)\n        : null;\n\n      if (textBinding) {\n        // Use the explicit binding from dataBindings\n        bindingExpression = textBinding.value;\n      } else if (directValueBinding) {\n        // Use direct value binding\n        bindingExpression = directValueBinding;\n      }\n\n      if (bindingExpression) {\n        // Convert to SwiftUI binding syntax\n        bindingExpression = bindingExpression.replace(/self\\.(\\w+)/g, '$$$1');\n\n        // If it still doesn't start with $, add it\n        if (!bindingExpression.startsWith('$')) {\n          bindingExpression = `$${bindingExpression}`;\n        }\n\n        componentCode = `TextField(\"${\n          json.properties.placeholder || ''\n        }\", text: ${bindingExpression})`;\n      } else {\n        // No binding found, use constant value\n        componentCode = `TextField(\"${json.properties.placeholder || ''}\", text: .constant(\"${\n          json.properties.value || ''\n        }\"))`;\n      }\n      break;\n\n    case 'Image':\n      // Determine if using system image, URL, or asset\n      if (json.properties.src?.startsWith('system-')) {\n        // System image\n        const systemName = json.properties.src.replace('system-', '');\n        componentCode = `Image(systemName: \"${systemName}\")`;\n      } else if (json.properties.src?.startsWith('http')) {\n        // URL image (requires AsyncImage)\n        componentCode = `AsyncImage(url: URL(string: \"${json.properties.src}\")!) { image in\n          image.resizable()\n        } placeholder: {\n          ProgressView()\n        }`;\n      } else {\n        // Asset image\n        componentCode = `Image(\"${json.properties.src || 'placeholder'}\")`;\n      }\n\n      if (json.properties.resizeMode) {\n        componentCode += `.resizable().aspectRatio(contentMode: .${json.properties.resizeMode})`;\n      } else if (!json.properties.src?.startsWith('http')) {\n        // Add resizable for non-async images without specific mode\n        componentCode += `.resizable().aspectRatio(contentMode: .fit)`;\n      }\n      break;\n\n    case 'VStack':\n    case 'HStack':\n    case 'ZStack':\n      // Stacks with children\n      const alignment = json.properties.alignment || 'leading';\n      const spacing = json.properties.spacing || '8';\n\n      componentCode = `${component}(alignment: .${alignment}, spacing: ${spacing}) {\\n`;\n      if (hasChildren) {\n        componentCode += json.children\n          .map((child) => {\n            return blockToSwift({ json: child, options, parentComponent });\n          })\n          .join('\\n');\n      }\n      componentCode += '\\n}';\n      break;\n\n    case 'List':\n      // Lists in SwiftUI\n      componentCode = `List {\\n`;\n      if (hasChildren) {\n        componentCode += json.children\n          .map((child) => {\n            return blockToSwift({ json: child, options, parentComponent });\n          })\n          .join('\\n');\n      }\n      componentCode += '\\n}';\n      break;\n\n    case 'Picker':\n      // Handle select element\n      // Pickers in SwiftUI need a selection binding, a label, and content\n      const selectBinding = dataBindings.find((b) => b.type === 'value');\n      const selectionVar = selectBinding ? selectBinding.value : '.constant(\"\")';\n\n      // Create label from the \"label\" property or a default\n      const pickerLabel = json.properties.label\n        ? `Text(\"${json.properties.label}\")`\n        : 'Text(\"Select\")';\n\n      // Start building the picker\n      componentCode = `Picker(selection: Binding(get: { ${selectionVar} }, set: { ${selectionVar} = $0 }), label: { ${pickerLabel} }) {`;\n\n      // Add options as children\n      if (hasChildren) {\n        json.children.forEach((child) => {\n          // For option elements, extract the value and text\n          if (child.name?.toLowerCase() === 'option') {\n            const optionValue = child.properties.value || '';\n            const optionText = child.properties._text || optionValue;\n            componentCode += `\\nText(\"${optionText}\").tag(\"${optionValue}\")`;\n          } else {\n            // Handle non-option children (unusual but possible)\n            componentCode += `\\n${blockToSwift({ json: child, options, parentComponent })}`;\n          }\n        });\n      }\n\n      componentCode += '\\n}';\n      break;\n\n    default:\n      // Custom components or other SwiftUI views\n      if (hasChildren) {\n        componentCode = `${component} {\\n`;\n        componentCode += json.children\n          .map((child) => {\n            return blockToSwift({ json: child, options, parentComponent });\n          })\n          .join('\\n');\n        componentCode += '\\n}';\n      } else {\n        componentCode = `${component}()`;\n      }\n  }\n\n  // Apply modifiers\n  styleModifiers.forEach((modifier) => {\n    componentCode += `\\n${modifier}`;\n  });\n\n  // Add event handlers that weren't specifically handled above\n  eventHandlers\n    .filter((handler) => !componentCode.includes(handler))\n    .forEach((handler) => {\n      componentCode += `\\n${handler}`;\n    });\n\n  // Wrap with ScrollView if needed\n  if (needsScroll) {\n    componentCode = `ScrollView {\\n${componentCode}\\n}`;\n  }\n\n  // Close conditional rendering block if needed\n  if (json.bindings.if?.code) {\n    result += componentCode + '\\n}';\n  } else {\n    result += componentCode;\n  }\n\n  return result;\n};\n"
  },
  {
    "path": "packages/core/src/generators/swift/generator.ts",
    "content": "import { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { format } from '@/helpers/generic-format';\nimport { getProps } from '@/helpers/get-props';\nimport { getRefs } from '@/helpers/get-refs';\nimport { gettersToFunctions } from '@/helpers/getters-to-functions';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { stripGetter } from '@/helpers/patterns';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { isSlotProperty } from '@/helpers/slots';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { blockToSwift } from './blocks';\nimport {\n  convertConsoleLogToPrint,\n  convertJsFunctionToSwift,\n  getStatePropertyTypeAnnotation,\n  getSwiftType,\n  stripStateAndProps,\n} from './helpers';\nimport { ToSwiftOptions } from './types';\n\nconst DEFAULT_OPTIONS: ToSwiftOptions = {\n  stateType: 'state',\n  formatCode: true,\n  includeTypes: true,\n  includePreview: true,\n  classPrefix: '',\n};\n\nexport const componentToSwift: TranspilerGenerator<ToSwiftOptions> =\n  (userProvidedOptions) =>\n  ({ component }) => {\n    const options = initializeOptions({\n      target: 'swift',\n      component,\n      defaults: DEFAULT_OPTIONS,\n      userOptions: userProvidedOptions,\n    });\n\n    options.plugins = [\n      ...(options.plugins || []),\n      processOnEventHooksPlugin(),\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        switch (codeType) {\n          case 'bindings':\n          case 'properties':\n          case 'hooks':\n          case 'hooks-deps':\n          case 'hooks-deps-array':\n          case 'state':\n          case 'context-set':\n          case 'dynamic-jsx-elements':\n          case 'types':\n            return (x) => convertConsoleLogToPrint(x);\n        }\n      }),\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        switch (codeType) {\n          case 'hooks':\n            return (code: string) => stripStateAndProps({ json, options })(code);\n          case 'bindings':\n          case 'hooks-deps':\n          case 'state':\n            return (code: string) => stripGetter(stripStateAndProps({ json, options })(code));\n          case 'properties':\n          case 'context-set':\n            return (code: string) => stripStateAndProps({ json, options })(code);\n          case 'dynamic-jsx-elements':\n          case 'hooks-deps-array':\n          case 'types':\n            return (x) => convertConsoleLogToPrint(x);\n        }\n      }),\n    ];\n\n    // Make a copy we can safely mutate\n    let json = fastClone(component);\n    json = runPreJsonPlugins({ json, plugins: options.plugins });\n\n    gettersToFunctions(json);\n\n    const componentName =\n      options.classPrefix + (json.name || json.meta.useMetadata?.name || 'MitosisComponent');\n\n    // Process props\n    const filteredProps = Array.from(getProps(json)).filter((prop) => !isSlotProperty(prop));\n\n    const props = Array.from(new Set(filteredProps));\n\n    // Process refs (not directly applicable in SwiftUI, will be converted to @State)\n    const refs = Array.from(getRefs(json))\n      .map(stripStateAndProps({ json, options }))\n      .filter((x) => !props.includes(x));\n\n    json = runPostJsonPlugins({ json, plugins: options.plugins });\n    stripMetaProperties(json);\n\n    // Generate state variables\n    const stateProperties = Object.entries(json.state)\n      .filter(([_, value]) => {\n        // Skip methods - they'll be handled separately\n        return !(\n          value?.type === 'method' ||\n          (value?.code && (value.code.includes('function') || value.code.includes('=>')))\n        );\n      })\n      .map(([key, value]) => {\n        // Check for value properties safely\n        const propertyType = value?.propertyType;\n\n        // Determine Swift type - handle missing type property\n        let valueType = 'Any';\n        if (value?.typeParameter) {\n          valueType = (value as any).typeParameter;\n        } else {\n          // Try to infer type from code if possible\n          if (value?.code?.includes('\"') || value?.code?.includes(\"'\")) {\n            valueType = 'string';\n          } else if (value?.code?.match(/^[0-9]+(\\.[0-9]+)?$/)) {\n            valueType = 'number';\n          } else if (value?.code === 'true' || value?.code === 'false') {\n            valueType = 'boolean';\n          } else if (value?.code?.startsWith('[') || value?.code?.startsWith('Array')) {\n            valueType = 'Array<Any>';\n          }\n        }\n\n        const typeAnnotation = getStatePropertyTypeAnnotation(propertyType, valueType);\n        const swiftType = getSwiftType(valueType);\n\n        let stateDeclaration = `${typeAnnotation} ${key}: ${swiftType}`;\n\n        // Add default value if present\n        if (value?.code) {\n          stateDeclaration += ` = ${value.code}`;\n        } else {\n          // Add default initialization based on type\n          switch (swiftType) {\n            case 'String':\n              stateDeclaration += ' = \"\"';\n              break;\n            case 'Bool':\n              stateDeclaration += ' = false';\n              break;\n            case 'Double':\n            case 'Int':\n              stateDeclaration += ' = 0';\n              break;\n            case 'Array<String>':\n            case '[String]':\n              stateDeclaration += ' = []';\n              break;\n            default:\n              if (swiftType.includes('Array') || swiftType.includes('[')) {\n                stateDeclaration += ' = []';\n              } else if (swiftType !== 'Any' && swiftType !== 'Void') {\n                stateDeclaration += '/* initialize with appropriate default */';\n              }\n          }\n        }\n\n        return stateDeclaration;\n      })\n      .join('\\n  ');\n\n    // Generate state function variables with inline closure assignment\n    const functionStateProperties: string[] = [];\n\n    Object.entries(json.state)\n      .filter(([_, value]) => {\n        return (\n          value?.type === 'method' ||\n          (value?.code && (value.code.includes('function') || value.code.includes('=>')))\n        );\n      })\n      .forEach(([key, value]) => {\n        if (!value?.code) {\n          // Handle empty function with inline closure\n          functionStateProperties.push(\n            `private var ${key}: () -> Void = { () in /* Empty function */ }`,\n          );\n          return;\n        }\n\n        // Convert the JS function to Swift\n        const processedCode = stripStateAndProps({ json, options })(value.code);\n        const { swiftCode, signature } = convertJsFunctionToSwift(processedCode, `_${key}`);\n\n        // Parse signature to get parameter list and return type\n        const signatureMatch = signature.match(/func _([^(]+)\\(([^)]*)\\) -> ([^{]+)/);\n        if (signatureMatch) {\n          const [, funcName, params, returnType] = signatureMatch;\n\n          // Create the function type for the state variable\n          const paramTypes = params\n            ? params\n                .split(',')\n                .map((p) => p.trim().split(':')[1]?.trim() || 'Any')\n                .join(', ')\n            : '';\n\n          const functionType = params\n            ? `(${paramTypes}) -> ${returnType.trim()}`\n            : `() -> ${returnType.trim()}`;\n\n          // Extract function body from swiftCode\n          const bodyMatch = swiftCode.match(/{\\s*([\\s\\S]*?)\\s*}/);\n          const functionBody = bodyMatch ? bodyMatch[1].trim() : '/* Empty function body */';\n\n          // Build closure syntax for inline assignment\n          const closureSyntax = params\n            ? `{ (${params}) -> ${returnType.trim()} in\\n    ${functionBody}\\n  }`\n            : `{ () -> ${returnType.trim()} in\\n    ${functionBody}\\n  }`;\n\n          // Add the state variable declaration with inline closure assignment\n          functionStateProperties.push(`var ${key}: ${functionType} = ${closureSyntax}`);\n        } else {\n          // Fallback if signature parsing fails\n          functionStateProperties.push(\n            `var ${key}: () -> Void = { () in /* Could not parse function */ }`,\n          );\n        }\n      });\n\n    // Process lifecycle methods\n    const lifecycleMethods: string[] = [];\n\n    // Only add onInit if needed and if there are no function state properties\n    // (to avoid duplicate initializers)\n    if (json.hooks.onInit?.code) {\n      lifecycleMethods.push(dedent`\n        init() {\n          ${json.hooks.onInit.code}\n        }\n      `);\n    }\n\n    // Generate SwiftUI component\n    let str = dedent`\n      import SwiftUI\n\n      struct ${componentName}: View {\n        ${props\n          .map((prop) => {\n            const propType = json.props?.[prop]?.propertyType || 'Any';\n            const swiftType = getSwiftType(propType);\n            return `let ${prop}: ${swiftType}${json.props?.[prop]?.optional ? '?' : ''}`;\n          })\n          .join('\\n  ')}\n        \n        ${stateProperties}\n        ${\n          functionStateProperties.length > 0\n            ? '\\n  // Function state variables\\n  ' + functionStateProperties.join('\\n  ')\n            : ''\n        }\n        \n        var body: some View {\n          ${json.children\n            .map((item) =>\n              blockToSwift({\n                json: item,\n                options: options,\n                parentComponent: json,\n              }),\n            )\n            .join('\\n')}\n          ${lifecycleMethods.filter((method) => method.startsWith('.')).join('\\n  ')}\n        }\n        \n        ${lifecycleMethods.filter((method) => !method.startsWith('.')).join('\\n  ')}\n      }\n    `;\n\n    // Add preview if enabled\n    if (options.includePreview) {\n      str += dedent`\n        \\n\n        #if DEBUG\n        struct ${componentName}_Previews: PreviewProvider {\n          static var previews: some View {\n            ${componentName}(\n              ${props\n                .map((prop) => {\n                  const propType = json.props?.[prop]?.propertyType || 'Any';\n                  const swiftType = getSwiftType(propType);\n\n                  // Generate appropriate preview values based on type\n                  let previewValue = '';\n                  switch (swiftType) {\n                    case 'String':\n                      previewValue = '\"Preview\"';\n                      break;\n                    case 'Bool':\n                      previewValue = 'false';\n                      break;\n                    case 'Double':\n                    case 'Int':\n                      previewValue = '0';\n                      break;\n                    default:\n                      if (json.props?.[prop]?.optional) {\n                        previewValue = 'nil';\n                      } else {\n                        previewValue = '/* provide preview value */';\n                      }\n                  }\n\n                  return `${prop}: ${previewValue}`;\n                })\n                .join(',\\n              ')}\n            )\n          }\n        }\n        #endif\n      `;\n    }\n\n    str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    str = format(str);\n    str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/swift/helpers.ts",
    "content": "import { capitalize } from '@/helpers/capitalize';\nimport { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport { ToSwiftOptions } from './types';\n\n// TODO(kyle): use babel here to do ast\nexport const convertConsoleLogToPrint = (code: string): string => {\n  if (!code) return code;\n\n  // Match console.log statements with various argument patterns\n  return code.replace(/console\\.log\\s*\\(\\s*(.*?)\\s*\\)/g, (match, args) => {\n    // Handle empty console.log()\n    if (!args.trim()) {\n      return 'print()';\n    }\n\n    // Simple handling for basic console.log calls\n    // For complex cases, we'd need a more sophisticated parser\n    return `print(${ensureSwiftStringFormat(args)})`;\n  });\n};\n\n// Helper function to ensure Swift strings use double quotes\nexport const ensureSwiftStringFormat = (code: string): string => {\n  if (!code) return code;\n\n  // We need a more reliable approach to handle nested quotes\n  // This uses a state machine approach to track whether we're inside double quotes\n  let result = '';\n  let insideDoubleQuotes = false;\n\n  for (let i = 0; i < code.length; i++) {\n    const char = code[i];\n    const prevChar = i > 0 ? code[i - 1] : '';\n\n    // Handle quote state tracking\n    if (char === '\"' && prevChar !== '\\\\') {\n      insideDoubleQuotes = !insideDoubleQuotes;\n      result += char;\n    }\n    // Only replace single quotes when not inside double quotes\n    else if (char === \"'\" && prevChar !== '\\\\' && !insideDoubleQuotes) {\n      // Start of a single-quoted string\n      result += '\"';\n\n      // Find the end of the single-quoted string, accounting for escaped quotes\n      let j = i + 1;\n      while (j < code.length) {\n        if (code[j] === \"'\" && code[j - 1] !== '\\\\') {\n          break;\n        }\n        j++;\n      }\n\n      // Add the string content\n      result += code.substring(i + 1, j);\n\n      // Add closing double quote if we found the end\n      if (j < code.length) {\n        result += '\"';\n        i = j; // Skip to the end of the single-quoted string\n      } else {\n        // If no closing quote was found, just add the single quote as is\n        result = result.substring(0, result.length - 1) + \"'\";\n      }\n    } else {\n      result += char;\n    }\n  }\n\n  return result;\n};\n\nexport const stripStateAndProps = ({\n  json,\n  options,\n}: {\n  json: MitosisComponent;\n  options: ToSwiftOptions;\n}) => {\n  return (code: string): string => {\n    // Convert console.log statements to Swift print\n    code = convertConsoleLogToPrint(code);\n\n    // Ensure Swift strings use double quotes\n    code = ensureSwiftStringFormat(code);\n\n    // In Swift, we use self.propertyName for accessing properties\n    return stripStateAndPropsRefs(code, {\n      includeState: true,\n      includeProps: true,\n      replaceWith: (name) => {\n        // In Swift, we access properties with self.propertyName\n        return `self.${name}`;\n      },\n    });\n  };\n};\n\nexport const getSwiftType = (type: string | undefined): string => {\n  if (!type) return 'Any';\n\n  // Handle array types with proper Swift syntax\n  if (type.includes('Array<') || type.includes('[]') || type.toLowerCase().startsWith('array')) {\n    // Extract the element type from Array<ElementType>\n    let elementType = 'Any';\n\n    // Match different array type patterns\n    const arrayMatch =\n      type.match(/Array<([^>]+)>/i) ||\n      type.match(/([^[\\]]+)\\[\\]/i) ||\n      type.match(/array\\s*<([^>]+)>/i);\n\n    if (arrayMatch && arrayMatch[1]) {\n      elementType = getSwiftType(arrayMatch[1].trim());\n    }\n\n    // Return Swift array type: [ElementType]\n    return `[${elementType}]`;\n  }\n\n  // Handle primitive types\n  switch (type.toLowerCase()) {\n    case 'string':\n      return 'String';\n    case 'number':\n      return 'Double';\n    case 'boolean':\n    case 'bool':\n      return 'Bool';\n    case 'any':\n      return 'Any';\n    case 'void':\n      return 'Void';\n    case 'object':\n      return '[String: Any]';\n    case 'null':\n    case 'undefined':\n      return 'Optional<Any>';\n    default:\n      // For complex types, return as is with first letter capitalized\n      return type.charAt(0).toUpperCase() + type.slice(1);\n  }\n};\n\nexport const jsxElementToSwiftUIView = (tagName: string): string => {\n  // Map JSX/HTML elements to SwiftUI components\n  switch (tagName.toLowerCase()) {\n    case 'div':\n      return 'VStack';\n    case 'span':\n    case 'p':\n    case 'h1':\n    case 'h2':\n    case 'h3':\n    case 'h4':\n    case 'h5':\n    case 'h6':\n      return 'Text';\n    case 'img':\n      return 'Image';\n    case 'input':\n      return 'TextField';\n    case 'button':\n      return 'Button';\n    case 'a':\n      return 'Link';\n    case 'ul':\n      return 'List';\n    case 'li':\n      return 'Text'; // Will be wrapped in List\n    case 'form':\n      return 'Form';\n    case 'select':\n      return 'Picker';\n    case 'option':\n      return 'Text'; // Options in SwiftUI are part of the Picker content\n    default:\n      // For custom components or unrecognized tags\n      return capitalize(tagName);\n  }\n};\n\nexport const cssToSwiftUIModifiers = (style: Record<string, string>): string[] => {\n  const modifiers: string[] = [];\n\n  // Map CSS properties to SwiftUI modifiers\n  Object.entries(style).forEach(([key, value]) => {\n    switch (key) {\n      case 'backgroundColor':\n        modifiers.push(`.background(Color(\"${value}\"))`);\n        break;\n      case 'color':\n        modifiers.push(`.foregroundColor(Color(\"${value}\"))`);\n        break;\n      case 'fontSize':\n        const fontSize = parseInt(value);\n        if (!isNaN(fontSize)) {\n          modifiers.push(`.font(.system(size: ${fontSize}))`);\n        }\n        break;\n      case 'fontWeight':\n        modifiers.push(`.fontWeight(.${value})`);\n        break;\n      case 'padding':\n        modifiers.push(`.padding(${value})`);\n        break;\n      case 'margin':\n        // Swift doesn't have direct margin equivalent, we'll use padding\n        modifiers.push(`// Note: 'margin' converted to padding: ${value}`);\n        modifiers.push(`.padding(${value})`);\n        break;\n      case 'width':\n        modifiers.push(`.frame(width: ${value})`);\n        break;\n      case 'height':\n        modifiers.push(`.frame(height: ${value})`);\n        break;\n      // Add more CSS to SwiftUI modifier mappings as needed\n      default:\n        modifiers.push(`// Unmapped style: ${key}: ${value}`);\n    }\n  });\n\n  return modifiers;\n};\n\nexport const getStatePropertyTypeAnnotation = (\n  propertyType: string | undefined,\n  type: string | undefined,\n): string => {\n  // Use appropriate SwiftUI property wrappers\n  switch (propertyType) {\n    case 'reactive':\n      // For reactive state, use @State for simple values\n      // @Observable would be used for classes but requires Swift 5.9+/iOS 17+\n      return `@State private var`;\n    case 'normal':\n      // For normal state, use @State for simple values\n      return `@State private var`;\n    default:\n      // For non-reactive values, use a regular property\n      return `var`;\n  }\n};\n\nexport const getEventHandlerName = (eventName: string): string => {\n  switch (eventName) {\n    case 'onClick':\n      return 'onTapGesture';\n    case 'onChange':\n      return 'onChange';\n    case 'onInput':\n      return 'onEditingChanged';\n    case 'onBlur':\n      return 'onSubmit';\n    case 'onFocus':\n      return 'onEditingChanged';\n    default:\n      return eventName;\n  }\n};\n\nexport const needsScrollView = (json: MitosisNode): boolean => {\n  // Check if overflow property indicates scrolling\n  if (json.properties.style) {\n    try {\n      const styleObj = JSON.parse(json.properties.style);\n      return (\n        styleObj.overflow === 'auto' ||\n        styleObj.overflow === 'scroll' ||\n        styleObj.overflowY === 'auto' ||\n        styleObj.overflowY === 'scroll' ||\n        styleObj.overflowX === 'auto' ||\n        styleObj.overflowX === 'scroll'\n      );\n    } catch (e) {\n      // If style can't be parsed, check for overflow directly in the style string\n      const styleStr = json.properties.style;\n      return (\n        styleStr.includes('overflow:auto') ||\n        styleStr.includes('overflow:scroll') ||\n        styleStr.includes('overflow-y:auto') ||\n        styleStr.includes('overflow-y:scroll') ||\n        styleStr.includes('overflow-x:auto') ||\n        styleStr.includes('overflow-x:scroll')\n      );\n    }\n  }\n  return false;\n};\n\nexport const isForEachBlock = (json: MitosisNode): boolean => {\n  // Check if this is a ForEach binding using the bindings.each pattern\n  return !!json.bindings.each?.code;\n};\n\nexport const getForEachParams = (\n  json: MitosisNode,\n  processCode: (code: string) => string,\n): {\n  collection: string;\n  itemName: string;\n  indexName: string | null;\n} => {\n  if (!json.bindings.each?.code) {\n    return { collection: '', itemName: 'item', indexName: null };\n  }\n\n  const eachCode = json.bindings.each.code;\n  let itemName = 'item';\n  let indexName = null;\n\n  // Extract collection, item name, and index name from each binding\n  try {\n    // Parse expressions like: items.map(item => ...)\n    // or items.map((item, index) => ...)\n    const match = eachCode.match(/(\\w+)\\.map\\(\\s*(?:\\()?([^,)]+)(?:,\\s*([^)]+))?\\)?/);\n\n    if (match) {\n      const collection = processCode(match[1]);\n      itemName = match[2].trim();\n      indexName = match[3]?.trim() || null;\n\n      return { collection, itemName, indexName };\n    }\n\n    // Fallback to the whole code as collection if pattern doesn't match\n    return {\n      collection: processCode(eachCode),\n      itemName,\n      indexName,\n    };\n  } catch (e) {\n    console.warn('Failed to parse each binding:', eachCode);\n    return {\n      collection: processCode(eachCode),\n      itemName,\n      indexName,\n    };\n  }\n};\n\nexport const camelToSnakeCase = (str: string): string => {\n  return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n};\n\nexport const getBindingType = (key: string): string => {\n  if (key.startsWith('bind:')) {\n    return key.substring(5);\n  }\n  return key;\n};\n\n/**\n * Extract function signature information from JavaScript function code\n */\nexport const extractFunctionSignature = (\n  code: string,\n): {\n  name: string;\n  params: { name: string; type: string }[];\n  returnType: string;\n  body: string;\n} => {\n  // Default values\n  let name = '';\n  let params: { name: string; type: string }[] = [];\n  let returnType = 'Void';\n  let body = '';\n\n  // Extract function name, parameters, and body\n  const funcMatch = code.match(\n    /(?:function\\s+)?([a-zA-Z_$][a-zA-Z0-9_$]*)?\\s*\\(([^)]*)\\)\\s*(?:=>)?\\s*(?:{([\\s\\S]*)}|(.*))/,\n  );\n\n  if (funcMatch) {\n    name = funcMatch[1] || '';\n\n    // Extract parameters\n    const paramsStr = funcMatch[2].trim();\n    if (paramsStr) {\n      params = paramsStr.split(',').map((param) => {\n        // Handle TypeScript-style parameter types if present\n        const paramParts = param.trim().split(':');\n        const paramName = paramParts[0].trim();\n        const paramType = paramParts.length > 1 ? getSwiftType(paramParts[1].trim()) : 'Any';\n        return { name: paramName, type: paramType };\n      });\n    }\n\n    // Extract function body\n    body = funcMatch[3] || funcMatch[4] || '';\n\n    // Try to determine return type from TypeScript annotations or infer from return statements\n    const returnTypeMatch = code.match(/\\)\\s*:\\s*([^{]+)/);\n    if (returnTypeMatch) {\n      returnType = getSwiftType(returnTypeMatch[1].trim());\n    } else if (body.includes('return')) {\n      // Try to infer from return statements\n      const returnValueMatch = body.match(/return\\s+([\"'].*[\"']|true|false|\\d+|\\d+\\.\\d+|\\[.*\\])/);\n      if (returnValueMatch) {\n        const returnValue = returnValueMatch[1];\n        if (returnValue.startsWith('\"') || returnValue.startsWith(\"'\")) {\n          returnType = 'String';\n        } else if (returnValue === 'true' || returnValue === 'false') {\n          returnType = 'Bool';\n        } else if (returnValue.match(/^\\d+$/)) {\n          returnType = 'Int';\n        } else if (returnValue.match(/^\\d+\\.\\d+$/)) {\n          returnType = 'Double';\n        } else if (returnValue.startsWith('[')) {\n          returnType = '[Any]';\n        }\n      }\n    }\n  }\n\n  return { name, params, returnType, body };\n};\n\n/**\n * Convert JavaScript function code to Swift function syntax\n */\nexport const convertJsFunctionToSwift = (\n  code: string,\n  functionName?: string,\n): { swiftCode: string; signature: string } => {\n  // Extract the function signature\n  const { name, params, returnType, body } = extractFunctionSignature(code);\n\n  // Use provided name or extracted name\n  const finalName = functionName || name || 'function';\n\n  // Convert function body to Swift\n  let swiftBody = body\n    // Convert variable declarations\n    .replace(/\\bvar\\s+(\\w+)/g, 'var $1')\n    .replace(/\\blet\\s+(\\w+)/g, 'let $1')\n    .replace(/\\bconst\\s+(\\w+)/g, 'let $1')\n\n    // Convert common array methods\n    .replace(/\\.push\\(/g, '.append(')\n    .replace(/\\.map\\(/g, '.map(')\n    .replace(/\\.filter\\(/g, '.filter(')\n    .replace(/\\.includes\\(/g, '.contains(')\n    .replace(/\\.indexOf\\(/g, '.firstIndex(of: ')\n\n    // Convert null/undefined checks\n    .replace(/=== null/g, '== nil')\n    .replace(/!== null/g, '!= nil')\n    .replace(/=== undefined/g, '== nil')\n    .replace(/!== undefined/g, '!= nil')\n\n    // Convert console.log\n    .replace(/console\\.log\\((.+?)\\)/g, 'print($1)');\n\n  // Create parameter list with Swift types\n  const paramList = params.map((p) => `${p.name}: ${p.type}`).join(', ');\n\n  // Build the Swift function signature\n  const signature = `func ${finalName}(${paramList}) -> ${returnType}`;\n\n  // Build the complete Swift function\n  const swiftCode = `${signature} {\\n  ${swiftBody}\\n}`;\n\n  return { swiftCode, signature };\n};\n"
  },
  {
    "path": "packages/core/src/generators/swift/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/swift/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToSwiftOptions extends BaseTranspilerOptions {\n  /**\n   * Format generated Swift code\n   * @default true\n   */\n  formatCode?: boolean;\n\n  /**\n   * Include type annotations in Swift code\n   * @default true\n   */\n  includeTypes?: boolean;\n\n  /**\n   * Type of state management to use\n   * @default 'state'\n   */\n  stateType?: 'state' | 'stateObject' | 'observable';\n\n  /**\n   * Prefix for class names\n   * @default ''\n   */\n  classPrefix?: string;\n\n  /**\n   * Whether to include SwiftUI preview code\n   * @default true\n   */\n  includePreview?: boolean;\n}\n\nexport type SwiftMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/taro/generator.ts",
    "content": "import { ToTaroOptions } from '@/generators/taro/types';\nimport json5 from 'json5';\nimport { camelCase, size } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { MitosisPlugin } from '../..';\nimport { createSingleBinding } from '../../helpers/bindings';\nimport { fastClone } from '../../helpers/fast-clone';\nimport { isMitosisNode } from '../../helpers/is-mitosis-node';\nimport { mergeOptions } from '../../helpers/merge-options';\nimport { ClassStyleMap } from '../../helpers/styles/helpers';\nimport { MitosisComponent, MitosisImport } from '../../types/mitosis-component';\nimport { TranspilerGenerator } from '../../types/transpiler';\nimport { componentToReact } from '../react';\n\n// @tarojs/components\nexport const DEFAULT_Component_SET = new Set<string>([\n  'View',\n  'Icon',\n  'Progress',\n  'RichText',\n  'Text',\n  'Button',\n  'Checkbox',\n  'CheckboxGroup',\n  'Form',\n  'Input',\n  'Label',\n  'Picker',\n  'PickerView',\n  'PickerViewColumn',\n  'Radio',\n  'RadioGroup',\n  'Slider',\n  'Switch',\n  'CoverImage',\n  'Textarea',\n  'CoverView',\n  'MovableArea',\n  'MovableView',\n  'ScrollView',\n  'Swiper',\n  'SwiperItem',\n  'Navigator',\n  'Audio',\n  'Camera',\n  'Image',\n  'LivePlayer',\n  'Video',\n  'Canvas',\n  'Ad',\n  'WebView',\n  'Block',\n  'Map',\n  'Slot',\n  'SlotView',\n  'Editor',\n  'MatchMedia',\n  'FunctionalPageNavigator',\n  'LivePusher',\n  'OfficialAccount',\n  'OpenData',\n  'NavigationBar',\n  'PageMeta',\n  'VoipRoom',\n  'AdCustom',\n]);\n\n// TODO: px to 2 px\nexport const collectTaroStyles = (json: MitosisComponent): ClassStyleMap => {\n  const styleMap: ClassStyleMap = {};\n\n  const componentIndexes: { [className: string]: number | undefined } = {};\n\n  traverse(json).forEach(function (item) {\n    if (!isMitosisNode(item) || typeof item.bindings.css?.code !== 'string') {\n      return;\n    }\n    const value = json5.parse(item.bindings.css.code);\n    delete item.bindings.css;\n    if (!size(value)) {\n      return;\n    }\n\n    for (const key in value) {\n      const propertyValue = value[key];\n      // convert px to 2 * px, PX to PX\n      if (typeof propertyValue === 'string' && propertyValue.match(/^\\d/)) {\n        let newValue = parseFloat(propertyValue);\n        if (!isNaN(newValue)) {\n          if (propertyValue.endsWith('px')) {\n            newValue = 2 * newValue;\n            value[key] = `${newValue}px`;\n          } else {\n            value[key] = newValue;\n          }\n        }\n      }\n    }\n    const componentName = camelCase(item.name || 'view');\n    const index = (componentIndexes[componentName] = (componentIndexes[componentName] || 0) + 1);\n    const className = `${componentName}${index}`;\n    item.bindings.style = createSingleBinding({ code: `styles.${className}` });\n\n    styleMap[className] = value;\n  });\n\n  return styleMap;\n};\n\nexport const TagMap: Record<string, string> = {\n  span: 'Text',\n  button: 'Button',\n  input: 'Input',\n  img: 'Image',\n  form: 'Form',\n  textarea: 'Textarea',\n};\n\n/**\n * Plugin that handles necessary transformations from React to React Native:\n * - Converts DOM tags to @tarojs/components\n * - Removes redundant `class`/`className` attributes\n */\nconst PROCESS_TARO_PLUGIN: MitosisPlugin = () => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      const TaroComponentsImports: MitosisImport = { path: '@tarojs/components', imports: {} };\n      json.imports.push(TaroComponentsImports);\n      traverse(json).forEach((node) => {\n        if (isMitosisNode(node)) {\n          // TODO: More dom tags convert to  @tarojs/components\n          if (!!TagMap[node.name]) {\n            TaroComponentsImports.imports[TagMap[node.name]] = TagMap[node.name];\n            node.name = TagMap[node.name];\n          } else if (node.name.toLowerCase() === node.name) {\n            TaroComponentsImports.imports.View = 'View';\n            node.name = 'View';\n          }\n\n          if (node.properties._text?.trim().length || node.bindings._text?.code?.trim()?.length) {\n            TaroComponentsImports.imports.Text = 'Text';\n            node.name = 'Text';\n          }\n\n          if (node.properties.class) {\n            delete node.properties.class;\n          }\n          if (node.properties.className) {\n            delete node.properties.className;\n          }\n          if (node.bindings.class) {\n            delete node.bindings.class;\n          }\n          if (node.bindings.className) {\n            delete node.bindings.className;\n          }\n        }\n      });\n    },\n  },\n});\n\nconst DEFAULT_OPTIONS: Partial<ToTaroOptions> = {\n  stateType: 'useState',\n  plugins: [PROCESS_TARO_PLUGIN],\n};\n\nexport const componentToTaro: TranspilerGenerator<Partial<ToTaroOptions>> =\n  (_options = {}) =>\n  ({ component, path }) => {\n    const json = fastClone(component);\n\n    const options = mergeOptions(DEFAULT_OPTIONS, _options, {\n      type: 'taro',\n    });\n\n    return componentToReact(options)({ component: json, path });\n  };\n"
  },
  {
    "path": "packages/core/src/generators/taro/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/taro/types.ts",
    "content": "import { ToReactOptions } from '@/generators/react';\n\nexport type ToTaroOptions = ToReactOptions;\n\nexport type TaroMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/template/generator.ts",
    "content": "import { ToTemplateOptions } from '@/generators/template/types';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { format } from 'prettier/standalone';\nimport { SELF_CLOSING_HTML_TAGS } from '../../constants/html_tags';\nimport { dedent } from '../../helpers/dedent';\nimport { fastClone } from '../../helpers/fast-clone';\nimport { getStateObjectStringFromComponent } from '../../helpers/get-state-object-string';\nimport { collectCss } from '../../helpers/styles/collect-css';\nimport {\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { MitosisNode, checkIsForNode } from '../../types/mitosis-node';\nimport { TranspilerGenerator } from '../../types/transpiler';\n\nconst mappers: {\n  [key: string]: (json: MitosisNode, options: ToTemplateOptions) => string;\n} = {\n  Fragment: (json, options) => {\n    return `<div>${json.children.map((item) => blockToTemplate(item, options)).join('\\n')}</div>`;\n  },\n};\n\n// TODO: spread support\nconst blockToTemplate = (json: MitosisNode, options: ToTemplateOptions = {}) => {\n  if (mappers[json.name]) {\n    return mappers[json.name](json, options);\n  }\n\n  if (json.properties._text) {\n    return json.properties._text;\n  }\n  if (json.bindings._text) {\n    return `\\${${json.bindings._text?.code}}`;\n  }\n\n  let str = '';\n\n  if (checkIsForNode(json)) {\n    str += `\\${${json.bindings.each?.code}?.map(${json.scope.forName} => \\``;\n    if (json.children) {\n      str += json.children.map((item) => blockToTemplate(item, options)).join('\\n');\n    }\n\n    str += '`).join(\"\")}';\n  } else if (json.name === 'Show') {\n    str += `\\${!(${json.bindings.when?.code}) ? '' : \\``;\n    if (json.children) {\n      str += json.children.map((item) => blockToTemplate(item, options)).join('\\n');\n    }\n\n    str += '`}';\n  } else {\n    str += `<${json.name} `;\n\n    // TODO: JS iteration or with helper\n    // if (json.bindings._spread === '_spread') {\n    //   str += `\n    //       {% for _attr in ${json.bindings._spread} %}\n    //         {{ _attr[0] }}=\"{{ _attr[1] }}\"\n    //       {% endfor %}\n    //     `;\n    // }\n\n    for (const key in json.properties) {\n      const value = json.properties[key];\n      str += ` ${key}=\"${value}\" `;\n    }\n\n    for (const key in json.bindings) {\n      if (json.bindings[key]?.type === 'spread' || key === 'ref' || key === 'css') {\n        continue;\n      }\n      const value = json.bindings[key]?.code;\n      // TODO: proper babel transform to replace. Util for this\n      const useValue = value;\n\n      if (checkIsEvent(key)) {\n        // Do nothing\n      } else {\n        str += ` ${key}=\"\\${${useValue}}\" `;\n      }\n    }\n    if (SELF_CLOSING_HTML_TAGS.has(json.name)) {\n      return str + ' />';\n    }\n    str += '>';\n    if (json.children) {\n      str += json.children.map((item) => blockToTemplate(item, options)).join('\\n');\n    }\n\n    str += `</${json.name}>`;\n  }\n  return str;\n};\n\n// TODO: add JS support similar to componentToHtml()\nexport const componentToTemplate: TranspilerGenerator<ToTemplateOptions> =\n  (options = {}) =>\n  ({ component }) => {\n    let json = fastClone(component);\n    if (options.plugins) {\n      json = runPreJsonPlugins({ json, plugins: options.plugins });\n    }\n    const css = collectCss(json);\n    if (options.plugins) {\n      json = runPostJsonPlugins({ json, plugins: options.plugins });\n    }\n    let str = json.children.map((item) => blockToTemplate(item)).join('\\n');\n\n    if (css.trim().length) {\n      str += `<style>${css}</style>`;\n    }\n\n    str = dedent`\n    export default function template(props) {\n      let state = ${getStateObjectStringFromComponent(json)}\n\n      return \\`${str.replace(/\\s+/g, ' ')}\\`\n    }\n  \n  `;\n\n    if (options.plugins) {\n      str = runPreCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n\n    if (options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'typescript',\n          htmlWhitespaceSensitivity: 'ignore',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-typescript'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n\n    if (options.plugins) {\n      str = runPostCodePlugins({ json, code: str, plugins: options.plugins });\n    }\n    return str;\n  };\n"
  },
  {
    "path": "packages/core/src/generators/template/index.ts",
    "content": "export * from './generator';\nexport * from './types';\n"
  },
  {
    "path": "packages/core/src/generators/template/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport interface ToTemplateOptions extends BaseTranspilerOptions {}\n\nexport type TemplateMetadata = {};\n"
  },
  {
    "path": "packages/core/src/generators/vue/blocks.ts",
    "content": "import { createSingleBinding } from '@/helpers/bindings';\nimport { checkIsEvent } from '@/helpers/event-handlers';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport isChildren from '@/helpers/is-children';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { checkIsDefined } from '@/helpers/nullable';\nimport { removeSurroundingBlock } from '@/helpers/remove-surrounding-block';\nimport { replaceIdentifiers } from '@/helpers/replace-identifiers';\nimport { isSlotProperty, stripSlotPrefix, toKebabSlot } from '@/helpers/slots';\nimport { Dictionary } from '@/helpers/typescript';\nimport { Binding, ForNode, MitosisNode, SpreadType } from '@/types/mitosis-node';\nimport { identity, pipe } from 'fp-ts/lib/function';\nimport { SELF_CLOSING_HTML_TAGS, VALID_HTML_TAGS } from '../../constants/html_tags';\nimport { encodeQuotes } from './helpers';\nimport { ToVueOptions } from './types';\n\nconst SPECIAL_PROPERTIES = {\n  V_IF: 'v-if',\n  V_FOR: 'v-for',\n  V_ELSE: 'v-else',\n  V_ELSE_IF: 'v-else-if',\n  V_ON: 'v-on',\n  V_ON_AT: '@',\n  V_BIND: 'v-bind',\n} as const;\n\n/**\n * blockToVue executed after processBinding,\n * when processBinding is executed,\n * SLOT_PREFIX from `slot` change to `$slots.`\n */\nconst SLOT_PREFIX = '$slots.';\n\ntype BlockRenderer = (json: MitosisNode, options: ToVueOptions, scope?: Scope) => string;\n\ninterface Scope {\n  isRootNode?: boolean;\n}\n\n// TODO: Maybe in the future allow defining `string | function` as values\nconst BINDING_MAPPERS: { [key: string]: string | undefined } = {\n  innerHTML: 'v-html',\n};\n\nconst NODE_MAPPERS: {\n  [key: string]: BlockRenderer | undefined;\n} = {\n  Fragment(json, options, scope) {\n    const children = json.children.filter(filterEmptyTextNodes);\n\n    const childrenStr = children.map((item) => blockToVue(item, options)).join('\\n');\n\n    return childrenStr;\n  },\n  For(_json, options) {\n    const json = _json as ForNode;\n    const keyValue = json.bindings.key || { code: json.scope.indexName ?? 'index', type: 'single' };\n    const forValue = `(${json.scope.forName ?? '_'}, ${json.scope.indexName ?? 'index'}) in ${\n      json.bindings.each?.code\n    }`;\n\n    // TODO: tmk key goes on different element (parent vs child) based on Vue 2 vs Vue 3\n    return `<template :key=\"${encodeQuotes(keyValue?.code || 'index')}\" v-for=\"${encodeQuotes(\n      forValue,\n    )}\">\n        ${json.children.map((item) => blockToVue(item, options)).join('\\n')}\n      </template>`;\n  },\n  Show(json, options, scope) {\n    const ifValue = json.bindings.when?.code || '';\n\n    const defaultShowTemplate = `\n    <template ${SPECIAL_PROPERTIES.V_IF}=\"${encodeQuotes(ifValue)}\">\n      ${json.children.map((item) => blockToVue(item, options)).join('\\n')}\n    </template>\n    ${\n      isMitosisNode(json.meta.else)\n        ? `\n        <template ${SPECIAL_PROPERTIES.V_ELSE}>\n          ${blockToVue(json.meta.else, options)}\n        </template>`\n        : ''\n    }\n    `;\n\n    return defaultShowTemplate;\n  },\n  Slot(json, options) {\n    const slotName = json.bindings.name?.code || json.properties.name;\n\n    const renderChildren = () => json.children?.map((item) => blockToVue(item, options)).join('\\n');\n\n    if (!slotName) {\n      const key = Object.keys(json.bindings).find(Boolean);\n      if (!key) {\n        if (!json.children?.length) {\n          return '<slot/>';\n        }\n        return `<slot>${renderChildren()}</slot>`;\n      }\n\n      return `\n        <template #${key}>\n          ${json.bindings[key]?.code}\n        </template>\n      `;\n    }\n\n    if (slotName === 'default') {\n      return `<slot>${renderChildren()}</slot>`;\n    }\n\n    return `<slot name=\"${toKebabSlot(slotName, SLOT_PREFIX)}\">${renderChildren()}</slot>`;\n  },\n};\n\nconst SPECIAL_HTML_TAGS = ['style', 'script'];\n\nconst stringifyBinding =\n  (node: MitosisNode, options: ToVueOptions) =>\n  ([key, value]: [string, Binding]) => {\n    const isValidHtmlTag = VALID_HTML_TAGS.includes(node.name);\n\n    if (value.type === 'spread') {\n      return ''; // we handle this after\n    } else if (key === 'class' && options.convertClassStringToObject) {\n      return `:class=\"_classStringToObject(${value?.code})\"`;\n      // TODO: support dynamic classes as objects somehow like Vue requires\n      // https://vuejs.org/v2/guide/class-and-style.html\n    } else {\n      // TODO: proper babel transform to replace. Util for this\n      const useValue = value?.code || '';\n\n      if (checkIsEvent(key) && isValidHtmlTag) {\n        // handle html native on[event] props\n        const { arguments: cusArgs = ['event'], async } = value;\n        let event = key.replace('on', '').toLowerCase();\n        const isAssignmentExpression = useValue.includes('=');\n\n        let eventHandlerValue: string;\n        if (async) {\n          eventHandlerValue = pipe(\n            replaceIdentifiers({\n              code: useValue,\n              from: cusArgs[0],\n              to: '$event',\n            }),\n            isAssignmentExpression ? identity : removeSurroundingBlock,\n            removeSurroundingBlock,\n            encodeQuotes,\n          );\n        } else {\n          eventHandlerValue = `async (${cusArgs.join(', ')}) => ${useValue}`;\n        }\n        const eventHandlerKey = `${SPECIAL_PROPERTIES.V_ON_AT}${event}`;\n\n        return `${eventHandlerKey}=\"${eventHandlerValue}\"`;\n      } else if (checkIsEvent(key)) {\n        // handle on[custom event] props\n        const { arguments: cusArgs = ['event'] } = node.bindings[key]!;\n        return `:${key}=\"(${cusArgs.join(',')}) => ${encodeQuotes(useValue)}\"`;\n      } else if (key === 'ref') {\n        return `ref=\"${encodeQuotes(useValue)}\"`;\n      } else if (BINDING_MAPPERS[key]) {\n        return `${BINDING_MAPPERS[key]}=\"${encodeQuotes(useValue.replace(/\"/g, \"\\\\'\"))}\"`;\n      } else {\n        return `:${key}=\"${encodeQuotes(useValue)}\"`;\n      }\n    }\n  };\n\nconst stringifySpreads = ({ node, spreadType }: { node: MitosisNode; spreadType: SpreadType }) => {\n  const spreads = Object.values(node.bindings)\n    .filter(checkIsDefined)\n    .filter((binding) => binding.type === 'spread' && binding.spreadType === spreadType)\n    .map((value) => (value!.code === 'props' ? '$props' : value!.code));\n\n  if (spreads.length === 0) {\n    return '';\n  }\n\n  const stringifiedValue =\n    spreads.length > 1 ? `{${spreads.map((spread) => `...${spread}`).join(', ')}}` : spreads[0];\n\n  const key = spreadType === 'normal' ? SPECIAL_PROPERTIES.V_BIND : SPECIAL_PROPERTIES.V_ON;\n\n  return ` ${key}=\"${encodeQuotes(stringifiedValue)}\" `;\n};\n\nconst getBlockBindings = (node: MitosisNode, options: ToVueOptions) => {\n  const stringifiedProperties = Object.entries(node.properties)\n    .map(([key, value]) => {\n      if (key === 'className') {\n        return '';\n      } else if (key === SPECIAL_PROPERTIES.V_ELSE) {\n        return `${key}`;\n      } else if (typeof value === 'string') {\n        return `${key}=\"${encodeQuotes(value)}\"`;\n      }\n    })\n    .join(' ');\n\n  const stringifiedBindings = Object.entries(node.bindings as Dictionary<Binding>)\n    .map(stringifyBinding(node, options))\n    .join(' ');\n\n  return [\n    stringifiedProperties,\n    stringifiedBindings,\n    stringifySpreads({ node, spreadType: 'normal' }),\n    stringifySpreads({ node, spreadType: 'event-handlers' }),\n  ].join(' ');\n};\n\nexport const blockToVue: BlockRenderer = (node, options, scope) => {\n  const nodeMapper = NODE_MAPPERS[node.name];\n  if (nodeMapper) {\n    return nodeMapper(node, options, scope);\n  }\n\n  if (isChildren({ node })) {\n    return `<slot/>`;\n  }\n\n  if (SPECIAL_HTML_TAGS.includes(node.name)) {\n    // Vue doesn't allow style/script tags in templates, but does support them through dynamic components.\n    node.bindings.is = createSingleBinding({ code: `'${node.name}'` });\n    node.name = 'component';\n  }\n\n  if (node.properties._text) {\n    return `${node.properties._text}`;\n  }\n\n  const textCode = node.bindings._text?.code;\n  if (textCode) {\n    if (isSlotProperty(textCode, SLOT_PREFIX)) {\n      const slotName = stripSlotPrefix(textCode, SLOT_PREFIX).toLowerCase();\n\n      if (slotName === 'default') return `<slot/>`;\n\n      return `<slot name=\"${slotName}\"/>`;\n    }\n    return `{{${textCode}}}`;\n  }\n\n  let str = `<${node.name} `;\n\n  str += getBlockBindings(node, options);\n\n  if (SELF_CLOSING_HTML_TAGS.has(node.name)) {\n    return str + ' />';\n  }\n\n  str += '>';\n  if (node.children) {\n    str += node.children.map((item) => blockToVue(item, options)).join('');\n  }\n\n  return str + `</${node.name}>`;\n};\n"
  },
  {
    "path": "packages/core/src/generators/vue/compositionApi.ts",
    "content": "import { dedent } from '@/helpers/dedent';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { getTypedFunction } from '@/helpers/get-typed-function';\nimport { BaseHook, MitosisComponent } from '@/types/mitosis-component';\nimport json5 from 'json5';\nimport { pickBy } from 'lodash';\nimport { getContextKey, getContextValue, processBinding } from './helpers';\nimport { ToVueOptions } from './types';\n\nconst getCompositionPropDefinition = ({\n  options,\n  component,\n  props,\n}: {\n  options: ToVueOptions;\n  component: MitosisComponent;\n  props: string[];\n}) => {\n  const isTs = options.typescript;\n  let str = 'const props = ';\n\n  if (component.defaultProps) {\n    const generic = isTs && component.propsTypeRef !== 'any' ? `<${component.propsTypeRef}>` : '';\n    const defalutPropsString = props\n      .map((prop) => {\n        const value = component.defaultProps!.hasOwnProperty(prop)\n          ? component.defaultProps![prop]?.code\n          : 'undefined';\n        return `${prop}: ${value}`;\n      })\n      .join(',');\n    str += `withDefaults(defineProps${generic}(), {${defalutPropsString}})`;\n  } else if (isTs && component.propsTypeRef && component.propsTypeRef !== 'any') {\n    str += `defineProps<${component.propsTypeRef}>()`;\n  } else {\n    str += `defineProps(${json5.stringify(props)})`;\n  }\n  return str;\n};\n\nexport function generateCompositionApiScript(\n  component: MitosisComponent,\n  options: ToVueOptions,\n  template: string,\n  props: Array<string>,\n  onUpdateWithDeps: BaseHook[],\n  onUpdateWithoutDeps: BaseHook[],\n) {\n  const isTs = options.typescript;\n  let refs = getStateObjectStringFromComponent(component, {\n    data: true,\n    functions: false,\n    getters: false,\n    format: 'variables',\n    valueMapper: (code, _, typeParameter) => {\n      return isTs && typeParameter ? `ref<${typeParameter}>(${code})` : `ref(${code})`;\n    },\n    keyPrefix: 'const',\n  });\n\n  let methods = getStateObjectStringFromComponent(component, {\n    data: false,\n    getters: false,\n    functions: true,\n    format: 'variables',\n    valueMapper: (\n      code: string,\n      type: 'data' | 'function' | 'getter',\n      typeParameter: string | undefined,\n    ) => {\n      if (type != 'data') {\n        return getTypedFunction(code, isTs, typeParameter);\n      }\n\n      return code;\n    },\n  });\n\n  if (template.includes('_classStringToObject')) {\n    methods += ` function _classStringToObject(str${isTs ? ': string' : ''}) {\n      const obj${isTs ? ': Record<string, boolean>' : ''} = {};\n      if (typeof str !== 'string') { return obj }\n      const classNames = str.trim().split(/\\\\s+/);\n      for (const name of classNames) {\n        obj[name] = true;\n      }\n      return obj;\n    } `;\n  }\n\n  const getterKeys = Object.keys(pickBy(component.state, (i) => i?.type === 'getter'));\n\n  let str = dedent`\n    ${props.length ? getCompositionPropDefinition({ component, props, options }) : ''}\n    ${refs}\n\n    ${Object.entries(component.context.get)\n      ?.map(([key, context]) => {\n        return `const ${key} = inject(${getContextKey(context)})`;\n      })\n      .join('\\n')}\n\n    ${Object.values(component.context.set)\n      ?.map((contextSet) => {\n        const contextValue = getContextValue(contextSet);\n        const key = getContextKey(contextSet);\n\n        return `provide(${key}, ${contextValue})`;\n      })\n      .join('\\n')}\n\n    ${Object.keys(component.refs)\n      ?.map((key) => {\n        if (isTs) {\n          const type = component.refs[key].typeParameter ?? 'any';\n          return `const ${key} = ref<${type}>(null)`;\n        } else {\n          return `const ${key} = ref(null)`;\n        }\n      })\n      .join('\\n')}\n    ${component.hooks.onInit?.code ?? ''}\n    ${component.hooks.onMount.map((hook) => `onMounted(() => { ${hook.code} })`).join('\\n')}\n    ${\n      !component.hooks.onUnMount?.code\n        ? ''\n        : `onUnmounted(() => { ${component.hooks.onUnMount.code}})`\n    }\n    ${\n      getterKeys\n        ?.map((key) => {\n          const code = component.state[key]?.code?.toString();\n\n          if (!code) {\n            return '';\n          }\n\n          // transform `foo() { return this.bar }` to `() => { return bar.value }`\n          const getterAsFunction = code.replace(key, '').trim().replace(/^\\(\\)/, '() =>');\n\n          const computedCode = `const ${key} = computed(${getterAsFunction})`;\n\n          return computedCode;\n        })\n        .join('\\n') || ''\n    }\n\n    ${onUpdateWithoutDeps?.map((hook) => `onUpdated(() => {${hook.code}})`).join('\\n') || ''}\n\n    ${\n      onUpdateWithDeps\n        ?.map((hook) => {\n          return `watch(() => ${processBinding({\n            code: hook.deps || '',\n            options,\n            json: component,\n          })}, () => { ${hook.code} }, {immediate: true})`;\n        })\n        .join('\\n') || ''\n    }\n    ${methods ?? ''}\n  `;\n\n  return str;\n}\n"
  },
  {
    "path": "packages/core/src/generators/vue/helpers.ts",
    "content": "import { babelTransformExpression } from '@/helpers/babel-transform';\nimport { stringifyContextValue } from '@/helpers/get-state-object-string';\nimport { Nullable } from '@/helpers/nullable';\nimport { stripGetter } from '@/helpers/patterns';\nimport {\n  replaceIdentifiers,\n  replacePropsIdentifier,\n  replaceStateIdentifier,\n} from '@/helpers/replace-identifiers';\nimport { isSlotProperty, replaceSlotsInString } from '@/helpers/slots';\nimport { ContextGetInfo, ContextSetInfo, MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport { types } from '@babel/core';\nimport { flow, identity, pipe } from 'fp-ts/lib/function';\nimport { pickBy } from 'lodash';\nimport { VALID_HTML_TAGS } from '../../constants/html_tags';\nimport { ToVueOptions } from './types';\n\nexport const addPropertiesToJson =\n  (properties: MitosisNode['properties']) =>\n  (json: MitosisNode): MitosisNode => ({\n    ...json,\n    properties: {\n      ...json.properties,\n      ...properties,\n    },\n  });\n\nexport const addBindingsToJson =\n  (bindings: MitosisNode['bindings']) =>\n  (json: MitosisNode): MitosisNode => ({\n    ...json,\n    bindings: {\n      ...json.bindings,\n      ...bindings,\n    },\n  });\n\nconst ON_UPDATE_HOOK_NAME = 'onUpdateHook';\n\nexport const getOnUpdateHookName = (index: number) => ON_UPDATE_HOOK_NAME + `${index}`;\n\nexport const invertBooleanExpression = (expression: string) => `!Boolean(${expression})`;\n\nexport function encodeQuotes(string: string) {\n  return string.replace(/\"/g, '&quot;');\n}\n\nexport const mapMitosisComponentToKebabCase = (componentName: string) =>\n  componentName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n\n// Transform <FooBar> to <foo-bar> as Vue2 needs\nexport const renameMitosisComponentsToKebabCase = (str: string) =>\n  str.replace(/<\\/?\\w+/g, (match) => {\n    const tagName = match.replaceAll('<', '').replaceAll('/', '');\n    if (VALID_HTML_TAGS.includes(tagName)) {\n      return match;\n    } else {\n      return mapMitosisComponentToKebabCase(match);\n    }\n  });\n\nexport function getContextNames(json: MitosisComponent) {\n  return Object.keys(json.context.get);\n}\n\nfunction shouldAppendValueToRef(path: babel.NodePath<babel.types.Identifier>) {\n  const { parent, node } = path;\n\n  if (types.isFunctionDeclaration(parent) && parent.id === node) {\n    return false;\n  }\n\n  if (types.isCallExpression(parent)) {\n    return false;\n  }\n\n  const isMemberExpression = types.isMemberExpression(parent);\n\n  if (\n    isMemberExpression &&\n    types.isThisExpression(parent.object) &&\n    types.isProgram(path.scope.block) &&\n    path.scope.hasReference(node.name)\n  ) {\n    return false;\n  }\n\n  if (\n    isMemberExpression &&\n    types.isIdentifier(parent.object) &&\n    types.isIdentifier(parent.property) &&\n    parent.property.name === node.name\n  ) {\n    return false;\n  }\n\n  if (Object.keys(path.scope.bindings).includes(path.node.name)) {\n    return false;\n  }\n\n  if (path.parentPath.listKey === 'arguments' || path.parentPath.listKey === 'params') {\n    return false;\n  }\n\n  return true;\n}\nconst getAllRefs = (component: MitosisComponent) => {\n  const refKeys = Object.keys(component.refs);\n  const stateKeys = Object.keys(pickBy(component.state, (i) => i?.type === 'property'));\n  const allKeys = [...refKeys, ...stateKeys];\n\n  return allKeys;\n};\n\nfunction processRefs({\n  input,\n  component,\n  options,\n  thisPrefix,\n}: {\n  input: string;\n  component: MitosisComponent;\n  options: ToVueOptions;\n  thisPrefix: ProcessBinding['thisPrefix'];\n}) {\n  const { api } = options;\n  const refs = api === 'options' ? getContextNames(component) : getAllRefs(component);\n\n  return babelTransformExpression(input, {\n    Identifier(path: babel.NodePath<babel.types.Identifier>) {\n      const name = path.node.name;\n      // Composition api should use .value all the time\n      if (refs.includes(name) && (api === 'composition' || shouldAppendValueToRef(path))) {\n        const newValue = api === 'options' ? `${thisPrefix}.${name}` : `${name}.value`;\n        path.replaceWith(types.identifier(newValue));\n      }\n    },\n  });\n}\n\nfunction prefixMethodsWithThis(input: string, component: MitosisComponent, options: ToVueOptions) {\n  if (options.api === 'options') {\n    const allMethodNames = Object.entries(component.state)\n      .filter(([_key, value]) => value?.type === 'function')\n      .map(([key]) => key);\n\n    if (!allMethodNames.length) return input;\n\n    return replaceIdentifiers({ code: input, from: allMethodNames, to: (name) => `this.${name}` });\n  } else {\n    return input;\n  }\n}\n\nfunction optionsApiStateAndPropsReplace(\n  name: string,\n  thisPrefix: string,\n  codeType: ProcessBinding['codeType'],\n) {\n  const prefixToUse = codeType === 'bindings' ? '' : thisPrefix + '.';\n\n  if (name === 'children' || name.startsWith('children.')) {\n    return `${prefixToUse}$slots.default`;\n  }\n  return isSlotProperty(name)\n    ? replaceSlotsInString(name, (x) => `${prefixToUse}$slots.${x}`)\n    : `${prefixToUse}${name}`;\n}\n\ntype ProcessBinding = {\n  code: string;\n  options: ToVueOptions;\n  json: MitosisComponent;\n  preserveGetter?: boolean;\n  thisPrefix?: 'this' | '_this';\n  codeType?: 'state' | 'hooks' | 'bindings' | 'hooks-deps' | 'properties';\n};\n\n// TODO: migrate all stripStateAndPropsRefs to use this here\n// to properly replace context refs\nexport const processBinding = ({\n  code,\n  options,\n  json,\n  preserveGetter = false,\n  thisPrefix = 'this',\n  codeType,\n}: ProcessBinding): string => {\n  try {\n    return pipe(\n      code,\n      replacePropsIdentifier((name) => {\n        switch (options.api) {\n          // keep pointing to `props.${value}`\n          case 'composition':\n            const slotPrefix = codeType === 'bindings' ? '$slots' : 'useSlots()';\n\n            if (name === 'children' || name.startsWith('children.')) {\n              return `${slotPrefix}.default`;\n            }\n            return isSlotProperty(name)\n              ? replaceSlotsInString(name, (x) => `${slotPrefix}.${x}`)\n              : codeType === 'bindings'\n              ? name\n              : `props.${name}`;\n\n          case 'options':\n            return optionsApiStateAndPropsReplace(name, thisPrefix, codeType);\n        }\n      }),\n      replaceStateIdentifier((name) => {\n        switch (options.api) {\n          case 'composition':\n            return name;\n          case 'options':\n            return optionsApiStateAndPropsReplace(name, thisPrefix, codeType);\n        }\n      }),\n      codeType === 'bindings'\n        ? identity\n        : flow(\n            (x) => processRefs({ input: x, component: json, options, thisPrefix }),\n            (x) => prefixMethodsWithThis(x, json, options),\n          ),\n      preserveGetter === false ? stripGetter : identity,\n    );\n  } catch (e) {\n    console.error('could not process bindings in ', { code });\n    throw e;\n  }\n};\n\nexport const getContextValue = ({ name, ref, value }: ContextSetInfo): Nullable<string> => {\n  const valueStr = value ? stringifyContextValue(value) : ref;\n\n  return valueStr;\n};\n\nexport const checkIfContextHasStrName = (context: ContextGetInfo | ContextSetInfo) => {\n  // check if the name is wrapped in single or double quotes\n  const isStrName = context.name.startsWith(\"'\") || context.name.startsWith('\"');\n  return isStrName;\n};\n\nexport const getContextKey = (context: ContextGetInfo | ContextSetInfo) => {\n  const isStrName = checkIfContextHasStrName(context);\n  const key = isStrName ? context.name : `${context.name}.key`;\n  return key;\n};\n"
  },
  {
    "path": "packages/core/src/generators/vue/index.ts",
    "content": "export * from './types';\nexport * from './vue';\n"
  },
  {
    "path": "packages/core/src/generators/vue/optionsApi.ts",
    "content": "import { getComponentsUsed } from '@/helpers/get-components-used';\nimport { getCustomImports } from '@/helpers/get-custom-imports';\nimport { getStateObjectStringFromComponent } from '@/helpers/get-state-object-string';\nimport { checkIsDefined } from '@/helpers/nullable';\nimport { checkIsComponentImport } from '@/helpers/render-imports';\nimport { BaseHook, MitosisComponent } from '@/types/mitosis-component';\nimport json5 from 'json5';\nimport { kebabCase, size, uniq } from 'lodash';\nimport { stringifySingleScopeOnMount } from '../helpers/on-mount';\nimport { encodeQuotes, getContextKey, getContextValue, getOnUpdateHookName } from './helpers';\nimport { DefaultProps, PropsDefinition, ToVueOptions } from './types';\n\nconst getContextProvideString = (json: MitosisComponent, options: ToVueOptions) => {\n  return `{\n    ${Object.values(json.context.set)\n      .map((setVal) => {\n        const key = getContextKey(setVal);\n        return `[${key}]: ${getContextValue(setVal)}`;\n      })\n      .join(',')}\n  }`;\n};\n\nfunction getContextInjectString(component: MitosisComponent, options: ToVueOptions) {\n  let str = '{';\n\n  const contextGetters = component.context.get;\n\n  for (const key in contextGetters) {\n    const context = contextGetters[key];\n    str += `\n      ${key}: ${encodeQuotes(getContextKey(context))},\n    `;\n  }\n\n  str += '}';\n  return str;\n}\n\nconst generateComponentImport =\n  (options: ToVueOptions) =>\n  (componentName: string): string => {\n    if (options.asyncComponentImports) {\n      return `'${componentName}': defineAsyncComponent(${componentName})`;\n    } else {\n      return `'${componentName}': ${componentName}`;\n    }\n  };\n\nconst generateComponents = (componentsUsed: string[], options: ToVueOptions): string => {\n  if (componentsUsed.length === 0) {\n    return '';\n  } else {\n    return `components: { ${componentsUsed.map(generateComponentImport(options)).join(',')} },`;\n  }\n};\n\nconst appendToDataString = ({\n  dataString,\n  newContent,\n}: {\n  dataString: string;\n  newContent: string;\n}) => dataString.replace(/}$/, `${newContent}}`);\n\nexport function generateOptionsApiScript(\n  component: MitosisComponent,\n  options: ToVueOptions,\n  path: string | undefined,\n  template: string,\n  props: string[],\n  onUpdateWithDeps: BaseHook[],\n  onUpdateWithoutDeps: BaseHook[],\n) {\n  const { exports: localExports } = component;\n  const localVarAsData: string[] = [];\n  const localVarAsFunc: string[] = [];\n  const isTs = options.typescript;\n  if (localExports) {\n    Object.keys(localExports).forEach((key) => {\n      if (localExports[key].usedInLocal) {\n        if (localExports[key].isFunction) {\n          localVarAsFunc.push(key);\n        } else {\n          localVarAsData.push(key);\n        }\n      }\n    });\n  }\n\n  let dataString = getStateObjectStringFromComponent(component, {\n    data: true,\n    functions: false,\n    getters: false,\n  });\n\n  // Append refs to data as { foo, bar, etc }\n  dataString = appendToDataString({\n    dataString,\n    newContent: getCustomImports(component).join(','),\n  });\n\n  if (localVarAsData.length) {\n    dataString = appendToDataString({ dataString, newContent: localVarAsData.join(',') });\n  }\n\n  const getterString = getStateObjectStringFromComponent(component, {\n    data: false,\n    getters: true,\n    functions: false,\n  });\n\n  let functionsString = getStateObjectStringFromComponent(component, {\n    data: false,\n    getters: false,\n    functions: true,\n  });\n\n  const includeClassMapHelper = template.includes('_classStringToObject');\n\n  if (includeClassMapHelper) {\n    functionsString = functionsString.replace(\n      /}\\s*$/,\n      `_classStringToObject(str${isTs ? ': string' : ''}) {\n        const obj${isTs ? ': Record<string, boolean>' : ''} = {};\n        if (typeof str !== 'string') { return obj }\n        const classNames = str.trim().split(/\\\\s+/);\n        for (const name of classNames) {\n          obj[name] = true;\n        }\n        return obj;\n      }  }`,\n    );\n  }\n\n  if (localVarAsFunc.length) {\n    functionsString = functionsString.replace(/}\\s*$/, `${localVarAsFunc.join(',')}}`);\n  }\n\n  // Component references to include in `component: { YourComponent, ... }\n  const componentsUsedInTemplate = Array.from(getComponentsUsed(component))\n    .filter((name) => name.length && !name.includes('.') && name[0].toUpperCase() === name[0])\n    // Strip out components that compile away\n    .filter((name) => !['For', 'Show', 'Fragment', 'Slot', component.name].includes(name));\n\n  // get default imports from component files\n  const importedComponents = component.imports\n    .filter(checkIsComponentImport)\n    .map((imp) => Object.entries(imp.imports).find(([_, value]) => value === 'default')?.[0])\n    .filter(checkIsDefined);\n\n  const componentsUsed = uniq([...componentsUsedInTemplate, ...importedComponents]);\n\n  const getPropDefinition = ({\n    component,\n    props,\n  }: {\n    component: MitosisComponent;\n    props: string[];\n  }) => {\n    const propsDefinition: PropsDefinition<DefaultProps> = Array.from(props).filter(\n      (prop) => prop !== 'children' && prop !== 'class',\n    );\n    let str = 'props: ';\n\n    if (component.defaultProps) {\n      const defalutPropsString = propsDefinition\n        .map((prop) => {\n          const value = component.defaultProps!.hasOwnProperty(prop)\n            ? component.defaultProps![prop]?.code\n            : 'undefined';\n          return `${prop}: { default: ${value} }`;\n        })\n        .join(',');\n\n      str += `{${defalutPropsString}}`;\n    } else {\n      str += `${json5.stringify(propsDefinition)}`;\n    }\n    return `${str},`;\n  };\n\n  return `\n        export default ${options.defineComponent ? 'defineComponent(' : ''} {\n        ${\n          !component.name\n            ? ''\n            : `name: '${\n                path && options.namePrefix?.(path) ? options.namePrefix?.(path) + '-' : ''\n              }${kebabCase(component.name)}',`\n        }\n        ${generateComponents(componentsUsed, options)}\n        ${props.length ? getPropDefinition({ component, props }) : ''}\n        ${\n          dataString.length < 4\n            ? ''\n            : `\n        data() {\n          return ${dataString}\n        },\n        `\n        }\n\n        ${\n          size(component.context.set)\n            ? `provide() {\n                const _this = this;\n                return ${getContextProvideString(component, options)}\n              },`\n            : ''\n        }\n        ${\n          size(component.context.get)\n            ? `inject: ${getContextInjectString(component, options)},`\n            : ''\n        }\n        ${\n          component.hooks.onInit?.code\n            ? `created() {\n                ${component.hooks.onInit.code}\n              },`\n            : ''\n        }\n        ${\n          component.hooks.onMount.length\n            ? `mounted() {\n                ${stringifySingleScopeOnMount(component)}\n              },`\n            : ''\n        }\n        ${\n          onUpdateWithoutDeps.length\n            ? `updated() {\n            ${onUpdateWithoutDeps.map((hook) => hook.code).join('\\n')}\n          },`\n            : ''\n        }\n        ${\n          onUpdateWithDeps.length\n            ? `watch: {\n            ${onUpdateWithDeps\n              .map(\n                (hook, index) =>\n                  `${getOnUpdateHookName(index)}: { handler() { ${hook.code} }, immediate: true }`,\n              )\n              .join(',')}\n          },`\n            : ''\n        }\n        ${\n          component.hooks.onUnMount\n            ? `unmounted() {\n                ${component.hooks.onUnMount.code}\n              },`\n            : ''\n        }\n\n        ${\n          getterString.length < 4\n            ? ''\n            : `\n          computed: ${getterString},\n        `\n        }\n        ${\n          functionsString.length < 4\n            ? ''\n            : `\n          methods: ${functionsString},\n        `\n        }\n        ${Object.entries(component.meta.vueConfig || {})\n          .map(([k, v]) => `${k}: ${v}`)\n          .join(',')}\n        }\n        ${options.defineComponent ? ')' : ''}`;\n}\n"
  },
  {
    "path": "packages/core/src/generators/vue/types.ts",
    "content": "import { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport type Api = 'options' | 'composition';\n\nexport interface ToVueOptions extends BaseTranspilerOptions {\n  cssNamespace?: () => string;\n  namePrefix?: (path: string) => string;\n  asyncComponentImports?: boolean;\n  defineComponent?: boolean;\n  api: Api;\n  convertClassStringToObject?: boolean;\n  casing?: 'pascal' | 'kebab';\n}\n\nexport type VueMetadata = {};\n\nexport type Prop<T> =\n  | { (): T }\n  | { new (...args: never[]): T & object }\n  | { new (...args: string[]): Function };\nexport type PropType<T> = Prop<T> | Prop<T>[];\nexport type PropValidator<T> = PropOptions<T> | PropType<T>;\n\nexport interface PropOptions<T = any> {\n  type?: PropType<T>;\n  required?: boolean;\n  default?: T | null | undefined | (() => T | null | undefined);\n  validator?(value: T): boolean;\n}\n\nexport type DefaultProps = Record<string, any>;\nexport type RecordPropsDefinition<T> = {\n  [K in keyof T]: PropValidator<T[K]>;\n};\nexport type ArrayPropsDefinition<T> = (keyof T)[];\nexport type PropsDefinition<T> = ArrayPropsDefinition<T> | RecordPropsDefinition<T>;\n"
  },
  {
    "path": "packages/core/src/generators/vue/vue.ts",
    "content": "import { applyMetaTagName } from '@/helpers/apply-meta-tagname';\nimport { convertTypeScriptToJS } from '@/helpers/babel-transform';\nimport { createSingleBinding } from '@/helpers/bindings';\nimport { dedent } from '@/helpers/dedent';\nimport { fastClone } from '@/helpers/fast-clone';\nimport { getProps } from '@/helpers/get-props';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { mapRefs } from '@/helpers/map-refs';\nimport { initializeOptions } from '@/helpers/merge-options';\nimport { processOnEventHooksPlugin } from '@/helpers/on-event';\nimport { CODE_PROCESSOR_PLUGIN } from '@/helpers/plugins/process-code';\nimport { processHttpRequests } from '@/helpers/process-http-requests';\nimport { renderPreComponent } from '@/helpers/render-imports';\nimport { replaceStateIdentifier } from '@/helpers/replace-identifiers';\nimport { isSlotProperty } from '@/helpers/slots';\nimport { stripMetaProperties } from '@/helpers/strip-meta-properties';\nimport { collectCss } from '@/helpers/styles/collect-css';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { TranspilerGenerator } from '@/types/transpiler';\nimport { flow } from 'fp-ts/lib/function';\nimport { pickBy, size, uniq } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { format } from 'prettier/standalone';\nimport {\n  MitosisPlugin,\n  runPostCodePlugins,\n  runPostJsonPlugins,\n  runPreCodePlugins,\n  runPreJsonPlugins,\n} from '../../modules/plugins';\nimport { FUNCTION_HACK_PLUGIN } from '../helpers/functions';\nimport { blockToVue } from './blocks';\nimport { generateCompositionApiScript } from './compositionApi';\nimport { getOnUpdateHookName, processBinding, renameMitosisComponentsToKebabCase } from './helpers';\nimport { generateOptionsApiScript } from './optionsApi';\nimport { ToVueOptions } from './types';\n\n// Transform <foo.bar key=\"value\" /> to <component :is=\"foo.bar\" key=\"value\" />\nfunction processDynamicComponents(json: MitosisComponent, _options: ToVueOptions) {\n  traverse(json).forEach((node) => {\n    if (isMitosisNode(node)) {\n      if (node.name.includes('.')) {\n        node.bindings.is = createSingleBinding({ code: node.name });\n        node.name = 'component';\n      }\n    }\n  });\n}\n\nfunction processForKeys(json: MitosisComponent, _options: ToVueOptions) {\n  traverse(json).forEach((node) => {\n    if (isMitosisNode(node)) {\n      if (node.name === 'For') {\n        const firstChild = node.children[0];\n        if (firstChild && firstChild.bindings.key) {\n          node.bindings.key = firstChild.bindings.key;\n          delete firstChild.bindings.key;\n        }\n      }\n    }\n  });\n}\n\n/**\n * This plugin handle `onUpdate` code that watches dependencies.\n * We need to apply this workaround to be able to watch specific dependencies in Vue 2: https://stackoverflow.com/a/45853349\n *\n * We add a `computed` property for the dependencies, and a matching `watch` function for the `onUpdate` code\n */\nconst onUpdatePlugin: MitosisPlugin = (options) => ({\n  json: {\n    post: (component) => {\n      if (component.hooks.onUpdate) {\n        component.hooks.onUpdate\n          .filter((hook) => hook.deps?.length)\n          .forEach((hook, index) => {\n            const code = `get ${getOnUpdateHookName(index)} () {\n            return {\n              ${hook.deps\n                ?.slice(1, -1)\n                .split(',')\n                .map((dep, k) => {\n                  const val = dep.trim();\n                  return `${k}: ${val}`;\n                })\n                .join(',')}\n            }\n          }`;\n\n            component.state[getOnUpdateHookName(index)] = {\n              code,\n              type: 'getter',\n            };\n          });\n      }\n    },\n  },\n});\n\nconst BASE_OPTIONS: ToVueOptions = {\n  api: 'options',\n  defineComponent: true,\n  casing: 'pascal',\n};\n\nexport const componentToVue: TranspilerGenerator<Partial<ToVueOptions>> =\n  (userOptions) =>\n  ({ component: _component, path }) => {\n    // Make a copy we can safely mutate, similar to babel's toolchain can be used\n    let component = fastClone(_component);\n\n    const options = initializeOptions({\n      target: 'vue',\n      component,\n      defaults: BASE_OPTIONS,\n      userOptions: userOptions,\n    });\n\n    if (options.api === 'composition') {\n      options.asyncComponentImports = false;\n    }\n\n    options.plugins.unshift(\n      processOnEventHooksPlugin(),\n      ...(options.api === 'options' ? [onUpdatePlugin] : []),\n      ...(options.api === 'composition' ? [FUNCTION_HACK_PLUGIN] : []),\n      CODE_PROCESSOR_PLUGIN((codeType) => {\n        if (options.api === 'composition') {\n          switch (codeType) {\n            case 'hooks':\n              return (code) => processBinding({ code, options, json: component });\n            case 'state':\n              return (code) => processBinding({ code, options, json: component });\n            case 'bindings':\n              return flow(\n                // Strip types from any JS code that ends up in the template, because Vue does not support TS code in templates.\n                convertTypeScriptToJS,\n                (code) => processBinding({ code, options, json: component, codeType }),\n              );\n            case 'context-set':\n              return (code) =>\n                processBinding({ code, options, json: component, preserveGetter: true });\n            case 'hooks-deps':\n              return replaceStateIdentifier(null);\n            case 'properties':\n            case 'dynamic-jsx-elements':\n            case 'hooks-deps-array':\n            case 'types':\n              return (c) => c;\n          }\n        } else {\n          switch (codeType) {\n            case 'hooks':\n              return (code) => processBinding({ code, options, json: component });\n            case 'bindings':\n              return flow(\n                // Strip types from any JS code that ends up in the template, because Vue does not support TS code in templates.\n                convertTypeScriptToJS,\n                (code) => processBinding({ code, options, json: component, codeType }),\n              );\n            case 'properties':\n            case 'dynamic-jsx-elements':\n            case 'hooks-deps':\n            case 'hooks-deps-array':\n            case 'types':\n              return (c) => c;\n            case 'state':\n              return (c) => processBinding({ code: c, options, json: component });\n            case 'context-set':\n              return (code) =>\n                processBinding({\n                  code,\n                  options,\n                  json: component,\n                  thisPrefix: '_this',\n                  preserveGetter: true,\n                });\n          }\n        }\n      }),\n    );\n\n    processHttpRequests(component);\n    processDynamicComponents(component, options);\n    processForKeys(component, options);\n\n    component = runPreJsonPlugins({ json: component, plugins: options.plugins });\n\n    if (options.api === 'options') {\n      mapRefs(component, (refName) => `this.$refs.${refName}`);\n    }\n\n    // need to run this before we process the component's code\n    const props = Array.from(getProps(component));\n    const elementProps = props.filter((prop) => !isSlotProperty(prop));\n    const slotsProps = props.filter((prop) => isSlotProperty(prop));\n\n    component = runPostJsonPlugins({ json: component, plugins: options.plugins });\n\n    const css = collectCss(component, {\n      prefix: options.cssNamespace?.() ?? undefined,\n    });\n\n    // Apply the meta tagName to the component BEFORE we strip the meta properties\n    applyMetaTagName(component);\n\n    stripMetaProperties(component);\n\n    const templateStrBody = component.children\n      .map((item) => blockToVue(item, options, { isRootNode: true }))\n      .join('\\n');\n\n    const template =\n      options.casing === 'kebab'\n        ? renameMitosisComponentsToKebabCase(templateStrBody)\n        : templateStrBody;\n\n    const onUpdateWithDeps = component.hooks.onUpdate?.filter((hook) => hook.deps?.length) || [];\n    const onUpdateWithoutDeps =\n      component.hooks.onUpdate?.filter((hook) => !hook.deps?.length) || [];\n\n    const getterKeys = Object.keys(pickBy(component.state, (i) => i?.type === 'getter'));\n\n    // import from vue\n    let vueImports: string[] = [];\n    if (options.asyncComponentImports) {\n      vueImports.push('defineAsyncComponent');\n    }\n    if (options.api === 'options' && options.defineComponent) {\n      vueImports.push('defineComponent');\n    }\n    if (options.api === 'composition') {\n      onUpdateWithDeps.length && vueImports.push('watch');\n      component.hooks.onMount.length && vueImports.push('onMounted');\n      component.hooks.onUnMount?.code && vueImports.push('onUnmounted');\n      onUpdateWithoutDeps.length && vueImports.push('onUpdated');\n      size(getterKeys) && vueImports.push('computed');\n      size(component.context.set) && vueImports.push('provide');\n      size(component.context.get) && vueImports.push('inject');\n      size(\n        Object.keys(component.state).filter((key) => component.state[key]?.type === 'property'),\n      ) + size(component.refs) && vueImports.push('ref');\n      size(slotsProps) && vueImports.push('useSlots');\n    }\n\n    const tsLangAttribute = options.typescript ? `lang='ts'` : '';\n\n    let str: string = dedent`\n    ${\n      template.trim().length > 0\n        ? `<template>\n      ${template}\n    </template>`\n        : ''\n    }\n\n\n    <script ${options.api === 'composition' ? 'setup' : ''} ${tsLangAttribute}>\n      ${vueImports.length ? `import { ${uniq(vueImports).sort().join(', ')} } from \"vue\"` : ''}\n\n      ${renderPreComponent({\n        explicitImportFileExtension: options.explicitImportFileExtension,\n        component,\n        target: 'vue',\n        asyncComponentImports: options.asyncComponentImports,\n      })}\n\n      ${(options.typescript && component.types?.join('\\n')) || ''}\n\n      ${\n        options.api === 'composition'\n          ? generateCompositionApiScript(\n              component,\n              options,\n              template,\n              elementProps,\n              onUpdateWithDeps,\n              onUpdateWithoutDeps,\n            )\n          : generateOptionsApiScript(\n              component,\n              options,\n              path,\n              template,\n              elementProps,\n              onUpdateWithDeps,\n              onUpdateWithoutDeps,\n            )\n      }\n    </script>\n\n    ${\n      !css.trim().length\n        ? ''\n        : `<style scoped>\n      ${css}\n    </style>`\n    }\n  `;\n\n    str = runPreCodePlugins({\n      json: component,\n      code: str,\n      plugins: options.plugins,\n      options: { json: component },\n    });\n    if (true || options.prettier !== false) {\n      try {\n        str = format(str, {\n          parser: 'vue',\n          plugins: [\n            // To support running in browsers\n            require('prettier/parser-typescript'),\n            require('prettier/parser-html'),\n            require('prettier/parser-postcss'),\n            require('prettier/parser-babel'),\n          ],\n        });\n      } catch (err) {\n        console.warn('Could not prettify', { string: str }, err);\n      }\n    }\n    str = runPostCodePlugins({ json: component, code: str, plugins: options.plugins });\n\n    for (const pattern of removePatterns) {\n      str = str.replace(pattern, '').trim();\n    }\n    str = str.replace(/<script(.*)>\\n?<\\/script>/g, '').trim();\n    return str;\n  };\n\n// Remove unused artifacts like empty script or style tags\nconst removePatterns = [\n  `<script>\nexport default {};\n</script>`,\n  `<style>\n</style>`,\n];\n"
  },
  {
    "path": "packages/core/src/helpers/__snapshots__/babel-transform.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`babelTransform > Check #0 1`] = `\n\"const symbol = symbol;\n\nif (symbol) {\n  getContent({\n    apiKey: builderContext.apiKey!\n  }).then(response => {\n    content = response;\n  });\n}\"\n`;\n\nexports[`babelTransform > Check #1 1`] = `\"state.tortilla === 'Plain';\"`;\n\nexports[`babelTransform > Check #2 1`] = `\"state.tortilla = event.target.value;\"`;\n\nexports[`babelTransformExpression > Check #0 1`] = `\n\"const symbol = symbol;\n\nif (symbol) {\n  getContent({\n    apiKey: builderContext.apiKey!\n  }).then(response => {\n    content = response;\n  });\n}\"\n`;\n\nexports[`babelTransformExpression > Check #1 1`] = `\"state.tortilla === 'Plain'\"`;\n\nexports[`babelTransformExpression > Check #2 1`] = `\"state.tortilla = event.target.value\"`;\n"
  },
  {
    "path": "packages/core/src/helpers/__snapshots__/generic-format.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Can generic format sloppy Swift code 1`] = `\n\"\nimport SwiftUI\nimport JavaScriptCore\n\nstruct MyComponent: View {\n\n  @State private var updateIndex = 0\n  private var context = JSContext()\n\n  func eval(expression: String) -> JSValue! {\n    return context?.evaluateScript(expression)\n  }\n\n  init() {\n    let jsSource = \\\\\"\\\\\"\\\\\"\n    const state = { name: \\\\\"Steve\\\\\" };\n\n    \\\\\"\\\\\"\\\\\"\n    context?.evaluateScript(jsSource)\n  }\n\n  var body: some View {\n    VStack {\n      Text(String(updateIndex)).hidden()\n      VStack(){\n        Foo(\n          bar: baz\n        )\n        TextField(){}\n        Text(\\\\\"Hello\\\\\")\n        Text(eval(expression: \\\\\"\\\\\"\\\\\"state.name\\\\\"\\\\\"\\\\\"))\n        Text(\\\\\"! I can run in React, Vue, Solid, or Liquid!\\\\\")}\n      }\n    }\n  }\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/helpers/__snapshots__/render-imports.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`renderImport > Adds correct extension to component import 1`] = `\"import  RenderBlocks from '../render-blocks.vue';\"`;\n"
  },
  {
    "path": "packages/core/src/helpers/__snapshots__/replace-identifiers.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`newReplacer > Check #1 1`] = `\n\"const [childrenContext] = useState(useTarget({\n  reactNative: {\n    apiKey: props.$context.apiKey,\n    apiVersion: props.$context.apiVersion,\n    localState: props.$context.localState,\n    rootState: props.$context.rootState,\n    rootSetState: props.$context.rootSetState,\n    content: props.$context.content,\n    context: props.$context.context,\n    registeredComponents: props.$context.registeredComponents,\n    inheritedStyles: extractTextStyles(getReactNativeBlockStyles({\n      block: state.useBlock,\n      context: props.$context,\n      blockStyles: state.attributes.style\n    }))\n  },\n  default: props.$context\n}), {\n  reactive: true\n})\"\n`;\n\nexports[`replaceIdentifiers > Check #0 1`] = `\n\"function updateThing() {\n  state.thing1 = $SPECIAL.thing2 + 123;\n  state?.fn($SPECIAL.abc.foo);\n  const x = someRandomObj.state.foo;\n  const y = someRandomObj.props.state.foo;\n}\"\n`;\n\nexports[`replaceIdentifiers > Check #1 1`] = `\n\"function updateThing() {\n  thing1 = thing2 + 123;\n  fn(abc.foo);\n  const x = someRandomObj.state.foo;\n  const y = someRandomObj.props.state.foo;\n}\"\n`;\n\nexports[`replaceIdentifiers > Check #2 1`] = `\n\"function updateThing() {\n  this.thing1 = this.thing2 + 123;\n  this.fn(this.abc.foo);\n  const x = someRandomObj.state.foo;\n  const y = someRandomObj.props.state.foo;\n}\"\n`;\n\nexports[`replaceIdentifiers > Check #3 1`] = `\"!state.useLazyLoading() || state.load\"`;\n\nexports[`replaceIdentifiers > Check #4 1`] = `\"state.name = 'PatrickJS onInit' + this.hi\"`;\n\nexports[`replaceIdentifiers > Check #5 1`] = `\"lowerCaseName()\"`;\n\nexports[`replaceIdentifiers > Check #6 1`] = `\n\"const x = {\n  foo: bar,\n  test: 123\n};\nconst foo.value = x.foo;\nconst y = {\n  l: x.foo,\n  m: foo\n};\nconst bar = foo.value\"\n`;\n"
  },
  {
    "path": "packages/core/src/helpers/apply-meta-tagname.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const applyMetaTagName = (json: MitosisComponent) => {\n  traverse(json).forEach((item) => {\n    if (isMitosisNode(item)) {\n      if (item.properties.$tagName) {\n        item.name = item.properties.$tagName;\n        delete item.properties.$tagName;\n      }\n    }\n  });\n\n  return json;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/babel-transform.test.ts",
    "content": "import { babelTransformCode, babelTransformExpression } from './babel-transform';\n\nconst SPECS = [\n  `\nconst symbol = symbol;\n\nif (symbol) {\n  getContent({\n    apiKey: builderContext.apiKey!,\n  }).then(response => {\n    content = response;\n  });\n}\n`,\n  `state.tortilla === 'Plain'`,\n  `state.tortilla = event.target.value`,\n];\n\ndescribe('babelTransform', () => {\n  SPECS.forEach((args, index) => {\n    test(`Check #${index}`, () => {\n      const output = babelTransformCode(args);\n      expect(output).toMatchSnapshot();\n    });\n  });\n});\n\ndescribe('babelTransformExpression', () => {\n  SPECS.forEach((args, index) => {\n    test(`Check #${index}`, () => {\n      const output = babelTransformExpression(args, {});\n      expect(output).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/babel-transform.ts",
    "content": "import * as babel from '@babel/core';\nimport decorators from '@babel/plugin-syntax-decorators';\nimport tsPlugin from '@babel/plugin-syntax-typescript';\nimport tsPreset from '@babel/preset-typescript';\nimport type { Visitor } from '@babel/traverse';\nimport { identity, pipe } from 'fp-ts/lib/function';\nimport { checkIsGetter, replaceFunctionWithGetter, replaceGetterWithFunction } from './patterns';\n\nconst handleErrorOrExpression = <VisitorContextType = any>({\n  code,\n  useCode,\n  result,\n  visitor,\n  stripTypes,\n}: {\n  code: string;\n  useCode: string;\n  result: string | null;\n  visitor: Visitor<VisitorContextType>;\n  stripTypes: boolean;\n}) => {\n  try {\n    // If it can't, e.g. this is an expression or code fragment, modify the code below and try again\n\n    // Detect method fragments. These get passed sometimes and otherwise\n    // generate compile errors. They are of the form `foo() { ... }`\n    const isMethod = Boolean(\n      !code.trim().startsWith('function') && code.trim().match(/^[a-z0-9_]+\\s*\\([^\\)]*\\)\\s*[\\{:]/i),\n    );\n\n    const isGetter = checkIsGetter(code);\n\n    const isMethodOrGetter = isMethod || isGetter;\n\n    if (isMethodOrGetter) {\n      useCode = `function ${useCode}`;\n    }\n\n    result = pipe(\n      // Parse the code as an expression (instead of the default, a block) by giving it a fake variable assignment\n      // e.g. if the code parsed is { ... } babel will treat that as a block by deafult, unless processed as an expression\n      // that is an object\n      `let _ = ${useCode}`,\n      (code) => babelTransformCode(code, visitor, stripTypes),\n      trimSemicolons,\n      // Remove our fake variable assignment\n      (str) => str.replace(/let _ =\\s/, ''),\n    );\n\n    if (isMethodOrGetter) {\n      return result.replace('function', '');\n    }\n\n    return result;\n  } catch (err) {\n    console.error('Error parsing code:\\n', { code, result, useCode });\n    throw err;\n  }\n};\n\nconst babelTransform = <VisitorContextType = any>({\n  code,\n  visitor,\n  stripTypes,\n}: {\n  code: string;\n  visitor?: Visitor<VisitorContextType>;\n  stripTypes: boolean;\n}) => {\n  return babel.transform(code, {\n    sourceFileName: 'file.tsx',\n    configFile: false,\n    babelrc: false,\n    parserOpts: { allowReturnOutsideFunction: true },\n    ...(stripTypes ? { presets: [[tsPreset, { isTSX: true, allExtensions: true }]] } : {}),\n    plugins: [\n      [tsPlugin, { isTSX: true }],\n      [decorators, { legacy: true }],\n      ...(visitor ? [() => ({ visitor })] : []),\n    ],\n  });\n};\n\nexport const babelTransformCode = <VisitorContextType = any>(\n  code: string,\n  visitor?: Visitor<VisitorContextType>,\n  stripTypes = false,\n) => babelTransform({ code, visitor, stripTypes })?.code || '';\n\n// Babel adds trailing semicolons, but for expressions we need those gone\n// TODO: maybe detect if the original code ended with one, and keep it if so, for the case\n// of appending several fragements\nconst trimSemicolons = (code: string) => code.replace(/;$/, '');\n\nconst trimExpression = (type: ExpressionType) => (code: string) => {\n  switch (type) {\n    case 'functionBody':\n      return code.replace(/^function\\s*\\(\\)\\s*\\{/, '').replace(/\\};?$/, '');\n    default:\n      return trimSemicolons(code);\n  }\n};\n\ntype ExpressionType = 'expression' | 'unknown' | 'block' | 'functionBody';\n\nconst getType = (code: string, initialType: ExpressionType): ExpressionType => {\n  // match for object literal like { foo: ... }\n  if (initialType === 'unknown' && code.trim().match(/^\\s*{\\s*[a-z0-9]+:/i)) {\n    return 'expression';\n  }\n\n  // For Builder content\n  if (\n    initialType === 'unknown' &&\n    (code.includes('return _virtual_index') || code.trim().startsWith('return ')) &&\n    !code.trim().startsWith('function')\n  ) {\n    return 'functionBody';\n  }\n\n  return initialType;\n};\n\nexport const babelTransformExpression = <VisitorContextType = any>(\n  code: string,\n  visitor: Visitor<VisitorContextType>,\n  initialType: ExpressionType = 'unknown',\n  stripTypes = false,\n): string => {\n  if (!code) {\n    return '';\n  }\n\n  const isGetter = code.trim().startsWith('get ');\n\n  return pipe(\n    code,\n    isGetter ? replaceGetterWithFunction : identity,\n    (code) => {\n      const type = getType(code, initialType);\n\n      const useCode = type === 'functionBody' ? `function(){${code}}` : code;\n\n      return { type, useCode };\n    },\n    ({ type, useCode }) => {\n      if (type !== 'expression') {\n        try {\n          return pipe(babelTransformCode(useCode, visitor, stripTypes), trimExpression(type));\n        } catch (error) {\n          return handleErrorOrExpression({ code, useCode, result: null, visitor, stripTypes });\n        }\n      } else {\n        return handleErrorOrExpression({ code, useCode, result: null, visitor, stripTypes });\n      }\n    },\n    isGetter ? replaceFunctionWithGetter : identity,\n  );\n};\n\nexport const convertTypeScriptToJS = (code: string): string =>\n  babelTransformExpression(code, {}, 'unknown', true);\n"
  },
  {
    "path": "packages/core/src/helpers/bindings.ts",
    "content": "import { Binding } from '../types/mitosis-node';\n\ntype SingleBinding = Omit<Binding & { type: 'single' }, 'type'>;\n\nexport const createSingleBinding = (\n  args: Omit<SingleBinding, 'bindingType'> & Partial<Pick<SingleBinding, 'bindingType'>>,\n): Binding => ({\n  ...args,\n  bindingType: args.bindingType || 'expression',\n  type: 'single',\n});\n"
  },
  {
    "path": "packages/core/src/helpers/camel-case.ts",
    "content": "import { capitalize } from './capitalize';\n\n/**\n * This is a function similar to loadash `camelCase`, but it does not mess with capitalization.\n *\n * loadash: `camelCase('A-BC')` => \"ABc\"\n * this fn: `camelCase('A-BC')` => \"ABC\"\n *\n */\nexport function camelCase(text: string = ''): string {\n  const parts = text.split('-');\n  const first = parts.shift();\n  return first + parts.map(capitalize).join('');\n}\n"
  },
  {
    "path": "packages/core/src/helpers/capitalize.ts",
    "content": "export const capitalize = (str: string) => {\n  if (!str) {\n    return str;\n  }\n  return str[0].toUpperCase() + str.slice(1);\n};\n"
  },
  {
    "path": "packages/core/src/helpers/class-components.ts",
    "content": "import { stripStateAndPropsRefs } from '@/helpers/strip-state-and-props-refs';\nimport { Target } from '@/types/config';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { getEventNameWithoutOn } from './event-handlers';\n\n/**\n * We need to \"emit\" events those can be on multiple places, so we do it as post step\n */\nconst appendEmits = (\n  str: string,\n  { name }: MitosisComponent,\n  { events, props, target, skipAppendEmit }: ProcessBindingOptions,\n): string => {\n  let code = str;\n  if (events.length) {\n    for (const event of events) {\n      const eventWithoutOn = getEventNameWithoutOn(event);\n\n      if (props.includes(eventWithoutOn)) {\n        console.error(`\nComponent ${name} has an event ${event} that conflicts with prop ${eventWithoutOn} for target ${target}.\nPlease rename the prop or the event.\n`);\n      }\n\n      if (!skipAppendEmit) {\n        code = code.replaceAll(`props.${event}(`, `props.${eventWithoutOn}.emit(`);\n      }\n\n      code = code.replaceAll(`props.${event}`, `props.${eventWithoutOn}`);\n    }\n  }\n  return code;\n};\n\nexport type ProcessBindingOptions = {\n  events: string[];\n  props: string[];\n  target: Target;\n  replaceWith?: string;\n  skipAppendEmit?: boolean;\n};\n\n/**\n * We use this for generators like stencil and angular\n */\nexport const processClassComponentBinding = (\n  json: MitosisComponent,\n  code: string,\n  processBindingOptions: ProcessBindingOptions,\n) => {\n  const { replaceWith = 'this.' } = processBindingOptions;\n  let resolvedCode = stripStateAndPropsRefs(appendEmits(code, json, processBindingOptions), {\n    replaceWith,\n  });\n  if (json.exports) {\n    // We need to use local exports with `this.` in stencil and angular\n    Object.entries(json.exports)\n      .filter(([, value]) => value.usedInLocal)\n      .forEach(([key]) => {\n        resolvedCode = resolvedCode.replaceAll(key, `${replaceWith}${key}`);\n      });\n  }\n  if (json.context.get) {\n    for (const key of Object.keys(json.context.get)) {\n      resolvedCode = resolvedCode.replaceAll(key, `${replaceWith}${key}`);\n    }\n  }\n\n  return resolvedCode;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/component-file-extensions.ts",
    "content": "import { MitosisConfig, Target } from '@/types/config';\nimport { checkShouldOutputTypeScript } from './output';\n\nconst COMPONENT_EXTENSIONS = {\n  jsx: ['.lite.tsx', '.lite.jsx'],\n  svelte: ['.svelte'],\n};\n\nexport const COMPONENT_IMPORT_EXTENSIONS = [COMPONENT_EXTENSIONS.svelte, COMPONENT_EXTENSIONS.jsx]\n  .flat()\n  .concat(['.lite']);\n\nexport const checkIsSvelteComponentFilePath = (filePath: string) =>\n  COMPONENT_EXTENSIONS.svelte.some((x) => filePath.endsWith(x));\n\nexport const checkIsLiteComponentFilePath = (filePath: string) =>\n  COMPONENT_EXTENSIONS.jsx.some((x) => filePath.endsWith(x));\n\nexport const checkIsMitosisComponentFilePath = (filePath: string) =>\n  checkIsLiteComponentFilePath(filePath) || checkIsSvelteComponentFilePath(filePath);\n\n/**\n * Matches `.svelte`, `.lite.tsx`, `.lite.jsx` files (with optional `.jsx`/`.tsx` extension)\n */\nexport const INPUT_EXTENSION_REGEX = /\\.(svelte|(lite(\\.tsx|\\.jsx)?))/g;\n\nconst getExplicitFileExtension = (\n  path: string,\n  explicitBuildFileExtensions?: Record<string, RegExp>,\n): string | undefined => {\n  if (explicitBuildFileExtensions) {\n    for (const [extension, regex] of Object.entries(explicitBuildFileExtensions)) {\n      const match = path.match(regex);\n      if (match) {\n        return extension;\n      }\n    }\n  }\n  return undefined;\n};\n\nexport const renameComponentFile = ({\n  path,\n  target,\n  options,\n}: {\n  path: string;\n  target: Target;\n  options: MitosisConfig;\n}) => {\n  const explicitExtension = getExplicitFileExtension(\n    path,\n    options.options[target]?.explicitBuildFileExtensions,\n  );\n\n  const extension =\n    explicitExtension ??\n    getComponentFileExtensionForTarget({\n      type: 'filename',\n      target,\n      isTypescript: checkShouldOutputTypeScript({ options, target }),\n    });\n\n  return path.replace(INPUT_EXTENSION_REGEX, extension);\n};\n\n/**\n * just like `INPUT_EXTENSION_REGEX`, but adds trailing quotes to the end of import paths.\n */\nconst INPUT_EXTENSION_IMPORT_REGEX = /\\.(svelte|(lite(\\.tsx|\\.jsx)?))(?<quote>['\"])/g;\n\nexport const renameComponentImport = ({\n  importPath,\n  target,\n  explicitImportFileExtension,\n}: {\n  importPath: string;\n  target: Target;\n  explicitImportFileExtension: boolean;\n}) => {\n  return importPath.replace(\n    INPUT_EXTENSION_IMPORT_REGEX,\n    `${getComponentFileExtensionForTarget({\n      type: 'import',\n      target,\n      explicitImportFileExtension,\n    })}$4`,\n  );\n};\n\nexport const renameImport = ({\n  importPath,\n  target,\n  explicitImportFileExtension,\n}: {\n  importPath: string;\n  target: Target;\n  explicitImportFileExtension: boolean;\n}) => {\n  return importPath.replace(\n    /\\.js(['\"])/g,\n    `${getFileExtensionForTarget({\n      target,\n      explicitImportFileExtension,\n    })}$1`,\n  );\n};\n\ntype Args = { target: Target } & (\n  | {\n      /**\n       * Whether we are rendering an import statement or a filename.\n       */\n      type: 'import';\n      explicitImportFileExtension: boolean;\n    }\n  | {\n      /**\n       * Whether we are rendering an import statement or a filename.\n       */\n      type: 'filename';\n      isTypescript: boolean;\n    }\n);\n\n/**\n * Provides the correct file extension for a given component. This is used:\n *  - in `core` to render import statements within other components.\n *  - in `cli` to render filenames for generated components, and import statements within plain `.js`/`.ts` files.\n */\nexport const getComponentFileExtensionForTarget = (args: Args): string => {\n  switch (args.target) {\n    case 'angular': {\n      switch (args.type) {\n        case 'import':\n          return '.js';\n        case 'filename':\n          return args.isTypescript ? '.ts' : '.js';\n      }\n    }\n    case 'alpine':\n    case 'html':\n      return '.html';\n    case 'svelte':\n      return '.svelte';\n    case 'swift':\n      return '.swift';\n    case 'vue':\n      return '.vue';\n    case 'webcomponent':\n      return '.ts';\n    case 'lit':\n      return '.ts';\n\n    case 'qwik': {\n      switch (args.type) {\n        case 'import':\n          return '.jsx';\n        case 'filename':\n          return args.isTypescript ? '.tsx' : '.jsx';\n      }\n    }\n    case 'solid':\n    case 'preact':\n    case 'react':\n    case 'reactNative':\n    case 'rsc':\n    case 'stencil':\n      switch (args.type) {\n        case 'import':\n          // we can't have `.jsx`/`.tsx` extensions in the import paths, so we stick with implicit file extensions.\n          return args.explicitImportFileExtension ? '.js' : '';\n        case 'filename':\n          return args.isTypescript ? '.tsx' : '.jsx';\n      }\n    case 'marko':\n      return '.marko';\n    default:\n      return '.js';\n  }\n};\n\nexport const getFileExtensionForTarget = ({\n  target,\n  explicitImportFileExtension,\n}: {\n  target: Target;\n  explicitImportFileExtension: boolean;\n}): string => {\n  switch (target) {\n    case 'angular':\n    case 'alpine':\n    case 'html':\n    case 'svelte':\n    case 'swift':\n    case 'vue':\n    case 'webcomponent':\n    case 'lit':\n    case 'qwik':\n    case 'react':\n    case 'reactNative':\n    case 'rsc':\n    case 'solid':\n    case 'stencil':\n    case 'marko':\n    case 'preact':\n    default:\n      return explicitImportFileExtension ? '.js' : '';\n  }\n};\n"
  },
  {
    "path": "packages/core/src/helpers/create-mitosis-component.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\nimport { Overwrite, Prettify } from './typescript';\n\ntype PartialMitosisComponent = Prettify<\n  Overwrite<\n    Partial<MitosisComponent>,\n    {\n      hooks: Partial<MitosisComponent['hooks']>;\n    }\n  >\n>;\n\nexport const createMitosisComponent = (options?: PartialMitosisComponent): MitosisComponent => {\n  const { name, hooks, ...remainingOpts } = options || {};\n  const { onEvent = [], onMount = [], ...remainingHooks } = hooks || {};\n  return {\n    '@type': '@builder.io/mitosis/component',\n    imports: [],\n    exports: {},\n    inputs: [],\n    meta: {},\n    refs: {},\n    state: {},\n    children: [],\n    context: { get: {}, set: {} },\n    subComponents: [],\n    name: name || 'MyComponent',\n    hooks: {\n      onMount,\n      onEvent,\n      ...remainingHooks,\n    },\n    ...remainingOpts,\n  };\n};\n"
  },
  {
    "path": "packages/core/src/helpers/create-mitosis-context.ts",
    "content": "import { MitosisContext } from '../types/mitosis-context';\n\nexport function createMitosisContext(\n  options: Partial<MitosisContext> & { name: string },\n): MitosisContext {\n  return {\n    '@type': '@builder.io/mitosis/context',\n    value: {},\n    ...options,\n  };\n}\n"
  },
  {
    "path": "packages/core/src/helpers/create-mitosis-node.ts",
    "content": "import { MitosisNode } from '../types/mitosis-node';\n\nexport const createMitosisNode = (options: Partial<MitosisNode>): MitosisNode => ({\n  '@type': '@builder.io/mitosis/node',\n  name: 'div',\n  meta: {},\n  scope: {},\n  properties: {},\n  bindings: {},\n  children: [],\n  ...options,\n});\n"
  },
  {
    "path": "packages/core/src/helpers/dash-case.ts",
    "content": "import { kebabCase } from 'lodash';\n\nexport const dashCase = (string: string) => kebabCase(string);\n"
  },
  {
    "path": "packages/core/src/helpers/dedent.ts",
    "content": "// Based on \"dedent\" package\n// Latest commit 2381e76 on Feb 15, 2017\n// Source: https://raw.githubusercontent.com/dmnd/dedent/master/dedent.js\n// License: MIT\n// Updates:\n// 1. Converted to TypeScript\n// 2. Preserve whitespace inside backtick string literals\n\nexport function dedent(strings: TemplateStringsArray, ...values: any[]): string {\n  const raw = typeof strings === 'string' ? [strings] : strings.raw;\n\n  // first, perform interpolation\n  let result = '';\n  for (let i = 0; i < raw.length; i++) {\n    result += raw[i]\n      // join lines when there is a suppressed newline\n      .replace(/\\\\\\n[ \\t]*/g, '')\n      // handle escaped backticks\n      .replace(/\\\\`/g, '`');\n\n    if (i < values.length) {\n      result += values[i];\n    }\n  }\n\n  // now strip indentation\n  const lines = split(result);\n  let mindent: number | null = null;\n  lines.forEach((l) => {\n    let m = l.match(/^(\\s+)\\S+/);\n    if (m) {\n      let indent = m[1].length;\n      if (!mindent) {\n        // this is the first indented line\n        mindent = indent;\n      } else {\n        mindent = Math.min(mindent, indent);\n      }\n    }\n  });\n\n  if (mindent !== null) {\n    const m = mindent;\n    result = lines.map((l) => (l[0] === ' ' ? l.slice(m) : l)).join('\\n');\n  }\n\n  // trim trailing whitespace on all lines\n  result = result\n    .split('\\n')\n    .map((l) => l.trimEnd())\n    .join('\\n');\n\n  return (\n    result\n      // dedent eats leading and trailing whitespace too\n      .trim()\n      // handle escaped newlines at the end to ensure they don't get stripped too\n      .replace(/\\\\n/g, '\\n')\n  );\n}\n\n/**\n * Splits a string by newlines.\n * Preserve whitespace inside backtick string literals.\n * @param input The original input string.\n * @returns The split string.\n */\nfunction split(input: string): string[] {\n  const result: string[] = [];\n  let prev = '';\n  let current = '';\n  let inBackticks = false;\n  for (let i = 0; i < input.length; i++) {\n    const char = input[i];\n    if (prev !== '\\\\' && char === '`') {\n      inBackticks = !inBackticks;\n    }\n    if (!inBackticks && char === '\\n') {\n      result.push(current);\n      current = '';\n    } else {\n      current += char;\n    }\n    prev = char;\n  }\n  return result;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/event-handlers.ts",
    "content": "import { camelCase } from 'lodash';\n\nexport const checkIsEvent = (code: string): boolean =>\n  code.startsWith('on') && /[A-Z]/.test(code.charAt(2));\n\nexport const getEventNameWithoutOn = (code: string) => camelCase(code.replace('on', ''));\n\nconst nativeEvents = [\n  'abort',\n  'animationcancel',\n  'animationend',\n  'animationiteration',\n  'animationstart',\n  'auxclick',\n  'beforeinput',\n  'beforetoggle',\n  'blur',\n  'cancel',\n  'canplay',\n  'canplaythrough',\n  'change',\n  'click',\n  'close',\n  'compositionend',\n  'compositionstart',\n  'compositionupdate',\n  'contextlost',\n  'contextmenu',\n  'contextrestored',\n  'copy',\n  'cuechange',\n  'cut',\n  'dblclick',\n  'drag',\n  'dragend',\n  'dragenter',\n  'dragleave',\n  'dragover',\n  'dragstart',\n  'drop',\n  'durationchange',\n  'emptied',\n  'ended',\n  'error',\n  'focus',\n  'focusin',\n  'focusout',\n  'formdata',\n  'gotpointercapture',\n  'input',\n  'invalid',\n  'keydown',\n  'keypress',\n  'keyup',\n  'load',\n  'loadeddata',\n  'loadedmetadata',\n  'loadstart',\n  'lostpointercapture',\n  'mousedown',\n  'mouseenter',\n  'mouseleave',\n  'mousemove',\n  'mouseout',\n  'mouseover',\n  'mouseup',\n  'paste',\n  'pause',\n  'play',\n  'playing',\n  'pointercancel',\n  'pointerdown',\n  'pointerenter',\n  'pointerleave',\n  'pointermove',\n  'pointerout',\n  'pointerover',\n  'pointerup',\n  'progress',\n  'ratechange',\n  'reset',\n  'resize',\n  'scroll',\n  'scrollend',\n  'securitypolicyviolation',\n  'seeked',\n  'seeking',\n  'select',\n  'selectionchange',\n  'selectstart',\n  'slotchange',\n  'stalled',\n  'submit',\n  'suspend',\n  'timeupdate',\n  'toggle',\n  'touchcancel',\n  'touchend',\n  'touchmove',\n  'touchstart',\n  'transitioncancel',\n  'transitionend',\n  'transitionrun',\n  'transitionstart',\n  'volumechange',\n  'waiting',\n  'webkitanimationend',\n  'webkitanimationiteration',\n  'webkitanimationstart',\n  'webkittransitionend',\n  'wheel',\n];\n\nexport const checkIsBindingNativeEvent = (code: string) =>\n  !!nativeEvents.find((nativeEvent) => nativeEvent === code.toLowerCase());\n"
  },
  {
    "path": "packages/core/src/helpers/fast-clone.ts",
    "content": "export const fastClone = <T extends object>(obj: T): T => JSON.parse(JSON.stringify(obj));\n"
  },
  {
    "path": "packages/core/src/helpers/filter-empty-text-nodes.ts",
    "content": "import { MitosisNode } from '../types/mitosis-node';\n\nexport const isEmptyTextNode = (node: MitosisNode) => {\n  return typeof node.properties._text === 'string' && node.properties._text.trim().length === 0;\n};\n\nexport const filterEmptyTextNodes = (node: MitosisNode) => !isEmptyTextNode(node);\n"
  },
  {
    "path": "packages/core/src/helpers/generic-format.test.ts",
    "content": "import { format } from './generic-format';\n\ntest('Can generic format sloppy Swift code', () => {\n  const code = `\n  import SwiftUI\n  import JavaScriptCore\n  \n  struct MyComponent: View {\n    \n      @State private var updateIndex = 0\n      private var context = JSContext()\n  \n      func eval(expression: String) -> JSValue! {\n        return context?.evaluateScript(expression)\n      }\n  \n      init() {\n        let jsSource = \"\"\"\n            const state = { name: \"Steve\" };\n  \n        \"\"\"\n        context?.evaluateScript(jsSource)\n      }\n    \n  \n    var body: some View {\n      VStack {\n        Text(String(updateIndex)).hidden()\n        VStack(){\n        Foo(\n          bar: baz\n          )\n  TextField(){}\n  Text(\"Hello\")\n  Text(eval(expression: \"\"\"state.name\"\"\"))\n  Text(\"! I can run in React, Vue, Solid, or Liquid!\")}\n      }\n    }\n  }\n  `;\n\n  expect(format(code)).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/core/src/helpers/generic-format.ts",
    "content": "const preSpaceRegex = /^\\s*/g;\n\nconst DEFAULT_INDENT_SPACES = 2;\n\n/**\n * Generic formatter for languages prettier doesn't support, like Swift\n *\n * Not super sophisticated, but much better than nothing\n */\nexport const format = (str: string, indentSpaces = DEFAULT_INDENT_SPACES) => {\n  let currentIndent = 0;\n  const lines = str.split('\\n');\n  lines.forEach((item, index) => {\n    item = item.trimEnd();\n\n    if (!item) {\n      lines[index] = '';\n      return;\n    }\n\n    lines[index] = item.replace(preSpaceRegex, ' '.repeat(currentIndent * indentSpaces));\n\n    const nextLine = lines[index + 1];\n    if (!nextLine) {\n      return;\n    }\n\n    if (nextLine.match(/^\\s*[})][,;]?\\s*$/)) {\n      currentIndent--;\n    } else if (item.match(/([({]| in)$/)) {\n      currentIndent++;\n    }\n\n    currentIndent = Math.max(currentIndent, 0);\n  });\n  return lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n');\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-bindings.ts",
    "content": "import { MitosisNode } from '../types/mitosis-node';\n\nexport function getBindingsCode(children: MitosisNode[]): string[] {\n  const bindings: string[] = [];\n  children.forEach((child) => {\n    Object.values(child.bindings || []).forEach((binding) => {\n      bindings.push(binding!.code);\n    });\n    if (child.children) {\n      bindings.push(...getBindingsCode(child.children));\n    }\n  });\n\n  return bindings;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/get-child-components.ts",
    "content": "import { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport traverse from 'neotraverse/legacy';\n\nexport const getChildComponents = (json: MitosisComponent): string[] => {\n  const nodes: string[] = [];\n  const childComponents: string[] = [json.name]; // a component can be recursively used in itself\n\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      nodes.push(item.name);\n    }\n  });\n\n  for (const { imports } of json.imports) {\n    for (const key of Object.keys(imports)) {\n      if (nodes.includes(key)) {\n        childComponents.push(key);\n      }\n    }\n  }\n\n  return childComponents;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-components-used.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport function getComponentsUsed(json: MitosisComponent) {\n  const components = new Set<string>();\n\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      components.add(item.name);\n    }\n  });\n\n  return components;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/get-components.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\nimport { isUpperCase } from './is-upper-case';\n\nexport function getComponents(json: MitosisComponent): Set<string> {\n  const components = new Set<string>();\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (isUpperCase(item.name[0])) {\n        components.add(item.name);\n      }\n    }\n  });\n\n  return components;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/get-custom-imports.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\nimport { isUpperCase } from './is-upper-case';\n\n/**\n * Return custom imports of basic values (aka things\n * that are not ClassCase like components and types)\n *\n * For for code like:\n *   import { foo, bar } from './constants'\n *\n * Will return:\n *   ['foo', 'bar' ]\n *\n * This also filters for strings that appears to be actually used\n * by the template\n */\nexport function getCustomImports(json: MitosisComponent) {\n  const blocksString = JSON.stringify(json.children);\n  const customImports = json.imports\n    .map((item) => {\n      return Object.keys(item.imports).filter(\n        (item) =>\n          item &&\n          // this ignores component imports, which are CamelCased.\n          (!isUpperCase(item[0]) ||\n            // this includes constants which are typically CAPITALIZED.\n            item.toUpperCase() === item),\n      );\n    })\n    .flat()\n    // This is imperfect. Basically, if the string of this import name\n    // doesn't occur at all, it's definitely not used. If it does, it might.\n    // So this simple check helps us ~90% of the time not over-add imports\n    // to templates. Arguably \"good enough\" for now, as there is generally no\n    // consequence to over adding here, and it would be a lot more performance expensive\n    // during compilation to do a complete AST parse and look for real references\n    .filter((item) => blocksString.includes(item));\n  return customImports;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/get-function-string.ts",
    "content": "export const getFunctionString = (code: string): string =>\n  code.startsWith('function') ? code : `function ${code}`;\n"
  },
  {
    "path": "packages/core/src/helpers/get-prop-functions.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\n\nconst propsRegex = /props\\s*\\.\\s*([a-zA-Z0-9_\\x04]+)\\(/;\nconst allPropsMatchesRegex = new RegExp(propsRegex, 'g');\n\n/**\n * Get props used in the components by reference\n */\nexport const getPropFunctions = (json: MitosisComponent) => {\n  const props: string[] = [];\n  traverse(json).forEach(function (item) {\n    if (typeof item === 'string') {\n      // TODO: proper babel ref matching\n      const matches = item.match(allPropsMatchesRegex);\n      if (matches) {\n        for (const match of matches) {\n          props.push(match.match(propsRegex)![1]);\n        }\n      }\n    }\n  });\n\n  return props;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-props-ref.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport function getPropsRef(json: MitosisComponent, shouldRemove?: boolean): [string, boolean] {\n  let has = false;\n  let prop = '';\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      const binding = item.bindings.ref;\n      const regexp = /(.+)?props\\.(.+)( |\\)|;|\\()?$/;\n      if (binding && regexp.test(binding.code)) {\n        const match = regexp.exec(binding.code);\n        const _prop = match?.[2];\n        if (_prop) {\n          prop = _prop;\n        }\n        if (shouldRemove) {\n          delete item.bindings.ref;\n        }\n        has = true;\n        this.stop();\n      }\n    }\n  });\n  return [prop, has];\n}\n"
  },
  {
    "path": "packages/core/src/helpers/get-props.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\nimport { createCodeProcessorPlugin } from './plugins/process-code';\n\nconst propsRegex = /props\\s*\\.\\s*([a-zA-Z0-9_\\$]+)/;\nconst allPropsMatchesRegex = new RegExp(propsRegex, 'g');\n\n// copied from https://github.com/vuejs/core/blob/fa6556a0d56eeff1fec4f948460351ccf8f99f35/packages/compiler-core/src/validateExpression.ts\n// typeof, instanceof and in are allowed\nconst prohibitedKeywordRE = new RegExp(\n  '\\\\b' +\n    (\n      'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n      'super,throw,while,yield,delete,export,import,return,switch,default,' +\n      'extends,finally,continue,debugger,function,arguments,typeof,void,' +\n      // both below conditions added based on https://github.com/vuejs/vue/blob/e80cd09fff570df57d608f8f5aaccee6d7f31917/src/core/instance/state.ts#L89-L96\n      // below line added from https://github.com/vuejs/vue/blob/8880b55d52f8d873f79ef67436217c8752cddef5/src/shared/util.ts#L130\n      'key,ref,slot,slot-scope,is,' +\n      // below line added from https://github.com/vuejs/vue/blob/72aed6a149b94b5b929fb47370a7a6d4cb7491c5/src/platforms/web/util/attrs.ts#L5\n      'style'\n    )\n      .split(',')\n      .join('\\\\b|\\\\b') +\n    '\\\\b',\n);\n\n/**\n * Get props used in the components by reference\n */\nexport const getProps = (json: MitosisComponent) => {\n  const props = new Set<string>();\n\n  createCodeProcessorPlugin(() => (code) => {\n    const matches = code.match(allPropsMatchesRegex);\n    if (matches) {\n      for (const match of matches) {\n        const prop = match.match(propsRegex)![1];\n        if (prop.match(prohibitedKeywordRE)) {\n          throw new Error(`avoid using JavaScript keyword as property name: \"${prop}\"`);\n        }\n        props.add(prop);\n      }\n    }\n    return code;\n  })(json);\n\n  return props;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-refs.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const getRefs = (json: MitosisComponent, refKey: string = 'ref') => {\n  const refs = new Set<string>();\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      const binding = item.bindings[refKey];\n      if (binding && typeof binding.code === 'string') {\n        refs.add(binding.code);\n      }\n    }\n  });\n\n  return refs;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-state-object-string.ts",
    "content": "import { MitosisComponent, StateValue } from '../types/mitosis-component';\nimport { MitosisContext } from '../types/mitosis-context';\n\ntype ValueMapper = (\n  code: string,\n  type: 'data' | 'function' | 'getter',\n  typeParameter: string | undefined,\n  key: string | undefined,\n) => string;\n\ninterface GetStateObjectStringOptions {\n  data?: boolean;\n  functions?: boolean;\n  getters?: boolean;\n  valueMapper?: ValueMapper;\n  /**\n   * If you want the plain value mapper as output\n   */\n  onlyValueMapper?: boolean;\n  format?: 'object' | 'class' | 'variables';\n  keyPrefix?: string;\n  withType?: boolean;\n}\n\ntype RequiredOptions = Required<GetStateObjectStringOptions>;\n\nconst DEFAULT_OPTIONS: RequiredOptions = {\n  format: 'object',\n  keyPrefix: '',\n  valueMapper: (val) => val,\n  onlyValueMapper: false,\n  data: true,\n  functions: true,\n  getters: true,\n  withType: false,\n};\n\nconst convertStateMemberToString =\n  ({\n    data,\n    format,\n    functions,\n    getters,\n    keyPrefix,\n    valueMapper,\n    withType,\n    onlyValueMapper,\n  }: RequiredOptions) =>\n  ([key, state]: [string, StateValue | undefined]): string | undefined => {\n    const keyValueDelimiter = format === 'object' ? ':' : '=';\n\n    if (!state) {\n      return undefined;\n    }\n\n    const { code, typeParameter } = state;\n\n    const type = withType && typeParameter ? `:${typeParameter}` : '';\n\n    switch (state.type) {\n      case 'function': {\n        if (!functions) {\n          return undefined;\n        }\n        const mapper = valueMapper(code, 'function', typeParameter, key);\n\n        if (onlyValueMapper) {\n          return mapper;\n        }\n\n        return `${keyPrefix} ${key} ${keyValueDelimiter} ${mapper}`;\n      }\n      case 'method': {\n        if (!functions) {\n          return undefined;\n        }\n        const mapper = valueMapper(code, 'function', typeParameter, key);\n\n        if (onlyValueMapper) {\n          return mapper;\n        }\n\n        return `${keyPrefix} ${mapper}`;\n      }\n      case 'getter': {\n        if (!getters) {\n          return undefined;\n        }\n\n        const mapper = valueMapper(code, 'getter', typeParameter, key);\n\n        if (onlyValueMapper) {\n          return mapper;\n        }\n\n        return `${keyPrefix} ${mapper}`;\n      }\n      case 'property': {\n        if (!data) {\n          return undefined;\n        }\n        const mapper = valueMapper(code, 'data', typeParameter, key);\n\n        if (onlyValueMapper) {\n          return mapper;\n        }\n\n        return `${keyPrefix} ${key}${type}${keyValueDelimiter} ${mapper}`;\n      }\n      default:\n        break;\n    }\n  };\n\nexport const getMemberObjectString = (\n  object: MitosisComponent['state'],\n  userOptions: GetStateObjectStringOptions = {},\n) => {\n  const options = { ...DEFAULT_OPTIONS, ...userOptions };\n\n  const lineItemDelimiter = options.format === 'object' ? ',' : '\\n';\n\n  const stringifiedProperties = Object.entries(object)\n    .map(convertStateMemberToString(options))\n    .filter((x) => x !== undefined)\n    .join(lineItemDelimiter);\n\n  const prefix = options.format === 'object' ? '{' : '';\n  const suffix = options.format === 'object' ? '}' : '';\n\n  // NOTE: we add a `lineItemDelimiter` at the very end because other functions will sometimes append more properties.\n  // If the delimiter is a comma and the format is `object`, then we need to make sure we have an extra comma at the end,\n  // or the object will become invalid JS.\n  // We also have to make sure that `stringifiedProperties` isn't empty, or we will get `{,}` which is invalid\n  const extraDelimiter = stringifiedProperties.length > 0 ? lineItemDelimiter : '';\n\n  return `${prefix}${stringifiedProperties}${extraDelimiter}${suffix}`;\n};\n\nexport const stringifyContextValue = (\n  object: MitosisContext['value'],\n  userOptions: GetStateObjectStringOptions = {},\n) => getMemberObjectString(object, userOptions);\n\nexport const getStateObjectStringFromComponent = (\n  component: MitosisComponent,\n  options?: GetStateObjectStringOptions,\n) => getMemberObjectString(component.state, options);\n"
  },
  {
    "path": "packages/core/src/helpers/get-state-used.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\n\nconst stateAccessRegex = /state\\s*\\.\\s*([a-zA-Z0-9_\\$]+)/;\nconst allStateMatchesRegex = new RegExp(stateAccessRegex, 'g');\n\n/**\n * Get state used in the components by reference\n */\nexport const getStateUsed = (json: MitosisComponent) => {\n  const stateProperties = new Set<string>();\n  traverse(json).forEach(function (item) {\n    if (typeof item === 'string') {\n      // TODO: proper babel ref matching\n      const matches = item.match(allStateMatchesRegex);\n      if (matches) {\n        for (const match of matches) {\n          stateProperties.add(match.match(stateAccessRegex)![1]);\n        }\n      }\n    }\n  });\n\n  return stateProperties;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-styles.ts",
    "content": "import json5 from 'json5';\nimport { size } from 'lodash';\nimport { MitosisNode } from '../types/mitosis-node';\nimport { MitosisStyles } from '../types/mitosis-styles';\nimport { createSingleBinding } from './bindings';\n\nexport const getStyles = (json: MitosisNode) => {\n  if (!json.bindings.css) {\n    return null;\n  }\n  let css: MitosisStyles;\n  try {\n    css = json5.parse(json.bindings.css?.code);\n  } catch (err) {\n    console.warn('Could not json 5 parse css', err, json.bindings.css.code);\n    return null;\n  }\n  return css;\n};\n\nexport const setStyles = (json: MitosisNode, styles: MitosisStyles | null) => {\n  if (!size(styles)) {\n    delete json.bindings.css;\n  } else {\n    json.bindings.css = createSingleBinding({ code: json5.stringify(styles) });\n  }\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-tag-name.ts",
    "content": "import { MitosisNode } from '@/types/mitosis-node';\n\nexport const getBuilderTagName = (node: MitosisNode) => {\n  return node.properties.$tagName;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/get-typed-function.ts",
    "content": "/**\n * Get functions with typescript typing\n */\nexport const getTypedFunction = (code: string, typescript?: boolean, typeParameter?: string) => {\n  if (!typeParameter || !typescript) {\n    return code;\n  }\n\n  const firstParenthesisIndex = code.indexOf('{');\n\n  // The function should have at least one {\n  if (firstParenthesisIndex < 0) {\n    return code;\n  }\n\n  const preType = code.slice(0, firstParenthesisIndex - 1);\n  const postType = code.slice(firstParenthesisIndex, code.length);\n\n  return [preType, ': ', `ReturnType<${typeParameter}>`, postType].join('');\n};\n"
  },
  {
    "path": "packages/core/src/helpers/getters-to-functions.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\n\n/**\n * Map getters like `useStore({ get foo() { ... }})` from `state.foo` to `foo()`\n */\nexport const gettersToFunctions = (json: MitosisComponent) => {\n  const getterKeys = Object.keys(json.state).filter((item) => json.state[item]?.type === 'getter');\n\n  traverse(json).forEach(function (item) {\n    // TODO: not all strings are expressions!\n    if (typeof item === 'string') {\n      let value = item;\n      for (const key of getterKeys) {\n        try {\n          value = value.replace(\n            new RegExp(`state\\\\s*\\\\.\\\\s*${key}([^a-z0-9]|$)`, 'gi'),\n            (match, group1) => {\n              if (match.endsWith('?')) {\n                return `${key}?.()${group1}`;\n              }\n\n              return `${key}()${group1}`;\n            },\n          );\n        } catch (err) {\n          console.error('Could not update getter ref', err);\n        }\n      }\n      if (value !== item) {\n        this.update(value);\n      }\n    }\n  });\n};\n"
  },
  {
    "path": "packages/core/src/helpers/handle-missing-state.ts",
    "content": "import { MitosisComponent } from '..';\nimport { getStateUsed } from './get-state-used';\n\nexport function handleMissingState(json: MitosisComponent) {\n  const stateUsed = getStateUsed(json);\n  Array.from(stateUsed).forEach((property) => {\n    if (!(property in json.state)) {\n      json.state[property] = { code: 'null', type: 'property', propertyType: 'normal' };\n    }\n  });\n}\n"
  },
  {
    "path": "packages/core/src/helpers/has-bindings-text.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport isChildren from './is-children';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const hasBindingsText = (json: MitosisComponent) => {\n  let has = false;\n  traverse(json).forEach(function (node) {\n    if (isMitosisNode(node) && !isChildren({ node }) && node.bindings._text?.code) {\n      has = true;\n      this.stop();\n    }\n  });\n  return has;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/has-component.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const hasComponent = (name: string, json: MitosisComponent) => {\n  let has = false;\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (item.name === name) {\n        has = true;\n        this.stop();\n      }\n    }\n  });\n  return has;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/has-props.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\n\nexport const hasProps = (json: MitosisComponent) => {\n  let has = false;\n  traverse(json).forEach(function (item) {\n    // TODO: use proper reference tracking\n    if (typeof item === 'string' && item.match(/(^|\\W)props\\s*\\./)) {\n      has = true;\n      this.stop();\n    }\n  });\n  return has;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/has-stateful-dom.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const hasStatefulDom = (json: MitosisComponent) => {\n  let has = false;\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (/input|textarea|select/.test(item.name)) {\n        has = true;\n        this.stop();\n      }\n    }\n  });\n  return has;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/has.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisNode } from '../types/mitosis-node';\nimport { isMitosisNode } from './is-mitosis-node';\n\n/**\n * Test if the component has something\n *\n * e.g.\n *    const hasSpread = has(component, node => some(node.bindings, { type: 'spread' }));\n */\nexport function has(json: MitosisComponent, test: (node: MitosisNode) => boolean) {\n  let found = false;\n  traverse(json).forEach(function (thing) {\n    if (isMitosisNode(thing)) {\n      if (test(thing)) {\n        found = true;\n        this.stop();\n      }\n    }\n  });\n  return found;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/html-escape.ts",
    "content": "export function htmlAttributeEscape(value: string): string {\n  return value.replace(/\"/g, '&quot;').replace(/\\n/g, '\\\\n');\n}\n"
  },
  {
    "path": "packages/core/src/helpers/indent.ts",
    "content": "export function indent(str: string, spaces = 4) {\n  return str.replace(/\\n([^\\n])/g, `\\n${' '.repeat(spaces)}$1`);\n}\n"
  },
  {
    "path": "packages/core/src/helpers/is-children.ts",
    "content": "import { MitosisNode } from '@/types/mitosis-node';\n\nexport const getTextValue = (node: MitosisNode) => {\n  const textValue = node.bindings._text?.code || node.properties.__text || '';\n  return textValue.replace(/\\s+/g, '');\n};\n\nexport default function isChildren({\n  node,\n  extraMatches = [],\n}: {\n  node: MitosisNode;\n  extraMatches?: string[];\n}): boolean {\n  const textValue = getTextValue(node);\n  return ['props.children', 'children', 'children()'].concat(extraMatches).includes(textValue);\n}\n"
  },
  {
    "path": "packages/core/src/helpers/is-component.ts",
    "content": "import { MitosisNode } from '../types/mitosis-node';\n\n/**\n * This node is a component, vs a plain html tag (<Foo> vs <div>)\n */\nexport const isComponent = (json: MitosisNode) => json.name.toLowerCase() !== json.name;\n"
  },
  {
    "path": "packages/core/src/helpers/is-hook-empty.ts",
    "content": "import { BaseHook, OnMountHook } from '@/types/mitosis-component';\n\nexport const isHookEmpty = (hook?: BaseHook | BaseHook[] | OnMountHook[]): boolean => {\n  if (!hook) {\n    return true;\n  }\n  if (Array.isArray(hook)) {\n    return hook.every((h) => isHookEmpty(h));\n  }\n  return !hook.code?.trim();\n};\n"
  },
  {
    "path": "packages/core/src/helpers/is-html-attribute.ts",
    "content": "export const htmlElementAttributes: { [key: string]: string[] } = {\n  '*': [\n    'accesskey',\n    'autocapitalize',\n    'autofocus',\n    'class',\n    'contenteditable',\n    'dir',\n    'draggable',\n    'enterkeyhint',\n    'hidden',\n    'id',\n    'inputmode',\n    'is',\n    'itemid',\n    'itemprop',\n    'itemref',\n    'itemscope',\n    'itemtype',\n    'lang',\n    'nonce',\n    'slot',\n    'spellcheck',\n    'style',\n    'tabindex',\n    'title',\n    'translate',\n  ],\n  a: [\n    'charset',\n    'coords',\n    'download',\n    'href',\n    'hreflang',\n    'name',\n    'ping',\n    'referrerpolicy',\n    'rel',\n    'rev',\n    'shape',\n    'target',\n    'type',\n  ],\n  applet: [\n    'align',\n    'alt',\n    'archive',\n    'code',\n    'codebase',\n    'height',\n    'hspace',\n    'name',\n    'object',\n    'vspace',\n    'width',\n  ],\n  area: [\n    'alt',\n    'coords',\n    'download',\n    'href',\n    'hreflang',\n    'nohref',\n    'ping',\n    'referrerpolicy',\n    'rel',\n    'shape',\n    'target',\n    'type',\n  ],\n  audio: ['autoplay', 'controls', 'crossorigin', 'loop', 'muted', 'preload', 'src'],\n  base: ['href', 'target'],\n  basefont: ['color', 'face', 'size'],\n  blockquote: ['cite'],\n  body: ['alink', 'background', 'bgcolor', 'link', 'text', 'vlink'],\n  br: ['clear'],\n  button: [\n    'disabled',\n    'form',\n    'formaction',\n    'formenctype',\n    'formmethod',\n    'formnovalidate',\n    'formtarget',\n    'name',\n    'type',\n    'value',\n  ],\n  canvas: ['height', 'width'],\n  caption: ['align'],\n  col: ['align', 'char', 'charoff', 'span', 'valign', 'width'],\n  colgroup: ['align', 'char', 'charoff', 'span', 'valign', 'width'],\n  data: ['value'],\n  del: ['cite', 'datetime'],\n  details: ['open'],\n  dialog: ['open'],\n  dir: ['compact'],\n  div: ['align'],\n  dl: ['compact'],\n  embed: ['height', 'src', 'type', 'width'],\n  fieldset: ['disabled', 'form', 'name'],\n  font: ['color', 'face', 'size'],\n  form: [\n    'accept',\n    'accept-charset',\n    'action',\n    'autocomplete',\n    'enctype',\n    'method',\n    'name',\n    'novalidate',\n    'target',\n  ],\n  frame: [\n    'frameborder',\n    'longdesc',\n    'marginheight',\n    'marginwidth',\n    'name',\n    'noresize',\n    'scrolling',\n    'src',\n  ],\n  frameset: ['cols', 'rows'],\n  h1: ['align'],\n  h2: ['align'],\n  h3: ['align'],\n  h4: ['align'],\n  h5: ['align'],\n  h6: ['align'],\n  head: ['profile'],\n  hr: ['align', 'noshade', 'size', 'width'],\n  html: ['manifest', 'version'],\n  iframe: [\n    'align',\n    'allow',\n    'allowfullscreen',\n    'allowpaymentrequest',\n    'allowusermedia',\n    'frameborder',\n    'height',\n    'loading',\n    'longdesc',\n    'marginheight',\n    'marginwidth',\n    'name',\n    'referrerpolicy',\n    'sandbox',\n    'scrolling',\n    'src',\n    'srcdoc',\n    'width',\n  ],\n  img: [\n    'align',\n    'alt',\n    'border',\n    'crossorigin',\n    'decoding',\n    'height',\n    'hspace',\n    'ismap',\n    'loading',\n    'longdesc',\n    'name',\n    'referrerpolicy',\n    'sizes',\n    'src',\n    'srcset',\n    'usemap',\n    'vspace',\n    'width',\n  ],\n  input: [\n    'accept',\n    'align',\n    'alt',\n    'autocomplete',\n    'checked',\n    'dirname',\n    'disabled',\n    'form',\n    'formaction',\n    'formenctype',\n    'formmethod',\n    'formnovalidate',\n    'formtarget',\n    'height',\n    'ismap',\n    'list',\n    'max',\n    'maxlength',\n    'min',\n    'minlength',\n    'multiple',\n    'name',\n    'pattern',\n    'placeholder',\n    'readonly',\n    'required',\n    'size',\n    'src',\n    'step',\n    'type',\n    'usemap',\n    'value',\n    'width',\n  ],\n  ins: ['cite', 'datetime'],\n  isindex: ['prompt'],\n  label: ['for', 'form'],\n  legend: ['align'],\n  li: ['type', 'value'],\n  link: [\n    'as',\n    'charset',\n    'color',\n    'crossorigin',\n    'disabled',\n    'href',\n    'hreflang',\n    'imagesizes',\n    'imagesrcset',\n    'integrity',\n    'media',\n    'referrerpolicy',\n    'rel',\n    'rev',\n    'sizes',\n    'target',\n    'type',\n  ],\n  map: ['name'],\n  menu: ['compact'],\n  meta: ['charset', 'content', 'http-equiv', 'media', 'name', 'scheme'],\n  meter: ['high', 'low', 'max', 'min', 'optimum', 'value'],\n  object: [\n    'align',\n    'archive',\n    'border',\n    'classid',\n    'codebase',\n    'codetype',\n    'data',\n    'declare',\n    'form',\n    'height',\n    'hspace',\n    'name',\n    'standby',\n    'type',\n    'typemustmatch',\n    'usemap',\n    'vspace',\n    'width',\n  ],\n  ol: ['compact', 'reversed', 'start', 'type'],\n  optgroup: ['disabled', 'label'],\n  option: ['disabled', 'label', 'selected', 'value'],\n  output: ['for', 'form', 'name'],\n  p: ['align'],\n  param: ['name', 'type', 'value', 'valuetype'],\n  pre: ['width'],\n  progress: ['max', 'value'],\n  q: ['cite'],\n  script: [\n    'async',\n    'charset',\n    'crossorigin',\n    'defer',\n    'integrity',\n    'language',\n    'nomodule',\n    'referrerpolicy',\n    'src',\n    'type',\n  ],\n  select: ['autocomplete', 'disabled', 'form', 'multiple', 'name', 'required', 'size'],\n  slot: ['name'],\n  source: ['height', 'media', 'sizes', 'src', 'srcset', 'type', 'width'],\n  style: ['media', 'type'],\n  table: [\n    'align',\n    'bgcolor',\n    'border',\n    'cellpadding',\n    'cellspacing',\n    'frame',\n    'rules',\n    'summary',\n    'width',\n  ],\n  tbody: ['align', 'char', 'charoff', 'valign'],\n  td: [\n    'abbr',\n    'align',\n    'axis',\n    'bgcolor',\n    'char',\n    'charoff',\n    'colspan',\n    'headers',\n    'height',\n    'nowrap',\n    'rowspan',\n    'scope',\n    'valign',\n    'width',\n  ],\n  textarea: [\n    'autocomplete',\n    'cols',\n    'dirname',\n    'disabled',\n    'form',\n    'maxlength',\n    'minlength',\n    'name',\n    'placeholder',\n    'readonly',\n    'required',\n    'rows',\n    'wrap',\n  ],\n  tfoot: ['align', 'char', 'charoff', 'valign'],\n  th: [\n    'abbr',\n    'align',\n    'axis',\n    'bgcolor',\n    'char',\n    'charoff',\n    'colspan',\n    'headers',\n    'height',\n    'nowrap',\n    'rowspan',\n    'scope',\n    'valign',\n    'width',\n  ],\n  thead: ['align', 'char', 'charoff', 'valign'],\n  time: ['datetime'],\n  tr: ['align', 'bgcolor', 'char', 'charoff', 'valign'],\n  track: ['default', 'kind', 'label', 'src', 'srclang'],\n  ul: ['compact', 'type'],\n  video: [\n    'autoplay',\n    'controls',\n    'crossorigin',\n    'height',\n    'loop',\n    'muted',\n    'playsinline',\n    'poster',\n    'preload',\n    'src',\n    'width',\n  ],\n};\n\nexport const isHtmlAttribute = (attr: string, tagName: string) => {\n  if (/role|aria-/.test(attr)) {\n    return true;\n  }\n  const getAttr = [...htmlElementAttributes['*'], ...(htmlElementAttributes[tagName] || [])].find(\n    (attribute) => attr === attribute,\n  );\n  return Boolean(getAttr);\n};\n"
  },
  {
    "path": "packages/core/src/helpers/is-mitosis-node.ts",
    "content": "import { MitosisNode } from '../types/mitosis-node';\n\nexport const isMitosisNode = (thing: unknown): thing is MitosisNode => {\n  return Boolean(thing && (thing as any)['@type'] === '@builder.io/mitosis/node');\n};\n"
  },
  {
    "path": "packages/core/src/helpers/is-root-text-node.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisNode } from '../types/mitosis-node';\n\nexport function isRootTextNode(json: MitosisComponent | MitosisNode) {\n  const firstChild = json.children[0];\n  return Boolean(json.children.length === 1 && firstChild && isTextNode(firstChild));\n}\n\nexport function isTextNode(node: MitosisNode) {\n  return Boolean(node.properties._text || node.bindings._text);\n}\n"
  },
  {
    "path": "packages/core/src/helpers/is-upper-case.ts",
    "content": "export const isUpperCase = (str: string) => typeof str === 'string' && str.toUpperCase() === str;\n"
  },
  {
    "path": "packages/core/src/helpers/is-valid-attribute-name.ts",
    "content": "export const isValidAttributeName = (str: string) => {\n  return Boolean(str && /^[a-z0-9\\-_:]+$/i.test(str));\n};\n"
  },
  {
    "path": "packages/core/src/helpers/json.ts",
    "content": "import json5 from 'json5';\n\ntype ParsedJson = any;\n\nexport const tryParseJson = (jsonStr: string): ParsedJson => {\n  try {\n    return json5.parse(jsonStr);\n  } catch (err) {\n    console.error('Could not JSON5 parse object:\\n', jsonStr);\n    throw err;\n  }\n};\n"
  },
  {
    "path": "packages/core/src/helpers/map-refs.ts",
    "content": "import type { NodePath } from '@babel/core';\nimport { types } from '@babel/core';\nimport traverse from 'neotraverse/legacy';\n\nimport { CodeType } from '@/helpers/plugins/process-code/types';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { babelTransformExpression } from './babel-transform';\nimport { getRefs } from './get-refs';\nimport { isMitosisNode } from './is-mitosis-node';\nimport { SETTER } from './patterns';\n\nexport type RefMapper = (\n  refName: string,\n  extra?: {\n    type?: CodeType;\n    path: NodePath<types.Identifier>;\n  },\n) => string;\n\nconst replaceRefsInString = (code: string, refs: string[], mapper: RefMapper, type?: CodeType) => {\n  return babelTransformExpression(code, {\n    Identifier(path: NodePath<types.Identifier>) {\n      const name = path.node.name;\n      const isRef = refs.includes(name);\n      if (isRef && !path.node.extra?.replaced) {\n        path.replaceWith(\n          types.identifier(\n            mapper(name, {\n              type,\n              path,\n            }),\n          ),\n        );\n        path.node.extra = { replaced: true };\n      }\n    },\n  });\n};\n\nexport const mapRefs = (component: MitosisComponent, mapper: RefMapper): void => {\n  const refSet = getRefs(component);\n\n  // grab refs not used for bindings\n  Object.keys(component.refs).forEach((ref) => refSet.add(ref));\n  const refs = Array.from(refSet);\n\n  for (const key of Object.keys(component.state)) {\n    const stateVal = component.state[key];\n\n    if (typeof stateVal?.code === 'string') {\n      const value = stateVal.code;\n      switch (stateVal.type) {\n        case 'method':\n        case 'getter':\n          const isGet = stateVal.type === 'getter';\n          const isSet = Boolean(value.match(SETTER));\n          component.state[key] = {\n            ...stateVal,\n            code: replaceRefsInString(\n              value.replace(/^(get |set )?/, 'function '),\n              refs,\n              mapper,\n            ).replace(/^function /, isGet ? 'get ' : isSet ? 'set ' : ''),\n          };\n          break;\n        case 'function':\n          component.state[key] = {\n            ...stateVal,\n            code: replaceRefsInString(value, refs, mapper),\n            type: 'function',\n          };\n          break;\n        default:\n          break;\n      }\n    }\n  }\n\n  traverse(component).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      for (const key of Object.keys(item.bindings)) {\n        const value = item.bindings[key];\n        if (typeof value === 'object' && key !== 'ref') {\n          item.bindings[key] = {\n            ...value,\n            code: replaceRefsInString(value.code as string, refs, mapper, 'bindings'),\n          };\n        }\n      }\n    }\n  });\n\n  for (const key of Object.keys(component.hooks) as (keyof typeof component.hooks)[]) {\n    const _hook = component.hooks[key];\n\n    const hooks = Array.isArray(_hook) ? _hook : [_hook];\n    for (const hook of hooks) {\n      if (!hook) continue;\n      if (hook.code) {\n        hook.code = replaceRefsInString(hook.code, refs, mapper);\n      }\n\n      if (hook.deps) {\n        hook.deps = replaceRefsInString(hook.deps, refs, mapper, 'hooks-deps');\n      }\n      if (hook?.depsArray) {\n        hook.depsArray = hook.depsArray.map((dep) =>\n          replaceRefsInString(dep, refs, mapper, 'hooks-deps-array'),\n        );\n      }\n    }\n  }\n};\n"
  },
  {
    "path": "packages/core/src/helpers/merge-options.ts",
    "content": "import { BaseTranspilerOptions, MitosisComponent, Target } from '..';\nimport { getSignalAccessPlugin, getSignalTypePlugin } from './plugins/process-signals';\nimport { processTargetBlocks } from './plugins/process-target-blocks';\n\n/**\n * Merges options while combining the `plugins` array, and adds any default plugins.\n */\nexport const mergeOptions = <T extends BaseTranspilerOptions>(\n  a: T,\n  b: Partial<T> = {},\n  c?: Partial<T>,\n  d?: Partial<T>,\n): T & { plugins: NonNullable<T['plugins']> } => {\n  return {\n    ...a,\n    ...b,\n    ...c,\n    ...d,\n    plugins: [\n      ...(a.plugins || []),\n      ...(b.plugins || []),\n      ...(c?.plugins || []),\n      ...(d?.plugins || []),\n    ],\n  };\n};\n\n/**\n * Merges options while combining the `plugins` array, and adds any default plugins.\n */\nexport const initializeOptions = <T extends BaseTranspilerOptions>({\n  target,\n  component,\n  defaults,\n  userOptions,\n  extra,\n}: {\n  target: Target;\n  component: MitosisComponent;\n  defaults: T;\n  userOptions?: Partial<T>;\n  extra?: Partial<T>;\n}): T & { plugins: NonNullable<T['plugins']> } => {\n  const metadataOverrides = component.meta?.useMetadata?.options?.[target] as\n    | Partial<T>\n    | undefined;\n\n  const options = mergeOptions(defaults, userOptions, extra, metadataOverrides);\n\n  // we want this plugin to run first in every case, as it replaces magic strings with the correct code.\n  options.plugins.unshift(\n    processTargetBlocks(target),\n    getSignalTypePlugin({ target }),\n    getSignalAccessPlugin({ target }),\n  );\n\n  return options;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/mitosis-imports.ts",
    "content": "import * as babel from '@babel/core';\nimport { MitosisImport } from '../types/mitosis-component';\n\nconst { types } = babel;\n\nexport const mapImportDeclarationToMitosisImport = (\n  node: babel.types.ImportDeclaration,\n): MitosisImport => {\n  const importObject: MitosisImport = {\n    imports: {},\n    path: node.source.value,\n    importKind: node.importKind,\n  };\n  for (const specifier of node.specifiers) {\n    if (types.isImportSpecifier(specifier)) {\n      importObject.imports[specifier.local.name] = (\n        specifier.imported as babel.types.Identifier\n      ).name;\n    } else if (types.isImportDefaultSpecifier(specifier)) {\n      importObject.imports[specifier.local.name] = 'default';\n    } else if (types.isImportNamespaceSpecifier(specifier)) {\n      importObject.imports[specifier.local.name] = '*';\n    }\n  }\n  return importObject;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/nodes/for.ts",
    "content": "import { ForNode } from '../../types/mitosis-node';\nimport { checkIsDefined } from '../nullable';\n\nexport const getForArguments = (\n  node: ForNode,\n  { excludeCollectionName }: { excludeCollectionName: boolean } = { excludeCollectionName: false },\n): string[] => {\n  return [\n    node.scope.forName || 'item',\n    node.scope.indexName,\n    excludeCollectionName ? undefined : node.scope.collectionName,\n  ].filter(checkIsDefined);\n};\n"
  },
  {
    "path": "packages/core/src/helpers/nullable.ts",
    "content": "export type Nullable<X> = X | null | undefined;\n\nexport const checkIsDefined = <T>(value: Nullable<T>): value is NonNullable<T> =>\n  value !== null && value !== undefined;\n"
  },
  {
    "path": "packages/core/src/helpers/on-event.ts",
    "content": "import { MitosisComponent, MitosisNode, MitosisPlugin, OnEventHook } from '..';\nimport { createSingleBinding } from './bindings';\nimport { capitalize } from './capitalize';\nimport { traverseNodes } from './traverse-nodes';\n\nconst checkIsEventHandlerNode = (node: MitosisNode, hook: OnEventHook) => {\n  return hook.refName === node.bindings.ref?.code;\n};\n\nconst getBindingName = (hook: OnEventHook) => {\n  return `on${capitalize(hook.eventName)}`;\n};\nexport const getOnEventHandlerName = (hook: OnEventHook) => {\n  return `${hook.refName}_${getBindingName(hook)}`;\n};\n\nexport const getOnEventHooksForNode = ({\n  node,\n  component,\n}: {\n  node: MitosisNode;\n  component: MitosisComponent;\n}) => {\n  return component.hooks.onEvent.filter((hook) => checkIsEventHandlerNode(node, hook));\n};\n\n/**\n * Adds event handlers from `onEvent` hooks to the appropriate node's bindings.\n * Only works with frameworks that support custom events in their templates.\n */\nexport const processOnEventHooksPlugin =\n  (args: { setBindings?: boolean; includeRootEvents?: boolean } = {}): MitosisPlugin =>\n  () => ({\n    json: {\n      pre: (component) => {\n        const { setBindings = true, includeRootEvents = true } = args;\n\n        traverseNodes(component, (node) => {\n          getOnEventHooksForNode({ node, component }).forEach((hook) => {\n            if (!includeRootEvents && hook.isRoot) return;\n\n            const handlerName = getBindingName(hook);\n            const fnName = getOnEventHandlerName(hook);\n            component.state[fnName] = {\n              code: `${fnName}(${hook.eventArgName}) { ${hook.code} }`,\n              type: 'method',\n            };\n\n            if (setBindings) {\n              node.bindings[handlerName] = createSingleBinding({\n                code: `state.${fnName}(${hook.eventArgName})`,\n                arguments: [hook.eventArgName],\n                bindingType: 'function',\n              });\n            }\n          });\n        });\n      },\n    },\n  });\n"
  },
  {
    "path": "packages/core/src/helpers/output.ts",
    "content": "import { MitosisConfig, Target } from '@builder.io/mitosis';\nimport { checkIsDefined } from './nullable';\n\nexport const checkShouldOutputTypeScript = ({\n  target,\n  options,\n}: {\n  target: Target;\n  options: MitosisConfig;\n}): boolean => {\n  const targetTsConfig = options.options[target]?.typescript;\n  return checkIsDefined(targetTsConfig) ? targetTsConfig : false;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/parse-node.ts",
    "content": "import { parseJsx } from '../parsers/jsx';\n\nexport const parseNode = (str: string) => {\n  return parseJsx(`\n    export default function MyComponent() {\n      return (${str})\n    }\n  `).children[0];\n};\nexport const parseNodes = (str: string) => {\n  return parseJsx(`\n    export default function MyComponent() {\n      return (<>${str}</>)\n    }\n  `).children[0].children;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/parsers.ts",
    "content": "import * as babel from '@babel/core';\n\nimport decorators from '@babel/plugin-syntax-decorators';\nimport tsPlugin from '@babel/plugin-syntax-typescript';\nimport tsPreset from '@babel/preset-typescript';\n\nexport function parseCodeToAst(code: string) {\n  return babel.parse(code, {\n    presets: [[tsPreset, { isTSX: true, allExtensions: true }]],\n    plugins: [\n      [tsPlugin, { isTSX: true }],\n      [decorators, { legacy: true }],\n    ],\n  });\n}\n\nexport function parseCode(code: string) {\n  const ast = parseCodeToAst(code);\n  return babel.types.isFile(ast) ? ast.program.body : babel.types.isProgram(ast) ? ast.body : [];\n}\n\nexport const isCodeBodyExpression = (body: babel.types.Statement[]) =>\n  body.length == 1 &&\n  (babel.types.isExpression(body[0]) || babel.types.isExpressionStatement(body[0]));\n\n/**\n * Returns `true` if the `code` is a valid expression. (vs a statement)\n */\nexport function isExpression(code: string): boolean {\n  try {\n    const body = parseCode(code);\n    return isCodeBodyExpression(body);\n  } catch (e) {\n    return false;\n  }\n}\n\nexport const isCodeBodyIdentifier = (body: babel.types.Statement[]) =>\n  body.length == 1 && babel.types.isIdentifier(body[0]);\n"
  },
  {
    "path": "packages/core/src/helpers/patterns.ts",
    "content": "export const GETTER = /^\\s*get /;\nexport const SETTER = /^\\s*set /;\n\nexport const checkIsGetter = (code: string) => code.match(GETTER);\nexport const stripGetter = (str: string) => str.replace(GETTER, '');\n\nexport const replaceGetterWithFunction = (str: string) => str.replace(/^(get )?/, 'function ');\nexport const replaceFunctionWithGetter = (str: string) => str.replace(/^(function )?/, 'get ');\n\nexport const extractGetterCodeBlock = (getter: string) =>\n  getter.replace(/[\\S\\s]*\\(\\) \\{([\\S\\s]*)\\}[\\S\\s]*/, '$1').trim();\n\nexport const prefixWithFunction = (str: string) => `function ${str}`;\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/__snapshots__/process-signals.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`replaceSignalSetters > should replace signal setters 1`] = `\n\"props.setBuilderContextSignal(PREVIOUS_VALUE => ({ ...PREVIOUS_VALUE,\n  content: { ...builderContextSignal.content,\n    ...newContent,\n    data: { ...builderContextSignal.content?.data,\n      ...newContent?.data\n    },\n    meta: { ...builderContextSignal.content?.meta,\n      ...newContent?.meta,\n      breakpoints: newContent?.meta?.breakpoints || builderContextSignal.content?.meta?.breakpoints\n    }\n  }\n}));\nsetBuilderContextSignal(PREVIOUS_VALUE => ({ ...PREVIOUS_VALUE,\n  rootState: newRootState\n}))\"\n`;\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/process-code/index.ts",
    "content": "import { flow } from 'fp-ts/lib/function';\nimport { BaseHook, MitosisComponent } from '../../../types/mitosis-component';\nimport { MitosisPlugin } from '../../../types/plugins';\nimport { checkIsDefined } from '../../nullable';\nimport { traverseNodes } from '../../traverse-nodes';\nimport { CodeProcessor } from './types';\n\nexport const createCodeProcessorPlugin =\n  (\n    codeProcessor: CodeProcessor,\n    { processProperties }: { processProperties?: boolean } = { processProperties: false },\n  ) =>\n  (json: MitosisComponent): void => {\n    function processHook(key: keyof typeof json.hooks, hook: BaseHook) {\n      const result = codeProcessor('hooks', json)(hook.code, key);\n\n      if (typeof result === 'string') {\n        hook.code = result;\n      } else {\n        result();\n      }\n      if (hook.deps) {\n        const result = codeProcessor('hooks-deps', json)(hook.deps, key);\n\n        if (typeof result === 'string') {\n          hook.deps = result;\n        } else {\n          result();\n        }\n      }\n      if (hook.depsArray?.length) {\n        hook.depsArray = hook.depsArray\n          .map((dep) => {\n            const innerResult = codeProcessor('hooks-deps-array', json)(dep, key);\n            if (typeof innerResult === 'string') {\n              return innerResult;\n            } else {\n              return '';\n            }\n          })\n          .filter((dep) => !!dep);\n      }\n    }\n\n    /**\n     * process code in hooks\n     */\n    for (const key in json.hooks) {\n      const typedKey = key as keyof typeof json.hooks;\n      const hooks = json.hooks[typedKey];\n\n      if (checkIsDefined(hooks)) {\n        if (Array.isArray(hooks)) {\n          for (const hook of hooks) {\n            processHook(typedKey, hook);\n          }\n        } else {\n          processHook(typedKey, hooks);\n        }\n      }\n    }\n\n    for (const key in json.state) {\n      const state = json.state[key];\n      if (state) {\n        const result = codeProcessor('state', json)(state.code, key);\n\n        if (typeof result === 'string') {\n          state.code = result;\n        } else {\n          result();\n        }\n\n        if (state.typeParameter) {\n          const result = codeProcessor('types', json)(state.typeParameter, key);\n\n          if (typeof result === 'string') {\n            state.typeParameter = result;\n          } else {\n            result();\n          }\n        }\n      }\n    }\n\n    for (const key in json.context.set) {\n      const set = json.context.set[key];\n      if (set.ref) {\n        const result = codeProcessor('context-set', json)(set.ref, key);\n\n        if (typeof result === 'string') {\n          set.ref = result;\n        } else {\n          result();\n        }\n      }\n      if (set.value) {\n        for (const key in set.value) {\n          const value = set.value[key];\n          if (value) {\n            const result = codeProcessor('context-set', json)(value.code, key);\n\n            if (typeof result === 'string') {\n              value.code = result;\n            } else {\n              result();\n            }\n          }\n        }\n      }\n    }\n\n    traverseNodes(json, (node, context) => {\n      if (processProperties) {\n        for (const key in node.properties) {\n          const value = node.properties[key];\n          if (key !== '_text' && value) {\n            const result = codeProcessor('properties', json, node)(value, key);\n\n            if (typeof result === 'string') {\n              node.properties[key] = result;\n            } else {\n              result();\n            }\n          }\n        }\n      }\n\n      for (const key in node.bindings) {\n        const value = node.bindings[key];\n        if (value?.code) {\n          const result = codeProcessor('bindings', json, node)(value.code, key, context);\n\n          if (typeof result === 'string') {\n            value.code = result;\n          } else {\n            result();\n          }\n        }\n      }\n\n      // Fix web component tag issue due to the babel transform\n      // For exmaple: we pass a tag called \"swiper-container\", and it will be renamed as \"swiper - container\" after babel transforming,\n      // because babel will automatically identify the \"-\" as an operator, and add a space before and after it.\n      const result = node.name.includes('-')\n        ? node.name\n        : codeProcessor('dynamic-jsx-elements', json)(node.name, '');\n      if (typeof result === 'string') {\n        node.name = result;\n      } else {\n        result();\n      }\n    });\n\n    if (json.types) {\n      json.types = json.types?.map((type) => {\n        const result = codeProcessor('types', json)(type, '');\n\n        if (typeof result === 'string') {\n          return result;\n        }\n        result();\n        return type;\n      });\n    }\n\n    if (json.propsTypeRef) {\n      const result = codeProcessor('types', json)(json.propsTypeRef, '');\n\n      if (typeof result === 'string') {\n        json.propsTypeRef = result;\n      } else {\n        result();\n      }\n    }\n  };\n\n/**\n * Given a `codeProcessor` function, processes all code expressions within a Mitosis component.\n */\nexport const CODE_PROCESSOR_PLUGIN = flow(\n  createCodeProcessorPlugin,\n  (plugin): MitosisPlugin =>\n    () => ({ json: { post: plugin } }),\n);\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/process-code/types.ts",
    "content": "import type { TraverseContext } from 'neotraverse/legacy';\nimport { MitosisComponent } from '../../../types/mitosis-component';\nimport { MitosisNode } from '../../../types/mitosis-node';\n\nexport type CodeType =\n  | 'hooks'\n  | 'hooks-deps'\n  | 'hooks-deps-array'\n  | 'bindings'\n  | 'properties'\n  | 'state'\n  | 'types'\n  | 'context-set'\n  // this is for when we write dynamic JSX elements like `<state.foo>Hello</state.foo>` in Mitosis\n  | 'dynamic-jsx-elements';\n\n// declare function codeProcessor<T extends CodeType>(\n//   codeType: T,\n//   json: MitosisComponent,\n// ): (code: string, hookType: T extends 'hooks' ? keyof MitosisComponent['hooks'] : string) => string;\ndeclare function codeProcessor(\n  codeType: CodeType,\n  json: MitosisComponent,\n  node?: MitosisNode,\n): (code: string, hookType: string, context?: TraverseContext) => string | (() => void);\n\nexport type CodeProcessor = typeof codeProcessor;\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/process-signals.test.ts",
    "content": "import { types } from '@babel/core';\nimport { capitalize } from '../capitalize';\nimport { replaceSignalSetters } from './process-signals';\n\ndescribe(replaceSignalSetters.name, () => {\n  test('should replace signal setters', () => {\n    const code = `\n    props.builderContextSignal.value.content = {\n      ...builderContextSignal.content,\n      ...newContent,\n      data: {     \n        ...builderContextSignal.content?.data, \n        ...newContent?.data },\n        meta: {\n          ...builderContextSignal.content?.meta,\n          ...newContent?.meta,\n          breakpoints:\n          newContent?.meta?.breakpoints ||\n          builderContextSignal.content?.meta?.breakpoints,\n        }\n        };\n        \n    builderContextSignal.value.rootState = newRootState;\n    `;\n    const propName = 'builderContextSignal';\n\n    const output = replaceSignalSetters({\n      code,\n      nodeMaps: [\n        {\n          from: types.memberExpression(\n            types.memberExpression(types.identifier('props'), types.identifier(propName)),\n            types.identifier('value'),\n          ),\n          setTo: types.memberExpression(\n            types.identifier('props'),\n            types.identifier('set' + capitalize(propName)),\n          ),\n        },\n        {\n          from: types.memberExpression(types.identifier(propName), types.identifier('value')),\n          setTo: types.identifier('set' + capitalize(propName)),\n        },\n      ],\n    });\n    expect(output).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/process-signals.ts",
    "content": "import { Node, types } from '@babel/core';\nimport generate from '@babel/generator';\nimport { Target } from '../../types/config';\nimport { MitosisPlugin } from '../../types/plugins';\nimport { babelTransformExpression } from '../babel-transform';\nimport { capitalize } from '../capitalize';\nimport { checkIsDefined } from '../nullable';\nimport { replaceNodes } from '../replace-identifiers';\nimport { getSignalMitosisImportForTarget, mapSignalType } from '../signals';\nimport { createCodeProcessorPlugin } from './process-code';\n\nexport const replaceSignalSetters = ({\n  code,\n  nodeMaps,\n}: {\n  code: string;\n  nodeMaps: {\n    from: types.Node;\n    setTo: types.Expression;\n  }[];\n}) => {\n  for (const { from, setTo } of nodeMaps) {\n    code = babelTransformExpression(code, {\n      AssignmentExpression(path) {\n        if (path.node.operator !== '=') return;\n\n        const lhs = path.node.left;\n        const rhs = path.node.right;\n\n        if (!types.isMemberExpression(lhs)) return;\n        if (!(types.isObjectExpression(rhs) || types.isIdentifier(rhs))) return;\n\n        const signalAccess = lhs.object;\n        if (!types.isMemberExpression(signalAccess)) return;\n\n        if (generate(signalAccess).code !== generate(from).code) return;\n\n        /**\n         * Go from:\n         *  a.b.c.value.d = e\n         *\n         * to:\n         *  a.b.setC((PREVIOUS_VALUE) => ({ ...PREVIOUS_VALUE, d: e }))\n         */\n        const setter = types.cloneNode(setTo);\n\n        // TO-DO: replace all `value` references inside of the set logic with `PREVIOUS_VALUE`.\n        const prevValueIdentifier = types.identifier('PREVIOUS_VALUE');\n        const setFn = types.arrowFunctionExpression(\n          [prevValueIdentifier],\n          types.objectExpression([\n            types.spreadElement(prevValueIdentifier),\n            types.objectProperty(lhs.property, rhs),\n          ]),\n        );\n        const setterExpression = types.callExpression(setter, [setFn]);\n\n        path.replaceWith(setterExpression);\n      },\n    });\n  }\n  return code;\n};\n\ntype SignalMapper = {\n  getter: (name: string) => types.Expression;\n  setter?: (name: string) => types.Expression;\n};\n\n/**\n * Processes `Signal` type imports, transforming them to the target's equivalent and adding the import to the component.\n */\nexport const getSignalTypePlugin =\n  ({ target }: { target: Target }): MitosisPlugin =>\n  () => ({\n    json: {\n      pre: (json) => {\n        createCodeProcessorPlugin((codeType, json) => {\n          switch (codeType) {\n            // Skip these for now because they break for svelte: `<svelte:element>` becomes `<svelte: element>`.\n            // Besides, fairly impossible to endup with a Signal generic there like `<MyComponent<Signal<number>> />`.\n            case 'dynamic-jsx-elements':\n              return (x) => x;\n            default:\n              return (code) => {\n                if (json.signals?.signalTypeImportName) {\n                  return mapSignalType({\n                    code,\n                    signalImportName: json.signals.signalTypeImportName,\n                    target,\n                  });\n                }\n\n                return code;\n              };\n          }\n        })(json);\n\n        if (json.signals?.signalTypeImportName) {\n          json.imports = json.imports || [];\n          const signalMappedImport = getSignalMitosisImportForTarget(target);\n          if (signalMappedImport) {\n            json.imports.push(signalMappedImport);\n          }\n        }\n      },\n    },\n  });\n\nconst getSignalMapperForTarget = (target: Target): SignalMapper => {\n  switch (target) {\n    case 'svelte':\n      return {\n        getter: (name) => types.identifier('$' + name),\n      };\n    case 'preact':\n    case 'reactNative':\n    case 'react':\n    case 'solid':\n      return {\n        getter: (name) => types.identifier(name),\n        setter: (name) => types.identifier('set' + capitalize(name)),\n      };\n    default:\n      // default case: strip the `.value` accessor\n      return {\n        getter: (name) => types.identifier(name),\n      };\n  }\n};\n\n/**\n * Processes `mySignal.value` accessors for props, context, and state.\n */\nexport const getSignalAccessPlugin =\n  ({ target }: { target: Target }): MitosisPlugin =>\n  () => ({\n    json: {\n      pre: (x) => {\n        return createCodeProcessorPlugin((_codeType, json) => (code) => {\n          const mapSignal = getSignalMapperForTarget(target);\n          const nodeMaps: { from: Node; to: Node; setTo: types.Expression | undefined }[] = [];\n\n          for (const propName in json.props) {\n            if (json.props[propName].propertyType === 'reactive') {\n              const getter = types.memberExpression(\n                types.identifier('props'),\n                mapSignal.getter(propName),\n              );\n              const setter = mapSignal.setter\n                ? types.memberExpression(types.identifier('props'), mapSignal.setter(propName))\n                : undefined;\n\n              nodeMaps.push({\n                from: types.memberExpression(\n                  types.memberExpression(types.identifier('props'), types.identifier(propName)),\n                  types.identifier('value'),\n                ),\n                to: getter,\n                setTo: setter,\n              });\n\n              nodeMaps.push({\n                from: types.optionalMemberExpression(\n                  types.memberExpression(types.identifier('props'), types.identifier(propName)),\n                  types.identifier('value'),\n                  false,\n                  true,\n                ),\n                to: getter,\n                setTo: setter,\n              });\n            }\n          }\n\n          for (const propName in json.context.get) {\n            if (json.context.get[propName].type === 'reactive') {\n              nodeMaps.push({\n                from: types.memberExpression(types.identifier(propName), types.identifier('value')),\n                to: mapSignal.getter(propName),\n                setTo: mapSignal.setter ? mapSignal.setter(propName) : undefined,\n              });\n            }\n          }\n\n          for (const propName in json.state) {\n            if (json.state[propName]?.propertyType === 'reactive') {\n              const to = types.memberExpression(\n                types.identifier('state'),\n                mapSignal.getter(propName),\n              );\n              const setTO = mapSignal.setter ? mapSignal.setter(propName) : undefined;\n\n              nodeMaps.push({\n                from: types.memberExpression(\n                  types.memberExpression(types.identifier('state'), types.identifier(propName)),\n                  types.identifier('value'),\n                ),\n                to: to,\n                setTo: setTO,\n              });\n\n              nodeMaps.push({\n                from: types.optionalMemberExpression(\n                  types.memberExpression(types.identifier('state'), types.identifier(propName)),\n                  types.identifier('value'),\n                  false,\n                  true,\n                ),\n                to: to,\n                setTo: setTO,\n              });\n            }\n          }\n\n          const filteredNodeMaps = nodeMaps.filter(\n            (\n              x,\n            ): x is {\n              from: types.Node;\n              to: types.Node;\n              setTo: types.Expression;\n            } => checkIsDefined(x.setTo),\n          );\n          // we run state-setter replacement first, because otherwise the other one will catch it.\n          if (filteredNodeMaps.length) {\n            code = replaceSignalSetters({ code, nodeMaps: filteredNodeMaps });\n          }\n\n          if (nodeMaps.length) {\n            code = replaceNodes({ code, nodeMaps });\n          }\n\n          return code;\n        })(x);\n      },\n    },\n  });\n"
  },
  {
    "path": "packages/core/src/helpers/plugins/process-target-blocks.ts",
    "content": "import {\n  getIdFromMatch,\n  USE_TARGET_MAGIC_REGEX,\n  USE_TARGET_MAGIC_STRING,\n} from '../../parsers/jsx/hooks/use-target';\nimport { Targets } from '../../targets';\nimport { TargetBlockDefinition } from '../../types/mitosis-component';\nimport { MitosisPlugin } from '../../types/plugins';\nimport { createSingleBinding } from '../bindings';\nimport { createCodeProcessorPlugin } from './process-code';\n\nconst getBlockForTarget = ({\n  target,\n  targetBlock,\n}: {\n  target: Targets;\n  targetBlock: TargetBlockDefinition;\n}) => {\n  switch (target) {\n    default:\n      return targetBlock[target] || targetBlock['default'];\n  }\n};\n\n/**\n * Processes `useTarget()` blocks for a given target.\n */\nexport const processTargetBlocks = (target: Targets): MitosisPlugin => {\n  const plugin = createCodeProcessorPlugin(\n    (codeType, json, node) => (code, key) => {\n      if (codeType === 'properties') {\n        const matches = code.includes(USE_TARGET_MAGIC_STRING);\n        const property = node?.properties[key];\n        if (!matches || !property) return code;\n\n        node.bindings[key] = createSingleBinding({ code: `\"${property}\"` });\n\n        return () => {\n          delete node.properties[key];\n        };\n      }\n\n      const matches = code.match(USE_TARGET_MAGIC_REGEX);\n\n      if (!matches) return code;\n      for (const m of matches) {\n        // get the captured ID of the target block\n        const targetId = getIdFromMatch(m);\n\n        if (!targetId) continue;\n\n        // find the target block in the component, or the default target block\n        const targetBlock = json.targetBlocks?.[targetId];\n\n        if (!targetBlock) {\n          throw new Error(`Could not find \\`useTarget()\\` value in \"${json.name}\".`);\n        }\n\n        const block = getBlockForTarget({ target, targetBlock });\n\n        if (!block) {\n          if (targetBlock.settings.requiresDefault) {\n            throw new Error(\n              `Could not find \\`useTarget()\\` value in \"${json.name}\" for target \"${target}\", and no default value was set.`,\n            );\n          } else {\n            // if we don't need a default, then that means we allow for nothing to be injected, e.g. when we are in a function body.\n            code = code.replaceAll(m, '');\n            continue;\n          }\n        }\n\n        code = code.replaceAll(m, block.code);\n      }\n\n      return code;\n    },\n    { processProperties: true },\n  );\n\n  return () => ({ json: { pre: plugin } });\n};\n"
  },
  {
    "path": "packages/core/src/helpers/process-http-requests.ts",
    "content": "import { MitosisComponent } from '..';\n\nexport function processHttpRequests(json: MitosisComponent) {\n  const httpRequests = json?.meta?.useMetadata?.httpRequests;\n\n  if (httpRequests) {\n    for (const key in httpRequests) {\n      if (!json.state[key]) {\n        json.state[key] = { code: 'null', type: 'property', propertyType: 'normal' };\n      }\n\n      const value = httpRequests[key];\n\n      // TODO: unravel our proxy. aka parse out methods, header, etc\n      // and remove our proxy from being used anymore\n      json.hooks.onMount.push({\n        code: `\n        fetch(\"${value}\").then(res => res.json()).then(result => {\n          state.${key} = result;\n        })\n        `,\n      });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/helpers/remove-surrounding-block.test.ts",
    "content": "import { removeSurroundingBlock } from './remove-surrounding-block';\n\ndescribe('removeSurroundingBlock', () => {\n  test('It removes the surrounding wrapper block', () => {\n    const output = removeSurroundingBlock('{ const foo = \"bar\" }');\n    expect(output).toBe(' const foo = \"bar\" ');\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/remove-surrounding-block.ts",
    "content": "/**\n * Remove the surrounding block for a function, for instance\n *\n * `{ const foo = \"bar\" }` -> `const foo = \"bar\"`\n */\nexport function removeSurroundingBlock(code: string) {\n  let str = code;\n  // Object literal like { foo: ... } should not be unwrapped\n  if (str.match(/^\\s*{\\s*[a-z0-9]+:/i)) {\n    return str;\n  }\n\n  // Empty object literal\n  if (str.replace(/\\s+/g, '') === '{}') {\n    return str;\n  }\n\n  const bracesRegex = /^\\s*\\{([\\s\\S]+)\\}\\s*$/;\n  if (bracesRegex.test(str)) {\n    return str.replace(bracesRegex, '$1');\n  }\n  return str;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/render-imports.test.ts",
    "content": "import { renderImport } from './render-imports';\n\ndescribe('renderImport', () => {\n  test('Adds correct extension to component import', () => {\n    const data = [\n      {\n        imports: { RenderBlocks: 'default' },\n        path: '../render-blocks.lite',\n      },\n    ];\n    const output = renderImport({\n      theImport: data[0],\n      target: 'vue',\n      asyncComponentImports: false,\n    });\n    expect(output).toMatchSnapshot();\n  });\n\n  test('Adds correctly a side-effect import', () => {\n    const data = [\n      {\n        imports: {},\n        path: '../render-blocks.scss',\n      },\n    ];\n    const output = renderImport({\n      theImport: data[0],\n      target: 'react',\n      asyncComponentImports: false,\n    });\n    expect(output).toEqual(\"import '../render-blocks.scss';\");\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/render-imports.ts",
    "content": "import { Target } from '../types/config';\nimport { MitosisComponent, MitosisImport } from '../types/mitosis-component';\nimport {\n  COMPONENT_IMPORT_EXTENSIONS,\n  INPUT_EXTENSION_REGEX,\n  getComponentFileExtensionForTarget,\n} from './component-file-extensions';\n\nconst DEFAULT_IMPORT = 'default';\nconst STAR_IMPORT = '*';\n\nconst getStarImport = ({ theImport }: { theImport: MitosisImport }): string | null => {\n  for (const key in theImport.imports) {\n    const value = theImport.imports[key];\n    if (value === STAR_IMPORT) {\n      return key;\n    }\n  }\n  return null;\n};\nconst getDefaultImport = ({ theImport }: { theImport: MitosisImport }): string | null => {\n  for (const key in theImport.imports) {\n    const value = theImport.imports[key];\n    if (value === DEFAULT_IMPORT) {\n      return key;\n    }\n  }\n  return null;\n};\n\nconst CONTEXT_IMPORTS = ['context.lite', 'context.lite.ts', 'context.lite.js'];\nconst checkIsContextImport = (theImport: MitosisImport) =>\n  CONTEXT_IMPORTS.some((contextPath) => theImport.path.endsWith(contextPath));\n\nexport const checkIsComponentImport = (theImport: MitosisImport) =>\n  !checkIsContextImport(theImport) &&\n  COMPONENT_IMPORT_EXTENSIONS.some((contextPath) => theImport.path.endsWith(contextPath));\n\nexport const transformImportPath = ({\n  theImport,\n  target,\n  preserveFileExtensions,\n  explicitImportFileExtension,\n}: {\n  theImport: MitosisImport;\n  target: Target;\n  preserveFileExtensions: boolean;\n  explicitImportFileExtension: boolean;\n}) => {\n  // We need to drop the `.lite` from context files, because the context generator does so as well.\n  if (checkIsContextImport(theImport)) {\n    let path = theImport.path;\n    CONTEXT_IMPORTS.forEach((contextPath) => {\n      if (path.endsWith(contextPath)) {\n        path = path.replace(contextPath, 'context.js');\n      }\n    });\n    return path;\n  }\n\n  if (preserveFileExtensions) return theImport.path;\n\n  if (checkIsComponentImport(theImport)) {\n    return theImport.path.replace(\n      INPUT_EXTENSION_REGEX,\n      getComponentFileExtensionForTarget({ target, type: 'import', explicitImportFileExtension }),\n    );\n  }\n\n  return theImport.path;\n};\n\nconst getNamedImports = ({ theImport }: { theImport: MitosisImport }) => {\n  const namedImports = Object.entries(theImport.imports)\n    .filter(([, value]) => ![DEFAULT_IMPORT, STAR_IMPORT].includes(value!))\n    .map(([key, value]) => {\n      return key !== value ? `${value} as ${key}` : value;\n    });\n\n  if (namedImports.length > 0) {\n    return `{ ${namedImports.join(', ')} }`;\n  } else {\n    return null;\n  }\n};\n\nexport interface ImportValues {\n  starImport: string | null;\n  defaultImport: string | null;\n  namedImports: string | null;\n}\n\nconst getImportedValues = ({ theImport }: { theImport: MitosisImport }): ImportValues => {\n  const starImport = getStarImport({ theImport });\n  const defaultImport = getDefaultImport({ theImport });\n  const namedImports = getNamedImports({ theImport });\n\n  return { starImport, defaultImport, namedImports };\n};\n\nconst getImportValue = ({ defaultImport, namedImports, starImport }: ImportValues) => {\n  if (starImport) {\n    return ` * as ${starImport} `;\n  } else {\n    return [defaultImport, namedImports].filter(Boolean).join(', ');\n  }\n};\n\ntype ImportArgs = {\n  target: Target;\n  asyncComponentImports: boolean;\n  preserveFileExtensions?: boolean;\n  component?: MitosisComponent | null | undefined;\n\n  /**\n   * This is only used by Angular generator, and will be deprecated in the future.\n   */\n  importMapper?: Function | null | undefined;\n  /**\n   * This is only used by Angular generator, and will be deprecated in the future.\n   */\n  explicitImportFileExtension?: boolean;\n  /**\n   * This is only used by Angular generator, and will be deprecated in the future.\n   */\n  componentsUsed?: string[];\n};\n\nexport const renderImport = ({\n  theImport,\n  target,\n  asyncComponentImports,\n  preserveFileExtensions = false,\n  component = undefined,\n  componentsUsed = [],\n  importMapper,\n  explicitImportFileExtension = false,\n}: ImportArgs & { theImport: MitosisImport }): string => {\n  const importedValues = getImportedValues({ theImport });\n\n  const path = transformImportPath({\n    theImport,\n    target,\n    preserveFileExtensions,\n    explicitImportFileExtension,\n  });\n  const importValue = getImportValue(importedValues);\n\n  const isComponentImport = checkIsComponentImport(theImport);\n  const shouldBeAsyncImport = asyncComponentImports && isComponentImport;\n  const isTypeImport = theImport.importKind === 'type';\n\n  // For lit (components) we just want to do a plain import\n  // https://lit.dev/docs/components/rendering/#composing-templates\n  if (isComponentImport && target === 'lit') {\n    return `import '${path}';`;\n  }\n\n  if (shouldBeAsyncImport) {\n    const isVueImport = target === 'vue';\n    if (isVueImport && importedValues.namedImports) {\n      console.warn(\n        'Vue: Async Component imports cannot include named imports. Dropping async import. This might break your code.',\n      );\n    } else {\n      return `const ${importValue} = () => import('${path}')\n      .then(x => x.default)\n      .catch(err => {\n        console.error('Error while attempting to dynamically import component ${importValue} at ${path}', err);\n        throw err;\n      });`;\n    }\n  }\n\n  if (importMapper) {\n    const importMapperResult = importMapper(component, theImport, importedValues, componentsUsed);\n    // If import mapper has no result we skip this\n    if (importMapperResult) {\n      return importMapperResult;\n    }\n  }\n\n  return importValue\n    ? `import ${isTypeImport ? 'type' : ''} ${importValue} from '${path}';`\n    : `import '${path}';`;\n};\n\nconst renderImports = ({\n  imports,\n  target,\n  asyncComponentImports,\n  excludeMitosisComponents,\n  preserveFileExtensions = false,\n  component,\n  componentsUsed,\n  importMapper,\n  explicitImportFileExtension,\n}: ImportArgs & {\n  imports: MitosisImport[];\n  excludeMitosisComponents?: boolean;\n}): string =>\n  imports\n    .filter((theImport) => {\n      if (\n        // Remove compile away components\n        theImport.path === '@builder.io/components' ||\n        // TODO: Mitosis output needs this\n        theImport.path.startsWith('@builder.io/mitosis')\n      ) {\n        return false;\n      } else if (excludeMitosisComponents && theImport.path.includes('.lite')) {\n        return false;\n      } else {\n        return true;\n      }\n    })\n    .map((theImport) =>\n      renderImport({\n        theImport,\n        target,\n        asyncComponentImports,\n        preserveFileExtensions,\n        component,\n        componentsUsed,\n        importMapper,\n        explicitImportFileExtension,\n      }),\n    )\n    .join('\\n');\n\nexport const renderPreComponent = ({\n  component,\n  target,\n  excludeMitosisComponents,\n  asyncComponentImports = false,\n  preserveFileExtensions = false,\n  componentsUsed = [],\n  importMapper,\n  explicitImportFileExtension = false,\n  excludeExportAndLocal = false,\n}: Omit<ImportArgs, 'explicitImportFileExtension' | 'asyncComponentImports'> &\n  Partial<Pick<ImportArgs, 'explicitImportFileExtension' | 'asyncComponentImports'>> & {\n    component: MitosisComponent;\n    target: Target;\n    excludeMitosisComponents?: boolean;\n    excludeExportAndLocal?: boolean;\n  }): string => `\n    ${renderImports({\n      imports: component.imports,\n      target,\n      asyncComponentImports,\n      excludeMitosisComponents,\n      preserveFileExtensions,\n      component,\n      componentsUsed,\n      importMapper,\n      explicitImportFileExtension,\n    })}\n    ${excludeExportAndLocal ? '' : renderExportAndLocal(component)}\n    ${component.hooks.preComponent?.code || ''}\n  `;\n\nconst renderExportAndLocal = (component: MitosisComponent): string => {\n  return Object.keys(component.exports || {})\n    .map((key) => component.exports![key].code)\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/helpers/replace-identifiers.test.ts",
    "content": "import { types } from '@babel/core';\nimport { replaceIdentifiers, replaceNodes } from './replace-identifiers';\n\ntype Spec = Parameters<typeof replaceIdentifiers>[0];\n\nconst CODE_BLOCK = `\nfunction updateThing() {\n  state.thing1 = props.thing2 + 123;\n\n  state?.fn(props?.abc.foo);\n\n  const x = someRandomObj.state.foo\n  const y = someRandomObj.props.state.foo\n}\n`;\n\nconst TEST_SPECS: Spec[] = [\n  {\n    from: 'props',\n    to: '$SPECIAL',\n    code: CODE_BLOCK,\n  },\n  {\n    from: ['props', 'state'],\n    to: null,\n    code: CODE_BLOCK,\n  },\n  {\n    from: ['props', 'state'],\n    to: 'this',\n    code: CODE_BLOCK,\n  },\n  {\n    code: '!state.useLazyLoading() || load',\n    from: ['scrollListener', 'imageLoaded', 'setLoaded', 'useLazyLoading', 'isBrowser', 'load'],\n    to: (name) => `state.${name}`,\n  },\n  {\n    code: `state.name = 'PatrickJS onInit' + props.hi;`,\n    from: ['props'],\n    to: (name) => `this.${name}`,\n  },\n  {\n    code: 'state.lowerCaseName()',\n    from: 'state',\n    to: (name) => (name === 'children' ? '$$slots.default' : name),\n  },\n  {\n    code: `\n    const x = {\n      foo: bar,\n      test: 123,\n    }\n\n    const foo = x.foo;\n\n    const y = {\n      l: x.foo,\n      m: foo\n    }\n\n    const bar = foo;\n    `,\n    from: ['foo', 'test'],\n    to: (name) => `${name}.value`,\n  },\n];\n\ndescribe('replaceIdentifiers', () => {\n  TEST_SPECS.forEach((args, index) => {\n    test(`Check #${index}`, () => {\n      const output = replaceIdentifiers(args);\n      expect(output).toMatchSnapshot();\n    });\n  });\n});\n\ndescribe('newReplacer', () => {\n  test('Check #1', () => {\n    const code = `\n  const [childrenContext] = useState(\n    useTarget({\n      reactNative: {\n        apiKey: props.context.value.apiKey,\n        apiVersion: props.context.value.apiVersion,\n        localState: props.context.value.localState,\n        rootState: props.context.value.rootState,\n        rootSetState: props.context.value.rootSetState,\n        content: props.context.value.content,\n        context: props.context.value.context,\n        registeredComponents: props.context.value.registeredComponents,\n        inheritedStyles: extractTextStyles(\n          getReactNativeBlockStyles({\n            block: state.useBlock,\n            context: props.context.value,\n            blockStyles: state.attributes.style,\n          })\n        ),\n      },\n      default: props.context.value,\n    }),\n    { reactive: true }\n  );\n`;\n    const thing = types.memberExpression(\n      types.memberExpression(types.identifier('props'), types.identifier('context')),\n      types.identifier('value'),\n    );\n\n    const to = types.memberExpression(types.identifier('props'), types.identifier('$context'));\n    const output = replaceNodes({ code, nodeMaps: [{ from: thing, to }] });\n    expect(output).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/replace-identifiers.ts",
    "content": "import { types } from '@babel/core';\nimport generate from '@babel/generator';\nimport { pipe } from 'fp-ts/lib/function';\nimport { babelTransformExpression } from './babel-transform';\n\n/**\n * Type hack.\n *\n * We want to augment the `BaseNode` interface to include a `_builder_meta` property but couldn't get\n * `yarn patch-package` to cooperate with us. So we're doing it this way.\n */\ntype AllowMeta<T = types.Node> = T & {\n  _builder_meta?: {\n    newlyGenerated: boolean;\n  };\n};\n\nexport type ReplaceTo =\n  | string\n  | ((accessedProperty: string, matchedIdentifier: string) => string)\n  | null;\n\ntype ReplaceArgs = {\n  code: string;\n  from: string | string[];\n  to: ReplaceTo;\n};\n\nexport type NodeMap = {\n  from: types.Node;\n  condition?: (path: babel.NodePath<types.Node>) => boolean;\n  to: types.Node;\n};\n\n/**\n * Given a `to` function given by the user, figure out the best argument to provide to the `to` function.\n * This function makes a best guess based on the AST structure it's dealing with.\n */\nconst getToParam = (\n  path: babel.NodePath<types.Identifier | types.MemberExpression | types.OptionalMemberExpression>,\n): string => {\n  if (types.isMemberExpression(path.node) || types.isOptionalMemberExpression(path.node)) {\n    if (types.isIdentifier(path.node.property)) {\n      // if simple member expression e.g. `props.foo`, returns `foo`\n      const propertyName = path.node.property.name;\n      return propertyName;\n    } else {\n      // if nested member expression e.g. `props.foo.bar.baz`, returns `foo.bar.baz`\n      const x = generate(path.node.property).code;\n      return x;\n    }\n  } else {\n    // if naked identifier e.g. `foo`, returns `foo`\n    const nodeName = path.node.name;\n    return nodeName;\n  }\n};\n\nconst _replaceIdentifiers = (\n  path: babel.NodePath<types.MemberExpression | types.OptionalMemberExpression | types.Identifier>,\n  { from, to }: Pick<ReplaceArgs, 'from' | 'to'>,\n) => {\n  const memberExpressionObject = types.isIdentifier(path.node) ? path.node : path.node.object;\n  const normalizedFrom = Array.isArray(from) ? from : [from];\n\n  if (\n    !types.isIdentifier(memberExpressionObject) ||\n    (path.node as AllowMeta)?._builder_meta?.newlyGenerated\n  ) {\n    return;\n  }\n\n  const matchesFrom = normalizedFrom.includes(memberExpressionObject.name);\n\n  if (matchesFrom) {\n    if (to) {\n      // `props.foo` to `state`, e.g. `state.foo`\n      if (typeof to === 'string') {\n        const cleanedIdentifier = pipe(\n          // Remove trailing `.` if it exists in the user-provided string, as the dot is generated\n          // by babel from the AST\n          to.endsWith('.') ? to.substring(0, to.length - 1) : to,\n          types.identifier,\n        );\n\n        if (types.isIdentifier(path.node)) {\n          path.replaceWith(cleanedIdentifier);\n        } else {\n          path.replaceWith(types.memberExpression(cleanedIdentifier, path.node.property));\n        }\n\n        // `props.foo` to (name) => `state.${name}.bar`, e.g. `state.foo.bar`\n      } else {\n        try {\n          const newMemberExpression = pipe(\n            getToParam(path),\n            (x) => to(x, memberExpressionObject.name),\n            (expression) => {\n              const [head, ...tail] = expression.split('.');\n              return [head, tail.join('.')];\n            },\n            ([obj, prop]) => {\n              const objIdentifier = types.identifier(obj);\n              if (prop === '') {\n                return objIdentifier;\n              } else {\n                return types.memberExpression(objIdentifier, types.identifier(prop));\n              }\n            },\n          );\n\n          /**\n           * If both `path` and `newMemberExpression` are equal nodes, do nothing.\n           * This is to prevent infinite loops when the user-provided `to` function returns the same identifier.\n           *\n           * The infinite loop probably happens because we end up traversing the new `Identifier` node again?\n           */\n          if (generate(path.node).code === generate(newMemberExpression).code) {\n            return;\n          }\n          (newMemberExpression as AllowMeta)._builder_meta = { newlyGenerated: true };\n          path.replaceWith(newMemberExpression);\n        } catch (err) {\n          console.debug('Could not replace node.');\n          // throw err;\n        }\n      }\n    } else {\n      if (!types.isIdentifier(path.node)) {\n        // if we're looking at a member expression, e.g. `props.foo` and no `to` was provided, then we want to strip out\n        // the identifier and end up with `foo`. So we replace the member expression with just its `property` value.\n        path.replaceWith(path.node.property);\n      }\n    }\n  }\n};\n\n/**\n * @deprecated Use `replaceNodes` instead.\n */\nexport const replaceIdentifiers = ({ code, from, to }: ReplaceArgs) => {\n  try {\n    return pipe(\n      babelTransformExpression(code, {\n        MemberExpression(path) {\n          _replaceIdentifiers(path, { from, to });\n        },\n        OptionalMemberExpression(path) {\n          _replaceIdentifiers(path, { from, to });\n        },\n        Identifier(path) {\n          // we only want to ignore certain identifiers:\n          if (\n            // (optional) member expressions are already handled in other visitors\n            !types.isMemberExpression(path.parent) &&\n            !types.isOptionalMemberExpression(path.parent) &&\n            // function declaration identifiers shouldn't be transformed\n            !types.isFunctionDeclaration(path.parent) &&\n            // variable declaration identifiers shouldn't be transformed\n            // !(types.isVariableDeclarator(path.parent) && path.parent.id === path.node)\n            // object -> { detail: { state: 'something' } } shouldn't be transformed to { detail: { this: 'something' } }\n            !types.isObjectProperty(path.parent)\n          ) {\n            _replaceIdentifiers(path, { from, to });\n          }\n        },\n      }),\n      // merely running `babel.transform` will add spaces around the code, even if we don't end up replacing anything.\n      // we have some other code downstream that cannot have untrimmed spaces, so we need to trim the output.\n      (code) => code.trim(),\n    );\n  } catch (err) {\n    throw err;\n  }\n};\n\nexport const replaceStateIdentifier = (to: ReplaceArgs['to']) => (code: string) =>\n  replaceIdentifiers({ code, from: 'state', to });\n\nexport const replacePropsIdentifier = (to: ReplaceArgs['to']) => (code: string) =>\n  replaceIdentifiers({ code, from: 'props', to });\n\nconst isNewlyGenerated = (node: types.Node) => (node as AllowMeta)?._builder_meta?.newlyGenerated;\n\n/**\n * Replaces all instances of a Babel AST Node with a new Node within a code string.\n * Uses `generate()` to convert the Node to a string and compare them.\n */\nexport const replaceNodes = ({ code, nodeMaps }: { code: string; nodeMaps: NodeMap[] }) => {\n  const searchAndReplace = (path: babel.NodePath<types.Node>) => {\n    if (isNewlyGenerated(path.node) || isNewlyGenerated(path.parent)) return;\n\n    for (const { from, to, condition } of nodeMaps) {\n      if (isNewlyGenerated(path.node) || isNewlyGenerated(path.parent)) return;\n      // if (path.node.type !== from.type) return;\n\n      const matchesCondition = condition ? condition(path) : true;\n\n      if (generate(path.node).code === generate(from).code && matchesCondition) {\n        const x = types.cloneNode(to);\n        (x as AllowMeta)._builder_meta = { newlyGenerated: true };\n        try {\n          path.replaceWith(x);\n        } catch (err) {\n          console.log('error replacing', {\n            code,\n            orig: generate(path.node).code,\n            to: generate(x).code,\n          });\n          // throw err;\n        }\n      }\n    }\n  };\n\n  return babelTransformExpression(code, {\n    ThisExpression(path) {\n      searchAndReplace(path);\n    },\n    MemberExpression(path) {\n      searchAndReplace(path);\n    },\n    Identifier(path) {\n      searchAndReplace(path);\n    },\n    OptionalMemberExpression(path) {\n      searchAndReplace(path);\n    },\n  });\n};\n"
  },
  {
    "path": "packages/core/src/helpers/replace-new-lines-in-strings.ts",
    "content": "export function stripNewlinesInStrings(string: string) {\n  let inString: string | null = null;\n  return string\n    .split('')\n    .map((char, index) => {\n      if (inString) {\n        if (char === '\\n') {\n          return ' ';\n        }\n      }\n\n      // Prior char is escape char and the char before that is not escaping it\n      const isEscaped = string[index - 1] === '\\\\' && string[index - 2] !== '\\\\';\n\n      if (!inString && (char === '\"' || char === \"'\") && !isEscaped) {\n        inString = char;\n      } else if (inString && char === inString && !isEscaped) {\n        inString = null;\n      }\n\n      return char;\n    })\n    .join('');\n}\n"
  },
  {
    "path": "packages/core/src/helpers/set.test.ts",
    "content": "import { set } from './set.js';\n\ntest('can shallow set a property', () => {\n  const obj = { foo: 'bar' };\n  set(obj, 'foo', 'baz');\n  expect(obj.foo).toBe('baz');\n});\n\ntest('can deeply set a property', () => {\n  const obj = { foo: 'bar' };\n  set(obj, 'foo.bar', 'baz');\n  expect((obj.foo as any).bar).toBe('baz');\n});\n\ntest('can deeply create arrays', () => {\n  const obj = { foo: 'bar' };\n  set(obj, 'foo.bar.0', 'hi');\n  expect((obj.foo as any).bar).toEqual(['hi']);\n});\n"
  },
  {
    "path": "packages/core/src/helpers/set.ts",
    "content": "/**\n * Minimal implementation of lodash's _.set\n * https://lodash.com/docs/4.17.15#set\n *\n * See ./set.test.ts for usage examples\n */\nexport const set = (obj: any, _path: string | string[], value: any) => {\n  if (Object(obj) !== obj) {\n    return obj;\n  }\n  const path: string[] = Array.isArray(_path)\n    ? _path\n    : (_path.toString().match(/[^.[\\]]+/g) as string[]);\n\n  path\n    .slice(0, -1)\n    .reduce(\n      (a, c, i) =>\n        Object(a[c]) === a[c]\n          ? a[c]\n          : (a[c] = Math.abs(Number(path[i + 1])) >> 0 === +path[i + 1] ? [] : {}),\n      obj,\n    )[path[path.length - 1]] = value;\n  return obj;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/signals/index.ts",
    "content": "export * from './signals';\n"
  },
  {
    "path": "packages/core/src/helpers/signals/signals.ts",
    "content": "import { NodePath, types } from '@babel/core';\nimport { pipe } from 'fp-ts/lib/function';\nimport { babelTransformExpression } from '../../helpers/babel-transform';\nimport { Target } from '../../types/config';\nimport { mapImportDeclarationToMitosisImport } from '../mitosis-imports';\n\nconst getSignalMappingForTarget = (target: Target) => {\n  switch (target) {\n    case 'svelte':\n      const importDeclaration = types.importDeclaration(\n        [types.importSpecifier(types.identifier('Writable'), types.identifier('Writable'))],\n        types.stringLiteral('svelte/store'),\n      );\n      importDeclaration.importKind = 'type';\n\n      return {\n        getTypeReference: (generics: types.TSType[] = []) =>\n          types.tsTypeReference(\n            types.identifier('Writable'),\n            types.tsTypeParameterInstantiation(generics),\n          ),\n        importDeclaration,\n      };\n    default:\n      return undefined;\n  }\n};\n\nexport const getSignalMitosisImportForTarget = (target: Target) => {\n  const signalType = getSignalMappingForTarget(target);\n  if (!signalType) {\n    return undefined;\n  }\n  return mapImportDeclarationToMitosisImport(signalType.importDeclaration);\n};\n\nexport const getSignalImportName = (code: string): string | undefined => {\n  let foundSignalUsage = false;\n  let signalImportName: string | undefined = undefined;\n\n  babelTransformExpression(code, {\n    ImportSpecifier(path) {\n      if (types.isIdentifier(path.node.imported) && path.node.imported.name === 'Signal') {\n        if (\n          path.parentPath.isImportDeclaration() &&\n          path.parentPath.node.source.value === '@builder.io/mitosis'\n        ) {\n          /**\n           * in case the import is aliased, we need to use the local name,\n           * e.g. `import { Signal as MySignal } from '@builder.io/mitosis'`\n           */\n          signalImportName = path.node.local.name;\n          path.stop();\n        }\n      }\n    },\n  });\n\n  if (!signalImportName) {\n    return undefined;\n  }\n\n  babelTransformExpression(code, {\n    TSTypeReference(path) {\n      if (types.isIdentifier(path.node.typeName) && path.node.typeName.name === signalImportName) {\n        foundSignalUsage = true;\n        path.stop();\n      }\n    },\n  });\n\n  return foundSignalUsage ? signalImportName : undefined;\n};\n\nconst addSignalImport = ({ code, target }: { code: string; target: Target }) => {\n  const signalType = getSignalMappingForTarget(target);\n\n  if (!signalType) {\n    return code;\n  }\n\n  return babelTransformExpression(code, {\n    Program(path) {\n      path.node.body.unshift(signalType.importDeclaration);\n    },\n  });\n};\n/**\n * Finds all `Signal` types and replaces them with the correct type for the given target.\n * e.g. `Signal<string>` becomes `Writable<string>` for Svelte.\n */\nexport const mapSignalType = ({\n  code,\n  target,\n  signalImportName = getSignalImportName(code),\n}: {\n  code: string;\n  target: Target;\n  signalImportName?: string;\n}) => {\n  const signalType = getSignalMappingForTarget(target);\n\n  const map = (path: NodePath<types.TSTypeReference>) => {\n    if (types.isIdentifier(path.node.typeName) && path.node.typeName.name === signalImportName) {\n      const params = path.node.typeParameters?.params || [];\n\n      const newType = signalType?.getTypeReference\n        ? signalType.getTypeReference(params)\n        : // if no mapping exists, drop `Signal` and just use the generic type passed to `Signal` as-is.\n          params[0];\n\n      path.replaceWith(newType);\n    }\n  };\n\n  return babelTransformExpression(code, {\n    TSTypeReference(path) {\n      map(path);\n    },\n  });\n};\n\n/**\n * Processes the `Signal` type usage in a plain TS file:\n * - Finds the `Signal` import name\n * - Maps the `Signal` type to the target's equivalent\n * - Adds the equivalent of the `Signal` import to the file\n */\nexport const mapSignalTypeInTSFile = ({ code, target }: { code: string; target: Target }) => {\n  const signalImportName = getSignalImportName(code);\n\n  if (!signalImportName) {\n    return code;\n  }\n\n  return pipe(mapSignalType({ target, code, signalImportName }), (code) =>\n    addSignalImport({ code, target }),\n  );\n};\n"
  },
  {
    "path": "packages/core/src/helpers/slots.ts",
    "content": "import { types } from '@babel/core';\nimport { pipe } from 'fp-ts/function';\nimport { kebabCase } from 'lodash';\nimport { babelTransformExpression } from './babel-transform';\n\nconst SLOT_PREFIX = 'slot';\nexport type SlotMapper = (slotName: string) => string;\n\nexport const isSlotProperty = (key: string, slotPrefix: string = SLOT_PREFIX): boolean =>\n  key.startsWith(slotPrefix);\n\nexport const stripSlotPrefix = (key: string, slotPrefix: string = SLOT_PREFIX): string =>\n  isSlotProperty(key, slotPrefix) ? key.substring(slotPrefix.length) : key;\n\nexport const toKebabSlot = (key: string, slotPrefix: string = SLOT_PREFIX): string =>\n  pipe(stripSlotPrefix(key, slotPrefix), kebabCase);\n\nexport function replaceSlotsInString(code: string, mapper: SlotMapper) {\n  return babelTransformExpression(code, {\n    Identifier(path: babel.NodePath<babel.types.Identifier>) {\n      const name = path.node.name;\n      const isSlot = isSlotProperty(name);\n      if (isSlot) {\n        path.replaceWith(types.identifier(mapper(stripSlotPrefix(name).toLowerCase())));\n      }\n    },\n  });\n}\n"
  },
  {
    "path": "packages/core/src/helpers/state.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\n\nexport const checkHasState = (component: MitosisComponent) =>\n  Boolean(Object.keys(component.state).length);\n"
  },
  {
    "path": "packages/core/src/helpers/strip-meta-properties.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport const stripMetaProperties = (json: MitosisComponent) => {\n  traverse(json).forEach((item) => {\n    if (isMitosisNode(item)) {\n      for (const property in item.properties) {\n        if (property.startsWith('$')) {\n          delete item.properties[property];\n        }\n      }\n      for (const property in item.bindings) {\n        if (property.startsWith('$')) {\n          delete item.bindings[property];\n        }\n      }\n    }\n  });\n\n  return json;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/strip-state-and-props-refs.ts",
    "content": "import { replacePropsIdentifier, replaceStateIdentifier } from './replace-identifiers';\n\nexport type StripStateAndPropsRefsOptions = {\n  replaceWith?: string | ((name: string) => string);\n  includeProps?: boolean;\n  includeState?: boolean;\n};\n\nconst DEFAULT_OPTIONS: Required<StripStateAndPropsRefsOptions> = {\n  replaceWith: '',\n  includeProps: true,\n  includeState: true,\n};\n\n/**\n * Do not use this anywhere. We are migrating to AST transforms and should avoid Regex String.replace() as they are\n * very brittle.\n *\n * If you need to re-use this, re-create it as an AST tranform first.\n */\nexport const DO_NOT_USE_CONTEXT_VARS_TRANSFORMS = ({\n  code,\n  contextVars,\n  context,\n}: {\n  code: string;\n  contextVars?: string[];\n  context: string;\n}): string => {\n  contextVars?.forEach((_var) => {\n    code = code.replace(\n      // determine expression edge cases - https://regex101.com/r/iNcTSM/1\n      new RegExp('(^|\\\\n|\\\\r| |;|\\\\(|\\\\[|!)' + _var + '(\\\\?\\\\.|\\\\.|\\\\(| |;|\\\\)|$)', 'g'),\n      '$1' + context + _var + '$2',\n    );\n  });\n  return code;\n};\n\nexport type DO_NOT_USE_ARGS = {\n  outputVars?: string[];\n  domRefs?: string[];\n  stateVars?: string[];\n  contextVars?: string[];\n  context?: string;\n};\n\n/**\n * Do not use these anywhere. We are migrating to AST transforms and should avoid Regex String.replace() as they are\n * very brittle.\n *\n * If you need to re-use a part of this, re-create it as an AST tranform first.\n */\nexport const DO_NOT_USE_VARS_TRANSFORMS = (\n  newCode: string,\n  { context = 'this.', domRefs, outputVars, stateVars, contextVars }: DO_NOT_USE_ARGS,\n): string => {\n  newCode = DO_NOT_USE_CONTEXT_VARS_TRANSFORMS({ code: newCode, context, contextVars });\n\n  outputVars?.forEach((_var) => {\n    // determine expression edge cases onMessage( to this.onMessage.emit(\n    const regexp = '(^|\\\\s|;|\\\\()(props\\\\.?)' + _var + '\\\\(';\n    const replacer = '$1' + context + _var + '.emit(';\n    newCode = newCode.replace(new RegExp(regexp, 'g'), replacer);\n  });\n\n  const matchPropertyAccessorsArguments = '\\\\?\\\\.|,|\\\\.|\\\\(| |;|\\\\)|\\\\]|$'; // foo?.stuff | foo) | foo | foo] etc.\n  const matchVariableUseInClass = '^|\\\\n|\\\\r| |;|\\\\(|\\\\[|!|,'; //  foo | (foo | !foo | foo, | [foo etc.\n\n  domRefs?.forEach((_var) => {\n    newCode = newCode.replace(\n      new RegExp(`(${matchVariableUseInClass})${_var}(${matchPropertyAccessorsArguments})`, 'g'),\n      '$1' + 'this.' + _var + '$2',\n    );\n  });\n\n  stateVars?.forEach((_var) => {\n    newCode = newCode.replace(\n      /*\n        1. Skip anything that is a class variable declaration\n          myClass() {\n            stuff = 'hi'\n            foo = 'bar'  <-- in the event that formatting is off\n          }\n        2. Skip anything that is the name of a function declaration or a getter\n          stuff = function stuff() {}  or  get stuff\n        3. If the conditions are met then try to match all use cases of the class variables, see above.\n      */\n      new RegExp(\n        `(?!^${_var}|^ ${_var})(?<!function|get)(${matchVariableUseInClass})${_var}(${matchPropertyAccessorsArguments})`,\n        'g',\n      ),\n      '$1' + 'this.' + _var + '$2',\n    );\n  });\n\n  return newCode;\n};\n\n/**\n * Remove state. and props. from expressions, e.g.\n * state.foo -> foo\n *\n * This is for support for frameworks like Vue, Svelte, liquid, etc\n *\n */\nexport const stripStateAndPropsRefs = (\n  code?: string,\n  _options: StripStateAndPropsRefsOptions = {},\n): string => {\n  let newCode = code || '';\n\n  const { replaceWith, includeProps, includeState } = {\n    ...DEFAULT_OPTIONS,\n    ..._options,\n  };\n\n  if (includeProps) {\n    newCode = replacePropsIdentifier(replaceWith)(newCode);\n\n    // TODO: webcomponent edge-case\n    if (/el\\.this\\.props/.test(newCode)) {\n      newCode = newCode.replace(/el\\.this\\.props/g, 'el.props');\n    }\n  }\n  if (includeState) {\n    newCode = replaceStateIdentifier(replaceWith)(newCode);\n  }\n\n  return newCode;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/styles/__snapshots__/collect-css.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Styles > class binding and CSS are merged 1`] = `\n{\n  \"component\": {\n    \"@type\": \"@builder.io/mitosis/component\",\n    \"children\": [\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {\n          \"class\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"state.classState + ' div'\",\n            \"type\": \"single\",\n          },\n          \"style\": {\n            \"bindingType\": \"expression\",\n            \"code\": \"state.styleState\",\n            \"type\": \"single\",\n          },\n        },\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"div\",\n            \"properties\": {\n              \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n            },\n            \"scope\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"div\",\n        \"properties\": {},\n        \"scope\": {},\n      },\n    ],\n    \"context\": {\n      \"get\": {},\n      \"set\": {},\n    },\n    \"exports\": {},\n    \"hooks\": {\n      \"onEvent\": [],\n      \"onMount\": [],\n    },\n    \"imports\": [],\n    \"inputs\": [],\n    \"meta\": {},\n    \"name\": \"MyBasicComponent\",\n    \"refs\": {},\n    \"state\": {\n      \"classState\": {\n        \"code\": \"'testClassName'\",\n        \"propertyType\": \"normal\",\n        \"type\": \"property\",\n      },\n      \"styleState\": {\n        \"code\": \"{\n  color: 'red'\n}\",\n        \"propertyType\": \"normal\",\n        \"type\": \"property\",\n      },\n    },\n    \"subComponents\": [],\n  },\n  \"output\": \".div {\n  padding: 10px;\n}\",\n}\n`;\n\nexports[`Styles > class property and CSS are merged 1`] = `\n{\n  \"component\": {\n    \"@type\": \"@builder.io/mitosis/component\",\n    \"children\": [\n      {\n        \"@type\": \"@builder.io/mitosis/node\",\n        \"bindings\": {},\n        \"children\": [\n          {\n            \"@type\": \"@builder.io/mitosis/node\",\n            \"bindings\": {},\n            \"children\": [],\n            \"meta\": {},\n            \"name\": \"div\",\n            \"properties\": {\n              \"_text\": \"\n      Hello! I can run in React, Vue, Solid, or Liquid!\n    \",\n            },\n            \"scope\": {},\n          },\n        ],\n        \"meta\": {},\n        \"name\": \"div\",\n        \"properties\": {\n          \"class\": \"test div\",\n        },\n        \"scope\": {},\n      },\n    ],\n    \"context\": {\n      \"get\": {},\n      \"set\": {},\n    },\n    \"exports\": {},\n    \"hooks\": {\n      \"onEvent\": [],\n      \"onMount\": [],\n    },\n    \"imports\": [],\n    \"inputs\": [],\n    \"meta\": {},\n    \"name\": \"MyBasicComponent\",\n    \"refs\": {},\n    \"state\": {},\n    \"subComponents\": [],\n  },\n  \"output\": \".div {\n  padding: 10px;\n}\",\n}\n`;\n"
  },
  {
    "path": "packages/core/src/helpers/styles/__snapshots__/collect-styled-components.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Styled Styles > Styled class is generated properly 1`] = `\n{\n  \"output\": \"\n          const Div = styled.div\\`  color: #FFF;\n  text-align: right;\n  position: relative;\n  max-width: 537px;\n  margin: 1022px 47px 0 0;\n  font: 300 16px/25px Barlow, -apple-system, Roboto, Helvetica, sans-serif ;\n@media (max-width: 991px) {   max-width: 100%;\n  margin: 40px 10px 0 0; }\\`;\n        \",\n}\n`;\n"
  },
  {
    "path": "packages/core/src/helpers/styles/collect-css.test.ts",
    "content": "import { parseJsx } from '../../parsers/jsx';\nimport { collectCss } from './collect-css';\n\nimport classRaw from '../../__tests__/data/styles/class.raw.tsx?raw';\nimport classState from '../../__tests__/data/styles/classState.raw.tsx?raw';\n\ndescribe('Styles', () => {\n  test('class property and CSS are merged', () => {\n    const component = parseJsx(classRaw);\n    const output = collectCss(component);\n    expect({ component, output }).toMatchSnapshot();\n  });\n  test('class binding and CSS are merged', () => {\n    const component = parseJsx(classState);\n    const output = collectCss(component);\n    expect({ component, output }).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/styles/collect-css.ts",
    "content": "import traverse from 'neotraverse/legacy';\nimport hash from 'object-hash';\nimport { MitosisComponent } from '../../types/mitosis-component';\nimport { MitosisNode } from '../../types/mitosis-node';\nimport { dashCase } from '../dash-case';\nimport { isMitosisNode } from '../is-mitosis-node';\nimport {\n  ClassStyleMap,\n  getNestedSelectors,\n  getStylesOnly,\n  nodeHasCss,\n  parseCssObject,\n  styleMapToCss,\n} from './helpers';\n\ntype CollectStyleOptions = {\n  prefix?: string;\n};\n\nconst trimClassStr = (classStr: string) => classStr.trim().replace(/\\s{2,}/g, ' ');\n\nconst updateClassForNode = (item: MitosisNode, className: string) => {\n  if (item.bindings.class) {\n    // combine className with existing binding. We use single quotes because in Vue, bindings are wrapped in double quotes\n    // e.g. <div :class=\"_classStringToObject(this.className + ' div-21azgz5avex')\" />\n    item.bindings.class.code = trimClassStr(`${item.bindings.class.code} + ' ${className}'`);\n  } else {\n    item.properties.class = trimClassStr(`${item.properties.class || ''} ${className}`);\n  }\n};\n\nexport function normalizeName(name: string | undefined): string {\n  if (!name || name.trim() === '' || name.match(/^[^a-zA-Z0-9]*$/)) {\n    return '';\n  }\n\n  // Clean the name first\n  const cleaned = name.replace(/[^a-zA-Z0-9\\-_]/g, '');\n\n  // If pure numeric or only contains numbers and dashes\n  if (cleaned.match(/^[0-9-]+$/)) {\n    // Extract just the numbers and format as css{number}\n    const numbers = cleaned.replace(/[^0-9]/g, '');\n    return `css${numbers}`;\n  }\n\n  // Remove leading numbers and dashes for other cases\n  const normalized = cleaned.replace(/^[0-9-]+(?=[a-zA-Z])/, '');\n\n  return normalized || '';\n}\n\nconst collectStyles = (\n  json: MitosisComponent,\n  options: CollectStyleOptions = {},\n): ClassStyleMap => {\n  const styleMap: ClassStyleMap = {};\n\n  const componentIndexes: { [className: string]: number | undefined } = {};\n  const componentHashes: { [className: string]: string | undefined } = {};\n\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (nodeHasCss(item)) {\n        const value = parseCssObject(item.bindings.css?.code as string);\n        delete item.bindings.css;\n\n        const normalizedName = normalizeName(item.properties.$name);\n\n        const componentName = normalizedName\n          ? dashCase(normalizedName)\n          : /^h\\d$/.test(item.name || '') // don't dashcase h1 into h-1\n          ? item.name\n          : dashCase(normalizeName(item.name) || 'div');\n\n        const classNameWPrefix = `${componentName}${options.prefix ? `-${options.prefix}` : ''}`;\n\n        const stylesHash = hash(value);\n        if (componentHashes[componentName] === stylesHash) {\n          const className = classNameWPrefix;\n          updateClassForNode(item, className);\n          return;\n        }\n\n        if (!componentHashes[componentName]) {\n          componentHashes[componentName] = stylesHash;\n        }\n\n        const index = (componentIndexes[componentName] =\n          (componentIndexes[componentName] || 0) + 1);\n        const className = `${classNameWPrefix}${index === 1 ? '' : `-${index}`}`;\n\n        updateClassForNode(item, className);\n\n        styleMap[className] = value;\n      }\n      delete item.bindings.css;\n    }\n  });\n\n  return styleMap;\n};\n\nexport const collectCss = (json: MitosisComponent, options: CollectStyleOptions = {}): string => {\n  const styles = collectStyles(json, options);\n  // TODO create and use a root selector\n  let css = '';\n  css += !!json.style?.length ? `${json.style}\\n` : '';\n  css += classStyleMapToCss(styles);\n  return css;\n};\n\nconst classStyleMapToCss = (map: ClassStyleMap): string => {\n  let str = '';\n\n  for (const key in map) {\n    const styles = getStylesOnly(map[key]);\n    str += `.${key} {\\n${styleMapToCss(styles)}\\n}`;\n\n    const nestedSelectors = getNestedSelectors(map[key]);\n    for (const nestedSelector in nestedSelectors) {\n      const value = nestedSelectors[nestedSelector] as any;\n\n      if (nestedSelector.startsWith('@')) {\n        str += `${nestedSelector} { .${key} { ${styleMapToCss(value)} } }`;\n      } else {\n        const getSelector = (nestedSelector: string) => {\n          if (nestedSelector.startsWith(':')) {\n            return `.${key}${nestedSelector}`;\n          }\n\n          if (nestedSelector.includes('&')) {\n            return nestedSelector.replace(/&/g, `.${key}`);\n          }\n\n          return `.${key} ${nestedSelector}`;\n        };\n\n        str += `${getSelector(nestedSelector)} {\\n${styleMapToCss(value)}\\n}`;\n      }\n    }\n  }\n\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/styles/collect-styled-components.test.ts",
    "content": "import { componentToReact } from '@/generators/react';\nimport { collectStyledComponents } from './collect-styled-components';\n\ndescribe('Styled Styles', () => {\n  const mitosisJson = {\n    '@type': '@builder.io/mitosis/component',\n    imports: [],\n    exports: {},\n    meta: { useMetadata: {} },\n    refs: {},\n    state: {},\n    children: [\n      {\n        '@type': '@builder.io/mitosis/node',\n        name: 'div',\n        meta: {},\n        scope: {},\n        properties: {},\n        bindings: {\n          css: {\n            code: \"{color:'#FFF',textAlign:'right',position:'relative',maxWidth:'537px','@media (max-width: 991px)':{maxWidth:'100%',margin:'40px 10px 0 0'},margin:'1022px 47px 0 0',font:'300 16px/25px Barlow, -apple-system, Roboto, Helvetica, sans-serif '}\",\n          },\n        },\n        children: [\n          {\n            '@type': '@builder.io/mitosis/node',\n            name: 'div',\n            meta: {},\n            scope: {},\n            properties: {\n              _text:\n                \"Makeup artist Rosie Johnson's spirit is tightly intertwined with the world of art, fashion and beauty. She specialises in providing hair and makeup services on the Gold Coast, keeping track of all the latest trends and new directions in the industry. She uses professional and high level industry standard techniques to enhance your best features.\\r<br/>\\r<br/>Hair styling options are flexible to suit your event, preferences and hair, from classic sleek up styles to voluminous curls, or braided boho looks.<br/>\\r<br/>Her and the Makeup Palace teams priority is to ensure you feel amazing and take your ideas, individual face shape, skin and hair, to create a look that you love. Based on the Gold Coast, her formal hair and makeup services have inspired confidence and beauty on wedding days, special occasions and more.\",\n            },\n            bindings: {},\n            children: [],\n          },\n        ],\n      },\n    ],\n    context: { get: {}, set: {} },\n    subComponents: [],\n    name: 'MyBasicNestedComponent',\n    hooks: { onMount: [], onEvent: [] },\n  };\n\n  test('Styled class is generated properly', () => {\n    expect({ output: collectStyledComponents(mitosisJson as any) }).toMatchSnapshot();\n  });\n\n  test('Generated React code should not throw exception', () => {\n    expect(() => {\n      componentToReact({ stylesType: 'styled-components', plugins: [] })({\n        component: mitosisJson as any,\n      });\n    }).not.toThrowError();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/helpers/styles/collect-styled-components.ts",
    "content": "import { camelCase } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport hash from 'object-hash';\nimport { MitosisComponent } from '../../types/mitosis-component';\nimport { capitalize } from '../capitalize';\nimport { isMitosisNode } from '../is-mitosis-node';\nimport { isUpperCase } from '../is-upper-case';\nimport { normalizeName } from './collect-css';\nimport {\n  getNestedSelectors,\n  getStylesOnly,\n  nodeHasCss,\n  parseCssObject,\n  styleMapToCss,\n} from './helpers';\n\nexport const collectStyledComponents = (json: MitosisComponent): string => {\n  let styledComponentsCode = '';\n\n  const componentIndexes: { [className: string]: number | undefined } = {};\n  const componentHashes: { [className: string]: string | undefined } = {};\n\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (nodeHasCss(item)) {\n        const value = parseCssObject(item.bindings.css?.code as string);\n        delete item.bindings.css;\n\n        const normalizedNameProperty = item.properties.$name\n          ? capitalize(camelCase(normalizeName(item.properties.$name)))\n          : null;\n\n        const componentName = normalizedNameProperty\n          ? normalizedNameProperty\n          : /^h\\d$/.test(item.name || '')\n          ? item.name\n          : capitalize(camelCase(normalizeName(item.name) || 'div'));\n\n        const index = (componentIndexes[componentName] =\n          (componentIndexes[componentName] || 0) + 1);\n        const className = `${componentName}${\n          componentName !== item.name && index === 1 ? '' : index\n        }`;\n\n        let str = '';\n        const styles = getStylesOnly(value);\n\n        const stylesHash = hash(styles);\n        if (stylesHash === componentHashes[componentName]) {\n          return;\n        }\n        if (!componentHashes[componentName]) {\n          componentHashes[componentName] = stylesHash;\n        }\n        str += `${styleMapToCss(styles)}\\n`;\n        const nestedSelectors = getNestedSelectors(value);\n        for (const nestedSelector in nestedSelectors) {\n          const value = nestedSelectors[nestedSelector] as any;\n          str += `${nestedSelector} { ${styleMapToCss(value)} }`;\n        }\n\n        const prefix = isUpperCase(item.name[0])\n          ? `styled(${item.name})\\``\n          : `styled.${item.name}\\``;\n\n        item.name = className;\n\n        styledComponentsCode += `\n          const ${className} = ${prefix}${str}\\`;\n        `;\n      }\n      delete item.bindings.css;\n    }\n  });\n\n  return styledComponentsCode;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/styles/helpers.ts",
    "content": "import * as CSS from 'csstype';\nimport json5 from 'json5';\nimport { pickBy } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { MitosisComponent } from '../../types/mitosis-component';\nimport { MitosisNode } from '../../types/mitosis-node';\nimport { dashCase } from '../dash-case';\nimport { isMitosisNode } from '../is-mitosis-node';\nimport { isUpperCase } from '../is-upper-case';\n\nexport const nodeHasCss = (node: MitosisNode) => {\n  return Boolean(\n    typeof node.bindings.css?.code === 'string' && node.bindings.css.code.trim().length > 6,\n  );\n};\n\nexport const nodeHasStyle = (node: MitosisNode) => {\n  return (\n    Boolean(typeof node.bindings.style?.code === 'string') ||\n    Boolean(typeof node.properties.style === 'string')\n  );\n};\n\nexport const hasCss = (component: MitosisComponent) => {\n  let hasStyles = !!component.style?.length;\n\n  if (hasStyles) {\n    return true;\n  }\n\n  traverse(component).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (nodeHasCss(item)) {\n        hasStyles = true;\n        this.stop();\n      }\n    }\n  });\n  return hasStyles;\n};\n\nexport const hasStyle = (component: MitosisComponent) => {\n  let hasStyles = false;\n\n  traverse(component).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (nodeHasStyle(item)) {\n        hasStyles = true;\n        this.stop();\n      }\n    }\n  });\n  return hasStyles;\n};\n\n/**\n * e.g.:\n * {\n *  display: 'none',\n *  '@media (max-width: 500px)': {\n *    '& .sub-class': {\n *      display: 'block'\n *    }\n *  }\n * }\n */\nexport type StyleMap = {\n  [className: string]: CSS.Properties | StyleMap;\n};\n\nexport const getNestedSelectors = (map: StyleMap) => {\n  return pickBy(map, (value) => typeof value === 'object');\n};\nexport const getStylesOnly = (map: StyleMap) => {\n  return pickBy(map, (value) => typeof value === 'string');\n};\n\n/**\n * { 'my-class': { display: 'block', '&.foo': { display: 'none' } }}\n */\nexport type ClassStyleMap = { [key: string]: StyleMap };\n\nexport const parseCssObject = (css: string) => {\n  try {\n    return json5.parse(css);\n  } catch (e) {\n    console.warn('Could not parse CSS object', css);\n    throw e;\n  }\n};\n\nconst getCssPropertyName = (cssObjectKey: string) => {\n  // Allow custom CSS properties\n  if (cssObjectKey.startsWith('--')) {\n    return cssObjectKey;\n  }\n  let str = dashCase(cssObjectKey);\n\n  // Convert vendor prefixes like 'WebkitFoo' to '-webkit-foo'\n  if (isUpperCase(cssObjectKey[0])) {\n    str = `-${str}`;\n  }\n  return str;\n};\n\nexport const styleMapToCss = (map: StyleMap): string => {\n  return Object.entries(map)\n    .filter(([key, value]) => typeof value === 'string')\n    .map(([key, value]) => `  ${getCssPropertyName(key)}: ${value};`)\n    .join('\\n');\n};\n"
  },
  {
    "path": "packages/core/src/helpers/trace-reference-to-module-path.ts",
    "content": "import { MitosisImport } from '../types/mitosis-component';\n\nexport function traceReferenceToModulePath(imports: MitosisImport[], name: string): string | null {\n  let response: string | null = null;\n  for (const importInfo of imports) {\n    if (name in importInfo.imports) {\n      return `${importInfo.path}:${importInfo.imports[name]}`;\n    }\n  }\n\n  return response;\n}\n"
  },
  {
    "path": "packages/core/src/helpers/transform-state-setters.ts",
    "content": "import { types } from '@babel/core';\nimport { babelTransformExpression } from './babel-transform';\n\ntype StateSetterTransformer = ({\n  path,\n  propertyName,\n}: {\n  path: babel.NodePath<types.AssignmentExpression>;\n  propertyName: string;\n}) => types.CallExpression;\n\n/**\n * Finds instances of state being set in `value`, and transforms them using the\n * provided `transformer`.\n */\nexport const transformStateSetters = ({\n  value,\n  transformer,\n}: {\n  value: string;\n  transformer: StateSetterTransformer;\n}) =>\n  babelTransformExpression(value, {\n    AssignmentExpression(path) {\n      const { node } = path;\n      if (\n        types.isMemberExpression(node.left) &&\n        types.isIdentifier(node.left.object) &&\n        // TODO: utillity to properly trace this reference to the beginning\n        node.left.object.name === 'state'\n      ) {\n        // TODO: ultimately support other property access like strings\n        const propertyName = (node.left.property as types.Identifier).name;\n        const newExpression = transformer({ path, propertyName });\n        path.replaceWith(newExpression);\n      }\n    },\n  });\n"
  },
  {
    "path": "packages/core/src/helpers/transform-to-jsx.ts",
    "content": "import { objectHasKey } from '@/helpers/typescript';\n\nexport const JSX_TO_HTML_ATTR = {\n  for: 'htmlFor',\n};\n\nexport const transformAttributeToJSX = (key: string) => {\n  if (objectHasKey(JSX_TO_HTML_ATTR, key)) return JSX_TO_HTML_ATTR[key];\n  return key;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/traverse-nodes.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { MitosisNode } from '@/types/mitosis-node';\nimport traverse, { type TraverseContext } from 'neotraverse/legacy';\nimport { isMitosisNode } from './is-mitosis-node';\n\nexport function traverseNodes(\n  component: MitosisComponent | MitosisNode,\n  cb: (node: MitosisNode, context: TraverseContext) => void,\n) {\n  traverse(component).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      cb(item, this);\n    }\n  });\n}\n"
  },
  {
    "path": "packages/core/src/helpers/try-prettier-format.ts",
    "content": "import { format as prettierFormat } from 'prettier/standalone';\n\nexport const tryPrettierFormat = (str: string, parser: string) => {\n  try {\n    return prettierFormat(str, {\n      parser,\n      plugins: [\n        // To support running in browsers\n        require('prettier/parser-typescript'),\n        require('prettier/parser-postcss'),\n        require('prettier/parser-html'),\n        require('prettier/parser-babel'),\n      ],\n      htmlWhitespaceSensitivity: 'ignore',\n    });\n  } catch (err) {\n    console.warn('Could not prettify', { string: str }, err);\n  }\n  return str;\n};\n"
  },
  {
    "path": "packages/core/src/helpers/typescript-project.ts",
    "content": "import { Node, Project, SourceFile, Symbol, SyntaxKind } from 'ts-morph';\nimport { babelTransformExpression } from './babel-transform';\n\nexport const removeMitosisImport = (code: string): string =>\n  babelTransformExpression(code, {\n    ImportDeclaration(path) {\n      if (path.node.source.value === '@builder.io/mitosis') {\n        path.remove();\n      }\n    },\n  });\n\nexport const getPropsSymbol = (ast: SourceFile) => {\n  let propsSymbol: Symbol | undefined = undefined;\n  return ast.forEachChild((node) => {\n    if (propsSymbol !== undefined) return undefined;\n\n    if (Node.isArrowFunction(node) || Node.isFunctionDeclaration(node)) {\n      if (\n        node.hasModifier(SyntaxKind.ExportKeyword) &&\n        node.hasModifier(SyntaxKind.DefaultKeyword)\n      ) {\n        propsSymbol = node.getParameters()[0]?.getSymbol();\n        return propsSymbol;\n      }\n    }\n    return undefined;\n  });\n};\n\nexport const getContextSymbols = (ast: SourceFile) => {\n  const contextSymbols = new Set<Symbol>();\n\n  ast.forEachDescendant((node) => {\n    if (!Node.isVariableDeclaration(node)) return;\n\n    const initializer = node.getInitializer();\n\n    if (!Node.isCallExpression(initializer)) return;\n    if (initializer.getExpression().getText() !== 'useContext') return;\n\n    const contextSymbol = node.getNameNode().getSymbol();\n\n    if (contextSymbol === undefined) return;\n\n    contextSymbols.add(contextSymbol);\n  });\n\n  return contextSymbols;\n};\n\nconst getProject = (tsConfigFilePath: string) => {\n  try {\n    return new Project({ tsConfigFilePath });\n  } catch (err) {\n    throw new Error(\n      `Error creating Typescript Project. Make sure \\`tsConfigFilePath\\` points to a valid tsconfig.json file.\n      Path received: \"${tsConfigFilePath}\"\n      `,\n    );\n  }\n};\n\nexport const createTypescriptProject = (tsConfigFilePath: string) => {\n  const project = getProject(tsConfigFilePath);\n  return { project };\n};\n"
  },
  {
    "path": "packages/core/src/helpers/typescript.ts",
    "content": "export type Overwrite<T, U> = keyof U extends keyof T\n  ? Pick<T, Exclude<keyof T, keyof U>> & U\n  : never;\n\nexport type Prettify<T> = {\n  [K in keyof T]: T[K];\n} & {};\n\nexport type OmitObj<T, U> = T extends U ? Omit<T, keyof U> : never;\n\nexport type Dictionary<T> = { [key: string]: T };\n\nexport const objectHasKey = <T>(object: T, key: PropertyKey): key is keyof T =>\n  key in (object as any);\n"
  },
  {
    "path": "packages/core/src/helpers/web-components/attribute-passing.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { BaseTranspilerOptions } from '@/types/transpiler';\n\nexport const ROOT_REF = '_root';\n\nexport const getAttributePassingString = (typescript?: boolean) => {\n  return (\n    '/**\\n' +\n    ' * Passes `aria-*`, `data-*` & `class` attributes to correct child. Used in angular and stencil.\\n' +\n    ' * @param element  the ref for the component\\n' +\n    ' * @param customElementSelector  the custom element like `my-component`\\n' +\n    ' */\\n' +\n    `private enableAttributePassing(element${\n      typescript ? ': HTMLElement | null' : ''\n    }, customElementSelector${typescript ? ': string' : ''}) {\n` +\n    '  const parent = element?.closest(customElementSelector);\\n' +\n    '  if (element && parent) {\\n' +\n    '    const attributes = parent.attributes;\\n' +\n    '    for (let i = 0; i < attributes.length; i++) {\\n' +\n    '      const attr = attributes.item(i);\\n' +\n    \"      if (attr && (attr.name.startsWith('data-') || attr.name.startsWith('aria-'))) {\\n\" +\n    '        element.setAttribute(attr.name, attr.value);\\n' +\n    '        parent.removeAttribute(attr.name);\\n' +\n    '      }\\n' +\n    \"      if (attr && attr.name === 'class') {\\n\" +\n    \"        const isWebComponent = attr.value.includes('hydrated');\\n\" +\n    \"        const value = attr.value.replace('hydrated', '').trim();\\n\" +\n    \"        const currentClass = element.getAttribute('class');\\n\" +\n    \"        element.setAttribute(attr.name, `${currentClass ? `${currentClass} ` : ''}${value}`);\\n\" +\n    '        if (isWebComponent) {\\n' +\n    '          // Stencil is using this class for lazy loading component\\n' +\n    \"          parent.setAttribute('class', 'hydrated');\\n\" +\n    '        } else {\\n' +\n    '          parent.removeAttribute(attr.name);\\n' +\n    '        }\\n' +\n    '      }\\n' +\n    '    }\\n' +\n    '  }\\n' +\n    '};'\n  );\n};\n\nexport const shouldAddAttributePassing = (json: MitosisComponent, options: BaseTranspilerOptions) =>\n  options.attributePassing?.enabled || json.meta.useMetadata?.attributePassing?.enabled;\n\nexport const getAddAttributePassingRef = (\n  json: MitosisComponent,\n  options: BaseTranspilerOptions,\n) => {\n  return (\n    json.meta.useMetadata?.attributePassing?.customRef ||\n    options.attributePassing?.customRef ||\n    ROOT_REF\n  );\n};\n"
  },
  {
    "path": "packages/core/src/index.ts",
    "content": "import { JSX } from '../jsx-runtime';\nimport { Dictionary } from './helpers/typescript';\nimport { ComponentMetadata } from './types/metadata';\nimport { ReactivityType, TargetBlock } from './types/mitosis-component';\nexport * from './flow';\nexport * from './generators/alpine';\nexport * from './generators/angular';\nexport * from './generators/builder';\nexport * from './generators/context/angular';\nexport * from './generators/context/qwik';\nexport * from './generators/context/react';\nexport * from './generators/context/rsc';\nexport * from './generators/context/solid';\nexport * from './generators/context/svelte';\nexport * from './generators/context/vue';\nexport * from './generators/html';\nexport * from './generators/liquid';\nexport * from './generators/lit';\nexport * from './generators/marko';\nexport * from './generators/mitosis';\nexport * from './generators/qwik/index';\nexport * from './generators/react';\nexport * from './generators/react-native';\nexport * from './generators/rsc';\nexport * from './generators/solid';\nexport * from './generators/stencil';\nexport * from './generators/svelte';\nexport * from './generators/swift';\nexport * from './generators/taro';\nexport * from './generators/template';\nexport * from './generators/vue';\nexport {\n  checkIsLiteComponentFilePath,\n  checkIsMitosisComponentFilePath,\n  checkIsSvelteComponentFilePath,\n  getComponentFileExtensionForTarget,\n  renameComponentFile,\n  renameComponentImport,\n  renameImport,\n} from './helpers/component-file-extensions';\nexport { createMitosisNode } from './helpers/create-mitosis-node';\nexport * from './helpers/is-mitosis-node';\nexport { checkShouldOutputTypeScript } from './helpers/output';\nexport * from './helpers/signals';\nexport * from './helpers/typescript-project';\nexport * from './parsers/angular';\nexport * from './parsers/builder';\nexport * from './parsers/context';\nexport * from './parsers/jsx';\nexport * from './parsers/svelte';\nexport * from './plugins/compile-away-builder-components';\nexport * from './plugins/compile-away-components';\nexport * from './plugins/map-styles';\nexport * from './symbols/symbol-processor';\nexport * from './targets';\nexport * from './types/config';\nexport * from './types/mitosis-component';\nexport * from './types/mitosis-node';\nexport * from './types/plugins';\nexport * from './types/transpiler';\n\ndeclare function Provider<T>(props: { value: T; children: JSX.Element }): any;\n\nexport type Context<T> = {\n  Provider: typeof Provider<T>;\n};\n\nexport type Signal<T> = {\n  value: T;\n};\n\n// These compile away\nexport declare function useStore<T>(obj: T): T;\n\nexport declare function useState<T>(\n  obj: T,\n  args: { reactive: true },\n): [Signal<T>, (value: T) => void];\nexport declare function useState<T>(obj: T, args?: { reactive?: boolean }): [T, (value: T) => void];\n\nexport declare function useRef<T>(obj?: null | void | T): T;\nexport declare function useContext<T = Dictionary<any>>(key: Context<T>, type?: ReactivityType): T;\n\nexport declare function createContext<T = Dictionary<any>>(\n  value: T,\n  args: { reactive: true },\n): Context<Signal<T>>;\nexport declare function createContext<T = Dictionary<any>>(\n  value: T,\n  args?: { reactive?: boolean },\n): Context<T>;\n\nexport declare function setContext<T = Dictionary<any>>(\n  key: Context<T>,\n  value: Partial<T>,\n  options?: { type?: ReactivityType },\n): void;\nexport declare function onMount(fn: () => any, args?: { onSSR?: boolean }): void;\nexport declare function onUpdate(fn: () => any, deps?: any[]): void;\nexport declare function onInit(fn: () => any): void;\nexport declare function onUnMount(fn: () => any): void;\nexport declare function useDynamicTag(fn: () => any): void;\nexport declare function onError(fn: () => any): void;\nexport declare function useMetadata(obj: ComponentMetadata): void;\nexport declare function useDefaultProps<T = Dictionary<any>>(value: T): T;\nexport declare function useStyle(value: string): void;\n\n/**\n * Adds an event listener to a given element ref.\n */\nexport declare function onEvent<E extends Event, T extends Element>(\n  eventName: string,\n  fn: (event: E, element: T) => any,\n  elementRef: T,\n  isRoot?: boolean,\n): void;\n\n// TO-DO: better type strictness that guarantees `Target` is a subset of `Targets`\nexport declare function useTarget<Return>(dict: TargetBlock<Return>): Return;\n"
  },
  {
    "path": "packages/core/src/internal-types.d.ts",
    "content": "declare module '@fake*';\n"
  },
  {
    "path": "packages/core/src/modules/plugins.ts",
    "content": "import { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisPlugin } from '../types/plugins';\n\nexport type { MitosisPlugin };\n\nexport const runPreJsonPlugins = ({\n  json,\n  plugins,\n  options,\n}: {\n  json: MitosisComponent;\n  plugins: MitosisPlugin[];\n  options?: any;\n}) => {\n  let useJson = json;\n  for (const plugin of plugins) {\n    const preFunction = plugin(options).json?.pre;\n    if (preFunction) {\n      useJson = preFunction(json) || json;\n    }\n  }\n  return useJson;\n};\n\nexport const runPostJsonPlugins = ({\n  json,\n  plugins,\n  options,\n}: {\n  json: MitosisComponent;\n  plugins: MitosisPlugin[];\n  options?: any;\n}) => {\n  let useJson = json;\n  for (const plugin of plugins) {\n    const postFunction = plugin(options).json?.post;\n    if (postFunction) {\n      useJson = postFunction(json) || json;\n    }\n  }\n  return useJson;\n};\n\nexport const runPreCodePlugins = ({\n  code,\n  plugins,\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  code: string;\n  plugins: MitosisPlugin[];\n  options?: any;\n}) => {\n  let string = code;\n  for (const plugin of plugins) {\n    const preFunction = plugin(options).code?.pre;\n    if (preFunction) {\n      string = preFunction(string, json);\n    }\n  }\n  return string;\n};\n\nexport const runPostCodePlugins = ({\n  code,\n  plugins,\n  options,\n  json,\n}: {\n  json: MitosisComponent;\n  code: string;\n  plugins: MitosisPlugin[];\n  options?: any;\n}) => {\n  let string = code;\n  for (const plugin of plugins) {\n    const postFunction = plugin(options).code?.post;\n    if (postFunction) {\n      string = postFunction(string, json);\n    }\n  }\n  return string;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/angular.ts",
    "content": "import { parseTemplate } from '@angular/compiler';\nimport { ASTWithSource } from '@angular/compiler/src/expression_parser/ast';\nimport { BoundText, Element, Node, Template, Text } from '@angular/compiler/src/render3/r3_ast';\nimport { types } from '@babel/core';\nimport { omit } from 'lodash';\nimport ts from 'typescript';\nimport { babelTransformCode } from '../helpers/babel-transform';\nimport { createSingleBinding } from '../helpers/bindings';\nimport { capitalize } from '../helpers/capitalize';\nimport { createMitosisComponent } from '../helpers/create-mitosis-component';\nimport { createMitosisNode } from '../helpers/create-mitosis-node';\nimport { Dictionary } from '../helpers/typescript';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { Binding, MitosisNode } from '../types/mitosis-node';\n\nconst getTsAST = (code: string) => {\n  return ts.createSourceFile('code.ts', code, ts.ScriptTarget.Latest, true);\n};\n\ninterface AngularToMitosisOptions {}\n\nconst transformBinding = (binding: string, _options: AngularToMitosisOptions) => {\n  return babelTransformCode(binding, {\n    Identifier(path) {\n      const name = path.node.name;\n\n      if (\n        (types.isObjectProperty(path.parent) && path.parent.key === path.node) ||\n        (types.isMemberExpression(path.parent) && path.parent.property === path.node)\n      ) {\n        return;\n      }\n\n      if (!(name.startsWith('state.') || name === 'event' || name === '$event')) {\n        path.replaceWith(types.identifier(`state.${name}`));\n      }\n    },\n  });\n};\n\nconst isElement = (node: Node): node is Element =>\n  // TODO: theres got to be a better way than this\n  Array.isArray((node as any).attributes);\n\nconst isTemplate = (node: Node): node is Template =>\n  // TODO: theres got to be a better way than this\n  Array.isArray((node as any).templateAttrs);\n\nconst isText = (node: Node): node is Text => typeof (node as any).value === 'string';\n\nconst isBoundText = (node: Node): node is BoundText => typeof (node as any).value === 'object';\n\nconst angularTemplateNodeToMitosisNode = (\n  node: Node,\n  options: AngularToMitosisOptions,\n): MitosisNode => {\n  if (isTemplate(node)) {\n    const ngIf = node.templateAttrs.find((item) => item.name === 'ngIf');\n    if (ngIf) {\n      return createMitosisNode({\n        name: 'Show',\n        bindings: {\n          when: createSingleBinding({\n            code: transformBinding((ngIf.value as ASTWithSource).source!, options),\n          }),\n        },\n        children: [angularTemplateNodeToMitosisNode(omit(node, 'templateAttrs'), options)],\n      });\n    }\n    const ngFor = node.templateAttrs.find((item) => item.name === 'ngFor');\n    if (ngFor) {\n      const value = (ngFor.value as ASTWithSource).source!;\n      const split = value.split(/let\\s|\\sof\\s/);\n      const [_let, itemName, _of, expression] = split;\n      return createMitosisNode({\n        name: 'For',\n        bindings: {\n          each: createSingleBinding({ code: transformBinding(expression, options) }),\n        },\n        scope: {\n          forName: itemName,\n        },\n        children: [angularTemplateNodeToMitosisNode(omit(node, 'templateAttrs'), options)],\n      });\n    }\n  }\n\n  if (isElement(node)) {\n    const properties: Record<string, string> = {};\n    const bindings: Dictionary<Binding> = {};\n\n    for (const input of node.inputs) {\n      bindings[input.name] = createSingleBinding({\n        code: transformBinding((input.value as ASTWithSource).source!, options),\n      });\n    }\n    for (const output of node.outputs) {\n      bindings['on' + capitalize(output.name)] = createSingleBinding({\n        code: transformBinding(\n          (output.handler as ASTWithSource)\n            .source! // TODO: proper reference replace\n            .replace(/\\$event/g, 'event'),\n          options,\n        ),\n      });\n    }\n    for (const attribute of node.attributes) {\n      properties[attribute.name] = attribute.value;\n    }\n\n    return createMitosisNode({\n      name: node.name,\n      properties,\n      bindings: bindings,\n      children: node.children.map((node) => angularTemplateNodeToMitosisNode(node, options)),\n    });\n  }\n\n  if (isText(node)) {\n    return createMitosisNode({\n      properties: {\n        _text: node.value,\n      },\n    });\n  }\n\n  if (isBoundText(node)) {\n    // TODO: handle the bindings\n    return createMitosisNode({\n      properties: {\n        _text: (node.value as ASTWithSource).source!,\n      },\n    });\n  }\n\n  throw new Error(`Element node type {${node}} is not supported`);\n};\n\nconst angularTemplateToMitosisNodes = (template: string, options: AngularToMitosisOptions) => {\n  const ast = parseTemplate(template, '.');\n  const blocks = ast.nodes.map((node) => angularTemplateNodeToMitosisNode(node, options));\n\n  return blocks;\n};\n\nconst parseTypescript = (code: string, options: AngularToMitosisOptions) => {\n  const component = createMitosisComponent();\n\n  const ast = getTsAST(code);\n  for (const statement of ast.statements) {\n    if (ts.isClassDeclaration(statement)) {\n      const decorators = ts.canHaveDecorators(statement) ? ts.getDecorators(statement) : undefined;\n      if (decorators) {\n        for (const decorator of decorators) {\n          // TODO: proper reference tracing\n          if (ts.isCallExpression(decorator.expression))\n            if (\n              ts.isIdentifier(decorator.expression.expression) &&\n              decorator.expression.expression.text === 'Component'\n            ) {\n              const firstArg = decorator.expression.arguments[0];\n              if (ts.isObjectLiteralExpression(firstArg)) {\n                firstArg.properties.find((item) => {\n                  if (ts.isPropertyAssignment(item)) {\n                    if (ts.isIdentifier(item.name) && item.name.text === 'template') {\n                      if (ts.isTemplateLiteral(item.initializer)) {\n                        const template = item.initializer.getText().trim().slice(1, -1);\n                        component.children = angularTemplateToMitosisNodes(template, options);\n                      }\n                    }\n                  }\n                });\n              }\n            }\n        }\n      }\n    }\n  }\n\n  return component;\n};\n\nexport function angularToMitosisComponent(\n  code: string,\n  options: AngularToMitosisOptions = {},\n): MitosisComponent {\n  return parseTypescript(code, options);\n}\n"
  },
  {
    "path": "packages/core/src/parsers/builder/builder.test.ts",
    "content": "import { componentToBuilder } from '@/generators/builder';\nimport { componentToMitosis } from '@/generators/mitosis';\nimport { BuilderContent } from '@builder.io/sdk';\nimport { parseJsx } from '../jsx';\nimport { builderContentToMitosisComponent } from './builder';\n\ndescribe('Unpaired Surrogates', () => {\n  test('removes unpaired surrogates from Text component content', () => {\n    const builderContent: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Text',\n              options: {\n                text: `Hello \\uD800 World. Welcome to \\uDFFF section`,\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const output = builderContentToMitosisComponent(builderContent);\n    expect(output.children[0].properties.text).toBe('Hello  World. Welcome to section');\n    expect(output.children[0].properties.text).not.toContain('\\uD800');\n    expect(output.children[0].properties.text).not.toContain('\\uDFFF');\n  });\n\n  test('should handle builder component with/without a colon in the name', () => {\n    const builderContent: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Text:123',\n              options: {\n                text: 'Hello World',\n              },\n            },\n          },\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Text123',\n              options: {\n                text: 'Hello World',\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const component = builderContentToMitosisComponent(builderContent);\n    expect(component.children[0].name).toBe('Text123');\n    expect(component.children[1].name).toBe('Text123');\n    const backToBuilder = componentToBuilder()({ component });\n    expect(backToBuilder?.data?.blocks?.[0]?.component?.name).toBe('Text:123');\n    expect(backToBuilder?.data?.blocks?.[1]?.component?.name).toBe('Text123');\n  });\n\n  test('should handle builder content -> mitosis json -> mitosis jsx -> mitosis json -> builder content', () => {\n    const builderContent: BuilderContent = {\n      data: {\n        blocks: [\n          {\n            '@type': '@builder.io/sdk:Element' as const,\n            component: {\n              name: 'Text:123',\n              options: {\n                text: 'Hello World',\n              },\n            },\n          },\n        ],\n      },\n    };\n\n    const mitosisCmp = builderContentToMitosisComponent(builderContent);\n    expect(mitosisCmp.children[0].name).toBe('Text123');\n    expect(mitosisCmp.children[0].properties['data-builder-originalName']).toBe('Text:123');\n\n    const mitosisJsx = componentToMitosis()({ component: mitosisCmp });\n    expect(mitosisJsx).toMatchInlineSnapshot(`\n      \"import { Text123 } from \\\\\"@components\\\\\";\n\n      export default function MyComponent(props) {\n        return <Text123 text=\\\\\"Hello World\\\\\" data-builder-originalName=\\\\\"Text:123\\\\\" />;\n      }\n      \"\n    `);\n\n    const backToMitosisCmp = parseJsx(mitosisJsx);\n    expect(backToMitosisCmp.children[0].name).toBe('Text123');\n    expect(backToMitosisCmp.children[0].properties['data-builder-originalName']).toBe('Text:123');\n\n    const backToBuilder = componentToBuilder()({ component: backToMitosisCmp });\n    expect(backToBuilder?.data?.blocks?.[0]?.component?.name).toBe('Text:123');\n    expect(backToBuilder?.data?.blocks?.[0]?.component?.options).not.toHaveProperty(\n      'data-builder-originalName',\n    );\n  });\n});\n"
  },
  {
    "path": "packages/core/src/parsers/builder/builder.ts",
    "content": "import { builderBlockPrefixes } from '@/generators/builder/generator';\nimport { hashCodeAsString } from '@/symbols/symbol-processor';\nimport { MitosisComponent, MitosisState } from '@/types/mitosis-component';\nimport * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport babelTraverse from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { BuilderContent, BuilderElement } from '@builder.io/sdk';\nimport json5 from 'json5';\nimport { mapKeys, omit, sortBy, upperFirst } from 'lodash';\nimport traverse from 'neotraverse/legacy';\nimport { Size, sizeNames, sizes } from '../../constants/media-sizes';\nimport { createSingleBinding } from '../../helpers/bindings';\nimport { capitalize } from '../../helpers/capitalize';\nimport { createMitosisComponent } from '../../helpers/create-mitosis-component';\nimport { createMitosisNode } from '../../helpers/create-mitosis-node';\nimport { fastClone } from '../../helpers/fast-clone';\nimport { isExpression, parseCode } from '../../helpers/parsers';\nimport { Dictionary } from '../../helpers/typescript';\nimport { Binding, BuilderLocalizedValue, MitosisNode } from '../../types/mitosis-node';\nimport { parseJsx } from '../jsx';\nimport { parseStateObjectToMitosisState } from '../jsx/state';\nimport { mapBuilderContentStateToMitosisState } from './helpers';\n\n// Omit some superflous styles that can come from Builder's web importer\nconst styleOmitList: (keyof CSSStyleDeclaration | 'backgroundRepeatX' | 'backgroundRepeatY')[] = [\n  'backgroundRepeatX',\n  'backgroundRepeatY',\n  'backgroundPositionX',\n  'backgroundPositionY',\n];\n\nconst getCssFromBlock = (block: BuilderElement) => {\n  const blockSizes: Size[] = Object.keys(block.responsiveStyles || {}).filter((size) =>\n    sizeNames.includes(size as Size),\n  ) as Size[];\n  let css: { [key: string]: Partial<CSSStyleDeclaration> | string } = {};\n  for (const size of blockSizes) {\n    if (size === 'large') {\n      css = omit(\n        {\n          ...css,\n          ...block.responsiveStyles?.large,\n        },\n        styleOmitList,\n      ) as typeof css;\n    } else if (block.responsiveStyles && block.responsiveStyles[size]) {\n      const mediaQueryKey = `@media (max-width: ${sizes[size].max}px)`;\n      css[mediaQueryKey] = omit(\n        {\n          ...(css[mediaQueryKey] as any),\n          ...block.responsiveStyles[size],\n        },\n        styleOmitList,\n      );\n    }\n  }\n\n  return css;\n};\n\nconst verifyIsValid = (code: string): { valid: boolean; error: null | Error } => {\n  try {\n    if (babel.parse(code)) {\n      return { valid: true, error: null };\n    }\n  } catch (err) {\n    return { valid: false, error: null };\n  }\n  return { valid: false, error: null };\n};\n\nconst getActionBindingsFromBlock = (\n  block: BuilderElement,\n  options: BuilderToMitosisOptions,\n): MitosisNode['bindings'] => {\n  const actions = {\n    ...block.actions,\n    ...block.code?.actions,\n  };\n  const bindings: MitosisNode['bindings'] = {};\n  const actionKeys = Object.keys(actions);\n  if (actionKeys.length) {\n    for (const key of actionKeys) {\n      let value = actions[key];\n      // Skip empty values\n      if (!value.trim()) {\n        continue;\n      }\n      const { error, valid } = verifyIsValid(value);\n      if (!valid) {\n        console.warn('Skipping invalid binding', error);\n        continue;\n      }\n      const useKey = `on${upperFirst(key)}`;\n      const asyncPrefix = `(async () =>`;\n      const asyncSuffix = ')()';\n      const isAsync = value.startsWith(asyncPrefix) && value.endsWith(asyncSuffix);\n      if (isAsync) {\n        value = value.slice(asyncPrefix.length, -asyncSuffix.length);\n      }\n      bindings[useKey] = createSingleBinding({\n        code: `${wrapBindingIfNeeded(value, options)}`,\n        async: isAsync ? true : undefined,\n      });\n    }\n  }\n\n  return bindings;\n};\n\nexport const getStyleStringFromBlock = (\n  block: BuilderElement,\n  options: BuilderToMitosisOptions,\n) => {\n  const styleBindings: any = {};\n  const responsiveStyles: Record<string, Record<string, string>> = {};\n  let styleString = '';\n\n  if (block.bindings) {\n    for (const key in block.bindings) {\n      if (!key.includes('.')) {\n        continue;\n      }\n\n      let code = block.code?.bindings?.[key] || block.bindings[key];\n\n      const verifyCode = verifyIsValid(code);\n      if (verifyCode.valid) {\n        code = processBoundLogic(code);\n      } else {\n        if (options.escapeInvalidCode) {\n          code = '`' + code + ' [INVALID CODE]`';\n        } else {\n          console.warn(`Dropping binding \"${key}\" due to invalid code: ${code}`);\n          continue;\n        }\n      }\n\n      if (key.includes('style')) {\n        const styleProperty = key.split('.')[1];\n        styleBindings[styleProperty] = convertExportDefaultToReturn(code);\n        /**\n         * responsiveStyles that are bound need to be merged into media queries.\n         * Example:\n         * responsiveStyles.large.color: \"state.color\"\n         * responsiveStyles.large.background: \"state.background\"\n         * Should get mapped to:\n         * @media (max-width: 1200px): {\n         *   color: state.color,\n         *   background: state.background\n         * }\n         */\n      } else if (key.includes('responsiveStyles')) {\n        const parts = key.split('.');\n        const size = parts[parts.length - 2];\n        const prop = parts[parts.length - 1];\n\n        const mediaKey = `@media (max-width: ${sizes[size as Size].max}px)`;\n\n        /**\n         * The media query key has spaces/special characters so we need to ensure\n         * that the key is always a string otherwise there will be runtime errors.\n         */\n        const objKey = `\"${mediaKey}\"`;\n        responsiveStyles[objKey] = {\n          ...responsiveStyles[objKey],\n          [prop]: code,\n        };\n      }\n    }\n\n    /**\n     * All binding values are strings, but we don't want to stringify the values\n     * within the style object otherwise the bindings will be evaluated as strings.\n     * As a result, do not use JSON.stringify here.\n     */\n    for (const key in responsiveStyles) {\n      const styles = Object.keys(responsiveStyles[key]);\n      const keyValues = styles.map((prop) => `${prop}: ${responsiveStyles[key][prop]}`);\n      const stringifiedObject = `{ ${keyValues.join(', ')} }`;\n      styleBindings[key] = stringifiedObject;\n    }\n  }\n\n  const styleKeys = Object.keys(styleBindings);\n  if (styleKeys.length) {\n    styleString = '{';\n    styleKeys.forEach((key) => {\n      // TODO: figure out how to have multiline style bindings here\n      // I tried (function{binding code})() and that did not work\n      styleString += ` ${key}: ${(options.includeBuilderExtras\n        ? wrapBinding(styleBindings[key])\n        : styleBindings[key]\n            .replace(/var _virtual_index\\s*=\\s*/g, '')\n            .replace(/;*\\s*return _virtual_index;*/, '')\n      ).replace(/;$/, '')},`;\n    });\n    styleString += ' }';\n  }\n\n  return styleString;\n};\n\nconst hasComponent = (block: BuilderElement) => {\n  return Boolean(block.component?.name);\n};\n\nconst hasProperties = (block: BuilderElement) => {\n  return Boolean(block.properties && Object.keys(block.properties).length);\n};\n\nconst hasBindings = (block: BuilderElement) => {\n  return Boolean(block.bindings && Object.keys(block.bindings).length);\n};\n\nconst hasStyles = (block: BuilderElement) => {\n  if (block.responsiveStyles) {\n    for (const key in block.responsiveStyles) {\n      if (Object.keys((block.responsiveStyles as any)[key]!).length) {\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\ntype InternalOptions = {\n  skipMapper?: boolean;\n};\n\nconst wrapBindingIfNeeded = (value: string, options: BuilderToMitosisOptions) => {\n  if (options.includeBuilderExtras) {\n    return wrapBinding(value);\n  }\n\n  if (value?.includes(';') && !value?.trim().startsWith('{')) {\n    return `{ ${value} }`;\n  }\n\n  return value;\n};\n\n/**\n * Sanitizes a symbol name to be a valid JSX component name.\n * - Converts to PascalCase\n * - Removes invalid characters\n * - Adds \"Symbol\" prefix to avoid collisions\n * - Returns \"Symbol\" if no valid name can be generated\n */\nconst sanitizeSymbolName = (name: string | undefined): string => {\n  if (!name || typeof name !== 'string') {\n    return 'Symbol';\n  }\n\n  // Remove special characters and split into words\n  const words = name\n    .replace(/[^a-zA-Z0-9\\s]/g, ' ')\n    .split(/\\s+/)\n    .filter(Boolean);\n\n  if (words.length === 0) {\n    return 'Symbol';\n  }\n\n  // Convert to PascalCase\n  const pascalCase = words\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n    .join('');\n\n  // Add Symbol prefix to avoid collisions with other components\n  return `Symbol${pascalCase}`;\n};\n\nconst getBlockActions = (block: BuilderElement, options: BuilderToMitosisOptions) => {\n  const obj = {\n    ...block.actions,\n    ...block.code?.actions,\n  };\n  if (options.includeBuilderExtras) {\n    for (const key in obj) {\n      const value = obj[key];\n      // TODO: plugin/option for for this\n      obj[key] = wrapBinding(value);\n    }\n  }\n  return obj;\n};\n\nconst getBlockActionsAsBindings = (block: BuilderElement, options: BuilderToMitosisOptions) => {\n  return mapKeys(getBlockActions(block, options), (value, key) => `on${capitalize(key)}`);\n};\n\nconst isValidBindingKey = (str: string) => {\n  return Boolean(str && /^[a-z0-9_\\.]$/i.test(str));\n};\n\nconst getBlockNonActionBindings = (block: BuilderElement, options: BuilderToMitosisOptions) => {\n  const obj = {\n    ...block.bindings,\n    ...block.code?.bindings,\n  };\n  if (options.includeBuilderExtras) {\n    for (const key in obj) {\n      if (!isValidBindingKey(key)) {\n        console.warn('Skipping invalid binding key:', key);\n        continue;\n      }\n      const value = obj[key];\n      // TODO: verify the bindings are valid\n\n      let { valid, error } = verifyIsValid(value);\n      if (!valid) {\n        ({ valid, error } = verifyIsValid(`function () {  ${value} }`));\n      }\n      if (valid) {\n        obj[key] = wrapBinding(value);\n      } else {\n        console.warn('Skipping invalid code:', error);\n        delete obj[key];\n      }\n    }\n  }\n  return obj;\n};\n\nfunction wrapBinding(value: string): string;\nfunction wrapBinding(value: undefined): undefined;\nfunction wrapBinding(value: string | undefined): string | undefined {\n  if (!value) {\n    return value;\n  }\n  if (!(value.includes(';') || value.match(/(^|\\s|;)return[^a-z0-9A-Z]/))) {\n    return value;\n  }\n  return `(() => {\n    try { ${isExpression(value) ? 'return ' : ''}${value} }\n    catch (err) {\n      console.warn('Builder code error', err);\n    }\n  })()`;\n}\n\nconst getBlockBindings = (block: BuilderElement, options: BuilderToMitosisOptions) => {\n  const obj = {\n    ...getBlockNonActionBindings(block, options),\n    ...getBlockActionsAsBindings(block, options),\n  };\n\n  return obj;\n};\n\n// add back if this direction (blocks as children not prop) is desired\nexport const symbolBlocksAsChildren = false;\n\nconst componentMappers: {\n  [key: string]: (block: BuilderElement, options: BuilderToMitosisOptions) => MitosisNode;\n} = {\n  Symbol(block, options) {\n    let css = getCssFromBlock(block);\n    const styleString = getStyleStringFromBlock(block, options);\n    const actionBindings = getActionBindingsFromBlock(block, options);\n\n    const symbolOptions = block.component?.options?.symbol;\n    const symbolName = symbolOptions?.content?.name || symbolOptions?.name;\n    const componentName =\n      block.component?.name !== 'Symbol'\n        ? block.component?.name // Use name already set by extractSymbols\n        : sanitizeSymbolName(symbolName);\n\n    // Extract inputs from symbol.data to make them visible as top-level JSX props\n    //\n    // In Builder.io, Symbol components can receive inputs through symbol.options.data,\n    // which contains key-value pairs for props passed to the symbol instance.\n    //\n    // We extract these from the nested data structure and create individual bindings\n    // for each input so they become first-class props in the generated code\n    // (e.g., <MySymbol title=\"Hello\" count={5} />) instead of being buried in metadata\n    // (e.g., <MySymbol symbol={{ data: { title: \"Hello\", count: 5 } }} />).\n    //\n    // This transformation enables proper prop passing and makes the component usage\n    // more idiomatic in the target framework.\n    const symbolData = symbolOptions?.data || {};\n    const inputBindings: Dictionary<Binding> = {};\n    const hasInputs = Object.keys(symbolData).length > 0;\n\n    // Only extract inputs if there are any to avoid data loss\n    if (hasInputs) {\n      // Create individual bindings for each input\n      for (const key in symbolData) {\n        inputBindings[key] = createSingleBinding({\n          code: json5.stringify(symbolData[key]),\n        });\n      }\n    }\n\n    // Keep symbol metadata - only omit data if we extracted inputs\n    const symbolMetadata = hasInputs ? omit(symbolOptions, 'data') : symbolOptions;\n\n    const bindings: Dictionary<Binding> = {\n      symbol: createSingleBinding({\n        code: JSON.stringify(symbolMetadata),\n      }),\n      ...inputBindings,\n      ...actionBindings,\n      ...(styleString && {\n        style: createSingleBinding({ code: styleString }),\n      }),\n      ...(Object.keys(css).length && {\n        css: createSingleBinding({ code: JSON.stringify(css) }),\n      }),\n    };\n\n    return createMitosisNode({\n      name: componentName,\n      type: 'user-symbol',\n      bindings: bindings,\n      meta: getMetaFromBlock(block, options),\n    });\n  },\n  ...(!symbolBlocksAsChildren\n    ? {}\n    : {\n        Symbol(block, options) {\n          let css = getCssFromBlock(block);\n          const styleString = getStyleStringFromBlock(block, options);\n          const actionBindings = getActionBindingsFromBlock(block, options);\n\n          const content = block.component?.options.symbol.content;\n          const blocks = content?.data?.blocks;\n          if (blocks) {\n            content.data.blocks = null;\n          }\n\n          return createMitosisNode({\n            name: 'Symbol',\n            bindings: {\n              // TODO: this doesn't use all attrs\n              symbol: createSingleBinding({\n                code: JSON.stringify({\n                  data: block.component?.options.symbol.content.data,\n                  content: content, // TODO: convert to <SymbolInternal>...</SymbolInternal> so can be parsed\n                }),\n              }),\n              ...actionBindings,\n              ...(styleString && {\n                style: createSingleBinding({ code: styleString }),\n              }),\n              ...(Object.keys(css).length && {\n                css: createSingleBinding({ code: JSON.stringify(css) }),\n              }),\n            },\n            meta: getMetaFromBlock(block, options),\n            children: !blocks\n              ? []\n              : [\n                  createMitosisNode({\n                    // TODO: the Builder generator side of this converting to blocks\n                    name: 'BuilderSymbolContents',\n                    children: blocks.map((item: any) => builderElementToMitosisNode(item, options)),\n                  }),\n                ],\n          });\n        },\n      }),\n  Columns(block, options) {\n    const node = builderElementToMitosisNode(block, options, {\n      skipMapper: true,\n    });\n\n    delete node.bindings.columns;\n    delete node.properties.columns;\n\n    node.children =\n      block.component?.options.columns?.map((col: any, index: number) =>\n        createMitosisNode({\n          name: 'Column',\n          /**\n           * If width if undefined, do not create a binding otherwise its JSX will\n           * be <Column width={} /> which is not valid due to the empty expression.\n           */\n          ...(col.width != null && {\n            bindings: {\n              width: { code: col.width.toString() },\n            },\n          }),\n          ...(col.link && {\n            properties: {\n              link: col.link,\n            },\n          }),\n          meta: getMetaFromBlock(block, options),\n          children: col.blocks.map((col: any) => builderElementToMitosisNode(col, options)),\n        }),\n      ) || [];\n\n    return node;\n  },\n  PersonalizationContainer(block, options) {\n    const node = builderElementToMitosisNode(block, options, {\n      skipMapper: true,\n    });\n\n    delete node.bindings.variants;\n    delete node.properties.variants;\n\n    const newChildren: MitosisNode[] =\n      block.component?.options.variants?.map((variant: any) => {\n        const variantNode = createMitosisNode({\n          name: 'Variant',\n          properties: {\n            name: variant.name,\n            startDate: variant.startDate,\n            endDate: variant.endDate,\n          },\n          meta: getMetaFromBlock(block, options),\n          children: variant.blocks.map((col: any) => builderElementToMitosisNode(col, options)),\n        });\n        const queryOptions = variant.query as any[];\n        if (Array.isArray(queryOptions)) {\n          variantNode.bindings.query = createSingleBinding({\n            code: JSON.stringify(queryOptions.map((q) => omit(q, '@type'))),\n          });\n        } else if (queryOptions) {\n          variantNode.bindings.query = createSingleBinding({\n            code: JSON.stringify(omit(queryOptions, '@type')),\n          });\n        }\n        return variantNode;\n      }) || [];\n\n    const defaultVariant = createMitosisNode({\n      name: 'Variant',\n      properties: {\n        default: '',\n      },\n      children: node.children,\n    });\n    newChildren.push(defaultVariant);\n\n    node.children = newChildren;\n    return node;\n  },\n  'Shopify:For': (block, options) => {\n    return createMitosisNode({\n      name: 'For',\n      bindings: {\n        each: createSingleBinding({\n          code: `state.${block.component!.options!.repeat!.collection}`,\n        }),\n      },\n      scope: {\n        forName: block.component!.options!.repeat!.itemName,\n      },\n      meta: getMetaFromBlock(block, options),\n      children: (block.children || []).map((child) =>\n        builderElementToMitosisNode(updateBindings(child, 'state.$index', 'index'), options),\n      ),\n    });\n  },\n};\n\ntype BuilderToMitosisOptions = {\n  context?: { [key: string]: any };\n  includeBuilderExtras?: boolean;\n  preserveTextBlocks?: boolean;\n  includeSpecialBindings?: boolean;\n  includeMeta?: boolean;\n  /**\n   * When `true`, invalid bindings will be escaped as strings with special comments.\n   * This can then be used to have LLMs such as Claude attempt to repair the broken code.\n   * Defaults to `false`.\n   */\n  escapeInvalidCode?: boolean;\n\n  /**\n   * When `true`, the `blocksSlots` field on Mitosis Nodes will be used to transform\n   * deeply nested Builder elements found in component options. Note that not every\n   * generator supports parsing `blocksSlots`.\n   * Defaults to `false`.\n   */\n  enableBlocksSlots?: boolean;\n};\nconst processBoundLogic = (code: string) => {\n  const ast = babel.parse(code);\n  if (!ast) return code;\n\n  let replacedWithReturn = false;\n  babelTraverse(ast, {\n    ExportDefaultDeclaration(path) {\n      const exportedNode = path.node.declaration;\n      if (t.isExpression(exportedNode)) {\n        const returnStatement = t.returnStatement(exportedNode);\n        path.replaceWith(returnStatement);\n        replacedWithReturn = true;\n      }\n    },\n  });\n\n  if (replacedWithReturn) {\n    return generate(ast).code;\n  }\n\n  return code;\n};\n\nexport const builderElementToMitosisNode = (\n  block: BuilderElement,\n  options: BuilderToMitosisOptions,\n  _internalOptions: InternalOptions = {},\n): MitosisNode => {\n  const { includeSpecialBindings = true } = options;\n  const localizedValues: MitosisNode['localizedValues'] = {};\n\n  if (block.component?.name === 'Core:Fragment') {\n    block.component.name = 'Fragment';\n  }\n  const forBinding = block.repeat?.collection;\n  if (forBinding) {\n    const isFragment = block.component?.name === 'Fragment';\n    // TODO: handle having other things, like a repeat too\n    if (isFragment) {\n      return createMitosisNode({\n        name: 'For',\n        bindings: {\n          each: createSingleBinding({\n            code: wrapBindingIfNeeded(block.repeat?.collection!, options),\n          }),\n        },\n        scope: {\n          forName: block.repeat?.itemName || 'item',\n        },\n        meta: getMetaFromBlock(block, options),\n        children:\n          block.children?.map((child) =>\n            builderElementToMitosisNode(updateBindings(child, 'state.$index', 'index'), options),\n          ) || [],\n      });\n    } else {\n      const useBlock =\n        block.component?.name === 'Core:Fragment' && block.children?.length === 1\n          ? block.children[0]\n          : block;\n      return createMitosisNode({\n        name: 'For',\n        bindings: {\n          each: createSingleBinding({\n            code: wrapBindingIfNeeded(block.repeat?.collection!, options),\n          }),\n        },\n        scope: {\n          forName: block.repeat?.itemName || 'item',\n          indexName: '$index',\n        },\n        meta: getMetaFromBlock(block, options),\n        children: [builderElementToMitosisNode(omit(useBlock, 'repeat'), options)],\n      });\n    }\n  }\n  // Special builder properties\n  // TODO: support hide and repeat\n  const blockBindings = getBlockBindings(block, options);\n  let code: string | undefined = undefined;\n  if (blockBindings.show) {\n    code = wrapBindingIfNeeded(blockBindings.show, options);\n  } else if (blockBindings.hide) {\n    code = `!(${wrapBindingIfNeeded(blockBindings.hide, options)})`;\n  }\n  if (code) {\n    const isFragment = block.component?.name === 'Fragment';\n    // TODO: handle having other things, like a repeat too\n    if (isFragment) {\n      return createMitosisNode({\n        name: 'Show',\n        bindings: { when: createSingleBinding({ code }) },\n        meta: getMetaFromBlock(block, options),\n        children: block.children?.map((child) => builderElementToMitosisNode(child, options)) || [],\n      });\n    } else {\n      return createMitosisNode({\n        name: 'Show',\n        bindings: { when: createSingleBinding({ code }) },\n        meta: getMetaFromBlock(block, options),\n        children: [\n          builderElementToMitosisNode(\n            {\n              ...block,\n              code: {\n                ...block.code,\n                bindings: omit(blockBindings, 'show', 'hide'),\n              },\n              bindings: omit(blockBindings, 'show', 'hide'),\n            },\n            options,\n          ),\n        ],\n      });\n    }\n  }\n  const mapper =\n    !_internalOptions.skipMapper &&\n    block.component &&\n    (componentMappers[block.component!.name] ||\n      // Handle symbols that were renamed by extractSymbols (e.g., \"SymbolButtonComponent\")\n      // Check for symbol options or exact 'Symbol' name instead of name pattern\n      (block.component?.options?.symbol || block.component?.name === 'Symbol'\n        ? componentMappers['Symbol']\n        : undefined));\n\n  if (mapper) {\n    return mapper(block, options);\n  }\n\n  const bindings: MitosisNode['bindings'] = {};\n  const children: MitosisNode[] = [];\n  const slots: MitosisNode['slots'] = {};\n  const blocksSlots: MitosisNode['blocksSlots'] = {};\n\n  if (blockBindings) {\n    for (const key in blockBindings) {\n      if (key === 'css') {\n        continue;\n      }\n\n      const useKey = key.replace(/^(component\\.)?options\\./, '');\n      if (!useKey.includes('.')) {\n        let code = (blockBindings[key] as any).code || blockBindings[key];\n        const verifyCode = verifyIsValid(code);\n\n        if (verifyCode.valid) {\n          code = processBoundLogic(code);\n        } else {\n          if (options.escapeInvalidCode) {\n            code = '`' + code + ' [INVALID CODE]`';\n          } else {\n            console.warn(`Dropping binding \"${key}\" due to invalid code: ${code}`);\n            continue;\n          }\n        }\n\n        bindings[useKey] = createSingleBinding({\n          code,\n        });\n      } else if (useKey.includes('style') && useKey.includes('.')) {\n        const styleProperty = useKey.split('.')[1];\n        // TODO: add me in\n        // styleBindings[styleProperty] =\n        //   block.code?.bindings?.[key] || blockBindings[key];\n      }\n    }\n  }\n\n  const properties: { [key: string]: string } = {\n    ...block.properties,\n    ...(options.includeBuilderExtras && {\n      ['builder-id']: block.id!,\n      // class: `builder-block ${block.id} ${block.properties?.class || ''}`,\n    }),\n    ...(options.includeBuilderExtras && getBuilderPropsForSymbol(block)),\n  };\n  for (const key in properties) {\n    if (\n      typeof properties[key] === 'object' &&\n      properties[key] !== null &&\n      (properties[key] as any)['@type'] === '@builder.io/core:LocalizedValue'\n    ) {\n      const localizedValue = properties[key] as unknown as BuilderLocalizedValue;\n      localizedValues[`properties.${key}`] = localizedValue;\n      properties[key] = localizedValue.Default;\n    }\n  }\n\n  if (block.layerName) {\n    properties.$name = block.layerName;\n  }\n\n  const linkUrl = (block as any).linkUrl;\n  if (linkUrl) {\n    if (\n      typeof linkUrl === 'object' &&\n      linkUrl !== null &&\n      linkUrl['@type'] === '@builder.io/core:LocalizedValue'\n    ) {\n      properties.href = linkUrl.Default;\n      localizedValues['linkUrl'] = linkUrl;\n    } else {\n      properties.href = linkUrl;\n    }\n  }\n\n  if (block.component?.options) {\n    for (const key in block.component.options) {\n      const value = block.component.options[key];\n      const valueIsArrayOfBuilderElements = Array.isArray(value) && value.every(isBuilderElement);\n\n      const transformBldrElementToMitosisNode = (item: BuilderElement) => {\n        const node = builderElementToMitosisNode(item, {\n          ...options,\n          includeSpecialBindings: false,\n        });\n\n        return node;\n      };\n\n      if (isBuilderElement(value)) {\n        slots[key] = [transformBldrElementToMitosisNode(value)];\n      } else if (typeof value === 'string') {\n        properties[key] = value;\n      } else if (\n        typeof value === 'object' &&\n        value !== null &&\n        value['@type'] === '@builder.io/core:LocalizedValue'\n      ) {\n        properties[key] = value.Default;\n        localizedValues[`component.options.${key}`] = value;\n      } else if (valueIsArrayOfBuilderElements) {\n        const childrenElements = value\n          .filter((item) => {\n            if (item.properties?.src?.includes('/api/v1/pixel')) {\n              return false;\n            }\n            return true;\n          })\n          .map(transformBldrElementToMitosisNode);\n\n        slots[key] = childrenElements;\n      } else if (\n        options.enableBlocksSlots &&\n        !componentMappers[block.component?.name] &&\n        (Array.isArray(value) || (typeof value === 'object' && value !== null))\n      ) {\n        /**\n         * Builder Elements that have their own mappers should not use blocksSlots\n         * even if the mapper is disabled via _internalOptions as it will cause\n         * problems when trying to use the mapper in the future.\n         */\n        const data = Array.isArray(value) ? [...value] : { ...value };\n        let hasElement = false;\n        traverse(data).forEach(function (d) {\n          if (isBuilderElement(d)) {\n            /**\n             * Replacing the Builder element with a Mitosis node in-place\n             * allows us to assign to blockSlots while preserving the structure\n             * of this deeply nested data.\n             */\n            this.update(builderElementToMitosisNode(d, options, _internalOptions));\n            hasElement = true;\n          }\n        });\n\n        // If no elements were updated then this is just a regular binding\n        if (hasElement) {\n          blocksSlots[key] = data;\n        } else {\n          bindings[key] = createSingleBinding({ code: json5.stringify(value) });\n        }\n      } else {\n        bindings[key] = createSingleBinding({ code: json5.stringify(value) });\n      }\n    }\n  }\n\n  const css = getCssFromBlock(block);\n  let styleString = getStyleStringFromBlock(block, options);\n  const actionBindings = getActionBindingsFromBlock(block, options);\n  for (const binding in blockBindings) {\n    if (binding.startsWith('component.options') || binding.startsWith('options')) {\n      const value = blockBindings[binding];\n      const useKey = binding.replace(/^(component\\.options\\.|options\\.)/, '');\n      bindings[useKey] = createSingleBinding({ code: value });\n    }\n  }\n\n  // Add data attributes for Builder layer properties\n  const dataAttributes: Record<string, string> = {};\n  if (block.layerLocked !== undefined) {\n    dataAttributes['data-builder-layerLocked'] = String(block.layerLocked);\n  }\n  if (block.groupLocked !== undefined) {\n    dataAttributes['data-builder-groupLocked'] = String(block.groupLocked);\n  }\n  if (\n    block.component?.name &&\n    /:/.test(block.component?.name) &&\n    !builderBlockPrefixes.includes(block.component?.name.split(':')[0])\n  ) {\n    dataAttributes['data-builder-originalName'] = block.component?.name;\n  }\n\n  const node = createMitosisNode({\n    name:\n      block.component?.name?.replace(/[^a-z0-9]/gi, '') ||\n      block.tagName ||\n      ((block as any).linkUrl ? 'a' : 'div'),\n    properties: {\n      ...(block.component && includeSpecialBindings && { $tagName: block.tagName }),\n      ...(block.class && { class: block.class }),\n      ...properties,\n      ...dataAttributes,\n    },\n    bindings: {\n      ...bindings,\n      ...actionBindings,\n      ...(styleString && {\n        style: createSingleBinding({ code: styleString }),\n      }),\n      ...(css &&\n        Object.keys(css).length && {\n          css: createSingleBinding({ code: JSON.stringify(css) }),\n        }),\n    },\n    slots: {\n      ...slots,\n    },\n    ...(Object.keys(blocksSlots).length > 0 && { blocksSlots }),\n    meta: {\n      ...getMetaFromBlock(block, options),\n    },\n    ...(Object.keys(localizedValues).length && { localizedValues }),\n  });\n\n  node.children = children.concat(\n    (block.children || []).map((item) => builderElementToMitosisNode(item, options)),\n  );\n\n  return node;\n};\n\nconst getBuilderPropsForSymbol = (\n  block: BuilderElement,\n): undefined | { 'builder-content-id': string } => {\n  if (block.children?.length === 1) {\n    const child = block.children[0];\n    const builderContentId = child.properties?.['builder-content-id'];\n    if (builderContentId) {\n      return { 'builder-content-id': builderContentId };\n    }\n  }\n  return undefined;\n};\n\nexport const getMetaFromBlock = (block: BuilderElement, options: BuilderToMitosisOptions) => {\n  const { includeMeta = false } = options;\n  return includeMeta\n    ? {\n        'builder-id': block.id,\n        ...block.meta,\n      }\n    : {};\n};\n\nconst getHooks = (content: BuilderContent) => {\n  const code = convertExportDefaultToReturn(content.data?.tsCode || content.data?.jsCode || '');\n  try {\n    return parseJsx(`\n    export default function TemporaryComponent() {\n      ${\n        // Mitosis parser looks for useStore to be a variable assignment,\n        // but in Builder that's not how it works. For now do a replace to\n        // easily resuse the same parsing code as this is the only difference\n        code.replace(`useStore(`, `var state = useStore(`)\n      }\n    }`);\n  } catch (err) {\n    console.warn('Could not parse js code as a Mitosis component body', err, code);\n    return null;\n  }\n};\n\n/**\n * Take Builder custom jsCode and extract the contents of the useStore hook\n * and return it as a JS object along with the inputted code with the hook\n * code extracted\n */\nexport function extractStateHook(code: string): {\n  code: string;\n  state: MitosisState;\n} {\n  const { types } = babel;\n  let state: MitosisState = {};\n  const body = parseCode(code);\n  const newBody = body.slice();\n  for (let i = 0; i < body.length; i++) {\n    const statement = body[i];\n    if (types.isExpressionStatement(statement)) {\n      const { expression } = statement;\n      // Check for useStore\n      if (types.isCallExpression(expression)) {\n        if (types.isIdentifier(expression.callee) && expression.callee.name === 'useStore') {\n          const arg = expression.arguments[0];\n          if (types.isObjectExpression(arg)) {\n            state = parseStateObjectToMitosisState(arg);\n            newBody.splice(i, 1);\n          }\n        }\n\n        if (types.isMemberExpression(expression.callee)) {\n          if (\n            types.isIdentifier(expression.callee.object) &&\n            expression.callee.object.name === 'Object'\n          ) {\n            if (\n              types.isIdentifier(expression.callee.property) &&\n              expression.callee.property.name === 'assign'\n            ) {\n              const arg = expression.arguments[1];\n              if (types.isObjectExpression(arg)) {\n                state = parseStateObjectToMitosisState(arg);\n                newBody.splice(i, 1);\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  const newCode = generate(types.program(newBody)).code || '';\n\n  return { code: newCode, state };\n}\n\n/**\n * Extracts Mitosis state from Builder state.\n * @param mitosisState Mitosis state to update\n * @param builderState Builder state to extract from\n * @returns\n */\nexport function extractMitosisStateFromBuilderState(\n  mitosisState: MitosisState,\n  builderState?: {\n    [key: string]: any;\n  },\n) {\n  if (!builderState) return;\n  for (const key in builderState) {\n    let value = builderState[key];\n    if (typeof value === 'function' && !mitosisState[key]) {\n      mitosisState[key] = {\n        type: 'function',\n        code: value.toString(),\n      };\n      continue;\n    }\n\n    if (!mitosisState[key]) {\n      mitosisState[key] = {\n        type: 'property',\n        propertyType: 'normal',\n        code: JSON.stringify(value),\n      };\n    }\n  }\n}\n\nexport function convertExportDefaultToReturn(code: string) {\n  try {\n    const { types } = babel;\n    const body = parseCode(code);\n    if (body.length === 0) return code;\n    const newBody = body.slice();\n    for (let i = 0; i < body.length; i++) {\n      const statement = body[i];\n      if (types.isExportDefaultDeclaration(statement)) {\n        if (\n          types.isCallExpression(statement.declaration) ||\n          types.isExpression(statement.declaration)\n        ) {\n          newBody[i] = types.returnStatement(statement.declaration);\n        }\n      }\n    }\n\n    return generate(types.program(newBody)).code || '';\n  } catch (e) {\n    const error = e as { code?: string; reasonCode?: string };\n    if (error.code === 'BABEL_PARSE_ERROR') {\n      return code;\n    } else {\n      throw e;\n    }\n  }\n}\n\nconst updateBindings = (node: BuilderElement, from: string, to: string) => {\n  traverse(node).forEach(function (item) {\n    if (isBuilderElement(item)) {\n      if (item.bindings) {\n        for (const [key, value] of Object.entries(item.bindings)) {\n          if (value?.includes(from)) {\n            item.bindings[key] = value.replaceAll(from, to);\n          }\n        }\n      }\n      if (item.actions) {\n        for (const [key, value] of Object.entries(item.actions)) {\n          if (value?.includes(from)) {\n            item.actions[key] = value.replaceAll(from, to);\n          }\n        }\n      }\n    }\n  });\n\n  return node;\n};\n\n// TODO: maybe this should be part of the builder -> Mitosis part\nfunction extractSymbols(json: BuilderContent) {\n  const subComponents: { content: BuilderContent; name: string }[] = [];\n\n  const symbols: { element: BuilderElement; depth: number; id: string }[] = [];\n\n  traverse(json).forEach(function (item) {\n    if (isBuilderElement(item)) {\n      if (item.component?.name === 'Symbol') {\n        symbols.push({ element: item, depth: this.path.length, id: item.id! });\n      }\n    }\n  });\n\n  const symbolsSortedDeepestFirst = sortBy(symbols, (info) => info.depth)\n    .reverse()\n    .map((el) => el.element);\n\n  let symbolsFound = 0;\n\n  for (const el of symbolsSortedDeepestFirst) {\n    const symbolValue = el.component?.options?.symbol;\n    const elContent = symbolValue?.content;\n\n    if (!elContent) {\n      console.warn('Symbol missing content', el.id);\n      if (el.component?.options.symbol.content) {\n        delete el.component.options.symbol.content;\n      }\n      continue;\n    }\n\n    const symbolName = elContent.name || symbolValue?.name;\n    const componentName = sanitizeSymbolName(symbolName);\n\n    el.component!.name = componentName;\n\n    if (el.component?.options.symbol.content) {\n      delete el.component.options.symbol.content;\n    }\n\n    subComponents.push({\n      content: elContent,\n      name: componentName,\n    });\n  }\n\n  return {\n    content: json,\n    subComponents,\n  };\n}\n\nexport const createBuilderElement = (options?: Partial<BuilderElement>): BuilderElement => ({\n  '@type': '@builder.io/sdk:Element',\n  id: 'builder-' + hashCodeAsString(options),\n  ...options,\n});\n\nexport const isBuilderElement = (el: unknown): el is BuilderElement =>\n  (el as any)?.['@type'] === '@builder.io/sdk:Element';\n\nconst builderContentPartToMitosisComponent = (\n  builderContent: BuilderContent,\n  options: BuilderToMitosisOptions = {},\n) => {\n  builderContent = fastClone(builderContent);\n  traverse(builderContent).forEach(function (elem) {\n    if (isBuilderElement(elem)) {\n      // Try adding self-closing tags to void elements, since Builder Text\n      // blocks can contain arbitrary HTML\n      // List taken from https://developer.mozilla.org/en-US/docs/Glossary/Empty_element\n      // TODO: Maybe this should be using something more robust than a regular expression\n      const voidElemRegex =\n        /(<area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr[^>]+)>/gm;\n\n      try {\n        if (elem.component?.name === 'Text') {\n          const text = elem.component.options.text;\n          elem.component.options.text = text.replace(voidElemRegex, '$1 />');\n          // Remove broken emojis\n          const hasUnpairedSurrogate =\n            /[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/g;\n          if (hasUnpairedSurrogate.test(text)) {\n            elem.component.options.text = text.replace(hasUnpairedSurrogate, '');\n          }\n        }\n      } catch (_error) {\n        // pass\n      }\n\n      try {\n        if (elem.component?.name === 'Custom Code') {\n          elem.component.options.code = elem.component.options.code.replace(voidElemRegex, '$1 />');\n        }\n      } catch (_error) {\n        // pass\n      }\n    }\n  });\n\n  const { state, code } = extractStateHook(\n    builderContent?.data?.tsCode || builderContent?.data?.jsCode || '',\n  );\n  const customCode = convertExportDefaultToReturn(code);\n\n  const parsed = getHooks(builderContent);\n\n  const parsedState = parsed?.state || {};\n\n  const mitosisState =\n    Object.keys(parsedState).length > 0\n      ? parsedState\n      : {\n          ...state,\n          ...mapBuilderContentStateToMitosisState(builderContent.data?.state || {}),\n        };\n  extractMitosisStateFromBuilderState(mitosisState, builderContent.data?.state);\n  const componentJson = createMitosisComponent({\n    meta: {\n      useMetadata: {\n        httpRequests: builderContent.data?.httpRequests,\n      },\n      // cmp.meta.cssCode exists for backwards compatibility, prefer cmp.style\n      ...(builderContent.data?.cssCode && { cssCode: builderContent.data.cssCode }),\n    },\n    ...(builderContent.data?.cssCode && { style: builderContent.data?.cssCode }),\n    inputs: builderContent.data?.inputs?.map((input) => ({\n      name: input.name,\n      defaultValue: input.defaultValue,\n    })),\n    state: mitosisState,\n    hooks: {\n      onMount: [\n        ...(parsed?.hooks.onMount.length\n          ? parsed?.hooks.onMount\n          : customCode\n          ? [{ code: customCode }]\n          : []),\n      ],\n    },\n    children: (builderContent.data?.blocks || [])\n      .filter((item) => {\n        if (item.properties?.src?.includes('/api/v1/pixel')) {\n          return false;\n        }\n        return true;\n      })\n      .map((item) => builderElementToMitosisNode(item, options)),\n  });\n\n  return componentJson;\n};\n\nexport const builderContentToMitosisComponent = (\n  builderContent: BuilderContent,\n  options: BuilderToMitosisOptions = {},\n): MitosisComponent => {\n  builderContent = fastClone(builderContent);\n\n  const separated = extractSymbols(builderContent);\n\n  const componentJson: MitosisComponent = {\n    ...builderContentPartToMitosisComponent(separated.content, options),\n    subComponents: separated.subComponents.map((item) => ({\n      ...builderContentPartToMitosisComponent(item.content, options),\n      name: item.name,\n    })),\n  };\n\n  return componentJson;\n};\n\nfunction mapBuilderBindingsToMitosisBindingWithCode(\n  bindings: { [key: string]: string } | undefined,\n  options?: BuilderToMitosisOptions,\n): MitosisNode['bindings'] {\n  const result: MitosisNode['bindings'] = {};\n  bindings &&\n    Object.keys(bindings).forEach((key) => {\n      const value: string | { code: string } = bindings[key] as any;\n      let code = '';\n      if (typeof value === 'string') {\n        code = value;\n      } else if (value && typeof value === 'object' && value.code) {\n        code = value.code;\n      } else {\n        throw new Error('Unexpected binding value: ' + JSON.stringify(value));\n      }\n\n      const verifyCode = verifyIsValid(code);\n      if (verifyCode.valid) {\n        code = processBoundLogic(code);\n      } else {\n        if (options?.escapeInvalidCode) {\n          code = '`' + code + ' [INVALID CODE]`';\n        } else {\n          console.warn(`Dropping binding \"${key}\" due to invalid code: ${code}`);\n          return;\n        }\n      }\n\n      result[key] = createSingleBinding({ code });\n    });\n  return result;\n}\n\ntype Styles = Record<string, any>;\n\nfunction combineStyles(parent: Styles, child: Styles) {\n  const marginStyles = ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'];\n  const paddingStyles = ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'];\n  const distanceStylesToCombine = [...paddingStyles, ...marginStyles];\n  const merged: Styles = {\n    ...omit(child, distanceStylesToCombine),\n    ...parent,\n  };\n  for (const key of distanceStylesToCombine) {\n    // Funky things happen if different alignment\n    if (parent.alignSelf !== child.alignSelf && (key === 'marginLeft' || key === 'marginRight')) {\n      merged[key] = parent[key];\n      continue;\n    }\n    const childNum = parseFloat(child[key]) || 0;\n    const parentKeyToUse = key.replace(/margin/, 'padding');\n    const parentNum = parseFloat(parent[parentKeyToUse]) || 0;\n    if (childNum || parentNum) {\n      merged[parentKeyToUse] = `${childNum + parentNum}px`;\n    }\n  }\n\n  for (const [key, value] of Object.entries(merged)) {\n    if (value && typeof value === 'object') {\n      merged[key] = combineStyles(parent[key] || {}, child[key] || {});\n    }\n  }\n  return merged;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/builder/helpers.ts",
    "content": "import { mapValues } from 'lodash';\nimport { GETTER } from '../../helpers/patterns';\nimport { JSONObject } from '../../types/json';\nimport { MitosisComponent, StateValue, StateValueType } from '../../types/mitosis-component';\n\nconst __DO_NOT_USE_FUNCTION_LITERAL_PREFIX = `@builder.io/mitosis/function:`;\nconst __DO_NOT_USE_METHOD_LITERAL_PREFIX = `@builder.io/mitosis/method:`;\n\n/**\n * Maps the Builder State format to the Mitosis State format.\n */\nconst mapJsonToStateValue = (value: any): StateValue => {\n  if (typeof value === 'string') {\n    if (value.startsWith(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX)) {\n      return { type: 'function', code: value.replace(__DO_NOT_USE_FUNCTION_LITERAL_PREFIX, '') };\n    } else if (value.startsWith(__DO_NOT_USE_METHOD_LITERAL_PREFIX)) {\n      const strippedValue = value.replace(__DO_NOT_USE_METHOD_LITERAL_PREFIX, '');\n      const isGet = Boolean(strippedValue.match(GETTER));\n      const type: StateValueType = isGet ? 'getter' : 'method';\n      return { type, code: strippedValue };\n    }\n  }\n  return { type: 'property', code: JSON.stringify(value), propertyType: 'normal' };\n};\n\nexport const mapBuilderContentStateToMitosisState = (\n  value: JSONObject,\n): MitosisComponent['state'] => mapValues(value, mapJsonToStateValue);\n"
  },
  {
    "path": "packages/core/src/parsers/builder/index.ts",
    "content": "export * from './builder';\n"
  },
  {
    "path": "packages/core/src/parsers/context.ts",
    "content": "import * as babel from '@babel/core';\nimport { createMitosisContext } from '../helpers/create-mitosis-context';\nimport { MitosisContext } from '../types/mitosis-context';\nimport { parseStateObjectToMitosisState } from './jsx/state';\n\nconst { types } = babel;\n\nconst tsPreset = require('@babel/preset-typescript');\n\ntype ParseContextOptions = {\n  name: string;\n};\n\nexport function parseContext(code: string, options: ParseContextOptions): MitosisContext | null {\n  let found = false;\n  const context = createMitosisContext({ name: options.name });\n\n  babel.transform(code, {\n    configFile: false,\n    babelrc: false,\n    presets: [[tsPreset, { isTSX: true, allExtensions: true }]],\n    plugins: [\n      () => ({\n        visitor: {\n          Program(path: babel.NodePath<babel.types.Program>) {\n            for (const item of path.node.body) {\n              if (types.isExportDefaultDeclaration(item)) {\n                const expression = item.declaration;\n                if (types.isCallExpression(expression)) {\n                  if (\n                    types.isIdentifier(expression.callee) &&\n                    expression.callee.name === 'createContext'\n                  ) {\n                    const [firstArg, secondArg] = expression.arguments;\n                    if (types.isObjectExpression(firstArg)) {\n                      // TODO: support non object values by parsing any node type\n                      // like the logic within each property value of parseStateObject\n                      context.value = parseStateObjectToMitosisState(firstArg);\n\n                      if (types.isObjectExpression(secondArg)) {\n                        for (const prop of secondArg.properties) {\n                          if (!types.isProperty(prop) || !types.isIdentifier(prop.key)) continue;\n                          const isReactive = prop.key.name === 'reactive';\n\n                          if (\n                            isReactive &&\n                            types.isBooleanLiteral(prop.value) &&\n                            prop.value.value\n                          ) {\n                            context.type = 'reactive';\n                          }\n                        }\n                      }\n                      found = true;\n                    }\n                  }\n                }\n              }\n            }\n          },\n        },\n      }),\n    ],\n  });\n\n  if (!found) {\n    return null;\n  }\n  return context;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/__snapshots__/props-types.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`findOptionalProps > interfaces 1`] = `\n[\n  \"id\",\n  \"foo\",\n]\n`;\n\nexports[`findOptionalProps > type extending interface 1`] = `\n[\n  \"foo\",\n  \"id\",\n]\n`;\n\nexports[`findOptionalProps > types 1`] = `\n[\n  \"foo\",\n  \"id\",\n]\n`;\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/__snapshots__/signals.test.ts.snap",
    "content": "// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html\n\nexports[`Signals type parsing > findSignals 1`] = `\n{\n  \"context\": Set {\n    \"context\",\n  },\n  \"props\": Set {\n    \"k\",\n  },\n  \"state\": Set {\n    \"n\",\n  },\n}\n`;\n\nexports[`Signals type parsing > mapSignalType > react 1`] = `\n\"import { Signal, useState, useContext, createContext } from '@builder.io/mitosis';\nconst FooContext = createContext({\n  foo: 'bar'\n}, {\n  reactive: true\n});\nconst NormalContext = createContext({\n  foo: 'bar'\n});\ntype K = string;\ntype Props = {\n  k: K;\n  another: number;\n};\nexport default function MyComponent(props: Props) {\n  const [n] = useState(123, {\n    reactive: true\n  });\n  const context = useContext(FooContext);\n  const normalContext = useContext(NormalContext);\n  console.log(n, n.value, props.k, props.k.value, context, context.value.foo, normalContext, normalContext.value.foo);\n  return <RenderBlock a={props.k} b={props.k.value} c={n} d={n.value} e={context} f={context.value.foo} g={normalContext} h={normalContext.value.foo} />;\n}\n\"\n`;\n\nexports[`Signals type parsing > mapSignalType > svelte 1`] = `\n\"import { Signal, useState, useContext, createContext } from '@builder.io/mitosis';\nconst FooContext = createContext({\n  foo: 'bar'\n}, {\n  reactive: true\n});\nconst NormalContext = createContext({\n  foo: 'bar'\n});\ntype K = Writable<string>;\ntype Props = {\n  k: K;\n  another: Writable<number>;\n};\nexport default function MyComponent(props: Props) {\n  const [n] = useState(123, {\n    reactive: true\n  });\n  const context = useContext(FooContext);\n  const normalContext = useContext(NormalContext);\n  console.log(n, n.value, props.k, props.k.value, context, context.value.foo, normalContext, normalContext.value.foo);\n  return <RenderBlock a={props.k} b={props.k.value} c={n} d={n.value} e={context} f={context.value.foo} g={normalContext} h={normalContext.value.foo} />;\n}\n\"\n`;\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/ast.ts",
    "content": "import * as babel from '@babel/core';\nimport { JSONOrNode, JSONOrNodeObject } from '../../types/json';\n\nconst { types } = babel;\n\nconst arrayToAst = (array: JSONOrNode[]) => types.arrayExpression(array.map(jsonToAst));\n\nexport const jsonToAst = (json: JSONOrNode): babel.types.Expression => {\n  if (types.isNode(json)) {\n    if (types.isJSXText(json)) {\n      return types.stringLiteral(json.value);\n    }\n    return json as babel.types.Expression;\n  }\n  switch (typeof json) {\n    case 'undefined':\n      return types.identifier('undefined');\n    case 'string':\n      return types.stringLiteral(json);\n    case 'number':\n      return types.numericLiteral(json);\n    case 'boolean':\n      return types.booleanLiteral(json);\n    case 'object':\n      if (!json) {\n        return types.nullLiteral();\n      }\n      if (Array.isArray(json)) {\n        return arrayToAst(json);\n      }\n      return jsonObjectToAst(json);\n  }\n};\n\nconst jsonObjectToAst = (json: JSONOrNodeObject): babel.types.Expression => {\n  if (!json) {\n    // TO-DO: This looks concerning...\n    return json as any;\n  }\n  const properties: babel.types.ObjectProperty[] = [];\n  for (const key in json) {\n    const value = json[key];\n    if (value === undefined) {\n      continue;\n    }\n    const keyAst = types.stringLiteral(key);\n    const valueAst = jsonToAst(value);\n    properties.push(types.objectProperty(keyAst, valueAst as any));\n  }\n  const newNode = types.objectExpression(properties);\n\n  return newNode;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/component-types.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport { Context } from './types';\n\nconst { types } = babel;\n\nexport const getPropsTypeRef = (\n  node: babel.types.FunctionDeclaration,\n  context: Context,\n): string | undefined => {\n  const param = node.params[0];\n  // TODO: component function params name must be props\n  if (\n    babel.types.isIdentifier(param) &&\n    param.name === 'props' &&\n    babel.types.isTSTypeAnnotation(param.typeAnnotation)\n  ) {\n    const paramIdentifier = babel.types.variableDeclaration('let', [\n      babel.types.variableDeclarator(param),\n    ]);\n    const generatedTypes = generate(paramIdentifier)\n      .code.replace(/^let\\sprops:\\s+/, '')\n      .replace(/;/g, '');\n\n    if (generatedTypes.startsWith('{')) {\n      const propsTypeRef = `${node.id?.name}Props`;\n\n      context.builder.component.types = [\n        ...(context.builder.component.types || []),\n        `export interface ${propsTypeRef} ${generatedTypes}`,\n      ];\n\n      return propsTypeRef;\n    }\n\n    return generatedTypes;\n  }\n  return undefined;\n};\n\nconst isTypeImport = (node: babel.Node): node is babel.types.ImportDeclaration =>\n  types.isImportDeclaration(node) &&\n  node.importKind === 'type' &&\n  // Babel adds an implicit JSX type import that we don't want\n  node.specifiers[0]?.local.name !== 'JSX';\n\nexport const isTypeOrInterface = (node: babel.Node) =>\n  types.isTSTypeAliasDeclaration(node) ||\n  types.isTSInterfaceDeclaration(node) ||\n  (types.isExportNamedDeclaration(node) && types.isTSTypeAliasDeclaration(node.declaration)) ||\n  (types.isExportNamedDeclaration(node) && types.isTSInterfaceDeclaration(node.declaration));\n\nimport { NodePath as BabelTraverseNodePath } from '@babel/traverse';\n\nconst getTypesFromNode = (\n  node:\n    | babel.types.TSTypeAliasDeclaration\n    | babel.types.ExportNamedDeclaration\n    | babel.types.TSInterfaceDeclaration\n    | babel.types.TSTypeAliasDeclaration\n    | babel.types.ImportDeclaration,\n  context: Context,\n) => {\n  const typeStr = generate(node).code;\n  const { types = [] } = context.builder.component;\n  types.push(typeStr);\n  context.builder.component.types = types.filter(Boolean);\n};\n\nexport const collectTypes = (\n  path:\n    | BabelTraverseNodePath<babel.types.TSTypeAliasDeclaration>\n    | BabelTraverseNodePath<babel.types.ExportNamedDeclaration>\n    | BabelTraverseNodePath<babel.types.TSInterfaceDeclaration>\n    | BabelTraverseNodePath<babel.types.TSTypeAliasDeclaration>,\n  context: Context,\n) => {\n  const { node } = path;\n  getTypesFromNode(node, context);\n  path.remove();\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/context.ts",
    "content": "import * as babel from '@babel/core';\nimport traverse from 'neotraverse/legacy';\nimport { createMitosisNode } from '../../helpers/create-mitosis-node';\nimport { isMitosisNode } from '../../helpers/is-mitosis-node';\nimport { traceReferenceToModulePath } from '../../helpers/trace-reference-to-module-path';\nimport { MitosisComponent } from '../../types/mitosis-component';\nimport { parseStateObjectToMitosisState } from './state';\n\nconst expressionToNode = (str: string) => {\n  const code = `export default ${str}`;\n  return (\n    (babel.parse(code) as babel.types.File).program.body[0] as babel.types.ExportDefaultDeclaration\n  ).declaration;\n};\n\n/**\n * Convert <Context.Provider /> to hooks formats by mutating the\n * MitosisComponent tree\n */\nexport function extractContextComponents(json: MitosisComponent) {\n  traverse(json).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      if (item.name.endsWith('.Provider')) {\n        const value = item.bindings?.value?.code;\n        const name = item.name.split('.')[0];\n        const refPath = traceReferenceToModulePath(json.imports, name)!;\n        json.context.set[refPath] = {\n          name,\n          value: value\n            ? parseStateObjectToMitosisState(\n                expressionToNode(value) as babel.types.ObjectExpression,\n              )\n            : undefined,\n        };\n\n        this.update(\n          createMitosisNode({\n            name: 'Fragment',\n            children: item.children,\n          }),\n        );\n      }\n      // TODO: maybe support Context.Consumer:\n      // if (item.name.endsWith('.Consumer')) { ... }\n    }\n  });\n}\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/element-parser.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport { pipe } from 'fp-ts/lib/function';\nimport json5 from 'json5';\nimport { createSingleBinding } from '../../helpers/bindings';\nimport { createMitosisNode } from '../../helpers/create-mitosis-node';\nimport { checkIsDefined } from '../../helpers/nullable';\nimport { ForNode, MitosisNode } from '../../types/mitosis-node';\nimport { babelDefaultTransform, transformAttributeName } from './helpers';\nimport type { ParseMitosisOptions } from './types';\nconst { types } = babel;\n\nconst getBodyExpression = (node: babel.types.Node) => {\n  if (types.isArrowFunctionExpression(node) || types.isFunctionExpression(node)) {\n    const callback = node.body;\n    if (callback.type === 'BlockStatement') {\n      for (const statement of callback.body) {\n        if (statement.type === 'ReturnStatement') {\n          return statement.argument;\n        }\n      }\n    } else {\n      return callback;\n    }\n  }\n  return undefined;\n};\n\nconst getForArguments = (params: any[]): ForNode['scope'] => {\n  const [forName, indexName, collectionName] = params\n    .filter((param): param is babel.types.Identifier => types.isIdentifier(param))\n    .map((param) => param.name)\n    .filter(checkIsDefined);\n\n  return {\n    forName,\n    collectionName,\n    indexName,\n  };\n};\n\n/**\n * Parses a JSX element into a MitosisNode.\n */\nexport const jsxElementToJson = (\n  node: babel.types.Expression | babel.types.JSX,\n  options: Partial<ParseMitosisOptions>,\n): MitosisNode | null => {\n  if (types.isJSXText(node)) {\n    const value = typeof node.extra?.raw === 'string' ? node.extra.raw : node.value;\n    return createMitosisNode({\n      properties: {\n        _text: value,\n      },\n    });\n  }\n\n  if (types.isJSXEmptyExpression(node)) {\n    return null;\n  }\n\n  if (types.isJSXExpressionContainer(node)) {\n    return jsxElementToJson(node.expression as any, options);\n  }\n\n  if (\n    (types.isCallExpression(node) || types.isOptionalCallExpression(node)) &&\n    (node.callee.type === 'MemberExpression' || node.callee.type === 'OptionalMemberExpression')\n  ) {\n    const isMap = node.callee.property.type === 'Identifier' && node.callee.property.name === 'map';\n    const isArrayFrom =\n      node.callee.property.type === 'Identifier' &&\n      node.callee.property.name === 'from' &&\n      node.callee.object.type === 'Identifier' &&\n      node.callee.object.name === 'Array';\n    if (isMap) {\n      const callback = node.arguments[0];\n      const bodyExpression = getBodyExpression(callback);\n      if (bodyExpression) {\n        const forArguments = getForArguments(\n          (callback as babel.types.ArrowFunctionExpression | babel.types.FunctionExpression).params,\n        );\n        return createMitosisNode({\n          name: 'For',\n          bindings: {\n            each: createSingleBinding({\n              code: generate(node.callee.object, {\n                compact: true,\n              }).code,\n            }),\n          },\n          scope: forArguments,\n          children: [jsxElementToJson(bodyExpression, options)!].filter(checkIsDefined),\n        });\n      }\n    } else if (isArrayFrom) {\n      // Array.from\n      const each = node.arguments[0];\n      const callback = node.arguments[1];\n      const bodyExpression = getBodyExpression(callback);\n      if (bodyExpression) {\n        const forArguments = getForArguments(\n          (callback as babel.types.ArrowFunctionExpression | babel.types.FunctionExpression).params,\n        );\n\n        return createMitosisNode({\n          name: 'For',\n          bindings: {\n            each: createSingleBinding({\n              code: generate(\n                {\n                  ...node,\n                  arguments: [each],\n                },\n                {\n                  compact: true,\n                },\n              ).code,\n            }),\n          },\n          scope: forArguments,\n          children: [jsxElementToJson(bodyExpression, options)!],\n        });\n      }\n    }\n  } else if (types.isLogicalExpression(node)) {\n    // {foo && <div />} -> <Show when={foo}>...</Show>\n    if (node.operator === '&&') {\n      return createMitosisNode({\n        name: 'Show',\n        bindings: {\n          when: createSingleBinding({\n            code: generate(node.left, {\n              compact: true,\n            }).code!,\n          }),\n        },\n        children: [jsxElementToJson(node.right as any, options)!].filter(checkIsDefined),\n      });\n    } else {\n      // TODO: good warning system for unsupported operators\n    }\n  } else if (types.isConditionalExpression(node)) {\n    // {foo ? <div /> : <span />} -> <Show when={foo} else={<span />}>...</Show>\n    const child = jsxElementToJson(node.consequent as any, options);\n    const elseCase = jsxElementToJson(node.alternate as any, options);\n\n    return createMitosisNode({\n      name: 'Show',\n      meta: {\n        ...(checkIsDefined(elseCase) ? { else: elseCase } : undefined),\n      },\n      bindings: {\n        when: createSingleBinding({ code: generate(node.test, { compact: true }).code }),\n      },\n      children: child === null ? [] : [child],\n    });\n  } else if (types.isJSXFragment(node)) {\n    return createMitosisNode({\n      name: 'Fragment',\n      children: node.children\n        .map((child) => jsxElementToJson(child, options))\n        .filter(checkIsDefined),\n    });\n  } else if (types.isJSXSpreadChild(node)) {\n    // TODO: support spread attributes\n    return null;\n  } else if (types.isNullLiteral(node) || types.isBooleanLiteral(node)) {\n    return null;\n  } else if (types.isNumericLiteral(node)) {\n    return createMitosisNode({\n      properties: {\n        _text: String(node.value),\n      },\n    });\n  } else if (types.isStringLiteral(node)) {\n    return createMitosisNode({\n      properties: {\n        _text: node.value,\n      },\n    });\n  }\n  if (!types.isJSXElement(node)) {\n    return createMitosisNode({\n      bindings: {\n        _text: createSingleBinding({ code: generate(node, { compact: true }).code }),\n      },\n    });\n  }\n\n  const nodeName = generate(node.openingElement.name).code;\n\n  if (nodeName === 'Show') {\n    const whenAttr: babel.types.JSXAttribute | undefined = node.openingElement.attributes.find(\n      (item) => types.isJSXAttribute(item) && item.name.name === 'when',\n    ) as any;\n\n    const elseAttr: babel.types.JSXAttribute | undefined = node.openingElement.attributes.find(\n      (item) => types.isJSXAttribute(item) && item.name.name === 'else',\n    ) as any;\n\n    const whenValue =\n      whenAttr && types.isJSXExpressionContainer(whenAttr.value)\n        ? generate(whenAttr.value.expression, { compact: true }).code\n        : undefined;\n\n    const elseValue =\n      elseAttr &&\n      types.isJSXExpressionContainer(elseAttr.value) &&\n      jsxElementToJson(elseAttr.value.expression as any, options);\n\n    return createMitosisNode({\n      name: 'Show',\n      meta: {\n        else: elseValue || undefined,\n      },\n      bindings: {\n        ...(whenValue ? { when: createSingleBinding({ code: whenValue }) } : {}),\n      },\n      children: node.children\n        .map((child) => jsxElementToJson(child, options))\n        .filter(checkIsDefined),\n    });\n  }\n\n  // <For ...> control flow component\n  if (nodeName === 'For') {\n    const child = node.children.find((item): item is babel.types.JSXExpressionContainer =>\n      types.isJSXExpressionContainer(item),\n    );\n    if (checkIsDefined(child)) {\n      const childExpression = child.expression;\n\n      if (types.isArrowFunctionExpression(childExpression)) {\n        const forArguments = getForArguments(childExpression?.params);\n\n        const forCode = pipe(node.openingElement.attributes[0], (attr) => {\n          if (types.isJSXAttribute(attr) && types.isJSXExpressionContainer(attr.value)) {\n            return generate(attr.value.expression, { compact: true }).code;\n          } else {\n            // TO-DO: is an empty string valid here?\n            return '';\n          }\n        });\n\n        return createMitosisNode({\n          name: 'For',\n          bindings: {\n            each: createSingleBinding({\n              code: forCode,\n            }),\n          },\n          scope: forArguments,\n          children: [jsxElementToJson(childExpression.body as any, options)!],\n        });\n      }\n    }\n  }\n\n  // const properties: MitosisNode['properties'] = {}\n  // const bindings: MitosisNode['bindings'] = {}\n  // const slots: MitosisNode['slots'] = {}\n\n  const { bindings, properties, slots, blocksSlots } = node.openingElement.attributes.reduce<{\n    bindings: MitosisNode['bindings'];\n    properties: MitosisNode['properties'];\n    slots: {} & MitosisNode['slots'];\n    blocksSlots: {} & MitosisNode['blocksSlots'];\n  }>(\n    (memo, item) => {\n      if (types.isJSXAttribute(item)) {\n        const key = transformAttributeName(item.name.name as string);\n        const value = item.value;\n\n        // <Foo myProp />\n        if (value === null) {\n          memo.bindings[key] = createSingleBinding({ code: 'true' });\n          return memo;\n        }\n\n        // <Foo myProp=\"hello\" />\n        if (types.isStringLiteral(value)) {\n          memo.properties[key] = value.value;\n          return memo;\n        }\n\n        if (!types.isJSXExpressionContainer(value)) return memo;\n\n        const { expression } = value;\n\n        if (types.isStringLiteral(expression)) {\n          // <Foo myProp={\"hello\"} />\n          memo.properties[key] = expression.value;\n        } else if (key.startsWith('on') && types.isArrowFunctionExpression(expression)) {\n          // <Foo myProp={() => {}} />\n          const args = expression.params.map((node) => (node as babel.types.Identifier)?.name);\n\n          memo.bindings[key] = createSingleBinding({\n            code: generate(expression.body, { compact: true }).code,\n            async: expression.async === true ? true : undefined,\n            arguments: args.length ? args : undefined,\n            bindingType: 'function',\n          });\n        } else if (/^on[A-Z]/.test(key) && types.isExpression(expression)) {\n          // regex ignores props that happen to start with \"on\" but are not handlers\n          // <Foo onClick={state.handler} />\n          const call = types.callExpression(expression, []);\n\n          memo.bindings[key] = createSingleBinding({\n            code: generate(call, { compact: true }).code,\n            bindingType: 'function',\n          });\n        } else if (types.isJSXElement(expression) || types.isJSXFragment(expression)) {\n          // <Foo myProp={<MoreMitosisNode><div /></MoreMitosisNode>} />\n          // <Foo myProp={<><Node /><Node /></>} />\n          const slotNode = jsxElementToJson(expression, options);\n          if (!slotNode) return memo;\n\n          memo.slots[key] = [slotNode];\n\n          // Temporarily keep the slot as a binding until we migrate generators to use the slots.\n          memo.bindings[key] = createSingleBinding({\n            code: generate(expression, { compact: true }).code,\n          });\n        } else {\n          if (\n            options.enableBlocksSlots &&\n            (types.isArrayExpression(expression) || types.isObjectExpression(expression))\n          ) {\n            /**\n             * Find any deeply nested JSX Elements, convert them to Mitosis nodes\n             * then store them in \"replacements\" to later do a string substitution\n             * to swap out the stringified JSX with stringified Mitosis nodes.\n             *\n             * Object expressions need to wrapped in an expression statement (e.g. `({... })`)\n             * otherwise Babel generate will fail.\n             */\n            const code = types.isObjectExpression(expression)\n              ? generate(types.expressionStatement(expression)).code\n              : generate(expression).code;\n            const replacements: { start: number; end: number; node: MitosisNode }[] = [];\n\n            babelDefaultTransform(code, {\n              JSXElement(path) {\n                const { start, end } = path.node;\n                if (start == null || end == null) {\n                  return;\n                }\n                const node = jsxElementToJson(path.node, options);\n                if (!node) return;\n\n                /**\n                 * Perform replacements in the reverse order in which we saw them\n                 * otherwise start/end indices will quickly become incorrect.\n                 */\n                replacements.unshift({\n                  start,\n                  end,\n                  node,\n                });\n\n                /**\n                 * babelTransform will keep iterating into deeper nodes. However,\n                 * the \"jsxElementToJson\" call above will handle deeper nodes.\n                 * Replace the path will null so we do not accidentally process\n                 * child nodes multiple times.\n                 */\n                path.replaceWith(types.nullLiteral());\n              },\n            });\n\n            // If no replacements then this is just a regular binding\n            if (replacements.length > 0) {\n              // Replace stringified JSX (e.g. <Foo></Foo>) with stringified Mitosis JSON\n              let replacedCode = code;\n              replacements.forEach(({ start, end, node }) => {\n                replacedCode =\n                  replacedCode.substring(0, start) +\n                  JSON.stringify(node) +\n                  replacedCode.substring(end);\n              });\n\n              let finalCode = replacedCode;\n              if (types.isObjectExpression(expression)) {\n                /**\n                 * Remove the ( and ); surrounding the expression because we just want\n                 * a valid JS object instead.\n                 */\n                const match = replacedCode.match(/\\(([\\s\\S]*?)\\);/);\n                if (match) {\n                  finalCode = match[1];\n                }\n              }\n\n              /**\n               * The result should be a valid array of objects. Use json5 to parse\n               * as not every key will be wrapped in quotes, so a normal JSON.parse\n               * will fail.\n               */\n              memo.blocksSlots[key] = json5.parse(finalCode);\n              return memo;\n            }\n          }\n\n          memo.bindings[key] = createSingleBinding({\n            code: generate(expression, { compact: true }).code,\n          });\n        }\n\n        return memo;\n      } else if (types.isJSXSpreadAttribute(item)) {\n        // TODO: potentially like Vue store bindings and properties as array of key value pairs\n        // too so can do this accurately when order matters. Also tempting to not support spread,\n        // as some frameworks do not support it (e.g. Angular) tho Angular may be the only one\n\n        const { code: key } = generate(item.argument, { compact: true });\n\n        memo.bindings[key] = {\n          code: types.stringLiteral(generate(item.argument, { compact: true }).code).value,\n          type: 'spread',\n          spreadType: 'normal',\n        };\n      }\n      return memo;\n    },\n    {\n      bindings: {},\n      properties: {},\n      slots: {},\n      blocksSlots: {},\n    },\n  );\n\n  return createMitosisNode({\n    name: nodeName,\n    properties,\n    bindings,\n    children: node.children.map((child) => jsxElementToJson(child, options)).filter(checkIsDefined),\n    slots: Object.keys(slots).length > 0 ? slots : undefined,\n    blocksSlots: Object.keys(blocksSlots).length > 0 ? blocksSlots : undefined,\n  });\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/exports.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport { MitosisExports } from '../../types/mitosis-component';\nimport { isTypeOrInterface } from './component-types';\nimport { isImportOrDefaultExport } from './helpers';\n\nconst { types } = babel;\n\nexport const generateExports = (path: babel.NodePath<babel.types.Program>): MitosisExports => {\n  const exportsOrLocalVariables = path.node.body.filter(\n    (statement) =>\n      !isImportOrDefaultExport(statement) &&\n      !isTypeOrInterface(statement) &&\n      !types.isExpressionStatement(statement),\n  );\n\n  return exportsOrLocalVariables.reduce<MitosisExports>((pre, node) => {\n    let name, isFunction;\n    if (babel.types.isExportNamedDeclaration(node)) {\n      if (\n        babel.types.isVariableDeclaration(node.declaration) &&\n        babel.types.isIdentifier(node.declaration.declarations[0].id)\n      ) {\n        name = node.declaration.declarations[0].id.name;\n        isFunction = babel.types.isFunction(node.declaration.declarations[0].init);\n      }\n\n      if (babel.types.isFunctionDeclaration(node.declaration)) {\n        name = node.declaration.id?.name;\n        isFunction = true;\n      }\n    } else {\n      if (\n        babel.types.isVariableDeclaration(node) &&\n        babel.types.isIdentifier(node.declarations[0].id)\n      ) {\n        name = node.declarations[0].id.name;\n        isFunction = babel.types.isFunction(node.declarations[0].init);\n      }\n\n      if (babel.types.isFunctionDeclaration(node)) {\n        name = node.id?.name;\n        isFunction = true;\n      }\n    }\n\n    if (name) {\n      pre[name] = {\n        code: generate(node).code,\n        isFunction,\n      };\n    } else {\n      console.warn('Could not parse export or variable: ignoring node', node);\n    }\n    return pre;\n  }, {});\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/function-parser.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport { isIdentifier, isMemberExpression } from '@babel/types';\nimport { HOOKS } from '../../constants/hooks';\nimport { createMitosisComponent } from '../../helpers/create-mitosis-component';\nimport { getBindingsCode } from '../../helpers/get-bindings';\nimport { traceReferenceToModulePath } from '../../helpers/trace-reference-to-module-path';\nimport { JSONOrNode } from '../../types/json';\nimport { MitosisComponent, ReactivityType } from '../../types/mitosis-component';\nimport { MitosisNode } from '../../types/mitosis-node';\nimport { getPropsTypeRef } from './component-types';\nimport { jsxElementToJson } from './element-parser';\nimport { parseCode, parseCodeJson } from './helpers';\nimport { generateUseStyleCode, parseDefaultPropsHook } from './hooks';\nimport { processHookCode } from './hooks/helpers';\nimport { parseStateObjectToMitosisState } from './state';\nimport type { Context, ParseMitosisOptions } from './types';\n\nconst { types } = babel;\n\n/**\n * Parses function declarations within the Mitosis copmonent's body to JSON\n */\nexport const componentFunctionToJson = (\n  node: babel.types.FunctionDeclaration,\n  context: Context,\n  stateToScope: string[],\n  options: Partial<ParseMitosisOptions>,\n): JSONOrNode => {\n  const hooks: MitosisComponent['hooks'] = {\n    onMount: [],\n    onEvent: [],\n  };\n  const state: MitosisComponent['state'] = {};\n  const accessedContext: MitosisComponent['context']['get'] = {};\n  const setContext: MitosisComponent['context']['set'] = {};\n  const refs: MitosisComponent['refs'] = {};\n  for (const item of node.body.body) {\n    if (types.isExpressionStatement(item)) {\n      const expression = item.expression;\n      if (types.isCallExpression(expression) && types.isIdentifier(expression.callee)) {\n        switch (expression.callee.name) {\n          case HOOKS.SET_CONTEXT: {\n            const keyNode = expression.arguments[0];\n            const valueNode = expression.arguments[1];\n            if (types.isIdentifier(keyNode)) {\n              const key = keyNode.name;\n              const keyPath = traceReferenceToModulePath(context.builder.component.imports, key)!;\n              if (valueNode) {\n                if (types.isObjectExpression(valueNode)) {\n                  const value = parseStateObjectToMitosisState(valueNode);\n                  setContext[keyPath] = {\n                    name: keyNode.name,\n                    value,\n                  };\n                } else {\n                  const ref = generate(valueNode).code;\n                  setContext[keyPath] = {\n                    name: keyNode.name,\n                    ref,\n                  };\n                }\n              }\n            } else if (types.isStringLiteral(keyNode)) {\n              if (types.isExpression(valueNode)) {\n                setContext[keyNode.value] = {\n                  name: `\"${keyNode.value}\"`,\n                  ref: generate(valueNode).code,\n                };\n              }\n            }\n            break;\n          }\n          case HOOKS.MOUNT: {\n            const firstArg = expression.arguments[0];\n            const hookOptions = expression.arguments[1];\n            if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {\n              const code = processHookCode(firstArg);\n              let onSSR = false;\n\n              if (types.isObjectExpression(hookOptions)) {\n                const onSSRProp = hookOptions.properties.find(\n                  (property) =>\n                    types.isProperty(property) &&\n                    types.isIdentifier(property.key) &&\n                    property.key.name === 'onSSR',\n                );\n\n                if (types.isObjectProperty(onSSRProp) && types.isBooleanLiteral(onSSRProp.value)) {\n                  onSSR = onSSRProp.value.value;\n                }\n              }\n\n              hooks.onMount.push({\n                code,\n                onSSR,\n              });\n            }\n            break;\n          }\n          case HOOKS.EVENT: {\n            const firstArg = expression.arguments[0];\n            const secondArg = expression.arguments[1];\n            const thirdArg = expression.arguments[2];\n            const fourthArg = expression.arguments[3];\n\n            if (!types.isStringLiteral(firstArg)) {\n              console.warn(\n                '`onEvent` hook skipped. Event name must be a string literal: ',\n                generate(expression).code,\n              );\n              break;\n            }\n            if (\n              !types.isFunctionExpression(secondArg) &&\n              !types.isArrowFunctionExpression(secondArg)\n            ) {\n              console.warn(\n                '`onEvent` hook skipped. Event handler must be a function: ',\n                generate(expression).code,\n              );\n              break;\n            }\n\n            if (!types.isIdentifier(thirdArg)) {\n              console.warn(\n                '`onEvent` hook skipped. Element ref must be a value: ',\n                generate(expression).code,\n              );\n              break;\n            }\n\n            const isRoot = types.isBooleanLiteral(fourthArg) ? fourthArg.value : false;\n\n            const eventArgName = types.isIdentifier(secondArg.params[0])\n              ? secondArg.params[0].name\n              : 'event';\n\n            const elementArgName = types.isIdentifier(secondArg.params[1])\n              ? secondArg.params[1].name\n              : 'element';\n\n            hooks.onEvent.push({\n              eventName: firstArg.value,\n              code: processHookCode(secondArg),\n              refName: thirdArg.name,\n              isRoot,\n              eventArgName,\n              elementArgName,\n            });\n            break;\n          }\n          case HOOKS.UPDATE: {\n            const firstArg = expression.arguments[0];\n            const secondArg = expression.arguments[1];\n            if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {\n              const code = processHookCode(firstArg);\n              if (\n                !secondArg ||\n                (types.isArrayExpression(secondArg) && secondArg.elements.length > 0)\n              ) {\n                const depsCode = secondArg ? generate(secondArg).code : '';\n\n                const depsArray: string[] = [];\n                if (secondArg && secondArg.elements) {\n                  for (const element of secondArg.elements) {\n                    if (isIdentifier(element)) {\n                      depsArray.push(element.name);\n                    } else if (\n                      isMemberExpression(element) &&\n                      isIdentifier(element.object) &&\n                      isIdentifier(element.property)\n                    ) {\n                      depsArray.push(`${element.object.name}.${element.property.name}`);\n                    }\n                  }\n                }\n\n                hooks.onUpdate = [\n                  ...(hooks.onUpdate || []),\n                  {\n                    code,\n                    deps: depsCode,\n                    depsArray,\n                  },\n                ];\n              }\n            }\n            break;\n          }\n          case HOOKS.UNMOUNT: {\n            const firstArg = expression.arguments[0];\n            if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {\n              const code = processHookCode(firstArg);\n              hooks.onUnMount = { code };\n            }\n            break;\n          }\n          case HOOKS.INIT: {\n            const firstArg = expression.arguments[0];\n            if (types.isFunctionExpression(firstArg) || types.isArrowFunctionExpression(firstArg)) {\n              const code = processHookCode(firstArg);\n              hooks.onInit = { code };\n            }\n            break;\n          }\n          case HOOKS.DEFAULT_PROPS: {\n            parseDefaultPropsHook(context.builder.component, expression);\n            break;\n          }\n          case HOOKS.STYLE: {\n            context.builder.component.style = generateUseStyleCode(expression);\n            break;\n          }\n          case HOOKS.METADATA: {\n            context.builder.component.meta[HOOKS.METADATA] = {\n              ...context.builder.component.meta[HOOKS.METADATA],\n              ...parseCodeJson(expression.arguments[0]),\n            };\n            break;\n          }\n        }\n      }\n    }\n\n    if (types.isFunctionDeclaration(item)) {\n      if (types.isIdentifier(item.id)) {\n        state[item.id.name] = {\n          code: generate(item).code,\n          type: 'function',\n        };\n        stateToScope.push(item.id.name);\n      }\n    }\n\n    if (types.isVariableDeclaration(item)) {\n      const declaration = item.declarations[0];\n      const init = declaration.init;\n      if (types.isCallExpression(init) && types.isIdentifier(init.callee)) {\n        // React format, like:\n        // const [foo, setFoo] = useState(...)\n        if (types.isArrayPattern(declaration.id) && init.callee.name === HOOKS.STATE) {\n          const varName =\n            types.isIdentifier(declaration.id.elements[0]) && declaration.id.elements[0].name;\n          if (varName) {\n            const value = init.arguments[0];\n            // Function as init, like:\n            // useState(() => true)\n            if (types.isArrowFunctionExpression(value)) {\n              state[varName] = {\n                code: parseCode(value.body),\n                type: 'function',\n              };\n            } else {\n              const stateOptions = init.arguments[1];\n\n              let propertyType: ReactivityType = 'normal';\n\n              if (types.isObjectExpression(stateOptions)) {\n                for (const prop of stateOptions.properties) {\n                  if (!types.isProperty(prop) || !types.isIdentifier(prop.key)) continue;\n                  const isReactive = prop.key.name === 'reactive';\n\n                  if (isReactive && types.isBooleanLiteral(prop.value) && prop.value.value) {\n                    propertyType = 'reactive';\n                  }\n                }\n              }\n\n              // Value as init, like:\n              // useState(true)\n              state[varName] = {\n                code: parseCode(value),\n                type: 'property',\n                propertyType,\n              };\n            }\n\n            stateToScope.push(varName);\n\n            // Typescript Parameter\n            if (types.isTSTypeParameterInstantiation(init.typeParameters)) {\n              state[varName]!.typeParameter = generate(init.typeParameters.params[0]).code;\n            }\n          }\n        } else if (init.callee.name === HOOKS.STORE) {\n          const firstArg = init.arguments[0];\n          if (types.isObjectExpression(firstArg)) {\n            const useStoreState = parseStateObjectToMitosisState(firstArg);\n            Object.assign(state, useStoreState);\n            const stateKeys = Object.keys(useStoreState);\n            if (types.isTSTypeParameterInstantiation(init.typeParameters)) {\n              const type = generate(init.typeParameters.params[0]);\n              // Type for store has to be an object so we can use it like this\n              for (const key of stateKeys) {\n                state[key]!.typeParameter = `${type.code}[\"${key}\"]`;\n              }\n            }\n          }\n        } else if (init.callee.name === HOOKS.CONTEXT) {\n          const firstArg = init.arguments[0];\n          if (types.isVariableDeclarator(declaration) && types.isIdentifier(declaration.id)) {\n            if (types.isIdentifier(firstArg)) {\n              const varName = declaration.id.name;\n              const name = firstArg.name;\n              accessedContext[varName] = {\n                name,\n                path: traceReferenceToModulePath(context.builder.component.imports, name)!,\n              };\n            } else {\n              const varName = declaration.id.name;\n              const name = generate(firstArg).code;\n              accessedContext[varName] = {\n                name,\n                path: '',\n              };\n            }\n          }\n        } else if (init.callee.name === HOOKS.REF) {\n          if (types.isIdentifier(declaration.id)) {\n            const firstArg = init.arguments[0];\n            const varName = declaration.id.name;\n            refs[varName] = {\n              argument: generate(firstArg).code,\n            };\n            // Typescript Parameter\n            if (types.isTSTypeParameterInstantiation(init.typeParameters)) {\n              refs[varName].typeParameter = generate(init.typeParameters.params[0]).code;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  const theReturn = node.body.body.find((item) => types.isReturnStatement(item));\n  const children: MitosisNode[] = [];\n  if (theReturn) {\n    const value = (theReturn as babel.types.ReturnStatement).argument;\n    if (types.isJSXElement(value) || types.isJSXFragment(value)) {\n      const jsxElement = jsxElementToJson(value, options);\n      if (jsxElement) {\n        children.push(jsxElement);\n      }\n    }\n  }\n\n  const { exports: localExports } = context.builder.component;\n  if (localExports) {\n    const bindingsCode = getBindingsCode(children);\n    Object.keys(localExports).forEach((name) => {\n      const found = bindingsCode.find((code: string) => code.match(new RegExp(`\\\\b${name}\\\\b`)));\n      localExports[name].usedInLocal = Boolean(found);\n    });\n    context.builder.component.exports = localExports;\n  }\n\n  const propsTypeRef = getPropsTypeRef(node, context);\n\n  return createMitosisComponent({\n    ...context.builder.component,\n    name: node.id?.name,\n    state,\n    children,\n    refs: refs,\n    hooks,\n    context: {\n      get: accessedContext,\n      set: setContext,\n    },\n    propsTypeRef,\n  }) as any;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/helpers.ts",
    "content": "import { tryParseJson } from '@/helpers/json';\nimport { objectHasKey } from '@/helpers/typescript';\nimport { Context } from '@/parsers/jsx/types';\nimport * as babel from '@babel/core';\nimport { BabelFileResult } from '@babel/core';\nimport generate from '@babel/generator';\nimport tsPlugin from '@babel/plugin-syntax-typescript';\nimport tsPreset from '@babel/preset-typescript';\nimport { Visitor } from '@babel/traverse';\n\nconst typescriptBabelPreset = [tsPreset, { isTSX: true, allExtensions: true }];\n\nconst { types } = babel;\n\nexport const uncapitalize = (str: string) => {\n  if (!str) {\n    return str;\n  }\n\n  return str[0].toLowerCase() + str.slice(1);\n};\n\nexport const parseCode = (node: babel.types.Node) => {\n  const generatorResult = generate(node);\n  return generatorResult.code;\n};\n\nexport const parseCodeJson = (node: babel.types.Node) => {\n  const code = parseCode(node);\n  return tryParseJson(code);\n};\n\nexport const isImportOrDefaultExport = (node: babel.Node) =>\n  types.isExportDefaultDeclaration(node) || types.isImportDeclaration(node);\n\nexport const HTML_ATTR_FROM_JSX = {\n  htmlFor: 'for',\n};\n\nexport const transformAttributeName = (name: string) => {\n  if (objectHasKey(HTML_ATTR_FROM_JSX, name)) return HTML_ATTR_FROM_JSX[name];\n  return name;\n};\n\nexport const babelStripTypes = (code: string, typescript?: boolean): string =>\n  typescript\n    ? (babel.transform(code, {\n        configFile: false,\n        babelrc: false,\n        presets: [typescriptBabelPreset],\n      })?.code as string)\n    : code;\n\nexport const babelDefaultTransform = (\n  code: string,\n  visitor: Visitor<Context>,\n): BabelFileResult | null =>\n  babel.transform(code, {\n    configFile: false,\n    babelrc: false,\n    comments: false,\n    plugins: [[tsPlugin, { isTSX: true }], (): babel.PluginObj<Context> => ({ visitor })],\n  });\n\nexport const isTypescriptFile = (fileName: string): boolean =>\n  fileName.endsWith('.ts') || fileName.endsWith('.tsx');\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/hooks/helpers.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\n\nconst { types } = babel;\n\nexport const getHook = (node: babel.Node) => {\n  const item = node;\n  if (types.isExpressionStatement(item)) {\n    const expression = item.expression;\n    if (types.isCallExpression(expression)) {\n      if (types.isIdentifier(expression.callee)) {\n        return expression;\n      }\n    }\n  }\n  return null;\n};\n\nexport const processHookCode = (\n  firstArg: babel.types.ArrowFunctionExpression | babel.types.FunctionExpression,\n) =>\n  generate(firstArg.body)\n    .code.trim()\n    // Remove arbitrary block wrapping if any\n    // AKA\n    //  { console.log('hi') } -> console.log('hi')\n    .replace(/^{/, '')\n    .replace(/}$/, '')\n    .trim();\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/hooks/index.ts",
    "content": "import { HOOKS } from '@/constants/hooks';\nimport { resolveMetadata } from '@/parsers/jsx/hooks/use-metadata';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport * as babel from '@babel/core';\nimport { NodePath } from '@babel/core';\nimport generate from '@babel/generator';\nimport { parseCodeJson } from '../helpers';\nimport { parseStateObjectToMitosisState } from '../state';\nimport { Context, ParseMitosisOptions } from '../types';\nimport { getHook } from './helpers';\n\nconst { types } = babel;\n\nexport function parseDefaultPropsHook(\n  component: MitosisComponent,\n  expression: babel.types.CallExpression,\n) {\n  const firstArg = expression.arguments[0];\n  if (types.isObjectExpression(firstArg)) {\n    component.defaultProps = parseStateObjectToMitosisState(firstArg, false);\n  }\n}\n\nexport function generateUseStyleCode(expression: babel.types.CallExpression) {\n  return generate(expression.arguments[0]).code.replace(/(^(\"|'|`)|(\"|'|`)$)/g, '');\n}\n\n/**\n * Transform useMetadata({...}) onto the component JSON as\n * meta: { metadataHook: { ... }}\n *\n * This function collects metadata and removes the statement from\n * the returned nodes array\n */\nexport const collectModuleScopeHooks =\n  (context: Context, options: ParseMitosisOptions) => (path: NodePath<babel.types.Program>) => {\n    const programNodes = path.node.body;\n    return programNodes.filter((node) => {\n      const hook = getHook(node);\n      if (!hook) {\n        return true;\n      }\n      if (types.isIdentifier(hook.callee)) {\n        const metadataHooks = new Set((options.jsonHookNames || []).concat(HOOKS.METADATA));\n        const name = hook.callee.name;\n        if (metadataHooks.has(name)) {\n          const metaDataObjectNode = hook.arguments[0];\n\n          let json: any;\n          try {\n            json = options.filePath\n              ? resolveMetadata({ context, node: metaDataObjectNode, nodePath: path, options })\n              : parseCodeJson(metaDataObjectNode);\n          } catch (e) {\n            // Meta data isn't simple json convert it to ast\n            console.error(`Error parsing metadata hook ${name}`);\n            throw e;\n          }\n\n          context.builder.component.meta[name] = {\n            ...((context.builder.component.meta[name] as Object) || {}),\n            ...json,\n          };\n          return false;\n        } else if (name === HOOKS.STYLE) {\n          context.builder.component.style = generateUseStyleCode(hook);\n          return false;\n        } else if (name === HOOKS.DEFAULT_PROPS) {\n          parseDefaultPropsHook(context.builder.component, hook);\n        }\n      }\n\n      return true;\n    });\n  };\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/hooks/use-metadata.ts",
    "content": "import { mapImportDeclarationToMitosisImport } from '@/helpers/mitosis-imports';\nimport {\n  babelDefaultTransform,\n  babelStripTypes,\n  isTypescriptFile,\n  parseCodeJson,\n} from '@/parsers/jsx/helpers';\nimport { Context, ParseMitosisOptions, ResolvedImport } from '@/parsers/jsx/types';\nimport { MitosisImport } from '@/types/mitosis-component';\nimport * as babel from '@babel/core';\nimport { NodePath } from '@babel/core';\nimport { existsSync, readFileSync } from 'fs';\nimport * as path from 'path';\n\ntype ResolveData = {\n  nodePath: NodePath<babel.types.Program>;\n  currentFilePath?: string;\n  resolvedImports?: ResolvedImport[];\n};\n\nconst getCodeFromImport = (\n  importObject: MitosisImport,\n  currentFile?: string,\n): { code?: string; typescript?: boolean; importFilePath?: string } => {\n  if (currentFile) {\n    // resolve path of import\n    const originFile = path.basename(currentFile);\n    const typescript = isTypescriptFile(originFile);\n    const importFile =\n      isTypescriptFile(importObject.path) || importObject.path.endsWith('.js')\n        ? importObject.path\n        : `${importObject.path}.${typescript ? 'ts' : 'js'}`;\n    const importFilePath = path.resolve(path.dirname(currentFile), importFile);\n    if (existsSync(importFilePath)) {\n      return { code: readFileSync(importFilePath).toString(), typescript, importFilePath };\n    }\n    return { typescript };\n  }\n\n  return {};\n};\n\nconst fillDeclarations = ({\n  declaration,\n  valueToResolve,\n  currentFilePath,\n  nodePath,\n}: {\n  declaration: babel.types.VariableDeclaration;\n  valueToResolve: string;\n} & ResolveData): Record<string, any> => {\n  let result = {};\n  for (const variable of declaration.declarations) {\n    if (babel.types.isIdentifier(variable.id)) {\n      if (variable.id.name === valueToResolve && variable.init) {\n        const filled = resolveObjectsRecursive({\n          node: variable.init,\n          nodePath,\n          currentFilePath,\n        });\n\n        result = {\n          ...result,\n          ...filled,\n        };\n      }\n    }\n  }\n  return result;\n};\n\nconst resolve = ({\n  nodePath,\n  currentFilePath,\n  valueToResolve,\n  resolvedImports,\n}: ResolveData & { valueToResolve: string }): Record<string, any> => {\n  let result = {};\n  const programNodes = nodePath.node.body;\n  for (const statement of programNodes) {\n    if (babel.types.isImportDeclaration(statement)) {\n      const importObject = mapImportDeclarationToMitosisImport(statement);\n\n      if (Object.keys(importObject.imports).includes(valueToResolve)) {\n        if (resolvedImports) {\n          // We add this statement, to remove it from imports of generated file\n          resolvedImports.push({ path: importObject.path, value: valueToResolve });\n        }\n\n        // In this case the variable was imported\n        const { code, typescript, importFilePath } = getCodeFromImport(\n          importObject,\n          currentFilePath,\n        );\n        if (code) {\n          const jsxToUse = babelStripTypes(code, typescript);\n\n          babelDefaultTransform(jsxToUse, {\n            Program(path) {\n              const statements: babel.types.Statement[] = path.node.body;\n              for (const pStatement of statements) {\n                if (babel.types.isExportNamedDeclaration(pStatement)) {\n                  const declaration = pStatement.declaration;\n                  if (babel.types.isVariableDeclaration(declaration)) {\n                    const filledDeclaration = fillDeclarations({\n                      declaration,\n                      valueToResolve,\n                      currentFilePath: importFilePath,\n                      nodePath: path,\n                    });\n                    result = {\n                      ...result,\n                      ...filledDeclaration,\n                    };\n                  }\n                }\n              }\n            },\n          });\n        }\n      }\n    } else if (babel.types.isVariableDeclaration(statement)) {\n      // In this case the variable is inside the same file\n      const filledDeclaration = fillDeclarations({\n        declaration: statement,\n        valueToResolve,\n        currentFilePath,\n        nodePath,\n      });\n      result = {\n        ...result,\n        ...filledDeclaration,\n      };\n    }\n  }\n\n  return result;\n};\n\nconst resolveObjectsRecursive = ({\n  node,\n  nodePath,\n  currentFilePath,\n  resolvedImports,\n}: {\n  node: babel.types.Node;\n} & ResolveData): Record<string, any> => {\n  let result = {};\n\n  if (babel.types.isObjectExpression(node)) {\n    for (const prop of node.properties) {\n      if (babel.types.isObjectProperty(prop)) {\n        if (babel.types.isIdentifier(prop.key)) {\n          const objectKey = prop.key.name;\n          if (babel.types.isIdentifier(prop.value)) {\n            const valueToResolve = prop.value.name;\n            // In this case we have some variable defined in the same or another file\n            const resolved = resolve({\n              nodePath,\n              currentFilePath,\n              valueToResolve,\n              resolvedImports,\n            });\n            result = {\n              ...result,\n              [objectKey]: { ...resolved },\n            };\n          } else {\n            // In this case we have a primitive value\n            const json = parseCodeJson(prop.value);\n            result = {\n              ...result,\n              [objectKey]: json,\n            };\n          }\n        }\n      } else if (babel.types.isSpreadElement(prop)) {\n        if (babel.types.isIdentifier(prop.argument)) {\n          const valueToResolve = prop.argument.name;\n\n          result = {\n            ...result,\n            ...resolve({ nodePath, currentFilePath, valueToResolve }),\n          };\n        }\n      } else {\n        // In this case we have a primitive value\n        result = {\n          ...result,\n          ...parseCodeJson(prop),\n        };\n      }\n    }\n  }\n\n  return result;\n};\n\nexport const resolveMetadata = ({\n  context,\n  node,\n  nodePath,\n  options,\n}: {\n  context: Context;\n  node: babel.types.Node;\n  nodePath: NodePath<babel.types.Program>;\n  options: ParseMitosisOptions;\n}): Record<string, any> => {\n  if (context.cwd && options?.filePath) {\n    const resolvedImports: ResolvedImport[] = [];\n    const currentFilePath = `${context.cwd}/${options.filePath}`;\n    const metadata = resolveObjectsRecursive({ node, nodePath, currentFilePath, resolvedImports });\n    context.builder.resolvedImports = resolvedImports;\n    return metadata;\n  }\n\n  return {};\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/hooks/use-target.ts",
    "content": "import type { Target } from '@/types/config';\nimport * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport { MitosisComponent, TargetBlockDefinition } from '../../../types/mitosis-component';\n\nconst TARGETS: Record<Target, null> = {\n  alpine: null,\n  angular: null,\n  customElement: null,\n  html: null,\n  mitosis: null,\n  liquid: null,\n  react: null,\n  reactNative: null,\n  solid: null,\n  svelte: null,\n  swift: null,\n  template: null,\n  webcomponent: null,\n  vue: null,\n  stencil: null,\n  qwik: null,\n  marko: null,\n  preact: null,\n  lit: null,\n  rsc: null,\n  taro: null,\n};\n\nconst { types } = babel;\n\nexport const getTargetId = (component: MitosisComponent) => {\n  const latestId = Object.keys(component.targetBlocks || {}).length;\n  const blockId = (latestId + 1).toString();\n  return blockId;\n};\n\nexport const getMagicString = (targetId: string) => [USE_TARGET_MAGIC_STRING, targetId].join('');\n\nexport const USE_TARGET_MAGIC_STRING = 'USE_TARGET_BLOCK_';\n// check for uuid.v4() format\nconst idRegex = /\\d*/;\n\nconst REGEX_BLOCK_NAME = 'blockId';\n\nexport const USE_TARGET_MAGIC_REGEX = new RegExp(\n  // make sure to capture the id of the target block\n  `[\"']${USE_TARGET_MAGIC_STRING}\\(?<${REGEX_BLOCK_NAME}>${idRegex.source}\\)[\"']`,\n  'g',\n);\n\nexport const getIdFromMatch = (match: string) => {\n  const USE_TARGET_MAGIC_REGEX_WITHOUT_G = new RegExp(\n    `[\"']${USE_TARGET_MAGIC_STRING}\\(?<${REGEX_BLOCK_NAME}>${idRegex.source}\\)[\"']`,\n  );\n  const result = match.match(USE_TARGET_MAGIC_REGEX_WITHOUT_G);\n  if (!result) return undefined;\n  return result.groups?.[REGEX_BLOCK_NAME];\n};\n\n/**\n * This function finds `useTarget()` and converts it our JSON representation\n */\nexport const getUseTargetStatements = (path: babel.NodePath<babel.types.CallExpression>) => {\n  const useTargetHook = path.node;\n  const obj = useTargetHook.arguments[0];\n\n  if (!types.isObjectExpression(obj)) return undefined;\n\n  const isInlinedCodeInsideFunctionBody =\n    types.isExpressionStatement(path.parent) && types.isBlockStatement(path.parentPath.parent);\n\n  const targetBlock: TargetBlockDefinition = {\n    settings: {\n      requiresDefault: !isInlinedCodeInsideFunctionBody,\n    },\n  };\n\n  obj.properties.forEach((prop) => {\n    if (!types.isObjectProperty(prop)) {\n      throw new Error('ERROR Parsing `useTarget()`: properties cannot be spread or references');\n    }\n    if (!types.isIdentifier(prop.key)) {\n      throw new Error(\n        'ERROR Parsing `useTarget()`: Expected an identifier, instead got: ' + prop.key,\n      );\n    }\n\n    if (!Object.keys(TARGETS).concat('default').includes(prop.key.name)) {\n      throw new Error('ERROR Parsing `useTarget()`: Invalid target: ' + prop.key.name);\n    }\n    const keyName = prop.key.name as unknown as 'default';\n\n    const targetCode = prop.value;\n\n    if (isInlinedCodeInsideFunctionBody) {\n      if (!(types.isArrowFunctionExpression(targetCode) || types.isFunctionExpression(targetCode)))\n        return undefined;\n      const body = targetCode.body;\n      if (types.isBlockStatement(body)) {\n        let code = '';\n        body.body.forEach((statement) => {\n          code += generate(statement).code + '\\n';\n        });\n        targetBlock[keyName] = {\n          code,\n        };\n      } else {\n        targetBlock[keyName] = {\n          code: generate(body).code,\n        };\n      }\n    } else {\n      if (!types.isExpression(targetCode)) return undefined;\n      targetBlock[keyName] = {\n        code: generate(targetCode).code,\n      };\n    }\n  });\n\n  return Object.keys(targetBlock).length ? targetBlock : undefined;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/imports.ts",
    "content": "import { mapImportDeclarationToMitosisImport } from '@/helpers/mitosis-imports';\nimport * as babel from '@babel/core';\nimport { Context, ParseMitosisOptions } from './types';\n\nexport const handleImportDeclaration = ({\n  options,\n  path,\n  context,\n}: {\n  options: Partial<ParseMitosisOptions>;\n  path: babel.NodePath<babel.types.ImportDeclaration>;\n  context: Context;\n}) => {\n  // @builder.io/mitosis or React imports compile away\n  const customPackages = options?.compileAwayPackages || [];\n  if (\n    ['react', '@builder.io/mitosis', '@emotion/react', ...customPackages].includes(\n      path.node.source.value,\n    )\n  ) {\n    path.remove();\n    return;\n  }\n  const importObject = mapImportDeclarationToMitosisImport(path.node);\n  const resolvedImport = context.builder.resolvedImports?.find(\n    (rImport) => rImport.path === importObject.path,\n  );\n  if (resolvedImport) {\n    delete importObject.imports[resolvedImport.value];\n  }\n\n  if (Object.keys(importObject.imports).length > 0) {\n    context.builder.component.imports.push(importObject);\n  }\n\n  path.remove();\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/index.ts",
    "content": "export { parseJsx } from './jsx';\nexport { ParseMitosisOptions } from './types';\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/jsx.ts",
    "content": "import { HOOKS } from '@/constants/hooks';\nimport { createMitosisComponent } from '@/helpers/create-mitosis-component';\nimport { filterEmptyTextNodes } from '@/helpers/filter-empty-text-nodes';\nimport { tryParseJson } from '@/helpers/json';\nimport { stripNewlinesInStrings } from '@/helpers/replace-new-lines-in-strings';\nimport { getSignalImportName } from '@/helpers/signals';\nimport { traverseNodes } from '@/helpers/traverse-nodes';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport tsPreset from '@babel/preset-typescript';\nimport { pipe } from 'fp-ts/lib/function';\nimport { jsonToAst } from './ast';\nimport { collectTypes, isTypeOrInterface } from './component-types';\nimport { extractContextComponents } from './context';\nimport { jsxElementToJson } from './element-parser';\nimport { generateExports } from './exports';\nimport { componentFunctionToJson } from './function-parser';\nimport { babelDefaultTransform, babelStripTypes, isImportOrDefaultExport } from './helpers';\nimport { collectModuleScopeHooks } from './hooks';\nimport { getMagicString, getTargetId, getUseTargetStatements } from './hooks/use-target';\nimport { handleImportDeclaration } from './imports';\nimport { undoPropsDestructure } from './props';\nimport { findOptionalProps } from './props-types';\nimport { findSignals } from './signals';\nimport { mapStateIdentifiers } from './state';\nimport { ParseMitosisOptions } from './types';\n\nconst { types } = babel;\n\nconst typescriptBabelPreset = [tsPreset, { isTSX: true, allExtensions: true }];\n\nconst beforeParse = (path: babel.NodePath<babel.types.Program>) => {\n  path.traverse({\n    FunctionDeclaration(path) {\n      undoPropsDestructure(path);\n    },\n  });\n};\n\n/**\n * This function takes the raw string from a Mitosis component, and converts it into a JSON that can be processed by\n * each generator function.\n *\n * @param jsx string representation of the Mitosis component\n * @returns A JSON representation of the Mitosis component\n */\nexport function parseJsx(\n  jsx: string,\n  _options: Partial<ParseMitosisOptions> = {},\n): MitosisComponent {\n  let subComponentFunctions: string[] = [];\n\n  const options: ParseMitosisOptions = {\n    typescript: false,\n    ..._options,\n  };\n\n  const stateToScope: string[] = [];\n\n  const jsxToUse = babelStripTypes(jsx, !options.typescript);\n\n  const output = babelDefaultTransform(jsxToUse, {\n    JSXExpressionContainer(path, context) {\n      if (types.isJSXEmptyExpression(path.node.expression)) {\n        path.remove();\n      }\n    },\n    Program(path, context) {\n      if (context.builder) {\n        return;\n      }\n\n      beforeParse(path);\n\n      context.builder = {\n        component: createMitosisComponent(),\n      };\n\n      const keepStatements = path.node.body.filter(\n        (statement) => isImportOrDefaultExport(statement) || isTypeOrInterface(statement),\n      );\n\n      context.builder.component.exports = generateExports(path);\n\n      subComponentFunctions = path.node.body\n        .filter(\n          (node) => !types.isExportDefaultDeclaration(node) && types.isFunctionDeclaration(node),\n        )\n        .map((node) => `export default ${generate(node).code!}`);\n\n      const preComponentCode = pipe(\n        path,\n        collectModuleScopeHooks(context, options),\n        types.program,\n        generate,\n        (generatorResult) => generatorResult.code,\n      );\n\n      // TODO: support multiple? e.g. for others to add imports?\n      context.builder.component.hooks.preComponent = { code: preComponentCode };\n\n      path.replaceWith(types.program(keepStatements));\n    },\n    FunctionDeclaration(path, context) {\n      const { node } = path;\n      if (types.isIdentifier(node.id)) {\n        const name = node.id.name;\n        if (name[0].toUpperCase() === name[0]) {\n          path.traverse({\n            /**\n             * Plugin to find all `useTarget()` assignment calls inside of the component function body\n             * and replace them with a magic string.\n             */\n            CallExpression(path) {\n              if (!types.isCallExpression(path.node)) return;\n              if (!types.isIdentifier(path.node.callee)) return;\n              if (path.node.callee.name !== HOOKS.TARGET) return;\n\n              const targetBlock = getUseTargetStatements(path);\n\n              if (!targetBlock) return;\n\n              const blockId = getTargetId(context.builder.component);\n\n              // replace the useTarget() call with a magic string\n              path.replaceWith(types.stringLiteral(getMagicString(blockId)));\n\n              // store the target block in the component\n              context.builder.component.targetBlocks = {\n                ...context.builder.component.targetBlocks,\n                [blockId]: targetBlock,\n              };\n            },\n          });\n          path.replaceWith(\n            jsonToAst(componentFunctionToJson(node, context, stateToScope, options)),\n          );\n        }\n      }\n    },\n    ImportDeclaration(path, context) {\n      handleImportDeclaration({ options, path, context });\n    },\n    ExportDefaultDeclaration(path) {\n      path.replaceWith(path.node.declaration);\n    },\n    JSXElement(path) {\n      const { node } = path;\n      path.replaceWith(jsonToAst(jsxElementToJson(node, _options)));\n    },\n    ExportNamedDeclaration(path, context) {\n      const { node } = path;\n      if (\n        babel.types.isTSInterfaceDeclaration(node.declaration) ||\n        babel.types.isTSTypeAliasDeclaration(node.declaration)\n      ) {\n        collectTypes(path, context);\n      }\n    },\n    TSTypeAliasDeclaration(path, context) {\n      collectTypes(path, context);\n    },\n    TSInterfaceDeclaration(path, context) {\n      collectTypes(path, context);\n    },\n  });\n\n  if (!output || !output.code) {\n    throw new Error('Could not parse JSX');\n  }\n\n  const stringifiedMitosisComponent = stripNewlinesInStrings(\n    output.code\n      .trim()\n      // Occasional issues where comments get kicked to the top. Full fix should strip these sooner\n      .replace(/^\\/\\*[\\s\\S]*?\\*\\/\\s*/, '')\n      // Weird bug with adding a newline in a normal at end of a normal string that can't have one\n      // If not one-off find full solve and cause\n      .replace(/\\n\"/g, '\"')\n      .replace(/^\\({/, '{')\n      .replace(/}\\);$/, '}'),\n  );\n\n  const mitosisComponent: MitosisComponent = tryParseJson(stringifiedMitosisComponent);\n\n  mapStateIdentifiers(mitosisComponent, stateToScope);\n  extractContextComponents(mitosisComponent);\n\n  mitosisComponent.subComponents = subComponentFunctions.map((item) => parseJsx(item, options));\n\n  const signalTypeImportName = getSignalImportName(jsxToUse);\n\n  if (signalTypeImportName) {\n    mitosisComponent.signals = { signalTypeImportName };\n  }\n\n  if (options.tsProject && options.filePath) {\n    // identify optional props.\n    const optionalProps = findOptionalProps({\n      project: options.tsProject.project,\n      filePath: options.filePath,\n    });\n\n    optionalProps.forEach((prop) => {\n      mitosisComponent.props = {\n        ...mitosisComponent.props,\n        [prop]: {\n          ...mitosisComponent.props?.[prop]!,\n          optional: true,\n        },\n      };\n    });\n\n    const reactiveValues = findSignals({\n      filePath: options.filePath,\n      project: options.tsProject.project,\n    });\n\n    reactiveValues.props.forEach((prop) => {\n      mitosisComponent.props = {\n        ...mitosisComponent.props,\n        [prop]: {\n          ...mitosisComponent.props?.[prop]!,\n          propertyType: 'reactive',\n        },\n      };\n    });\n\n    reactiveValues.state.forEach((state) => {\n      if (!mitosisComponent.state[state]) return;\n      mitosisComponent.state[state]!.propertyType = 'reactive';\n    });\n\n    reactiveValues.context.forEach((context) => {\n      if (!mitosisComponent.context.get[context]) return;\n      mitosisComponent.context.get[context].type = 'reactive';\n    });\n  }\n\n  traverseNodes(mitosisComponent, (node) => {\n    node.children = node.children.filter(filterEmptyTextNodes);\n  });\n\n  return mitosisComponent;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/props-types.test.ts",
    "content": "import { createTypescriptProject } from '../../helpers/typescript-project';\nimport { findOptionalProps } from './props-types';\n\ndescribe(findOptionalProps.name, () => {\n  /**\n   * We can piggyback on the `core` project's TS config, since we are allowed to reference `@builder.io/mitosis`\n   * recursively inside of itself.\n   * This avoids the need to create a mock TS project just for testing.\n   */\n  const tsProject = createTypescriptProject(__dirname + '/../../../tsconfig.json');\n\n  test('types', () => {\n    const code = `\n    type Kaboom = {\n      foo?: string\n    }\n    \n    type Props = Kaboom & {\n      normal: string;\n      bar: boolean\n      id?: number;\n    }\n    \n    export default function InlinedStyles(props: Props) {\n      return props;\n    }\n    `;\n    tsProject.project.createSourceFile('src/testing.tsx', code, { overwrite: true });\n\n    const result = findOptionalProps({ filePath: 'src/testing.tsx', ...tsProject });\n    expect(result).toMatchSnapshot();\n  });\n\n  test('interfaces', () => {\n    const code = `\n    type Kaboom = {\n      foo?: string\n    }\n    \n    interface Props extends Kaboom {\n      styles: string;\n      id?: string;\n    }\n    \n    export default function InlinedStyles(props: Props) {\n      return props;\n    }\n    `;\n    tsProject.project.createSourceFile('src/testing.tsx', code, { overwrite: true });\n\n    const result = findOptionalProps({ filePath: 'src/testing.tsx', ...tsProject });\n    expect(result).toMatchSnapshot();\n  });\n\n  test('type extending interface', () => {\n    const code = `\n    interface Kaboom {\n      foo?: string\n    }\n    \n    type Props = Kaboom & {\n      styles: string;\n      id?: string;\n    }\n    \n    export default function InlinedStyles(props: Props) {\n      return props;\n    }\n    `;\n    tsProject.project.createSourceFile('src/testing.tsx', code, { overwrite: true });\n\n    const result = findOptionalProps({ filePath: 'src/testing.tsx', ...tsProject });\n    expect(result).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/props-types.ts",
    "content": "import { Project, PropertySignature } from 'ts-morph';\nimport { getPropsSymbol } from '../../helpers/typescript-project';\n\nexport const findOptionalProps = (args: { project: Project; filePath: string }) => {\n  const ast = args.project.getSourceFileOrThrow(args.filePath);\n\n  if (ast === undefined) {\n    throw new Error('Could not find AST. Please provide either `code` or `filePath` configs.');\n  }\n\n  const propsSymbol = getPropsSymbol(ast);\n\n  if (!propsSymbol) return [];\n\n  return propsSymbol\n    .getDeclarations()[0]\n    .getType()\n    .getProperties()\n    .map((p) => p.getDeclarations()[0])\n    .filter(\n      (k): k is PropertySignature =>\n        PropertySignature.isPropertySignature(k) && k.hasQuestionToken(),\n    )\n    .map((k) => k.getName());\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/props.ts",
    "content": "import * as babel from '@babel/core';\n\nconst { types } = babel;\n\nexport function undoPropsDestructure(path: babel.NodePath<babel.types.FunctionDeclaration>) {\n  const { node } = path;\n  if (node.params.length && types.isObjectPattern(node.params[0])) {\n    const param = node.params[0];\n    const propsMap = param.properties.reduce((pre, cur) => {\n      if (\n        types.isObjectProperty(cur) &&\n        types.isIdentifier(cur.key) &&\n        types.isIdentifier(cur.value)\n      ) {\n        pre[cur.value.name] = `props.${cur.key.name}`;\n        return pre;\n      }\n      return pre;\n    }, {} as Record<string, string>);\n\n    if (param.typeAnnotation) {\n      node.params = [\n        {\n          ...babel.types.identifier('props'),\n          typeAnnotation: param.typeAnnotation,\n        },\n      ];\n      path.replaceWith(node);\n    }\n\n    path.traverse({\n      JSXExpressionContainer(path) {\n        const { node } = path;\n        if (types.isIdentifier(node.expression)) {\n          const { name } = node.expression;\n          if (propsMap[name]) {\n            path.replaceWith(\n              babel.types.jsxExpressionContainer(babel.types.identifier(propsMap[name])),\n            );\n          }\n        }\n      },\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/signals.test.ts",
    "content": "import { mapSignalType } from '../../helpers/signals';\nimport { createTypescriptProject } from '../../helpers/typescript-project';\nimport { findSignals } from './signals';\n\nconst code = `\nimport { Signal, useState, useContext, createContext } from '@builder.io/mitosis';\n\nconst FooContext = createContext({ foo: 'bar' }, { reactive: true });\nconst NormalContext = createContext({ foo: 'bar' });\n\ntype K = Signal<string>;\n\ntype Props = {\n  k: K;\n  another: Signal<number>\n};\n    \nexport default function MyComponent(props: Props) {\n  const [n] = useState(123, { reactive: true });\n\n  const context = useContext(FooContext)\n  const normalContext = useContext(NormalContext)\n\n  console.log(\n    n, \n    n.value, \n    props.k, \n    props.k.value,\n    context,\n    context.value.foo,\n    normalContext,\n    normalContext.value.foo,\n    );\n\n  return <RenderBlock \n    a={props.k} \n    b={props.k.value} \n    c={n} \n    d={n.value} \n    e={context}\n    f={context.value.foo}\n    g={normalContext}\n    h={normalContext.value.foo}\n    />;\n};\n`;\ndescribe('Signals type parsing', () => {\n  /**\n   * We can piggyback on the `core` project's TS config, since we are allowed to reference `@builder.io/mitosis`\n   * recursively inside of itself.\n   * This avoids the need to create a mock TS project just for testing.\n   */\n  const tsProject = createTypescriptProject(__dirname + '/../../../tsconfig.json');\n\n  tsProject.project.createSourceFile('src/testing.tsx', code, { overwrite: true });\n\n  test(findSignals.name, () => {\n    const result = findSignals({ ...tsProject, filePath: 'src/testing.tsx' });\n    expect(result).toMatchSnapshot();\n  });\n\n  describe(mapSignalType.name, () => {\n    test('svelte', () => {\n      const result = mapSignalType({ target: 'svelte', code, ...tsProject });\n      expect(result).toMatchSnapshot();\n    });\n\n    test('react', () => {\n      const result = mapSignalType({ target: 'react', code, ...tsProject });\n      expect(result).toMatchSnapshot();\n    });\n  });\n});\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/signals.ts",
    "content": "import { Node, Project, ts, Type } from 'ts-morph';\nimport { getContextSymbols, getPropsSymbol } from '../../helpers/typescript-project';\n\nconst MITOSIS_IMPORT_PATHS = [\n  // actual production path\n  '/node_modules/@builder.io/mitosis/',\n  // possible path if symlinking mitosis locally\n  '/mitosis/packages/core/',\n];\n\nexport const findSignals = ({ filePath, project }: { project: Project; filePath: string }) => {\n  const ast = project.getSourceFileOrThrow(filePath);\n\n  if (ast === undefined) {\n    throw new Error('Could not find AST. Please provide a correct `filePath`.');\n  }\n\n  const reactiveValues = {\n    props: new Set<string>(),\n    state: new Set<string>(),\n    context: new Set<string>(),\n  };\n\n  const propsSymbol = getPropsSymbol(ast);\n\n  const contextSymbols = getContextSymbols(ast);\n\n  const checkIsSignalSymbol = (type: Type<ts.Type>) => {\n    const symbol = type.getTargetType()?.getAliasSymbol();\n\n    if (!symbol || symbol.getName() !== 'Signal') return false;\n\n    const compilerSymbol = symbol?.compilerSymbol;\n    const parent: ts.Symbol | undefined = (compilerSymbol as any).parent;\n\n    if (!parent) return false;\n\n    if (MITOSIS_IMPORT_PATHS.some((path) => parent.getName().includes(path))) {\n      return true;\n    }\n\n    return false;\n  };\n\n  const checkIsOptionalSignal = (node: Node) => {\n    let hasUndefined = false;\n    let hasSignal = false;\n\n    const perfectMatch = node\n      .getType()\n      .getUnionTypes()\n      .every((type) => {\n        if (type.isUndefined()) {\n          hasUndefined = true;\n          return true;\n        } else if (checkIsSignalSymbol(type)) {\n          hasSignal = true;\n          return true;\n        }\n\n        return false;\n      });\n\n    return perfectMatch && hasUndefined && hasSignal;\n  };\n\n  ast.forEachDescendant((parentNode) => {\n    if (Node.isPropertyAccessExpression(parentNode)) {\n      const node = parentNode.getExpression();\n      const isOptionalAccess = parentNode.hasQuestionDotToken();\n      const isSignal = isOptionalAccess\n        ? checkIsOptionalSignal(node)\n        : checkIsSignalSymbol(node.getType());\n\n      if (!isSignal) return;\n\n      let isInsideType = false;\n      let isInsideDeclaration = false;\n      node.getParentWhile((parent, child) => {\n        // stop once we hit the function block\n        if (Node.isBlock(child) || Node.isBlock(parent)) {\n          return false;\n        }\n\n        // crawl up parents to make sure we're not inside a type\n        if (Node.isTypeNode(parent) || Node.isTypeAliasDeclaration(parent)) {\n          isInsideType = true;\n          return false;\n        }\n\n        return true;\n      });\n\n      if (isInsideType) return;\n      if (isInsideDeclaration) return;\n\n      const nodeSymbol = node.getSymbol();\n\n      if (\n        Node.isPropertyAccessExpression(node) &&\n        node.getExpression().getSymbol() === propsSymbol\n      ) {\n        reactiveValues.props.add(node.getNameNode().getText());\n      } else if (nodeSymbol && contextSymbols.has(nodeSymbol)) {\n        reactiveValues.context.add(node.getText());\n      } else {\n        reactiveValues.state.add(node.getText());\n      }\n    }\n  });\n\n  return reactiveValues;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/state.ts",
    "content": "import { babelTransformExpression } from '@/helpers/babel-transform';\nimport { capitalize } from '@/helpers/capitalize';\nimport { isMitosisNode } from '@/helpers/is-mitosis-node';\nimport { createCodeProcessorPlugin } from '@/helpers/plugins/process-code';\nimport { replaceNodes } from '@/helpers/replace-identifiers';\nimport {\n  MitosisComponent,\n  MitosisState,\n  StateValue,\n  TargetBlockDefinition,\n} from '@/types/mitosis-component';\nimport { NodePath, types } from '@babel/core';\nimport {\n  BlockStatement,\n  Expression,\n  Identifier,\n  Node,\n  ObjectExpression,\n  ObjectMethod,\n  ObjectProperty,\n  assignmentExpression,\n  functionExpression,\n  identifier,\n  isArrowFunctionExpression,\n  isDeclaration,\n  isFunctionDeclaration,\n  isFunctionExpression,\n  isIdentifier,\n  isMemberExpression,\n  isObjectMethod,\n  isObjectProperty,\n  isOptionalMemberExpression,\n  isPrivateName,\n  isSpreadElement,\n  isStringLiteral,\n  isTSAsExpression,\n  isTSInterfaceBody,\n  isTSType,\n  memberExpression,\n  objectMethod,\n} from '@babel/types';\nimport { MitosisNode } from '@builder.io/mitosis';\nimport { pipe } from 'fp-ts/lib/function';\nimport traverse from 'neotraverse/legacy';\nimport { parseCode, uncapitalize } from './helpers';\n\nfunction mapStateIdentifiersInExpression(expression: string, stateProperties: string[]) {\n  const setExpressions = stateProperties.map((propertyName) => `set${capitalize(propertyName)}`);\n\n  return pipe(\n    babelTransformExpression(expression, {\n      Identifier(path) {\n        if (stateProperties.includes(path.node.name)) {\n          if (\n            // ignore member expressions, as the `stateProperty` is going to be at the module scope.\n            !(isMemberExpression(path.parent) && path.parent.property === path.node) &&\n            !(isOptionalMemberExpression(path.parent) && path.parent.property === path.node) &&\n            // ignore declarations of that state property, e.g. `function foo() {}`\n            !isDeclaration(path.parent) &&\n            !isFunctionDeclaration(path.parent) &&\n            !(isFunctionExpression(path.parent) && path.parent.id === path.node) &&\n            // ignore object keys\n            !(isObjectProperty(path.parent) && path.parent.key === path.node)\n          ) {\n            let hasTypeParent = false;\n            path.findParent((parent: NodePath) => {\n              if (isTSType(parent as Node) || isTSInterfaceBody(parent as Node)) {\n                hasTypeParent = true;\n                return true;\n              }\n              return false;\n            });\n\n            if (hasTypeParent) {\n              return;\n            }\n\n            const newExpression = memberExpression(identifier('state'), identifier(path.node.name));\n            try {\n              path.replaceWith(newExpression);\n            } catch (err) {\n              console.error(err);\n\n              // console.log('err: ', {\n              //   from: generate(path.parent).code,\n              //   fromChild: generate(path.node).code,\n              //   to: newExpression,\n              //   // err,\n              // });\n            }\n          }\n        }\n      },\n      CallExpression(path) {\n        if (isIdentifier(path.node.callee)) {\n          if (setExpressions.includes(path.node.callee.name)) {\n            // setFoo -> foo\n            const statePropertyName = uncapitalize(path.node.callee.name.slice(3));\n\n            // setFoo(...) -> state.foo = ...\n            path.replaceWith(\n              assignmentExpression(\n                '=',\n                identifier(`state.${statePropertyName}`),\n                path.node.arguments[0] as any,\n              ),\n            );\n          }\n        }\n      },\n    }),\n    (code) => code.trim(),\n  );\n}\n\nconst consolidateClassBindings = (item: MitosisNode) => {\n  if (item.bindings.className) {\n    if (item.bindings.class) {\n      // TO-DO: it's too much work to merge 2 bindings, so just remove the old one for now.\n      item.bindings.class = item.bindings.className;\n    } else {\n      item.bindings.class = item.bindings.className;\n    }\n    delete item.bindings.className;\n  }\n\n  if (item.properties.className) {\n    if (item.properties.class) {\n      item.properties.class = `${item.properties.class} ${item.properties.className}`;\n    } else {\n      item.properties.class = item.properties.className;\n    }\n    delete item.properties.className;\n  }\n\n  if (item.properties.class && item.bindings.class) {\n    console.warn(`[${item.name}]: Ended up with both a property and binding for 'class'.`);\n  }\n};\n\n/**\n * Convert state identifiers from React hooks format to the state.* format Mitosis needs\n * e.g.\n *   text -> state.text\n *   setText(...) -> state.text = ...\n *\n * This also applies to components that use both useState and useStore.\n * e.g.\n * const [foo, setFoo] = useState(1)\n * const store = useStore({\n *   bar() { return foo } // becomes bar() { return state.foo }\n * })`\n */\nexport function mapStateIdentifiers(json: MitosisComponent, stateProperties: string[]) {\n  const plugin = createCodeProcessorPlugin(\n    () => (code) => mapStateIdentifiersInExpression(code, stateProperties),\n  );\n\n  plugin(json);\n\n  for (const key in json.targetBlocks) {\n    const targetBlock = json.targetBlocks[key];\n    for (const targetBlockKey of Object.keys(targetBlock)) {\n      const block = targetBlock[targetBlockKey as keyof TargetBlockDefinition];\n      if (block && 'code' in block) {\n        block.code = mapStateIdentifiersInExpression(block.code, stateProperties);\n      }\n    }\n  }\n\n  traverse(json).forEach(function (item) {\n    // only consolidate bindings for HTML tags, not custom components\n    // custom components are always PascalCase, e.g. MyComponent\n    // but HTML tags are lowercase, e.g. div\n    if (isMitosisNode(item) && item.name.toLowerCase() === item.name) {\n      consolidateClassBindings(item);\n    }\n  });\n}\n\n/**\n * Replaces `this.` with `state.` and trims code\n * @param code origin code\n */\nconst getCleanedStateCode = (code: string): string => {\n  return replaceNodes({\n    code,\n    nodeMaps: [\n      {\n        from: types.thisExpression(),\n        to: types.identifier('state'),\n      },\n    ],\n  }).trim();\n};\n\nconst processStateObjectSlice = (item: ObjectMethod | ObjectProperty): StateValue => {\n  if (isObjectProperty(item)) {\n    if (isFunctionExpression(item.value)) {\n      return {\n        code: getCleanedStateCode(parseCode(item.value)),\n        type: 'function',\n      };\n    } else if (isArrowFunctionExpression(item.value)) {\n      /**\n       * Arrow functions are normally converted to object methods to work around\n       * limitations with arrow functions in state in frameworks such as Svelte.\n       * However, this conversion does not work for async arrow functions due to\n       * how we handle parsing in `handleErrorOrExpression` for parsing\n       * expressions. That code does not detect async functions in order to apply\n       * its parsing workarounds. Even if it did, it does not consider async code\n       * when prefixing with \"function\". This would result in \"function async foo()\"\n       * which is not a valid function expression definition.\n       */\n      // TODO ENG-7256 Find a way to do this without diverging code path\n      if (item.value.async) {\n        const func = functionExpression(\n          item.key as Identifier,\n          item.value.params,\n          item.value.body as BlockStatement,\n          false,\n          true,\n        );\n\n        return {\n          code: parseCode(func).trim(),\n          type: 'function',\n        };\n      }\n      const n = objectMethod(\n        'method',\n        item.key as Expression,\n        item.value.params,\n        item.value.body as BlockStatement,\n      );\n      // Replace this. with state. to handle following\n      // const state = useStore({ _do: () => {this._active = !!id;}})\n      const code = getCleanedStateCode(parseCode(n));\n      return {\n        code: code,\n        type: 'method',\n      };\n    } else {\n      // Remove typescript types, e.g. from\n      // { foo: ('string' as SomeType) }\n      if (isTSAsExpression(item.value)) {\n        return {\n          code: getCleanedStateCode(parseCode(item.value.expression)),\n          type: 'property',\n          propertyType: 'normal',\n        };\n      }\n      return {\n        code: getCleanedStateCode(parseCode(item.value)),\n        type: 'property',\n        propertyType: 'normal',\n      };\n    }\n  } else if (isObjectMethod(item)) {\n    // TODO ENG-7256 Find a way to do this without diverging code path\n    if (item.async) {\n      const func = functionExpression(\n        item.key as Identifier,\n        item.params,\n        item.body as BlockStatement,\n        false,\n        true,\n      );\n\n      return {\n        code: parseCode(func).trim(),\n        type: 'function',\n      };\n    }\n\n    const method = objectMethod(\n      item.kind,\n      item.key,\n      item.params,\n      item.body,\n      false,\n      false,\n      item.async,\n    );\n\n    const n = getCleanedStateCode(parseCode({ ...method, returnType: null }));\n\n    const isGetter = item.kind === 'get';\n\n    return {\n      code: n,\n      type: isGetter ? 'getter' : 'method',\n    };\n  } else {\n    throw new Error('Unexpected state value type', item);\n  }\n};\n\nconst processDefaultPropsSlice = (item: ObjectMethod | ObjectProperty): StateValue => {\n  if (isObjectProperty(item)) {\n    if (isFunctionExpression(item.value) || isArrowFunctionExpression(item.value)) {\n      return {\n        code: parseCode(item.value),\n        type: 'method',\n      };\n    } else {\n      // Remove typescript types, e.g. from\n      // { foo: ('string' as SomeType) }\n      if (isTSAsExpression(item.value)) {\n        return {\n          code: parseCode(item.value.expression),\n          type: 'property',\n          propertyType: 'normal',\n        };\n      }\n      return {\n        code: parseCode(item.value),\n        type: 'property',\n        propertyType: 'normal',\n      };\n    }\n  } else if (isObjectMethod(item)) {\n    const n = parseCode({ ...item, returnType: null });\n\n    const isGetter = item.kind === 'get';\n\n    return {\n      code: n,\n      type: isGetter ? 'getter' : 'method',\n    };\n  } else {\n    throw new Error('Unexpected state value type', item);\n  }\n};\n\nexport const parseStateObjectToMitosisState = (\n  object: ObjectExpression,\n  isState: boolean = true, // parse state or defaultProps\n): MitosisState => {\n  const state: MitosisState = {};\n  object.properties.forEach((x) => {\n    if (isSpreadElement(x)) {\n      throw new Error('Parse Error: Mitosis cannot consume spread element in state object: ' + x);\n    }\n\n    if (isPrivateName(x.key)) {\n      throw new Error('Parse Error: Mitosis cannot consume private name in state object: ' + x.key);\n    }\n\n    if (!isIdentifier(x.key) && !isStringLiteral(x.key)) {\n      throw new Error(\n        'Parse Error: Mitosis cannot consume non-identifier and non-string key in state object: ' +\n          x.key,\n      );\n    }\n\n    const keyName = isStringLiteral(x.key) ? x.key.value : x.key.name;\n    state[keyName] = isState ? processStateObjectSlice(x) : processDefaultPropsSlice(x);\n  });\n\n  return state;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/jsx/types.ts",
    "content": "import { MitosisComponent } from '@/types/mitosis-component';\nimport { Project } from 'ts-morph';\n\nexport type ParseMitosisOptions = {\n  jsonHookNames?: string[];\n  compileAwayPackages?: string[];\n  typescript: boolean;\n  tsProject?: {\n    project: Project;\n  };\n  filePath?: string;\n\n  /**\n   * When `true`, the `blocksSlots` field on Mitosis Nodes will be used to transform\n   * deeply nested JSX elements found on properties. Note that not every generator\n   * supports parsing `blocksSlots`.\n   * Defaults to `false`.\n   */\n  enableBlocksSlots?: boolean;\n};\n\nexport type ResolvedImport = {\n  path: string;\n  value: string;\n};\n\nexport type Context = {\n  // Babel has other context\n  cwd?: string;\n  builder: {\n    component: MitosisComponent;\n    resolvedImports?: ResolvedImport[];\n  };\n};\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/css/index.ts",
    "content": "import { Ast } from 'svelte/types/compiler/interfaces';\nimport type { SveltosisComponent } from '../types';\n\nexport const parseCss = (ast: Ast, json: SveltosisComponent) => {\n  json.style = ast.css?.content.styles;\n};\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/bindings.ts",
    "content": "import { createSingleBinding } from '../../../helpers/bindings';\nimport type { MitosisNode } from '../../../types/mitosis-node';\nimport type { SveltosisComponent } from '../types';\n\nfunction replaceGroupWithChecked(node: MitosisNode, isArray = false) {\n  if (node.bindings.group?.code?.length) {\n    const bindingValue = node.bindings.value?.code;\n    const propertyValue = node.properties.value;\n    const groupBinding = node.bindings.group.code;\n\n    let code = '';\n\n    if (isArray) {\n      code = bindingValue\n        ? `${groupBinding}.includes(${bindingValue})`\n        : `${groupBinding}.includes('${propertyValue}')`;\n    } else {\n      code = bindingValue\n        ? `${groupBinding} === ${bindingValue}`\n        : `${groupBinding} === '${propertyValue}'`;\n    }\n\n    node.bindings['checked'] = createSingleBinding({\n      code,\n    });\n    delete node.bindings.group;\n  }\n}\n\n/* post-processes bindings\n  bind:group https://svelte.dev/docs#template-syntax-element-directives-bind-group\n  bind:property https://svelte.dev/docs#template-syntax-component-directives-bind-this\n  bind:this https://svelte.dev/docs#template-syntax-component-directives-bind-this\n\n  - replaces group binding with checked for checkboxes and radios (supported inputs for bind:group)\n  - adds onChange for bind:group and bind:property (event.target.value OR event.target.checked)\n*/\nexport function processBindings(json: SveltosisComponent, node: MitosisNode) {\n  let name;\n  let target = 'event.target.value';\n  let binding = '';\n  let isArray = false;\n\n  if (Object.prototype.hasOwnProperty.call(node.bindings, 'group')) {\n    name = 'group';\n    binding = node.bindings.group?.code ?? '';\n\n    if (binding.startsWith('state.')) {\n      const stateObject = json.state[binding.replace(/^state\\./, '')];\n      isArray = Array.isArray(stateObject?.code);\n    }\n\n    replaceGroupWithChecked(node, isArray);\n\n    if (node.properties.type === 'checkbox' && !node.properties.value) {\n      target = 'event.target.checked';\n    }\n  } else if (Object.prototype.hasOwnProperty.call(node.bindings, 'this')) {\n    name = 'ref';\n    binding = node.bindings.this?.code ?? '';\n  } else if (\n    Object.prototype.hasOwnProperty.call(node.bindings, 'onChange') &&\n    node.properties.type === 'checkbox'\n  ) {\n    target = 'event.target.checked';\n    binding = node.bindings.onChange?.code.split('=')[0] ?? '';\n  }\n\n  let onChangeCode = `${binding} = ${target}`;\n\n  // If the binding is an array, we should push / splice rather than assigning\n  if (isArray) {\n    onChangeCode = `event.target.checked ? ${binding}.push(${target}) : ${binding}.splice(${binding}.indexOf(${\n      node.properties.value ? `'${node.properties.value}'` : node.bindings.value?.code\n    }), 1)`;\n  }\n\n  if (name !== 'ref' && binding) {\n    node.bindings['onChange'] = createSingleBinding({\n      code: onChangeCode,\n      arguments: ['event'],\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/children.ts",
    "content": "import type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport type { MitosisNode } from '../../../types/mitosis-node';\nimport { parseHtmlNode } from '../html';\nimport type { SveltosisComponent } from '../types';\n\nexport function filterChildren(children: TemplateNode[]) {\n  return (\n    children?.filter((n) => n.type !== 'Comment' && (n.type !== 'Text' || n.data?.trim().length)) ??\n    []\n  );\n}\n\nexport function parseChildren(json: SveltosisComponent, node: TemplateNode) {\n  const children: MitosisNode[] = [];\n\n  if (node.children) {\n    for (const child of filterChildren(node.children)) {\n      const mitosisNode = parseHtmlNode(json, child);\n      if (mitosisNode) {\n        children.push(mitosisNode);\n      }\n    }\n  }\n\n  return children;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/expressions.ts",
    "content": "import { generate } from 'astring';\nimport { ObjectExpression, Property } from 'estree';\n\nimport { getParsedValue } from '../instance/references';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseObjectExpression(json: SveltosisComponent, node: ObjectExpression) {\n  const properties = (node as ObjectExpression).properties.map((n: any) => {\n    const node_ = n as Property;\n    return {\n      key: generate(node_.key),\n      value: getParsedValue(json, node_.value),\n    };\n  });\n\n  const c = {};\n  for (const item of properties) {\n    Object.assign(c, { [item.key]: item.value });\n  }\n  return c;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/hooks.ts",
    "content": "import type { SveltosisComponent } from '../types';\n\nexport function addToOnInitHook(json: SveltosisComponent, code: string) {\n  if (json.hooks.onInit?.code.length) {\n    json.hooks.onInit.code += `\\n ${code}`;\n  } else {\n    json.hooks.onInit = {\n      code,\n    };\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/mitosis-node.ts",
    "content": "import { MitosisNode } from '../../../types/mitosis-node';\n\nexport function createMitosisNode(): MitosisNode {\n  return {\n    '@type': '@builder.io/mitosis/node',\n    name: '',\n    meta: {},\n    scope: {},\n    children: [],\n    bindings: {},\n    properties: {},\n    slots: {},\n  };\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/post-process.ts",
    "content": "import generate from '@babel/generator';\nimport * as parser from '@babel/parser';\nimport * as types from '@babel/types';\nimport { replaceIdentifiers, replaceNodes } from '../../../helpers/replace-identifiers';\nimport type { BaseHook, StateValue } from '../../../types/mitosis-component';\nimport type { MitosisNode } from '../../../types/mitosis-node';\nimport type { SveltosisComponent } from '../types';\nimport { processBindings } from './bindings';\n\ntype SveltosisStateValue = StateValue & { arguments?: string[]; type: string };\n\nconst getArgs = (code: string) => {\n  try {\n    let parsed = parser.parse(code);\n    let body = parsed.program.body[0];\n    if (types.isFunctionDeclaration(body)) {\n      return body.params.map((p) => generate(p).code);\n    }\n  } catch (e) {}\n\n  return [];\n};\n\nexport function preventNameCollissions(json: SveltosisComponent, item: SveltosisStateValue) {\n  let output = item.code;\n  const argumentsOutput = getArgs(output);\n\n  output = replaceNodes({\n    code: output,\n    nodeMaps: argumentsOutput.map((arg) => ({\n      from: types.identifier(arg),\n      to: types.identifier(`${arg}_`),\n    })),\n  });\n\n  return argumentsOutput?.length\n    ? {\n        ...item,\n        code: output,\n        arguments: getArgs(output),\n      }\n    : { ...item, code: output };\n}\n\nfunction prependProperties(json: SveltosisComponent, code: string) {\n  return replaceNodes({\n    code,\n    nodeMaps: Object.keys(json.props).map((property) => ({\n      from: types.identifier(property),\n      to: types.memberExpression(types.identifier('props'), types.identifier(property)),\n    })),\n  });\n}\n\nfunction prependState(json: SveltosisComponent, input: string) {\n  let output = input;\n  for (const stateKey of Object.keys(json.state)) {\n    output = replaceIdentifiers({\n      code: output,\n      from: stateKey,\n      to: `state.${stateKey}`,\n    });\n  }\n\n  return output;\n}\n\nfunction addPropertiesAndState(json: SveltosisComponent, input: string) {\n  let output = input;\n  output = prependProperties(json, output);\n  output = prependState(json, output);\n  return output;\n}\n\nfunction addPropertiesAndStateToNode(json: SveltosisComponent, node: MitosisNode) {\n  for (const key of Object.keys(node.bindings)) {\n    if (Object.prototype.hasOwnProperty.call(node.bindings, key)) {\n      const value = node.bindings[key]!;\n      node.bindings[key]!.code = addPropertiesAndState(json, value?.code ?? '').trim();\n    }\n  }\n}\n\nfunction postProcessState(json: SveltosisComponent) {\n  for (const key of Object.keys(json.state)) {\n    const item = json.state[key] as SveltosisStateValue;\n\n    if (item?.type !== 'property') {\n      const output = preventNameCollissions(json, item);\n\n      output.code = addPropertiesAndState(json, output.code);\n\n      json.state[key] = {\n        ...item,\n        ...output,\n      };\n    }\n  }\n}\n\nfunction postProcessChildren(json: SveltosisComponent, children: MitosisNode[]) {\n  for (const node of children) {\n    addPropertiesAndStateToNode(json, node);\n    processBindings(json, node);\n\n    let children: MitosisNode[] = [];\n\n    if (node.children?.length > 0) {\n      children = node.children;\n    }\n\n    const metaValues = (Object.values(node.meta) || []) as Array<MitosisNode | MitosisNode['meta']>;\n\n    if (metaValues.length > 0) {\n      const metaChildren = metaValues.filter((item) => {\n        return item?.['@type'] === '@builder.io/mitosis/node';\n      }) as MitosisNode[];\n\n      children = [...children, ...metaChildren];\n    }\n\n    postProcessChildren(json, children);\n  }\n}\n\nfunction addPropertiesAndStateToHook(json: SveltosisComponent, hook: BaseHook): BaseHook {\n  return {\n    code: addPropertiesAndState(json, hook.code),\n    deps: addPropertiesAndState(json, hook.deps || ''),\n  };\n}\n\nfunction postProcessHooks(json: SveltosisComponent) {\n  const hookKeys = Object.keys(json.hooks) as Array<keyof typeof json.hooks>;\n  for (const key of hookKeys) {\n    let hook = json.hooks[key];\n    if (!hook) {\n      continue;\n    }\n\n    if (Array.isArray(hook)) {\n      hook.forEach((item, index) => {\n        (hook as Array<any>)!.splice(index, 1, addPropertiesAndStateToHook(json, item));\n      });\n    } else {\n      hook = addPropertiesAndStateToHook(json, hook as BaseHook);\n    }\n  }\n}\n\nfunction postProcessContext(json: SveltosisComponent) {\n  for (const key of Object.keys(json.context.set)) {\n    if (json.context.set[key]?.ref) {\n      json.context.set[key].ref = addPropertiesAndState(json, json.context.set[key].ref as string);\n    }\n  }\n}\n\nexport function postProcess(json: SveltosisComponent) {\n  // Call preventNameCollissions here, before the rest (where it applies -- function arguments for now)\n  // State (everything except type === 'property')\n  postProcessState(json);\n\n  // Children\n  postProcessChildren(json, json.children);\n\n  // Hooks\n  postProcessHooks(json);\n\n  // Context\n  postProcessContext(json);\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/helpers/string.ts",
    "content": "// helper functions for strings\nimport { camelCase } from 'lodash';\n\nexport function uniqueName(existingItems: string[], reference: string) {\n  let index = 0;\n  let match = false;\n\n  while (false === match) {\n    if (!existingItems.includes(reference)) {\n      match = true;\n      break;\n    }\n\n    index++;\n  }\n\n  return camelCase(`${reference}${index}`);\n}\n\nexport function insertAt(string_: string, sub: string, pos: number) {\n  return `${string_.slice(0, pos)}${sub}${string_.slice(pos)}`;\n}\n\nexport function stripQuotes(string_: string) {\n  return string_.replace(/[\"']+/g, '');\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/actions.ts",
    "content": "import { generate } from 'astring';\nimport { uniqueName } from '../helpers/string';\n\nimport type { Element } from 'svelte/types/compiler/interfaces';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseAction(\n  json: SveltosisComponent,\n  nodeReference: string,\n  attribute: Element['attributes'][number],\n) {\n  const methodName = attribute.name;\n  let parameters = '';\n\n  if (['Identifier', 'ObjectExpression'].includes(attribute.expression?.type)) {\n    parameters = generate(attribute.expression);\n  }\n\n  const actionHandler = uniqueName(Object.keys(json.state), 'actionHandler');\n\n  json.state[actionHandler] = {\n    code: 'null',\n    type: 'property',\n    propertyType: 'normal',\n  };\n\n  const initHandler = `if (${nodeReference}) { ${actionHandler} = ${methodName}(${nodeReference}, ${parameters}); };\\n`;\n\n  json.hooks.onMount.push({\n    code: initHandler,\n  });\n\n  // Handle Destroy / Re-Mount\n  const onReferenceUpdate = `\n    if (!${nodeReference} && ${actionHandler}) { \n      ${actionHandler}?.destroy(); \n      ${actionHandler} = null; \n    } else if (${nodeReference} && !${actionHandler}) { \n      ${initHandler} \n    };\\n\n  `;\n\n  json.hooks.onUpdate = json.hooks.onUpdate || [];\n\n  json.hooks.onUpdate.push({\n    code: onReferenceUpdate,\n    deps: `[${nodeReference}]`,\n  });\n\n  // Handle Update\n  if (parameters) {\n    const onUpdate = `${actionHandler}?.update(${parameters})\\n`;\n\n    json.hooks.onUpdate.push({\n      code: onUpdate,\n      deps: `[${parameters}]`,\n    });\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/each.ts",
    "content": "import { parseChildren } from '../helpers/children';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nimport type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport { createSingleBinding } from '../../../helpers/bindings';\nimport { MitosisNode } from '../../../types/mitosis-node';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseEach(json: SveltosisComponent, node: TemplateNode): MitosisNode {\n  return {\n    ...createMitosisNode(),\n    name: 'For',\n    scope: { forName: node.context.name },\n    bindings: {\n      each: createSingleBinding({\n        code: node.expression.name,\n      }),\n    },\n    children: parseChildren(json, node),\n  };\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/element.ts",
    "content": "import { generate } from 'astring';\nimport { upperFirst } from 'lodash';\nimport { filterChildren, parseChildren } from '../helpers/children';\nimport { createMitosisNode } from '../helpers/mitosis-node';\nimport { insertAt, uniqueName } from '../helpers/string';\nimport { parseAction } from './actions';\n\nimport type { ArrowFunctionExpression, BaseCallExpression, Identifier, Node } from 'estree';\nimport type { Element, MustacheTag, TemplateNode, Text } from 'svelte/types/compiler/interfaces';\nimport { createSingleBinding } from '../../../helpers/bindings';\nimport type { SveltosisComponent } from '../types';\n\ninterface AttributeShorthand {\n  type: 'AttributeShorthand';\n  expression: Identifier;\n}\n\nconst SPECIAL_ELEMENTS = new Set(['svelte:component', 'svelte:element']);\n\nexport function parseElement(json: SveltosisComponent, node: TemplateNode) {\n  const mitosisNode = createMitosisNode();\n  mitosisNode.name = node.name;\n\n  const useReference = () => {\n    const nodeReference = uniqueName(Object.keys(json.refs), node.name);\n    if (!Object.keys(json.refs).includes(nodeReference)) {\n      json.refs[nodeReference] = { argument: '', typeParameter: '' };\n\n      mitosisNode.bindings.ref = createSingleBinding({ code: nodeReference });\n    }\n\n    return nodeReference;\n  };\n\n  /* \n    Parse special elements such as svelte:component and svelte:element\n  */\n  if (SPECIAL_ELEMENTS.has(node.name)) {\n    const expression = generate(node.expression || node.tag);\n\n    let prefix = 'state';\n\n    if (json.props[expression]) {\n      prefix = 'props';\n    }\n\n    mitosisNode.name = `${prefix}.${expression}`;\n  }\n\n  if (node.attributes?.length) {\n    for (const attribute of node.attributes as Element['attributes']) {\n      switch (attribute.type) {\n        case 'Attribute': {\n          switch (attribute.value[0]?.type) {\n            case 'Text': {\n              const value: Text = attribute.value[0];\n              // if there are already conditional class declarations\n              // add class names defined here to the bindings code as well\n              if (attribute.name === 'class' && mitosisNode.bindings.class?.code?.length) {\n                mitosisNode.bindings.class.code = insertAt(\n                  mitosisNode.bindings.class.code,\n                  ` ${value.data} `,\n                  1,\n                );\n              } else {\n                mitosisNode.properties[attribute.name] = value.data;\n              }\n\n              break;\n            }\n            case 'MustacheTag': {\n              const value: MustacheTag = attribute.value[0];\n              const expression = value.expression as Identifier;\n              let code = generate(expression);\n\n              if (attribute.name === 'class') {\n                code = mitosisNode.bindings.class?.code?.length\n                  ? insertAt(\n                      mitosisNode.bindings.class.code,\n                      ' ${' + code + '}',\n                      mitosisNode.bindings.class.code.length - 1,\n                    )\n                  : '`${' + code + '}`';\n              }\n\n              mitosisNode.bindings[attribute.name] = createSingleBinding({ code });\n\n              break;\n            }\n            case 'AttributeShorthand': {\n              // e.g. <input {value}/>\n              const value: AttributeShorthand = attribute.value[0];\n              const code = value.expression.name;\n              mitosisNode.bindings[code] = createSingleBinding({ code });\n\n              break;\n            }\n            default: {\n              const name = attribute.name;\n              mitosisNode.bindings[name] = createSingleBinding({\n                code: attribute.value.toString(),\n              });\n            }\n          }\n\n          break;\n        }\n        case 'Spread': {\n          const expression = attribute.expression as Identifier;\n          mitosisNode.bindings[expression.name] = {\n            code: expression.name,\n            type: 'spread',\n            spreadType: 'normal',\n          };\n\n          break;\n        }\n        case 'EventHandler': {\n          let object: { code: string; arguments: string[] | undefined } = {\n            code: '',\n            arguments: [],\n          };\n\n          if (attribute.expression?.type === 'ArrowTypeFunction') {\n            const expression = attribute.expression as ArrowFunctionExpression;\n\n            let code = generate(expression.body);\n\n            object = {\n              code,\n              arguments: (expression.body as BaseCallExpression)?.arguments?.map(\n                (a) => (a as Identifier).name ?? [],\n              ),\n            };\n          } else if (attribute.expression) {\n            let code = generate(attribute.expression);\n\n            if (attribute.expression.body?.type === 'CallExpression') {\n              code = generate(attribute.expression.body);\n            }\n\n            if (!code.startsWith(')') && !code.endsWith(')')) {\n              code += '()';\n            }\n\n            if (\n              !attribute.expression.arguments?.length &&\n              !attribute.expression.body?.arguments?.length\n            ) {\n              code = code.replace(/\\(\\)/g, '(event)');\n            }\n\n            let args: string[] | undefined = undefined;\n            if (attribute.expression.type === 'ArrowFunctionExpression') {\n              args = attribute.expression.params?.map((arg: any) => generate(arg)) ?? [];\n            } else if (\n              attribute.expression.type === 'CallExpression' &&\n              attribute.expression.arguments.length\n            ) {\n              args = [];\n            }\n\n            object = {\n              code,\n              arguments: args,\n            };\n          } else {\n            object = {\n              code: `props.on${upperFirst(attribute.name)}(event)`,\n              arguments: ['event'],\n            };\n          }\n\n          mitosisNode.bindings[`on${upperFirst(attribute.name)}`] = createSingleBinding(object);\n\n          // add event handlers as props (e.g. props.onClick)\n          json.props = {\n            ...json.props,\n            [`on${upperFirst(attribute.name)}`]: { default: () => ({}) },\n          };\n\n          break;\n        }\n        case 'Binding': {\n          /* \n            adding onChange handlers for bind:group and bind:property is done during post processing \n            same goes for replacing the group binding with checked\n            see helpers/post-process.ts\n          */\n\n          const expression = attribute.expression as Identifier;\n          const binding = expression.name;\n\n          let name = attribute.name;\n\n          // template ref\n          if (attribute.name === 'this') {\n            name = 'ref';\n            json.refs[binding] = {\n              argument: 'null',\n              typeParameter: 'any',\n            };\n            if (Object.prototype.hasOwnProperty.call(json.state, binding)) {\n              delete json.state[binding];\n            }\n          }\n\n          if (name !== 'ref' && name !== 'group' && name !== 'this') {\n            const onChangeCode = `${binding} = event.target.value`;\n            mitosisNode.bindings['onChange'] = createSingleBinding({\n              code: onChangeCode,\n              arguments: ['event'],\n            });\n          }\n\n          mitosisNode.bindings[name] = createSingleBinding({\n            code: binding,\n          });\n\n          break;\n        }\n        case 'Class': {\n          const expression = attribute.expression as Node;\n\n          // conditional classes (e.g. class:disabled or class:disabled={disabled})\n          const binding = `${generate(expression)} ? '${attribute.name}'  : ''`;\n\n          let code = '';\n\n          // if there are existing class declarations\n          // add them here instead and remove them from properties\n          // to avoid duplicate class declarations in certain frameworks\n          if (mitosisNode.properties?.class?.length) {\n            code = `${mitosisNode.properties.class} `;\n            delete mitosisNode.properties.class;\n          }\n\n          // if class code is already defined (meaning there is more than 1 conditional class declaration)\n          // append it to the string instead of assigning it\n          if (\n            mitosisNode.bindings.class &&\n            Object.prototype.hasOwnProperty.call(mitosisNode.bindings.class, 'code') &&\n            mitosisNode.bindings.class?.code.length\n          ) {\n            code = insertAt(\n              mitosisNode.bindings.class.code,\n              ' ${' + binding + '}',\n              mitosisNode.bindings.class.code.length - 1,\n            );\n            mitosisNode.bindings.class = createSingleBinding({ code });\n          } else {\n            // otherwise just assign\n            code = '`' + code + '${' + binding + '}`';\n            mitosisNode.bindings.class = createSingleBinding({ code });\n          }\n          break;\n        }\n        case 'Action': {\n          parseAction(json, useReference(), attribute);\n          break;\n        }\n        // No default\n      }\n    }\n  }\n\n  let filteredChildren: TemplateNode[] = [];\n\n  if (node.children) {\n    filteredChildren = filterChildren(node.children);\n  }\n\n  if (filteredChildren.length === 1 && filteredChildren[0].type === 'RawMustacheTag') {\n    const child = filteredChildren[0] as MustacheTag;\n\n    mitosisNode.children = [];\n    mitosisNode.bindings.innerHTML = createSingleBinding({\n      code: generate(child.expression),\n    });\n  } else {\n    mitosisNode.children = parseChildren(json, node);\n  }\n\n  return mitosisNode;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/fragment.ts",
    "content": "import { parseChildren } from '../helpers/children';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nimport type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseFragment(json: SveltosisComponent, node: TemplateNode) {\n  let mitosisNode = createMitosisNode();\n\n  mitosisNode.name = 'Fragment';\n  mitosisNode.children = parseChildren(json, node);\n\n  // if there is only one child, don't even bother to render the fragment as it is not necessary\n  if (mitosisNode.children.length === 1) {\n    mitosisNode = mitosisNode.children[0];\n  }\n  return mitosisNode;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/if-else.ts",
    "content": "import { generate } from 'astring';\n\nimport { parseHtmlNode } from '.';\nimport { parseChildren } from '../helpers/children';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nimport type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport { createSingleBinding } from '../../../helpers/bindings';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseIfElse(json: SveltosisComponent, node: TemplateNode) {\n  const mitosisNode = createMitosisNode();\n  mitosisNode.name = 'Show';\n  mitosisNode.bindings = {\n    when: createSingleBinding({\n      code: generate(node.expression),\n    }),\n  };\n\n  mitosisNode.children = parseChildren(json, node);\n\n  if (node.else) {\n    mitosisNode.meta.else =\n      node.else.children?.length === 1\n        ? parseHtmlNode(json, node.else.children[0])\n        : {\n            ...createMitosisNode(),\n            name: 'div',\n            children: node.else.children?.map((n: TemplateNode) => parseHtmlNode(json, n)) ?? [],\n          };\n  }\n  return mitosisNode;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/index.ts",
    "content": "import { walk } from 'svelte/compiler';\nimport type { MitosisNode } from '../../../types/mitosis-node';\n\nimport { parseEach } from './each';\nimport { parseElement } from './element';\nimport { parseFragment } from './fragment';\nimport { parseIfElse } from './if-else';\nimport { parseMustacheTag, parseRawMustacheTag } from './mustache-tag';\nimport { parseSlot } from './slot';\nimport { parseText } from './text';\n\nimport type { Ast, TemplateNode } from 'svelte/types/compiler/interfaces';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseHtml(ast: Ast, json: SveltosisComponent) {\n  // todo: should filter children and check if just 1 has length\n  const html =\n    ast.html.children?.length === 2 && ast.html.children[0].raw?.trim().length === 0\n      ? ast.html.children[1]\n      : ast.html;\n\n  walk(html, {\n    enter(node, parent) {\n      const templateNode = node as TemplateNode;\n      const parentTemplateNode = parent as TemplateNode;\n\n      if (parentTemplateNode?.children || templateNode.data === '\\n\\n') {\n        this.skip();\n        return;\n      }\n\n      const mitosisNode = parseHtmlNode(json, templateNode);\n\n      if (mitosisNode) {\n        json.children.push(mitosisNode);\n      }\n    },\n  });\n}\n\nexport function parseHtmlNode(\n  json: SveltosisComponent,\n  node: TemplateNode,\n): MitosisNode | undefined {\n  const mitosisNode: MitosisNode = {\n    '@type': '@builder.io/mitosis/node',\n    name: '',\n    meta: {},\n    scope: {},\n    children: [],\n    bindings: {},\n    properties: {},\n    slots: {},\n  };\n\n  switch (node.type) {\n    case 'Element':\n    case 'InlineComponent': {\n      return parseElement(json, node);\n    }\n    case 'MustacheTag': {\n      return parseMustacheTag(node);\n    }\n    case 'RawMustacheTag': {\n      return parseRawMustacheTag(node);\n    }\n    case 'IfBlock': {\n      return parseIfElse(json, node);\n    }\n    case 'EachBlock': {\n      return parseEach(json, node);\n    }\n    case 'Text': {\n      return parseText(node);\n    }\n    case 'Fragment': {\n      return parseFragment(json, node);\n    }\n    case 'Slot': {\n      return parseSlot(json, node);\n    }\n    case 'Comment': {\n      // do nothing :) probably skip?\n\n      break;\n    }\n    default: {\n      mitosisNode.name = 'div';\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/mustache-tag.ts",
    "content": "import { generate } from 'astring';\nimport type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport { createSingleBinding } from '../../../helpers/bindings';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nexport function parseMustacheTag(node: TemplateNode) {\n  const mitosisNode = createMitosisNode();\n  mitosisNode.name = 'div';\n  mitosisNode.bindings['_text'] = createSingleBinding({\n    code: generate(node.expression),\n  });\n  return mitosisNode;\n}\n\nexport function parseRawMustacheTag(node: TemplateNode) {\n  const mitosisNode = createMitosisNode();\n  mitosisNode.name = 'div';\n  mitosisNode.bindings.innerHTML = createSingleBinding({\n    code: generate(node.expression),\n  });\n  return mitosisNode;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/slot.ts",
    "content": "import { camelCase, upperFirst } from 'lodash';\nimport type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport { parseChildren } from '../helpers/children';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseSlot(json: SveltosisComponent, node: TemplateNode) {\n  const mitosisNode = createMitosisNode();\n  mitosisNode.name = 'Slot';\n\n  if (\n    node.attributes.length > 0 &&\n    node.attributes[0].value.length > 0 &&\n    node.attributes[0].value[0].data?.trim().length\n  ) {\n    const slotName = upperFirst(camelCase(node.attributes[0].value[0]?.data));\n    mitosisNode.properties.name = slotName;\n  }\n\n  mitosisNode.children = parseChildren(json, node);\n\n  return mitosisNode;\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/html/text.ts",
    "content": "import type { TemplateNode } from 'svelte/types/compiler/interfaces';\nimport { createMitosisNode } from '../helpers/mitosis-node';\n\nexport function parseText(node: TemplateNode) {\n  return {\n    ...createMitosisNode(),\n    name: 'div',\n    properties: {\n      _text: node.data,\n    },\n  };\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/index.ts",
    "content": "import { omit } from 'lodash';\nimport preprocessor from 'svelte-preprocess';\nimport { parse, preprocess } from 'svelte/compiler';\n\nimport { parseCss } from './css';\nimport { postProcess } from './helpers/post-process';\nimport { parseHtml } from './html';\nimport { parseInstance } from './instance';\nimport { parseModule } from './module';\nimport { collectTypes, isTypeScriptComponent } from './typescript';\n\nimport type { Ast } from 'svelte/types/compiler/interfaces';\nimport type { MitosisComponent } from '../../types/mitosis-component';\nimport type { SveltosisComponent } from './types';\n\nfunction mapAstToMitosisJson(\n  ast: Ast,\n  name: string,\n  string_ = '',\n  usesTypescript = false,\n): MitosisComponent {\n  const json: SveltosisComponent = {\n    '@type': '@builder.io/mitosis/component',\n    inputs: [],\n    state: {},\n    props: {},\n    refs: {},\n    hooks: {\n      onMount: [],\n      onEvent: [],\n    },\n    imports: [],\n    children: [],\n    context: { get: {}, set: {} },\n    subComponents: [],\n    meta: {},\n    name,\n    style: undefined,\n  };\n\n  parseModule(ast, json);\n  parseInstance(ast, json);\n  parseHtml(ast, json);\n  parseCss(ast, json);\n\n  postProcess(json);\n\n  if (usesTypescript) {\n    collectTypes(string_, json);\n  }\n\n  return omit(json, ['props']);\n}\n\nexport const parseSvelte = async function (\n  string_: string,\n  path = 'MyComponent.svelte',\n): Promise<MitosisComponent> {\n  const usesTypescript = isTypeScriptComponent(string_);\n\n  const processedString = await preprocess(\n    string_,\n    [\n      preprocessor({\n        typescript: usesTypescript ? { tsconfigFile: false } : false,\n      }),\n    ],\n    {\n      filename: path.split('/').pop(),\n    },\n  );\n\n  const ast = parse(processedString.code);\n  const componentName = path.split('/').pop()?.split('.')[0] ?? 'MyComponent';\n  return mapAstToMitosisJson(ast, componentName, string_, usesTypescript);\n};\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/context.ts",
    "content": "import { generate } from 'astring';\n\nimport type {\n  BaseCallExpression,\n  ExpressionStatement,\n  Identifier,\n  SimpleLiteral,\n  VariableDeclaration,\n} from 'estree';\n\nimport { stripQuotes } from '../helpers/string';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseGetContext(json: SveltosisComponent, node: VariableDeclaration) {\n  if (node.declarations.length > 0) {\n    const declaration = node.declarations[0];\n    const { name } = declaration.id as Identifier;\n    const arguments_ = (declaration.init as BaseCallExpression)?.arguments;\n\n    if (arguments?.length) {\n      const argument = arguments_[0] as SimpleLiteral;\n\n      json.context.get[name] = {\n        name: generate(argument),\n        path: '',\n      };\n    }\n  }\n}\n\nexport function parseHasContext(json: SveltosisComponent, node: VariableDeclaration) {\n  if (node.declarations.length > 0) {\n    const declaration = node.declarations[0];\n    const { name } = declaration.id as Identifier;\n    const arguments_ = (declaration.init as BaseCallExpression)?.arguments;\n\n    if (arguments?.length) {\n      const argument = arguments_[0] as SimpleLiteral;\n\n      const generatedArgument = generate(argument);\n\n      json.context.get[stripQuotes(generatedArgument)] = {\n        name: generatedArgument,\n        path: '',\n      };\n\n      json.state[name] = {\n        code: `get ${name}() { return ${stripQuotes(generatedArgument)} !== undefined}`,\n        type: 'getter',\n      };\n    }\n  }\n}\n\nexport function parseSetContext(json: SveltosisComponent, node: ExpressionStatement) {\n  if (\n    node.type === 'ExpressionStatement' &&\n    node.expression.type === 'CallExpression' &&\n    node.expression.arguments?.length\n  ) {\n    const hook = (node.expression.callee as Identifier).name;\n\n    if (hook === 'setContext') {\n      const key = node.expression.arguments[0] as SimpleLiteral;\n      const value = node.expression.arguments[1] as Identifier;\n\n      json.context.set[key.value as string] = {\n        name: generate(key) as string,\n        ref: generate(value),\n      };\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/expressions.ts",
    "content": "import { generate } from 'astring';\nimport { BaseNode, ExpressionStatement } from 'estree';\nimport { addToOnInitHook } from '../helpers/hooks';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseMemberExpression(\n  json: SveltosisComponent,\n  node: ExpressionStatement,\n  parent?: BaseNode,\n) {\n  if (parent?.type === 'Program') {\n    addToOnInitHook(json, generate(node));\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/functions.ts",
    "content": "import {\n  AssignmentExpression,\n  isAssignmentExpression,\n  isIdentifier,\n  isUpdateExpression,\n  Node,\n  UpdateExpression,\n} from '@babel/types';\nimport { generate } from 'astring';\nimport type { CallExpression, FunctionDeclaration, Identifier } from 'estree';\nimport { capitalize } from 'lodash';\nimport { walk } from 'svelte/compiler';\nimport { stripQuotes } from '../helpers/string';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseFunctions(json: SveltosisComponent, node: FunctionDeclaration) {\n  const id = node.id as Identifier;\n\n  let dispatchEventName;\n\n  let code = generate(node);\n\n  walk(node, {\n    enter(node) {\n      switch (node.type) {\n        case 'CallExpression': {\n          const node_ = node as CallExpression;\n          const callee = node_.callee as Identifier;\n\n          if (callee?.name === 'dispatch') {\n            dispatchEventName = generate(node_.arguments[0]);\n          }\n          break;\n        }\n        case 'UpdateExpression': {\n          if (isUpdateExpression(node as Node)) {\n            const expression = node as UpdateExpression;\n            if (isIdentifier(expression.argument)) {\n              const argument = expression.argument.name;\n              if (expression.operator === '++') {\n                code = code.replace('++', ` = ${argument} + 1`);\n              } else if (expression.operator === '--') {\n                code = code.replace('--', ` = ${argument} - 1`);\n              }\n            }\n          }\n          break;\n        }\n        case 'AssignmentExpression': {\n          if (isAssignmentExpression(node as Node)) {\n            const expression = node as AssignmentExpression;\n            if (isIdentifier(expression.left)) {\n              const argument = expression.left.name;\n\n              if (expression.operator === '+=') {\n                code = code.replace('+=', `= ${argument} +`);\n              } else if (expression.operator === '-=') {\n                code = code.replace('-=', `= ${argument} -`);\n              }\n            }\n          }\n          break;\n        }\n      }\n    },\n  });\n\n  if (dispatchEventName) {\n    const regex = new RegExp(`dispatch\\\\(${dispatchEventName},?`);\n    code = code.replace(regex, `props.on${capitalize(stripQuotes(dispatchEventName))}(`);\n  }\n\n  json.state[id.name] = {\n    code,\n    type: 'function',\n  };\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/hooks.ts",
    "content": "import { generate } from 'astring';\n\nimport type { BaseCallExpression, BaseFunction, ExpressionStatement } from 'estree';\nimport type { SveltosisComponent } from '../types';\n\nfunction parseHookBody(node: ExpressionStatement, stripCurlyBraces = true) {\n  const arguments_ = (node.expression as BaseCallExpression)?.arguments;\n\n  let code = generate((arguments_[0] as BaseFunction).body);\n\n  if (stripCurlyBraces && code?.trim().length && code[0] === '{' && code[code.length - 1] === '}')\n    code = code.slice(1, -1);\n\n  return code;\n}\n\nexport function parseOnMount(json: SveltosisComponent, node: ExpressionStatement) {\n  json.hooks.onMount.push({\n    code: parseHookBody(node),\n  });\n}\n\nexport function parseOnDestroy(json: SveltosisComponent, node: ExpressionStatement) {\n  json.hooks.onUnMount = {\n    code: parseHookBody(node),\n  };\n}\n\nexport function parseAfterUpdate(json: SveltosisComponent, node: ExpressionStatement) {\n  json.hooks.onUpdate = [\n    {\n      code: parseHookBody(node),\n    },\n  ];\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/imports.ts",
    "content": "import type { ImportDeclaration } from 'estree';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseImports(json: SveltosisComponent, node: ImportDeclaration) {\n  const source = node.source?.value;\n  if (source === 'svelte') return; // Do not import anything from svelte\n  // ^ Maybe this should even be stricter and only allow relative imports and alias ones\n  // as you can't import any other svelte specific libraries either...Or can we?\n\n  const importSpecifiers = Object.values(node.specifiers).map((index) => {\n    return {\n      [index.local.name]: index.type === 'ImportDefaultSpecifier' ? 'default' : index.local.name,\n    };\n  });\n\n  const imports = {};\n\n  for (const specifier of importSpecifiers) {\n    Object.assign(imports, specifier);\n  }\n\n  // only add imports which are actually used\n  if (Object.keys(imports).length > 0) {\n    json.imports = [\n      ...json.imports,\n      { imports, path: (source as string).replace('.svelte', '.lite') },\n    ];\n    // TODO: if import source already exist, combine them\n    // e.g. import { lowercase } from 'lodash';\n    // e.g. import { uppercase } from 'lodash';\n    // should become import { lowercase, uppercase } from 'lodash';\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/index.ts",
    "content": "import { generate } from 'astring';\nimport { walk } from 'svelte/compiler';\n\nimport { parseGetContext, parseHasContext, parseSetContext } from './context';\nimport { parseMemberExpression } from './expressions';\nimport { parseFunctions } from './functions';\nimport { parseAfterUpdate, parseOnDestroy, parseOnMount } from './hooks';\nimport { parseImports } from './imports';\nimport { parseProperties } from './properties';\nimport { parseReactive } from './reactive';\nimport { parseReferences } from './references';\nimport { parseStatementAtProgramLevel } from './statements';\n\nimport type {\n  BaseNode,\n  ExportNamedDeclaration,\n  ExpressionStatement,\n  FunctionDeclaration,\n  Identifier,\n  ImportDeclaration,\n  LabeledStatement,\n  Statement,\n  VariableDeclaration,\n} from 'estree';\nimport type { Ast } from 'svelte/types/compiler/interfaces';\n\nimport type { SveltosisComponent } from '../types';\n\ntype InstanceHandler<T = BaseNode> = (json: SveltosisComponent, node: T, parent?: BaseNode) => void;\n\nconst handleImportDeclaration: InstanceHandler<ImportDeclaration> = (json, node) => {\n  parseImports(json, node as ImportDeclaration);\n};\n\nconst handleExportNamedDeclaration: InstanceHandler<ExportNamedDeclaration> = (json, node) => {\n  parseProperties(json, node);\n};\n\nconst handleMemberExpression: InstanceHandler<ExpressionStatement> = (json, node, parent) => {\n  parseMemberExpression(json, node, parent);\n};\n\nconst handleExpressionStatement: InstanceHandler<ExpressionStatement> = (json, node, parent) => {\n  if (node.expression.type === 'CallExpression') {\n    if (node.expression.callee.type === 'MemberExpression') {\n      handleMemberExpression(json, node, parent);\n      return;\n    }\n\n    const callee = node.expression.callee as Identifier;\n\n    switch (callee.name) {\n      case 'setContext': {\n        parseSetContext(json, node);\n        break;\n      }\n      case 'onMount': {\n        parseOnMount(json, node);\n        break;\n      }\n      case 'onDestroy': {\n        parseOnDestroy(json, node);\n        break;\n      }\n      case 'onAfterUpdate': {\n        parseAfterUpdate(json, node);\n        break;\n      }\n    }\n\n    // No default\n  } else if (parent?.type === 'Program') {\n    json.hooks.onMount.push({\n      code: generate(node),\n    });\n  }\n};\n\nconst handleFunctionDeclaration: InstanceHandler<FunctionDeclaration> = (json, node) => {\n  parseFunctions(json, node);\n};\n\nconst handleVariableDeclaration: InstanceHandler<VariableDeclaration> = (json, node) => {\n  const init = node.declarations[0]?.init;\n\n  if (init?.type === 'CallExpression' && (init?.callee as Identifier)?.name === 'getContext') {\n    parseGetContext(json, node);\n  } else if (\n    init?.type === 'CallExpression' &&\n    (init?.callee as Identifier)?.name === 'hasContext'\n  ) {\n    parseHasContext(json, node);\n  } else if (\n    init?.type === 'CallExpression' &&\n    (init?.callee as Identifier)?.name === 'createEventDispatcher'\n  ) {\n    // ignore\n  } else {\n    parseReferences(json, node);\n  }\n};\n\nconst handleLabeledStatement: InstanceHandler<LabeledStatement> = (json, node) => {\n  if (node.label.name === '$') {\n    parseReactive(json, node);\n  }\n};\n\nconst handleStatement: InstanceHandler<Statement> = (json, node, parent) => {\n  if (parent?.type === 'Program') {\n    parseStatementAtProgramLevel(json, node);\n  }\n};\n\nexport function parseInstance(ast: Ast, json: SveltosisComponent) {\n  walk(ast.instance as BaseNode, {\n    enter(node, parent) {\n      switch (node.type) {\n        case 'ImportDeclaration':\n          handleImportDeclaration(json, node as ImportDeclaration);\n          break;\n        case 'ExportNamedDeclaration':\n          handleExportNamedDeclaration(json, node as ExportNamedDeclaration);\n          break;\n        case 'ExpressionStatement':\n          handleExpressionStatement(json, node as ExpressionStatement, parent);\n          break;\n        case 'FunctionDeclaration':\n          handleFunctionDeclaration(json, node as FunctionDeclaration);\n          break;\n        case 'VariableDeclaration':\n          parent.type === 'Program' && handleVariableDeclaration(json, node as VariableDeclaration);\n          break;\n        case 'LabeledStatement':\n          handleLabeledStatement(json, node as LabeledStatement);\n          break;\n        case 'IfStatement':\n        case 'SwitchStatement':\n        case 'TryStatement':\n        case 'DoWhileStatement':\n        case 'ForStatement':\n        case 'ForInStatement':\n        case 'ForOfStatement':\n          handleStatement(json, node as Statement, parent);\n          break;\n      }\n    },\n  });\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/properties.ts",
    "content": "import type {\n  ExportNamedDeclaration,\n  Identifier,\n  SimpleLiteral,\n  VariableDeclaration,\n} from 'estree';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function parseProperties(json: SveltosisComponent, node: ExportNamedDeclaration) {\n  const declarations = (node.declaration as VariableDeclaration)?.declarations;\n\n  if (declarations?.length) {\n    const declaration = declarations[0];\n    const property = (declaration.id as Identifier).name;\n    const value = (declaration.init as SimpleLiteral)?.value;\n\n    const propertyObject = {\n      [property]: {\n        default: value,\n      },\n    };\n\n    json.props = { ...json.props, ...propertyObject };\n\n    json.defaultProps = Object.fromEntries(\n      Object.keys(json.props)\n        .filter((key) => json.props[key].default)\n        .map((key) => [key, json.props[key].default]),\n    );\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/reactive.ts",
    "content": "import { generate } from 'astring';\n\nimport type {\n  AssignmentExpression,\n  CallExpression,\n  ExpressionStatement,\n  Identifier,\n  LabeledStatement,\n} from 'estree';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseReactive(json: SveltosisComponent, node: LabeledStatement) {\n  const body = node.body as ExpressionStatement;\n  const expression = body?.expression as AssignmentExpression | CallExpression | undefined;\n\n  if (!expression) {\n    const wrap = node.body.type !== 'BlockStatement';\n    const name = `reactive${\n      Object.values(json.state).filter((index) => index?.type === 'getter').length\n    }`;\n    json.state[name] = {\n      code: `get ${name}() ${wrap ? '{' : ''}${generate(node.body)}${wrap ? '}' : ''}`,\n      type: 'getter',\n    };\n  } else if (expression.type === 'AssignmentExpression') {\n    const { name } = expression.left as Identifier;\n    json.state[name] = {\n      code: `get ${name}() {\\n return ${generate(expression.right)}}`,\n      type: 'getter',\n    };\n  } else if (expression.type === 'CallExpression') {\n    if (node.body.type === 'ExpressionStatement') {\n      json.hooks.onUpdate = json.hooks.onUpdate || [];\n\n      json.hooks.onUpdate.push({\n        code: generate(node.body),\n        deps: `[${expression.arguments.map((arg) => generate(arg))}]`,\n      });\n    }\n  }\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/references.ts",
    "content": "import { generate } from 'astring';\nimport { isString, some } from 'lodash';\n\nimport { parseObjectExpression } from '../helpers/expressions';\n\nimport type {\n  Expression,\n  Identifier,\n  ObjectExpression,\n  Pattern,\n  SimpleLiteral,\n  VariableDeclaration,\n} from 'estree';\nimport type { SveltosisComponent } from '../types';\n\nexport function getParsedValue(json: SveltosisComponent, element: Expression | Pattern) {\n  switch (element.type) {\n    case 'Identifier': {\n      return element.name;\n    }\n    case 'ObjectExpression': {\n      return parseObjectExpression(json, element as ObjectExpression);\n    }\n    default: {\n      return (element as SimpleLiteral).value as string;\n    }\n  }\n}\n\nfunction isPropertyOrStateReference(index: string) {\n  return isString(index) && (index.includes('props.') || index.includes('state.'));\n}\n\nexport function parseReferences(json: SveltosisComponent, node: VariableDeclaration) {\n  const declaration = node.declarations[0];\n  let code: string[] | Record<string, string> | string | {}[];\n  let type: any = 'property';\n\n  switch (declaration?.init?.type) {\n    case 'ArrayExpression': {\n      code = declaration.init.elements.map((element) => {\n        return getParsedValue(json, element as Expression);\n      });\n\n      if (some(code, (c: string) => isPropertyOrStateReference(c))) {\n        const name = (declaration.id as Identifier).name;\n        json.state[name] = {\n          code: `get ${name}() { return [${code.map((c) => {\n            if (isPropertyOrStateReference(c as string)) {\n              return c;\n            }\n            return JSON.stringify(c);\n          })}]}`,\n          type: 'getter',\n        };\n        return;\n      }\n\n      break;\n    }\n    case 'ObjectExpression': {\n      code = parseObjectExpression(json, declaration.init);\n      break;\n    }\n    case 'FunctionExpression': {\n      declaration.init.id = declaration.id as Identifier;\n      code = generate(declaration.init);\n      type = 'function';\n\n      break;\n    }\n    default: {\n      code = ((declaration?.init as SimpleLiteral)?.value as string) ?? null;\n    }\n  }\n\n  json.state[(declaration.id as Identifier).name] = {\n    code: JSON.stringify(code),\n    type,\n  };\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/instance/statements.ts",
    "content": "import { generate } from 'astring';\nimport { addToOnInitHook } from '../helpers/hooks';\n\nimport type { Statement } from 'estree';\nimport type { SveltosisComponent } from '../types';\n\nexport function parseStatementAtProgramLevel(json: SveltosisComponent, node: Statement) {\n  const statement = generate(node);\n  addToOnInitHook(json, statement);\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/module/index.ts",
    "content": "import { generate } from 'astring';\nimport { walk } from 'svelte/compiler';\n\nimport type { BaseNode, ExportNamedDeclaration, Identifier, VariableDeclaration } from 'estree';\nimport type { Ast } from 'svelte/types/compiler/interfaces';\nimport type { SveltosisComponent } from '../types';\n\nfunction handleExportNamedDeclaration(json: SveltosisComponent, node: ExportNamedDeclaration) {\n  const declarations = (node.declaration as VariableDeclaration)?.declarations;\n\n  if (declarations?.length) {\n    const declaration = declarations[0];\n    const property = (declaration.id as Identifier).name;\n\n    const isFunction =\n      declaration.init?.type === 'FunctionExpression' ||\n      declaration.init?.type === 'ArrowFunctionExpression';\n\n    const exportObject = {\n      [property]: {\n        code: generate(node),\n        isFunction,\n      },\n    };\n\n    json.exports = { ...json.exports, ...exportObject };\n  }\n}\n\nexport function parseModule(ast: Ast, json: SveltosisComponent) {\n  walk(ast.module as BaseNode, {\n    enter(node) {\n      switch (node.type) {\n        case 'ExportNamedDeclaration':\n          handleExportNamedDeclaration(json, node as ExportNamedDeclaration);\n          break;\n      }\n    },\n  });\n}\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/types/index.ts",
    "content": "import { MitosisComponent } from '../../../types/mitosis-component';\n\nexport type SveltosisComponent = MitosisComponent & { props: any };\n"
  },
  {
    "path": "packages/core/src/parsers/svelte/typescript/index.ts",
    "content": "import * as babel from '@babel/core';\nimport generate from '@babel/generator';\nimport * as parser from '@babel/parser';\nimport * as types from '@babel/types';\n\nimport { pickBy, some } from 'lodash';\n\nimport type { SveltosisComponent } from '../types';\n\nexport function isTypeScriptComponent(string_: string) {\n  const regex = createTagRegex('script', 'gi');\n  const match = regex.exec(string_);\n  const { lang } = parseAttributes((match?.length && match[1]) || '');\n  return lang === 'ts';\n}\n\n/** Create a tag matching regexp. */\nexport function createTagRegex(tagName: string, flags?: string): RegExp {\n  return new RegExp(`/<!--[^]*?-->|<${tagName}(\\\\s[^]*?)?(?:>([^]*?)<\\\\/${tagName}>|\\\\/>)`, flags);\n}\n\n/** Transform an attribute string into a key-value object */\nexport function parseAttributes(attributesString: string): Record<string, any> {\n  return attributesString\n    .split(/\\s+/)\n    .filter(Boolean)\n    .reduce((accumulator: Record<string, string | boolean>, attribute) => {\n      const [name, value] = attribute.split('=');\n\n      // istanbul ignore next\n      accumulator[name] = value ? value.replace(/[\"']/g, '') : true;\n\n      return accumulator;\n    }, {});\n}\n\nfunction getScriptContent(markup: string, module: boolean): string {\n  const regex = createTagRegex('script', 'gi');\n  let match: RegExpMatchArray | null;\n\n  while ((match = regex.exec(markup)) !== null) {\n    const { context } = parseAttributes(match[1] || '');\n\n    if ((context !== 'module' && !module) || (context === 'module' && module)) {\n      return match[2];\n    }\n  }\n\n  return '';\n}\n\nexport function collectTypes(string_: string, json: SveltosisComponent) {\n  const module = getScriptContent(string_, true); // module\n  const instance = getScriptContent(string_, false); // instance\n\n  function traverse(script_: string) {\n    const ast = parser.parse(script_, {\n      sourceType: 'module',\n      plugins: ['typescript'],\n    });\n\n    babel.traverse(ast, {\n      enter(path) {\n        // alias or interface (e.g. type Props = { } or interface Props {} )\n        if (\n          types.isTSTypeAliasDeclaration(path.node) ||\n          types.isTSInterfaceDeclaration(path.node)\n        ) {\n          json.types = [...(json.types ?? []), generate(path.node).code];\n          path.skip();\n        } else if (types.isTSTypeAnnotation(path.node)) {\n          // add to actual ref\n          const reference = generate(path.parent).code;\n          const type = generate(path.node.typeAnnotation).code;\n\n          // add to ref\n          if (Object.prototype.hasOwnProperty.call(json.refs, reference)) {\n            json.refs[reference].typeParameter = type;\n          }\n\n          // temp add to prop object.\n          // after having finished traversing, we'll create the prop type declaration\n          if (Object.prototype.hasOwnProperty.call(json.props, reference)) {\n            json.props[reference].type = type;\n          }\n        }\n      },\n    });\n  }\n\n  traverse(module);\n\n  traverse(instance);\n\n  // add prop type declaration to json.types and set the propsTypeRef\n  if (some(json.props, (property) => !!property.type)) {\n    let propertyTypeDeclaration = `type Props = {`;\n\n    propertyTypeDeclaration += Object.keys(pickBy(json.props, (property: any) => !!property.type))\n      .map((key) => {\n        return `${key}: ${json.props[key].type};`;\n      })\n      .join('\\n');\n\n    propertyTypeDeclaration += '}';\n\n    json.types = [...(json.types ?? []), propertyTypeDeclaration];\n    json.propsTypeRef = 'Props';\n  }\n}\n"
  },
  {
    "path": "packages/core/src/plugins/compile-away-builder-components.ts",
    "content": "import { getBuilderTagName } from '@/helpers/get-tag-name';\nimport { type MitosisPlugin } from '@builder.io/mitosis';\nimport { Builder, BuilderElement } from '@builder.io/sdk';\nimport json5 from 'json5';\nimport { omit, pick, round } from 'lodash';\nimport traverse, { TraverseContext } from 'neotraverse/legacy';\nimport { createSingleBinding } from '../helpers/bindings';\nimport { createMitosisNode } from '../helpers/create-mitosis-node';\nimport { filterEmptyTextNodes } from '../helpers/filter-empty-text-nodes';\nimport { isMitosisNode } from '../helpers/is-mitosis-node';\nimport { builderElementToMitosisNode } from '../parsers/builder';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisNode } from '../types/mitosis-node';\n\nconst getCssFromNode = (node: MitosisNode) => {\n  const css = node.bindings.css?.code;\n  if (css) {\n    return json5.parse(css);\n  }\n  return {};\n};\n\nfunction getComponentInputNames(componentName: string): string[] {\n  const componentInfo = Builder.components.find((item) => item.name === componentName);\n  return componentInfo?.inputs?.map((item) => item.name) || [];\n}\n\nconst wrapOutput = (\n  node: MitosisNode,\n  child: MitosisNode | MitosisNode[],\n  components: CompileAwayComponentsMap,\n) => {\n  const inputNames = getComponentInputNames(node.name);\n  compileAwayBuilderComponentsFromTree(child as any, components);\n  return createMitosisNode({\n    ...node,\n    properties: {\n      ...omit(node.properties, ...inputNames),\n    },\n    bindings: {\n      ...omit(node.bindings, ...inputNames),\n    },\n    // TODO: forward tagName as a $tagName=\"...\"\n    name: node.properties._tagName || getBuilderTagName(node) || 'div',\n    children: Array.isArray(child) ? child : [child],\n  });\n};\n\ntype CompileAwayComponentsMap = {\n  [key: string]: (\n    node: MitosisNode,\n    context: TraverseContext,\n    components: CompileAwayComponentsMap,\n  ) => MitosisNode | void;\n};\n\ninterface AccordionItem {\n  title: BuilderElement[];\n  detail: BuilderElement[];\n}\n\nexport const components: CompileAwayComponentsMap = {\n  CoreButton(node: MitosisNode, context, components) {\n    const properties: Record<string, string> = {};\n    const bindings: Record<string, string> = {};\n\n    if (!node.properties.href && node.bindings.css) {\n      const css = json5.parse(node.bindings.css.code);\n      // When using button tag ensure we have all: unset and\n      // be sure that is the first style in the list\n      node.bindings.css.code = json5.stringify({\n        all: 'unset',\n        ...css,\n      });\n    }\n\n    if ('link' in node.properties) {\n      properties.href = node.properties.link!;\n    }\n    if ('link' in node.bindings) {\n      bindings.href = node.properties.link!;\n    }\n    if ('text' in node.properties) {\n      node.children = [\n        createMitosisNode({\n          properties: {\n            _text: node.properties.text!,\n          },\n        }),\n      ];\n    }\n    if ('text' in node.bindings) {\n      node.children = [\n        createMitosisNode({\n          bindings: {\n            _text: node.bindings.text!,\n          },\n        }),\n      ];\n    }\n    if ('openInNewTab' in node.bindings) {\n      bindings.target = `${node.bindings.openInNewTab} ? '_blank' : '_self'`;\n    }\n\n    const omitFields = ['link', 'openInNewTab', 'text'];\n\n    const hasLink = node.properties.link || node.bindings.link;\n\n    return createMitosisNode({\n      ...node,\n      // TODO: use 'button' tag for no link, and add `all: unset` to CSS string only then\n      name: hasLink ? 'a' : 'button',\n      properties: {\n        ...omit(node.properties, omitFields),\n        ...properties,\n      },\n      bindings: {\n        ...omit(node.bindings, omitFields),\n        ...bindings,\n      },\n    });\n  },\n  Embed(node: MitosisNode, context, components) {\n    return wrapOutput(\n      node,\n      createMitosisNode({\n        name: (node.properties.builderTag as string) || 'div',\n        properties: {\n          innerHTML: node.properties.content || '',\n        },\n      }),\n      components,\n    );\n  },\n  BuilderAccordion(node: MitosisNode, context, components) {\n    const itemsJSON = node.bindings.items?.code || '[]';\n    const accordionItems: AccordionItem[] = json5.parse(itemsJSON);\n    const children: MitosisNode[] = accordionItems.map((accordionItem) => {\n      const titleChildren: MitosisNode[] = accordionItem.title.map((element) =>\n        builderElementToMitosisNode(element, {\n          includeBuilderExtras: true,\n          preserveTextBlocks: true,\n        }),\n      );\n      const detailChildren: MitosisNode[] = accordionItem.detail.map((element) =>\n        builderElementToMitosisNode(element, {\n          includeBuilderExtras: true,\n          preserveTextBlocks: true,\n        }),\n      );\n      return createMitosisNode({\n        name: 'div',\n        properties: { builder: 'accordion' },\n        children: [\n          createMitosisNode({\n            name: 'div',\n            properties: { builder: 'accordion-title' },\n            children: titleChildren,\n          }),\n          createMitosisNode({\n            name: 'div',\n            properties: { builder: 'accordion-detail' },\n            children: detailChildren,\n          }),\n        ],\n      });\n    });\n    return wrapOutput(\n      node,\n      createMitosisNode({\n        name: (node.properties.builderTag as string) || 'div',\n        properties: {\n          $name: 'accordion',\n        },\n        children: children,\n      }),\n      components,\n    );\n  },\n  BuilderMasonry() {\n    // TODO\n    return createMitosisNode({\n      name: 'div',\n      properties: { 'data-missing-component': 'BuilderMasonry' },\n    });\n  },\n  BuilderTabs() {\n    // TODO\n    return createMitosisNode({\n      name: 'div',\n      properties: { 'data-missing-component': 'BuilderTabs' },\n    });\n  },\n  BuilderCarousel() {\n    // TODO\n    return createMitosisNode({\n      name: 'div',\n      properties: { 'data-missing-component': 'BuilderCarousel' },\n    });\n  },\n  CustomCode(node: MitosisNode, context, components) {\n    const bindings: MitosisNode['bindings'] = {};\n    if (node?.bindings?.code) {\n      bindings.innerHTML = node.bindings.code;\n    }\n    return wrapOutput(\n      {\n        ...node,\n        properties: omit(node.properties, 'code'),\n      },\n      createMitosisNode({\n        name: (node.properties.builderTag as string) || 'div',\n        properties: {\n          innerHTML: node.properties.code || '',\n        },\n        bindings: bindings,\n      }),\n      components,\n    );\n  },\n  CoreSection(node: MitosisNode, context, components) {\n    const css = getCssFromNode(node);\n    return wrapOutput(\n      node,\n      createMitosisNode({\n        name: 'section',\n        properties: {\n          ...node.properties,\n          $name: 'section',\n          ...(node.bindings.lazyLoad?.code === 'true' && {\n            lazyLoad: 'true',\n          }),\n        },\n        bindings: {\n          css: createSingleBinding({\n            code: JSON.stringify({\n              ...css,\n              width: '100%',\n              alignSelf: 'stretch',\n              flexGrow: '1',\n              boxSizing: 'border-box',\n              maxWidth: `${\n                (node.bindings.maxWidth?.code && Number(node.bindings.maxWidth.code)) || 1200\n              }px`,\n              display: 'flex',\n              flexDirection: 'column',\n              alignItems: 'stretch',\n              marginLeft: 'auto',\n              marginRight: 'auto',\n            }),\n          }),\n        },\n        children: node.children,\n      }),\n      components,\n    );\n  },\n  Columns(node: MitosisNode, context, components) {\n    const columns = node.children.filter(filterEmptyTextNodes).map((item) => ({\n      width: parseFloat(item.properties.width || item.bindings.width?.code || '0') || 0,\n      children: item.children,\n    }));\n    const gutterSize = (node.properties.getterSize && parseFloat(node.properties.getterSize)) || 20;\n\n    function getWidth(index: number) {\n      return (columns[index] && columns[index].width) || 100 / columns.length;\n    }\n\n    function getColumnWidth(index: number) {\n      return `${Math.round(getWidth(index))}%`;\n    }\n    const { properties } = node;\n\n    return wrapOutput(\n      node,\n      createMitosisNode({\n        name: 'div',\n\n        bindings: {\n          css: createSingleBinding({\n            code: JSON.stringify({\n              gap: `${gutterSize}px`,\n              display: 'flex',\n              ...(properties.stackColumnsAt === 'never'\n                ? {}\n                : {\n                    [`@media (max-width: ${properties.stackColumnsAt === 'mobile' ? 640 : 991}px)`]:\n                      {\n                        flexDirection:\n                          properties.reverseColumnsWhenStacked === 'true'\n                            ? 'column-reverse'\n                            : 'column',\n                        alignItems: 'stretch',\n                        gap: `0px`,\n                      },\n                  }),\n            }),\n          }),\n        },\n        children: columns.map((col, index) => {\n          return createMitosisNode({\n            name: 'div',\n            properties: {\n              $name: 'column',\n            },\n            bindings: {\n              css: createSingleBinding({\n                code: JSON.stringify({\n                  display: 'flex',\n                  flexDirection: 'column',\n                  alignItems: 'stretch',\n                  lineHeight: 'normal',\n\n                  width: `${getColumnWidth(index)}`,\n                  marginLeft: `${index === 0 ? 0 : gutterSize}px`,\n                  ...(properties.stackColumnsAt === 'never'\n                    ? {}\n                    : {\n                        [`@media (max-width: ${\n                          properties.stackColumnsAt === 'mobile' ? 640 : 991\n                        }px)`]: {\n                          width: '100%',\n                          marginLeft: 0,\n                        },\n                      }),\n                }),\n              }),\n            },\n            children: col.children,\n          });\n        }),\n      }),\n      components,\n    );\n  },\n  Image(node: MitosisNode, context, components) {\n    const { backgroundSize, backgroundPosition } = node.properties;\n    const { srcset } = node.properties;\n\n    let aspectRatio = node.bindings.aspectRatio?.code\n      ? parseFloat(node.bindings.aspectRatio.code as string)\n      : null;\n    if (typeof aspectRatio === 'number' && isNaN(aspectRatio)) {\n      aspectRatio = null;\n    }\n\n    const image = node.properties.image!;\n    const srcSet = srcset || generateBuilderIoSrcSet(image);\n    const css = getCssFromNode(node);\n    const noWebp = node.bindings.noWebp?.code === 'true';\n\n    const img = createMitosisNode({\n      name: 'img',\n      properties: noUndefined({\n        loading: 'lazy',\n        sizes: node.properties.sizes,\n        alt: node.properties.altText,\n        // We set noWebp to true for SVGs. in this case, we\n        // also don't need srcset, just a src is better\n        ...(noWebp\n          ? {\n              src: image,\n            }\n          : {\n              srcSet: srcSet || null,\n            }),\n      }),\n      bindings: noUndefined({\n        src: node.bindings.image?.code && { code: node.bindings.image?.code },\n        sizes: node.bindings.sizes?.code && { code: node.bindings.sizes?.code },\n        style: node.bindings.style?.code && { code: node.bindings.style?.code },\n        css: createSingleBinding({\n          code: JSON.stringify({\n            aspectRatio: aspectRatio ? String(round(1 / aspectRatio, 2)) : undefined,\n            objectFit: backgroundSize || 'cover',\n            objectPosition: backgroundPosition || 'center',\n            width: '100%',\n            ...css,\n            display: undefined,\n            flexDirection: undefined,\n            position: css.position === 'relative' ? undefined : css.position,\n          }),\n        }),\n      }),\n    });\n\n    if (!node.children?.length) {\n      return img;\n    }\n\n    // TODO: deal with links: anchor tag and href\n    const root = createMitosisNode({\n      name: 'div',\n      bindings: noUndefined({\n        css: createSingleBinding({\n          code: JSON.stringify({\n            display: 'flex',\n            flexDirection: 'column',\n            ...css,\n            position: 'relative',\n          }),\n        }),\n      }),\n      children: [\n        {\n          ...img,\n          bindings: {\n            ...img.bindings,\n            css: createSingleBinding({\n              code: JSON.stringify({\n                position: 'absolute',\n                inset: '0',\n                height: '100%',\n                width: '100%',\n                objectFit: backgroundSize || 'cover',\n                objectPosition: backgroundPosition || 'center',\n              }),\n            }),\n          },\n        },\n        ...node.children.map((child) => {\n          const newChild = {\n            ...child,\n            bindings: {\n              ...child.bindings,\n              css: createSingleBinding({\n                code: JSON.stringify({\n                  position: 'relative',\n                  ...getCssFromNode(child),\n                }),\n              }),\n            },\n          };\n          compileAwayBuilderComponentsFromTree(newChild, components);\n          return newChild;\n        }),\n      ],\n    });\n\n    return root;\n  },\n  Video(node: MitosisNode, context, components) {\n    let aspectRatio = node.bindings.aspectRatio?.code\n      ? parseFloat(node.bindings.aspectRatio.code as string)\n      : null;\n    if (typeof aspectRatio === 'number' && isNaN(aspectRatio)) {\n      aspectRatio = null;\n    }\n    const videoContainerNodes: MitosisNode[] = [];\n\n    const css = getCssFromNode(node);\n\n    videoContainerNodes.push(\n      createMitosisNode({\n        name: 'video',\n        properties: noUndefined({\n          poster: node.properties.posterImage,\n          autoplay: node.properties.autoPlay,\n          muted: node.properties.muted,\n          controls: node.properties.controls,\n          loop: node.properties.loop,\n          playsinline: node.properties.playsInline,\n          preload: node.properties.lazy ? 'none' : undefined,\n        }),\n        bindings: noUndefined({\n          poster: node.bindings.posterImage?.code && {\n            code: node.bindings.posterImage?.code,\n          },\n          autoplay: node.bindings.autoPlay?.code && {\n            code: node.bindings.autoPlay?.code,\n          },\n          muted: node.bindings.muted?.code && {\n            code: node.bindings.muted?.code,\n          },\n          controls: node.bindings.controls?.code && {\n            code: node.bindings.controls?.code,\n          },\n          playsinline: node.bindings.playsInline?.code && {\n            code: node.bindings.playsInline?.code,\n          },\n          loop: node.bindings.loop?.code && { code: node.bindings.loop?.code },\n          css: createSingleBinding({\n            code: JSON.stringify({\n              width: '100%',\n              height: '100%',\n              objectFit: node.properties.fit,\n              objectPosition: node.properties.position,\n              borderRadius: '1',\n              position: aspectRatio ? 'absolute' : '',\n              ...css,\n            }),\n          }),\n        }),\n        children: [\n          createMitosisNode({\n            name: 'source',\n            properties: {\n              type: 'video/mp4',\n              src: node.properties.video,\n            },\n            bindings: noUndefined({\n              src: node.bindings.video?.code && {\n                code: node.bindings.video?.code as string,\n              },\n            }),\n          }),\n        ],\n      }),\n    );\n\n    aspectRatio &&\n      videoContainerNodes.push(\n        createMitosisNode({\n          name: 'div',\n\n          bindings: {\n            css: createSingleBinding({\n              code: JSON.stringify({\n                width: '100%',\n                paddingTop: aspectRatio * 100 + '%',\n                pointerEvents: 'none',\n                fontSize: '0',\n              }),\n            }),\n          },\n        }),\n      );\n\n    node.children &&\n      node.children.length &&\n      videoContainerNodes.push(\n        createMitosisNode({\n          name: 'div',\n\n          bindings: {\n            css: createSingleBinding({\n              code: JSON.stringify({\n                display: 'flex',\n                flexDirection: 'column',\n                alignItems: 'stretch',\n                position: 'absolute',\n                top: '0',\n                left: '0',\n                width: '100%',\n                height: '100%',\n              }),\n            }),\n          },\n          children: node.children,\n        }),\n      );\n\n    const videoContainer = createMitosisNode({\n      name: 'div',\n\n      bindings: {\n        css: createSingleBinding({ code: JSON.stringify({ position: 'relative' }) }),\n      },\n      children: videoContainerNodes,\n    });\n    return wrapOutput(node, videoContainer, components);\n  },\n  Text: (node: MitosisNode) => {\n    if (node.properties.text) {\n      node.properties._text = node.properties.text;\n      delete node.properties.text;\n    }\n\n    if (node.bindings.text) {\n      node.bindings._text = node.bindings.text;\n      delete node.bindings.text;\n    }\n\n    const { _text: propText, $tagName: nodeTagName, ...outerProps } = node.properties;\n    const { _text: bindingText, ...outerBindings } = node.bindings;\n\n    const hasBindings = Object.keys(outerProps).length > 0;\n    const hasProperties = Object.keys(outerBindings).length > 0;\n    /**\n     * If there are things we need to reflect on the text then we must\n     * render a wrapper div so we can put it on that element.\n     */\n    if (hasBindings || hasProperties) {\n      /**\n       * Text binding needs to be on the inner text node. Some generators\n       * will skip rendering other bindings if they see a _text binding,\n       * so the _text binding needs to go on the inner text node, and all\n       * other bindings need to go on the wrapper div so they get generated.\n       */\n\n      return createMitosisNode({\n        name: 'div',\n        bindings: outerBindings,\n        properties: outerProps,\n        children: [\n          createMitosisNode({\n            ...node,\n            properties: {\n              $tagName: nodeTagName,\n              ...(propText ? { _text: propText } : {}),\n            },\n            bindings: bindingText ? { _text: bindingText } : {},\n            name: nodeTagName ?? 'div',\n          }),\n        ],\n      });\n    }\n\n    return createMitosisNode({\n      ...node,\n      name: nodeTagName ?? 'div',\n    });\n  },\n};\n\ntype CompileAwayBuilderComponentsOptions = {\n  only?: string[];\n  omit?: string[];\n};\n\nexport const compileAwayBuilderComponentsFromTree = (\n  tree: MitosisNode | MitosisComponent,\n  components: CompileAwayComponentsMap,\n) => {\n  traverse(tree).forEach(function (item) {\n    if (isMitosisNode(item)) {\n      const mapper = components[item.name];\n      if (mapper) {\n        const result = mapper(item, this, components);\n        if (result) {\n          this.update(result);\n        }\n      }\n    }\n  });\n};\n\nexport const compileAwayBuilderComponents = (\n  pluginOptions: CompileAwayBuilderComponentsOptions = {},\n): MitosisPlugin => {\n  let obj = components;\n  if (pluginOptions.omit) {\n    obj = omit(obj, pluginOptions.omit);\n  }\n  if (pluginOptions.only) {\n    obj = pick(obj, pluginOptions.only);\n  }\n\n  return (options?: any) => ({\n    json: {\n      pre: (json: MitosisComponent) => {\n        compileAwayBuilderComponentsFromTree(json, obj);\n      },\n    },\n  });\n};\n\nfunction updateQueryParam(uri = '', key: string, value: string) {\n  const re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');\n  const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n  if (uri.match(re)) {\n    return uri.replace(re, '$1' + key + '=' + encodeURIComponent(value) + '$2');\n  }\n\n  return uri + separator + key + '=' + encodeURIComponent(value);\n}\n\nfunction generateBuilderIoSrcSet(image: string): string {\n  const isBuilderIo = !!(image || '').match(/builder\\.io/);\n  return isBuilderIo\n    ? [100, 200, 400, 800, 1200, 1600, 2000]\n        .map((size) => `${updateQueryParam(image, 'width', String(size))} ${size}w`)\n        .concat([image])\n        .join(', ')\n    : '';\n}\n\nfunction noUndefined(obj: Record<string, any>): Record<string, any> {\n  const cleanObj: Record<string, any> = {};\n  for (const key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      const value = obj[key];\n      if (value != null) {\n        if (typeof value == 'object') {\n          const ret = noUndefined(value);\n          if (Object.keys(ret).length) {\n            cleanObj[key] = ret;\n          }\n        } else {\n          cleanObj[key] = value;\n        }\n      }\n    }\n  }\n  return cleanObj;\n}\n"
  },
  {
    "path": "packages/core/src/plugins/compile-away-components.ts",
    "content": "import { mapValues } from 'lodash';\nimport traverse, { TraverseContext } from 'neotraverse/legacy';\nimport { isMitosisNode } from '../helpers/is-mitosis-node';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisNode } from '../types/mitosis-node';\n\nexport const getRenderOptions = (node: MitosisNode) => {\n  return {\n    ...mapValues(node.properties, (value) => `\"${value}\"`),\n    ...mapValues(node.bindings, (value) => `{${value}}`),\n  };\n};\n\ntype CompileAwayComponentsOptions = {\n  components: {\n    [key: string]: (node: MitosisNode, context: TraverseContext) => MitosisNode | void;\n  };\n};\n\n/**\n * @example\n *    componentToReact(mitosisJson, {\n *      plugins: [\n *        compileAwayComponents({\n *          Image: (node) => {\n *             return jsx(`\n *               <div>\n *                 <img src=\"${node.properties.image}\" />\n *               </div>\n *             `);\n *          }\n *        })\n *      ]\n *    })\n */\nexport const compileAwayComponents =\n  (pluginOptions: CompileAwayComponentsOptions) => (options?: any) => ({\n    json: {\n      pre: (json: MitosisComponent) => {\n        traverse(json).forEach(function (item) {\n          if (isMitosisNode(item)) {\n            const mapper = pluginOptions.components[item.name];\n            if (mapper) {\n              const result = mapper(item, this);\n              if (result) {\n                this.update(result);\n              }\n            }\n          }\n        });\n      },\n    },\n  });\n"
  },
  {
    "path": "packages/core/src/plugins/map-styles.ts",
    "content": "import { TraverseContext } from 'neotraverse/legacy';\nimport { getStyles, setStyles } from '../helpers/get-styles';\nimport { traverseNodes } from '../helpers/traverse-nodes';\nimport { MitosisComponent } from '../types/mitosis-component';\nimport { MitosisStyles } from '../types/mitosis-styles';\n\ntype MapStylesOptions = {\n  map: (styles: MitosisStyles, context: TraverseContext) => MitosisStyles;\n};\n\nexport const mapStyles = (pluginOptions: MapStylesOptions) => (options: any) => ({\n  json: {\n    pre: (json: MitosisComponent) => {\n      traverseNodes(json, (node, context) => {\n        const styles = getStyles(node);\n        setStyles(node, pluginOptions.map(styles || {}, context));\n      });\n    },\n  },\n});\n"
  },
  {
    "path": "packages/core/src/symbols/symbol-processor.ts",
    "content": "import { minify } from '@/generators/helpers/minify';\nimport {\n  builderContentToMitosisComponent,\n  createBuilderElement,\n  isBuilderElement,\n} from '@/parsers/builder';\nimport { MitosisComponent } from '@/types/mitosis-component';\nimport { BuilderContent, BuilderElement } from '@builder.io/sdk';\nimport traverse from 'neotraverse/legacy';\n\nexport type SymbolHierarchy = {\n  // Reverse sorted symbols\n  depthFirstSymbols: BuilderElement[];\n} & {\n  [id: string]: string[];\n};\n\nconst enum Path {\n  DEPTH = 0,\n  ID = 1,\n}\n\n/**\n * Ensure every symbol in a BuilderContent tree has a unique ID.\n * Mutates the data tree directly.\n */\nexport function ensureAllSymbolsHaveIds(content: BuilderContent): void {\n  let counter = 0;\n  const ids = new Set<string>();\n  traverse(content).forEach(function (el) {\n    if (this.key === 'jsCode' && isString(el) && el.endsWith('return _virtual_index')) {\n      // Sometimes rollup adds a final `return _virtual_index` but that causes VM evaluation to fail.\n      // Instead of a return on the last line, it needs a plain expression on the last line. Luckily\n      // because the rollup compile behavior is consistent this works pretty reliably\n      el = el.replace(/return _virtual_index$/, '_virtual_index');\n      this.parent && (this.parent.node.jsCode = el);\n    }\n    if (isBuilderElement(el)) {\n      if (el?.component?.name === 'Symbol') {\n        const id = getIdFromSymbol(el);\n        if (id) {\n          if (ids.has(id)) {\n            if (el.component?.options?.symbol) {\n              const id = pad(counter++);\n              el.component.options.symbol.entry = id;\n              if (el.component.options.symbol.content) {\n                el.component.options.symbol.content.id = id;\n              }\n              ids.add(id);\n            }\n          } else {\n            ids.add(id);\n          }\n        }\n      }\n    }\n  });\n}\n\ninterface BuilderSymbol {\n  data: Record<string, any>;\n  content: {\n    data: {\n      state?: Record<string, any>;\n    };\n  };\n}\n\n//TODO(misko): needs test\nexport function convertBuilderContentToSymbolHierarchy(\n  content: BuilderContent,\n  {\n    collectComponentStyles,\n    collectComponentState,\n  }: {\n    collectComponentStyles?: string[];\n    collectComponentState?: Record<string, any>;\n  } = {},\n): SymbolHierarchy {\n  if (collectComponentState && content.data?.state) {\n    const state = content.data?.state;\n    collectComponentState['ROOT_COMPONENT_STATE'] = state;\n  }\n  const path: (string | number)[] = [-1, content.id!];\n  const hierarchy: SymbolHierarchy = {\n    depthFirstSymbols: [],\n    [content.id!]: [],\n  };\n  traverse(content).forEach(function (el: any) {\n    let cssCode = el?.cssCode;\n    if (cssCode) {\n      collectComponentStyles && collectComponentStyles.push(minify`${cssCode}`);\n    }\n    while ((path[Path.DEPTH] as number) >= this.path.length) {\n      path.shift();\n      path.shift();\n    }\n    if (isBuilderElement(el)) {\n      if (el?.component?.name === 'Symbol') {\n        if (collectComponentState) {\n          const symbol: BuilderSymbol = el.component.options.symbol;\n          const props = symbol.data || (symbol.data = {});\n          const state = symbol.content?.data?.state;\n          if (state) {\n            const id = hashCodeAsString(state);\n            props['serverStateId'] = id;\n            collectComponentState[id] = state;\n          }\n        }\n        if ((path[Path.DEPTH] as number) < this.path.length) {\n          const id = getIdFromSymbol(el);\n          hierarchy[id] = [];\n          addIfMissing(hierarchy[path[Path.ID]], id);\n          path.unshift(this.path.length, id);\n        }\n        // TODO(misko): This should be `el.content` not `el`\n        // Because we don't wante to take the `<Symbol>` with us.\n        // TODO(misko): Do we really want to add ALL symbols? Even duplicates?\n        hierarchy.depthFirstSymbols.unshift(el);\n      }\n    }\n  });\n\n  return hierarchy;\n}\n\nexport function convertBuilderElementToMitosisComponent(\n  element: BuilderElement,\n): MitosisComponent | null {\n  const symbolValue = element.component?.options?.symbol;\n  const elContent = symbolValue?.content;\n\n  if (!elContent) {\n    console.warn('Symbol missing content', element.id);\n    delete element.component; // TODO(misko): Should this be assign `undefined` for perf?\n    element.children = [];\n    return null;\n  }\n\n  const id = getIdFromSymbol(element);\n  const componentName = getJsxSymbolComponentName(id);\n\n  delete element.component; // TODO(misko): Should this be assign `undefined` for perf?\n\n  element.children = [\n    createBuilderElement({\n      component: {\n        name: componentName,\n        options: symbolValue.data,\n      },\n      properties: {\n        'builder-content-id': id,\n      },\n    }),\n  ];\n\n  const mitosisComponent: MitosisComponent = {\n    ...builderContentToMitosisComponent(elContent, {\n      includeBuilderExtras: true,\n      preserveTextBlocks: true,\n    }),\n    name: componentName,\n  };\n  mitosisComponent.meta.builderElId = element.id;\n  return mitosisComponent;\n}\n\nexport function getJsxSymbolComponentName(id: string): string {\n  return 'Component' + id.toUpperCase().replace(/-/g, '');\n}\n\nfunction getIdFromSymbol(el: BuilderElement): string {\n  // TODO(misko): Don't use entry us el.id???\n  return el.component?.options?.symbol?.entry!;\n}\n\nfunction addIfMissing<T>(array: T[], value: T) {\n  if (array.indexOf(value) == -1) {\n    array.push(value);\n  }\n}\n\nfunction isString(value: any): value is string {\n  return typeof value == 'string';\n}\n\nexport function hashCodeAsString(obj: any): string {\n  return Number(Math.abs(hashCode(obj))).toString(36);\n}\n\nexport function hashCode(obj: any, hash = 0): number {\n  let value = 0;\n  switch (typeof obj) {\n    case 'number':\n      value = obj;\n      break;\n    case 'undefined':\n      value = Number.MIN_SAFE_INTEGER;\n      break;\n    case 'string':\n      for (let i = 0; i < obj.length; i++) {\n        hash = hashCodeApply(hash, obj.charCodeAt(i));\n      }\n      value = obj.length;\n    case 'boolean':\n      value = obj ? 1 : 0;\n      break;\n    case 'object':\n      if (obj === null) {\n        value = Number.MAX_SAFE_INTEGER;\n      } else if (Array.isArray(obj)) {\n        for (let i = 0; i < obj.length; i++) {\n          hash = hashCode(obj[i], hash);\n        }\n      } else {\n        for (const key of Object.keys(obj).sort()) {\n          if (obj.hasOwnProperty(key)) {\n            hash = hashCode(obj[key], hash);\n          }\n        }\n      }\n      break;\n  }\n  return hashCodeApply(hash, value);\n}\n\nfunction hashCodeApply(hash: number, value: number): number {\n  hash = (hash << 5) - hash + value;\n  hash |= 0; // Convert to 32bit integer\n  return hash;\n}\n\nfunction pad(value: number): string {\n  const padding = '000000';\n  let result = padding + String(value);\n  return result.substring(result.length - padding.length);\n}\n"
  },
  {
    "path": "packages/core/src/targets.ts",
    "content": "import { componentToAlpine as alpine } from './generators/alpine';\nimport { componentToAngular as angular } from './generators/angular';\nimport { componentToBuilder } from './generators/builder';\nimport {\n  componentToCustomElement as customElement,\n  componentToHtml as html,\n  componentToCustomElement as webcomponent,\n} from './generators/html';\nimport { componentToLiquid as liquid } from './generators/liquid';\nimport { componentToLit as lit } from './generators/lit';\nimport { componentToMarko as marko } from './generators/marko';\nimport { componentToMitosis as mitosis } from './generators/mitosis';\nimport { componentToQwik as qwik } from './generators/qwik';\nimport { componentToPreact as preact, componentToReact as react } from './generators/react';\nimport { componentToReactNative as reactNative } from './generators/react-native';\nimport { componentToRsc as rsc } from './generators/rsc';\nimport { componentToSolid as solid } from './generators/solid';\nimport { componentToStencil as stencil } from './generators/stencil';\nimport { componentToSvelte as svelte } from './generators/svelte';\nimport { componentToSwift as swift } from './generators/swift';\nimport { componentToTaro as taro } from './generators/taro';\nimport { componentToTemplate as template } from './generators/template';\nimport { componentToVue as vue } from './generators/vue';\n\nexport const builder = componentToBuilder;\n\nexport const targets = {\n  alpine,\n  angular,\n  customElement,\n  html,\n  mitosis,\n  liquid,\n  react,\n  reactNative,\n  solid,\n  svelte,\n  swift,\n  template,\n  webcomponent,\n  vue,\n  stencil,\n  qwik,\n  marko,\n  preact,\n  lit,\n  rsc,\n  taro,\n} as const;\n\nexport type Targets = keyof typeof targets;\n"
  },
  {
    "path": "packages/core/src/types/config.ts",
    "content": "import type { ParseMitosisOptions } from '@/parsers/jsx';\nimport { targets } from '@/targets';\nimport type { MitosisComponent } from './mitosis-component';\nimport { BaseTranspilerOptions, TranspilerGenerator } from './transpiler';\nexport type Format = 'esm' | 'cjs';\nexport type Language = 'js' | 'ts';\ninterface TranspilerOptions {\n  format?: Format;\n}\n\ntype Targets = typeof targets;\nexport type Target = keyof Targets;\nexport type GeneratorOptions = {\n  [K in Target]: NonNullable<Parameters<Targets[K]>[0]> & {\n    transpiler?: TranspilerOptions;\n  };\n};\nexport type generatorsOption = {\n  [K in Target]: NonNullable<Targets[K]>;\n};\n\nexport interface TargetContext {\n  target: Target;\n  generator: TranspilerGenerator<NonNullable<MitosisConfig['options'][Target]>>;\n  outputPath: string;\n}\n\nexport interface OutputFiles {\n  outputDir: string;\n  outputFilePath: string;\n}\n\nexport type MitosisConfig = {\n  generators?: generatorsOption;\n  /**\n   * Apply common options to all targets\n   */\n  commonOptions?: Omit<BaseTranspilerOptions, 'experimental'>;\n  /**\n   * List of targets to compile to.\n   */\n  targets: Target[];\n  /**\n   * The output directory. Defaults to `output`.\n   */\n  dest?: string;\n  /**\n   * globs of files to transpile. Defaults to `src/*`.\n   */\n  files?: string | string[];\n\n  /**\n   * Optional list of globs to exclude from transpilation.\n   */\n  exclude?: string[];\n  /**\n   * The directory where overrides are stored. The structure of the override directory must match that of the source code,\n   * with each target having its own sub-directory: `${overridesDir}/${target}/*`\n   * Defaults to `overrides`.\n   */\n  overridesDir?: string;\n  /**\n   * Dictionary of per-target configuration. For each target, the available options can be inspected by going to\n   * `packages/core/src/generators/xxx/types.ts`.\n   *\n   * Example:\n   *\n   * ```js\n   * options: {\n   *   vue: {\n   *     prettier: false,\n   *     namePrefix: (path) => path + '-my-vue-code',\n   *   },\n   *   react: {\n   *     stateType: 'builder';\n   *     stylesType: 'styled-jsx'\n   *     plugins: [myPlugin]\n   *   }\n   * }\n   * ```\n   */\n  options: Partial<GeneratorOptions>;\n  /**\n   * Configure a custom parser function which takes a string and returns MitosisJSON\n   * Defaults to the JSXParser of this project (src/parsers/jsx)\n   */\n  parser?: (code: string, path?: string) => MitosisComponent | Promise<MitosisComponent>;\n\n  /**\n   * Configure a custom function that provides the output path for each target.\n   * If you don't provide a path for a target by returning `undefined`,\n   * the default path will be used, which is the target name in kebabCase.\n   */\n  getTargetPath?: ({ target }: { target: Target }) => string | undefined;\n\n  /**\n   * Provide options to the parser.\n   */\n  parserOptions?: {\n    jsx: Partial<ParseMitosisOptions> & {\n      /**\n       * Path to your project's `tsconfig.json` file. Needed for advanced types parsing (e.g. signals).\n       */\n      tsConfigFilePath?: string;\n    };\n  };\n};\n"
  },
  {
    "path": "packages/core/src/types/json.ts",
    "content": "// Pure JSON\nexport type JSONPrimitive = string | null | number | boolean | undefined;\nexport type JSONObject = { [key: string]: _JSON | undefined };\n\n/**\n * We use an underscore to avoid collisions with the global `JSON` primitive type.\n */\nexport type _JSON = JSONPrimitive | JSONObject | _JSON[];\n\n// JSON mixed with babel nodes for intermediary compilation steps\nexport type JSONPrimitiveOrNode = JSONPrimitive | babel.Node;\nexport type JSONOrNodeObject = { [key: string]: JSONOrNode };\nexport type JSONOrNode = JSONPrimitiveOrNode | JSONOrNodeObject | JSONOrNode[];\n"
  },
  {
    "path": "packages/core/src/types/metadata.ts",
    "content": "import { AlpineMetadata } from '@/generators/alpine/types';\nimport { AngularMetadata } from '@/generators/angular/types';\nimport { BuilderMetadata } from '@/generators/builder/types';\nimport { HtmlMetadata } from '@/generators/html/types';\nimport { LiquidMetadata } from '@/generators/liquid/types';\nimport { LitMetadata } from '@/generators/lit/types';\nimport { MarkoMetadata } from '@/generators/marko/types';\nimport { MitosisMetadata } from '@/generators/mitosis/types';\nimport { QwikMetadata } from '@/generators/qwik/types';\nimport { ReactNativeMetadata } from '@/generators/react-native/types';\nimport { ReactServerComponentsMetadata } from '@/generators/rsc/types';\nimport { SolidMetadata } from '@/generators/solid/types';\nimport { StencilMetadata } from '@/generators/stencil/types';\nimport { SvelteMetadata } from '@/generators/svelte/types';\nimport { SwiftMetadata } from '@/generators/swift/types';\nimport { TaroMetadata } from '@/generators/taro/types';\nimport { TemplateMetadata } from '@/generators/template/types';\nimport { AttributePassingType, ReactMetadata, Target, VueMetadata } from '..';\n\ntype Targets = typeof import('../targets').targets;\ntype TargetOptions = {\n  [K in Target]?: Partial<NonNullable<Parameters<Targets[K]>[0]>>;\n};\n\nexport type ComponentMetadata = {\n  [index: string]: any;\n  httpRequests?: Record<string, string>;\n  options?: TargetOptions;\n  /** @deprecated Use this for web-components to change the tagName  */\n  tagName?: string;\n  /** @deprecated Use this for react forwardRef */\n  forwardRef?: string;\n  /** Enables shadowDom for web-components */\n  isAttachedToShadowDom?: boolean;\n  /** Enables/disables attribute passing for frameworks with custom elements like angular and stencil */\n  attributePassing?: AttributePassingType;\n\n  alpine?: AlpineMetadata;\n  angular?: AngularMetadata;\n  builder?: BuilderMetadata;\n  html?: HtmlMetadata;\n  lit?: LitMetadata;\n  liquid?: LiquidMetadata;\n  marko?: MarkoMetadata;\n  mitosis?: MitosisMetadata;\n  qwik?: QwikMetadata;\n  react?: ReactMetadata;\n  reactNative?: ReactNativeMetadata;\n  rsc?: ReactServerComponentsMetadata;\n  solid?: SolidMetadata;\n  stencil?: StencilMetadata;\n  svelte?: SvelteMetadata;\n  swift?: SwiftMetadata;\n  taro?: TaroMetadata;\n  template?: TemplateMetadata;\n  vue?: VueMetadata;\n};\n"
  },
  {
    "path": "packages/core/src/types/mitosis-component.ts",
    "content": "import { Dictionary } from '../helpers/typescript';\nimport { Target } from './config';\nimport { JSONObject } from './json';\nimport { ComponentMetadata } from './metadata';\nimport { MitosisNode } from './mitosis-node';\n\n/**\n * @example\n *  // import core, { useState, someThing as someAlias } from '@builder.io/mitosis'\n *  {\n *    path: '@builder.io/mitosis',\n *    imports: {\n *      useState: 'useState',\n *      someAlias: 'someThing',\n *      core: 'default',\n *    }\n *  }\n *\n * @example\n *  // import * as core from '@builder.io/mitosis'\n *  {\n *    path: '@builder.io/mitosis',\n *    imports: {\n *      core: '*',\n *    }\n *  }\n */\nexport interface MitosisImport {\n  path: string;\n  imports: {\n    [key: string]: string | undefined;\n  };\n  importKind?: 'type' | 'typeof' | 'value' | null;\n}\n\nexport type ReactivityType = 'normal' | 'reactive';\n\nexport type ContextOptions = {\n  type?: ReactivityType;\n};\nexport interface ContextGetInfo extends ContextOptions {\n  name: string;\n  path: string;\n}\nexport interface ContextSetInfo extends ContextOptions {\n  name: string;\n  value?: MitosisState;\n  ref?: string;\n}\n\nexport type BaseHook = { code: string; deps?: string; depsArray?: string[] };\n\nexport type MitosisComponentInput = {\n  name: string;\n  defaultValue: any;\n};\n\nexport type MitosisExports = {\n  [name: string]: MitosisExport;\n};\n\nexport interface MitosisExport {\n  code: string;\n  usedInLocal?: boolean;\n  isFunction?: boolean;\n}\n\nexport type StateValueType = 'function' | 'getter' | 'method' | 'property';\n\nexport type StateValue = {\n  code: string;\n  typeParameter?: string;\n  type: StateValueType;\n  propertyType?: ReactivityType;\n};\n\nexport type MitosisState = Dictionary<StateValue | undefined>;\n\nexport type TargetBlock<Return, Targets extends Target = Target> = Partial<{\n  [T in Targets | 'default']?: Return;\n}>;\n\nexport type TargetBlockCode = TargetBlock<{\n  code: string;\n}>;\n\nexport type TargetBlockDefinition = TargetBlockCode & {\n  settings: {\n    requiresDefault: boolean;\n  };\n};\n\nexport type OnEventHook = BaseHook & {\n  refName: string;\n  eventName: string;\n  isRoot: boolean;\n  deps?: never;\n  eventArgName: string;\n  elementArgName?: string;\n};\n\nexport type OnMountHook = BaseHook & {\n  onSSR?: boolean;\n};\n\nexport type MitosisComponent = {\n  '@type': '@builder.io/mitosis/component';\n  name: string;\n  imports: MitosisImport[];\n  exports?: MitosisExports;\n  meta: JSONObject & {\n    useMetadata?: ComponentMetadata;\n  };\n  inputs: MitosisComponentInput[];\n  state: MitosisState;\n  context: {\n    get: Dictionary<ContextGetInfo>;\n    set: Dictionary<ContextSetInfo>;\n  };\n  signals?: {\n    signalTypeImportName?: string;\n  };\n  props?: {\n    [name: string]: {\n      propertyType: ReactivityType;\n      optional: boolean;\n    };\n  };\n  refs: {\n    [useRef: string]: {\n      typeParameter?: string;\n      argument: string;\n    };\n  };\n  hooks: {\n    init?: BaseHook;\n    onInit?: BaseHook;\n    onMount: OnMountHook[];\n    onUnMount?: BaseHook;\n    preComponent?: BaseHook;\n    postComponent?: BaseHook;\n    onUpdate?: BaseHook[];\n    onEvent: OnEventHook[];\n  };\n  targetBlocks?: Dictionary<TargetBlockDefinition>;\n  children: MitosisNode[];\n  subComponents: MitosisComponent[];\n  types?: string[];\n  propsTypeRef?: string;\n  defaultProps?: MitosisState;\n  style?: string;\n\n  /**\n   * This data is filled inside cli to provide more data for plugins\n   */\n  pluginData?: {\n    target?: Target;\n    path?: string;\n    outputDir?: string;\n    outputFilePath?: string;\n  };\n\n  /**\n   * Used to store context of a component for a specific framework\n   * that we need access only during compilation (for internal use only) and gets removed after compilation.\n   */\n  compileContext?: {\n    [K in Target]?: {\n      state?: MitosisState;\n      hooks?: {\n        [hookName: string]: BaseHook;\n      };\n      extra?: Record<string, any>;\n    };\n  };\n};\n"
  },
  {
    "path": "packages/core/src/types/mitosis-context.ts",
    "content": "import { ContextOptions, MitosisState } from './mitosis-component';\n\nexport type MitosisContext = ContextOptions & {\n  '@type': '@builder.io/mitosis/context';\n  name: string;\n  value: MitosisState;\n};\n"
  },
  {
    "path": "packages/core/src/types/mitosis-node.ts",
    "content": "import { JSONObject } from './json';\n\nexport type SpreadType = 'normal' | 'event-handlers';\nexport type BindingType = 'function' | 'expression';\n\ntype BindingProperties =\n  | {\n      type: 'spread';\n      spreadType: SpreadType;\n      /**\n       * TODO: remove these once we've cleaned up the code that uses them.\n       * they don't need to be here since they only exist for functions\n       */\n      async?: boolean;\n      arguments?: string[];\n    }\n  | {\n      type: 'single';\n      bindingType: Extract<BindingType, 'function'>;\n      async?: boolean;\n      arguments?: string[];\n    }\n  | {\n      type: 'single';\n      bindingType: Extract<BindingType, 'expression'>;\n      /**\n       * TODO: remove these once we've cleaned up the code that uses them.\n       * they don't need to be here since they only exist for functions\n       */\n      async?: boolean;\n      arguments?: string[];\n    };\n\nexport type Binding = {\n  code: string;\n} & BindingProperties;\n\nexport type BuilderLocalizedValue = {\n  '@type': '@builder.io/core:LocalizedValue';\n  Default: string;\n  [index: string]: string;\n};\n\nexport type BaseNode = {\n  '@type': '@builder.io/mitosis/node';\n  meta: JSONObject;\n  name: string;\n  scope: {};\n  /**\n   * Optional type identifier for special node types (e.g., 'user-symbol' for Builder.io user symbols).\n   * Used to explicitly identify node types without relying on name patterns.\n   */\n  type?: 'user-symbol';\n  /**\n   * Key-value store of string values for DOM attributes.\n   * ```js\n   * {\n   *   defaultValue: 'initial text',\n   *   width: '100px',\n   * }\n   * ```\n   */\n  properties: { [key: string]: string | undefined };\n  /**\n   * Key-value store of expression values for DOM attributes. These are always represented as strings.\n   *\n   * ```js\n   * {\n   *   disabled: \"state.isDisabled\",\n   *   defaultValue: \"`${props.text} + ' initial'`\",\n   *   width: \"props.width * 10\",\n   *   height: \"100\",\n   * }\n   * ```\n   */\n  bindings: {\n    [key: string]: Binding | undefined;\n  };\n  children: MitosisNode[];\n  /**\n   * Key-value store of slots. The key is the slot name and the value is an array of nodes.\n   * It is used when components have props that are also nodes\n   */\n  slots?: { [key: string]: MitosisNode[] };\n  /**\n   * Key-value store of localized values\n   * It is used when a Builder content block has localized values.\n   */\n  localizedValues?: { [index: string]: BuilderLocalizedValue };\n\n  /**\n   * Key-value store of serialized elements passed into properties.\n   * Disabled by default. Use `enableBlocksSlots` on supported parsers to enable.\n   */\n  blocksSlots?: BlockSlot;\n};\n\nexport interface BlockSlot {\n  [key: string]: BlockSlot | BlockSlot[] | MitosisNode | MitosisNode[];\n}\n\nexport const ForNodeName = 'For';\nexport const FragmentNodeName = 'Fragment';\nexport const ShowNodeName = 'Show';\nexport const SlotNodeName = 'Slot';\nexport const SpecialNodeNameList = [ForNodeName, FragmentNodeName, ShowNodeName, SlotNodeName];\nexport type SpecialNodesNames = (typeof SpecialNodeNameList)[number];\n\nexport type ForNode = BaseNode & {\n  name: 'For';\n  scope: {\n    forName: string | undefined;\n    indexName: string | undefined;\n    collectionName: string | undefined;\n  };\n};\n\nexport type ShowNode = BaseNode & {\n  name: 'Show';\n};\n\nexport type MitosisNode = BaseNode | ForNode | ShowNode;\n\nexport const checkIsForNode = (node: MitosisNode): node is ForNode => node.name === ForNodeName;\n\nexport const checkIsShowNode = (node: MitosisNode): node is ShowNode => node.name === ShowNodeName;\n"
  },
  {
    "path": "packages/core/src/types/mitosis-styles.ts",
    "content": "export type MitosisStyles = Omit<\n  Partial<CSSStyleDeclaration>,\n  | 'length'\n  | 'getPropertyPriority'\n  | 'getPropertyValue'\n  | 'item'\n  | 'removeProperty'\n  | 'setProperty'\n  | 'parentRule'\n>;\n"
  },
  {
    "path": "packages/core/src/types/plugins.ts",
    "content": "import { OutputFiles, TargetContext } from '@/types/config';\nimport { MitosisComponent } from './mitosis-component';\n\nexport type MitosisBuildPlugin = (\n  targetContext: TargetContext,\n  files?: {\n    componentFiles: OutputFiles[];\n    nonComponentFiles: OutputFiles[];\n  },\n) => void | Promise<void>;\n\nexport type MitosisJsonPlugin = (json: MitosisComponent) => MitosisComponent | void;\n\nexport type MitosisCodePlugin = (code: string, json: MitosisComponent) => string;\n\nexport type MitosisHook<T> = {\n  pre?: T;\n  post?: T;\n};\n\nexport type MitosisPlugin = (options?: any) => {\n  name?: string;\n  order?: number;\n  // Happens before/after build\n  build?: MitosisHook<MitosisBuildPlugin>;\n  // Happens before/after any modifiers\n  json?: MitosisHook<MitosisJsonPlugin>;\n  // Happens before/after formatting\n  code?: MitosisHook<MitosisCodePlugin>;\n};\n"
  },
  {
    "path": "packages/core/src/types/transpiler.ts",
    "content": "import { MitosisComponent } from './mitosis-component';\nimport { MitosisPlugin } from './plugins';\n\nexport interface TranspilerArgs {\n  path?: string;\n  component: MitosisComponent;\n}\n\nexport type Transpiler<R = string> = (args: TranspilerArgs) => R;\n\n/**\n * This type guarantees that all code generators receive the same base options\n */\nexport type TranspilerGenerator<X extends BaseTranspilerOptions, Y = string> = (\n  args?: X,\n) => Transpiler<Y>;\n\nexport type AttributePassingType = {\n  enabled: boolean;\n  customRef?: string;\n};\n\nexport interface BaseTranspilerOptions {\n  experimental?: { [key: string]: any };\n  /**\n   * Runs `prettier` on generated components\n   */\n  prettier?: boolean;\n  /**\n   * Mitosis Plugins to run during codegen.\n   */\n  plugins?: MitosisPlugin[];\n  /**\n   * Enable `typescript` output\n   */\n  typescript?: boolean;\n  /** Enables/disables attribute passing for frameworks with custom elements like angular and stencil */\n  attributePassing?: AttributePassingType;\n  /**\n   * Preserves explicit filename extensions in import statements.\n   */\n  explicitImportFileExtension?: boolean;\n  /**\n   * Can be used for cli builds. Preserves explicit filename extensions when regex matches, e.g.:\n   * {\n   *   explicitBuildFileExtension: {\n   *     \".ts\":/*.figma.lite.tsx/g,\n   *     \".md\":/*.docs.lite.tsx/g\n   *   }\n   * }\n   */\n  explicitBuildFileExtensions?: Record<string, RegExp>;\n}\n"
  },
  {
    "path": "packages/core/tsconfig.build.json",
    "content": "{\n  \"extends\": \"./tsconfig.json\",\n  \"exclude\": [\"src/**/*.test.ts\", \"**/__snapshots__/**/*\", \"**/__tests__/**/*\"]\n}\n"
  },
  {
    "path": "packages/core/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"lib\": [\"es7\", \"dom\", \"esnext\", \"esnext.asynciterable\"],\n    \"composite\": true,\n    \"outDir\": \"dist\",\n    \"strict\": true,\n    \"moduleResolution\": \"NodeNext\",\n    \"module\": \"NodeNext\",\n    \"declaration\": true,\n    \"jsx\": \"preserve\",\n    \"skipLibCheck\": true,\n    \"skipDefaultLibCheck\": true,\n    \"exactOptionalPropertyTypes\": false,\n    \"esModuleInterop\": true,\n    \"target\": \"ES2018\",\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@builder.io/mitosis\": [\"./src\"],\n      \"@/*\": [\"./src/*\"],\n      // To avoid error from moduleResolution: NodeNext\n      \"svelte/types/compiler/interfaces\": [\n        \"./node_modules/svelte/types/compiler/interfaces\",\n        \"../../node_modules/svelte/types/compiler/interfaces\"\n      ]\n    },\n    \"jsxImportSource\": \"@builder.io/mitosis\",\n    \"types\": [\"vitest/globals\"]\n  },\n  \"include\": [\"./src\", \"./typings.d.ts\", \"./jsx-runtime.d.ts\"],\n  \"exclude\": [\"src/**/*.raw.tsx\", \"src/**/*.raw.svelte\"]\n}\n"
  },
  {
    "path": "packages/core/typings.d.ts",
    "content": "// Dummy module for tests\ndeclare module '@dummy*';\n\n// This is for vite raw asset handling suffix\n// https://vitejs.dev/guide/assets.html#importing-asset-as-string\ndeclare module '*?raw';\n\ndeclare module '@babel/plugin-syntax-decorators';\ndeclare module '@babel/plugin-syntax-typescript';\ndeclare module '@babel/preset-typescript';\n\ndeclare module 'prettier-plugin-svelte';\n"
  },
  {
    "path": "packages/core/vite.config.ts",
    "content": "import tsconfigPaths from 'vite-tsconfig-paths';\nimport { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    include: ['**/*.test.ts'],\n  },\n  assetsInclude: ['**/*.raw.tsx'],\n  plugins: [tsconfigPaths({})],\n});\n"
  },
  {
    "path": "packages/docs/.eslintignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "packages/docs/.gitignore",
    "content": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n*.local\n\n# Cache\n.cache\n.mf\n.rollup.cache\ntsconfig.tsbuildinfo\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# Editor\n.vscode/*\n!.vscode/launch.json\n!.vscode/*.code-snippets\n\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n# Yarn\n.yarn/*\n!.yarn/releases\n\n# Cloudflare\nfunctions/**/*.js\n\n.wrangler\n"
  },
  {
    "path": "packages/docs/.nvmrc",
    "content": "v20.11.0"
  },
  {
    "path": "packages/docs/.prettierignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "packages/docs/.tool-versions",
    "content": "nodejs 20.11.0\n"
  },
  {
    "path": "packages/docs/.vscode/launch.json",
    "content": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"name\": \"Launch Chrome\",\n      \"request\": \"launch\",\n      \"type\": \"chrome\",\n      \"url\": \"http://localhost:5173\",\n      \"webRoot\": \"${workspaceFolder}\"\n    },\n    {\n      \"type\": \"node\",\n      \"name\": \"dev.debug\",\n      \"request\": \"launch\",\n      \"skipFiles\": [\"<node_internals>/**\"],\n      \"cwd\": \"${workspaceFolder}\",\n      \"program\": \"${workspaceFolder}/node_modules/vite/bin/vite.js\",\n      \"args\": [\"--mode\", \"ssr\", \"--force\"]\n    }\n  ]\n}\n"
  },
  {
    "path": "packages/docs/.vscode/qwik-city.code-snippets",
    "content": "{\n  \"onRequest\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qonRequest\",\n    \"description\": \"onRequest function for a route index\",\n    \"body\": [\"export const onRequest: RequestHandler = (request) => {\", \"  $0\", \"};\"]\n  },\n  \"loader$\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qloader$\",\n    \"description\": \"loader$()\",\n    \"body\": [\"export const $1 = routeLoader$(() => {\", \"  $0\", \"});\"]\n  },\n  \"action$\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qaction$\",\n    \"description\": \"action$()\",\n    \"body\": [\"export const $1 = routeAction$((data) => {\", \"  $0\", \"});\"]\n  },\n  \"Full Page\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qpage\",\n    \"description\": \"Simple page component\",\n    \"body\": [\n      \"import { component$ } from '@builder.io/qwik';\",\n      \"\",\n      \"export default component$(() => {\",\n      \"  $0\",\n      \"});\"\n    ]\n  }\n}\n"
  },
  {
    "path": "packages/docs/.vscode/qwik.code-snippets",
    "content": "{\n  \"Qwik component (simple)\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qcomponent$\",\n    \"description\": \"Simple Qwik component\",\n    \"body\": [\n      \"export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {\",\n      \"  return <${2:div}>$4</$2>\",\n      \"});\"\n    ]\n  },\n  \"Qwik component (props)\": {\n    \"scope\": \"typescriptreact\",\n    \"prefix\": \"qcomponent$ + props\",\n    \"description\": \"Qwik component w/ props\",\n    \"body\": [\n      \"export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {\",\n      \"  $2\",\n      \"}\",\n      \"\",\n      \"export const $1 = component$<$1Props>((props) => {\",\n      \"  const ${2:count} = useSignal(0);\",\n      \"  return (\",\n      \"    <${3:div} on${4:Click}$={(ev) => {$5}}>\",\n      \"      $6\",\n      \"    </${3}>\",\n      \"  );\",\n      \"});\"\n    ]\n  },\n  \"Qwik signal\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseSignal\",\n    \"description\": \"useSignal() declaration\",\n    \"body\": [\"const ${1:foo} = useSignal($2);\", \"$0\"]\n  },\n  \"Qwik store\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseStore\",\n    \"description\": \"useStore() declaration\",\n    \"body\": [\"const ${1:state} = useStore({\", \"  $2\", \"});\", \"$0\"]\n  },\n  \"$ hook\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"q$\",\n    \"description\": \"$() function hook\",\n    \"body\": [\"$(() => {\", \"  $0\", \"});\", \"\"]\n  },\n  \"useVisibleTask\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseVisibleTask\",\n    \"description\": \"useVisibleTask$() function hook\",\n    \"body\": [\"useVisibleTask$(({ track }) => {\", \"  $0\", \"});\", \"\"]\n  },\n  \"useTask\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseTask$\",\n    \"description\": \"useTask$() function hook\",\n    \"body\": [\"useTask$(({ track }) => {\", \"  track(() => $1);\", \"  $0\", \"});\", \"\"]\n  },\n  \"useResource\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"quseResource$\",\n    \"description\": \"useResource$() declaration\",\n    \"body\": [\"const $1 = useResource$(({ track, cleanup }) => {\", \"  $0\", \"});\", \"\"]\n  }\n}\n"
  },
  {
    "path": "packages/docs/README.md",
    "content": "# Qwik City App ⚡️\n\n## Cloudflare Pages\n\nCloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run:\n\n```\nnpm run serve\n```\n\nThen visit [http://localhost:8787/](http://localhost:8787/)\n\n### Deployments\n\n[Cloudflare Pages](https://pages.cloudflare.com/) are deployable through their [Git provider integrations](https://developers.cloudflare.com/pages/platform/git-integration/).\n\nIf you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/pages). Next go to your dashboard and follow the [Cloudflare Pages deployment guide](https://developers.cloudflare.com/pages/framework-guides/deploy-anything/).\n\nWithin the projects \"Settings\" for \"Build and deployments\", the \"Build command\" should be `npm run build`, and the \"Build output directory\" should be set to `dist`.\n\n### Function Invocation Routes\n\nCloudflare Page's [function-invocation-routes config](https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes) can be used to include, or exclude, certain paths to be used by the worker functions. Having a `_routes.json` file gives developers more granular control over when your Function is invoked.\nThis is useful to determine if a page response should be Server-Side Rendered (SSR) or if the response should use a static-site generated (SSG) `index.html` file.\n\nBy default, the Cloudflare pages adaptor _does not_ include a `public/_routes.json` config, but rather it is auto-generated from the build by the Cloudflare adaptor. An example of an auto-generate `dist/_routes.json` would be:\n\n```\n{\n  \"include\": [\n    \"/*\"\n  ],\n  \"exclude\": [\n    \"/_headers\",\n    \"/_redirects\",\n    \"/build/*\",\n    \"/favicon.ico\",\n    \"/manifest.json\",\n    \"/service-worker.js\",\n    \"/about\"\n  ],\n  \"version\": 1\n}\n```\n\nIn the above example, it's saying _all_ pages should be SSR'd. However, the root static files such as `/favicon.ico` and any static assets in `/build/*` should be excluded from the Functions, and instead treated as a static file.\n\nIn most cases the generated `dist/_routes.json` file is ideal. However, if you need more granular control over each path, you can instead provide you're own `public/_routes.json` file. When the project provides its own `public/_routes.json` file, then the Cloudflare adaptor will not auto-generate the routes config and instead use the committed one within the `public` directory.\n"
  },
  {
    "path": "packages/docs/adapters/cloudflare-pages/vite.config.ts",
    "content": "import { cloudflarePagesAdapter } from '@builder.io/qwik-city/adapters/cloudflare-pages/vite';\nimport { extendConfig } from '@builder.io/qwik-city/vite';\nimport baseConfig from '../../vite.config';\n\nexport default extendConfig(baseConfig, () => {\n  return {\n    build: {\n      ssr: true,\n      rollupOptions: {\n        input: ['src/entry.cloudflare-pages.tsx', '@qwik-city-plan'],\n      },\n    },\n    plugins: [cloudflarePagesAdapter()],\n  };\n});\n"
  },
  {
    "path": "packages/docs/package.json",
    "content": "{\n  \"name\": \"@builder.io/mitosis-site\",\n  \"description\": \"Demo App with Routing built-in (recommended)\",\n  \"private\": true,\n  \"trustedDependencies\": [\n    \"sharp\"\n  ],\n  \"trustedDependencies-annotation\": \"Needed for bun to allow running install scripts\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"postinstall\": \"node scripts/fix-node-modules.js\",\n    \"build\": \"qwik build\",\n    \"build.client\": \"vite build\",\n    \"build.preview\": \"vite build --ssr src/entry.preview.tsx\",\n    \"build.server\": \"vite build -c adapters/cloudflare-pages/vite.config.ts\",\n    \"build.types\": \"tsc --incremental --noEmit\",\n    \"deploy\": \"wrangler pages deploy ./dist\",\n    \"dev\": \"vite --mode ssr\",\n    \"dev.debug\": \"node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force\",\n    \"lint\": \"eslint \\\"src/**/*.ts*\\\"\",\n    \"preview\": \"qwik build preview && vite preview --open\",\n    \"start:pages\": \"wrangler pages dev\",\n    \"serve\": \"wrangler pages dev ./dist --compatibility-flags=nodejs_als\",\n    \"start\": \"vite --open --mode ssr\",\n    \"qwik\": \"qwik\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/mitosis\": \"latest\",\n    \"@builder.io/partytown\": \"^0.8.1\",\n    \"@builder.io/qwik\": \"^1.5.2\",\n    \"@builder.io/qwik-city\": \"^1.5.2\",\n    \"@builder.io/qwik-labs-canary\": \"^0.0.1\",\n    \"@builder.io/qwik-react\": \"^0.5.4\",\n    \"@originjs/vite-plugin-commonjs\": \"^1.0.3\",\n    \"@qwik-ui/headless\": \"^0.3.8\",\n    \"@qwikest/icons\": \"^0.0.13\",\n    \"@tailwindcss/typography\": \"^0.5.13\",\n    \"@types/eslint\": \"^8.56.6\",\n    \"@types/lodash-es\": \"^4.17.12\",\n    \"@types/node\": \"^20.11.30\",\n    \"@types/react\": \"^18.3.3\",\n    \"@types/react-dom\": \"^18.3.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^7.3.1\",\n    \"@typescript-eslint/parser\": \"^7.3.1\",\n    \"autoprefixer\": \"^10.4.14\",\n    \"eslint\": \"^8.57.0\",\n    \"eslint-plugin-qwik\": \"^1.5.2\",\n    \"lodash-es\": \"^4.17.21\",\n    \"lz-string\": \"^1.5.0\",\n    \"meilisearch-docsearch\": \"^0.6.0\",\n    \"monaco-editor\": \"^0.48.0\",\n    \"postcss\": \"^8.4.31\",\n    \"prettier\": \"^3.2.5\",\n    \"prettier-plugin-tailwindcss\": \"^0.5.14\",\n    \"prismjs\": \"^1.29.0\",\n    \"qwik-content-loader\": \"^0.0.4\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-loading-skeleton\": \"^3.4.0\",\n    \"refractor\": \"^4.8.1\",\n    \"tailwindcss\": \"3.3.3\",\n    \"typescript\": \"5.3.3\",\n    \"undici\": \"*\",\n    \"vite\": \"^5.1.6\",\n    \"vite-plugin-commonjs\": \"^0.10.1\",\n    \"vite-plugin-node-polyfills\": \"^0.21.0\",\n    \"vite-plugin-replace\": \"^0.1.1\",\n    \"vite-tsconfig-paths\": \"^4.2.1\",\n    \"wrangler\": \"^3.0.0\"\n  }\n}\n"
  },
  {
    "path": "packages/docs/postcss.config.cjs",
    "content": "module.exports = {\n  plugins: {\n    'tailwindcss/nesting': {},\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "packages/docs/project.json",
    "content": "{\n  \"$schema\": \"./node_modules/nx/schemas/project-schema.json\",\n  \"name\": \"@builder.io/mitosis-site\",\n  \"targets\": {\n    \"build\": {\n      \"outputs\": [\"{projectRoot}/dist\", \"{projectRoot}/server\"]\n    }\n  }\n}\n"
  },
  {
    "path": "packages/docs/public/_headers",
    "content": "# https://developers.cloudflare.com/pages/platform/headers/\n\n/build/*\n  Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable\n"
  },
  {
    "path": "packages/docs/public/_redirects",
    "content": "# https://developers.cloudflare.com/pages/platform/redirects/\n"
  },
  {
    "path": "packages/docs/public/manifest.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/web-manifest-combined.json\",\n  \"name\": \"qwik-project-name\",\n  \"short_name\": \"Welcome to Qwik\",\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#fff\",\n  \"description\": \"A Qwik project app.\"\n}\n"
  },
  {
    "path": "packages/docs/public/robots.txt",
    "content": ""
  },
  {
    "path": "packages/docs/scripts/fix-node-modules.js",
    "content": "// Update a node_modules file to remove a block of code that causes an error in vite\n// only in this project for some reason. I've spent hours looking for a real fix,\n// And of course, patch-package is erroring too, so here we are.\nimport fs from 'fs/promises';\n\nconst replacements = [\n  {\n    // Remove perf_hooks package require() or vite will error\n    path: 'node_modules/@ts-morph/common/dist/typescript.js',\n    from: `\n        const { performance: performance2, PerformanceObserver: PerformanceObserver2 } =   require(\"perf_hooks\");\n        if (hasRequiredAPI(performance2, PerformanceObserver2)) {\n          return {\n            // By default, only write native events when generating a cpu profile or using the v8 profiler.\n            shouldWriteNativeEvents: false,\n            performance: performance2,\n            PerformanceObserver: PerformanceObserver2\n          };\n        }`.trim(),\n    to: '',\n  },\n  {\n    // Remove node:async_hooks package require() or vite will error\n    path: 'node_modules/@builder.io/qwik-city/middleware/request-handler/index.mjs',\n    from: `\nimport(\"node:async_hooks\").then((module) => {\n  const AsyncLocalStorage = module.AsyncLocalStorage;\n  asyncStore = new AsyncLocalStorage();\n  globalThis.qcAsyncRequestStore = asyncStore;\n}).catch((err) => {\n  console.warn(\n    \"AsyncLocalStorage not available, continuing without it. This might impact concurrent server calls.\",\n    err\n  );\n});\n`.trim(),\n    to: '',\n  },\n  // Remove process.env.NODE_ENV = 'development' from postcss-load-config to fix vite error\n  {\n    path: 'node_modules/postcss-load-config/src/index.js',\n    from: \"process.env.NODE_ENV = 'development'\",\n    to: '',\n  },\n  // Prettier is a CJS module that can't be loaded from a \"module\" module,\n  // so we delete the import\n  {\n    path: 'node_modules/@builder.io/qwik-labs-canary/vite/index.js',\n    from: `import { format } from \"prettier/standalone\";`,\n    to: '',\n  },\n];\n\ntry {\n  await Promise.all(\n    replacements.map(async ({ path, from, to }) => {\n      // Read the file\n      const data = await fs.readFile(process.cwd() + '/' + path, 'utf8');\n\n      const updatedData = data.replace(from, to || '');\n\n      // Write the file back\n      await fs.writeFile(path, updatedData, 'utf8');\n      console.log('File updated successfully!', path);\n    }),\n  );\n} catch (err) {\n  console.error('Error processing file:', err);\n}\n"
  },
  {
    "path": "packages/docs/src/components/code-editor.tsx",
    "content": "import {\n  component$,\n  noSerialize,\n  useSignal,\n  useVisibleTask$,\n  type HTMLAttributes,\n  type NoSerialize,\n  type PropFunction,\n} from '@builder.io/qwik';\nimport * as monaco from 'monaco-editor';\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';\nimport cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker';\nimport htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker';\nimport jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker';\nimport tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker';\n\nexport type CodeEditorProps = {\n  class?: HTMLAttributes<HTMLElement>['class'];\n  style?: Record<string, string | number | undefined>;\n  onChange$?: PropFunction<(value: string) => void>;\n  onSave$?: PropFunction<(value: string) => void>;\n  language?: string;\n  options?: monaco.editor.IStandaloneEditorConstructionOptions;\n  readOnly?: boolean;\n} & ({ value: string; defaultValue?: string } | { defaultValue: string; value?: string });\n\nexport const CodeEditor = component$((props: CodeEditorProps) => {\n  const hostRef = useSignal<HTMLElement>();\n  const editorRef =\n    useSignal<\n      NoSerialize<monaco.editor.IStandaloneCodeEditor | monaco.editor.IStandaloneDiffEditor>\n    >();\n  const lastContent = useSignal<string>(props.value || props.defaultValue || '');\n\n  useVisibleTask$(({ cleanup }) => {\n    editorRef.value?.dispose();\n    (editorRef.value?.getModel() as any)?.dispose?.();\n\n    monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n      jsx: monaco.languages.typescript.JsxEmit.React,\n      jsxFactory: 'React.createElement',\n      allowNonTsExtensions: true,\n      allowJs: true,\n      target: monaco.languages.typescript.ScriptTarget.Latest,\n    });\n\n    const value = props.defaultValue || props.value;\n\n    editorRef.value = noSerialize(\n      monaco.editor.create(hostRef.value!, {\n        value: value,\n        language: props.language || 'typescript',\n        automaticLayout: true,\n        theme: 'vs-dark',\n        fontSize: window.innerWidth < 500 ? 12 : 15,\n        lineNumbers: window.innerWidth < 500 ? 'off' : 'on',\n        overviewRulerBorder: false,\n        foldingHighlight: false,\n        renderLineHighlightOnlyWhenFocus: true,\n        renderLineHighlight: 'none',\n        selectionHighlight: false,\n        scrollbar: { vertical: 'hidden' },\n        overviewRulerLanes: 0,\n        minimap: {\n          enabled: false,\n        },\n        model: monaco.editor.createModel(value!, props.language),\n        readOnly: props.readOnly,\n        ...props.options,\n      }),\n    );\n\n    const listener =\n      (editorRef.value as monaco.editor.IStandaloneCodeEditor)!.onDidChangeModelContent?.(() => {\n        const currentValue = (editorRef.value as monaco.editor.IStandaloneCodeEditor)!.getValue();\n        if (lastContent.value !== currentValue) {\n          props.onChange$?.((editorRef.value as monaco.editor.IStandaloneCodeEditor)!.getValue());\n          lastContent.value = currentValue;\n        }\n      });\n\n    editorRef.value!.addAction({\n      id: 'save',\n      label: 'save',\n\n      // An optional array of keybindings for the action.\n      keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS],\n\n      // Method that will be executed when the action is triggered.\n      // @param editor The editor instance is passed in as a convinience\n      run: (ed) => {\n        props.onSave$?.(ed.getValue());\n      },\n    });\n\n    cleanup(() => listener?.dispose());\n  });\n\n  useVisibleTask$(() => {\n    self.MonacoEnvironment = {\n      getWorker(_, label) {\n        if (label === 'json') {\n          return new jsonWorker();\n        }\n        if (label === 'css' || label === 'scss' || label === 'less') {\n          return new cssWorker();\n        }\n        if (label === 'html' || label === 'handlebars' || label === 'razor') {\n          return new htmlWorker();\n        }\n        if (label === 'typescript' || label === 'javascript') {\n          return new tsWorker();\n        }\n        return new editorWorker();\n      },\n    };\n  });\n\n  useVisibleTask$(({ track }) => {\n    track(() => editorRef.value);\n    track(() => props.value);\n\n    if (editorRef.value && typeof props.value === 'string') {\n      (editorRef.value as monaco.editor.IStandaloneCodeEditor).setValue(props.value);\n    }\n  });\n\n  useVisibleTask$(({ track }) => {\n    track(() => editorRef.value);\n    track(() => props.language);\n\n    if (editorRef.value && props.language) {\n      monaco.editor.setModelLanguage(\n        (editorRef.value as monaco.editor.IStandaloneCodeEditor).getModel()!,\n        props.language,\n      );\n    }\n  });\n\n  return <div class={['overflow-hidden', props.class as any]} style={props.style} ref={hostRef} />;\n});\n"
  },
  {
    "path": "packages/docs/src/components/code-rotator.tsx",
    "content": "import {\n  $,\n  ClassList,\n  PropFunction,\n  component$,\n  useSignal,\n  useStore,\n  useVisibleTask$,\n} from '@builder.io/qwik';\nimport type monaco from 'monaco-editor';\nimport Prism from 'prismjs';\nimport {\n  InputSyntax,\n  OutputFramework,\n  compile,\n  defaultCode,\n  languageByFramework,\n} from '~/services/compile';\nimport { CodeEditor } from './code-editor';\n\n// Set to global so that prism language plugins can find it.\nconst _global =\n  (typeof globalThis !== 'undefined' && globalThis) ||\n  (typeof global !== 'undefined' && global) ||\n  (typeof self !== 'undefined' && self) ||\n  (typeof this !== 'undefined' && this) ||\n  (typeof window !== 'undefined' && window);\n(_global as any).PRISM = Prism;\n\nimport 'prismjs/components/prism-jsx';\nimport 'prismjs/components/prism-tsx';\n\nconst INTERACTIVE = false;\n\nconst vueOutput = `\n<template>\n  <div>\n    <input class=\"input\" :value=\"name\" @change=\"name = $event.target.value\" />\n    Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n  </div>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\n\nconst name = ref(\"Steve\");\n</script>\n\n<style scoped>\n.input {\n  color: red;\n}\n</style>\n`.trim();\n\nconst svelteOutput = `\n<script>\n  let name = \"Steve\";\n</script>\n\n<div>\n  <input class=\"input\" bind:value={name} />\n  Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n</div>\n\n<style>\n  .input {\n    color: red;\n  }\n</style>\n`.trim();\n\nconst angularOutput = `\nimport { Component } from \"@angular/core\";\n\n@Component({\n  selector: \"my-component\",\n  template: \\`\n    <div>\n      <input\n        class=\"input\"\n        [attr.value]=\"name\"\n        (input)=\"name = $event.target.value\"\n      />\n\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n    </div>\n  \\`,\n  styles: [\n    \\`\n      .input {\n        color: red;\n      }\n    \\`,\n  ],\n})\nexport default class MyComponent {\n  name = \"Steve\";\n}\n`.trim();\n\nconst qwikOutput = `\nimport { component$, useStore, useStylesScoped$ } from \"@builder.io/qwik\";\n\nexport const MyComponent = component$((props) => {\n  useStylesScoped$(\\`\n    .input-MyComponent {\n      color: red;\n    }\\`\n  );\n  const state = useStore({ name: \"Steve\" });\n\n  return (\n    <div>\n      <input\n        class=\"input-MyComponent\"\n        value={state.name}\n        onChange$={(event) => (state.name = event.target.value)}\n      />\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n    </div>\n  );\n});\n`.trim();\n\nconst frameworkExamples: OutputFramework[] = ['vue', 'angular', 'svelte', 'qwik'];\n\nconst monacoOptions: monaco.editor.IStandaloneEditorConstructionOptions = {\n  lineNumbers: 'off',\n  fontSize: 12,\n};\n\nconst filenameByFramework: Partial<Record<OutputFramework, string>> = {\n  vue: 'component.vue',\n  angular: 'angular.ts',\n  svelte: 'component.svelte',\n  qwik: 'qwik.tsx',\n};\n\nconst imagesByFramework: Partial<Record<OutputFramework, string>> = {\n  vue: 'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F73a54a19443e48fab077e6f21687cd20?format=webp&width=50',\n  angular:\n    'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F20c9914962994f4a9ca3435c90854e9e?format=webp&width=50',\n  svelte:\n    'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ffbe9dfb6bb09448ba4fe5feb4bb0e53e?format=webp&width=50',\n  qwik: 'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F8469b183f0dd433aabd0fcd0a373b370',\n  mitosis:\n    'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fa45d49818e464caaab4f4bb416fed861',\n};\n\nconst CodePanel = component$(\n  (props: {\n    code: string;\n    isActive: boolean;\n    framework: OutputFramework | InputSyntax;\n    readOnly?: boolean;\n    onChange$?: PropFunction<(code: string) => void>;\n    class?: ClassList;\n    activeIndex?: number;\n    index?: number;\n  }) => {\n    const language = languageByFramework[props.framework as OutputFramework] || 'typescript';\n    const useIndexInsteadOfActive = props.activeIndex !== undefined;\n\n    const isNextUp = props.index === (props.activeIndex! + 1) % frameworkExamples.length;\n    const wasLastUp =\n      props.index ===\n      (props.activeIndex! - 1 + frameworkExamples.length) % frameworkExamples.length;\n\n    return (\n      <div\n        class={[\n          'bg-primary-dark overflow-hidden border-primary border border-opacity-50 rounded-lg pl-0 transition-all duration-500',\n          useIndexInsteadOfActive && isNextUp\n            ? 'opacity-0 blur-sm translate-y-1 z-10 scale-[0.92] pointer-events-none'\n            : useIndexInsteadOfActive && wasLastUp\n            ? 'opacity-0 blur-sm -translate-y-1 z-40 scale-[1.08] pointer-events-none'\n            : '',\n          props.isActive ? 'opacity-100 z-30' : 'z-0 opacity-0 translate-y-2 pointer-events-none',\n          props.class,\n        ]}\n      >\n        <div class=\"border-b border-primary border-opacity-50 flex\">\n          <div class=\"flex gap-3 items-center px-3 text-sm py-2 bg-primary bg-opacity-20 self-start border-r border-primary border-opacity-50\">\n            <img\n              alt={`${props.framework} logo`}\n              width={25}\n              height={25}\n              src={imagesByFramework[props.framework as OutputFramework]}\n            />\n            {filenameByFramework[props.framework as OutputFramework] || 'mitosis.jsx'}\n          </div>\n        </div>\n        <div class=\"relative grow-1 h-full p-4\">\n          {INTERACTIVE ? (\n            <CodeEditor\n              options={monacoOptions}\n              onChange$={props.onChange$}\n              readOnly={props.readOnly}\n              language={language}\n              class=\"relative inset-0 w-full h-full -ml-4\"\n              value={props.code}\n            />\n          ) : (\n            <div class=\"hp-prose prose prose-invert\">\n              <pre\n                class=\"-m-2 !text-xs\"\n                dangerouslySetInnerHTML={Prism.highlight(\n                  props.code,\n                  Prism.languages[language === 'typescript' ? 'tsx' : language],\n                  language === 'typescript' ? 'tsx' : language,\n                )}\n              />\n            </div>\n          )}\n        </div>\n      </div>\n    );\n  },\n);\n\nexport const CodeRotator = component$((props: { class: ClassList }) => {\n  const currentIndex = useSignal(0);\n  const mouseIsOver = useSignal(false);\n  const maxIndex = frameworkExamples.length;\n  const isThrottling = useSignal(false);\n  const throttleTimeout = useSignal(0);\n  const isLoaded = useSignal(!INTERACTIVE);\n  const makeVisible = useSignal(!INTERACTIVE);\n\n  const outputs = useStore({\n    vue: vueOutput,\n    angular: angularOutput,\n    svelte: svelteOutput,\n    qwik: qwikOutput,\n  });\n\n  const compileAll = $(async (code: string) => {\n    await Promise.allSettled(\n      frameworkExamples.map(async (framework) => {\n        const output = await compile(code, framework as OutputFramework, 'jsx');\n        (outputs as any)[framework] = output.replace(\n          /\\n?\\n?import { useStore } from \"..\";\\n?/g,\n          '',\n        );\n      }),\n    );\n  });\n\n  const throttledCompile = $(async (code: string) => {\n    if (throttleTimeout.value) {\n      clearTimeout(throttleTimeout.value);\n    }\n    if (isThrottling.value) {\n      throttleTimeout.value = setTimeout(async () => {\n        isThrottling.value = true;\n        await compileAll(code);\n        isThrottling.value = false;\n      }, 100) as any;\n      return;\n    }\n    isThrottling.value = true;\n    await compileAll(code);\n    isThrottling.value = false;\n  });\n\n  if (INTERACTIVE) {\n    useVisibleTask$(() => {\n      isLoaded.value = true;\n      setTimeout(() => {\n        makeVisible.value = true;\n      }, 100);\n    });\n  }\n\n  useVisibleTask$(() => {\n    currentIndex.value = (currentIndex.value + 1) % maxIndex;\n    const interval = setInterval(() => {\n      const skip = mouseIsOver.value;\n      if (skip) return;\n      currentIndex.value = (currentIndex.value + 1) % maxIndex;\n    }, 3000);\n    return () => clearInterval(interval);\n  });\n\n  return !isLoaded.value ? null : (\n    <div\n      class={[\n        'flex flex-col max-w-full transition-all duration-700',\n        makeVisible.value ? 'opacity-100' : 'opacity-0 translate-y-2',\n        props.class,\n      ]}\n    >\n      <img\n        width={100}\n        height={80}\n        alt=\"Arrow pointing right\"\n        class=\"object-contain my-4 mx-auto max-md:hidden\"\n        src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F298a3d9f6c3743cb8c3e17d209237da8\"\n      />\n      <div class=\"flex gap-8 max-md:flex-col max-md:mt-8\">\n        <div class=\"w-[450px] max-lg:w-1/2 max-md:w-full max-md:h-[290px] max-w-full relative\">\n          <CodePanel\n            onChange$={(code) => throttledCompile(code)}\n            code={defaultCode}\n            isActive\n            framework=\"mitosis\"\n          />\n        </div>\n\n        <img\n          width={25}\n          height={60}\n          alt=\"Arrow pointing down\"\n          class=\"object-contain mx-auto md:hidden mt-14 -mb-6\"\n          src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F66021c443ad24d858f16cb5c1ea46961\"\n        />\n        <div\n          class={[\n            'relative w-[450px] max-lg:w-1/2 max-md:w-full min-h-[540px] max-md:h-[290px] max-w-full transition-all duration-500 delay-200',\n            makeVisible.value ? 'opacity-100' : 'opacity-0 translate-y-2',\n          ]}\n          onMouseEnter$={() => {\n            if (INTERACTIVE) {\n              mouseIsOver.value = true;\n            }\n          }}\n          onMouseLeave$={() => {\n            mouseIsOver.value = false;\n          }}\n        >\n          {frameworkExamples.map((framework, index) => (\n            <CodePanel\n              class=\"absolute w-full\"\n              readOnly\n              code={(outputs as any)[framework as OutputFramework]}\n              isActive={currentIndex.value === index}\n              index={index}\n              activeIndex={currentIndex.value}\n              framework={framework}\n            />\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/components/footer.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { Link } from '@builder.io/qwik-city';\nimport { TbBrandDiscord, TbBrandFigma, TbBrandGithub } from '@qwikest/icons/tablericons';\n\nexport default component$(() => {\n  const year = new Date().getFullYear();\n\n  return (\n    <footer class=\"border-t border-primary border-opacity-50 pb-4\">\n      <div class=\"container md:my-8 p-8 mx-auto flex gap-4 max-md:flex-col-reverse\">\n        <div class=\"block max-md:mt-8\">\n          <a class=\"block text-primary-light\" href=\"https://www.builder.io/\" target=\"_blank\">\n            Made with ❤️ by\n            <img\n              alt=\"Builder.io logo\"\n              class=\"object-contain mt-3 max-sm:w-[150px]\"\n              width={200}\n              height={90}\n              src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fe2052e9c2ef34dab98709a67fcc4b8c3\"\n            />\n          </a>\n          <div class=\"text-xs mt-4 text-primary-light opacity-90 font-light\">\n            Copyright © {year} Builder.io, Inc.\n          </div>\n        </div>\n        <div class=\"flex max-md:flex-col gap-8 md:ml-auto items-center text-3xl max-md:items-start max-md:mt-2\">\n          <div class=\"flex gap-4 text-base\">\n            <Link prefetch href=\"/docs/\" class=\"hover:text-primary-light\">\n              Docs\n            </Link>\n\n            <Link prefetch href=\"/playground/\" class=\"hover:text-primary-light\">\n              Playground\n            </Link>\n          </div>\n          <div class=\"flex gap-4\">\n            <Link aria-label=\"Figma logo\" class=\"hover:text-primary-light\" href=\"/docs/figma/\">\n              <TbBrandFigma />\n            </Link>\n            <Link\n              aria-label=\"GitHub logo\"\n              class=\"hover:text-primary-light\"\n              target=\"_blank\"\n              href=\"https://github.com/BuilderIO/mitosis\"\n            >\n              <TbBrandGithub />\n            </Link>\n            <Link\n              aria-label=\"Discord logo\"\n              class=\"hover:text-primary-light\"\n              target=\"_blank\"\n              href=\"https://discord.gg/yxjk5vn6pn\"\n            >\n              <TbBrandDiscord />\n            </Link>\n            {/* <Search class=\"ml-3 max-md:-ml-3 max-md:mr-1\" /> */}\n          </div>\n        </div>\n      </div>\n    </footer>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/components/header.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { Link, useLocation } from '@builder.io/qwik-city';\nimport { TbBrandDiscord, TbBrandFigma, TbBrandGithub } from '@qwikest/icons/tablericons';\nimport { Search } from './search';\n\nexport default component$(() => {\n  const location = useLocation();\n\n  const isPlayground = location.url.pathname === '/playground/';\n  const isDocs = location.url.pathname.startsWith('/docs/');\n\n  return (\n    <>\n      <div\n        class={[\n          'bg-primary-dark text-primary-light text-center font-medium px-3 py-3 max-md:py-2.5 rounded text-sm max-md:text-xs transition-all max-h-[50px]',\n          isPlayground && 'max-md:max-h-0 max-md:!p-0',\n        ]}\n      >\n        Welcome to our new site! Please{' '}\n        <a\n          href={`https://docs.google.com/forms/d/e/1FAIpQLSc6jOAOPMRHviiXv4Pkk28fmdFhcX-IprhHvKCIBhjuZKmgiA/viewform?usp=pp_url&entry.1953883676=${encodeURIComponent(\n            location.url.href,\n          )}`}\n          target=\"_blank\"\n          class=\"underline\"\n        >\n          share feedback\n        </a>\n      </div>\n      <header class=\"text-white sticky top-0 z-50 border-y border-primary border-opacity-50 bg-purple-990 bg-opacity-80 backdrop-blur backdrop-saturate-150\">\n        <div\n          class={[\n            'p-6 max-md:p-3 flex justify-between items-center transition-all mx-auto container',\n            isPlayground && 'max-w-[100vw]',\n          ]}\n        >\n          <Link prefetch href=\"/\" title=\"qwik\" class=\"flex items-center\">\n            <img\n              alt=\"Mitosis logo\"\n              class=\"object-contain max-md:max-w-[110px]\"\n              width={160}\n              height={80}\n              src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F0fdb9aabd10f4205b3b3b56d7b950239\"\n            />\n          </Link>\n          <ul class=\"flex space-x-8 max-md:space-x-6 max-sm:space-x-4 font-medium items-center\">\n            <li>\n              <Search />\n            </li>\n            <li class=\"flex gap-4 items-center\">\n              <Link\n                aria-label=\"GitHub logo\"\n                class=\"hover:text-primary-light text-xl\"\n                target=\"_blank\"\n                href=\"https://github.com/BuilderIO/mitosis\"\n              >\n                <TbBrandGithub />\n              </Link>\n              <Link\n                aria-label=\"Figma logo\"\n                class=\"hover:text-primary-light text-xl max-sm:hidden\"\n                href=\"/docs/figma/\"\n              >\n                <TbBrandFigma />\n              </Link>\n              <Link\n                aria-label=\"Discord logo\"\n                class=\"hover:text-primary-light text-xl max-sm:hidden\"\n                target=\"_blank\"\n                href=\"https://discord.gg/yxjk5vn6pn\"\n              >\n                <TbBrandDiscord />\n              </Link>\n            </li>\n            <li>\n              <Link\n                prefetch\n                href=\"/docs/\"\n                class={['hover:text-primary-light', isDocs && 'text-primary-light']}\n              >\n                Docs\n              </Link>\n            </li>\n            <li>\n              <Link\n                prefetch\n                href=\"/playground/\"\n                class={['hover:text-primary-light', isPlayground && 'text-primary-light']}\n              >\n                Playground\n              </Link>\n            </li>\n            <li class=\"max-lg:hidden\">\n              <Link\n                prefetch\n                href=\"/docs/quickstart/\"\n                class=\"bg-primary rounded hover:bg-primary-light px-4 py-3 text-black\"\n              >\n                Get Started\n              </Link>\n            </li>\n          </ul>\n        </div>\n      </header>\n    </>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/components/partytown/partytown.tsx",
    "content": "import { PartytownConfig, partytownSnippet } from '@builder.io/partytown/integration';\n\n/**\n * Props for `<QwikPartytown/>`, which extends the Partytown Config.\n *\n * https://github.com/BuilderIO/partytown#config\n *\n * @public\n */\nexport interface PartytownProps extends PartytownConfig {}\n\n/**\n * @public\n * You can pass setting with props\n */\nexport const QwikPartytown = (props: PartytownProps): any => {\n  return <script dangerouslySetInnerHTML={partytownSnippet(props)} />;\n};\n"
  },
  {
    "path": "packages/docs/src/components/router-head.tsx",
    "content": "import { useDocumentHead, useLocation } from '@builder.io/qwik-city';\n\nimport { component$ } from '@builder.io/qwik';\n\n/**\n * The RouterHead component is placed inside of the document `<head>` element.\n */\nexport const RouterHead = component$(() => {\n  const head = useDocumentHead();\n  const loc = useLocation();\n\n  const canonicalURL = new URL(\n    loc.url.pathname + loc.url.search + loc.url.hash,\n    'https://mitosis.builder.io',\n  );\n\n  return (\n    <>\n      <title>{head.title}</title>\n\n      <link rel=\"canonical\" href={canonicalURL.toString()} />\n      {/* favicon */}\n      <link href=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F199eed663ae845baa8a6ea4136a40871\" />\n      <meta\n        property=\"og:image\"\n        content=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F55995a55a8e9464b9f26cb206e8eff8f\"\n      />\n      <meta property=\"og:image:width\" content=\"1200\" />\n      <meta property=\"og:image:height\" content=\"630\" />\n      <meta property=\"og:image:alt\" content=\"Mitosis - write components once, run everywhere\" />\n      <meta property=\"og:type\" content=\"website\" />\n      <meta property=\"og:locale\" content=\"en_US\" />\n      <meta name=\"twitter:card\" content=\"summary_large_image\" />\n      <meta name=\"twitter:site\" content=\"@builderio\" />\n      <meta name=\"twitter:creator\" content=\"@builderio\" />\n\n      {loc.url.pathname.startsWith('/docs') && (\n        <link\n          rel=\"stylesheet\"\n          href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.27.0/themes/prism-dark.min.css\"\n        />\n      )}\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n      <link\n        rel=\"icon\"\n        type=\"image/svg+xml\"\n        href=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F5a86bcaa3a784a6b9f64f13d4a3016f5\"\n      />\n\n      {head.meta.map((m) => (\n        <meta key={m.key} {...m} />\n      ))}\n\n      {head.links.map((l) => (\n        <link key={l.key} {...l} />\n      ))}\n\n      {head.styles.map((s) => (\n        <style key={s.key} {...s.props} dangerouslySetInnerHTML={s.style} />\n      ))}\n\n      {head.scripts.map((s) => (\n        <script key={s.key} {...s.props} dangerouslySetInnerHTML={s.script} />\n      ))}\n\n      <script\n        type=\"text/partytown\"\n        async\n        src=\"https://www.googletagmanager.com/gtag/js?id=G-P6ZRY0ZT14\"\n      ></script>\n      <script\n        type=\"text/partytown\"\n        dangerouslySetInnerHTML={`\n          window.dataLayer = window.dataLayer || [];\n          function gtag(){dataLayer.push(arguments);}\n          gtag('js', new Date());\n\n          gtag('config', 'G-P6ZRY0ZT14');\n        `}\n      />\n    </>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/components/search.tsx",
    "content": "import { docsearch } from 'meilisearch-docsearch';\nimport 'meilisearch-docsearch/css';\n\nimport { ClassList, component$, useSignal, useVisibleTask$ } from '@builder.io/qwik';\nimport { useNavigate } from '@builder.io/qwik-city';\n\nexport const Search = component$((props: { class?: ClassList }) => {\n  const divRef = useSignal<HTMLDivElement>();\n  const nav = useNavigate();\n\n  useVisibleTask$(() => {\n    document.documentElement.setAttribute('data-theme', 'dark');\n    divRef.value!.innerHTML = '';\n    docsearch({\n      container: divRef.value!,\n      host: 'https://ms-0040a28198ad-9480.lon.meilisearch.io',\n      apiKey: '86cf79d6194eff5fe82ed4e5afc7d8135a29697572b9979c8dc8fc506fc58d1a',\n      indexUid: 'docs-site-crawl',\n      hotKeys: ['/'],\n    });\n\n    // Don't allow server side routing, catch it here and navigate client side.\n    (window as any).navigation?.addEventListener('navigate', (event: any) => {\n      if (event.canIntercept) {\n        const url = new URL(event.destination.url);\n        const isNotPathChange = url.pathname === window.location.pathname;\n        if (isNotPathChange) {\n          return;\n        }\n        event.intercept({\n          async handler() {\n            await nav(url.pathname + url.search + url.hash);\n          },\n        });\n      }\n    });\n  });\n\n  return (\n    <div class={props.class} id=\"searchbar\" ref={divRef}>\n      <button type=\"button\" class=\"docsearch-btn\" aria-label=\"Search\">\n        <span class=\"docsearch-btn-icon-container\">\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            width=\"24\"\n            height=\"24\"\n            viewBox=\"0 0 24 24\"\n            class=\"docsearch-modal-btn-icon\"\n          >\n            <path\n              fill=\"currentColor\"\n              d=\"M21.71 20.29L18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a1 1 0 0 0 1.42 0a1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 7-7a7 7 0 0 1-7 7Z\"\n            ></path>\n          </svg>\n        </span>\n        <span class=\"docsearch-btn-placeholder\"> Search</span>\n        <span class=\"docsearch-btn-keys\">\n          <kbd class=\"docsearch-btn-key\">⌘</kbd>\n          <kbd class=\"docsearch-btn-key\">K</kbd>\n        </span>\n      </button>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/components/select.tsx",
    "content": "import { ClassList, PropFunction, component$, useStylesScoped$ } from '@builder.io/qwik';\n\nexport default component$(\n  (props: {\n    value: string;\n    options: string[];\n    onChange$: PropFunction<(newValue: string) => void>;\n    class?: ClassList;\n  }) => {\n    useStylesScoped$(`\n      select {\n        background-image: url(\"data:image/svg+xml;utf8,${encodeURIComponent(\n          '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6 9l6 6l6 -6\" /></svg>',\n        )}\");\n        background-repeat: no-repeat;\n        background-position-x: 92%;\n        background-size: 18px;\n        background-position-y: 8px;\n      }\n    `);\n\n    return (\n      <select\n        value={props.value}\n        onChange$={(_e, el) => props.onChange$(el.value)}\n        class={[\n          'px-3 py-1.5 outline-0 pr-8 rounded text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-purple-990 bg-primary focus:ring-primary bg-opacity-10 border border-primary border-opacity-50 transition-colors duration-200 ease-in-out appearance-none',\n          props.class,\n        ]}\n      >\n        {props.options.map((option) => (\n          <option value={option} key={option} class=\"capitalize text-black\">\n            {option}\n          </option>\n        ))}\n      </select>\n    );\n  },\n);\n"
  },
  {
    "path": "packages/docs/src/entry.cloudflare-pages.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the entry point for Cloudflare Pages when building for production.\n *\n * Learn more about the Cloudflare Pages integration here:\n * - https://qwik.dev/docs/deployments/cloudflare-pages/\n *\n */\nimport {\n  createQwikCity,\n  type PlatformCloudflarePages,\n} from '@builder.io/qwik-city/middleware/cloudflare-pages';\nimport qwikCityPlan from '@qwik-city-plan';\nimport { manifest } from '@qwik-client-manifest';\nimport render from './entry.ssr';\n\ndeclare global {\n  interface QwikCityPlatform extends PlatformCloudflarePages {}\n}\n\nconst fetch = createQwikCity({ render, qwikCityPlan, manifest });\n\nexport { fetch };\n"
  },
  {
    "path": "packages/docs/src/entry.dev.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * Development entry point using only client-side modules:\n * - Do not use this mode in production!\n * - No SSR\n * - No portion of the application is pre-rendered on the server.\n * - All of the application is running eagerly in the browser.\n * - More code is transferred to the browser than in SSR mode.\n * - Optimizer/Serialization/Deserialization code is not exercised!\n */\nimport { render, type RenderOptions } from '@builder.io/qwik';\nimport Root from './root';\n\nexport default function (opts: RenderOptions) {\n  return render(document, <Root />, opts);\n}\n"
  },
  {
    "path": "packages/docs/src/entry.preview.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the bundle entry point for `npm run preview`.\n * That is, serving your app built in production mode.\n *\n * Feel free to modify this file, but don't remove it!\n *\n * Learn more about Vite's preview command:\n * - https://vitejs.dev/config/preview-options.html#preview-options\n *\n */\nimport { createQwikCity } from '@builder.io/qwik-city/middleware/node';\nimport qwikCityPlan from '@qwik-city-plan';\nimport render from './entry.ssr';\n\n/**\n * The default export is the QwikCity adapter used by Vite preview.\n */\nexport default createQwikCity({ render, qwikCityPlan });\n"
  },
  {
    "path": "packages/docs/src/entry.ssr.tsx",
    "content": "/**\n * WHAT IS THIS FILE?\n *\n * SSR entry point, in all cases the application is rendered outside the browser, this\n * entry point will be the common one.\n *\n * - Server (express, cloudflare...)\n * - npm run start\n * - npm run preview\n * - npm run build\n *\n */\nimport { renderToStream, type RenderToStreamOptions } from '@builder.io/qwik/server';\nimport { manifest } from '@qwik-client-manifest';\nimport Root from './root';\n\nexport default function (opts: RenderToStreamOptions) {\n  return renderToStream(<Root />, {\n    manifest,\n    ...opts,\n    // Use container attributes to set attributes on the html tag.\n    containerAttributes: {\n      lang: 'en-us',\n      ...opts.containerAttributes,\n    },\n  });\n}\n"
  },
  {
    "path": "packages/docs/src/global.css",
    "content": "/**\n * Tailwind CSS imports\n * View the full documentation at https://tailwindcss.com\n */\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n:root {\n  --primary-dark: #221931;\n}\n\n/**\n * WHAT IS THIS FILE?\n *\n * Globally applied styles. No matter which components are in the page or matching route,\n * the styles in here will be applied to the Document, without any sort of CSS scoping.\n *\n */\n\n.monaco-editor {\n  --vscode-editor-background: var(--primary-dark) !important;\n  --vscode-editorGutter-background: var(--primary-dark) !important;\n  outline: none !important;\n}\n\n.monaco-editor .sticky-widget {\n  background-color: var(--primary-dark) !important;\n}\n\nbody {\n  @apply bg-purple-990 text-white;\n}\n\n.prose pre {\n  background-color: #221931;\n  font-size: 14px;\n}\n\n.prose\n  pre\n  :is(\n    .token.attr-name,\n    .token.builtin,\n    .token.char,\n    .token.inserted,\n    .token.selector,\n    .token.string\n  ) {\n  color: #b3e4b3;\n}\n\n.prose pre :is(.token.atrule, .token.attr-value, .token.keyword) {\n  color: #ceb5f4;\n}\n\n.prose\n  pre\n  :is(.token.boolean, .token.constant, .token.number, .token.property, .token.symbol, .token.tag) {\n  color: #ebaa94;\n}\n\nbody {\n  overflow-x: hidden;\n}\n\n.mtk5 {\n  color: #ebaa94 !important;\n}\n\n.mtk8 {\n  color: #ceb5f4 !important;\n}\n\n.mtk22,\n.mtk11 {\n  color: #b3e4b3 !important;\n}\n\n.docsearch-btn-key {\n  display: none;\n}\n\n.docsearch-modal-footer {\n  display: none;\n}\n\n:root {\n  --docsearch-primary-color: #ac7ef4;\n  --docsearch-muted-color: #ac7ef4;\n}\n\n.docsearch-btn {\n  @apply max-md:!shadow-none max-md:-mr-4 hover:!bg-primary-dark;\n  box-shadow: var(--docsearch-searchbox-shadow);\n  background-color: transparent !important;\n  color: var(--docsearch-primary-color) !important;\n}\n\n.docsearch-btn:hover {\n  box-shadow: var(--docsearch-searchbox-shadow);\n  color: #ac7ef4 !important;\n}\n\n.docsearch-modal-search-hits-item--active * {\n  color: black !important;\n}\n\n.docsearch-modal-btn-icon {\n  @apply max-md:!stroke-white max-md:!text-white;\n  width: 17px;\n  margin: 5px;\n  stroke: var(--docsearch-highlight-color);\n  stroke-width: 1px;\n}\n\n@media (max-width: 768px) {\n  footer .docsearch-modal-btn-icon {\n    width: 26px;\n    height: 29px;\n    margin-top: 0;\n  }\n}\n\n.docsearch-btn-placeholder {\n  @apply max-md:hidden;\n}\n\n.docsearch-btn-icon-container {\n  @apply max-md:mr-0;\n}\n\n.docsearch-modal-empty-query {\n  margin-bottom: 14px;\n}\n\n.prose :is(h1, h2, h3, h4, h5, h6) {\n  @apply scroll-mt-32 relative cursor-pointer;\n}\n\n.prose :is(h2, h3, h4, h5, h6):hover .icon-link:after {\n  @apply text-primary;\n  position: absolute;\n  content: '#';\n  left: -1em;\n}\n\n.prose h1 {\n  @apply leading-tight;\n}\n\n.prose video {\n  @apply w-full h-auto;\n}\n\n/* Inter font */\n@font-face {\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 300;\n  font-display: optional;\n  src: url('https://rsms.me/inter/font-files/Inter-Light.woff2?v=4.0') format('woff2');\n}\n@font-face {\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 400;\n  font-display: optional;\n  src: url('https://rsms.me/inter/font-files/Inter-Regular.woff2?v=4.0') format('woff2');\n}\n@font-face {\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 500;\n  font-display: optional;\n  src: url('https://rsms.me/inter/font-files/Inter-Medium.woff2?v=4.0') format('woff2');\n}\n@font-face {\n  font-family: Inter;\n  font-style: normal;\n  font-weight: 600;\n  font-display: optional;\n  src: url('https://rsms.me/inter/font-files/Inter-SemiBold.woff2?v=4.0') format('woff2');\n}\n"
  },
  {
    "path": "packages/docs/src/root.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { QwikCityProvider, RouterOutlet, ServiceWorkerRegister } from '@builder.io/qwik-city';\nimport { QwikPartytown } from './components/partytown/partytown';\nimport { RouterHead } from './components/router-head';\n\nimport './global.css';\n\nimport { Insights } from '@builder.io/qwik-labs-canary';\n\nexport default component$(() => {\n  /**\n   * The root of a QwikCity site always start with the <QwikCityProvider> component,\n   * immediately followed by the document's <head> and <body>.\n   *\n   * Don't remove the `<head>` and `<body>` elements.\n   */\n\n  return (\n    <QwikCityProvider>\n      <head>\n        <meta charSet=\"utf-8\" />\n        <link rel=\"manifest\" href=\"/manifest.json\" />\n        <Insights publicApiKey=\"22gsbhtjcyv\" />\n        <RouterHead />\n        <ServiceWorkerRegister />\n        <QwikPartytown forward={['dataLayer.push']} />\n      </head>\n      <body lang=\"en\">\n        <RouterOutlet />\n      </body>\n    </QwikCityProvider>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/docs/cli/index.mdx",
    "content": "---\ntitle: CLI - Mitosis\n---\n\n# CLI\n\nWe currently have two CLI commands: `mitosis build` and `mitosis compile`.\n\n## `mitosis compile`\n\n`mitosis compile` is a relatively straightforward command. It:\n\n- Reads the config in `mitosis.config.js` (also could specify config file by option: `--config=<file>`)\n- Receives 1 Mitosis component file as input\n- Outputs it to 1 designated target.\n\nYou can get more information by running `mitosis --help`\n\n## `mitosis build`\n\n`mitosis build` is meant for entire project/folders, and is therefore more involved. It:\n\n- Reads the config in `mitosis.config.js` (also could specify config file by option: `--config=<file>`)\n- Identifies a source folder\n- Reads _all_ Mitosis files in the source folder, and\n  - Outputs a component for each target in the config or cli options\n  - Performs additional transpilation steps on a per-target basis\n- Reads _all_ non-Mitosis JS/TS files in the project, and\n  - transpiles them as-is to JS\n- Performs necessary transformations to both Mitosis & non-Mitosis files so that the output folder is coherent and valid (like renaming all component imports in a Svelte target such that they match the output name, ending in `.svelte`)\n\n### options\n\n|                             Option                              | Description                                           | Example                                                                                           |\n| :-------------------------------------------------------------: | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------ |\n|       <p style=\"white-space:nowrap\">--config=\\<file\\></p>       | To specify config file, defaults to mitosis.config.js | none                                                                                              |\n|     <p style=\"white-space:nowrap\">--targets=[format...]</p>     | To specify extra build targets                        | `mitosis build --targets react,vue,svelte` will add 'react', 'vue' and 'svelte' to build targets. |\n| <p style=\"white-space:nowrap\">--exclude-targets=[format...]</p> | To exclude targets from the targets of config file    | `mitosis build --exclude-targets react,vue` will remove 'react' and 'vue' from build targets      |\n"
  },
  {
    "path": "packages/docs/src/routes/docs/components/index.mdx",
    "content": "---\ntitle: Components - Mitosis\n---\n\n# Components\n\n## At a glance\n\nMitosis is inspired by many modern frameworks. You'll see components that look like React components and use React-like hooks, but have simple mutable state like Vue, use a static form of JSX like Solid, compile away like Svelte, and use a simple, prescriptive structure like Angular.\n\nAn example of a Mitosis component showing several features:\n\n```tsx\nimport { For, Show, useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    newItemName: 'New item',\n    list: ['hello', 'world'],\n    addItem() {\n      state.list = [...state.list, state.newItemName];\n    },\n  });\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <input\n          value={state.newItemName}\n          onChange={(event) => (state.newItemName = event.target.value)}\n        />\n      </Show>\n      <div css={{ padding: '10px' }}>\n        <button onClick={() => state.addItem()}>Add list item</button>\n        <div>\n          <For each={state.list}>{(item) => <div>{item}</div>}</For>\n        </div>\n      </div>\n    </div>\n  );\n}\n```\n\n## Components\n\nMitosis is component-driven like most modern frontend frameworks. Each Mitosis component should be in its own file and be the single default export. They are simple functions that return JSX elements\n\n```tsx\nexport default function MyComponent() {\n  return <div>Hello world!</div>;\n}\n```\n\n## State\n\nState is provided by the `useStore` hook. Currently, the name of this value must be `state` like below:\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    name: 'Steve',\n  });\n\n  return (\n    <div>\n      <h2>Hello, {state.name}</h2>\n      <input\n        onInput={(event) => {\n          state.name = event.target.value;\n        }}\n        value={state.name}\n      />\n    </div>\n  );\n}\n```\n\nIf the initial state value is a computed value (whether based on `props` or the output of some function), then you cannot inline it. Instead, use a getter method:\n\n```tsx\nexport default function MyComponent(props) {\n  const state = useStore({\n    _name: '',\n    get name() {\n      // Use the state value if set, otherwise the prop value if set,\n      // otherwise the default value of 'Steve'\n      return state._name || props.name || 'Steve';\n    },\n    setName(name: string) {\n      state._name = name;\n    },\n  });\n\n  return (\n    <div>\n      <h2>Hello, {state.name}</h2>\n      <input onInput={(event) => state.setName(event.target.value)} value={state.name} />\n    </div>\n  );\n}\n```\n\nComponents automatically update when state values change\n\n### useState\n\nAlternatively, you can use the `useState` hook to create a single piece of state\n\n```tsx\nexport default function MyComponent() {\n  const [name, setName] = useState('Steve');\n\n  return (\n    <div>\n      <h2>Hello, {name}</h2>\n      <input onInput={(event) => setName(event.target.value)} value={name} />\n    </div>\n  );\n}\n```\n\n## Methods\n\nThe state object can also take methods.\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    name: 'Steve',\n    updateName(newName) {\n      state.name = newName;\n    },\n  });\n\n  return (\n    <div>\n      <h2>Hello, {state.name}</h2>\n      <input onInput={(event) => state.updateName(event.target.value)} value={state.name} />\n    </div>\n  );\n}\n```\n\n## Styling\n\n### `css-in-js`\n\nStyling is done via the `css` prop on DOM elements and components. It takes CSS properties in `camelCase` (like the `style` object on DOM elements) and properties as valid CSS strings\n\n```tsx\nexport default function CSSExample() {\n  return <div css={{ marginTop: '10px', color: 'red' }} />;\n}\n```\n\nYou can also include media queries as keys, with values as style objects\n\n```tsx\nexport default function ResponsiveExample() {\n  return (\n    <div\n      css={{\n        marginTop: '10px',\n        '@media (max-width: 500px)': {\n          marginTop: '0px',\n        },\n      }}\n    />\n  );\n}\n```\n\nYou can also use the [useStyle](/docs/hooks#usestyle) hook to add styles to a component\n\n### `import .css file`\n\nIn general all imports inside a Mitosis component are passed to the generated output file.\nTherefore, you can import a `.css` file like this:\n\n````css\n/* ./src/my-component/my-component.css */\n\n\n.my-component{\n    margin-top: 10px;\n}\n````\n\n```tsx\n/* ./src/my-component/my-component.lite.tsx */\nimport \"./my-component.css\";\n\nexport default function CSSExample() {\n  return <div class=\"my-component\" />;\n}\n```\n\n> **Note:** The Mitosis cli will only move `.ts` and `.js` files to the output directory.\n> You need to move the `.css` file by your own.\n\n### `headless components`\n\nAnother approach is to develop your components without a fixed style inside the Mitosis component, a.k.a. \"headless components\".\n\nYou can do so by loading the styles inside the consuming webapp via a bundler (vite, webpack, etc.) or with a head stylesheet `<link rel=\"stylesheet\" ...`.\nYou can then use `class` or `data-*` attributes inside your Mitosis component to apply those styles:\n\n```tsx\n/* ./src/my-component/my-component.lite.tsx */\nexport default function CSSExample() {\n  return <div class=\"my-component\" />;\n}\n```\n\n## `class` vs `className`\n\nMitosis prefers that you use `class` to provide class name strings, but it also allows you to provide `className`. If both are used in the same component, it will attempt to merge the two. We recommend that you only use one (preferrably `class`, as that's what is internally preferred by Mitosis).\n\n## Control flow\n\nControl flow in Builder is static like [Solid](https://github.com/ryansolid/solid). Instead of using freeform javascript like in React, you must use control flow components like `<Show>` and `<For>`\n\n### Show\n\nUse `<Show>` for conditional logic. It takes a single `when` prop for the condition to match. When the condition is truthy, the children will render; otherwise, they will not. You can additionally provide an `else` prop for the content to be rendered in case the condition is falsy.\n\n```tsx\nexport default function MyComponent(props) {\n  return (\n    <>\n      <Show when={props.showContents} else={<span {...props.attributes}>{props.text}</span>}>\n        Hello, I may or may not show!\n      </Show>\n      ;\n    </>\n  );\n}\n```\n\n### For\n\nUse `<For>` for repeating items, for instance mapping over an array. It takes a singular `each` prop for the array to iterate over. This component takes a singular function as a child that it passes the relevant item and index to, like below:\n\n```tsx\nexport default function MyComponent(props) {\n  const state = useStore({\n    myArray: [1, 2, 3],\n  });\n  return <For each={state.myArray}>{(theArrayItem, index) => <div>{theArrayItem}</div>}</For>;\n}\n```\n\n### Children\n\nWe use the standard method for passing children with `props.children`\n\n```tsx\nexport default function MyComponent(props) {\n  return <div>{props.children}</div>;\n}\n```\n\n<details>\n  <summary>For <strong>Web Component</strong> you need to use ShadowDom metadata</summary>\n\n```tsx\nimport { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  isAttachedToShadowDom: true,\n});\nexport default function MyComponent(props) {\n  return <div>{props.children}</div>;\n}\n```\n\n</details>\n\n> **Note**: You cannot directly iterate over the children prop. It is a special property intended for rendering like this:\n\n```jsx\n<div>{props.children}</div>\n````\n\nMany frameworks do not support manipulating or iterating over it directly, unlike frameworks such as React or Vue.\n\n### Fragment\n\nThe `Fragment` component accepts the `key` prop, which is typically used when the `Fragment` is the direct child of a `For` loop component.\n\n````tsx\nimport { For, Fragment } from '@builder.io/mitosis';\n\nexport default function BasicForFragment() {\n  return (\n    <div>\n      <For each={['a', 'b', 'c']}>\n        {(option) => (\n          <Fragment key={`key-${option}`}>\n            <span>{option}</span>\n          </Fragment>\n        )}\n      </For>\n    </div>\n  );\n}\n\n````\n\n### Slot\n\nWhen you want to register a named slot you do so using a prop.\n\n```tsx\n<div>\n  <Layout\n    top={<NavBar/>}\n    left={<Sidebar/>}\n    center={<Content/>}\n  />\n    anything else\n  </Layout>\n</div>\n```\n\nIn this example we are registering `top`, `left`, and `center` for the `Layout` component to project.\n\nIf the `Layout` component was also a Mitosis component then we simply use the reference in the props.\n\n```tsx\nexport default function Layout(props) {\n  return (\n    <div className=\"layout\">\n      <div className=\"top\">{props.top}</div>\n      <div className=\"left\">{props.left}</div>\n      <div className=\"center\">{props.center}</div>\n      {props.children}\n    </div>\n  );\n}\n```\n\nor use the Slot component provided by component\n\n```tsx\nimport { Slot } from '@builder.io/mitosis';\n\nexport default function Layout(props) {\n  return (\n    <div className=\"layout\">\n      <div className=\"top\">\n        <Slot name=\"top\" />\n      </div>\n      <div className=\"left\">\n        <Slot name=\"left\" />\n      </div>\n      <div className=\"center\">\n        <Slot name=\"center\" />\n      </div>\n      <Slot />\n    </div>\n  );\n}\n```\n\nFor vue component a `slot` prop will be compiled into named slot\n\n```html\n<div class=\"layout\">\n  <div class=\"top\"><slot name=\"top\" /></div>\n  <div class=\"left\"><slot name=\"left\" /></div>\n  <div class=\"center\"><slot name=\"center\" /></div>\n  <slot />\n</div>\n}\n```\n\nMitosis compiles one component at a time and is only concerned with outputting the correct method for each framework. For the two examples above, here are the angular and html outputs.\n\n```html\n<div>\n  <layout>\n    <sidebar left></sidebar>\n    <nav-bar top></nav-bar>\n    <content center></content>\n    anything else\n  </layout>\n  <div></div>\n</div>\n```\n\n```tsx\n@Component({\n  selector: 'layout',\n  template: `\n    <div class=\"layout\">\n      <div class=\"top\">\n        <ng-content select=\"[top]\"></ng-content>\n      </div>\n      <div class=\"left\">\n        <ng-content select=\"[left]\"></ng-content>\n      </div>\n      <div class=\"center\">\n        <ng-content select=\"[center]\"></ng-content>\n      </div>\n      <ng-content></ng-content>\n    </div>\n  `,\n})\nclass LayoutComponent {}\n```\n\nIn webcomponent you need to use ShadowDom metadata for named slots\n\n<details>\n  <summary>For <strong>Web Component</strong> you need to use ShadowDom metadata named slots</summary>\n\n```tsx\nimport { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({\n  isAttachedToShadowDom: true,\n});\nexport default function Layout(props) {\n  return (\n    <div className=\"layout\">\n      <div className=\"top\">{props.top}</div>\n      <div className=\"left\">{props.left}</div>\n      <div className=\"center\">{props.center}</div>\n      {props.children}\n    </div>\n  );\n}\n```\n\n</details>\n\n### Default Slot content\n\n```tsx\nimport { Slot } from '@builder.io/mitosis';\n\nexport default function Layout(props) {\n  return (\n    <div className=\"layout\">\n      <div className=\"top\">\n        <Slot name=\"top\">Top default</Slot>\n      </div>\n      <div className=\"left\">\n        <Slot name=\"left\" />\n      </div>\n      <div className=\"center\">\n        <Slot name=\"center\" />\n      </div>\n      <Slot>Default child</Slot>\n    </div>\n  );\n}\n```\n"
  },
  {
    "path": "packages/docs/src/routes/docs/configuration/index.mdx",
    "content": "---\ntitle: Configuration - Mitosis\n---\n\n# Configuration\n\n## Mitosis Configuration\n\nIn the root of the project, from which you run mitosis,\nyou can add a `mitosis.config.js` file that will be read by Mitosis.\nYou can also specify a config file by option: `--config=<file>`.\nAn example might look like this:\n\n````js react-options.cjs\n// react-options.cjs\n\n/** @type {import('@builder.io/mitosis').ToReactOptions} */\nmodule.exports = {\n\ttypescript: true\n};\n````\n\n````js vue-options.cjs\n// vue-options.cjs\n\n/** @type {import('@builder.io/mitosis').ToVueOptions} */\nmodule.exports = {\n\ttypescript: true\n};\n````\n\n````js mitosis-config.cjs\n// mitosis-config.cjs\nconst react = require('./react-options.cjs');\nconst vue = require('./vue-options.cjs');\n\n/** @type {import('@builder.io/mitosis').MitosisConfig} */\nmodule.exports = {\n\tfiles: 'src/**',\n\ttargets: ['vue', 'react'],\n\toptions: {\n\t\treact,\n\t\tvue\n\t}\n};\n````\n\n\nThe `mitosis.config.js` file uses the [MitosisConfig](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/types/config.ts#L22) type:\n\n```tsx\nexport type MitosisConfig = {\n  /**\n   * Apply common options to all targets\n   */\n  commonOptions?: Omit<BaseTranspilerOptions, 'experimental'>;\n  /**\n   * List of targets to compile to.\n   */\n  targets: Target[];\n  /**\n   * The output directory. Defaults to `output`.\n   */\n  dest?: string;\n  /**\n   * globs of files to transpile. Defaults to `src/*`.\n   */\n  files?: string | string[];\n\n  /**\n   * Optional list of globs to exclude from transpilation.\n   */\n  exclude?: string[];\n  /**\n   * The directory where overrides are stored. The structure of the override directory must match that of the source code,\n   * with each target having its own sub-directory: `${overridesDir}/${target}/*`\n   * Defaults to `overrides`.\n   */\n  overridesDir?: string;\n  /**\n   * Dictionary of per-target configuration. For each target, the available options can be inspected by going to\n   * `packages/core/src/generators/xxx/types.ts`.\n   *\n   * Example:\n   *\n   * ```js\n   * options: {\n   *   vue: {\n   *     prettier: false,\n   *     namePrefix: (path) => path + '-my-vue-code',\n   *   },\n   *   react: {\n   *     stateType: 'builder';\n   *     stylesType: 'styled-jsx'\n   *     plugins: [myPlugin]\n   *   }\n   * }\n   * ```\n*/\noptions: Partial<GeneratorOptions>;\n/**\n   * Configure a custom parser function which takes a string and returns MitosisJSON\n   * Defaults to the JSXParser of this project (src/parsers/jsx)\n*/\nparser?: (code: string, path?: string) => MitosisComponent | Promise<MitosisComponent>;\n\n/**\n   * Configure a custom function that provides the output path for each target.\n   * If you provide this function, you must provide a value for every target yourself.\n*/\ngetTargetPath: ({ target }: { target: Target }) => string;\n\n/**\n   * Provide options to the parser.\n*/\nparserOptions?: {\n  jsx: Partial<ParseMitosisOptions> & {\n    /**\n      * Path to your project's `tsconfig.json` file. Needed for advanced types parsing (e.g. signals).\n    */\n      tsConfigFilePath?: string;\n    };\n  };\n};\n```\n\n### Targets\n\nThe `Targets` type can be any one of, or an array of the following strings:\n\n```tsx\ntype targets =\n  | 'alpine'\n  | 'angular'\n  | 'customElement'\n  | 'html'\n  | 'mitosis'\n  | 'liquid'\n  | 'react'\n  | 'reactNative'\n  | 'solid'\n  | 'svelte'\n  | 'swift'\n  | 'template'\n  | 'webcomponent'\n  | 'vue'\n  | 'stencil'\n  | 'qwik'\n  | 'marko'\n  | 'preact'\n  | 'lit'\n  | 'rsc'\n  | 'taro';\n```\n\n> **Note** that you can configure each target generator individually, providing [plugins](/docs/customizability/#plugins) on a case-by-case basis.\n\n### Common options\n\nThe type `BaseTranspilerOptions` for `commonOptions` can be an object like this:\n\n````ts\n\nexport interface BaseTranspilerOptions {\n  /**\n   * Runs `prettier` on generated components\n   */\n  prettier?: boolean;\n  /**\n   * Mitosis Plugins to run during codegen.\n   */\n  plugins?: Plugin[];\n  /**\n   * Enable `typescript` output\n   */\n  typescript?: boolean;\n  /**\n   * Preserves explicit filename extensions in import statements.\n   */\n  explicitImportFileExtension?: boolean;\n}\n````\n\n\n### TypeScript configuration\n\nTypeScript includes a full-fledged JSX compiler. Add the following configuration to your tsconfig.json to transpile JSX to mitosis-compatible JavaScript:\n\n```js\n{\n  \"compilerOptions\": {\n    \"jsx\": \"preserve\",\n    \"jsxImportSource\": \"@builder.io/mitosis\",\n    // other config here\n  }\n}\n```\n\nFor an example of TS configuration, look at our [basic example](https://github.com/BuilderIO/mitosis/tree/main/examples/basic/tsconfig.json)'s `tsconfig.json`.\n\n### Overview configurations\n\nThere are ``options`` for targets which will affect all components for the generated target.\nFurthermore, there are `useMetadata` options which affect only a single component.\nFor more information check out the `types.ts` file for each generator:\n\n- [alpine](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/alpine/types.ts)\n- [angular](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/angular/types.ts)\n- [builder](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/builder/types.ts)\n- [html](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/html/types.ts)\n- [liquid](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/liquid/types.ts)\n- [lit](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/lit/types.ts)\n- [marko](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/marko/types.ts)\n- [mitosis](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/mitosis/types.ts)\n- [qwik](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/qwik/types.ts)\n- [react](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/react/types.ts)\n- [react-native](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/react-native/types.ts)\n- [rsc](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/rsc/types.ts)\n- [solid](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/solid/types.ts)\n- [stencil](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/stencil/types.ts)\n- [svelte](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/svelte/types.ts)\n- [swift](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/swift/types.ts)\n- [taro](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/taro/types.ts)\n- [template](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/template/types.ts)\n- [vue](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/generators/vue/types.ts)"
  },
  {
    "path": "packages/docs/src/routes/docs/context/index.mdx",
    "content": "---\ntitle: Context - Mitosis\n---\n\n# Context\n\nMitosis Contexts must be:\n\n- created in their own file\n- the file name _must_ end with `context.lite.ts`\n- the default export must be a function that returns a context object\n\nExample:\n\n```ts\n// simple.context.lite.ts\nimport { createContext } from '@builder.io/mitosis';\n\nexport default createContext({\n  foo: 'bar',\n  get fooUpperCase() {\n    return this.foo.toUpperCase();\n  },\n  someMethod() {\n    return this.fooUpperCase.toLowercase();\n  },\n  content: null,\n  context: {} as any,\n  state: {},\n});\n```\n\nThen you can use it in your components:\n\n```tsx\nimport { setContext, useContext } from '@builder.io/mitosis';\nimport Context from './simple.context.lite';\n\nexport default function ComponentWithContext(props: { content: string }) {\n  // you can access the context using `useContext`\n  const foo = useContext(Context);\n\n  // you can use `setContext` to provide a new value for the context\n  setContext(Context, {\n    foo: 'baz',\n    content() {\n      return props.content;\n    },\n  });\n\n  return (\n    // you can also use `Context.provider` to provide a new value for the context\n    <Context.Provider value={{ bar: 'baz' }}>{foo.value}</Context.Provider>\n  );\n}\n```\n"
  },
  {
    "path": "packages/docs/src/routes/docs/customizability/index.mdx",
    "content": "---\ntitle: Customization - Mitosis\n---\n\n# Customization\n\nWhen building Mitosis components, you might sometimes have unique and special needs. If you want to transform your Mitosis-generated output to fit your needs, by doing things like:\n\n- add a special import statement at the top of each mitosis file\n- remove a specific style attribute for one given target (for example, if you want your `react-native` output to omit a specific styling attribute that you rley on elsewhere.)\n- modify only _some_ of your components to be dynamically imported\n\nThis (and much more) is possible thanks to Mitosis' powerful plugin system.\n\n## Plugins\n\nIn your directory's `mitosis.config.js`, you can provide a `plugins` array for each code generator. You have many different kinds of plugins:\n\n```tsx\nexport type Plugin = {\n  name?: stirng;\n  order?: number; // Sort plugins by number, no matter the position of the array\n  build?: {\n    // Happens before build\n    pre?: (targetContext: TargetContext) => void | Promise<void>;\n    // Happens after build\n    post?: (\n      targetContext: TargetContext,\n      files?: {\n        componentFiles: OutputFiles[];\n        nonComponentFiles: OutputFiles[];\n      },\n    ) => void | Promise<void>;\n  };\n  json?: {\n    // Happens before any modifiers\n    pre?: (json: MitosisComponent) => MitosisComponent | void;\n    // Happens after built in modifiers\n    post?: (json: MitosisComponent) => MitosisComponent | void;\n  };\n  code?: {\n    // Happens before formatting\n    pre?: (code: string, json: MitosisComponent) => string;\n    // Happens after formatting\n    post?: (code: string, json: MitosisComponent) => string;\n  };\n};\n```\n\nWe run plugins at 4 different points:\n\n- preJSON: before any default modifiers run on the Mitosis JSON\n- postJSON: after all built-in modifiers run on the Mitosis JSON\n- preCode: before any formatting runs on the Mitosis output (we format using `prettier`)\n- postCode: after any formatting runs on the Mitosis output (we format using `prettier`)\n\nThe JSON plugins receive the Mitosis component's full JSON object as an argument. Similarly, the code plugins receive the code string.\n\nWe even use plugins internally to generate Mitosis components! Here's an example of our [react-native plugin](https://github.com/BuilderIO/mitosis/blob/328572740bb3ff2f66924d431dc6360f5f4e0c62/packages/core/src/generators/react-native.ts#L82-L118).\n\nYou will see that we traverse the JSON nodes, and for each MitosisNode, we remove `class` and `className` values and bindings. That's because React-Native does not support class-names on mobile.\n\n## useMetadata\n\nWhat happens if you want a plugin to only apply to a specific set of components?\nOr if you'd like to provide some metadata for your plugin,\nand that metadata will depend on which component is being compiled?\n\nThis is where our `useMetadata` hook comes in handy.\nAll you need to do is import and use the hook\n(you can use it anywhere in your mitosis component file, even at the top root level!):\n\n```tsx\nimport { useMetadata } from '@builder.io/mitosis';\n\nuseMetadata({ mySpecialComponentType: 'ABC' });\n\nexport default function SmileReviews(props: SmileReviewsProps) {\n  return <div>{/**/}</div>;\n}\n```\n\nThe metadata will be stored in your mitosis component's JSON\n, under `json.meta.useMetadata.mySpecialComponentType`.\nYou can then use it in your JSON pre/post plugins:\n\n```tsx\nconst plugin = {\n  json: {\n    pre: (json: MitosisComponent) => {\n      const myComponentType = json.meta.useMetadata?.mySpecialComponentType;\n      if (myComponentType === 'ABC') {\n        //...\n      }\n    },\n  },\n};\n```\n\nCheck the [example](https://github.com/BuilderIO/mitosis/tree/main/examples/metadata/src/components/metadata.lite.tsx) to see a complex `useMetadata` usage.\n\n## Component JSON\n\nThe way Mitosis' engine works is:\n\n- you write a `.lite.jsx` or `.lite.tsx` component\n- the mitosis JSX parser converts it to a `MitosisComponent` JSON\n- that JSON is fed to the generator(s) of your choice, which provide it to the plugins.\n\nFor more information on what the JSON contains, check out the documented types:\n\n- [MitosisComponent](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/types/mitosis-component.ts)\n- [MitosisNode](https://github.com/BuilderIO/mitosis/blob/main/packages/core/src/types/mitosis-node.ts): Each `MitosisComponent` will have multiple `MitosisNode` under `component.children`. Each node represents a DOM/JSX node\n\n\n## Example\n\nThis is an example what you could do with a plugin.\nIn this example we want to create a documentation for one of our components, based on the target.\n\nThe example component `button.docs.lite.tsx`:\n\n````tsx\n/* button.docs.lite.tsx */\nimport { useMetadata } from '@builder.io/mitosis';\nimport MyButton from './my-button.lite';\n\nuseMetadata({\n  docs: {\n    name: \"This is the name of my button\"\n  },\n});\n\nexport default function ButtonDocs(props: any) {\n  return <MyButton name={props.name}></MyButton>;\n}\n````\n\nThe mitosis config `mitosis.config.cjs`:\n\n````js\n/**\n * @type {import('@builder.io/mitosis'.MitosisConfig)}\n */\nmodule.exports = {\n  files: 'src/**',\n  targets: [\n    'angular',\n    'react',\n    'vue'\n  ],\n  commonOptions: {\n    typescript: true,\n    explicitBuildFileExtensions: {\n      '.md': /.*(docs\\.lite\\.tsx)$/g\n    },\n    plugins: [\n      () => ({\n        code: {\n          post: (code, json) => {\n            if (json.meta?.useMetadata?.docs) {\n              return (\n                `# ${json.name} - ${json.pluginData?.target}\\n\\n` +\n                `${JSON.stringify(json.meta?.useMetadata?.docs)}\\n\\n` +\n                'This is the content:\\n' +\n                '````\\n' +\n                code +\n                '\\n````'\n              );\n            }\n\n            return code;\n          }\n        }\n      })\n    ]\n  }\n};\n````\n\nWe generate a new `button.docs.md` with a content based on the target, e.g. `vue`:\n\n````markdown\n# ButtonDocs - vue\n\n{\"name\":\"This is the name of my button\"}\n\nThis is the content:\n\\````\n<template>\n  <MyButton :name=\"name\"></MyButton>\n</template>\n\n<script setup lang=\"ts\">\n  import MyButton from \"./my-button.vue\";\n\n  const props = defineProps([\"name\"]);\n</script>\n\n\\````\n````\n\n> **Note:** We use `commonOptions` here to apply the plugin to every target.\n>\n> We use `explicitBuildFileExtensions` to transform the file extension always to `.md`,\notherwise you would get the default extension for your target. Like `.vue` for vue or `.tsx` for react."
  },
  {
    "path": "packages/docs/src/routes/docs/figma/index.mdx",
    "content": "---\ntitle: Syncing design systems from Figma - Mitosis\n---\n\n# Syncing design systems from Figma\n\nYou can leverage Mitosis in conjunction with [Fusion](https://www.builder.io/m/design-to-code) to efficiently translate Figma designs into code.\n\nFusion is an AI-powered Figma to code toolchain that leverages AI to swiftly and accurately convert Figma designs to clean and responsive code.\n\n<video\n  width=\"752\"\n  height=\"428\"\n  autoplay\n  playsInline\n  muted\n  loop\n  src=\"https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2F65d28d32b11d4577b116d6853dd72ce8%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=65d28d32b11d4577b116d6853dd72ce8&alt=media&optimized=true\"\n/>\n\nTo use this integration:\n\n1. In Figma, select the layer you wish to convert and use the Fusion plugin.\n2. Click the **Generate Code** button to start the conversion.\n3. Set Mitosis as the target framework for the generated code.\n4. Copy the code and paste it into a file within the `library/src` directory of your Mitosis project. Mitosis will then automatically adapt this code to your selected frameworks, maintaining a consistent design system across multiple platforms.\n\nThis method ensures that developers can work within a unified framework while supporting various technology stacks.\n\nLearn more about [Fusion](https://www.builder.io/fusion) or [talk to us](https://www.builder.io/m/demo?utm_source=builder-docs-mitosis&utm_campaign=builder-docs&utm_medium=website) for a tailored demo.\n"
  },
  {
    "path": "packages/docs/src/routes/docs/gotchas/index.mdx",
    "content": "---\ntitle: Gotchas - Mitosis\n---\n\n# Gotchas and limitations\n\nWe have put together ESLint rules that will warn you when encountering these limitations (and many more). The rules themselves are a great source of documentation. Make sure to read up on them [here](https://github.com/BuilderIO/mitosis/tree/main/packages/eslint-plugin/docs/rules)\n\n### Defining variables with the same name as a state property will shadow it\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    foo: 'bar',\n\n    doSomething() {\n      const foo = state.foo;\n    },\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { useState } from 'react';\n\nexport default function MyComponent(props) {\n  const [foo, setFoo] = useState(() => 'bar');\n  function doSomething() {\n    const foo = foo;\n  }\n\n  return <></>;\n}\n```\n\n**Work around**\n\nUse a different variable name\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    foo: 'bar',\n\n    doSomething() {\n      const foo_ = state.foo;\n    },\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { useState } from 'react';\n\nexport default function MyComponent(props) {\n  const [foo, setFoo] = useState(() => 'bar');\n  function doSomething() {\n    const foo_ = foo;\n  }\n\n  return <></>;\n}\n```\n\n### Async methods can't be defined on \"state\"\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    async doSomethingAsync(event) {\n      //  ^^^^^^^^^^^^^^^^^^^^^^^^^\n      //  Fails to parse this line\n      return;\n    },\n  });\n}\n```\n\n**Work around**\n\nYou can either:\n\na. Use promises in this context instead or\nb. Use an immediately invoked async function\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({\n    doSomethingAsync(event) {\n      void (async function () {\n        const response = await fetch(); /* ... */\n      })();\n    },\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nexport default function MyComponent(props) {\n  function doSomethingAsync(event) {\n    void (async function () {\n      const response = await fetch();\n    })();\n  }\n\n  return <></>;\n}\n```\n\n### Can't assign \"params\" to \"state\"\n\nJSX lite parsing fails on referencing `props` in a call to `useState`.\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent(props) {\n  const state = useStore({ text: props.text });\n  //                             ^^^^^^^^^^\n  //                             Error\n}\n```\n\n**Work around**\n\nUse _onMount_:\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent(props) {\n  const state = useStore({ text: null });\n\n  onMount(() => {\n    state.text = props.text;\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { useState } from 'react';\n\nexport default function MyComponent(props) {\n  const [text, setText] = useState(() => null);\n\n  useEffect(() => {\n    setText(props.text);\n  }, []);\n\n  return <></>;\n}\n```\n\n### Can't assign function output to \"state\"\n\nJSX lite parsing fails if a state value isn't valid JSON\n\nIf the initial state value is a computed value (whether based on `props` or the output of some function), then you cannot inline it. Instead, use a getter method:\n\n_Mitosis input_\n\n```tsx\nimport { kebabCase } from 'lodash';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    name: kebabCase('Steve'),\n    //    ^^^^^^^^^\n    //    Error\n  });\n\n  return (\n    <div>\n      <h2>Hello, {state.name}</h2>\n    </div>\n  );\n}\n```\n\n**Work around**\n\nUse a getter method:\n\n_Mitosis input_\n\n```tsx\nimport { kebabCase } from 'lodash';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    get name() {\n      return kebabCase('Steve');\n    },\n  });\n\n  return (\n    <div>\n      <h2>Hello, {state.name}</h2>\n    </div>\n  );\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { kebabCase } from 'lodash';\n\nexport default function MyComponent(props) {\n  function name() {\n    return kebabCase('Steve');\n  }\n\n  return (\n    <div>\n      <h2>\n        Hello,\n        {name()}\n      </h2>\n    </div>\n  );\n}\n```\n\n### Can't destructure assignment from state\n\nDestructuring assignment from `state` isn't currently supported, and is\nignored by the compiler.\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({ foo: '1' });\n\n  onMount(() => {\n    const { foo } = state;\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { useState } from 'react';\n\nexport default function MyComponent(props) {\n  const [foo, setFoo] = useState(() => '1');\n\n  useEffect(() => {\n    const { foo } = state;\n  }, []);\n\n  return <></>;\n}\n```\n\n**Work around**\n\nUse standard assignment instead for now.\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent() {\n  const state = useStore({ foo: '1' });\n\n  onMount(() => {\n    const foo = state.foo;\n  });\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { useState } from 'react';\n\nexport default function MyComponent(props) {\n  const [foo, setFoo] = useState(() => '1');\n\n  useEffect(() => {\n    const foo = foo;\n  }, []);\n\n  return <></>;\n}\n```\n\n### Can't set default props value with destructuring\n\nSetting default props value with destructuring isn't currently supported, and is\nignored by the compiler.\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent({ color = 'blue' }) {\n  return <div>{color}</div>;\n}\n```\n\n_Mitosis output_\n\n```tsx\nexport default function MyComponent(props) {\n  return <div>{color}</div>;\n}\n```\n\n**Work around**\n\ndefine a local variable\n\n_Mitosis input_\n\n```tsx\nconst DEFAULT_VALUES = {\n  color: 'blue',\n};\nexport default function MyComponent(props) {\n  return <div>{props.color || DEFAULT_VALUES.color}</div>;\n}\n```\n\n_Mitosis output_\n\n```tsx\nconst DEFAULT_VALUES = {\n  color: 'blue',\n};\nexport default function MyComponent(props) {\n  return <div>{props.color || DEFAULT_VALUES.color}</div>;\n}\n```\n\n### Can't destructure props as ...rest\n\n`...rest` props parameter isn't currently supported\n\n_Mitosis input_\n\n```tsx\nexport default function MyComponent({ children, ...rest }) {\n  return <div {...rest}>{children}</div>;\n}\n```\n\n_Mitosis output_\n\n```tsx\nexport default function MyComponent(props) {\n  return <div {...rest}>{props.children}</div>;\n}\n```\n"
  },
  {
    "path": "packages/docs/src/routes/docs/hooks/index.mdx",
    "content": "---\ntitle: Hooks - Mitosis\n---\n\n# Hooks\n\n## useStore and useState\n\nSee the [State](/docs/components#state) section for more information on state handling.\n\n## useRef\n\nUse the `useRef` hook to hold a reference to a rendered DOM element.\n\n```tsx\nimport { Show, useRef, useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const state = useStore({\n    name: 'Steve',\n    onBlur() {\n      // Maintain focus\n      inputRef.focus();\n    },\n    get lowerCaseName() {\n      return state.name.toLowerCase();\n    },\n  });\n\n  return (\n    <div>\n      <Show when={props.showInput}>\n        <input\n          ref={inputRef}\n          css={{ color: 'red' }}\n          value={state.name}\n          onBlur={() => state.onBlur()}\n          onChange={(event) => (state.name = event.target.value)}\n        />\n      </Show>\n      Hello {state.lowerCaseName}! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  );\n}\n```\n\n> **Note:** Don't name your `useRef` hook \"ref\" like `const ref = useRef<HTMLInputElement>(null);`.\n> This would be a conflict with the `ref` from [Vue](https://vuejs.org/api/reactivity-core.html#ref).\n\n### forwardRef for React\n\n<details>\n\nIn React you may need to wrap your component with `forwardRef` to provide direct access to an element (`input` for example). You can do this by using using a `prop` value as the `ref`\n\n_Mitosis input_\n\n```tsx\nexport default function MyInput(props) {\n  return <input ref={props.inputRef} />;\n}\n```\n\n_Mitosis output_\n\n```tsx\nimport { forwardRef } from 'react';\n\nexport default forwardRef(function MyInput(props, inputRef) {\n  return <input ref={inputRef} />;\n});\n```\n\n<hr />\n</details>\n\n## useStyle\n\nThe useStyle hook can be used to add extra CSS to your component.\n\n```tsx\nimport { useStyle } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  useStyle(`\n    button {\n      font-size: 12px;\n      outline: 1px solid black;\n    }\n  `);\n\n  return (\n    <button\n      css={{\n        background: 'blue',\n        color: 'white',\n      }}\n      type=\"button\"\n    >\n      Button\n    </button>\n  );\n}\n```\n\n`useStyle` can also be used outside of the component's body:\n\n```tsx\nimport { useStyle } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  return <button type=\"button\">Button</button>;\n}\n\nuseStyle(`\n  button {\n    background: blue;\n    color: white;\n    font-size: 12px;\n    outline: 1px solid black;\n  }\n`);\n```\n\n## onInit\n\nThe `onInit` hook is the best place to put custom code to execute before the component mounts. It is executed before the `onMount` hook.\n\n```tsx\nimport { onInit, onMount } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  onInit(() => {\n    alert('First: I have init!');\n  });\n\n  onMount(() => {\n    alert('Second: I have mounted!');\n  });\n\n  return <div>Hello world</div>;\n}\n```\n\n## onMount\n\nThe onMount hook is the best place to put custom code to execute once the component mounts.\n\n```tsx\nimport { onMount } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  onMount(() => {\n    alert('I have mounted!');\n  });\n\n  return <div>Hello world</div>;\n}\n```\n\n## onUnMount\n\nThe onUnMount hook is the best place to put any cleanup you need to do when a component is removed\n\n```tsx\nimport { onUnMount } from '@builder.io/mitosis';\n\nexport default function MyComponent() {\n  onUnMount(() => {\n    alert('I have been removed!');\n  });\n\n  return <div>Hello world</div>;\n}\n```\n\n## onUpdate\n\nThe onUpdate hook is the best place to put custom code that will either:\n\n- if no `dependencies` array is provided: execute on every render\n- if a non-empty `dependencies` array is provided: execute whenever any value in `dependencies` changes\n\n```tsx\nimport { onUpdate, useStore } from '@builder.io/mitosis';\n\nexport default function OnUpdateWithDeps() {\n  const state = useStore({\n    a: 'a',\n    b: 'b',\n  });\n\n  onUpdate(() => {\n    console.log('Runs on every update/rerender');\n  });\n\n  onUpdate(() => {\n    console.log('Runs when a or b changes', state.a, state.b);\n  }, [state.a, state.b]);\n\n  return <div />;\n}\n```\n\n## useDefaultProps\n\nThe `useDefaultProps` hook sets default values for a component's props:\n\n```tsx\nimport { useDefaultProps } from '@builder.io/mitosis';\n\nexport default function Button(props) {\n  useDefaultProps({\n    text: 'default text',\n    link: 'https://builder.io/',\n    openLinkInNewTab: false,\n    onClick: () => {\n      console.log('hi');\n    },\n  });\n\n  return (\n    <div>\n      <a href={props.link} target={props.openLinkInNewTab ? '_blank' : undefined}>\n        {props.text}\n      </a>\n      <button onClick={(event) => props.onClick(event)} type=\"button\">\n        {props.buttonText}\n      </button>\n    </div>\n  );\n}\n```\n\nYou can also use `useDefaultProps` outside of the component body:\n\n```tsx\nimport { useDefaultProps } from '@builder.io/mitosis';\n\nuseDefaultProps({\n  text: 'default text',\n});\n\nexport default function Button(props) {\n  return <span>{props.text}</span>;\n}\n```\n\n\n## useTarget\n\nThe `useTarget` hook returns a variable or runs a function based on the target\n\n### Get variable based on target\n\n```tsx\nimport { useTarget, useStore } from '@builder.io/mitosis';\n\nexport default function MyName() {\n  const state = useStore({\n    get name() {\n      const prefix = useTarget<string | number | boolean>({\n        default: 'Default str',\n        react: 123,\n        angular: true,\n        vue: 'v',\n      });\n      return prefix + 'foo';\n    }\n  });\n\n  return (\n    <div>{state.name}</div>\n  );\n}\n```\n\n`default` target is the fallback if the correct target can't be found in the object you pass into `useTarget`.\n\n\n### Run function based on target\n\n```tsx\nimport { onMount, useTarget } from '@builder.io/mitosis';\n\nexport default function MyLogger() {\n     onMount(() => {\n        useTarget({\n          react: () => {\n            console.log('react');\n          },\n          qwik: () => {\n            console.log('qwik');\n          },\n          default: () => {\n            console.log('the rest');\n          },\n        });\n    });\n\n  return <span></span>;\n}\n```\n"
  },
  {
    "path": "packages/docs/src/routes/docs/index.tsx",
    "content": "import { RequestHandler } from '@builder.io/qwik-city';\n\nexport const onGet: RequestHandler = async ({ redirect }) => {\n  throw redirect(302, '/docs/overview');\n};\n"
  },
  {
    "path": "packages/docs/src/routes/docs/layout.tsx",
    "content": "import { component$, Slot } from '@builder.io/qwik';\nimport { useLocation, useNavigate } from '@builder.io/qwik-city';\nimport { RightSidebar } from './right-sidebar';\nimport Sidebar from './sidebar';\n\nexport default component$(() => {\n  const nav = useNavigate();\n  const location = useLocation();\n\n  return (\n    <div class=\"flex items-start max-md:flex-col gap-8 max-md:mt-4\">\n      <div class=\"border-primary border-r min-h-screen max-md:min-h-0 border-opacity-50 max-md:border-r-0 sticky top-20 max-md:top-[calc(4rem-2px)] max-md:self-stretch max-md:-m-4 max-md:px-4 max-md:bg-purple-990 max-md:bg-opacity-80 max-md:backdrop-blur max-md:!z-50\">\n        <Sidebar class=\"mt-24 max-md:mt-0\" />\n      </div>\n      <div\n        onClick$={(e, el) => {\n          const closestHeading = (e.target as HTMLElement)?.closest('h1, h2, h3, h4, h5, h6');\n          if (closestHeading?.id) {\n            const url = new URL(window.location.href);\n            url.hash = closestHeading.id;\n            nav(url.href);\n          }\n        }}\n        class=\"grow flex flex-col xl:flex-row p-8 max-md:px-4 max-md:max-w-full mt-8 max-md:mt-0 mb-12 max-md:mb-0 max-md:overflow-x-hidden min-w-0\"\n      >\n        <div class=\"prose prose-invert lg:prose-xl max-lg:max-w-full max-w-none min-w-0\">\n          <Slot />\n        </div>\n        <div class=\"w-[240px] shrink-0 ml-12 max-xl:ml-0 max-xl:mt-8 max-xl:static max-xl:top-none max-xl:w-full max-xl:border-t border-primary border-opacity-50\">\n          <RightSidebar key={location.url.pathname} class=\"mt-4 max-md:mt-4 sticky top-36\" />\n        </div>\n      </div>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/docs/overview/index.mdx",
    "content": "---\ntitle: Overview - Mitosis\n---\n\n# Mitosis Overview\n\n## What is Mitosis?\n\n[Mitosis](https://github.com/BuilderIO/mitosis) is an open-source tool that transforms JSX components into fully functional components for frameworks like Angular, React, Qwik, Vue, Svelte, Solid, and React Native.\n\nBy writing your UI components once in JSX, you can deploy them across any platform, eliminating the need to rewrite code for each framework.\n\nUsing Mitosis, you can:\n\n- Maintain a consistent design system across multiple frameworks ([example](https://github.com/db-ux-design-system/core-web))\n- Sync your [design systems from Figma to code](/docs/figma) and publish them to npm across frameworks\n- Build high quality cross-framework SDKs ([example](https://github.com/BuilderIO/builder/tree/main/packages/sdks#builderio-sdks))\n- Avoid the [pitfalls of web components](#challenges-with-web-components) by compiling to native framework code\n\n<video\n  width=\"752\"\n  height=\"428\"\n  autoplay\n  playsInline\n  muted\n  loop\n  src=\"https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2F65318cd035a940f88f7c19bfb0844e31%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=65318cd035a940f88f7c19bfb0844e31&alt=media&optimized=true\"\n/>\n\n## Why use Mitosis?\n\nWith Mitosis, you can streamline your workflow and reduce redundancy without compromising the quality of your design system. Mitosis ensures that your design language speaks clearly and consistently, whether you're working in React, Vue, or any other framework.\n\nBy simplifying the development process through having one singular source of truth, Mitosis accelerates project timelines, allowing your team to focus more on innovation and less on integration.\n\n### Challenges with web components\n\nWhile [web components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) are standalone elements designed for reuse across web applications, they present some [key challenges](https://designsystemcentral.com/why-web-components-arent-the-design-system-silver-bullet-just-yet/152/) for design systems:\n\n- Web components do not natively render on the server side. This can be problematic when using frameworks that rely on server-side rendering for performance and SEO benefits.\n- Web components do not seamlessly integrate with your library or framework. For instance, web components do not inherently understand or interact with React's context.\n- Web components often come with their own rendering libraries and dependencies, which can lead to performance overhead.\n\nAlthough web components offer a modular and reusable approach to UI elements, these challenges can limit their viability. However, if supporting web components is a requirement, you can use Mitosis to generate them from a single source of truth. Mitosis supports [Lit](https://lit.dev/), [Stencil](https://stenciljs.com/), and raw web components as outputs.\n\n### Integration with Figma\n\nMitosis integrates with Figma to sync your design systems in Figma to code.\n\n<video\n  width=\"752\"\n  height=\"428\"\n  autoplay\n  playsInline\n  muted\n  loop\n  src=\"https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2F65d28d32b11d4577b116d6853dd72ce8%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=65d28d32b11d4577b116d6853dd72ce8&alt=media&optimized=true\"\n/>\n\nThis integration streamlines the design-to-code process, ensuring that your design system remains consistent across all platforms from one singular source of truth. Learn more about our [Figma integration](/docs/figma).\n\n## How does it work\n\nMitosis uses a static subset of JSX, inspired by [Solid](https://www.solidjs.com/guide#jsx-compilation). This means we can parse it to a simple JSON structure, then easily build serializers that target various frameworks and implementations.\n\n```tsx\nexport function MyComponent() {\n  const state = useStore({\n    name: 'Steve',\n  });\n\n  return (\n    <div>\n      <input value={state.name} onChange={(event) => (state.name = event.target.value)} />\n    </div>\n  );\n}\n```\n\nbecomes:\n\n```json\n{\n  \"@type\": \"@builder.io/mitosis/component\",\n  \"state\": {\n    \"name\": \"Steve\"\n  },\n  \"nodes\": [\n    {\n      \"@type\": \"@builder.io/mitosis/node\",\n      \"name\": \"div\",\n      \"children\": [\n        {\n          \"@type\": \"@builder.io/mitosis/node\",\n          \"name\": \"input\",\n          \"bindings\": {\n            \"value\": \"state.name\",\n            \"onChange\": \"state.name = event.target.value\"\n          }\n        }\n      ]\n    }\n  ]\n}\n```\n\nWhich can be reserialized into many languages and frameworks. For example, to support angular, we just make a serializer that loops over the json and produces:\n\n```typescript\n@Component({\n  template: `\n    <div>\n      <input [value]=\"name\" (change)=\"name = $event.target.value\" />\n    </div>\n  `,\n})\nclass MyComponent {\n  name = 'Steve';\n}\n```\n\nAdding framework support is surprisingly easy with the plugin system (docs coming soon).\n"
  },
  {
    "path": "packages/docs/src/routes/docs/project-structure/index.mdx",
    "content": "---\ntitle: Project structure - Mitosis\n---\n\n# Project structure\n\nFor a practical example of the below structure, check out [our example project](https://github.com/BuilderIO/mitosis/tree/main/examples/basic/).\n\nHere is how a Mitosis project will be structured:\n\n- `src/` contains your Mitosis source code\n- `output/` contains per-target output of the project\n  - You will notice `.lite.tsx` files _in_ your output. Those are a human-readable Mitosis components. Think of them as a reference point for you to debug more easily, since the actual JS output is minified and thus difficult to read.\n- `mitosis.config.js` contains general and per-target [configuration](/docs/configuration/). It is used by `mitosis build`.\n- `overrides/` contains a per-target folder that mimicks the structure of `src`, and will completely swap out any files with identical names.\n  - Example: if we have defined `overrides/react-native/src/functions/is-react-native.ts`, it will override `src/functions/is-react-native.ts` in `output/react-native/src/functions/is-react-native.js`.\n"
  },
  {
    "path": "packages/docs/src/routes/docs/quickstart/index.mdx",
    "content": "---\ntitle: Quickstart - Mitosis\n---\n\n# Quickstart\n\n### Create a new project\n\nStart a new Mitosis project by running the following command in your terminal:\n\n```bash\nnpm create @builder.io/mitosis@latest\n```\n\nWhen prompted, enter a project name and select your desired output. Currently, we support outputs for React, Svelte, and Qwik. After making your selection, navigate to the project folder and install the dependencies.\n\n<video\n  width=\"752\"\n  height=\"428\"\n  autoplay\n  playsInline\n  muted\n  loop\n  src=\"https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fac60d98b072940cabb00bd2f2839a7b9%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=ac60d98b072940cabb00bd2f2839a7b9&alt=media&optimized=true\"\n/>\n\n### Explore the project structure\n\nFocus on the `library` folder within your project. In `library/src`, you will find:\n\n- An `autocomplete` component\n- A `todo-app` component\n\nEach component is housed in its own folder and written in a `.lite.tsx` file, the standard file format for Mitosis components. Also, explore the `library/packages` folder, which contains starter code for the outputs you selected during setup.\n\n### Run the project\n\n1.  **Start the development server**\n    From within the `library` folder, run the following command to start the development server:\n    `npm run start`\n\n            This command automatically generates component code in the corresponding output folder. You write code once, and it gets converted into React, Qwik, and Svelte code.\n\n2.  **Add a new component**\n    Create a `library/src/greet.lite.tsx` file with the following code:\n\n```tsx\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function Greet() {\n  const state = useStore({\n    name: '',\n  });\n\n  return (\n    <div>\n      <input\n        value={state.name}\n        onChange={(event) => (state.name = event.target.value)}\n        placeholder=\"Your name\"\n      />\n      <div>Hello, {state.name}!</div>\n    </div>\n  );\n}\n```\n\n3.  **Configure project settings**\n    In the root of your project, add a `mitosis.config.js` file to specify the target output. Possible targets include Alpine, Angular, customElement, HTML, Mitosis, Liquid, React, React Native, Solid, Svelte, Swift, Template, Webcomponent, Vue (version 3), Stencil, Qwik, Marko, Preact, Lit, and RSC.\n\nBy following these steps, you'll be well on your way to developing with Mitosis, taking advantage of its capability to write once and deploy to multiple frameworks.\n\nSee our [CLI documentation](/docs/cli) for more commands you can run for developing and building.\n\n### Verify your components\n\nAfter generating the component code with Mitosis, the next step is to ensure that your components work as expected. Here's how to verify them using Svelte as the target framework:\n\n1. **Export the components**\n\n   Export the `Greet` component from the `library/src/index.ts` file:\n\n   ```tsx\n   export { default as Greet } from './greet.lite';\n   ```\n\n2. **Build the library**\n\n   From the `library/packages/svelte` folder, build the Svelte components by running the following command:\n\n   ```bash\n   npm run build:watch\n   ```\n\n3. **Test in a an application**\n\n   We'll use Svelte for this example, but these same steps work for any other output frameworks.\n\n   - Navigate to the `test-apps/svelte` folder:\n     ```bash\n     cd test-apps/svelte\n     ```\n   - Open the `src/routes/+page.svelte` file and import the component:\n\n     ```tsx\n     <script lang=\"ts\">\n       import { AutoComplete, Todos, Greet } from '@demo-one/library-svelte';\n     </script>\n\n     <h1>Welcome to SvelteKit</h1>\n     <AutoComplete />\n     <Todos />\n     <Greet />\n     <p>Visit <a href=\"https://kit.svelte.dev\">kit.svelte.dev</a> to read the documentation</p>\n\n     ```\n\n4. **Start the dev server**\n\n   Start the development server for your Svelte app with the following command:\n\n   ```bash\n   npm run dev\n   ```\n\n5. **Verify the component**\n\n   Open [http://localhost:5173](http://localhost:5173/) in your browser. You should see the functioning Greet component along with the other components.\n\nBy following these steps, you'll be well on your way to developing with Mitosis, taking advantage of its capability to write once and deploy to multiple frameworks.\n\n<video\n  width=\"752\"\n  height=\"428\"\n  autoplay\n  playsInline\n  muted\n  loop\n  src=\"https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2F65318cd035a940f88f7c19bfb0844e31%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=65318cd035a940f88f7c19bfb0844e31&alt=media&optimized=true\"\n/>\n\n### Next steps\n\n- Read more on writing [Mitosis components](/docs/components)\n- Explore the [Figma integration](/docs/figma) for generating Mitosis components from Figma designs\n"
  },
  {
    "path": "packages/docs/src/routes/docs/right-sidebar.tsx",
    "content": "import { ClassList, component$, useSignal, useVisibleTask$ } from '@builder.io/qwik';\nimport { useContent, useLocation } from '@builder.io/qwik-city';\nimport { TbBrandDiscord, TbEdit, TbMessage } from '@qwikest/icons/tablericons';\nimport { throttle } from 'lodash-es';\n\n// Transform:\n//   /docs/overview/ to 'overview'\n//   /docs/overview/quickstart/ to 'overview/quickstart'\n//   etc\nconst getGithubFilePath = (path: string): string => {\n  return path.split('/').slice(2, -1).join('/');\n};\n\nexport const RightSidebar = component$((props: { class: ClassList }) => {\n  const { headings } = useContent();\n  const contentHeadings = headings?.filter((h) => h.level <= 3) || [];\n  const activeHeadingIndex = useSignal(0);\n\n  const { url } = useLocation();\n\n  const githubEditRoute = getGithubFilePath(url.pathname);\n\n  useVisibleTask$(({ cleanup }) => {\n    const fn = throttle(() => {\n      const activeIndex = contentHeadings.findIndex((h) => {\n        const el = document.getElementById(h.id);\n        if (!el) return false;\n        const rect = el.getBoundingClientRect();\n        return rect.top >= 150;\n      });\n\n      activeHeadingIndex.value =\n        activeIndex > 0 ? activeIndex - 1 : activeIndex === -1 ? contentHeadings.length - 1 : 0;\n    }, 50);\n\n    window.addEventListener('scroll', fn);\n    cleanup(() => {\n      window.removeEventListener('scroll', fn);\n    });\n  });\n\n  const editUrl = `https://github.com/Builderio/mitosis/edit/main/packages/docs/src/routes/docs/${githubEditRoute}/index.mdx`;\n\n  const OnThisPageMore = [\n    {\n      href: `https://docs.google.com/forms/d/e/1FAIpQLSc6jOAOPMRHviiXv4Pkk28fmdFhcX-IprhHvKCIBhjuZKmgiA/viewform?usp=pp_url&entry.1953883676=${encodeURIComponent(\n        url.href,\n      )}`,\n      text: 'Share feedback',\n      icon: TbMessage,\n    },\n    {\n      href: 'https://discord.gg/yxjk5vn6pn',\n      text: 'Join our community',\n      icon: TbBrandDiscord,\n    },\n    {\n      href: editUrl,\n      text: 'Edit this Page',\n      icon: TbEdit,\n    },\n  ];\n\n  const headingToUse = contentHeadings.filter((h) => h.level >= 2 && h.level <= 3);\n\n  return (\n    <aside class={['text-sm overflow-y-auto max-h-full', props.class]}>\n      <div class=\"max-xl:hidden\">\n        {headingToUse.length > 0 ? (\n          <>\n            <h6 class=\"font-medium uppercase text-xs\">On This Page</h6>\n            <ul class=\"\">\n              {headingToUse.map((h, i) => (\n                <li key={h.id}>\n                  <a\n                    href={`#${h.id}`}\n                    class={[\n                      'block my-4 text-[rgba(255,255,255,0.7)] hover:opacity-100 hover:text-primary-light ease-in-out',\n                      `${h.level > 2 ? 'ml-4' : null}`,\n                      activeHeadingIndex.value === i ? '!text-primary-light' : null,\n                    ]}\n                  >\n                    {h.text}\n                  </a>\n                </li>\n              ))}\n            </ul>\n          </>\n        ) : null}\n      </div>\n\n      <h6 class=\"font-medium uppercase text-xs mt-12 max-xl:hidden\">More options</h6>\n      <ul>\n        {OnThisPageMore.map((el, index) => {\n          return (\n            <li>\n              <a\n                class=\"flex gap-2 items-center my-4 hover:text-primary-light ease-in-out\"\n                href={el.href}\n                rel=\"noopener\"\n                target=\"_blank\"\n              >\n                <div class=\"text-2xl\">\n                  <el.icon />\n                </div>\n                <span>{el.text}</span>\n              </a>\n            </li>\n          );\n        })}\n      </ul>\n    </aside>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/docs/sidebar.tsx",
    "content": "import { Slot, component$, useSignal, type ClassList } from '@builder.io/qwik';\nimport { Link, useLocation } from '@builder.io/qwik-city';\nimport { TbChevronRight } from '@qwikest/icons/tablericons';\n\nconst SidebarLink = component$((props: { href: string }) => {\n  const location = useLocation();\n  const activeClasses = '!text-primary-light font-bold';\n  return (\n    <Link\n      href={props.href}\n      class={[\n        'p-1.5 hover:text-primary-light transition-colors duration-200 ease-in-out',\n        {\n          [activeClasses]: location.url.pathname === props.href,\n        },\n      ]}\n    >\n      <Slot />\n    </Link>\n  );\n});\n\nexport default component$((props: { class?: ClassList }) => {\n  const expanded = useSignal(false);\n\n  const backdropStyles =\n    'max-md:bg-purple-990 max-md:bg-opacity-95 max-md:backdrop-blur max-md:transform-gpu max-md:!z-50';\n\n  return (\n    <div class={[props.class, 'mt-4 min-w-[200px] md:overflow-y-auto max-h-full']}>\n      <div\n        class={[\n          'hidden max-md:flex border-b border-primary border-opacity-50 items-center p-3 -mx-4',\n        ]}\n      >\n        <button\n          class=\"flex gap-2 items-center rounded w-full\"\n          onClick$={() => {\n            expanded.value = !expanded.value;\n          }}\n        >\n          <TbChevronRight\n            class={['transform transition-transform', expanded.value && 'rotate-90']}\n          />{' '}\n          Menu\n        </button>\n      </div>\n      <div\n        class={[\n          'md:sticky md:top-24 max-md:overflow-auto transition-all max-md:-mx-4 max-md:absolute max-md:top-15 max-md:w-full',\n          backdropStyles,\n          {\n            'max-md:max-h-0': !expanded.value,\n            'max-md:max-h-[80vh]': expanded.value,\n          },\n        ]}\n      >\n        <div\n          onmouseUp$={() => {\n            expanded.value = false;\n          }}\n          class=\"flex flex-col gap-2 p-4 max-md:border-b border-primary border-opacity-50\"\n        >\n          <SidebarLink href=\"/docs/overview/\">Overview</SidebarLink>\n          <SidebarLink href=\"/docs/quickstart/\">Quickstart</SidebarLink>\n          <SidebarLink href=\"/docs/components/\">Components</SidebarLink>\n          <SidebarLink href=\"/docs/hooks/\">Hooks</SidebarLink>\n          <SidebarLink href=\"/docs/context/\">Context</SidebarLink>\n          <SidebarLink href=\"/docs/figma/\">Figma</SidebarLink>\n          <SidebarLink href=\"/docs/using-libraries/\">Using Libraries</SidebarLink>\n          <SidebarLink href=\"/docs/customizability/\">Customization</SidebarLink>\n          <SidebarLink href=\"/docs/configuration/\">Configuration</SidebarLink>\n          <SidebarLink href=\"/docs/project-structure/\">Project Structure</SidebarLink>\n          <SidebarLink href=\"/docs/cli/\">CLI</SidebarLink>\n          <SidebarLink href=\"/docs/gotchas/\">Gotchas</SidebarLink>\n        </div>\n      </div>\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/docs/using-libraries/index.mdx",
    "content": "---\ntitle: Using Libraries - Mitosis\n---\n\n# Using Libraries\n\n## JavaScript libraries\n\nYou can use any JavaScript library in your Mitosis components just like you would in any\nother framework. Here's an example of using `lodash` in a Mitosis component:\n\n```tsx\nimport { kebabCase } from 'lodash';\n\nexport default function MyComponent(props: { name: string }) {\n  return <div>{kebabCase(props.name)}</div>;\n}\n```\n\n## Framework-specific libraries\n\nBecause of the cross-framework nature of Mitosis, you cannot use framework-specific libraries\ndirectly in Mitosis code.\n\nFor instance a React form library wouldn't make sense in the context of Mitosis, because\nMitosis components are framework-agnostic, so how would it work with Vue or Svelte?\n\n### Focus on web fundamentals\n\nThe web platform has come a long way, and you may not need as many libraries as you think.\n\nFor example, for form handling, instead of using a library you can use the native `form` element\nand its built-in validation:\n\n```tsx\nexport default function MyComponent() {\n  function handleSubmit(event: SubmitEvent) {\n    event.preventDefault();\n\n    const form = event.target as HTMLFormElement;\n    if (!form.checkValidity()) {\n      alert('Form is invalid');\n      return;\n    }\n    const data = new FormData(form);\n    const email = data.get('email');\n    console.log(email);\n  }\n\n  return (\n    <form onSubmit={(event) => handleSubmit(event)}>\n      <input type=\"email\" name=\"email\" required />\n      <button type=\"submit\">Submit</button>\n    </form>\n  );\n}\n```\n\n### Use overrides (sparringly)\n\nIf you really need to use a framework-specific library, you can use overrides to\nprovide different implementations for different frameworks.\n\nIn the `overrides/` directory of a [Mitosis project](/docs/project-structure/), you can create a file for each\nyou want to override.\n\nFor example, if you have a file in `src/components/foo.lite.tsx` and you need a specific\nimplementation for Angular, for instance to use a specific library or unique feature, you can\ncreate a file `overrides/angular/src/components.foo.ts` and provide the Angular-specific implementation.\n\nSee examples in the [overrides directory](https://github.com/BuilderIO/builder/tree/main/packages/sdks/overrides)\nof the builder.io SDK.\n"
  },
  {
    "path": "packages/docs/src/routes/index.tsx",
    "content": "import { component$, useStylesScoped$ } from '@builder.io/qwik';\nimport { Link, type DocumentHead } from '@builder.io/qwik-city';\nimport { CodeRotator } from '~/components/code-rotator';\n\nexport default component$(() => {\n  useStylesScoped$(`\n    .wrapper {\n      background-image: url('https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ff234065eeddc488f8189c4fab8e03bde');\n      background-size: 15px;\n    }\n  `);\n\n  return (\n    <div class=\"wrapper\">\n      <div class=\"pt-8 flex flex-col px-4 min-h-[90vh] container mx-auto\">\n        <img\n          alt=\"Mitosis logo\"\n          class=\"aspect-[4] max-w-[80%] w-[400px] mx-auto mt-[10vh] max-md:mt-[5vh]\"\n          src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F0fdb9aabd10f4205b3b3b56d7b950239\"\n        />\n        <p class=\"text-xl mx-auto mt-6 text-center\">Write components once, run everywhere.</p>\n        <div class=\"flex mx-auto mt-12\">\n          <Link\n            href=\"/docs/quickstart\"\n            prefetch\n            class=\"btn bg-primary hover:bg-primary-light text-black py-2 px-4 font-medium rounded\"\n          >\n            Get Started\n          </Link>\n          <Link\n            prefetch\n            href=\"/playground\"\n            class=\"btn ml-4 border border-primary hover:bg-primary hover:bg-opacity-20 text-white font-medium py-2 px-4 rounded\"\n          >\n            Playground\n          </Link>\n        </div>\n\n        <CodeRotator class=\"mx-auto mt-[5vh] mb-[9vh]\" />\n      </div>\n    </div>\n  );\n});\n\nexport const head: DocumentHead = {\n  title: 'Mitosis - Write components once, run everywhere.',\n  meta: [\n    {\n      name: 'description',\n      content:\n        'Build multi-framework design systems with confidence. Compiles to React, Angular, Vue, Svelte, and more.',\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/docs/src/routes/layout.tsx",
    "content": "import { component$, Slot } from '@builder.io/qwik';\nimport type { RequestHandler } from '@builder.io/qwik-city';\nimport { useLocation } from '@builder.io/qwik-city';\n\nimport Footer from '../components/footer';\nimport Header from '../components/header';\n\nexport const onGet: RequestHandler = async ({ cacheControl, url, redirect }) => {\n  // Control caching for this request for best performance and to reduce hosting costs:\n  // https://qwik.dev/docs/caching/\n  cacheControl({\n    // Always serve a cached response by default, up to a week stale\n    staleWhileRevalidate: 60 * 60 * 24 * 7,\n    staleIfError: 60 * 60 * 24 * 7,\n    // Max once every 5 seconds, revalidate on the server to get a fresh version of this page\n    maxAge: 5,\n  });\n\n  if (url.searchParams.get('removeParam')) {\n    const newUrl = new URL(url.href);\n    newUrl.searchParams.delete('removeParam');\n    throw redirect(302, newUrl.href);\n  }\n\n  if (\n    url.pathname === '/' &&\n    // Old fiddle params to redirect to the new playground\n    (url.searchParams.get('outputTab') ||\n      url.searchParams.get('code') ||\n      url.searchParams.get('inputTab'))\n  ) {\n    const newUrl = new URL(url.href);\n    newUrl.pathname = '/playground';\n    throw redirect(302, newUrl.href);\n  }\n};\n\nexport default component$(() => {\n  const location = useLocation();\n\n  const isPlayground = location.url.pathname === '/playground/';\n  const isHome = location.url.pathname === '/';\n\n  return (\n    <>\n      <div class={['flex flex-col', isPlayground ? 'min-h-screen' : 'min-h-[80vh]']}>\n        <Header />\n        <main class={[isPlayground || isHome ? 'grow flex flex-col' : 'container mx-auto px-4']}>\n          <Slot />\n        </main>\n      </div>\n      {!isPlayground && <Footer />}\n    </>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/playground/index.tsx",
    "content": "import { $, component$, useSignal, useVisibleTask$ } from '@builder.io/qwik';\nimport { DocumentHead, routeLoader$, useLocation, useNavigate } from '@builder.io/qwik-city';\nimport lzString from 'lz-string';\nimport { ContentLoaderCode } from 'qwik-content-loader';\nimport { CodeEditor } from '~/components/code-editor';\nimport Select from '~/components/select';\nimport {\n  InputSyntax,\n  OutputFramework,\n  compile,\n  defaultCode,\n  inputs,\n  languageByFramework,\n  outputs,\n} from '~/services/compile';\n\nconst defaultTopTab: OutputFramework = 'vue';\nconst defaultBottomTab: OutputFramework = 'angular';\nconst defaultInputTab = 'jsx';\n\nconst formatErrorToDisplay = (error: unknown) => {\n  return String(error).split('\\n')[0];\n};\n\nconst decodeCode = (url: URL) => {\n  const code = url.searchParams.get('code');\n  return code ? lzString.decompressFromBase64(code) : defaultCode;\n};\n\nconst useOutput1 = routeLoader$(async (requestEvent) => {\n  const code = decodeCode(requestEvent.url);\n  let outputTab = requestEvent.url.searchParams.get('outputTab') as OutputFramework;\n  if (!outputs.includes(outputTab)) {\n    outputTab = defaultTopTab;\n  }\n  let inputTab = requestEvent.url.searchParams.get('inputTab') as InputSyntax;\n  if (!inputs.includes(inputTab)) {\n    inputTab = defaultInputTab;\n  }\n\n  const output = await compile(\n    code || defaultCode,\n    outputTab || defaultTopTab,\n    inputTab || defaultInputTab,\n  ).catch((err) => {\n    console.error(err);\n    return formatErrorToDisplay(err);\n  });\n  return output;\n});\n\nconst useOutput2 = routeLoader$(async (requestEvent) => {\n  const code = decodeCode(requestEvent.url);\n  const outputTab = requestEvent.url.searchParams.get('outputTab') as OutputFramework;\n  const inputTab = requestEvent.url.searchParams.get('inputTab') as InputSyntax;\n\n  const output = await compile(\n    code,\n    outputTab || defaultBottomTab,\n    inputTab || defaultInputTab,\n  ).catch((err) => {\n    console.error(err);\n    return formatErrorToDisplay(err);\n  });\n  return output;\n});\n\nexport default component$(() => {\n  const nav = useNavigate();\n  const location = useLocation();\n  const initialCode = decodeCode(location.url);\n  const outputTab = location.url.searchParams.get('outputTab') as OutputFramework;\n  const inputTab = location.url.searchParams.get('inputTab') as InputSyntax;\n  const loaderOutput1 = useOutput1().value;\n  const loaderOutput2 = useOutput2().value;\n\n  const code = useSignal(initialCode || defaultCode);\n  const inputSyntax = useSignal<InputSyntax>(inputTab || defaultInputTab);\n  const output = useSignal(loaderOutput1 || '');\n  const outputOneFramework = useSignal<OutputFramework>(outputTab || defaultTopTab);\n  const output2 = useSignal(loaderOutput2 || '');\n  const outputTwoFramework = useSignal<OutputFramework>(defaultBottomTab);\n  const visible = useSignal(false);\n  const isThrottling = useSignal(false);\n  const isThrottling2 = useSignal(false);\n  const throttleTimeout1 = useSignal(0);\n  const throttleTimeout2 = useSignal(0);\n  const errorOne = useSignal('');\n  const errorTwo = useSignal('');\n\n  useVisibleTask$(() => {\n    visible.value = true;\n  });\n\n  const updateUrl = $(() => {\n    if (code.value === defaultCode || !code.value.trim()) {\n      if (location.url.searchParams.has('code')) {\n        location.url.searchParams.delete('code');\n        nav(location.url.toString(), {\n          replaceState: true,\n        });\n      }\n      return;\n    }\n\n    const newURL = new URL(location.url);\n    newURL.searchParams.set('code', lzString.compressToBase64(code.value));\n\n    nav(newURL.toString(), {\n      replaceState: true,\n    });\n  });\n\n  const throttledCompileOne = $(\n    async (code: string, outputFramework: OutputFramework, inputSyntax: InputSyntax) => {\n      updateUrl();\n      if (throttleTimeout1.value) {\n        clearTimeout(throttleTimeout1.value);\n      }\n      if (isThrottling.value) {\n        throttleTimeout1.value = setTimeout(async () => {\n          isThrottling.value = true;\n          try {\n            output.value = await compile(code, outputFramework, inputSyntax);\n            errorOne.value = '';\n          } catch (err) {\n            errorOne.value = formatErrorToDisplay(err);\n          }\n\n          updateUrl();\n          isThrottling.value = false;\n        }, 100) as any;\n        return;\n      }\n      isThrottling.value = true;\n      try {\n        output.value = await compile(code, outputFramework, inputSyntax);\n        errorOne.value = '';\n      } catch (err) {\n        errorOne.value = formatErrorToDisplay(err);\n      }\n\n      isThrottling.value = false;\n    },\n  );\n\n  const throttledCompileTwo = $(\n    async (code: string, outputFramework: OutputFramework, inputSyntax: InputSyntax) => {\n      if (throttleTimeout2.value) {\n        clearTimeout(throttleTimeout2.value);\n      }\n      if (isThrottling2.value) {\n        throttleTimeout2.value = setTimeout(async () => {\n          isThrottling.value = true;\n          try {\n            output2.value = await compile(code, outputFramework, inputSyntax);\n            errorTwo.value = '';\n          } catch (err) {\n            errorTwo.value = formatErrorToDisplay(err);\n          }\n\n          isThrottling.value = false;\n        }, 100) as any;\n        return;\n      }\n      isThrottling2.value = true;\n      try {\n        output2.value = await compile(code, outputFramework, inputSyntax);\n        errorTwo.value = '';\n      } catch (err) {\n        errorTwo.value = formatErrorToDisplay(err);\n      }\n\n      isThrottling2.value = false;\n    },\n  );\n\n  useVisibleTask$(async ({ track }) => {\n    track(code);\n    track(outputOneFramework);\n    try {\n      await throttledCompileOne(code.value, outputOneFramework.value, inputSyntax.value);\n    } catch (err) {\n      console.warn(err);\n    }\n  });\n\n  useVisibleTask$(async ({ track }) => {\n    track(code);\n    track(outputTwoFramework);\n    try {\n      await throttledCompileTwo(code.value, outputTwoFramework.value, inputSyntax.value);\n    } catch (err) {\n      console.warn(err);\n    }\n  });\n\n  // Always reload on window refocus to ensure cloudflare workers are warm\n  useVisibleTask$(({ cleanup }) => {\n    const fn = () => {\n      throttledCompileOne(code.value, outputOneFramework.value, inputSyntax.value);\n      throttledCompileTwo(code.value, outputTwoFramework.value, inputSyntax.value);\n    };\n    addEventListener('focus', fn);\n    cleanup(() => {\n      removeEventListener('focus', fn);\n    });\n  });\n\n  return (\n    <div class=\"relative flex gap-4 max-md:gap-0 grow items-stretch max-md:flex-col bg-primary-dark overflow-x-hidden\">\n      <style>{`body { overflow: hidden !important; }`}</style>\n      <div class=\"w-full flex flex-col max-md:h-[calc(55dvh-35px)]\">\n        <div class=\"flex items-center gap-2 mx-4 my-2 mb-4 max-md:m-1.5 min-h-[50px] max-md:min-h-[40px]\">\n          <h3 class=\"ml-4 max-md:ml-2 text-lg max-md:text-base\">Input</h3>\n          {visible.value && (\n            // Workaround weird bug where this doesn't render correctly\n            // server side\n            <Select\n              class=\"ml-auto max-md:scale-[0.85] -my-2 max-md:-mr-1.5\"\n              value={inputSyntax.value}\n              onChange$={(syntax: any) => {\n                compile(\n                  code.value,\n                  syntax === 'jsx' ? 'mitosis' : 'svelte',\n                  inputSyntax.value,\n                ).then((output) => {\n                  code.value = output.replace(/\\n?\\n?import { useStore } from \"..\";\\n?/g, '');\n                  inputSyntax.value = syntax;\n                });\n              }}\n              options={inputs}\n            />\n          )}\n        </div>\n\n        <div class=\"w-full grow relative\">\n          <ContentLoaderCode\n            width={400}\n            class=\"ml-16 mt-3 opacity-10 origin-top-left max-md:scale-75 max-md:ml-4\"\n          />\n\n          {visible.value && (\n            <CodeEditor\n              key={inputSyntax.value}\n              language={inputSyntax.value === 'jsx' ? 'typescript' : 'html'}\n              class=\"absolute inset-0 h-full w-full\"\n              defaultValue={code.value}\n              onChange$={(newCode) => {\n                code.value = newCode;\n              }}\n            />\n          )}\n        </div>\n      </div>\n      <div class=\"flex gap-4 max-md:gap-0 flex-col w-full h-[calc(100vh-130px)] max-md:!h-[calc(45dvh-35px)] border-l border-primary border-opacity-50 max-md:border-l-0 max-md:border-t\">\n        <div class=\"flex items-center gap-2 mx-4 max-md:m-1.5 my-2 mb-0 min-h-[50px] max-md:min-h-[40px]\">\n          <h3 class=\"ml-4 max-md:ml-2 text-lg max-md:text-base\">Output</h3>\n          {visible.value && (\n            // Workaround weird bug where this doesn't render correctly\n            // server side\n            <Select\n              class=\"ml-auto mr-2 max-md:scale-[0.85] mx-md:-my-2 max-md:-mr-1.5\"\n              value={outputOneFramework.value}\n              onChange$={(framework: any) => (outputOneFramework.value = framework)}\n              options={outputs}\n            />\n          )}\n        </div>\n        <div class=\"h-[50%] max-md:h-auto grow relative\">\n          <ContentLoaderCode\n            width={400}\n            class=\"ml-16 mt-3 opacity-10 origin-top-left max-md:scale-75 max-md:ml-4\"\n          />\n          {visible.value && (\n            <div class=\"absolute inset-0 h-full w-full overflow-hidden\">\n              <CodeEditor\n                language={languageByFramework[outputOneFramework.value]}\n                value={output.value}\n                class=\"absolute inset-0 h-full w-full\"\n                readOnly\n              />\n              <ErrorWarning errorMessage={errorOne.value} />\n            </div>\n          )}\n        </div>\n        <div class=\"min-h-[50px] max-md:min-h-[40px] max-md:hidden flex items-center border-primary border-opacity-50 border-t -mt-4 pt-4\">\n          {visible.value && (\n            // Workaround weird bug where this doesn't render correctly\n            // server side\n            <Select\n              class=\"ml-auto mr-2 md:mr-6\"\n              value={outputTwoFramework.value}\n              onChange$={(framework: any) => (outputTwoFramework.value = framework)}\n              options={outputs}\n            />\n          )}\n        </div>\n\n        <div class=\"h-[50%] relative max-md:hidden\">\n          <ContentLoaderCode\n            width={400}\n            class=\"ml-16 mt-3 opacity-10 origin-top-left max-md:scale-75 max-md:ml-4\"\n          />\n          {visible.value && (\n            <div class=\"absolute inset-0 h-full w-full overflow-hidden\">\n              <CodeEditor\n                language={languageByFramework[outputTwoFramework.value]}\n                value={output2.value}\n                class=\"absolute inset-0 h-full w-full\"\n                readOnly\n              />\n              <ErrorWarning errorMessage={errorTwo.value} />\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n});\n\nconst ErrorWarning = component$((props: { errorMessage: string }) => {\n  // Simple alert component\n  return (\n    <div\n      class={[\n        'bg-rose-950 bg-opacity-90 border border-rose-700 text-rose-200 px-4 py-3 w-full bottom-0 absolute left-0 transition-all delay-1000',\n        !props.errorMessage && 'pointer-events-none opacity-0 translate-y-4 !delay-0',\n      ]}\n      role=\"alert\"\n    >\n      <span class=\"block sm:inline min-h-[1.5em]\">{props.errorMessage} &nbsp;</span>\n    </div>\n  );\n});\n\nexport const head: DocumentHead = {\n  title: 'Mitosis Playground',\n  meta: [\n    {\n      name: 'description',\n      content: 'Write components once, run everywhere.',\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/docs/src/routes/playground-old/index.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { useLocation } from '@builder.io/qwik-city';\n\nexport default component$(() => {\n  const location = useLocation();\n  const code = location.url.searchParams.get('code');\n  const outputTab = location.url.searchParams.get('outputTab');\n  const inputTab = location.url.searchParams.get('inputTab');\n\n  const iframeUrl = new URL('https://mitosis-three.vercel.app');\n  if (code) {\n    iframeUrl.searchParams.set('code', code);\n  }\n  if (outputTab) {\n    iframeUrl.searchParams.set('outputTab', outputTab);\n  }\n  if (inputTab) {\n    iframeUrl.searchParams.set('inputTab', inputTab);\n  }\n\n  return (\n    <div class=\"relative\">\n      <iframe class=\"fixed inset-0 top-1.5 w-full h-full\" src={iframeUrl.href} />\n    </div>\n  );\n});\n"
  },
  {
    "path": "packages/docs/src/routes/service-worker.ts",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * The service-worker.ts file is used to have state of the art prefetching.\n * https://qwik.dev/qwikcity/prefetching/overview/\n *\n * Qwik uses a service worker to speed up your site and reduce latency, ie, not used in the traditional way of offline.\n * You can also use this file to add more functionality that runs in the service worker.\n */\nimport { setupServiceWorker } from '@builder.io/qwik-city/service-worker';\n\nsetupServiceWorker();\n\naddEventListener('install', () => self.skipWaiting());\n\naddEventListener('activate', () => self.clients.claim());\n\ndeclare const self: ServiceWorkerGlobalScope;\n"
  },
  {
    "path": "packages/docs/src/services/compile.ts",
    "content": "import type { MitosisComponent } from '@builder.io/mitosis';\nimport { server$ } from '@builder.io/qwik-city';\n\nexport type OutputFramework =\n  | 'react'\n  | 'svelte'\n  | 'vue'\n  | 'qwik'\n  | 'angular'\n  | 'mitosis'\n  | 'json'\n  | 'marko'\n  | 'reactNative'\n  | 'lit'\n  | 'solid'\n  | 'preact'\n  | 'stencil'\n  | 'alpine'\n  | 'builder';\nexport const outputs: OutputFramework[] = [\n  'react',\n  'svelte',\n  'vue',\n  'qwik',\n  'angular',\n  'mitosis',\n  'json',\n  'marko',\n  'lit',\n  'solid',\n  'preact',\n  'stencil',\n  'reactNative',\n  'alpine',\n  'builder',\n];\n\nexport type InputSyntax = 'jsx' | 'svelte';\nexport const inputs: InputSyntax[] = ['jsx', 'svelte'];\n\nexport const languageByFramework: Record<OutputFramework, string> = {\n  react: 'typescript',\n  svelte: 'html',\n  vue: 'html',\n  qwik: 'typescript',\n  angular: 'typescript',\n  mitosis: 'typescript',\n  json: 'json',\n  marko: 'html',\n  lit: 'typescript',\n  solid: 'typescript',\n  preact: 'typescript',\n  stencil: 'typescript',\n  reactNative: 'typescript',\n  alpine: 'html',\n  builder: 'json',\n};\n\nconst getOutputGenerator = async ({ output }: { output: OutputFramework }) => {\n  const {\n    componentToSvelte,\n    componentToVue,\n    componentToReact,\n    componentToQwik,\n    componentToAngular,\n    componentToMitosis,\n    componentToAlpine,\n    componentToLit,\n    componentToMarko,\n    componentToPreact,\n    componentToReactNative,\n    componentToSolid,\n    componentToStencil,\n    componentToBuilder,\n  } = await import('@builder.io/mitosis');\n\n  const options = {};\n\n  switch (output) {\n    case 'qwik':\n      return componentToQwik(options);\n    case 'react':\n      return componentToReact(options);\n    case 'angular':\n      return componentToAngular(options);\n    case 'svelte':\n      return componentToSvelte(options);\n    case 'mitosis':\n      return componentToMitosis();\n    case 'alpine':\n      return componentToAlpine();\n    case 'lit':\n      return componentToLit();\n    case 'marko':\n      return componentToMarko();\n    case 'preact':\n      return componentToPreact();\n    case 'reactNative':\n      return componentToReactNative();\n    case 'solid':\n      return componentToSolid();\n    case 'stencil':\n      return componentToStencil();\n    case 'json':\n      return ({ component }: { component: MitosisComponent }) => JSON.stringify(component, null, 2);\n    case 'vue':\n      return componentToVue({ api: 'composition' });\n    case 'builder':\n      return ({ component }: { component: MitosisComponent }) => {\n        return JSON.stringify(componentToBuilder(options)({ component }), null, 2);\n      };\n    default:\n      throw new Error('unexpected Output ' + output);\n  }\n};\n\nexport const compile = server$(\n  async (code: string, output: OutputFramework, inputSyntax: InputSyntax) => {\n    const { parseJsx, parseSvelte } = await import('@builder.io/mitosis');\n    const parsed = inputSyntax === 'svelte' ? await parseSvelte(code) : parseJsx(code);\n\n    const outputGenerator = await getOutputGenerator({ output });\n\n    const outputCode = outputGenerator({ component: parsed });\n\n    return outputCode;\n  },\n);\n\nexport const defaultCode = `\nimport { useState } from \"@builder.io/mitosis\";\n\nexport default function MyComponent(props) {\n  const [name, setName] = useState(\"Steve\");\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \"red\",\n        }}\n        value={name}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n    </div>\n  );\n}\n`.trim();\n"
  },
  {
    "path": "packages/docs/tailwind.config.js",
    "content": "const defaultTheme = require('tailwindcss/defaultTheme');\n\n/** @type {import('tailwindcss').Config} */\nexport default {\n  content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'],\n  theme: {\n    extend: {\n      fontFamily: {\n        sans: ['Inter', ...defaultTheme.fontFamily.sans],\n      },\n      colors: {\n        primary: '#AC7EF4',\n        'primary-light': '#CCAFFB',\n        'primary-dark': '#221931',\n        purple: {\n          990: '#120D19',\n        },\n      },\n    },\n  },\n  plugins: [require('@tailwindcss/typography')],\n};\n"
  },
  {
    "path": "packages/docs/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2022\",\n    \"lib\": [\"es2022\", \"DOM\", \"WebWorker\", \"DOM.Iterable\"],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@builder.io/qwik\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"incremental\": true,\n    \"isolatedModules\": true,\n    \"outDir\": \"tmp\",\n    \"noEmit\": true,\n    \"types\": [\"node\", \"vite/client\"],\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"include\": [\"src\", \"./*.d.ts\", \"./*.config.ts\"]\n}\n"
  },
  {
    "path": "packages/docs/vite.config.ts",
    "content": "/**\n * This is the base config for vite.\n * When building, the adapter config is used which loads this file and extends it.\n */\nimport { partytownVite } from '@builder.io/partytown/utils';\nimport { qwikCity } from '@builder.io/qwik-city/vite';\nimport { qwikInsights } from '@builder.io/qwik-labs-canary/vite';\nimport { qwikVite } from '@builder.io/qwik/optimizer';\nimport { join } from 'path';\nimport { defineConfig, type UserConfig } from 'vite';\nimport { nodePolyfills } from 'vite-plugin-node-polyfills';\nimport { replaceCodePlugin } from 'vite-plugin-replace';\nimport tsconfigPaths from 'vite-tsconfig-paths';\nimport pkg from './package.json';\nconst { dependencies = {}, devDependencies = {} } = pkg as any as {\n  dependencies: Record<string, string>;\n  devDependencies: Record<string, string>;\n  [key: string]: unknown;\n};\n/**\n * Note that Vite normally starts from `index.html` but the qwikCity plugin makes start at `src/entry.ssr.tsx` instead.\n */\nexport default defineConfig(({ command, mode }): UserConfig => {\n  return {\n    define: {\n      'process.env': {},\n    },\n    plugins: [\n      qwikCity(),\n      qwikVite(),\n      tsconfigPaths({ root: './' }),\n      nodePolyfills(),\n      qwikInsights({\n        publicApiKey: '22gsbhtjcyv',\n      }),\n      replaceCodePlugin({\n        replacements: [\n          {\n            from: 'process.cwd()',\n            to: '\"/\"',\n          },\n        ],\n      }),\n      partytownVite({ dest: join(__dirname, 'dist', '~partytown') }),\n    ],\n    // This tells Vite which dependencies to pre-build in dev mode.\n    optimizeDeps: {\n      // Put problematic deps that break bundling here, mostly those with binaries.\n      // For example ['better-sqlite3'] if you use that in server functions.\n      // exclude: [],\n    },\n    // This tells Vite how to bundle the server code.\n    ssr:\n      command === 'build' && mode === 'production'\n        ? {\n            // All dev dependencies should be bundled in the server build\n            noExternal: Object.keys(devDependencies),\n            // Anything marked as a dependency will not be bundled\n            // These should only be production binary deps (including deps of deps), CLI deps, and their module graph\n            // If a dep-of-dep needs to be external, add it here\n            // For example, if something uses `bcrypt` but you don't have it as a dep, you can write\n            // external: [...Object.keys(dependencies), 'bcrypt']\n            external: Object.keys(dependencies),\n          }\n        : undefined,\n    server: {\n      headers: {\n        // Don't cache the server response in dev mode\n        'Cache-Control': 'public, max-age=0',\n      },\n    },\n    preview: {\n      headers: {\n        // Do cache the server response in preview (non-adapter production build)\n        'Cache-Control': 'public, max-age=600',\n      },\n    },\n  };\n});\n"
  },
  {
    "path": "packages/docs/wrangler.toml",
    "content": "name = \"mitosis\"\npages_build_output_dir = \"dist\"\n"
  },
  {
    "path": "packages/eslint-plugin/.npmrc",
    "content": "# avoid accidentally using npm\n# https://github.com/yarnpkg/yarn/issues/4895#issuecomment-545644733\nengine-strict=true\n"
  },
  {
    "path": "packages/eslint-plugin/.yarnrc.yml",
    "content": "npmPublishAccess: \"public\""
  },
  {
    "path": "packages/eslint-plugin/CHANGELOG.md",
    "content": "# Change Log\n\n## 0.0.17\n\n### Patch Changes\n\n- 0f2a9ee: Fix issue with plugin marking 'useDefaultProps' as an error\n\n## 0.0.16\n\n### Patch Changes\n\n- 5d218b6: Feature: new rule (`no-setter-with-same-name-as-state-prop`) prevents users from having a state property with the same name as a generated setter.\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://conventionalcommits.org) for commit guidelines.\n"
  },
  {
    "path": "packages/eslint-plugin/README.md",
    "content": "# Mitosis ESLint plugin\n\nA Mitosis plugin containing rules that help you write valid and idiomatic Mitosis code\n\n## Setup\n\nFirst, make sure you have [ESLint setup correctly](https://eslint.org/docs/user-guide/getting-started#installation-and-usage). Then, install this plugin by running:\n\n```bash\nyarn add -D @builder.io/eslint-plugin-mitosis\n```\n\nFinally, add the plugin to the `plugins` array, and the rules you want to the `rules` array:\n\n```js\nmodule.exports = {\n  parserOptions: {\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: ['@builder.io/mitosis'],\n  extends: [\n    // Use this approach for our recommended rules configuration\n    'plugin:@builder.io/mitosis/recommended',\n  ],\n  rules: {\n    // Use this to configure rules individually\n    '@builder.io/mitosis/css-no-vars': 'error',\n  },\n};\n```\n\n## Rules\n\n- [css-no-vars](./docs/rules/css-no-vars.md)\n- [jsx-callback-arg-name](./docs/rules/jsx-callback-arg-name.md)\n- [jsx-callback-arrow-function](./docs/rules/jsx-callback-arrow-function.md)\n- [no-assign-props-to-state](./docs/rules/no-assign-props-to-state.md)\n- [no-async-methods-on-state](./docs/rules/no-async-methods-on-state.md)\n- [no-conditional-logic-in-component-render](./docs/rules/no-conditional-logic-in-component-render.md)\n- [no-state-destructuring](./docs/rules/no-state-destructuring.md)\n- [no-var-declaration-in-jsx](./docs/rules/no-var-declaration-in-jsx.md)\n- [no-var-declaration-or-assignment-in-component](./docs/rules/no-var-declaration-or-assignment-in-component.md)\n- [no-var-name-same-as-state-property](./docs/rules/no-var-name-same-as-state-property.md)\n- [only-default-function-and-imports](./docs/rules/only-default-function-and-imports.md)\n- [ref-no-current](./docs/rules/ref-no-current.md)\n- [use-state-var-declarator](./docs/rules/use-state-var-declarator.md)\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/css-no-vars.md",
    "content": "# css-no-vars (css-no-vars)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you about using an unsupported values for the css attribute.\n\nExamples of **incorrect** code for this rule:\n\n```js\n    <button css={{ color: red }} />\n\n    <button css={{ fontSize: 10, color: red }} />\n\n    <button css={\"sting\"} />\n\n    <button css={1} />\n\n    <button css={true} />\n\n    <button css={{color: a ? \"red\" : \"green\" }} />\n```\n\nExamples of **correct** code for this rule:\n\n```js\n<button />\n\n<button type=\"button\" />\n\n<button css={{ color: \"red\" }} />,\n\n<button css={{ fontSize: 12 }} />,\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/jsx-callback-arg-name.md",
    "content": "# jsx-callback-arg-name (jsx-callback-arg-name)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you about using an unsupported callback parameter name.\n\nExamples of **incorrect** code for this rule:\n\n```js\n\n<button onClick={ e => console.log(e) }/>\n\n<button onClick={ function (e) {} }/>\n\n<button onClick={ function foobar(e) {} }/>\n```\n\nExamples of **correct** code for this rule:\n\n```js\n<button/>\n\n<button type=\"button\"/>\n\n<button onClick={ null }/>\n\n<button onClick={ \"string\" }/>\n\n<button onClick={ event => doSomething(event) }/>\n\n<button onClick={ () => doSomething() }/>\n\n<button onClick={ function(event) {} }/>\n```\n\n<!-- ### Options -->\n\n<!-- If there are any options, describe them here. Otherwise, delete this section. -->\n\n<!-- ## When Not To Use It -->\n\n<!-- Give a short description of when it would be appropriate to turn off this rule. -->\n\n<!-- ## Further Reading -->\n\n<!-- If there are other links that describe the issue this rule addresses, please include them here in a bulleted list. -->\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/jsx-callback-arrow-function.md",
    "content": "# jsx-callback-arrow-function (jsx-callback-arrow-function)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you pass anything to a callback other than arrow function.\n\nExamples of **incorrect** code for this rule:\n\n```js\n      <button onClick={ function(event) {} }/>\n\n      <button onClick={ null }/>\n\n      <button onClick={ \"string\" }/>\n\n      <button onClick={ 1 }/>\n\n      <button onClick={ true }/>\n\n      <button onClick={ {} }/>\n\n      <button onClick={ [] }/>\n\n      <button onBlur={ [] }/>\n\n      <button onChange={ [] }/>\n```\n\nExamples of **correct** code for this rule:\n\n```js\n   <button/>\n\n   <button type=\"button\"/>\n\n   <button onClick={ event => doSomething(event) }/>\n\n   <button onClick={ event => doSomething() }/>\n\n   <button onClick={ event => {} }/>\n\n   <button onClick={ () => doSomething() }/>\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-assign-props-to-state.md",
    "content": "# no-assign-props-to-state (no-assign-props-to-state)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you declare a variable with the same name as a state property.\n\nExamples of **incorrect** code for this rule:\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({ text: props.text });\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({ text: null });\n\n  onMount(() => {\n    state.text = props.text;\n  });\n}\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    text: null,\n    fn1() {\n      return foo(props.text);\n    },\n    fn2() {\n      return foo({ text: props.text });\n    }\n  });\n\n  onMount(() => {\n    state.text = props.text;\n  });\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-async-methods-on-state.md",
    "content": "# no-async-methods-on-state (no-async-methods-on-state)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you use and async method as a value for state property.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent() {\n  const state = useStore({\n    async doSomethingAsync(event) {\n      return;\n    },\n  });\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent() {\n  const state = useStore({\n    doSomethingAsync(event) {\n      void (async function () {\n        const response = await fetch();\n      })();\n    },\n  });\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-conditional-logic-in-component-render.md",
    "content": "# no-conditional-logic-in-component-render (no-conditional-logic-in-component-render)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you write conditional logic inside jsx.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  if (x > 5) return <div />;\n  return <div />;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return <div />;\n}\n\nexport default function MyComponent(props) {\n  useEffect(() => {\n    if (x > 5) {\n      return foo;\n    }\n  }, []);\n  return <div />;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-state-destructuring.md",
    "content": "# no-state-destructuring (no-state-destructuring)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you try to use destructuring with state.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent() {\n  const state = useStore({ foo: '1' });\n\n  onMount(() => {\n    const { foo } = state;\n  });\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent() {\n  const state = useStore({ foo: '1' });\n\n  onMount(() => {\n    const foo = state.foo;\n  });\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-var-declaration-in-jsx.md",
    "content": "# no-var-declaration-in-jsx (no-var-declaration-in-jsx)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you declare a variable inside jsx.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {a.map((x) => {\n        const foo = 'bar';\n        return <span>{x}</span>;\n      })}\n    </div>\n  );\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return (\n    <div>\n      {a.map((x) => {\n        return <span>{x}</span>;\n      })}\n    </div>\n  );\n}\n\nexport default function MyComponent(props) {\n  return (\n    <div\n      someProp={a.find((b) => {\n        const { x } = b;\n        return x < 1;\n      })}\n    />\n  );\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-var-declaration-or-assignment-in-component.md",
    "content": "# no-var-declaration-or-assignment-in-component (no-var-declaration-or-assignment-in-component)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you declare or assign a variable inside Mitosis component file.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  const a = b;\n\n  return <div />;\n}\n\nlet a;\nexport default function MyComponent(props) {\n  a = b;\n\n  return <div />;\n}\n\nexport default function MyComponent(props) {\n  let a;\n  a = b;\n\n  return <div />;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return <div />;\n}\n\nexport default function MyComponent(props) {\n  useEffect(() => {\n    const a = b;\n  }, []);\n\n  return <div />;\n}\n\nexport default function MyComponent(props) {\n  const context = useContext(x)\n\n  const state = useStore({ name: null })\n\n  return (\n      <div />\n  );\n}\n\nexport default function MyComponent(props) {\n  const ref = useRef()\n\n  return (\n      <div />\n  );\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-var-name-same-as-prop-name.md",
    "content": "# no-var-name-same-as-prop-name (no-var-name-same-as-prop-name)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you declare a variable with the same name as a prop name.\n\nExamples of **incorrect** code for this rule:\n\n```js\nimport { useStore } from \"@builder.io/mitosis\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    getName() {\n      const name = props.name\n      return name + ' world'\n    }\n  });\n\n  return (\n    <div>\n      {state.getName()}\n    </div>\n  );\n}\n\n\nimport { useStore } from \"@builder.io/mitosis\";\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    getName() {\n      const name = props.name || 'hello'\n      return name + ' world'\n    }\n  });\n\n  return (\n    <div>\n      {state.getName()}\n    </div>\n  );\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  function myFunction() {\n    const foo = props.foo;\n  }\n\n  return <div />;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    getName() {\n      const name = props.name_;\n      return name + ' world';\n    },\n  });\n\n  return <div>{state.getName()}</div>;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/no-var-name-same-as-state-property.md",
    "content": "# no-var-name-same-as-state-property (no-var-name-same-as-state-property)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you declare a variable with the same name as a state property.\n\nExamples of **incorrect** code for this rule:\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  const foo = bar;\n\n  return <div />;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n\n    abc() {\n      const foo = 'baz';\n\n      return foo;\n    },\n  });\n\n  return <div />;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  function myFunction() {\n    const foo = 'some value';\n    state.foo = foo;\n  }\n\n  return <div />;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  function myFunction() {\n    const { foo } = props.obj;\n\n    state.foo = foo;\n  }\n\n  return <div />;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    response: 'null',\n    saveResponse(response) {\n      state.response = response;\n    },\n  });\n\n  return <div>Hello</div>;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    response: 'null',\n    saveResponse() {\n      const bar = (response) => {\n        return response;\n      };\n    },\n  });\n\n  return <div>Hello</div>;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    response: 'null',\n    saveResponse() {\n      function baz(response) {\n        return response;\n      }\n    },\n  });\n\n  return <div>Hello</div>;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  const foo_ = bar;\n\n  return <div />;\n}\n```\n\n```js\nimport { useStore } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    foo: 'bar',\n  });\n\n  function myFunction() {\n    const { foo: foo1 } = props.obj;\n\n    state.foo = foo;\n  }\n\n  return <div />;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/only-default-function-and-imports.md",
    "content": "# only-default-function-and-imports (only-default-function-and-imports)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you export anything other than import declarations, the component itself (in a default export), and type declarations file.\n\nExamples of **incorrect** code for this rule:\n\n```js\nimport { a } from 'b';\nexport default function MyComponent(props) {\n  return <div />;\n}\nexport const x = y;\n```\n\nExamples of **correct** code for this rule:\n\n```js\nimport x from 'y';\nimport { a } from 'b';\nexport default function MyComponent(props) {\n  return <div />;\n}\n\nimport x from \"y\";\nimport {a} from \"b\";\n\nexport type Props = {}\nexport interface OtherProps {}\ntype Props1 = {}\ninterface OtherProps2 {}\n\nexport default function MyComponent(props) {\n  return (\n      <div />\n  );\n}\n```\n\n```js\nuseMetadata({\n  qwik: {\n    component: {\n      isLight: true,\n    },\n  },\n});\n\nexport default function RenderComponent(props) {\n  return <div>Text</div>;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/prefer-show-over-ternary-operator.md",
    "content": "# prefer-show-over-ternary-operator (prefer-show-over-ternary-operator)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you use ternary\nexpression to render JSX.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return <div>{foo ? <bar /> : <baz />}</div>;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  return (\n    <div>\n      <Show when={foo}>\n        <bar />\n      </Show>\n      <Show when={!foo}>\n        <baz />\n      </Show>\n    </div>\n  );\n}\n```\n\n```js\n  export default function MyComponent(props) {\n    return <div> <input value={props.a ? 'a' : 'b'} /> </div>;\n```\n\n```js\nexport default function MyComponent(props) {\n      const state = useState({\n        getName() {\n          props.a ? 'a' : 'b'\n        }\n      })\nreturn <div />;\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/ref-no-current.md",
    "content": "# ref-no-current (ref-no-current)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you try to access the property current on refs.\n\nExamples of **incorrect** code for this rule:\n\n```js\nimport { useRef } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const inputRef = useRef();\n\n  const myFn = () => {\n    inputRef.current.focus();\n  };\n\n  return <div />;\n}\n\nimport { useRef as useR } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const inputRef = useR();\n\n  const myFn = () => {\n    inputRef.current.focus();\n  };\n\n  return <div />;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nimport { useRef } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const inputRef = useRef();\n  const myFn = () => {\n    inputRef.focus();\n  };\n  return <div />;\n}\n\nimport { useRef } from '@builder.io/mitosis';\n\nexport default function MyComponent(props) {\n  const someRef = useRef();\n  const myFn = () => {\n    someRef = 1;\n  };\n  return <div />;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/docs/rules/use-state-var-declarator.md",
    "content": "# use-state-var-declarator (use-state-var-declarator)\n\nThis rule warns about a Mitosis limitation.\n\n## Rule Details\n\nThis rule aims to warn you if you assign useStore() to a variable named anything other than state.\n\nExamples of **incorrect** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  const a = useStore();\n\n  return <div />;\n}\n```\n\nExamples of **correct** code for this rule:\n\n```js\nexport default function MyComponent(props) {\n  const state = useStore();\n  return <div />;\n}\n\nexport default function MyComponent(props) {\n  const [name, setName] = useState();\n  return <div />;\n}\n```\n"
  },
  {
    "path": "packages/eslint-plugin/package.json",
    "content": "{\n  \"name\": \"@builder.io/eslint-plugin-mitosis\",\n  \"version\": \"0.0.17\",\n  \"main\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"builder\",\n    \"builder.io\",\n    \"eslint\",\n    \"eslintplugin\",\n    \"jsx\",\n    \"mitosis\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/BuilderIO/mitosis\"\n  },\n  \"scripts\": {\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"coverage\": \"vitest run --coverage\",\n    \"build\": \"tsc\",\n    \"build:declaration\": \"tsc --project tsconfig.build.json\",\n    \"start\": \"tsc -w\",\n    \"remove-stableVersion\": \"./scripts/remove-stableVersion.sh\",\n    \"release:dev\": \"yarn build && yarn run remove-stableVersion && yarn version prerelease && yarn npm publish --tag dev\",\n    \"release:patch\": \"yarn build && yarn run remove-stableVersion && yarn version patch && yarn npm publish\"\n  },\n  \"files\": [\n    \"dist\"\n  ],\n  \"peerDependencies\": {\n    \"eslint\": \">=0.8.0\"\n  },\n  \"devDependencies\": {\n    \"@types/eslint\": \"^7.2.4\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"eslint\": \"^7.13.0\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^3.2.2\",\n    \"vitest\": \"^0.34.6\"\n  },\n  \"dependencies\": {\n    \"@babel/types\": \"7.12.6\",\n    \"ts-pattern\": \"^3.3.5\"\n  }\n}\n"
  },
  {
    "path": "packages/eslint-plugin/scripts/remove-stableVersion.sh",
    "content": "#!/bin/bash\n\n# Remove `stableVersion` before relreasing, as it's buggy.\n# https://github.com/yarnpkg/berry/issues/3868\necho \"$(jq 'del(.stableVersion)' package.json)\" >package.json\n"
  },
  {
    "path": "packages/eslint-plugin/src/configs/recommended.ts",
    "content": "import { rules } from '../rules';\n\nconst PLUGIN_NAME = '@builder.io/mitosis' as const;\n\ntype RulesKeys = `${typeof PLUGIN_NAME}/${keyof typeof rules}`;\n\nconst recommendedRules: Record<RulesKeys, 'error' | 'warn' | 'off' | 0 | 1 | 2> = {\n  '@builder.io/mitosis/css-no-vars': 'error',\n  '@builder.io/mitosis/jsx-callback-arg-name': 'error',\n  '@builder.io/mitosis/jsx-callback-arrow-function': 'error',\n  '@builder.io/mitosis/no-assign-props-to-state': 'error',\n  '@builder.io/mitosis/no-async-methods-on-state': 'error',\n  '@builder.io/mitosis/no-conditional-logic-in-component-render': 'error',\n  '@builder.io/mitosis/no-state-destructuring': 'error',\n  '@builder.io/mitosis/no-var-declaration-in-jsx': 'error',\n  '@builder.io/mitosis/no-var-declaration-or-assignment-in-component': 'error',\n  '@builder.io/mitosis/no-var-name-same-as-state-property': 'error',\n  '@builder.io/mitosis/only-default-function-and-imports': 'error',\n  '@builder.io/mitosis/ref-no-current': 'error',\n  '@builder.io/mitosis/use-state-var-declarator': 'error',\n  '@builder.io/mitosis/static-control-flow': 'error',\n  '@builder.io/mitosis/no-var-name-same-as-prop-name': 'error',\n  '@builder.io/mitosis/no-map-function-in-jsx-return-body': 'warn',\n  '@builder.io/mitosis/no-setter-with-same-name-as-state-prop': 'error',\n};\n\nexport default {\n  parserOptions: {\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: [PLUGIN_NAME],\n  rules: recommendedRules,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/src/constants/hooks.ts",
    "content": "export const HOOKS = {\n  STORE: 'useStore',\n  STATE: 'useState',\n  CONTEXT: 'useContext',\n  REF: 'useRef',\n  META_DATA: 'useMetadata',\n  DEFAULT_PROPS: 'useDefaultProps',\n} as const;\n"
  },
  {
    "path": "packages/eslint-plugin/src/helpers/__tests__/isMitosisPath.ts",
    "content": "import { describe, expect, it } from 'vitest';\nimport isMitosisPath from '../isMitosisPath';\n\ndescribe('is mitosis file helper', () => {\n  it('should return true if file name contains \"lite\" in the extension', () => {\n    const path = 'component.lite.tsx';\n\n    const result = isMitosisPath(path);\n\n    expect(result).toBe(true);\n  });\n  it('should return true if file name doesn\\'t contain \"lite\" in the extension', () => {\n    const path = 'component.tsx';\n\n    const result = isMitosisPath(path);\n\n    expect(result).toBe(false);\n  });\n\n  it('should return false if file name contains \"lite\" in the filename itself', () => {\n    const path = 'lite.anything.tsx';\n\n    const result = isMitosisPath(path);\n\n    expect(result).toBe(false);\n  });\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/helpers/isMitosisPath.ts",
    "content": "import * as path from 'path';\n\n/**\n * Restrict rule to only files that have a '.lite' ext, multiple exts is fine\n * (like file.lite.jsx).\n *\n * @example\n * ```typescript\n * isMitosisPath('file.jsx')\n * // false\n *\n * isMitosisPath('file.lite.jsx')\n * // true\n * ```\n */\nexport default function isMitosisPath(filename: string) {\n  filename = path.basename(filename);\n\n  const tokens = filename.split('.');\n  const exts = tokens.splice(1);\n\n  return exts.includes('lite');\n}\n"
  },
  {
    "path": "packages/eslint-plugin/src/helpers/noOp.ts",
    "content": "export default () => {};\n"
  },
  {
    "path": "packages/eslint-plugin/src/index.ts",
    "content": "import recommended from './configs/recommended';\n\nexport { rules } from './rules';\n\nexport const configs = {\n  recommended,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/css-no-vars.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../css-no-vars';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('css-no-vars', rule, {\n  valid: [\n    { ...opts, code: '<button/>' },\n    { ...opts, code: '<button css={{ color: \"red\" }} />' },\n    { ...opts, code: '<button css={{ fontSize: 12 }} />' },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: '<button onClick={ null }/>',\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    // Doesn't accept Identifier as object properties\n    {\n      ...opts,\n      code: '<button css={{ color: red }} />',\n      errors: [\"Css properties can't be a variable\"],\n    },\n    // Doesn't accept Identifier as object properties\n    {\n      ...opts,\n      code: '<button css={{ fontSize: 10, color: red }} />',\n      errors: [\"Css properties can't be a variable\"],\n    },\n    // Doesn't accept string as value for the css attribute\n    {\n      ...opts,\n      code: '<button css={\"sting\"} />',\n      errors: ['Css attribute value must be an object'],\n    },\n    // Doesn't accept number as value for the css attribute\n    {\n      ...opts,\n      code: '<button css={1} />',\n      errors: ['Css attribute value must be an object'],\n    },\n    // Doesn't accept boolean as value for the css attribute\n    {\n      ...opts,\n      code: '<button css={true} />',\n      errors: ['Css attribute value must be an object'],\n    },\n    // Doesn't accept ternary expression as value\n    {\n      ...opts,\n      code: '<button css={{color: a ? \"red\" : \"green\" }} />',\n      errors: [\"Css properties can't be a ternary expression\"],\n    },\n    {\n      ...opts,\n      code: '<button css={{backgroundColor: state.red }} />',\n      errors: [\"Css properties can't be a member expression\"],\n    },\n    {\n      ...opts,\n      code: '<button css={{backgroundColor: state.red, color: red }} />',\n      errors: [\"Css properties can't be a member expression\", \"Css properties can't be a variable\"],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/jsx-callback-arg-name.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../jsx-callback-arg-name';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('jsx-callback-arg-name', rule, {\n  valid: [\n    { ...opts, code: '<button/>', ...opts },\n    { ...opts, code: '<button type=\"button\"/>', ...opts },\n    { ...opts, code: '<button onClick={ null }/>', ...opts },\n    { ...opts, code: '<button onClick={ \"string\" }/>', ...opts },\n    { ...opts, code: '<button onClick={ event => doSomething(event) }/>' },\n    { ...opts, code: '<button onClick={ () => doSomething() }/>', ...opts },\n    { ...opts, code: '<button onClick={ function(event) {} }/>', ...opts },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: '<button onClick={ e => console.log(e) }/>',\n      filename: 'file.jsx',\n    },\n  ],\n\n  invalid: [\n    // We make no attempt to rename all references to the variable\n    {\n      ...opts,\n      code: '<button onClick={ e => console.log(e) }/>',\n      output: '<button onClick={ event => console.log(e) }/>',\n      errors: ['Callback parameter must be called `event`'],\n    },\n    // Arrow and normal functions are handled\n    {\n      ...opts,\n      code: '<button onClick={ function (e) {} }/>',\n      output: '<button onClick={ function (event) {} }/>',\n      errors: ['Callback parameter must be called `event`'],\n    },\n    // Renames the variable\n    {\n      ...opts,\n      code: '<button onClick={ function foobar(e) {} }/>',\n      output: '<button onClick={ function foobar(event) {} }/>',\n      errors: ['Callback parameter must be called `event`'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/jsx-callback-arrow-function.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../jsx-callback-arrow-function';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('jsx-callback-arrow-function', rule, {\n  valid: [\n    { ...opts, code: '<button/>', ...opts },\n    { ...opts, code: '<button type=\"button\"/>', ...opts },\n    { ...opts, code: '<button onClick={ event => doSomething(event) }/>' },\n    { ...opts, code: '<button onClick={ event => doSomething() }/>' },\n    { ...opts, code: '<button onClick={ event => {} }/>' },\n    { ...opts, code: '<button onClick={ () => doSomething() }/>', ...opts },\n    // Doesn't apply to attributes that doesn't match /^on[A-Z]/\n    { ...opts, code: '<button onsomething={ null }/>' },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: '<button onClick={ null }/>',\n      filename: 'file.jsx',\n    },\n  ],\n\n  invalid: [\n    // Doesn't accept regular function as a callback\n    {\n      ...opts,\n      code: '<button onClick={ function(event) {} }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept null as a callback\n    {\n      ...opts,\n      code: '<button onClick={ null }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept a string as a callback\n    {\n      ...opts,\n      code: '<button onClick={ \"string\" }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept a number as a callback\n    {\n      ...opts,\n      code: '<button onClick={ 1 }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept a boolean as a callback\n    {\n      ...opts,\n      code: '<button onClick={ true }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept an object as a callback\n    {\n      ...opts,\n      code: '<button onClick={ {} }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Doesn't accept an array as a callback\n    {\n      ...opts,\n      code: '<button onClick={ [] }/>',\n      output: '<button onClick={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    // Can handle events that starts that matches /^on[A-Z]/\n    {\n      ...opts,\n      code: '<button onBlur={ [] }/>',\n      output: '<button onBlur={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n    {\n      ...opts,\n      code: '<button onChange={ [] }/>',\n      output: '<button onChange={ (event)=>{} }/>',\n      errors: ['Callback value must be an arrow function expression'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-assign-props-to-state.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-assign-props-to-state';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-assign-props-to-state', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent(props) {\n        const state = useStore({ text: null });\n\n        onMount(() => {\n          state.text = props.text;\n        });\n      }\n      `,\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      import { foo } from '../helpers';\n\n      export default function MyComponent(props) {\n        const state = useStore({ \n          text: null,\n          fn1() {\n            return foo(props.text);\n          },\n          fn2() {\n            return foo({ text: props.text });\n          }\n        });\n\n        onMount(() => {\n          state.text = props.text;\n        });\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({ text: props.text });\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent(props) {\n        const state = useStore({ text: props.text });\n      }\n      `,\n      errors: ['\"props\" can\\'t be assign to  to \"state\" directly'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-async-methods-on-state.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-async-methods-on-state';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-async-methods-on-state', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent() {\n        const state = useStore({\n          doSomethingAsync(event) {\n            void (async function() {\n              const response = await fetch(); /* ... */\n            })();\n          },\n        });\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent() {\n        const state = useStore({\n          async doSomethingAsync(event) {\n            const response = await fetch(); /* ... */\n          },\n        });\n        return <div />\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent() {\n        const state = useStore({\n          async doSomethingAsync(event) {\n      \n            const response = await fetch(); /* ... */\n          },\n        });\n        \n        return <div />\n      }\n      `,\n      errors: ['async methods can\\'t be defined on \"state\"'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-conditional-logic-in-component-render.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-conditional-logic-in-component-render';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-conditional-logic-in-component-render', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        useEffect(()=>{\n          if (x > 5){\n            return foo;\n          }\n        }, [])\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        if (x > 5) return <div />;\n        return (\n            <div />\n        );\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        if (x > 5) return <div />;\n        return (\n            <div />\n        );\n      }\n    `,\n      errors: ['Conditional logic inside components is invalid'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-map-function-in-jsx-return-body.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-map-function-in-jsx-return-body';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018,\n    sourceType: 'module',\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-map-function-in-jsx-return-body', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n            import { useStore, For, onMount } from '@builder.io/mitosis';\n\n            export default function MyBasicForComponent() {\n              const state = useStore({\n                name: 'Decadef20',\n                names: ['Steve', 'Decadef20'],\n              });\n            \n              onMount(() => {\n                console.log('onMount code');\n              });\n            \n              return (\n                <div>\n                  <For each={state.names}>\n                    {(person) => (\n                      <>\n                        <input\n                          value={state.name}\n                          onChange={(event) => {\n                            state.name = event.target.value + ' and ' + person;\n                          }}\n                        />\n                        Hello {person}! I can run in Qwik, Web Component, React, Vue, Solid, or Liquid!\n                      </>\n                    )}\n                  </For>\n                </div>\n              );\n            }\n            \n            `,\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent() {\n        \n        return <div> {[].map()} </div>\n      }\n      `,\n      errors: ['No map function in jsx return body. Please use <For /> component instead.'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-setter-with-same-name-as-state-prop.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-setter-with-same-name-as-state-prop';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-setter-with-same-name-as-state-prop', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          nameFoo: 'foo',\n          getName() {\n            const name = props.name_ || 'hello'\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getName() {\n            const name = props.name || 'hello'\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\nimport { useState } from \"@builder.io/mitosis\";\nimport { x } from 'lodash'\n\nexport default function MyComponent(props) {\n  const state = useStore({\n    a: 123,\n    b: { c: 'fdsa' },\n    foo: \"Steve\",\n    setFoo(x) {\n      state.foo = x;\n    }\n  });\n\n  return (\n    <div>\n      <input\n        css={{\n          color: \"red\",\n        }}\n        value={x(name)}\n        onChange={(event) => setName(event.target.value)}\n      />\n      Hello! I can run natively in React, Vue, Svelte, Qwik, and many more frameworks!\n    </div>\n  );\n}\n      `,\n      errors: [\n        'Cannot name a state property `setFoo` because of a collision with Mitosis-generated code for the state property `foo`. Please use a different name.',\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-state-destructuring.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-state-destructuring';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-state-destructuring', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent() {\n        const state = useStore({ foo: '1' });\n      \n        onMount(() => {\n          const foo = state.foo;\n        });\n      }      \n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      export default function MyComponent() {\n        const state = useStore({ foo: '1' });\n      \n        onMount(() => {\n          const { foo } = state;\n        });\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent() {\n        const state = useStore({ foo: '1' });\n      \n        onMount(() => {\n          const { foo } = state;\n        });\n      }\n      `,\n      errors: [\"destructuring state isn't allowed: use standard assignment instead\"],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-var-declaration-in-jsx.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-var-declaration-in-jsx';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-var-declaration-in-jsx', rule, {\n  valid: [\n    // Doesn't affect map with no variable declaration inside.\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div>\n              {a.map(x =>{\n                return <span>{x}</span>\n              })}\n            </div>\n        );\n      }\n    `,\n    },\n    // Doesn't affect variable declaration inside JSX attributes.\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div someProp={a.find(b => {\n              const {x} = b;\n              return x < 1;\n            })} />\n        );\n      }\n    `,\n    },\n    // Doesn't affect none Mitosis files.\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div>\n              {a.map(x =>{\n                const foo = \"bar\";\n                return <span>{x}</span>\n              })}\n            </div>\n        );\n      }\n    `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    // Doesn't accept variable declaration inside map.\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div>\n              {a.map(x =>{\n                const foo = \"bar\";\n                return <span>{x}</span>\n              })}\n            </div>\n        );\n      }\n    `,\n      errors: ['Variable declaration inside jsx is ignored during compilation'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-var-declaration-or-assignment-in-component.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-var-declaration-or-assignment-in-component';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-var-declaration-or-assignment-in-component', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    // accepts declaration inside hooks.\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n\n        useEffect(()=>{\n          const a = b;\n        }, [])\n\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      import x from \"y\";\n\n      export default function MyComponent(props) {\n        const context = useContext(x)\n\n        const state = useStore({ name: null })\n\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      import x from \"y\";\n\n      export default function MyComponent(props) {\n        const ref = useRef(x)\n\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n          export default function MyComponent(props) {\n            const a = b;\n            \n            return (\n                <div />\n            );\n          }\n        `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    // Doesn't accept variable declaration inside component\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        const a = b;\n        \n        return (\n            <div />\n        );\n      }\n    `,\n      errors: ['Variable declaration inside component is ignored during compilation'],\n    },\n    // Doesn't accept variable assignment inside component\n    {\n      ...opts,\n      code: `\n      let a;\n      export default function MyComponent(props) {\n        a = b;\n        \n        return (\n            <div />\n        );\n      }\n    `,\n      errors: ['Variable assignment inside component is ignored during compilation'],\n    },\n    // Doesn't accept variable declaration and assignment inside component\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        let a;\n        a = b;\n        \n        return (\n            <div />\n        );\n      }\n    `,\n      errors: [\n        'Variable declaration inside component is ignored during compilation',\n        'Variable assignment inside component is ignored during compilation',\n      ],\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        let a;\n        a = b;\n        \n        return (\n            <div />\n        );\n      }\n    `,\n      errors: [\n        'Variable declaration inside component is ignored during compilation',\n        'Variable assignment inside component is ignored during compilation',\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-var-name-same-as-prop-name.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-var-name-same-as-prop-name';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-var-name-same-as-prop-name', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getName() {\n            const name = props.name_ || 'hello'\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getName() {\n            const name = props.name || 'hello'\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getName() {\n            const name = props.name\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n      errors: ['Variable name should not be same as prop name'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          getName() {\n            const name = props.name || 'hello'\n            return name + ' world'\n          }\n        });\n      \n        return (\n          <div>\n            {state.getName()}\n          </div>\n        );\n      }\n      `,\n      errors: ['Variable name should not be same as prop name'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          foo: 'bar',\n        });\n\n\n        function myFunction() {\n          const foo = props.foo;\n        }\n      \n        return <div />;\n      }\n      `,\n      errors: ['Variable name should not be same as prop name'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/no-var-name-same-as-state-property.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../no-var-name-same-as-state-property';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('no-var-name-same-as-state-property', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent(props) {\n        const state = useStore({\n            foo: \"bar\"\n          })\n          const foo_ = bar;\n        return (\n          <div />\n        );\n      }\n      `,\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent(props) {\n        const state = useStore({\n          foo: 'bar',\n        });\n        function myFunction() {\n          const { foo: foo1 } = props.obj\n          state.foo = foo;\n        }\n        return <div />;\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n      export default function MyComponent(props) {\n        const state = useStore({\n            foo: \"bar\"\n          })\n          const foo = bar;\n        return (\n          <div />\n        );\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({\n            foo: \"bar\"\n          })\n\n          const foo = bar;\n\n        return (\n          <div />\n        );\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          foo: 'bar',\n\n          abc() {\n            const foo = 'baz';\n\n            return foo;\n          }\n        });\n\n        return <div />;\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          foo: 'bar',\n        });\n\n        function myFunction() {\n          const foo = 'some value';\n          state.foo = foo;\n        }\n\n        return <div />;\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          foo: 'bar',\n        });\n\n        function myFunction() {\n          const { foo } = props.obj\n\n          state.foo = foo;\n        }\n\n        return <div />;\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          response: 'null',\n          saveResponse(response) {\n            state.response = response;\n          },\n        });\n\n        return (\n          <div>\n            Hello\n          </div>\n        );\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          response: 'null',\n          saveResponse() {\n            const bar = (response) => {\n              return response;\n            }\n          },\n        });\n\n        return (\n          <div>\n            Hello\n          </div>\n        );\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n    {\n      ...opts,\n      code: `\n      import { useStore } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const state = useStore({\n          response: 'null',\n          saveResponse() {\n      \n            function baz(response) {\n              return response\n            }\n\n          },\n        });\n      \n        return (\n          <div>\n            Hello\n          </div>\n        );\n      }\n      `,\n      errors: ['variables with the same name as a state property will shadow it'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/only-default-function-and-imports.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule, { onlyDefaultFunctionAndImportsMessage } from '../only-default-function-and-imports';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester({\n  parser: require.resolve('@typescript-eslint/parser'),\n});\n\nruleTester.run('only-default-function-and-imports', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import x from \"y\";\n      import {a} from \"b\";\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      import x from \"y\";\n      import {a} from \"b\";\n\n      export type Props = {}\n      export interface OtherProps {}\n      type Props1 = {}\n      interface OtherProps2 {}\n\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      useMetadata({\n        qwik: {\n          component: {\n            isLight: true,\n          },\n        },\n      });\n      \n      export default function RenderComponent(props) {\n        return (\n      <div>Text</div>\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      useDefaultProps({\n        test: \"XXX\"\n      });\n      \n      export default function RenderComponent(props) {\n        return (\n      <div>{props.test}</div>\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export const x = y;\n  \n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import {a} from \"b\";\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n      export const x = y;\n    `,\n      errors: [onlyDefaultFunctionAndImportsMessage],\n    },\n    {\n      ...opts,\n      code: `\n      useMeta({\n        qwik: {\n          component: {\n            isLight: true,\n          },\n        },\n      });\n      \n      export default function RenderComponent(props) {\n        return (\n      <div>Text</div>\n        );\n      }\n    `,\n      errors: [onlyDefaultFunctionAndImportsMessage],\n    },\n    {\n      ...opts,\n      code: `\n      useDefault({\n        test: \"XXX\"\n      });\n      \n      export default function RenderComponent(props) {\n        return (\n      <div>{props.test}</div>\n        );\n      }\n    `,\n      errors: [onlyDefaultFunctionAndImportsMessage],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/prefer-show-over-ternary-operator.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../prefer-show-over-ternary-operator';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester({\n  parser: require.resolve('@typescript-eslint/parser'),\n});\n\nruleTester.run('prefer-show-over-ternary-operator', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n          <div>\n            <Show when={foo}>\n              <bar />\n            </Show>\n            <Show when={!foo}>\n              <baz />\n            </Show>\n          </div>\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `export default function MyComponent(props) {\n      const state = useState({ \n        getName() {\n          props.a ? 'a' : 'b'\n        } \n      })\n      return <div />;\n    }`,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return <div> <input value={props.a ? 'a' : 'b'} /> </div>;\n      }`,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return <div>{foo ? <bar /> : <baz />}</div>;\n      }\n    `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return <div>{foo ? <bar /> : <baz />}</div>;\n      }\n    `,\n      errors: [\n        'Ternary expression support is minimal. Please use the Mitosis `<Show>` component instead.',\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/ref-no-current.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../ref-no-current';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('ref-no-current', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      import { useRef } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const inputRef = useRef();\n        const myFn = ()=>{\n          inputRef.focus();\n        }\n        return (\n            <div />\n        );\n      }\n      `,\n    },\n    {\n      ...opts,\n      code: `\n      import { useRef } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const someRef = useRef();\n        const myFn = ()=>{\n          someRef = 1;\n        }\n        return (\n            <div />\n        );\n      }\n      `,\n    },\n    // Doesn't apply to none mitosis files\n    {\n      ...opts,\n      code: `\n      import { useRef } from '@builder.io/mitosis';\n\n      export default function MyComponent(props) {\n        const inputRef = useRef();\n        const myFn = ()=>{\n          inputRef.current.focus();\n        }\n        return (\n            <div />\n        );\n      }\n      `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      import { useRef } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const inputRef = useRef();\n  \n        const myFn = ()=>{\n          inputRef.current.focus(); \n        }\n  \n        return (\n            <div />\n        );\n      }\n      `,\n      errors: [\n        'property \"current\" doesn\\'t exists on refs. you can call methods directly on them e.g: inputRef.focus(), or assign them a value e.g: inputRef = 1;',\n      ],\n    },\n    {\n      ...opts,\n      code: `\n      import { useRef as useR } from \"@builder.io/mitosis\";\n\n      export default function MyComponent(props) {\n        const inputRef = useR();\n  \n        const myFn = ()=>{\n          inputRef.current.focus(); \n        }\n  \n        return (\n            <div />\n        );\n      }\n      `,\n      errors: [\n        'property \"current\" doesn\\'t exists on refs. you can call methods directly on them e.g: inputRef.focus(), or assign them a value e.g: inputRef = 1;',\n      ],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/static-control-flow.test.ts",
    "content": "import { RuleTester } from 'eslint';\n\nimport { staticControlFlow } from '../static-control-flow';\n\nconst ruleTester = new RuleTester();\n\nconst options = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nruleTester.run('static-control-flow', staticControlFlow, {\n  valid: [\n    {\n      ...options,\n      code: '<Show when={foo}>{bar}</Show>',\n    },\n    {\n      ...options,\n      code: '<For each={list}>{item => <span />}</For>',\n    },\n    {\n      ...options,\n      code: '<div>{list.map(item => <span />)}</div>',\n    },\n  ],\n\n  invalid: [\n    {\n      ...options,\n      code: '<div>{foo ? <div /> : <span />}</div>',\n      errors: [{ message: /Ternaries/i }],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/__tests__/use-state-var-declarator.test.ts",
    "content": "import { RuleTester } from 'eslint';\nimport rule from '../use-state-var-declarator';\n\nconst opts = {\n  filename: 'component.lite.tsx',\n  parserOptions: {\n    ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features\n    sourceType: 'module', // Allows for the use of imports\n    ecmaFeatures: {\n      jsx: true, // Allows for the parsing of JSX\n    },\n  },\n} as const;\n\nvar ruleTester = new RuleTester();\n\nruleTester.run('use-state-var-declarator', rule, {\n  valid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        const state = useStore();\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        const [name, setName] = useState();\n        return (\n            <div />\n        );\n      }\n    `,\n    },\n\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        const foo = useStore();\n        return (\n            <div />\n        );\n      }\n    `,\n      filename: 'file.jsx',\n    },\n  ],\n  invalid: [\n    {\n      ...opts,\n      code: `\n      export default function MyComponent(props) {\n        const a = useStore();\n        \n        return (\n            <div />\n        );\n      }\n    `,\n      errors: ['useStore should be exclusively assigned to a variable called state'],\n    },\n  ],\n});\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/css-no-vars.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { match, not, when } from 'ts-pattern';\nimport isMitosisPath from '../helpers/isMitosisPath';\nimport noOp from '../helpers/noOp';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow variables as a value for the css attribute.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      JSXAttribute(node) {\n        match(node)\n          .with(\n            {\n              name: {\n                name: 'css',\n                value: {\n                  expression: {\n                    type: 'ObjectExpression',\n\n                    properties: [],\n                  },\n                },\n              },\n            },\n            noOp,\n          )\n          .with(\n            {\n              name: {\n                name: 'css',\n              },\n              value: {\n                expression: {\n                  type: 'ObjectExpression',\n                },\n              },\n            },\n            ({ value: { expression } }) => {\n              const { properties } = expression as any;\n              for (const prop of properties) {\n                if (prop.value && types.isIdentifier(prop.value)) {\n                  context.report({\n                    node: prop as any,\n                    message: \"Css properties can't be a variable\",\n                  });\n                } else if (prop.value && types.isConditionalExpression(prop.value)) {\n                  context.report({\n                    node: prop as any,\n                    message: \"Css properties can't be a ternary expression\",\n                  });\n                } else if (prop.value && types.isMemberExpression(prop.value)) {\n                  context.report({\n                    node: prop as any,\n                    message: \"Css properties can't be a member expression\",\n                  });\n                }\n              }\n            },\n          )\n          .with(\n            {\n              name: {\n                name: 'css',\n              },\n              value: {\n                expression: not(when(types.isObjectExpression)),\n              },\n            },\n            ({ value: { expression } }) => {\n              context.report({\n                node: expression as any,\n                message: 'Css attribute value must be an object',\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/index.ts",
    "content": "import cssNoVars from './css-no-vars';\nimport jsxCallbackArgNameRule from './jsx-callback-arg-name';\nimport jsxCallbackArrowFunction from './jsx-callback-arrow-function';\nimport noAssignPropsToState from './no-assign-props-to-state';\nimport noAsyncMethodsOnState from './no-async-methods-on-state';\nimport noConditionalLogicInComponentRender from './no-conditional-logic-in-component-render';\nimport noMapFunctionInJsxReturnBody from './no-map-function-in-jsx-return-body';\nimport noSetterWithSameNameAsStateProp from './no-setter-with-same-name-as-state-prop';\nimport noStateDestructuring from './no-state-destructuring';\nimport notVarDeclarationInJSX from './no-var-declaration-in-jsx';\nimport noVarDeclarationOrAssignmentInComponent from './no-var-declaration-or-assignment-in-component';\nimport noVarNameSameAsPropName from './no-var-name-same-as-prop-name';\nimport noVarNameSameAsStateProperty from './no-var-name-same-as-state-property';\nimport onlyDefaultFunctionAndImports from './only-default-function-and-imports';\nimport refNoCurrent from './ref-no-current';\nimport { staticControlFlow } from './static-control-flow';\nimport useStateVarDeclarator from './use-state-var-declarator';\n\nexport const rules = {\n  'css-no-vars': cssNoVars,\n  'ref-no-current': refNoCurrent,\n  'static-control-flow': staticControlFlow,\n  'no-state-destructuring': noStateDestructuring,\n  'jsx-callback-arg-name': jsxCallbackArgNameRule,\n  'no-assign-props-to-state': noAssignPropsToState,\n  'use-state-var-declarator': useStateVarDeclarator,\n  'no-async-methods-on-state': noAsyncMethodsOnState,\n  'no-var-declaration-in-jsx': notVarDeclarationInJSX,\n  'no-var-name-same-as-prop-name': noVarNameSameAsPropName,\n  'jsx-callback-arrow-function': jsxCallbackArrowFunction,\n  'no-var-name-same-as-state-property': noVarNameSameAsStateProperty,\n  'only-default-function-and-imports': onlyDefaultFunctionAndImports,\n  'no-conditional-logic-in-component-render': noConditionalLogicInComponentRender,\n  'no-var-declaration-or-assignment-in-component': noVarDeclarationOrAssignmentInComponent,\n  'no-map-function-in-jsx-return-body': noMapFunctionInJsxReturnBody,\n  'no-setter-with-same-name-as-state-prop': noSetterWithSameNameAsStateProp,\n};\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/jsx-callback-arg-name.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { match, not, when } from 'ts-pattern';\nimport isMitosisPath from '../helpers/isMitosisPath';\nimport noOp from '../helpers/noOp';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow naming the event arg for callbacks anything other than \"event\".',\n      recommended: true,\n    },\n    fixable: 'code',\n    schema: [\n      {},\n      // fill in your schema\n    ],\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      JSXExpressionContainer(node) {\n        match(node)\n          // Ignore zero length array's\n          .with({ expression: { params: [] } }, noOp)\n          // Ignore anything that doesn't have a function expression\n          .with({ expression: not(when(types.isFunction)) }, noOp)\n          // The actual match case\n          .with(\n            {\n              parent: when(types.isJSXAttribute),\n              expression: {\n                // WARN: This is a list, not a 1-length tuple, this might not\n                // work on cases that have multiple args - I don't know if there\n                // is anything in the web api that expects multiple args for the\n                // callback.\n                params: [{ type: 'Identifier', name: not('event') }],\n              },\n            },\n            ({\n              expression: {\n                params: [arg1],\n              },\n            }: any) => {\n              context.report({\n                node: arg1,\n                message: 'Callback parameter must be called `event`',\n                fix(fixer) {\n                  return fixer.replaceText(arg1, 'event');\n                },\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n    };\n\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/jsx-callback-arrow-function.ts",
    "content": "import * as types from '@babel/types';\nimport { AST, Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\nconst regex = new RegExp('^on[A-Z]');\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow using regular functions as callbacks.',\n      recommended: true,\n    },\n    fixable: 'code',\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      JSXAttribute(node) {\n        const {\n          name: { name },\n          value,\n        } = node;\n\n        if (typeof name !== 'string' || !regex.test(name)) return;\n        if (types.isArrowFunctionExpression(value.expression)) return;\n\n        context.report({\n          node: value.expression as any,\n          message: 'Callback value must be an arrow function expression',\n          fix(fixer) {\n            return fixer.replaceTextRange(node.value.expression.range as AST.Range, '(event)=>{}');\n          },\n        });\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-assign-props-to-state.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow assigning props to state',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      CallExpression(node) {\n        const program = context.getAncestors()[0];\n\n        if (!types.isProgram(program)) return;\n\n        const importSpecifiers = program.body.find((n) => types.isImportDeclaration(n));\n\n        if (!types.isImportDeclaration(importSpecifiers)) return;\n\n        const useState = importSpecifiers.specifiers.find((n) => {\n          if (\n            types.isImportSpecifier(n) &&\n            (n.imported.name === HOOKS.STATE || n.imported.name === HOOKS.STORE)\n          ) {\n            return true;\n          }\n        });\n\n        if (!types.isImportSpecifier(useState)) return;\n        if (!types.isIdentifier(node.callee)) return;\n        if (node.callee.name !== useState.imported.name) return;\n\n        if (\n          !useState ||\n          !types.isIdentifier(node.callee) ||\n          !types.isObjectExpression(node.arguments[0])\n        )\n          return;\n\n        const component = program.body.find((n) => types.isExportDefaultDeclaration(n));\n\n        if (!types.isExportDefaultDeclaration(component)) return;\n\n        if (\n          !types.isFunctionDeclaration(component.declaration) &&\n          !types.isArrowFunctionExpression(component.declaration)\n        )\n          return;\n\n        const { params } = component.declaration;\n\n        if (!types.isIdentifier(params[0])) return;\n        const { name } = params[0];\n\n        for (const prop of node.arguments[0].properties) {\n          if (!types.isProperty(prop)) return;\n\n          const { object } = (prop as types.Property).value as types.MemberExpression;\n\n          if (!types.isIdentifier(object)) return;\n\n          if (object.name === name) {\n            context.report({\n              node: prop,\n              message: '\"props\" can\\'t be assign to  to \"state\" directly',\n            });\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-async-methods-on-state.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow defining async methods as a state property',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      CallExpression(node) {\n        const program = context.getAncestors()[0];\n\n        if (!types.isProgram(program)) return;\n\n        const importSpecifiers = program.body.find((n) => types.isImportDeclaration(n));\n\n        if (!types.isImportDeclaration(importSpecifiers)) return;\n\n        const useState = importSpecifiers.specifiers.find((n) => {\n          if (\n            types.isImportSpecifier(n) &&\n            (n.imported.name === HOOKS.STATE || n.imported.name === HOOKS.STORE)\n          ) {\n            return true;\n          }\n        });\n\n        if (\n          !useState ||\n          !types.isIdentifier(node.callee) ||\n          !types.isObjectExpression(node.arguments[0])\n        )\n          return;\n\n        for (const prop of node.arguments[0].properties) {\n          if (\n            !types.isProperty(prop) ||\n            !types.isIdentifier((prop as types.Property).key) ||\n            !types.isFunctionExpression((prop as types.Property).value)\n          )\n            continue;\n\n          const { async } = (prop as types.Property).value as types.ArrowFunctionExpression;\n\n          if (async) {\n            context.report({\n              node: prop,\n              message: 'async methods can\\'t be defined on \"state\"',\n            });\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-conditional-logic-in-component-render.ts",
    "content": "import { Rule } from 'eslint';\nimport { match } from 'ts-pattern';\nimport isMitosisPath from '../helpers/isMitosisPath';\nimport noOp from '../helpers/noOp';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow conditional logic in component render.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      IfStatement(node) {\n        match(node)\n          .with(\n            {\n              type: 'IfStatement',\n              parent: {\n                type: 'BlockStatement',\n                parent: {\n                  type: 'FunctionDeclaration',\n                  parent: {\n                    type: 'ExportDefaultDeclaration',\n                  },\n                },\n              },\n            },\n            (node) => {\n              context.report({\n                node: node as any,\n                message: 'Conditional logic inside components is invalid',\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-map-function-in-jsx-return-body.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'no map function in jsx return body',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    if (!isMitosisPath(context.getFilename())) return {};\n\n    return {\n      JSXExpressionContainer(node) {\n        if (types.isJSXExpressionContainer(node)) {\n          if (types.isCallExpression(node.expression)) {\n            if (\n              types.isMemberExpression(node.expression.callee) &&\n              types.isIdentifier(node.expression.callee.property) &&\n              node.expression.callee.property.name === 'map'\n            ) {\n              context.report({\n                node: node as any,\n                message:\n                  'No map function in jsx return body. Please use <For /> component instead.',\n              });\n            }\n          }\n        }\n      },\n    };\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-setter-with-same-name-as-state-prop.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow defining setters with the same name as a state property',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      Property(node) {\n        if (\n          types.isIdentifier(node.key) &&\n          types.isCallExpression(node.parent?.parent) &&\n          types.isIdentifier(node.parent?.parent?.callee) &&\n          node.parent?.parent?.callee?.name === 'useStore'\n        ) {\n          const stateKeys = types.isObjectExpression(node.parent)\n            ? node.parent.properties.map((property) => {\n                if (property.type === 'Property' && types.isIdentifier(property.key)) {\n                  return property.key.name;\n                }\n                return undefined;\n              })\n            : [];\n\n          const propName = node.key.name;\n\n          const isSetter =\n            propName.startsWith('set') &&\n            propName.length > 3 &&\n            propName[3] === propName[3].toUpperCase();\n\n          if (!isSetter) return;\n\n          const strippedStateName = propName.replace(/^set/, '');\n          const lowercasedStateName =\n            strippedStateName.charAt(0).toLowerCase() + strippedStateName.slice(1);\n\n          if (stateKeys.includes(lowercasedStateName)) {\n            context.report({\n              node,\n              message: `Cannot name a state property \\`${propName}\\` because of a collision with Mitosis-generated code for the state property \\`${lowercasedStateName}\\`. Please use a different name.`,\n            });\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-state-destructuring.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow destructuring state',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      VariableDeclarator(node) {\n        if (\n          !types.isObjectPattern(node.id) ||\n          !types.isIdentifier(node.init) ||\n          node.init.name !== 'state'\n        )\n          return;\n\n        context.report({\n          node,\n          message: \"destructuring state isn't allowed: use standard assignment instead\",\n        });\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-var-declaration-in-jsx.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'suggestion',\n    docs: {\n      description: 'disallow variable declarations inside jsx.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      VariableDeclarator(node) {\n        const ans = context.getAncestors();\n        if (ans.find(types.isJSXElement as any) && !ans.find(types.isJSXAttribute as any)) {\n          context.report({\n            node: node as any,\n            message: 'Variable declaration inside jsx is ignored during compilation',\n          });\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-var-declaration-or-assignment-in-component.ts",
    "content": "import { Rule } from 'eslint';\nimport { match, not, when } from 'ts-pattern';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\nimport noOp from '../helpers/noOp';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'suggestion',\n    docs: {\n      description: 'disallow variable declaration inside component file.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      VariableDeclaration(node) {\n        match(node)\n          .with(\n            {\n              declarations: [\n                not({\n                  init: {\n                    type: 'CallExpression',\n                    callee: {\n                      type: 'Identifier',\n                      name: when(\n                        (v) =>\n                          v === HOOKS.STATE ||\n                          v === HOOKS.CONTEXT ||\n                          v === HOOKS.STORE ||\n                          v === HOOKS.REF,\n                      ),\n                    },\n                  },\n                }),\n              ],\n              parent: {\n                type: 'BlockStatement',\n                parent: {\n                  type: 'FunctionDeclaration',\n                  parent: {\n                    type: 'ExportDefaultDeclaration',\n                  },\n                },\n              },\n            },\n            (node) => {\n              context.report({\n                node: node as any,\n                message: 'Variable declaration inside component is ignored during compilation',\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n      AssignmentExpression(node) {\n        match(node)\n          .with(\n            {\n              parent: {\n                type: 'ExpressionStatement',\n                parent: {\n                  type: 'BlockStatement',\n                  parent: {\n                    type: 'FunctionDeclaration',\n                    parent: {\n                      type: 'ExportDefaultDeclaration',\n                    },\n                  },\n                },\n              },\n            },\n            (node) => {\n              context.report({\n                node: node as any,\n                message: 'Variable assignment inside component is ignored during compilation',\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-var-name-same-as-prop-name.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow defining variables with the same name as a prop name',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      VariableDeclarator(node) {\n        const ancestors = context.getAncestors();\n        const program = context.getAncestors()[0];\n\n        if (!types.isProgram(program)) return;\n\n        const defaultExport = ancestors.find((n) => types.isExportDefaultDeclaration(n));\n\n        if (!types.isExportDefaultDeclaration(defaultExport)) return;\n        if (!types.isFunctionDeclaration(defaultExport.declaration)) return;\n\n        const { declaration } = defaultExport;\n        const { params } = declaration;\n        const props = params[0];\n\n        if (!types.isIdentifier(props)) return;\n\n        const propsArgName = props.name;\n        const { id, init } = node;\n\n        if (!types.isIdentifier(id)) return;\n\n        if (types.isLogicalExpression(init)) {\n          const { right, left } = init;\n\n          if (!types.isMemberExpression(left) && !types.isMemberExpression(right)) return;\n\n          if (\n            types.isMemberExpression(left) &&\n            types.isIdentifier(left.object) &&\n            types.isIdentifier(left.property) &&\n            left.object.name === propsArgName\n          ) {\n            if (id.name === left.property.name) {\n              context.report({\n                node: id,\n                message: 'Variable name should not be same as prop name',\n              });\n            }\n          }\n\n          if (\n            types.isMemberExpression(right) &&\n            types.isIdentifier(right.object) &&\n            types.isIdentifier(right.property) &&\n            right.object.name === propsArgName\n          ) {\n            if (id.name === right.property.name) {\n              context.report({\n                node: id,\n                message: 'Variable name should not be same as prop name',\n              });\n            }\n          }\n        } else if (types.isMemberExpression(init)) {\n          if (\n            types.isIdentifier(init.object) &&\n            types.isIdentifier(init.property) &&\n            init.object.name === propsArgName\n          ) {\n            if (id.name === init.property.name) {\n              context.report({\n                node: id,\n                message: 'Variable name should not be same as prop name',\n              });\n            }\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/no-var-name-same-as-state-property.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow defining variables with the same name as a state property',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      CallExpression(node) {\n        const program = context.getAncestors()[0];\n\n        if (!types.isProgram(program)) return;\n\n        const importSpecifiers = program.body.find((n) => types.isImportDeclaration(n));\n\n        if (!types.isImportDeclaration(importSpecifiers)) return;\n\n        const useState = importSpecifiers.specifiers.find((n) => {\n          if (\n            types.isImportSpecifier(n) &&\n            (n.imported.name === HOOKS.STATE || n.imported.name === HOOKS.STORE)\n          ) {\n            return true;\n          }\n        });\n\n        if (!useState || !types.isIdentifier(node.callee)) return;\n\n        const useStateHookLocalName = useState?.local.name;\n\n        if (\n          node.callee.name !== useStateHookLocalName ||\n          !types.isObjectExpression(node.arguments[0])\n        )\n          return;\n        const component = program.body.find((n) => types.isExportDefaultDeclaration(n));\n\n        if (!types.isExportDefaultDeclaration(component)) return;\n\n        if (\n          !types.isFunctionDeclaration(component.declaration) &&\n          !types.isArrowFunctionExpression(component.declaration)\n        )\n          return;\n        if (!types.isBlock(component.declaration.body)) return;\n        const { body: componentBody } = component.declaration.body;\n\n        for (const prop of node.arguments[0].properties) {\n          if (!types.isProperty(prop) || !types.isIdentifier((prop as types.Property).key))\n            continue;\n\n          if (types.isFunctionExpression((prop as types.Property).value)) {\n            const { body } = ((prop as types.Property).value as types.FunctionExpression).body;\n            const params = ((prop as types.Property).value as types.FunctionExpression).params;\n\n            for (const prop of node.arguments[0].properties) {\n              if (!types.isProperty(prop) || !types.isIdentifier((prop as types.Property).key))\n                continue;\n              const { name } = (prop as types.Property).key as types.Identifier;\n              params.forEach((p) => {\n                if (types.isIdentifier(p) && p.name === name) {\n                  context.report({\n                    node: prop,\n                    message: 'variables with the same name as a state property will shadow it',\n                  });\n                }\n              });\n            }\n\n            const varDeclarators: types.VariableDeclarator[] = [];\n            const functionDeclarations: types.FunctionDeclaration[] = [];\n            body.forEach((n) => {\n              if (types.isVariableDeclaration(n)) {\n                varDeclarators.push(...n.declarations);\n              } else if (types.isFunctionDeclaration(n)) {\n                functionDeclarations.push(n);\n              }\n            });\n\n            if (!varDeclarators.length && !functionDeclarations.length) continue;\n\n            for (const d of functionDeclarations) {\n              for (const p of d.params) {\n                if (!types.isIdentifier(p)) continue;\n                for (const prop of node.arguments[0].properties) {\n                  if (!types.isProperty(prop) || !types.isIdentifier((prop as types.Property).key))\n                    continue;\n                  const { name } = (prop as types.Property).key as types.Identifier;\n                  if (p.name === name) {\n                    context.report({\n                      node: prop,\n                      message: 'variables with the same name as a state property will shadow it',\n                    });\n                  }\n                }\n              }\n            }\n\n            for (const d of varDeclarators) {\n              for (const prop of node.arguments[0].properties) {\n                if (!types.isProperty(prop) || !types.isIdentifier((prop as types.Property).key))\n                  continue;\n                const { name } = (prop as types.Property).key as types.Identifier;\n                if (!types.isIdentifier(d.id)) continue;\n                if (d.id.name === name) {\n                  context.report({\n                    node: prop,\n                    message: 'variables with the same name as a state property will shadow it',\n                  });\n                } else if (\n                  types.isArrowFunctionExpression(d.init) ||\n                  types.isFunctionExpression(d.init)\n                ) {\n                  const { params } = d.init;\n                  params.forEach((p) => {\n                    if (types.isIdentifier(p) && p.name === name) {\n                      context.report({\n                        node: prop,\n                        message: 'variables with the same name as a state property will shadow it',\n                      });\n                    }\n                  });\n                }\n              }\n            }\n          } else {\n            const { name } = (prop as types.Property).key as types.Identifier;\n\n            for (const n of componentBody) {\n              if (types.isVariableDeclaration(n)) {\n                for (const d of n.declarations) {\n                  if (\n                    !types.isVariableDeclarator(d) ||\n                    !types.isIdentifier(d.id) ||\n                    d.id.name !== name\n                  )\n                    continue;\n\n                  context.report({\n                    node: d,\n                    message: 'variables with the same name as a state property will shadow it',\n                  });\n                }\n              } else if (types.isFunctionDeclaration(n)) {\n                const { body } = n.body;\n                const varDeclarators: types.VariableDeclarator[] = [];\n                body.forEach((n) => {\n                  if (types.isVariableDeclaration(n)) {\n                    varDeclarators.push(...n.declarations);\n                  }\n                });\n\n                for (const d of varDeclarators) {\n                  if (!types.isIdentifier(d.id) && !types.isObjectPattern(d.id)) continue;\n                  if (types.isObjectPattern(d.id)) {\n                    for (const p of d.id.properties) {\n                      if (\n                        types.isProperty(p) &&\n                        types.isIdentifier(p.value) &&\n                        p.value.name == name\n                      ) {\n                        context.report({\n                          node: prop,\n                          message:\n                            'variables with the same name as a state property will shadow it',\n                        });\n                      }\n                    }\n                  } else if (d.id.name === name) {\n                    context.report({\n                      node: prop,\n                      message: 'variables with the same name as a state property will shadow it',\n                    });\n                  }\n                }\n              }\n            }\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/only-default-function-and-imports.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nexport const onlyDefaultFunctionAndImportsMessage =\n  'Mitosis component files should only contain import declarations, the component itself (in a default export), module-scope hooks, and type declarations';\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description:\n        'disallow anything other than import declarations, the component itself (in a default export), module-scope hooks, and type declarations inside the component file.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      Program(node) {\n        const { body } = node;\n\n        for (const child of body) {\n          if (\n            !types.isImportDeclaration(child) &&\n            !types.isExportDefaultDeclaration(child) &&\n            !types.isTypeAlias(child) &&\n            !types.isInterfaceDeclaration(child) &&\n            !types.isTSInterfaceDeclaration(child) &&\n            !types.isTSTypeAliasDeclaration(child) &&\n            !(\n              types.isExportNamedDeclaration(child) &&\n              types.isTSInterfaceDeclaration(child.declaration)\n            ) &&\n            !(\n              types.isExportNamedDeclaration(child) &&\n              types.isTSTypeAliasDeclaration(child.declaration)\n            ) &&\n            (!types.isExpressionStatement(child) ||\n              !types.isCallExpression(child.expression) ||\n              !types.isIdentifier(child.expression.callee) ||\n              (child.expression.callee.name !== HOOKS.META_DATA &&\n                child.expression.callee.name !== HOOKS.DEFAULT_PROPS))\n          ) {\n            context.report({\n              node: child as any,\n              message: onlyDefaultFunctionAndImportsMessage,\n            });\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/prefer-show-over-ternary-operator.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'suggestion',\n    docs: {\n      description: '<Show> is preferred over ternary expressions',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      ConditionalExpression(node) {\n        if (types.isJSXAttribute(node.parent.parent) && types.isJSXExpressionContainer(node.parent))\n          return;\n        if (types.isExpressionStatement(node.parent)) return;\n\n        context.report({\n          node,\n          message:\n            'Ternary expression support is minimal. Please use the Mitosis `<Show>` component instead.',\n        });\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/ref-no-current.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow using ref.current',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n\n    const listener: Rule.RuleListener = {\n      MemberExpression(node) {\n        if (types.isIdentifier(node.property) && node.property.name === 'current') {\n          if (types.isIdentifier(node.object)) {\n            const { name } = node.object;\n            const program = context.getAncestors()[0];\n\n            if (!types.isProgram(program)) return;\n\n            const importSpecifiers = program.body.find((n) => types.isImportDeclaration(n));\n\n            if (!types.isImportDeclaration(importSpecifiers)) return;\n\n            const useRef = importSpecifiers.specifiers.find((n) => {\n              if (types.isImportSpecifier(n) && n.imported.name === 'useRef') {\n                return true;\n              }\n            });\n\n            if (!useRef) return;\n\n            const useRefHookLocalName = useRef?.local.name;\n\n            const component = program.body.find((n) => types.isExportDefaultDeclaration(n));\n\n            if (!types.isExportDefaultDeclaration(component)) return;\n\n            if (\n              !types.isFunctionDeclaration(component.declaration) &&\n              !types.isArrowFunctionExpression(component.declaration)\n            )\n              return;\n\n            if (!types.isBlock(component.declaration.body)) return;\n            const { body: componentBody } = component.declaration.body;\n            for (const n of componentBody) {\n              if (!types.isVariableDeclaration(n)) continue;\n\n              for (const d of n.declarations) {\n                if (\n                  !types.isVariableDeclarator(d) ||\n                  !types.isIdentifier(d.id) ||\n                  d.id.name !== name ||\n                  !types.isCallExpression(d.init) ||\n                  !types.isIdentifier(d.init.callee) ||\n                  d.init.callee.name !== useRefHookLocalName\n                )\n                  continue;\n\n                context.report({\n                  node,\n                  message: `property \"current\" doesn\\'t exists on refs. you can call methods directly on them e.g: ${name}.focus(), or assign them a value e.g: ${name} = 1;`,\n                });\n              }\n            }\n          }\n        }\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/static-control-flow.ts",
    "content": "import * as types from '@babel/types';\nimport { Rule } from 'eslint';\nimport isMitosisPath from '../helpers/isMitosisPath';\n\nexport const staticControlFlow: Rule.RuleModule = {\n  create(context) {\n    if (!isMitosisPath(context.getFilename())) return {};\n\n    return {\n      VariableDeclarator(node) {\n        if (types.isVariableDeclarator(node)) {\n          if (\n            types.isObjectPattern(node.id) &&\n            types.isIdentifier(node.init) &&\n            node.init.name === 'state'\n          ) {\n            context.report({\n              node: node as any,\n              message: 'Destructuring the state object is currently not supported',\n            });\n          }\n        }\n      },\n\n      JSXExpressionContainer(node) {\n        if (types.isJSXExpressionContainer(node)) {\n          if (types.isConditionalExpression(node.expression)) {\n            if (\n              types.isJSXElement(node.expression.consequent) ||\n              types.isJSXElement(node.expression.alternate)\n            ) {\n              context.report({\n                node: node as any,\n                message:\n                  'Ternaries around JSX Elements are not currently supported. Instead use binary expressions - e.g. {foo ? <bar /> : <baz />} should be {foo && <bar />}{!foo && <baz />}',\n              });\n            }\n          }\n        }\n      },\n    };\n  },\n};\n"
  },
  {
    "path": "packages/eslint-plugin/src/rules/use-state-var-declarator.ts",
    "content": "import { Rule } from 'eslint';\nimport { match, not } from 'ts-pattern';\nimport { HOOKS } from '../constants/hooks';\nimport isMitosisPath from '../helpers/isMitosisPath';\nimport noOp from '../helpers/noOp';\n\n// ------------------------------------------------------------------------------\n// Rule Definition\n// ------------------------------------------------------------------------------\n\nconst rule: Rule.RuleModule = {\n  meta: {\n    type: 'problem',\n    docs: {\n      description: 'disallow assigning useStore() to a variable with name other than state.',\n      recommended: true,\n    },\n  },\n\n  create(context) {\n    // variables should be defined here\n    const filename = context.getFilename();\n\n    if (!isMitosisPath(filename)) return {};\n\n    // ----------------------------------------------------------------------\n    // Helpers\n    // ----------------------------------------------------------------------\n\n    // any helper functions should go here or else delete this section\n\n    // ----------------------------------------------------------------------\n    // Public\n    // ----------------------------------------------------------------------\n    //\n    const listener: Rule.RuleListener = {\n      CallExpression(node) {\n        match(node)\n          .with(\n            {\n              callee: {\n                name: HOOKS.STORE,\n              },\n              parent: {\n                type: 'VariableDeclarator',\n                id: {\n                  name: not('state'),\n                },\n              },\n            },\n            (node) => {\n              context.report({\n                node: node.parent.id as any,\n                message: `${HOOKS.STORE} should be exclusively assigned to a variable called state`,\n              });\n            },\n          )\n          .otherwise(noOp);\n      },\n    };\n    return listener;\n  },\n};\n\nexport default rule;\n"
  },
  {
    "path": "packages/eslint-plugin/src/types.ts",
    "content": "import * as ESTree from 'estree';\n\ninterface NodeWithParent extends ESTree.BaseNode {\n  parent: NodeWithParent;\n  type: NodeType;\n}\n\ninterface JSXExpressionContainer extends NodeWithParent {\n  type: 'JSXExpressionContainer';\n  expression: NodeExt;\n}\n\ninterface JSXAttribute extends NodeWithParent {\n  type: 'JSXAttribute';\n  name: { name: {} };\n  value: JSXExpressionContainer;\n}\n\ninterface JSXOpeningElement extends NodeWithParent {\n  type: 'JSXOpeningElement';\n  attributes: JSXAttribute[];\n}\n\ndeclare module 'eslint' {\n  export namespace Rule {\n    interface NodeListener {\n      JSXOpeningElement?(node: JSXOpeningElement): void;\n      JSXAttribute?(node: JSXAttribute): void;\n      JSXExpressionContainer?(node: JSXExpressionContainer): void;\n    }\n  }\n}\n\n// There's some issues with babel's types and eslint's types cooperating so\n// this is a stop gap solution.\ntype NodeJSX = JSXExpressionContainer | JSXAttribute | JSXOpeningElement;\ntype NodeExt = ESTree.Node | NodeJSX;\ntype NodeType = NodeExt['type'];\n"
  },
  {
    "path": "packages/eslint-plugin/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"outDir\": \"./dist\",\n    \"rootDir\": \"./src\",\n    \"baseUrl\": \"./\",\n    \"skipLibCheck\": true,\n    \"declaration\": true\n  },\n  \"include\": [\"./src\"]\n}\n"
  },
  {
    "path": "packages/eslint-plugin/vite.config.ts",
    "content": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    include: ['**/*.test.ts'],\n  },\n});\n"
  },
  {
    "path": "packages/fiddle/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n\n# production\n/build\n\n# misc\n.DS_Store\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n.firebase\n\n.next"
  },
  {
    "path": "packages/fiddle/.npmrc",
    "content": "# avoid accidentally using npm\n# https://github.com/yarnpkg/yarn/issues/4895#issuecomment-545644733\nengine-strict=true\n"
  },
  {
    "path": "packages/fiddle/next-env.d.ts",
    "content": "/// <reference types=\"next\" />\n/// <reference types=\"next/image-types/global\" />\n\n// NOTE: This file should not be edited\n// see https://nextjs.org/docs/basic-features/typescript for more information.\n"
  },
  {
    "path": "packages/fiddle/next.config.js",
    "content": "const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');\n/**\n * @type {import('next').NextConfig}\n */\nconst nextConfig = {\n  webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {\n    config.resolve.mainFields = ['browser', 'main', 'module'];\n\n    config.resolve.plugins = [...config.resolve.plugins, new TsconfigPathsPlugin()];\n\n    /**\n     * These node pkgs areimported by Mitosis, but we don't need them in the browser, so we tell webpack to ignore it.\n     * https://webpack.js.org/configuration/resolve/#resolvealias\n     */\n    const falseAliases = {\n      globby: false,\n      coffeescript: false,\n      'postcss-load-config': false,\n      perf_hooks: false,\n      fs: false,\n      module: false,\n      CLIEngine: false,\n      'svelte-preprocess': false,\n      sass: false,\n    };\n    config.resolve.alias = {\n      ...config.resolve.alias,\n      ...falseAliases,\n    };\n\n    // config.optimization.minimizer = [];\n    // config.optimization.minimize = false;\n\n    return config;\n  },\n  experimental: {\n    esmExternals: true,\n  },\n  transpilePackages: ['@builder.io/mitosis'],\n};\n\nmodule.exports = nextConfig;\n"
  },
  {
    "path": "packages/fiddle/package.json",
    "content": "{\n  \"name\": \"@builder.io/mitosis-fiddle\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@builder.io/eslint-plugin-mitosis\": \"workspace:*\",\n    \"@builder.io/mitosis\": \"workspace:*\",\n    \"@builder.io/sdk\": \"^1.1.20\",\n    \"@emotion/react\": \"^11.9.3\",\n    \"@material-ui/core\": \"^4.12.4\",\n    \"@material-ui/lab\": \"^4.0.0-alpha.56\",\n    \"@monaco-editor/react\": \"^4.4.5\",\n    \"@types/dedent\": \"^0.7.0\",\n    \"@types/eslint\": \"^8.4.5\",\n    \"@types/prettier\": \"^2.6.3\",\n    \"@types/react-dom\": \"^18.0.6\",\n    \"dedent\": \"^0.7.0\",\n    \"lz-string\": \"^1.4.4\",\n    \"mobx\": \"^6.6.0\",\n    \"mobx-react-lite\": \"^3.4.0\",\n    \"monaco-editor\": \"^0.34.0\",\n    \"next\": \"latest\",\n    \"prettier\": \"^3.0.3\",\n    \"prettier-plugin-svelte\": \"^3.0.3\",\n    \"raw-loader\": \"^4.0.2\",\n    \"react\": \"latest\",\n    \"react-dom\": \"latest\",\n    \"react-use\": \"^17.4.0\",\n    \"svelte\": \"^4.2.1\",\n    \"tsconfig-paths-webpack-plugin\": \"^3.5.2\",\n    \"web-vitals\": \"^2.1.4\",\n    \"webcomponents-in-react\": \"^1.0.1\"\n  },\n  \"devDependencies\": {\n    \"@types/lz-string\": \"^1.3.34\",\n    \"@types/node\": \"^18.14.6\",\n    \"@typescript-eslint/typescript-estree\": \"^5.59.0\"\n  },\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\",\n    \"deploy\": \"yarn g:nx build\"\n  }\n}\n"
  },
  {
    "path": "packages/fiddle/pages/index.tsx",
    "content": "import { configure } from 'mobx';\nimport dynamic from 'next/dynamic';\nimport Head from 'next/head';\nimport Script from 'next/script';\nimport { theme } from '../src/constants/theme';\n\nconst App = dynamic(() => import('../src/components/App'), {\n  ssr: false,\n  loading: () => <div>loading fiddle...</div>,\n});\n\nconfigure({\n  enforceActions: 'never',\n});\n\nexport default () => {\n  return (\n    <>\n      <Head>\n        <meta charSet=\"utf-8\" />\n        <link rel=\"icon\" href={theme.darkMode ? '/favicon-dark.ico' : '/favicon.ico'} />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n        <meta name=\"theme-color\" content=\"#000000\" />\n        <meta\n          name=\"description\"\n          content=\"Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io\"\n        />\n\n        <meta property=\"og:type\" content=\"website\" />\n        <meta property=\"og:title\" content=\"Mitosis Fiddle\" />\n        <meta\n          property=\"og:description\"\n          content=\"Write components once, run everywhere. Compiles to Vue, React, Angular, and more. Import code from Figma and Builder.io\"\n        />\n        <meta property=\"og:image:height\" content=\"640\" />\n        <meta property=\"og:image:width\" content=\"1280\" />\n        <meta property=\"og:image:type\" content=\"image/png\" />\n        <meta\n          property=\"og:image\"\n          content=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fa41b6f2a56154fe5986d7ab2025d3dfe\"\n        />\n        <meta property=\"og:url\" content=\"https://mitosis.builder.io\" />\n        <link rel=\"canonical\" href=\"https://mitosis.builder.io\" />\n        <title>Mitosis Fiddle - compile to common frameworks, import from popular tools</title>\n      </Head>\n      <noscript>You need to enable JavaScript to run this app.</noscript>\n      <App />\n\n      <Script async src=\"https://cdn.builder.io/js/editor@1.0.42-0\"></Script>\n\n      {/* <!-- Global site tag (gtag.js) - Google Analytics --> */}\n      <Script async src=\"https://www.googletagmanager.com/gtag/js?id=G-LFJQTJMFD3\"></Script>\n      <Script>\n        {`\n          window.dataLayer = window.dataLayer || [];\n          function gtag() {\n            dataLayer.push(arguments);\n          }\n          gtag('js', new Date());\n\n          gtag('config', 'G-LFJQTJMFD3');\n          `}\n      </Script>\n    </>\n  );\n};\n"
  },
  {
    "path": "packages/fiddle/public/robots.txt",
    "content": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "packages/fiddle/src/components/App.tsx",
    "content": "import { createTheme, ThemeProvider } from '@material-ui/core';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { useObserver } from 'mobx-react-lite';\nimport React from 'react';\nimport { colors } from '../constants/colors';\nimport { theme } from '../constants/theme';\nimport Fiddle from './Fiddle';\n\nexport default function App() {\n  return useObserver(() => {\n    const muiTheme = createTheme({\n      palette: {\n        type: theme.darkMode ? 'dark' : 'light',\n        primary: { main: colors.primary },\n      },\n    });\n\n    return (\n      <React.StrictMode>\n        <ThemeProvider theme={muiTheme}>\n          <CssBaseline />\n          <style>{`\n            body {\n              background-color: ${colors.background};\n            }\n          `}</style>\n          <Fiddle />\n        </ThemeProvider>\n      </React.StrictMode>\n    );\n  });\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/Fiddle/Fiddle.tsx",
    "content": "import type { MitosisComponent, ToReactOptions } from '@builder.io/mitosis';\nimport {\n  Button,\n  Divider,\n  FormControlLabel,\n  MenuItem,\n  Radio,\n  RadioGroup,\n  Select,\n  Tab,\n  Tabs,\n  ThemeProvider,\n  Tooltip,\n  Typography,\n  createTheme,\n} from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport { useLocalObservable, useObserver } from 'mobx-react-lite';\nimport Image from 'next/image';\nimport { useRef } from 'react';\n\nimport { breakpoints } from '../../constants/breakpoints';\nimport { colors } from '../../constants/colors';\nimport { defaultCode, templates } from '../../constants/templates/jsx-templates';\nimport {\n  defaultCode as defaultSvelteCode,\n  templates as svelteTemplates,\n} from '../../constants/templates/svelte-templates';\nimport { theme } from '../../constants/theme';\nimport { deleteQueryParam } from '../../functions/delete-query-param';\nimport { getQueryParam } from '../../functions/get-query-param';\nimport { localStorageGet } from '../../functions/local-storage-get';\nimport { localStorageSet } from '../../functions/local-storage-set';\nimport { setQueryParam } from '../../functions/set-query-param';\nimport { useEventListener } from '../../hooks/use-event-listener';\nimport { useReaction } from '../../hooks/use-reaction';\nimport { Show } from '../Show';\nimport { TextLink } from '../TextLink';\n\nimport MonacoEditor, { EditorProps, useMonaco } from '@monaco-editor/react/';\nimport { JsxCodeEditor } from '../JsxCodeEditor';\nimport { SvelteCodeEditor } from '../SvelteCodeEditor';\n\nconst generateCode = () => {\n  console.log('generating code...');\n  return import('./generate').then((mod) => mod.generateCode);\n};\nconst mitosisCore = () => {\n  console.log('importing mitosis...');\n  return import('@builder.io/mitosis');\n};\n\ntype Position = { row: number; column: number };\n\nconst openTagRe = /(<[a-z]+[^>]*)/gi;\n\n// Sync selections between the Builder editor and the fiddle\nconst SYNC_SELECTIONS = false;\n\nconst indexToRowAndColumn = (str: string, index: number): Position => {\n  const rows = str.split('\\n');\n  let row = 0;\n  let column = 0;\n  let cursor = 0;\n  while (cursor < index) {\n    const rowText = rows[row];\n    column++;\n    if (column > rowText.length) {\n      column = 0;\n      row++;\n      // cursor++;\n    }\n\n    if (cursor === index) {\n      return { row, column };\n    }\n    cursor++;\n  }\n  return { row, column };\n};\n\nconst rowColumnToIndex = (str: string, position: Position): number => {\n  const rows = str.split('\\n');\n  let row = 0;\n  let column = 0;\n  let cursor = 0;\n  while (true) {\n    const rowText = rows[row];\n    if (typeof rowText === undefined) {\n      return cursor;\n    }\n    column++;\n    if (column > rowText.length) {\n      column = 0;\n      row++;\n      cursor++;\n    }\n\n    if (row === position.row && column === position.column) {\n      return cursor;\n    }\n    cursor++;\n  }\n};\n\nconst debug = getQueryParam('debug') === 'true';\n\nconst AlphaPreviewMessage = () => (\n  <ThemeProvider\n    theme={createTheme({\n      palette: {\n        type: 'dark',\n        primary: { main: colors.primary },\n      },\n    })}\n  >\n    <Alert\n      severity=\"info\"\n      css={{\n        background: 'none',\n        fontSize: 15,\n      }}\n    >\n      Mitosis is in beta, please{' '}\n      <TextLink\n        css={{ color: 'inherit', textDecoration: 'underline' }}\n        href=\"https://github.com/BuilderIO/mitosis/issues\"\n        target=\"_blank\"\n      >\n        report bugs and share feedback\n      </TextLink>\n    </Alert>\n  </ThemeProvider>\n);\n\nconst smallBreakpoint = breakpoints.mediaQueries.small;\n\nconst TabLogo = (props: { src: string }) => {\n  const size = 12;\n  return (\n    <img\n      alt=\"Icon\"\n      src={`${props.src}?width=${size * 2}`}\n      css={{\n        marginRight: 7,\n        objectFit: 'contain',\n        objectPosition: 'center',\n        height: size,\n        width: size,\n        filter: 'grayscale(100%)',\n        opacity: 0.6,\n        '.Mui-selected.MuiButtonBase-root &': {\n          filter: 'none',\n          opacity: 1,\n        },\n      }}\n    />\n  );\n};\n\nconst TabLabelWithIcon = (props: { icon?: string; label: string }) => {\n  const useIcon = false;\n  return (\n    <div css={{ display: 'flex', alignItems: 'center' }}>\n      {useIcon && props.icon && <TabLogo src={props.icon} />} {props.label}\n    </div>\n  );\n};\n\nconst defaultInputCode = `\nimport { Component, Input } from \"@angular/core\";\n\n@Component({\n  selector: \"foo-component\",\n  template: \\`\n    <div>\n      <input\n        class=\"input\"\n        [value]=\"name\"\n        (input)=\"name = $event.target.value\"\n      />\n      Hello {{name}} ! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class FooComponent {\n  name = \"Steve\";\n}\n`;\n\ntype EditorRefArgs = Parameters<NonNullable<EditorProps['onMount']>>;\ntype Editor = EditorRefArgs[0];\n\n// TODO: Build this Fiddle app with Mitosis :)\nexport default function Fiddle() {\n  const monaco = useMonaco();\n\n  const state = useLocalObservable(() => ({\n    code: getQueryParam('code') || defaultCode,\n    inputCode: defaultInputCode,\n    output: '',\n    outputTab: getQueryParam('outputTab') || 'vue',\n    inputTab: getQueryParam('inputTab') || 'jsx',\n    isDraggingJSXCodeBar: false,\n    jsxCodeTabWidth: Number(localStorageGet('jsxCodeTabWidth')) || 45,\n    setEditorRef(editor: Editor, monaco: EditorRefArgs[1]) {\n      monacoEditorRef.current = editor;\n      if (editor) {\n        if (SYNC_SELECTIONS) {\n          editor.onDidChangeCursorPosition((event) => {\n            const { position, reason } = event;\n\n            if (reason !== monaco.editor.CursorChangeReason.Explicit) {\n              return;\n            }\n\n            const index = rowColumnToIndex(state.code, {\n              column: position.column - 1,\n              row: position.lineNumber - 1,\n            });\n\n            const elementIndex =\n              Array.from(state.code.substring(0, index).matchAll(openTagRe)).length - 1;\n\n            if (elementIndex === -1) {\n              return;\n            }\n          });\n        }\n      }\n    },\n    options: {\n      typescript: localStorageGet('options.typescript') || ('false' as 'true' | 'false'),\n      reactStyleType:\n        localStorageGet('options.reactStyleType') ||\n        ('styled-jsx' as 'emotion' | 'styled-jsx' as ToReactOptions['stylesType']),\n      reactStateType:\n        localStorageGet('options.reactStateType') || ('useState' as 'useState' | 'mobx' | 'solid'),\n      svelteStateType:\n        localStorageGet('options.svelteStateType') || ('variables' as 'variables' | 'proxies'),\n      vueApi: localStorageGet('options.vueApi') || ('composition' as 'options' | 'composition'),\n      alpineShorthandSyntax: localStorageGet('options.alpineShorthandSyntax') || 'false',\n      alpineInline: localStorageGet('options.alpineInline') || 'false',\n      angularStandalone: localStorageGet('options.angularStandalone') || 'false',\n    },\n\n    async updateOutput() {\n      try {\n        let json: MitosisComponent;\n\n        const { parseSvelte, parseJsx } = await mitosisCore();\n\n        const commonOptions: { typescript: boolean } = {\n          typescript: state.options.typescript === 'true',\n        };\n\n        switch (state.inputTab) {\n          case 'svelte':\n            json = await parseSvelte(state.code);\n            break;\n          case 'jsx':\n          default:\n            json = parseJsx(state.code, {\n              typescript: commonOptions.typescript,\n            });\n            break;\n        }\n        const generateOptions = () => {\n          switch (state.outputTab) {\n            case 'alpine':\n              return {\n                useShorthandSyntax: this.options.alpineShorthandSyntax === 'true',\n                inlineState: this.options.alpineInline === 'true',\n              };\n            case 'angular':\n              return {\n                standalone: this.options.angularStandalone === 'true',\n              };\n            case 'react':\n              return {\n                stylesType: state.options.reactStyleType,\n                stateType: state.options.reactStateType,\n              };\n            case 'reactNative':\n              return { stateType: state.options.reactStateType };\n            case 'svelte':\n              return { stateType: state.options.svelteStateType };\n            case 'vue':\n              return { api: state.options.vueApi };\n            default:\n              return {};\n          }\n        };\n\n        const generator = await generateCode();\n\n        state.output = (\n          await generator({\n            output: state.outputTab,\n            options: { ...generateOptions(), ...commonOptions },\n          })\n        )({ component: json, path: '' });\n      } catch (err) {\n        if (debug) {\n          throw err;\n        } else {\n          console.warn(err);\n        }\n      }\n    },\n  }));\n\n  useEventListener<MouseEvent>(document.body, 'mousemove', (e) => {\n    if (state.isDraggingJSXCodeBar) {\n      const windowWidth = window.innerWidth;\n      const pointerRelativeXpos = e.clientX;\n      const newWidth = Math.max((pointerRelativeXpos / windowWidth) * 100, 5);\n      state.jsxCodeTabWidth = Math.min(newWidth, 95);\n    }\n  });\n\n  useEventListener<MouseEvent>(document.body, 'mouseup', (e) => {\n    state.isDraggingJSXCodeBar = false;\n  });\n\n  const monacoEditorRef = useRef<Editor | null>(null);\n\n  useReaction(\n    () => state.jsxCodeTabWidth,\n    (width) => localStorageSet('jsxCodeTabWidth', width),\n    { fireImmediately: false, delay: 1000 },\n  );\n\n  useReaction(\n    () => state.options.reactStyleType,\n    (type) => localStorageSet('options.reactStyleType', type),\n  );\n  useReaction(\n    () => state.options.reactStateType,\n    (type) => localStorageSet('options.reactStateType', type),\n  );\n  useReaction(\n    () => state.options.svelteStateType,\n    (type) => localStorageSet('options.svelteStateType', type),\n  );\n  useReaction(\n    () => state.options.vueApi,\n    (type) => localStorageSet('options.vueApi', type),\n  );\n  useReaction(\n    () => state.code,\n    (code) => setQueryParam('code', code),\n    { fireImmediately: false },\n  );\n  useReaction(\n    () => state.outputTab,\n    (tab) => {\n      if (state.code) {\n        setQueryParam('outputTab', tab);\n      } else {\n        deleteQueryParam('outputTab');\n      }\n      state.updateOutput();\n    },\n  );\n  useReaction(\n    () => state.inputTab,\n    (tab) => {\n      if (tab === 'svelte') {\n        state.code = defaultSvelteCode;\n        if (state.outputTab === 'svelte') {\n          state.outputTab = 'vue';\n        }\n      } else {\n        state.code = defaultCode;\n      }\n\n      setQueryParam('inputTab', tab);\n    },\n    { fireImmediately: false },\n  );\n\n  useReaction(\n    () => state.code,\n    (code) => {\n      state.updateOutput();\n    },\n    { delay: 1000 },\n  );\n\n  useReaction(\n    () => state.inputCode,\n    (code) => {\n      state.updateOutput();\n    },\n    { delay: 1000 },\n  );\n\n  return useObserver(() => {\n    const isDarkMode = theme.darkMode;\n    const monacoTheme = isDarkMode ? 'vs-dark' : 'vs';\n    const barStyle: any = {\n      overflow: 'auto',\n      whiteSpace: 'nowrap',\n      ...(isDarkMode ? null : { backgroundColor: 'white' }),\n    };\n    return (\n      <div\n        css={{\n          display: 'flex',\n          flexDirection: 'column',\n          height: '100vh',\n          '& .monaco-editor .margin, & .monaco-editor, & .monaco-editor-background, .monaco-editor .inputarea.ime-input':\n            {\n              backgroundColor: 'transparent !important',\n            },\n        }}\n      >\n        <div\n          css={{\n            backgroundColor: '#1e1e1e',\n          }}\n        >\n          <div\n            css={{\n              display: 'flex',\n              position: 'relative',\n              flexShrink: 0,\n              alignItems: 'center',\n              color: 'white',\n              paddingTop: '5px',\n              paddingBottom: '5px',\n            }}\n          >\n            <a\n              target=\"_blank\"\n              rel=\"noreferrer\"\n              href=\"https://github.com/builderio/mitosis\"\n              css={{\n                marginRight: 'auto',\n                paddingLeft: 20,\n              }}\n            >\n              <Image alt=\"Mitosis Logo\" src={'/mitosis-logo-white.png'} width={130} height={40} />\n            </a>\n            <div\n              css={{\n                marginLeft: 'auto',\n                marginRight: 'auto',\n                [smallBreakpoint]: { display: 'none' },\n              }}\n            >\n              <AlphaPreviewMessage />\n            </div>\n\n            <div\n              css={{\n                display: 'flex',\n                'a > span': {\n                  color: 'white',\n                  textDecoration: 'none',\n                },\n              }}\n            >\n              <Button\n                size=\"small\"\n                variant=\"outlined\"\n                color=\"default\"\n                css={{\n                  marginLeft: 'auto',\n                  marginTop: 'auto',\n                  marginBottom: 'auto',\n                  marginRight: 10,\n                  flexShrink: 0,\n                }}\n                onClick={() => {\n                  theme.darkMode = !theme.darkMode;\n                }}\n              >\n                🔆\n              </Button>\n\n              <a\n                target=\"_blank\"\n                rel=\"noreferrer\"\n                css={{\n                  marginRight: 25,\n                  display: 'flex',\n                  alignItems: 'center',\n                }}\n                href=\"https://github.com/builderio/mitosis\"\n              >\n                <span\n                  css={{\n                    [smallBreakpoint]: { display: 'none' },\n                    marginRight: '5px',\n                  }}\n                >\n                  Source\n                </span>\n                <Image\n                  width={30}\n                  height={30}\n                  src={'/github-logo.png'}\n                  css={{ marginLeft: 10 }}\n                  alt=\"Github Mark\"\n                />\n              </a>\n            </div>\n          </div>\n          <div\n            css={{\n              display: 'none',\n              textAlign: 'center',\n              borderTop: '1px solid rgba(255, 255, 255, 0.1)',\n              [smallBreakpoint]: { display: 'block' },\n            }}\n          >\n            <AlphaPreviewMessage />\n          </div>\n        </div>\n        <div\n          css={{\n            display: 'flex',\n            flexGrow: 1,\n            overflow: 'hidden',\n            [smallBreakpoint]: { flexDirection: 'column', overflow: 'unset' },\n          }}\n        >\n          <div\n            css={{\n              width: `${state.jsxCodeTabWidth}%`,\n              height: '100%',\n              display: 'flex',\n              flexDirection: 'column',\n              borderRight: `1px solid ${colors.contrast}`,\n              [smallBreakpoint]: {\n                width: '100%',\n                height: 'calc(50vh - 30px)',\n                overflow: 'hidden',\n              },\n            }}\n          >\n            <div\n              css={{\n                borderBottom: `1px solid ${colors.contrast}`,\n                alignItems: 'center',\n                display: 'flex',\n                flexShrink: 0,\n                height: 40,\n                ...barStyle,\n              }}\n            >\n              <Typography\n                variant=\"body2\"\n                css={{\n                  flexGrow: 1,\n                  textAlign: 'left',\n                  padding: '0 15px',\n                  marginTop: 'auto',\n                  marginBottom: 'auto',\n                  color: theme.darkMode ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)',\n                }}\n              >\n                Inputs:\n              </Typography>\n              <Tabs\n                css={{\n                  minHeight: 0,\n                  marginLeft: 'auto',\n                  // borderBottom: `1px solid ${colors.contrast}`,\n                  '& button': {\n                    minHeight: 0,\n                    minWidth: 100,\n                  },\n                }}\n                value={state.inputTab}\n                onChange={(e, value) => (state.inputTab = value)}\n                indicatorColor=\"primary\"\n                textColor=\"primary\"\n              >\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Mitosis JSX\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F98d1ee2d3215406c9a6a83efc3f59494\"\n                    />\n                  }\n                  value=\"jsx\"\n                />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Sveltosis\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F98d1ee2d3215406c9a6a83efc3f59494\"\n                    />\n                  }\n                  value=\"svelte\"\n                />\n              </Tabs>\n            </div>\n            <Show when={state.inputTab === 'jsx'}>\n              <div\n                css={{\n                  paddingTop: 15,\n                  flexGrow: 1,\n                  position: 'relative',\n                  [smallBreakpoint]: {\n                    paddingTop: 0,\n                  },\n                }}\n              >\n                <Select\n                  disableUnderline\n                  css={{\n                    top: 10,\n                    position: 'absolute',\n                    right: 10,\n                    zIndex: 10,\n                    [smallBreakpoint]: {\n                      display: 'block',\n                      width: '160px',\n                      marginLeft: 'auto',\n                      position: 'relative',\n                      top: 0,\n                      right: 0,\n                    },\n                  }}\n                  renderValue={(value) => (\n                    <span css={{ textTransform: 'capitalize' }}>\n                      {value === '_none' ? 'Choose template' : (value as string)}\n                    </span>\n                  )}\n                  defaultValue=\"_none\"\n                  onChange={(e) => {\n                    const template = templates[e.target.value as string];\n                    if (template) {\n                      state.code = template;\n                    }\n                  }}\n                >\n                  <MenuItem value=\"_none\" disabled>\n                    Choose template\n                  </MenuItem>\n                  {Object.keys(templates).map((key) => (\n                    <MenuItem\n                      key={key}\n                      value={key}\n                      css={{\n                        textTransform: 'capitalize',\n                      }}\n                    >\n                      {key}\n                    </MenuItem>\n                  ))}\n                </Select>\n\n                <JsxCodeEditor\n                  options={{\n                    renderLineHighlightOnlyWhenFocus: true,\n                    overviewRulerBorder: false,\n                    hideCursorInOverviewRuler: true,\n                    automaticLayout: true,\n                    minimap: { enabled: false },\n                    scrollbar: { vertical: 'hidden' },\n                  }}\n                  onMount={(editor, monaco) => state.setEditorRef(editor, monaco)}\n                  theme={monacoTheme}\n                  height=\"calc(100vh - 105px)\"\n                  language=\"typescript\"\n                  value={state.code}\n                  onChange={(val = '') => (state.code = val)}\n                />\n              </div>\n            </Show>\n\n            <Show when={state.inputTab === 'svelte'}>\n              <div\n                css={{\n                  paddingTop: 15,\n                  flexGrow: 1,\n                  position: 'relative',\n                  [smallBreakpoint]: {\n                    paddingTop: 0,\n                  },\n                }}\n              >\n                <Select\n                  disableUnderline\n                  css={{\n                    top: 10,\n                    position: 'absolute',\n                    right: 10,\n                    zIndex: 10,\n                    [smallBreakpoint]: {\n                      display: 'block',\n                      width: '160px',\n                      marginLeft: 'auto',\n                      position: 'relative',\n                      top: 0,\n                      right: 0,\n                    },\n                  }}\n                  renderValue={(value) => (\n                    <span css={{ textTransform: 'capitalize' }}>\n                      {value === '_none' ? 'Choose template' : (value as string)}\n                    </span>\n                  )}\n                  defaultValue=\"_none\"\n                  onChange={(e) => {\n                    const template = svelteTemplates[e.target.value as string];\n                    if (template) {\n                      state.code = template;\n                    }\n                  }}\n                >\n                  <MenuItem value=\"_none\" disabled>\n                    Choose template\n                  </MenuItem>\n                  {Object.keys(svelteTemplates).map((key) => (\n                    <MenuItem\n                      key={key}\n                      value={key}\n                      css={{\n                        textTransform: 'capitalize',\n                      }}\n                    >\n                      {key}\n                    </MenuItem>\n                  ))}\n                </Select>\n                <SvelteCodeEditor\n                  options={{\n                    renderLineHighlightOnlyWhenFocus: true,\n                    overviewRulerBorder: false,\n                    hideCursorInOverviewRuler: true,\n                    automaticLayout: true,\n                    minimap: { enabled: false },\n                    scrollbar: { vertical: 'hidden' },\n                  }}\n                  onMount={(editor, monaco) => state.setEditorRef(editor, monaco)}\n                  theme={monacoTheme}\n                  height=\"calc(100vh - 105px)\"\n                  language=\"html\"\n                  value={state.code}\n                  onChange={(val = '') => (state.code = val)}\n                />\n              </div>\n            </Show>\n          </div>\n          <div\n            css={{\n              cursor: 'col-resize',\n              position: 'relative',\n              zIndex: 100,\n              '&::before': {\n                content: '\"\"',\n                position: 'absolute',\n                top: 0,\n                bottom: 0,\n                left: -5,\n                right: -5,\n              },\n            }}\n            onMouseDown={(event) => {\n              event.preventDefault();\n              state.isDraggingJSXCodeBar = true;\n            }}\n          ></div>\n          <div\n            css={{\n              width: `${100 - state.jsxCodeTabWidth}%`,\n              height: '100%',\n              display: 'flex',\n              flexDirection: 'column',\n              [smallBreakpoint]: {\n                width: '100%',\n                height: 'calc(100vh - 30px)',\n                overflow: 'hidden',\n              },\n            }}\n          >\n            <div\n              css={{\n                display: 'flex',\n                alignItems: 'center',\n                flexShrink: 0,\n                height: 40,\n                borderBottom: `1px solid ${colors.contrast}`,\n                [smallBreakpoint]: {\n                  borderTop: `1px solid ${colors.contrast}`,\n                },\n                ...barStyle,\n              }}\n            >\n              <Typography\n                variant=\"body2\"\n                css={{\n                  flexGrow: 1,\n                  textAlign: 'left',\n                  opacity: 0.7,\n                  paddingLeft: 10,\n                }}\n              >\n                Outputs:\n              </Typography>\n              <Tabs\n                variant=\"scrollable\"\n                css={{\n                  minHeight: 0,\n                  marginLeft: 'auto',\n                  // borderBottom: `1px solid ${colors.contrast}`,\n                  '& button': {\n                    minHeight: 0,\n                    minWidth: 100,\n                  },\n                }}\n                value={state.outputTab}\n                onChange={(e, value) => (state.outputTab = value)}\n                indicatorColor=\"primary\"\n                textColor=\"primary\"\n              >\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Vue\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fb7d34a76a77b40e2a981ef420d12d1c8\"\n                    />\n                  }\n                  value=\"vue\"\n                />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"React\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F1c7afa570a734d9f98e8ad45df0755e2\"\n                    />\n                  }\n                  value=\"react\"\n                />\n                <Tab label={<TabLabelWithIcon label=\"Qwik\" />} value=\"qwik\" />\n                <Tab label={<TabLabelWithIcon label=\"Angular\" />} value=\"angular\" />\n                {state.inputTab !== 'svelte' && (\n                  <Tab label={<TabLabelWithIcon label=\"Svelte\" />} value=\"svelte\" />\n                )}\n                <Tab label={<TabLabelWithIcon label=\"React Native\" />} value=\"reactNative\" />\n                <Tab label=\"RSC\" value=\"rsc\" />\n                <Tab label={<TabLabelWithIcon label=\"Swift\" />} value=\"swift\" />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Solid\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F3835d178881b44db8fc51d3569ae97c6\"\n                    />\n                  }\n                  value=\"solid\"\n                />\n                <Tab label={<TabLabelWithIcon label=\"Stencil\" />} value=\"stencil\" />\n                <Tab label={<TabLabelWithIcon label=\"Marko\" />} value=\"marko\" />\n                <Tab label={<TabLabelWithIcon label=\"Preact\" />} value=\"preact\" />\n                <Tab label={<TabLabelWithIcon label=\"Lit\" />} value=\"lit\" />\n                <Tab label={<TabLabelWithIcon label=\"Alpine.js\" />} value=\"alpine\" />\n                <Tab label={<TabLabelWithIcon label=\"Webcomponents\" />} value=\"webcomponents\" />\n                <Tab label={<TabLabelWithIcon label=\"HTML\" />} value=\"html\" />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Liquid\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ff98433f5a2b747f094bf01e2e88bde08\"\n                    />\n                  }\n                  value=\"liquid\"\n                />\n                <Tab label={<TabLabelWithIcon label=\"Template\" />} value=\"template\" />\n                <Tab label={<TabLabelWithIcon label=\"Mitosis\" />} value=\"mitosis\" />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"JSON\"\n                      icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fa64744451c9546a085a3ca662f7d5572\"\n                    />\n                  }\n                  value=\"json\"\n                />\n                <Tab\n                  label={\n                    <TabLabelWithIcon\n                      label=\"Builder\"\n                      // icon=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fa64744451c9546a085a3ca662f7d5572\"\n                    />\n                  }\n                  value=\"builder\"\n                />\n              </Tabs>\n            </div>\n            <Show when={state.outputTab === 'swift'}>\n              <Alert\n                css={{\n                  border: '1px solid rgb(128 182 224)',\n                  margin: '10px 10px 0 10px',\n                }}\n                severity=\"info\"\n              >\n                SwiftUI support is <b>experimental</b>\n              </Alert>\n            </Show>\n            <div\n              css={{\n                display: 'flex',\n                alignItems: 'center',\n                backgroundColor: 'rgba(0, 0, 0, 0.03)',\n              }}\n            >\n              <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                Typescript:\n              </Typography>\n              <RadioGroup\n                css={{\n                  flexDirection: 'row',\n                  marginRight: 10,\n                  '& .MuiFormControlLabel-label': {\n                    fontSize: 12,\n                  },\n                }}\n                aria-label=\"Typescript\"\n                name=\"typescript\"\n                value={state.options.typescript}\n                onChange={(e) => {\n                  state.options.typescript = e.target.value;\n                  state.updateOutput();\n                }}\n              >\n                <FormControlLabel\n                  value=\"true\"\n                  control={<Radio color=\"primary\" />}\n                  labelPlacement=\"start\"\n                  label=\"Typescript\"\n                />\n                <FormControlLabel\n                  value=\"false\"\n                  labelPlacement=\"start\"\n                  control={<Radio color=\"primary\" />}\n                  label=\"Javascript\"\n                />\n              </RadioGroup>\n            </div>\n            <Divider css={{ opacity: 0.6 }} />\n            <Show when={state.outputTab === 'vue'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  API:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"Vue API\"\n                  name=\"vueApi\"\n                  value={state.options.vueApi}\n                  onChange={(e) => {\n                    state.options.vueApi = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <FormControlLabel\n                    value=\"options\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Options API\"\n                  />\n                  <FormControlLabel\n                    value=\"composition\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Composition API\"\n                  />\n                </RadioGroup>\n              </div>\n              <Divider css={{ opacity: 0.6 }} />\n            </Show>\n            <Show when={state.outputTab === 'react'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  Style library:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"Style type\"\n                  name=\"reactStyleType\"\n                  value={state.options.reactStyleType}\n                  onChange={(e) => {\n                    state.options.reactStyleType = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <FormControlLabel\n                    value=\"style-tag\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Inline style tag\"\n                  />\n                  <FormControlLabel\n                    value=\"emotion\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Emotion CSS prop\"\n                  />\n                  <FormControlLabel\n                    value=\"styled-components\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Styled Components\"\n                  />\n                  <FormControlLabel\n                    value=\"styled-jsx\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Styled JSX\"\n                  />\n                </RadioGroup>\n              </div>\n              <Divider css={{ opacity: 0.6 }} />\n            </Show>\n            <Show when={state.outputTab === 'react' || state.outputTab === 'reactNative'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  State library:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"State type\"\n                  name=\"reactStateType\"\n                  value={state.options.reactStateType}\n                  onChange={(e) => {\n                    state.options.reactStateType = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <Tooltip title=\"Does not support nested state mutation\">\n                    <FormControlLabel\n                      value=\"useState\"\n                      control={<Radio color=\"primary\" />}\n                      labelPlacement=\"start\"\n                      label=\"useState\"\n                    />\n                  </Tooltip>\n                  <Tooltip title=\"Supports nested state mutation\">\n                    <FormControlLabel\n                      value=\"mobx\"\n                      labelPlacement=\"start\"\n                      control={<Radio color=\"primary\" />}\n                      label=\"Mobx\"\n                    />\n                  </Tooltip>\n                  <Tooltip title=\"Supports nested state mutation\">\n                    <FormControlLabel\n                      value=\"solid\"\n                      labelPlacement=\"start\"\n                      control={<Radio color=\"primary\" />}\n                      label=\"Solid\"\n                    />\n                  </Tooltip>\n                </RadioGroup>\n              </div>\n              <Divider />\n            </Show>\n            <Show when={state.outputTab === 'svelte'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  State handling:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"State type\"\n                  name=\"svelteStateType\"\n                  value={state.options.svelteStateType}\n                  onChange={(e) => {\n                    state.options.svelteStateType = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <Tooltip title=\"Does not support nested state mutation\">\n                    <FormControlLabel\n                      value=\"variables\"\n                      control={<Radio color=\"primary\" />}\n                      labelPlacement=\"start\"\n                      label=\"Variables\"\n                    />\n                  </Tooltip>\n                  <Tooltip title=\"Supports nested state mutation\">\n                    <FormControlLabel\n                      value=\"proxies\"\n                      labelPlacement=\"start\"\n                      control={<Radio color=\"primary\" />}\n                      label=\"Proxies\"\n                    />\n                  </Tooltip>\n                </RadioGroup>\n              </div>\n              <Divider />\n            </Show>\n            <Show when={state.outputTab === 'alpine'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  Bindings:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"Alpine Binding Type\"\n                  name=\"alpineShorthandSyntax\"\n                  value={state.options.alpineShorthandSyntax}\n                  onChange={(e) => {\n                    state.options.alpineShorthandSyntax = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <FormControlLabel\n                    value=\"true\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Short\"\n                  />\n                  <FormControlLabel\n                    value=\"false\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Full\"\n                  />\n                </RadioGroup>\n              </div>\n              <Divider css={{ opacity: 0.6 }} />\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  Inline:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"Alpine Component Type\"\n                  name=\"alpineInline\"\n                  value={state.options.alpineInline}\n                  onChange={(e) => {\n                    state.options.alpineInline = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <FormControlLabel\n                    value=\"true\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Inline\"\n                  />\n                  <FormControlLabel\n                    value=\"false\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Separate\"\n                  />\n                </RadioGroup>\n              </div>\n            </Show>\n            <Show when={state.outputTab === 'angular'}>\n              <div\n                css={{\n                  display: 'flex',\n                  alignItems: 'center',\n                  backgroundColor: 'rgba(0, 0, 0, 0.03)',\n                }}\n              >\n                <Typography variant=\"body2\" css={{ marginRight: 'auto', marginLeft: 10 }}>\n                  Standalone:\n                </Typography>\n                <RadioGroup\n                  css={{\n                    flexDirection: 'row',\n                    marginRight: 10,\n                    '& .MuiFormControlLabel-label': {\n                      fontSize: 12,\n                    },\n                  }}\n                  aria-label=\"Angular Standalone Selection\"\n                  name=\"angularStandalone\"\n                  value={state.options.angularStandalone}\n                  onChange={(e) => {\n                    state.options.angularStandalone = e.target.value;\n                    state.updateOutput();\n                  }}\n                >\n                  <FormControlLabel\n                    value=\"true\"\n                    control={<Radio color=\"primary\" />}\n                    labelPlacement=\"start\"\n                    label=\"Standalone\"\n                  />\n                  <FormControlLabel\n                    value=\"false\"\n                    labelPlacement=\"start\"\n                    control={<Radio color=\"primary\" />}\n                    label=\"Modules\"\n                  />\n                </RadioGroup>\n              </div>\n            </Show>\n            <div css={{ flexGrow: 1 }}>\n              <div css={{ paddingTop: 15, height: '100%' }}>\n                <MonacoEditor\n                  height=\"100%\"\n                  options={{\n                    automaticLayout: true,\n                    overviewRulerBorder: false,\n                    foldingHighlight: false,\n                    renderLineHighlightOnlyWhenFocus: true,\n                    occurrencesHighlight: false,\n                    readOnly: getQueryParam('readOnly') !== 'false',\n                    minimap: { enabled: false },\n                    renderLineHighlight: 'none',\n                    selectionHighlight: false,\n                    scrollbar: { vertical: 'hidden' },\n                  }}\n                  theme={monacoTheme}\n                  language={\n                    state.outputTab === 'swift'\n                      ? 'swift'\n                      : state.outputTab === 'json' || state.outputTab === 'builder'\n                      ? 'json'\n                      : state.outputTab === 'react' ||\n                        state.outputTab === 'preact' ||\n                        state.outputTab === 'rsc' ||\n                        state.outputTab === 'qwik' ||\n                        state.outputTab === 'lit' ||\n                        state.outputTab === 'reactNative' ||\n                        state.outputTab === 'mitosis' ||\n                        state.outputTab === 'template' ||\n                        state.outputTab === 'angular' ||\n                        state.outputTab === 'webcomponents' ||\n                        state.outputTab === 'qwik' ||\n                        state.outputTab === 'stencil' ||\n                        state.outputTab === 'solid'\n                      ? 'typescript'\n                      : 'html'\n                  }\n                  value={state.output}\n                />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  });\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/Fiddle/Linter.ts",
    "content": "import { configs as lintConfigs, rules } from '@builder.io/eslint-plugin-mitosis';\nimport { parse } from '@typescript-eslint/typescript-estree';\nimport { Linter as ESLinter } from 'eslint';\n\nconst Linter: typeof ESLinter = require('eslint/lib/linter/linter').Linter;\nconst linter = new Linter();\nconst recommendedRules: Record<string, any> = {};\nconst TS_PARSER = 'mitosis-ts-parser';\n\nlinter.defineParser(TS_PARSER, {\n  parse(code) {\n    return parse(code, {\n      loc: true,\n      range: true,\n      jsx: true,\n      tokens: true,\n      comment: true,\n    }) as any;\n  },\n});\n\nlinter.defineRules(rules as any);\nObject.entries(lintConfigs.recommended.rules).forEach(([key, value]) => {\n  const trimmedKey = key.replace(/^@builder.io\\/mitosis\\//, '');\n  recommendedRules[trimmedKey] = value;\n});\n\nexport function eslint(code: string, version: any) {\n  try {\n    const markers = linter\n      .verify(\n        code,\n        {\n          parser: TS_PARSER,\n          rules: {\n            ...recommendedRules,\n            'no-var-declaration-or-assignment-in-component': 'off',\n          },\n          parserOptions: {\n            sourceType: 'module',\n            ecmaVersion: 2020,\n            ecmaFeatures: {\n              jsx: true,\n            },\n          },\n        },\n        {\n          filename: 'mitosis.lite.tsx',\n        },\n      )\n      .map((err) => ({\n        startLineNumber: err.line,\n        endLineNumber: err.line,\n        startColumn: err.column,\n        endColumn: err.column,\n        message: `${err.message} (${err.ruleId})`,\n        severity: 3,\n        source: 'ESLint',\n      }));\n    return { markers, version };\n  } catch (err) {\n    // These can generally be ignored - invalid syntax and whatnot\n    console.warn('Eslint error', err);\n    return null;\n  }\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/Fiddle/generate.ts",
    "content": "type Transpiler = import('@builder.io/mitosis').Transpiler<string>;\n\nexport const generateCode = async ({\n  output,\n  options,\n}: {\n  output: string;\n  options: any;\n}): Promise<Transpiler> => {\n  const mitosisCore = await import('@builder.io/mitosis');\n\n  const {\n    compileAwayBuilderComponents,\n    mapStyles,\n    componentToLiquid,\n    componentToAlpine,\n    componentToHtml,\n    componentToCustomElement,\n    componentToPreact,\n    componentToLit,\n    componentToRsc,\n    componentToQwik,\n    componentToReact,\n    componentToStencil,\n    componentToMarko,\n    componentToSwift,\n    componentToReactNative,\n    componentToTemplate,\n    componentToSolid,\n    componentToAngular,\n    componentToSvelte,\n    componentToMitosis,\n    componentToBuilder,\n    componentToVue,\n  } = mitosisCore;\n\n  const plugins = [\n    compileAwayBuilderComponents(),\n    mapStyles({\n      map: (styles) => ({\n        ...styles,\n        boxSizing: undefined,\n        flexShrink: undefined,\n        alignItems: styles.alignItems === 'stretch' ? undefined : styles.alignItems,\n      }),\n    }),\n  ];\n  const allOptions = { plugins, ...options };\n  switch (output) {\n    case 'liquid':\n      return componentToLiquid(allOptions);\n    case 'alpine':\n      return componentToAlpine(allOptions);\n    case 'html':\n      return componentToHtml(allOptions);\n    case 'webcomponents':\n      return componentToCustomElement(allOptions);\n    case 'preact':\n      return componentToPreact(allOptions);\n    case 'lit':\n      return componentToLit(allOptions);\n    case 'rsc':\n      return componentToRsc(allOptions);\n    case 'qwik':\n      return componentToQwik(allOptions);\n    case 'react':\n      return componentToReact(allOptions);\n    case 'stencil':\n      return componentToStencil(allOptions);\n    case 'marko':\n      return componentToMarko(allOptions);\n    case 'swift':\n      return componentToSwift();\n    case 'reactNative':\n      return componentToReactNative(allOptions);\n    case 'template':\n      return componentToTemplate(allOptions);\n    case 'solid':\n      return componentToSolid(allOptions);\n    case 'angular':\n      return componentToAngular(allOptions);\n    case 'svelte':\n      return componentToSvelte(allOptions);\n    case 'mitosis':\n      return componentToMitosis();\n    case 'json':\n      return ({ component }) => JSON.stringify(component, null, 2);\n    case 'builder':\n      return (args) => JSON.stringify(componentToBuilder()(args), null, 2);\n    case 'vue':\n      return componentToVue(allOptions);\n    default:\n      throw new Error('unexpected Output ' + output);\n  }\n};\n"
  },
  {
    "path": "packages/fiddle/src/components/Fiddle/index.ts",
    "content": "export { default } from './Fiddle';\n"
  },
  {
    "path": "packages/fiddle/src/components/JsxCodeEditor.tsx",
    "content": "import { useEffect, useState } from 'react';\nimport { useDebounce } from 'react-use';\nimport { eslint } from './Fiddle/Linter';\nconst JsxRuntimeTypes = require('!!raw-loader!@builder.io/mitosis/jsx-runtime').default;\nconst MitosisTypes = require('!!raw-loader!@builder.io/mitosis/types').default;\n\nimport MonacoEditor, { EditorProps as MonacoEditorProps, useMonaco } from '@monaco-editor/react';\n\ntype EditorRefArgs = Parameters<NonNullable<MonacoEditorProps['onMount']>>;\ntype Editor = EditorRefArgs[0];\n\ntype Props = MonacoEditorProps & {\n  disableLinting?: boolean;\n};\n\nexport function JsxCodeEditor(props: Props) {\n  const monaco = useMonaco();\n\n  useEffect(() => {\n    if (!monaco) {\n      return;\n    }\n\n    monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n      target: monaco.languages.typescript.ScriptTarget.Latest,\n      allowNonTsExtensions: true,\n      moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,\n      module: monaco.languages.typescript.ModuleKind.CommonJS,\n      noEmit: true,\n      esModuleInterop: true,\n      jsx: monaco.languages.typescript.JsxEmit.ReactJSX,\n      reactNamespace: 'React',\n      allowJs: true,\n      typeRoots: ['node_modules/@types'],\n    });\n\n    monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({\n      noSemanticValidation: props.disableLinting || false,\n      noSyntaxValidation: props.disableLinting || false,\n    });\n\n    // add types\n    monaco.languages.typescript.typescriptDefaults.addExtraLib(\n      MitosisTypes,\n      'file:///node_modules/@builder.io/mitosis/index.d.ts',\n    );\n    monaco.languages.typescript.typescriptDefaults.addExtraLib(\n      JsxRuntimeTypes,\n      'file:///node_modules/react/jsx-runtime.d.ts',\n    );\n\n    monaco.languages.registerDocumentFormattingEditProvider('typescript', {\n      async provideDocumentFormattingEdits(model) {\n        const prettier = await import('prettier/standalone');\n        const typescript = await import('prettier/parser-typescript');\n        const text = prettier.format(model.getValue(), {\n          parser: 'typescript',\n          plugins: [typescript],\n          singleQuote: true,\n        });\n\n        return [\n          {\n            range: model.getFullModelRange(),\n            text,\n          },\n        ];\n      },\n    });\n  }, [monaco]);\n\n  const [editor, setEditor] = useState<Editor | null>(null);\n  useDebounce(\n    () => {\n      if (typeof props.value !== 'string') {\n        return;\n      }\n      if (!editor || !monaco) {\n        return;\n      }\n      const model = editor.getModel();\n      if (!model) {\n        return;\n      }\n      const result = eslint(props.value, editor!.getModel()?.getVersionId());\n      if (!result) {\n        return;\n      }\n\n      if (!props.disableLinting) {\n        monaco.editor.setModelMarkers(model, 'eslint', result.markers);\n      }\n    },\n    2000,\n    [props.value, editor],\n  );\n\n  return (\n    <MonacoEditor\n      options={{\n        renderLineHighlightOnlyWhenFocus: true,\n        overviewRulerBorder: false,\n        hideCursorInOverviewRuler: true,\n        automaticLayout: true,\n        minimap: { enabled: false },\n        scrollbar: { vertical: 'hidden' },\n        ...props.options,\n      }}\n      language={props.disableLinting ? 'javascript' : 'typescript'}\n      path=\"mitosis.tsx\"\n      {...props}\n      onMount={(editor, monaco) => {\n        setEditor(editor);\n        props.onMount?.(editor, monaco);\n      }}\n    />\n  );\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/Show.tsx",
    "content": "import React from 'react';\n\nexport type ShowProps = {\n  when?: any;\n};\n\n/**\n * Declarative show/hide, as opposed to {foo && <Bar />}\n *    <Show when={foo}>\n *      <Bar />\n *    </Show>\n */\nexport function Show(props: React.PropsWithChildren<ShowProps>) {\n  return <>{Boolean(props.when) ? props.children : null}</>;\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/SvelteCodeEditor.tsx",
    "content": "import MonacoEditor, { EditorProps as MonacoEditorProps, useMonaco } from '@monaco-editor/react';\nimport * as prettierPluginSvelte from 'prettier-plugin-svelte';\nimport { useEffect, useState } from 'react';\nimport { useDebounce } from 'react-use';\n\ntype EditorRefArgs = Parameters<NonNullable<MonacoEditorProps['onMount']>>;\ntype Editor = EditorRefArgs[0];\n\nexport function SvelteCodeEditor(props: MonacoEditorProps) {\n  const monaco = useMonaco();\n\n  useEffect(() => {\n    if (!monaco) {\n      return;\n    }\n\n    monaco.languages.registerDocumentFormattingEditProvider('html', {\n      async provideDocumentFormattingEdits(model) {\n        const prettier = await import('prettier/standalone');\n        const text = prettier.format(model.getValue(), {\n          parser: 'html',\n          plugins: [prettierPluginSvelte],\n          singleQuote: true,\n        });\n\n        return [\n          {\n            range: model.getFullModelRange(),\n            text,\n          },\n        ];\n      },\n    });\n  }, [monaco]);\n\n  const [editor, setEditor] = useState<Editor | null>(null);\n  useDebounce(\n    () => {\n      if (typeof props.value !== 'string') {\n        return;\n      }\n      if (!editor || !monaco) {\n        return;\n      }\n      const model = editor.getModel();\n      if (!model) {\n        return;\n      }\n      setTimeout(() => {\n        editor?.getAction('editor.action.formatDocument').run();\n      }, 1000);\n    },\n    2000,\n    [props.value],\n  );\n\n  return (\n    <MonacoEditor\n      onMount={(editor, monaco) => {\n        setEditor(editor);\n        props.onMount?.(editor, monaco);\n      }}\n      options={{\n        renderLineHighlightOnlyWhenFocus: true,\n        overviewRulerBorder: false,\n        hideCursorInOverviewRuler: true,\n        automaticLayout: true,\n        formatOnPaste: true,\n        formatOnType: true,\n        minimap: { enabled: false },\n        scrollbar: { vertical: 'hidden' },\n        ...props.options,\n      }}\n      {...props}\n      language=\"html\"\n      path=\"component.svelte\"\n    />\n  );\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/Talk.tsx",
    "content": "import {\n  builderContentToMitosisComponent,\n  compileAwayBuilderComponents,\n  componentToBuilder,\n  componentToMitosis,\n  componentToQwik,\n  componentToReact,\n  componentToSolid,\n  componentToSvelte,\n  componentToVue,\n  mapStyles,\n  MitosisComponent,\n  parseJsx,\n} from '@builder.io/mitosis';\nimport { Typography } from '@material-ui/core';\nimport { useLocalObservable, useObserver } from 'mobx-react-lite';\nimport { useRef, useState } from 'react';\n\nimport { defaultCode } from '../constants/templates/jsx-templates';\nimport { theme } from '../constants/theme';\nimport { getQueryParam } from '../functions/get-query-param';\nimport { localStorageGet } from '../functions/local-storage-get';\nimport { localStorageSet } from '../functions/local-storage-set';\nimport { setQueryParam } from '../functions/set-query-param';\nimport { useEventListener } from '../hooks/use-event-listener';\nimport { useReaction } from '../hooks/use-reaction';\n\nimport MonacoEditor, { EditorProps, useMonaco } from '@monaco-editor/react/';\nimport { JsxCodeEditor } from './JsxCodeEditor';\n\ntype Position = { row: number; column: number };\n\nconst generateValidJson = (codeJSON: any) => {\n  return {\n    '@type': '@builder.io/mitosis/component',\n    subComponents: [],\n    imports: [],\n    exports: {},\n    inputs: [],\n    meta: {},\n    refs: {},\n    state: {},\n    hooks: {},\n    name: 'RenderContent',\n    ...codeJSON,\n    children:\n      codeJSON.children?.map((x: any) => ({\n        '@type': '@builder.io/mitosis/node',\n        properties: {},\n        ...x,\n        children:\n          x?.children?.map((innerX: any) => ({\n            properties: {},\n            '@type': '@builder.io/mitosis/node',\n            children: [],\n            ...innerX,\n          })) || [],\n      })) || [],\n    context: {\n      get: {},\n      set: {\n        ...codeJSON.context?.set,\n      },\n    },\n  };\n};\n\nconst DEFAULT_JSX_CODE = `\nimport RenderBlocks from './RenderBlocks.lite';\nexport default function RenderContent(props) {\n  // onMount(() => {\n  //   sendComponentsToVisualEditor(props.customComponents);\n  // });\n\n  // onUpdate(() => {\n  //   dispatchNewContentToVisualEditor(props.content);\n  // }, [props.content]);\n\n  // setContext(BuilderContext, {\n  //   content: props.content,\n  //   registeredComponents: props.customComponents,\n  // });\n\n  // return (\n  //   <div\n  //     css={{ display: 'flex', flexDirection: 'columns' }}\n  //     onClick={() => trackClick(props.content.id)}\n  //   >\n  //     <RenderBlocks blocks={props.content.blocks} />\n  //   </div>\n  // );\n}\n`;\n\nconst DEFAULT_JSON_CODE = {\n  hooks: {\n    onMount: {\n      code: '\\n  sendComponentsToVisualEditor(props.registeredComponents);\\n',\n    },\n  },\n};\n\nconst JSON_CODE_EXAMPLES = {\n  ON_MOUNT: {\n    hooks: {\n      onMount: {\n        code: '\\n  sendComponentsToVisualEditor(props.customComponents);\\n',\n      },\n    },\n  },\n  ON_UPDATE: {\n    hooks: {\n      onUpdate: [\n        {\n          code: '\\n  dispatchNewContentToVisualEditor(props.content);\\n',\n          deps: '[props.content]',\n        },\n      ],\n    },\n  },\n  SET_CONTEXT: {\n    context: {\n      set: {\n        './BuilderContext.context.lite:default': {\n          name: 'BuilderContext',\n          value: {\n            content: {\n              code: 'props.content',\n              type: 'property',\n            },\n            customComponents: {\n              code: 'props.customComponents',\n              type: 'property',\n            },\n          },\n        },\n      },\n    },\n    name: 'RenderContent',\n  },\n  STYLES: {\n    children: [\n      {\n        name: 'div',\n        bindings: {\n          css: {\n            code: \"{\\n  display: 'flex',\\n  flexDirection: 'columns'\\n}\",\n          },\n        },\n        children: [],\n      },\n    ],\n    name: 'RenderContent',\n  },\n  CLICK: {\n    children: [\n      {\n        name: 'div',\n        bindings: {\n          onClick: {\n            code: 'trackClick(props.content.id)',\n          },\n        },\n        children: [],\n      },\n    ],\n  },\n  RENDER_BLOCKS: {\n    imports: [\n      {\n        imports: {\n          RenderBlocks: 'default',\n        },\n        path: './RenderBlocks.lite',\n      },\n    ],\n    children: [\n      {\n        name: 'RenderBlocks',\n        bindings: {\n          blocks: {\n            code: 'props.content.blocks',\n          },\n        },\n      },\n    ],\n    name: 'RenderContent',\n  },\n  COMPLETE: {\n    name: 'RenderContent',\n    imports: [\n      {\n        imports: {\n          RenderBlocks: 'default',\n        },\n        path: './RenderBlocks.lite',\n      },\n    ],\n    hooks: {\n      onMount: {\n        code: '\\n  sendComponentsToVisualEditor(registeredComponent);\\n',\n      },\n      onUpdate: [\n        {\n          code: '\\n  dispatchNewContentToVisualEditor(props.content);\\n',\n          deps: '[props.content]',\n        },\n      ],\n    },\n    context: {\n      set: {\n        null: {\n          name: 'BuilderContext',\n          value: {\n            content: {\n              code: 'props.content',\n              type: 'property',\n            },\n            registeredComponents: {\n              code: 'props.customComponents',\n              type: 'property',\n            },\n          },\n        },\n      },\n    },\n    children: [\n      {\n        name: 'div',\n        bindings: {\n          css: {\n            code: \"{\\n  display: 'flex',\\n  flexDirection: 'columns'\\n}\",\n          },\n          onClick: {\n            code: 'trackClick(props.content.id)',\n          },\n        },\n        children: [\n          {\n            name: 'RenderBlocks',\n            bindings: {\n              blocks: {\n                code: 'props.content.blocks',\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n};\n\nconst openTagRe = /(<[a-z]+[^>]*)/gi;\n\n// Sync selections between the Builder editor and the fiddle\nconst SYNC_SELECTIONS = false;\n\nconst indexToRowAndColumn = (str: string, index: number): Position => {\n  const rows = str.split('\\n');\n  let row = 0;\n  let column = 0;\n  let cursor = 0;\n  while (cursor < index) {\n    const rowText = rows[row];\n    column++;\n    if (column > rowText.length) {\n      column = 0;\n      row++;\n      // cursor++;\n    }\n\n    if (cursor === index) {\n      return { row, column };\n    }\n    cursor++;\n  }\n  return { row, column };\n};\n\nconst rowColumnToIndex = (str: string, position: Position): number => {\n  const rows = str.split('\\n');\n  let row = 0;\n  let column = 0;\n  let cursor = 0;\n  while (true) {\n    const rowText = rows[row];\n    if (typeof rowText === undefined) {\n      return cursor;\n    }\n    column++;\n    if (column > rowText.length) {\n      column = 0;\n      row++;\n      cursor++;\n    }\n\n    if (row === position.row && column === position.column) {\n      return cursor;\n    }\n    cursor++;\n  }\n};\n\nconst debug = getQueryParam('debug') === 'true';\n\nconst TabLogo = (props: { src: string }) => {\n  const size = 12;\n  return (\n    <img\n      alt=\"Icon\"\n      src={`${props.src}?width=${size * 2}`}\n      css={{\n        marginRight: 7,\n        objectFit: 'contain',\n        objectPosition: 'center',\n        height: size,\n        width: size,\n        filter: 'grayscale(100%)',\n        opacity: 0.6,\n        '.Mui-selected.MuiButtonBase-root &': {\n          filter: 'none',\n          opacity: 1,\n        },\n      }}\n    />\n  );\n};\n\nconst TabLabelWithIcon = (props: { icon?: string; label: string }) => {\n  const useIcon = false;\n  return (\n    <div css={{ display: 'flex', alignItems: 'center' }}>\n      {useIcon && props.icon && <TabLogo src={props.icon} />} {props.label}\n    </div>\n  );\n};\n\nconst defaultInputCode = `\nimport { Component, Input } from \"@angular/core\";\n\n@Component({\n  selector: \"foo-component\",\n  template: \\`\n    <div>\n      <input\n        class=\"input\"\n        [value]=\"name\"\n        (input)=\"name = $event.target.value\"\n      />\n      Hello {{name}} ! I can run in React, Vue, Solid, or Liquid!\n    </div>\n  \\`,\n})\nexport default class FooComponent {\n  name = \"Steve\";\n}\n`;\n\nconst plugins = [\n  compileAwayBuilderComponents(),\n  mapStyles({\n    map: (styles) => ({\n      ...styles,\n      boxSizing: undefined,\n      flexShrink: undefined,\n      alignItems: styles.alignItems === 'stretch' ? undefined : styles.alignItems,\n    }),\n  }),\n];\n\ntype EditorRefArgs = Parameters<NonNullable<EditorProps['onMount']>>;\ntype Editor = EditorRefArgs[0];\n\nconst hasBothTsAndJsSupport = (outputTab: string) => {\n  return ['svelte', 'vue'].includes(outputTab);\n};\n\n// TODO: Build this Fiddle app with Mitosis :)\nexport default function Fiddle() {\n  const monaco = useMonaco();\n\n  const [staticState] = useState(() => ({\n    ignoreNextBuilderUpdate: false,\n  }));\n  const [builderData, setBuilderData] = useState<any>(null);\n  const state = useLocalObservable(() => ({\n    code: getQueryParam('code') || defaultCode,\n    inputType: 'json' as 'json' | 'jsx',\n    showInput: true,\n    jsonExample: 'ON_MOUNT' as keyof typeof JSON_CODE_EXAMPLES,\n    inputCode: defaultInputCode,\n    output: { react: '', vue: '', svelte: '', qwik: '', solid: '' },\n    outputTab: getQueryParam('outputTab') || 'vue',\n    pendingBuilderChange: null as any,\n    builderData: {} as any,\n    isDraggingBuilderCodeBar: false,\n    isDraggingJSXCodeBar: false,\n    jsxCodeTabWidth: Number(localStorageGet('jsxCodeTabWidth')) || 45,\n    builderPaneHeight: Number(localStorageGet('builderPaneHeight')) || 35,\n    setEditorRef(editor: Editor, monaco: EditorRefArgs[1]) {\n      monacoEditorRef.current = editor;\n      if (editor) {\n        if (SYNC_SELECTIONS) {\n          editor.onDidChangeCursorPosition((event) => {\n            const { position, reason } = event;\n\n            if (reason !== monaco.editor.CursorChangeReason.Explicit) {\n              return;\n            }\n\n            const index = rowColumnToIndex(state.code, {\n              column: position.column - 1,\n              row: position.lineNumber - 1,\n            });\n\n            const elementIndex =\n              Array.from(state.code.substring(0, index).matchAll(openTagRe)).length - 1;\n\n            if (elementIndex === -1) {\n              return;\n            }\n\n            (\n              document.querySelector('builder-editor iframe') as HTMLIFrameElement\n            )?.contentWindow?.postMessage(\n              {\n                type: 'builder.changeSelection',\n                data: {\n                  index: elementIndex,\n                },\n              },\n              '*',\n            );\n          });\n        }\n      }\n    },\n    options: {\n      typescript: localStorageGet('options.typescript') || ('false' as 'true' | 'false'),\n    },\n    applyPendingBuilderChange(update?: any) {\n      const builderJson = update || state.pendingBuilderChange;\n      if (!builderJson) {\n        return;\n      }\n      const jsxJson = builderContentToMitosisComponent(builderJson);\n      state.code = componentToMitosis()({ component: jsxJson });\n      state.pendingBuilderChange = null;\n    },\n\n    async updateOutput() {\n      try {\n        state.pendingBuilderChange = null;\n        staticState.ignoreNextBuilderUpdate = true;\n\n        let json: MitosisComponent;\n\n        switch (state.inputType) {\n          case 'json':\n            json = JSON.parse(state.code);\n            if (state.jsonExample !== 'COMPLETE') {\n              json = generateValidJson(json) as any;\n            } else {\n              json = generateValidJson(json) as any;\n            }\n            break;\n          case 'jsx':\n            // const wrappedCode = `\n            // import RenderBlocks from './RenderBlocks';\n\n            // export default function RenderContent(props) {\n            //   ${state.code}\n            // }`;\n            // console.log(wrappedCode);\n            json = parseJsx(state.code);\n            break;\n        }\n\n        let commonOptions: { typescript: boolean } = {\n          typescript: hasBothTsAndJsSupport(state.outputTab) && state.options.typescript === 'true',\n        };\n\n        state.output = {\n          react: componentToReact({\n            stylesType: 'style-tag',\n            stateType: 'useState',\n            plugins,\n            ...commonOptions,\n          })({ component: json }),\n\n          qwik: componentToQwik({ plugins, ...commonOptions })({ component: json }).trim(),\n\n          vue: componentToVue({\n            plugins,\n            api: 'composition',\n            ...commonOptions,\n          })({ component: json, path: '' }),\n\n          svelte: componentToSvelte({\n            stateType: 'variables',\n            plugins,\n            ...commonOptions,\n          })({ component: json }),\n\n          solid: componentToSolid({ plugins, ...commonOptions })({ component: json }),\n        };\n\n        const newBuilderData = componentToBuilder()({ component: json });\n        setBuilderData(newBuilderData);\n      } catch (err) {\n        if (debug) {\n          throw err;\n        } else {\n          console.warn(err);\n        }\n      }\n    },\n  }));\n\n  useEventListener<KeyboardEvent>(document.body, 'keydown', (e) => {\n    // Cancel cmd+s, sometimes people hit it instinctively when editing code and the browser\n    // \"save webpage\" dialog is unwanted and annoying\n    if ((e.metaKey || e.ctrlKey) && e.key === 's') {\n      e.preventDefault();\n      state.applyPendingBuilderChange();\n    }\n  });\n\n  useEventListener<MouseEvent>(document.body, 'mousemove', (e) => {\n    if (state.isDraggingJSXCodeBar) {\n      const windowWidth = window.innerWidth;\n      const pointerRelativeXpos = e.clientX;\n      const newWidth = Math.max((pointerRelativeXpos / windowWidth) * 100, 5);\n      state.jsxCodeTabWidth = Math.min(newWidth, 95);\n    } else if (state.isDraggingBuilderCodeBar) {\n      const bannerHeight = 0;\n      const windowHeight = window.innerHeight;\n      const pointerRelativeYPos = e.clientY;\n      const newHeight = Math.max(\n        (1 - (pointerRelativeYPos + bannerHeight) / windowHeight) * 100,\n        5,\n      );\n      state.builderPaneHeight = Math.min(newHeight, 95);\n    }\n  });\n\n  useEventListener<MouseEvent>(document.body, 'mouseup', (e) => {\n    state.isDraggingJSXCodeBar = false;\n    state.isDraggingBuilderCodeBar = false;\n  });\n  useEventListener<MessageEvent>(window, 'message', (e) => {\n    if (e.data?.type === 'builder.saveCommand') {\n      if (e.data.data || state.pendingBuilderChange) {\n        state.applyPendingBuilderChange(e.data.data || state.pendingBuilderChange);\n      }\n    } else if (e.data?.type === 'builder.selectionChange') {\n      if (SYNC_SELECTIONS) {\n        // TODO: only do this when this editor does *not* have focus\n        const { selectionIndices } = e.data.data;\n        if (Array.isArray(selectionIndices)) {\n          const index = selectionIndices[0];\n          if (typeof index === 'number') {\n            const code = state.code;\n            let match: RegExpExecArray | null;\n\n            let i = 0;\n            while ((match = openTagRe.exec(code)) != null) {\n              if (!match) {\n                break;\n              }\n              if (i++ === index) {\n                const index = match.index;\n                const length = match[1].length;\n                if (monaco) {\n                  const start = indexToRowAndColumn(code, index - 1);\n                  const end = indexToRowAndColumn(code, index + length + 1);\n                  const startPosition = new monaco.Position(start.row + 1, start.column + 1);\n                  const endPosition = new monaco.Position(end.row + 1, end.column + 1);\n\n                  monacoEditorRef.current?.setSelection(\n                    monaco.Selection.fromPositions(startPosition, endPosition),\n                  );\n                }\n                break;\n              }\n            }\n          }\n        }\n      }\n    }\n  });\n\n  const monacoEditorRef = useRef<Editor | null>(null);\n\n  useReaction(\n    () => state.jsxCodeTabWidth,\n    (width) => localStorageSet('jsxCodeTabWidth', width),\n    { fireImmediately: false, delay: 1000 },\n  );\n\n  useReaction(\n    () => state.builderPaneHeight,\n    (width) => localStorageSet('builderPaneHeight', width),\n    { fireImmediately: false, delay: 1000 },\n  );\n\n  useReaction(\n    () => state.code,\n    (code) => setQueryParam('code', code),\n    { fireImmediately: false },\n  );\n  useReaction(\n    () => state.inputType,\n    (tab) => {\n      if (tab === 'json') {\n        state.code = JSON.stringify(DEFAULT_JSON_CODE, null, 2);\n      } else {\n        state.code = DEFAULT_JSX_CODE;\n      }\n\n      setQueryParam('inputTab', tab);\n    },\n    { fireImmediately: true },\n  );\n\n  useReaction(\n    () => state.code,\n    (code) => {\n      state.updateOutput();\n    },\n    { delay: 1000 },\n  );\n\n  useReaction(\n    () => state.inputCode,\n    (code) => {\n      state.updateOutput();\n    },\n    { delay: 1000 },\n  );\n\n  return useObserver(() => {\n    const monacoTheme = theme.darkMode ? 'vs-dark' : 'vs';\n\n    return (\n      <div\n        css={{\n          display: 'flex',\n          flexDirection: 'column',\n          padding: 8,\n          height: '100vh',\n        }}\n      >\n        <div\n          css={{\n            flexGrow: 1,\n            position: 'absolute',\n            top: 0,\n            right: 16,\n            color: theme.darkMode ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)',\n            zIndex: 2,\n          }}\n        >\n          <div>\n            <button\n              onClick={() => {\n                theme.darkMode = !theme.darkMode;\n              }}\n            >\n              🌚\n            </button>\n            <div>JSON examples:</div>\n            <select\n              name=\"pets\"\n              id=\"pet-select\"\n              value={state.jsonExample}\n              onChange={(x) => {\n                const key = x.target.value as keyof typeof JSON_CODE_EXAMPLES;\n                state.jsonExample = key;\n                state.inputType = 'json';\n                state.code = JSON.stringify(JSON_CODE_EXAMPLES[key], null, 2);\n              }}\n            >\n              {Object.keys(JSON_CODE_EXAMPLES).map((key) => (\n                <option key={key} value={key}>\n                  {key}\n                </option>\n              ))}\n            </select>\n          </div>\n\n          <div\n            css={{\n              paddingTop: 24,\n            }}\n          >\n            <button\n              onClick={() => {\n                state.showInput = !state.showInput;\n              }}\n            >\n              HIDE/SHOW INPUT\n            </button>\n          </div>\n\n          <div\n            css={{\n              paddingTop: 24,\n            }}\n          >\n            <div>Generator:</div>\n            <button\n              onClick={() => {\n                state.inputType = state.inputType === 'json' ? 'jsx' : 'json';\n              }}\n            >\n              USE {state.inputType.toUpperCase()}\n            </button>\n          </div>\n        </div>\n        {state.showInput && (\n          <div\n            css={{\n              position: 'relative',\n              height: 380,\n              border: '1px solid black',\n              margin: '0 300px',\n              flexGrow: 1,\n            }}\n          >\n            <Typography\n              variant=\"h3\"\n              css={{\n                flexGrow: 1,\n                position: 'absolute',\n                bottom: 0,\n                right: 16,\n                color: theme.darkMode ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)',\n                zIndex: 2,\n              }}\n            >\n              Input\n            </Typography>\n            <JsxCodeEditor\n              disableLinting={true}\n              options={{\n                renderLineHighlightOnlyWhenFocus: true,\n                overviewRulerBorder: false,\n                hideCursorInOverviewRuler: true,\n                automaticLayout: true,\n                minimap: { enabled: false },\n                scrollbar: { vertical: 'hidden' },\n                fontSize: 18,\n              }}\n              onMount={(editor, monaco) => state.setEditorRef(editor, monaco)}\n              theme={monacoTheme}\n              language={state.inputType === 'json' ? 'json' : 'typescript'}\n              value={state.code}\n              onChange={(val = '') => (state.code = val)}\n            />\n          </div>\n        )}\n\n        <div\n          key={state.showInput.toString()}\n          css={{ flexGrow: 1, display: 'flex', flexDirection: 'column' }}\n        >\n          {(\n            [\n              ['vue', 'svelte'],\n              ['solid', 'qwik'],\n            ] as const\n          ).map((outputArr) => (\n            <div\n              key={outputArr.join(',')}\n              css={{\n                display: 'flex',\n                flexGrow: 1,\n              }}\n            >\n              {outputArr.map((output) => (\n                <div\n                  key={output}\n                  css={{\n                    height: '100%',\n                    width: '50%',\n                    position: 'relative',\n                    border: '1px solid black',\n                  }}\n                >\n                  <Typography\n                    variant=\"h3\"\n                    css={{\n                      flexGrow: 1,\n                      position: 'absolute',\n                      bottom: 0,\n                      right: 16,\n                      color: theme.darkMode ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.7)',\n                      zIndex: 2,\n                    }}\n                  >\n                    {output[0].toUpperCase() + output.slice(1)}\n                  </Typography>\n                  <MonacoEditor\n                    height=\"100%\"\n                    options={{\n                      automaticLayout: true,\n                      overviewRulerBorder: false,\n                      foldingHighlight: false,\n                      renderLineHighlightOnlyWhenFocus: true,\n                      occurrencesHighlight: false,\n                      readOnly: getQueryParam('readOnly') !== 'false',\n                      minimap: { enabled: false },\n                      renderLineHighlight: 'none',\n                      selectionHighlight: false,\n                      scrollbar: { vertical: 'hidden' },\n                      fontSize: 18,\n                    }}\n                    theme={monacoTheme}\n                    language={output === 'qwik' || output === 'solid' ? 'typescript' : 'html'}\n                    value={state.output[output]}\n                  />\n                </div>\n              ))}\n            </div>\n          ))}\n        </div>\n      </div>\n    );\n  });\n}\n"
  },
  {
    "path": "packages/fiddle/src/components/TextLink.tsx",
    "content": "import { AnchorHTMLAttributes } from 'react';\nimport { colors } from '../constants/colors';\n\nexport function TextLink(props: AnchorHTMLAttributes<HTMLAnchorElement>) {\n  return <a rel=\"noreferrer\" css={{ color: colors.primary, cursor: 'pointer' }} {...props} />;\n}\n"
  },
  {
    "path": "packages/fiddle/src/constants/breakpoints.ts",
    "content": "const getBreakpointMediaQuery = (maxWidth: number) => `@media (max-width: ${maxWidth}px)`;\n\nexport const breakpoints = {\n  sizes: {\n    small: 700,\n  },\n  mediaQueries: {\n    get small() {\n      return getBreakpointMediaQuery(breakpoints.sizes.small);\n    },\n  },\n};\n"
  },
  {
    "path": "packages/fiddle/src/constants/colors.ts",
    "content": "import { observable } from 'mobx';\nimport { theme } from './theme';\n\nexport const colors = observable({\n  get primary() {\n    return theme.darkMode ? 'rgb(84, 203, 255)' : 'rgba(28, 151, 204, 1)';\n  },\n  get contrast() {\n    return theme.darkMode ? '#444' : '#ddd';\n  },\n  get background() {\n    return theme.darkMode ? '#1e1e1e' : '#f8f8f8';\n  },\n});\n"
  },
  {
    "path": "packages/fiddle/src/constants/device.ts",
    "content": "import { observable } from 'mobx';\nimport { breakpoints } from './breakpoints';\n\nexport const device = observable({\n  width: window.innerWidth,\n  get small() {\n    return device.width < breakpoints.sizes.small;\n  },\n});\n\nwindow.addEventListener(\n  'resize',\n  () => {\n    device.width = window.innerWidth;\n  },\n  { passive: true },\n);\n"
  },
  {
    "path": "packages/fiddle/src/constants/templates/jsx-templates.ts",
    "content": "import dedent from 'dedent';\n\nexport const defaultCode = dedent`\n  import { useState } from \"@builder.io/mitosis\";\n\n  export default function MyComponent(props) {\n    const [name, setName] = useState(\"Steve\");\n\n    return (\n      <div>\n        <input\n          css={{\n            color: \"red\",\n          }}\n          value={name}\n          onChange={(event) => setName(event.target.value)}\n        />\n        Hello! I can run in React, Vue, Solid, or Liquid!\n      </div>\n    );\n  }\n`;\n\nexport const templates: { [key: string]: string } = {\n  basic: dedent`\n    import { useStore } from \"@builder.io/mitosis\";\n    \n    export default function MyComponent(props) {\n      const state = useStore({\n        name: \"Steve\"\n      });\n      \n      return (\n        <div>\n          <input\n            css={{\n              color: \"red\",\n            }}\n            value={state.name}\n            onChange={(event) => { state.name = event.target.value }}\n          />\n          Hello\n          {state.name}! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      );\n    }\n  `,\n\n  tailwind: dedent`\n    import { useStore } from \"@builder.io/mitosis\";\n\n    export default function MyComponent(props) {\n      const state = useStore({\n        name: \"Steve\"\n      });\n\n\n      return (\n        <div\n          css={{\n            padding: \"10px\",\n          }}\n        >\n          <link\n            href=\"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css\"\n            rel=\"stylesheet\"\n          />\n\n          <input\n            class=\"shadow-md rounded w-full px-4 py-2\"\n            placeholder=\"What is your name?\"\n            value={state.name}\n            onChange={(event) => { state.name = event.target.value }}\n          />\n\n          <h1\n            class=\"text-lg\"\n            css={{\n              marginTop: \"10px\",\n            }}\n          >\n            Hello,\n            {state.name}!\n          </h1>\n        </div>\n      );\n    }\n  `,\n\n  'methods and refs': dedent`\n    import { useStore, useRef } from \"@builder.io/mitosis\";\n    \n    export default function MyComponent(props) {\n      const inputRef = useRef<HTMLInputElement>();\n\n      const state = useStore({\n        name: \"Steve\",\n        onBlur() {\n          inputRef.focus()\n        },\n        get lowerCaseName() {\n          return state.name.toLowerCase();\n        }\n      });\n\n    \n    \n      return (\n        <div>\n          {props.showInput && (\n            <input\n              ref={inputRef}\n              css={{\n                color: \"red\",\n              }}\n              value={state.name}\n              onBlur={(event) => state.onBlur()}\n              onChange={(event) => { state.name = event.target.value }}\n            />\n          )}\n          Hello\n          {state.lowerCaseName}! I can run in React, Vue, Solid, or Liquid!\n        </div>\n      );\n    }\n  `,\n  loop: dedent`\n    import { useStore } from \"@builder.io/mitosis\";\n    \n    export default function MyComponent(props) {\n      const state = useStore({\n        list: [\"hello\", \"world\"],\n        newItemName: \"New item\",\n        addItem() {\n          state.list = [\n            ...state.list, \n            state.newItemName,\n          ]\n        }\n      })\n    \n      return (\n        <div\n          css={{\n            padding: \"10px\",\n          }}\n        >\n          <link\n            href=\"https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css\"\n            rel=\"stylesheet\"\n          />\n    \n          <input\n            class=\"shadow-md rounded w-full px-4 py-2\"\n            value={state.newItemName}\n            onChange={(event) => {state.newItemName = event.target.value}}\n          />\n    \n          <button\n            class=\"bg-blue-500 rounded w-full text-white font-bold py-2 px-4 \"\n            css={{\n              margin: \"10px 0\",\n            }}\n            onClick={(event) => state.addItem()}\n          >\n            Add list item\n          </button>\n    \n          <div class=\"shadow-md rounded\">\n            {state.list.map((item) => (\n              <div\n                class=\"border-gray-200 border-b\"\n                css={{\n                  padding: \"10px\",\n                }}\n              >\n                {item}\n              </div>\n            ))}\n          </div>\n        </div>\n      );\n    }\n  `,\n};\n"
  },
  {
    "path": "packages/fiddle/src/constants/templates/svelte-templates.ts",
    "content": "import dedent from 'dedent';\n\nexport const defaultCode = dedent`\n  <script>\n    let name = 'Steve';\n  </script>\n\n  <div>\n    <input bind:value={name} />\n    Hello! I can run in React, Vue, Solid, or Liquid!\n  </div>\n`;\n\nexport const templates: { [key: string]: string } = {\n  basic: defaultCode,\n  textExpressions: dedent`\n  <script>\n    let a = 5;\n    let b = 12;\n  </script>\n\n  <div>\n    normal:\n    { a + b} \n    <br>\n    conditional\n    { a > 2 ? 'hello' : 'bye'}\n  </div>\n`,\n  reactive: dedent`\n    <script>\n      let name = \"Steve\"\n\n      $: lowercaseName = name.toLowerCase();\n    </script>\n\n    <div>\n      <input value={name} />\n      Lowercase: {lowercaseName}\n    </div>\n\n  `,\n  'reactive 2': dedent`\n    <script>\n      let a = 2\n      let b = 5\n      let result;\n\n      $: calculateResult(a, b)\n\n      function calculateResult(a, b) {\n        result = a * b\n      }\n    </script>\n\n    <div>\n      <input type=\"number\" bind:value={a} />\n      <input type=\"number\" bind:value={b} />\n      Result: {result}\n    </div>\n  `,\n  'event handlers': dedent`\n    <script>\n      function log(msg = 'hello') {\n        console.log(msg)\n      }\n    </script>\n    <div>\n      <button on:click={(a) => log('hi')}>\n        Log hi\n      </button>\n      <button on:click={log}>\n        Log default\n      </button>\n      <button on:click={log()}>\n        Log default\n      </button>\n      <button on:click={log('bye')}>\n        Log Bye\n      </button>\n    </div>      \n  `,\n  'if / else': dedent`\n    <script>\n      let show = true;\n\n      function toggle() {\n        show = !show;\n      }\n    </script>\n\n    {#if show}\n      <button on:click={toggle}>\n        Hide\n      </button>\n    {:else}\n      <button on:click={toggle}>\n        Show\n      </button>\n    {/if}\n  `,\n  each: dedent`\n  <script>\n    let numbers = ['one', 'two', 'three'];\n  </script>\n\n  <ul>\n    {#each numbers as num}\n      <li>{num}</li>\n    {/each}\n  </ul>\n  `,\n  'lifecycle hooks': dedent`\n  <script>\n    import { onMount, onDestroy, onAfterUpdate } from 'svelte';\n\n    onMount(() => {\n      console.log('onMount');\n    });\n    \n    onDestroy(() => {\n      console.log('onDestroy');\n    });\n\n    onAfterUpdate(() => {\n      console.log('onAfterUpdate');\n    });\n  </script>\n\n  <div></div>\n  `,\n  imports: dedent`\n  <script>\n    import Button from './Button.svelte';\n\n    let disabled = false;\n  </script>\n\n  <div>\n    <Button type=\"button\" disabled={disabled}><slot/></Button>\n  </div>\n  `,\n  '@html': dedent`\n  <script>\n    let html = '<b>bold</b>'\n  </script>\n\n  <div>\n    {@html html}\n  </div>\n  `,\n  context: dedent`\n  <script>\n    import { getContext, setContext } from 'svelte';\n\n    let activeTab = 0;\n\n    let disabled = getContext('disabled');\n\n    setContext('activeTab', activeTab)\n  </script>\n\n  <div>\n    {activeTab}\n  </div>\n  `,\n  'class directive': dedent`\n  <script>\n    export let disabled = false;\n    let focus = true;\n  </script>\n  \n  <input class=\"form-input\" class:disabled class:focus />\n  `,\n  style: dedent`\n  <script>\n  </script>\n  \n  <input class=\"form-input\"/>\n  \n  <style>\n    input {\n      color: red;\n      font-size: 12px;\n    }\n    \n    .form-input:focus {\n      outline: 1px solid blue;\n    }\n  </style>\n  `,\n  slots: dedent`\n  <div>\n    <slot>default</slot>\n    <slot name=\"test\"><div>default</div></slot>\n  </div>\n  `,\n  'bind:group': dedent`\n  <script>\n    let tortilla = 'Plain';\n    let fillings = [];\n  </script>\n  <div>\n    <!-- grouped radio inputs are mutually exclusive -->\n    <input type=\"radio\" bind:group={tortilla} value=\"Plain\">\n    <input type=\"radio\" bind:group={tortilla} value=\"Whole wheat\">\n    <input type=\"radio\" bind:group={tortilla} value=\"Spinach\">\n    <br>\n    <br>\n    <!-- grouped checkbox inputs populate an array -->\n    <input type=\"checkbox\" bind:group={fillings} value=\"Rice\">\n    <input type=\"checkbox\" bind:group={fillings} value=\"Beans\">\n    <input type=\"checkbox\" bind:group={fillings} value=\"Cheese\">\n    <input type=\"checkbox\" bind:group={fillings} value=\"Guac (extra)\">\n    <p>Tortilla: {tortilla}</p>\n    <p>Fillings: {fillings}</p>\n  </div>\n  `,\n  'bind:property': dedent`\n      <script>\n      let value = 'hello';\n    </script>\n\n    <input {value} />\n  `,\n};\n"
  },
  {
    "path": "packages/fiddle/src/constants/theme.ts",
    "content": "import { observable, reaction } from 'mobx';\nimport { localStorageGet } from '../functions/local-storage-get';\nimport { localStorageSet } from '../functions/local-storage-set';\n\nexport const theme = observable({\n  darkMode: localStorageGet('darkMode') ?? false,\n});\n\nreaction(\n  () => theme.darkMode,\n  (darkMode) => localStorageSet('darkMode', darkMode),\n);\n"
  },
  {
    "path": "packages/fiddle/src/functions/delete-query-param.ts",
    "content": "export const deleteQueryParam = (name: string): void => {\n  var searchParams = new URLSearchParams(window.location.search);\n  searchParams.delete(name);\n  const search = searchParams.toString();\n  window.history.replaceState(\n    null,\n    '',\n    window.location.pathname + (search.length ? `?${search}` : ''),\n  );\n};\n"
  },
  {
    "path": "packages/fiddle/src/functions/get-query-param.ts",
    "content": "import { decompressFromBase64 } from 'lz-string';\n\nfunction isBrowser(): boolean {\n  return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport const getQueryParam = (name: string): string | null => {\n  if (!isBrowser()) {\n    return null;\n  }\n\n  const urlParams = new URLSearchParams(window.location.search);\n  const rawValue = urlParams.get(name);\n  const decompressedValue = rawValue && decompressFromBase64(rawValue);\n\n  return decompressedValue ?? rawValue;\n};\n"
  },
  {
    "path": "packages/fiddle/src/functions/local-storage-get.ts",
    "content": "export type LocalStorageGetOptions = {\n  suppressWarning?: boolean;\n};\n\nexport const localStorageGet = (key: string, options: LocalStorageGetOptions = {}): any => {\n  try {\n    if (typeof window === 'undefined') return null;\n    const val = localStorage.getItem(key);\n    if (typeof val === 'string') {\n      return JSON.parse(val);\n    }\n    return val;\n  } catch (err) {\n    if (!options.suppressWarning) {\n      console.warn('Could not get from localStorage', err);\n    }\n  }\n};\n"
  },
  {
    "path": "packages/fiddle/src/functions/local-storage-set.ts",
    "content": "export type LocalStorageSetOptions = {\n  suppressWarning?: boolean;\n};\n\nexport const localStorageSet = (\n  key: string,\n  value: any,\n  options: LocalStorageSetOptions = {},\n): any => {\n  try {\n    return localStorage.setItem(key, JSON.stringify(value));\n  } catch (err) {\n    if (!options.suppressWarning) {\n      console.warn('Could not set from localStorage', err);\n    }\n  }\n};\n"
  },
  {
    "path": "packages/fiddle/src/functions/prompt-upload-figma-file.ts",
    "content": "import { BuilderContent } from '@builder.io/sdk';\n\nexport async function promptUploadFigmaJsonFile(): Promise<BuilderContent> {\n  return new Promise((resolve, reject) => {\n    const input = document.createElement('input');\n    input.style.display = 'none';\n    input.type = 'file';\n    document.body.appendChild(input);\n    input.click();\n\n    // TODO: parse and upload images!\n    input.addEventListener('change', async (event) => {\n      const file = (event.target as any).files[0];\n      if (file) {\n        const reader = new FileReader();\n\n        // Closure to capture the file information.\n        reader.onload = async (e) => {\n          const text = (e.target as any).result;\n          try {\n            const json = JSON.parse(text);\n            resolve(json);\n          } catch (err) {\n            reject(err);\n          }\n          input.remove();\n        };\n\n        reader.readAsText(file);\n      }\n    });\n  });\n}\n"
  },
  {
    "path": "packages/fiddle/src/functions/set-query-param.ts",
    "content": "import { compressToBase64 } from 'lz-string';\n\nexport const setQueryParam = (name: string, value: string): void => {\n  var searchParams = new URLSearchParams(window.location.search);\n  const compressedValue = compressToBase64(value);\n  searchParams.set(name, compressedValue);\n  const search = searchParams.toString();\n  window.history.replaceState(\n    null,\n    '',\n    window.location.pathname + (search.length ? `?${search}` : ''),\n  );\n};\n"
  },
  {
    "path": "packages/fiddle/src/hooks/use-event-listener.ts",
    "content": "import { useEffect, useRef } from 'react';\n\nexport function useEventListener<EventType extends Event = Event>(\n  element: EventTarget,\n  eventName: string,\n  handler: (event: EventType) => void,\n  listenerOptions?: AddEventListenerOptions,\n) {\n  const { once, passive } = listenerOptions || {};\n  const savedHandler = useRef(handler);\n\n  useEffect(() => {\n    savedHandler.current = handler;\n  }, [handler]);\n\n  useEffect(() => {\n    const eventListener = (event: Event) => savedHandler.current(event as EventType);\n\n    element.addEventListener(eventName, eventListener, { once, passive });\n\n    return () => {\n      element.removeEventListener(eventName, eventListener);\n    };\n  }, [eventName, element, once, passive]);\n}\n"
  },
  {
    "path": "packages/fiddle/src/hooks/use-reaction.ts",
    "content": "import { IReactionOptions, reaction } from 'mobx';\nimport { useEffect } from 'react';\n\nexport function useReaction<T = any>(\n  expression: () => T,\n  effect: (value: T) => void,\n  options: IReactionOptions<T, boolean> = { fireImmediately: true },\n): void {\n  useEffect(() => reaction(expression, effect, options), []);\n}\n"
  },
  {
    "path": "packages/fiddle/src/index.css",
    "content": "html,\nbody,\n#root {\n  height: 100vh;\n}\n\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n    sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n    monospace;\n}\n\na {\n  text-decoration: none;\n  color: inherit;\n}\n"
  },
  {
    "path": "packages/fiddle/src/react-app-env.d.ts",
    "content": "/// <reference types=\"node\" />\n/// <reference types=\"react\" />\n/// <reference types=\"react-dom\" />\n\ndeclare namespace NodeJS {\n  interface ProcessEnv {\n    readonly NODE_ENV: 'development' | 'production' | 'test';\n    readonly PUBLIC_URL: string;\n  }\n}\n\ndeclare module '*.avif' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.bmp' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.gif' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.jpg' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.jpeg' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.png' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.webp' {\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.svg' {\n  import * as React from 'react';\n\n  export const ReactComponent: React.FunctionComponent<\n    React.SVGProps<SVGSVGElement> & {\n      title?: string;\n    }\n  >;\n\n  const src: string;\n  export default src;\n}\n\ndeclare module '*.module.css' {\n  const classes: { readonly [key: string]: string };\n  export default classes;\n}\n\ndeclare module '*.module.scss' {\n  const classes: { readonly [key: string]: string };\n  export default classes;\n}\n\ndeclare module '*.module.sass' {\n  const classes: { readonly [key: string]: string };\n  export default classes;\n}\n\ndeclare module 'prettier-plugin-svelte' {}\n"
  },
  {
    "path": "packages/fiddle/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noEmit\": true,\n    \"incremental\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"Node\",\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"jsxImportSource\": \"@emotion/react\",\n    \"baseUrl\": \"./\"\n  },\n  \"include\": [\"next-env.d.ts\", \"**/*.ts\", \"**/*.tsx\", \"../core/typings.d.ts\"],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "packages/starter/.gitignore",
    "content": "template/package-lock.json"
  },
  {
    "path": "packages/starter/.npmignore",
    "content": "template/package-lock.json\n\nnode_modules/"
  },
  {
    "path": "packages/starter/CHANGELOG.md",
    "content": "# @builder.io/create-mitosis\n\n## 0.1.0\n\n### Minor Changes\n\n- 383b022: @template/server-react: upgrade all dependencies to latest\n\n## 0.0.8\n\n### Patch Changes\n\n- 7955e1f: Fix: `npm run start` command on Windows.\n\n## 0.0.7\n\n### Patch Changes\n\n- 4ab3ce8: Fix: remove duplicate `.eslintrc.js` `extends` config.\n\n## 0.0.6\n\n### Patch Changes\n\n- b3ddbb4: Fix: update README\n"
  },
  {
    "path": "packages/starter/jsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\",\n    \"target\": \"ES2020\",\n    \"jsx\": \"react\",\n    \"strictNullChecks\": true,\n    \"strictFunctionTypes\": true,\n    \"strict\": true,\n    \"checkJs\": true\n  },\n  \"include\": [\"./script.cjs\"],\n  \"exclude\": [\"node_modules\", \"**/node_modules/*\"]\n}\n"
  },
  {
    "path": "packages/starter/package.json",
    "content": "{\n  \"name\": \"@builder.io/create-mitosis\",\n  \"version\": \"0.1.0\",\n  \"description\": \"CLI to create a new Mitosis project from a template.\",\n  \"dependencies\": {\n    \"@clack/prompts\": \"^0.7.0\",\n    \"cross-spawn\": \"^7.0.3\"\n  },\n  \"bin\": \"./script.cjs\",\n  \"files\": [\n    \"script.cjs\",\n    \"template\"\n  ],\n  \"scripts\": {\n    \"start\": \"node ./script.cjs\",\n    \"build\": \"echo 'No build step'\",\n    \"release:dev\": \"yarn version prerelease && yarn npm publish --tag dev\",\n    \"release:patch\": \"yarn version patch && yarn npm publish\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^20.9.1\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/script.cjs",
    "content": "#!/usr/bin/env node\n\nconst fs = require('fs');\nconst path = require('path');\nconst { cwd } = require('process');\nconst p = require('@clack/prompts');\nconst spawn = require('cross-spawn');\n\nconst USER_DIR = cwd();\nconst SCRIPT_DIR = __dirname;\n\nlet projectName = '';\n\nconst main = async () => {\n  p.intro(`Welcome to Mitosis! Let's get started.`);\n\n  projectName = await p.text({\n    message: 'What is your Mitosis project name?',\n    defaultValue: 'my-project',\n    placeholder: 'my-project',\n    validate: (_input) => {\n      const input = _input || 'my-project';\n      if (fs.existsSync(path.join(USER_DIR, input))) return 'Folder already exists with this name';\n    },\n  });\n\n  if (typeof projectName !== 'string') {\n    p.outro(`Please provide a string for your project name. Exiting...`);\n    process.exit(0);\n  }\n\n  /**\n   * @type {string[] | symbol}\n   */\n  const targets = await p.multiselect({\n    message: 'Select your desired outputs',\n    options: [{ value: 'react' }, { value: 'svelte' }, { value: 'qwik' }],\n    required: true,\n  });\n\n  if (!Array.isArray(targets) || targets.length === 0) {\n    p.outro(`No targets selected. Exiting...`);\n    process.exit(0);\n  }\n\n  p.note('Generating your template...');\n\n  // start by copying over base starter\n  const templateFolder = path.join(SCRIPT_DIR, './template/');\n  const outputFolder = path.join(USER_DIR, projectName);\n\n  /**\n   *\n   * @param {string} filePath\n   */\n  const updateMitosisConfig = (filePath) => {\n    const config = require(filePath);\n    config.targets = targets;\n\n    return `\n/**\n * @type {import('@builder.io/mitosis').MitosisConfig}\n */\nmodule.exports = ${JSON.stringify(config, null, 2)}`;\n  };\n  /**\n   *\n   * Copy `src` to `dest`.\n   * @param {string} src\n   * @param {string} dest\n   */\n  const copy = (src, dest) => {\n    fs.mkdirSync(dest, { recursive: true });\n    fs.readdirSync(src).forEach((entry) => {\n      if (entry === 'node_modules') return;\n      if (entry === 'package-lock.json') return;\n\n      // ignore folders meant for excluded targets\n      const isTargetSpecificFolder =\n        src.endsWith('/library/packages') || src.endsWith('/test-apps');\n      if (isTargetSpecificFolder && !targets.some((target) => entry === target)) {\n        return;\n      }\n\n      const srcPath = path.join(src, entry);\n      const destPath = path.join(dest, entry);\n\n      // update mitosis.config.cjs\n      if (entry === 'mitosis.config.cjs') {\n        try {\n          const newConfig = updateMitosisConfig(srcPath);\n\n          fs.writeFileSync(destPath, newConfig);\n        } catch (error) {\n          p.note('Error processing `mitosis.config.cjs`. Copying as-is.');\n          console.error(error);\n          fs.copyFileSync(srcPath, destPath);\n        }\n        return;\n      }\n\n      if (fs.lstatSync(srcPath).isDirectory()) {\n        copy(srcPath, destPath);\n      } else {\n        const fileContents = fs.readFileSync(srcPath, 'utf8');\n        // update all files to have correct package names\n        const updatedFileContents = fileContents.replace(/@template/g, '@' + projectName);\n        fs.writeFileSync(destPath, updatedFileContents);\n      }\n    });\n  };\n\n  copy(templateFolder, outputFolder);\n\n  p.note('Template generated!');\n  // ask about installing dependencies\n  const install = await p.confirm({\n    message: 'Install dependencies?',\n  });\n\n  if (install) {\n    p.note(`Installing dependencies...this may take a while!`);\n    const installProcess = spawn.sync('npm', ['install'], {\n      cwd: outputFolder,\n      stdio: 'inherit',\n    });\n  }\n\n  p.outro(`\n  You're all set!\n  \n  Next: \n  - cd \\`${projectName}/\\`\n  - open the README.md for further instructions on how to run your project\n  `);\n  process.exit(0);\n};\n\ntry {\n  main();\n} catch (error) {\n  p.outro(`An error occurred. Clearing folder and exiting...`);\n  console.error(error);\n\n  if (projectName) {\n    fs.rmdirSync(path.join(USER_DIR, projectName), { recursive: true });\n  }\n  process.exit(1);\n}\n"
  },
  {
    "path": "packages/starter/template/README.md",
    "content": "# Mitosis Mono-repo Starter\n\nThis is a mono-repo for Mitosis libraries. It contains a few workspaces to get you started.\n\n## Workspaces\n\n- [library](./library/): workspace containing your Mitosis project.\n  - [library/src](./library/src/): Mitosis source code of your component library.\n  - [library/packages](./library/packages/): individual outputs generated by Mitosis.\n- [test-apps](./test-apps/): dev servers that import your Mitosis components. Useful for testing your library.\n\n## Developing\n\n1. Run Mitosis in watch mode\n\n```bash\ncd library\nnpm run start\n```\n\n2. If the output has its own bundling step (like Svelte/Qwik), you will need to run that build step in a separate terminal:\n\n```bash\ncd library/packages/qwik\nnpm run build:watch\n```\n\n3. Finally, run the corresponding test server of your library from the previous step to see your Mitosis project in action:\n\n```bash\ncd test-apps/qwik\nnpm run dev\n```\n\n## Next up\n\nIf you want to add more outputs, or configure Mitosis in any way, you will need to update the `mitosis.config.js` file in the root of your project.\nCheck [our configuration docs](/docs/configuration.md) for how to setup the Mitosis config file.\n"
  },
  {
    "path": "packages/starter/template/library/.eslintrc.cjs",
    "content": "module.exports = {\n  env: {\n    browser: true,\n  },\n  plugins: ['@builder.io/mitosis'],\n  extends: [\n    // Use this approach for our recommended rules configuration\n    'plugin:@builder.io/mitosis/recommended',\n  ],\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    ecmaVersion: 2018,\n    sourceType: 'module',\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n};\n"
  },
  {
    "path": "packages/starter/template/library/.gitignore",
    "content": "packages/**/src\n"
  },
  {
    "path": "packages/starter/template/library/mitosis.config.cjs",
    "content": "/**\n * @type {import('@builder.io/mitosis').MitosisConfig}\n */\nmodule.exports = {\n  files: 'src/**',\n  targets: ['qwik', 'react', 'svelte'],\n  dest: 'packages',\n  commonOptions: {\n    typescript: true,\n  },\n  options: {\n    react: {\n      stylesType: 'style-tag',\n    },\n    svelte: {},\n    qwik: {},\n  },\n};\n"
  },
  {
    "path": "packages/starter/template/library/package.json",
    "content": "{\n  \"name\": \"@template/library\",\n  \"private\": true,\n  \"scripts\": {\n    \"start\": \"watch \\\"npm run build\\\" ./src\",\n    \"build\": \"mitosis build --c mitosis.config.cjs\",\n    \"lint\": \"eslint\"\n  },\n  \"type\": \"module\",\n  \"exports\": {\n    \"./*\": \"./output/*/src/index.js\"\n  },\n  \"dependencies\": {\n    \"@builder.io/eslint-plugin-mitosis\": \"^0.0.15\",\n    \"@builder.io/mitosis\": \"latest\",\n    \"@builder.io/mitosis-cli\": \"latest\",\n    \"eslint\": \"^8.51.0\"\n  },\n  \"devDependencies\": {\n    \"watch\": \"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/.eslintignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    es2021: true,\n    node: true,\n  },\n  extends: [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:qwik/recommended\",\n  ],\n  parser: \"@typescript-eslint/parser\",\n  parserOptions: {\n    tsconfigRootDir: __dirname,\n    project: [\"./tsconfig.json\"],\n    ecmaVersion: 2021,\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: [\"@typescript-eslint\"],\n  rules: {\n    \"@typescript-eslint/no-explicit-any\": \"off\",\n    \"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n    \"@typescript-eslint/no-inferrable-types\": \"off\",\n    \"@typescript-eslint/no-non-null-assertion\": \"off\",\n    \"@typescript-eslint/no-empty-interface\": \"off\",\n    \"@typescript-eslint/no-namespace\": \"off\",\n    \"@typescript-eslint/no-empty-function\": \"off\",\n    \"@typescript-eslint/no-this-alias\": \"off\",\n    \"@typescript-eslint/ban-types\": \"off\",\n    \"@typescript-eslint/ban-ts-comment\": \"off\",\n    \"prefer-spread\": \"off\",\n    \"no-case-declarations\": \"off\",\n    \"no-console\": \"off\",\n    \"@typescript-eslint/no-unused-vars\": [\"error\"],\n  },\n};\n"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/.gitignore",
    "content": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n\n# Cache\n.cache\n.mf\n.vscode\n.rollup.cache\ntsconfig.tsbuildinfo\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# Editor\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\nlib\nlib-types\nsrc"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/.prettierignore",
    "content": "# Files Prettier should not format\n**/*.log\n**/.DS_Store\n*.\ndist\nnode_modules\nlib\nlib-types\nsrc"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/package.json",
    "content": "{\n  \"name\": \"@template/library-qwik\",\n  \"version\": \"0.0.1\",\n  \"main\": \"./lib/index.qwik.mjs\",\n  \"qwik\": \"./lib/index.qwik.mjs\",\n  \"types\": \"./lib-types/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": \"./lib/index.qwik.mjs\",\n      \"require\": \"./lib/index.qwik.cjs\",\n      \"types\": \"./lib-types/index.d.ts\"\n    }\n  },\n  \"files\": [\n    \"lib\",\n    \"lib-types\"\n  ],\n  \"engines\": {\n    \"node\": \">=15.0.0\"\n  },\n  \"type\": \"module\",\n  \"scripts\": {\n    \"build\": \"qwik build\",\n    \"build.lib\": \"vite build --mode lib\",\n    \"build.types\": \"tsc --emitDeclarationOnly\",\n    \"build:watch\": \"npm run build.types && npm run build.lib -- --watch\",\n    \"release\": \"np\",\n    \"qwik\": \"qwik\"\n  },\n  \"devDependencies\": {\n    \"@builder.io/qwik\": \"1.2.18\",\n    \"@types/eslint\": \"^8.44.4\",\n    \"@types/node\": \"^20.8.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.13.1\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"eslint\": \"^8.51.0\",\n    \"eslint-plugin-qwik\": \"latest\",\n    \"np\": \"^8.0.4\",\n    \"prettier\": \"^3.0.3\",\n    \"typescript\": \"^5.3.2\",\n    \"undici\": \"^5.26.0\",\n    \"vite\": \"^4.4.11\",\n    \"vite-tsconfig-paths\": \"^4.2.1\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2020\",\n    \"lib\": [\"es2020\", \"DOM\"],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@builder.io/qwik\",\n    \"strict\": true,\n    \"declaration\": true,\n    \"declarationDir\": \"lib-types\",\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"noImplicitAny\": false,\n    \"incremental\": true,\n    \"isolatedModules\": true,\n    \"types\": [\"vite/client\"]\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/qwik/vite.config.ts",
    "content": "import { qwikVite } from '@builder.io/qwik/optimizer';\nimport { defineConfig } from 'vite';\nimport tsconfigPaths from 'vite-tsconfig-paths';\nimport pkg from './package.json';\n\nconst { dependencies = {}, peerDependencies = {} } = pkg as any;\nconst makeRegex = (dep) => new RegExp(`^${dep}(/.*)?$`);\nconst excludeAll = (obj) => Object.keys(obj).map(makeRegex);\n\nexport default defineConfig(() => {\n  return {\n    build: {\n      target: 'es2020',\n      lib: {\n        entry: './src/index.ts',\n        formats: ['es', 'cjs'],\n        fileName: (format) => `index.qwik.${format === 'es' ? 'mjs' : 'cjs'}`,\n      },\n      rollupOptions: {\n        // externalize deps that shouldn't be bundled into the library\n        external: [/^node:.*/, ...excludeAll(dependencies), ...excludeAll(peerDependencies)],\n      },\n    },\n    plugins: [qwikVite(), tsconfigPaths()],\n  };\n});\n"
  },
  {
    "path": "packages/starter/template/library/packages/react/package.json",
    "content": "{\n  \"name\": \"@template/library-react\",\n  \"type\": \"module\",\n  \"files\": [\n    \"package\",\n    \"src\"\n  ],\n  \"main\": \"./src/index.ts\",\n  \"module\": \"./src/index.ts\",\n  \"svelte\": \"./src/index.ts\",\n  \"exports\": {\n    \"./src\": {\n      \"import\": \"./src/index.ts\",\n      \"require\": \"./src/index.ts\"\n    },\n    \".\": {\n      \"import\": \"./src/index.ts\",\n      \"require\": \"./src/index.ts\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/react/tsconfig.json",
    "content": "// Empty file to prevent test-apps/react Vite from searching upwards for a tsconfig\n// and finding `\"jsxImportSource\": \"@builder.io/mitosis\"` which causes a crash.\n{}\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/.gitignore",
    "content": ".DS_Store\nnode_modules\nbuild\ndist\n.svelte-kit\n/package\n.env\n.env.*\n!.env.example\nvite.config.js.timestamp-*\nvite.config.ts.timestamp-*\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/package.json",
    "content": "{\n  \"name\": \"@template/library-svelte\",\n  \"version\": \"0.0.1\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"svelte-kit sync && svelte-package --input=src && publint\",\n    \"build:watch\": \"svelte-kit sync && svelte-package --input=src --watch\",\n    \"preview\": \"vite preview\",\n    \"prepublishOnly\": \"npm run package\",\n    \"check\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json\",\n    \"check:watch\": \"svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch\"\n  },\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"svelte\": \"./dist/index.js\"\n    }\n  },\n  \"files\": [\n    \"dist\",\n    \"!dist/**/*.test.*\",\n    \"!dist/**/*.spec.*\"\n  ],\n  \"peerDependencies\": {\n    \"svelte\": \"^4.0.0\"\n  },\n  \"devDependencies\": {\n    \"@sveltejs/adapter-auto\": \"^2.0.0\",\n    \"@sveltejs/kit\": \"^1.27.4\",\n    \"@sveltejs/package\": \"^2.0.0\",\n    \"publint\": \"^0.1.9\",\n    \"svelte\": \"^4.0.5\",\n    \"svelte-check\": \"^3.6.0\",\n    \"tslib\": \"^2.4.1\",\n    \"typescript\": \"^5.3.2\",\n    \"vite\": \"^4.4.2\"\n  },\n  \"svelte\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"type\": \"module\"\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/routes/index/+page.svelte",
    "content": "<div>Placeholder route to make svelte happy</div>\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/svelte.config.js",
    "content": "import adapter from '@sveltejs/adapter-auto';\nimport { vitePreprocess } from '@sveltejs/kit/vite';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n  // Consult https://kit.svelte.dev/docs/integrations#preprocessors\n  // for more information about preprocessors\n  preprocess: vitePreprocess(),\n\n  kit: {\n    // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.\n    // If your environment is not supported or you settled on a specific environment, switch out the adapter.\n    // See https://kit.svelte.dev/docs/adapters for more information about adapters.\n    adapter: adapter(),\n    files: {\n      routes: 'routes',\n    },\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/tsconfig.json",
    "content": "{\n  \"extends\": \"./.svelte-kit/tsconfig.json\",\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"checkJs\": true,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"skipLibCheck\": true,\n    \"sourceMap\": true,\n    \"strict\": true,\n    \"noImplicitAny\": false,\n    \"target\": \"ESNext\",\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/library/packages/svelte/vite.config.ts",
    "content": "import { sveltekit } from '@sveltejs/kit/vite';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  plugins: [sveltekit()],\n});\n"
  },
  {
    "path": "packages/starter/template/library/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    \"noImplicitAny\": false,\n    \"moduleResolution\": \"node\",\n    \"jsxImportSource\": \"@builder.io/mitosis\"\n  },\n  \"include\": [\"src\"]\n}\n"
  },
  {
    "path": "packages/starter/template/package.json",
    "content": "{\n  \"name\": \"@template/mono-repo\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"description\": \"Mitosis mono-repo template\",\n  \"workspaces\": [\n    \"library/packages/*\",\n    \"library\",\n    \"test-apps/*\"\n  ]\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/.eslintignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/.eslintrc.cjs",
    "content": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    es2021: true,\n    node: true,\n  },\n  extends: [\n    \"eslint:recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"plugin:qwik/recommended\",\n  ],\n  parser: \"@typescript-eslint/parser\",\n  parserOptions: {\n    tsconfigRootDir: __dirname,\n    project: [\"./tsconfig.json\"],\n    ecmaVersion: 2021,\n    sourceType: \"module\",\n    ecmaFeatures: {\n      jsx: true,\n    },\n  },\n  plugins: [\"@typescript-eslint\"],\n  rules: {\n    \"@typescript-eslint/no-explicit-any\": \"off\",\n    \"@typescript-eslint/explicit-module-boundary-types\": \"off\",\n    \"@typescript-eslint/no-inferrable-types\": \"off\",\n    \"@typescript-eslint/no-non-null-assertion\": \"off\",\n    \"@typescript-eslint/no-empty-interface\": \"off\",\n    \"@typescript-eslint/no-namespace\": \"off\",\n    \"@typescript-eslint/no-empty-function\": \"off\",\n    \"@typescript-eslint/no-this-alias\": \"off\",\n    \"@typescript-eslint/ban-types\": \"off\",\n    \"@typescript-eslint/ban-ts-comment\": \"off\",\n    \"prefer-spread\": \"off\",\n    \"no-case-declarations\": \"off\",\n    \"no-console\": \"off\",\n    \"@typescript-eslint/no-unused-vars\": [\"error\"],\n    \"@typescript-eslint/consistent-type-imports\": \"warn\",\n    \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n  },\n};\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/.gitignore",
    "content": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n*.local\n\n# Cache\n.cache\n.mf\n.rollup.cache\ntsconfig.tsbuildinfo\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\n# Editor\n.vscode/*\n!.vscode/launch.json\n!.vscode/*.code-snippets\n\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/.prettierignore",
    "content": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist\ndist-dev\nlib\nlib-types\netc\nexternal\nnode_modules\ntemp\ntsc-out\ntsdoc-metadata.json\ntarget\noutput\nrollup.config.js\nbuild\n.cache\n.vscode\n.rollup.cache\ndist\ntsconfig.tsbuildinfo\nvite.config.ts\n*.spec.tsx\n*.spec.ts\n.netlify\npnpm-lock.yaml\npackage-lock.json\nyarn.lock\nserver\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/package.json",
    "content": "{\n  \"name\": \"@template/server-qwik\",\n  \"private\": true,\n  \"trustedDependencies\": [\n    \"sharp\"\n  ],\n  \"scripts\": {\n    \"build\": \"qwik build\",\n    \"build.client\": \"vite build\",\n    \"build.preview\": \"vite build --ssr src/entry.preview.tsx\",\n    \"build.types\": \"tsc --incremental --noEmit\",\n    \"deploy\": \"echo 'Run \\\"npm run qwik add\\\" to install a server adapter'\",\n    \"dev\": \"vite --mode ssr\",\n    \"dev.debug\": \"node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force\",\n    \"fmt\": \"prettier --write .\",\n    \"fmt.check\": \"prettier --check .\",\n    \"lint\": \"eslint \\\"src/**/*.ts*\\\"\",\n    \"preview\": \"qwik build preview && vite preview --open\",\n    \"start\": \"vite --open --mode ssr\",\n    \"qwik\": \"qwik\"\n  },\n  \"devDependencies\": {\n    \"@template/library-qwik\": \"*\",\n    \"@builder.io/qwik\": \"^1.2.18\",\n    \"@builder.io/qwik-city\": \"^1.2.18\",\n    \"@types/eslint\": \"^8.44.4\",\n    \"@types/node\": \"^20.8.4\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.13.1\",\n    \"@typescript-eslint/parser\": \"^6.13.1\",\n    \"eslint\": \"^8.51.0\",\n    \"eslint-plugin-qwik\": \"^1.2.18\",\n    \"prettier\": \"^3.0.3\",\n    \"typescript\": \"^5.3.2\",\n    \"undici\": \"^5.26.0\",\n    \"vite\": \"^4.4.11\",\n    \"vite-tsconfig-paths\": \"^4.2.1\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/public/manifest.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/web-manifest-combined.json\",\n  \"name\": \"qwik-project-name\",\n  \"short_name\": \"Welcome to Qwik\",\n  \"start_url\": \".\",\n  \"display\": \"standalone\",\n  \"background_color\": \"#fff\",\n  \"description\": \"A Qwik project app.\"\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/public/robots.txt",
    "content": ""
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/entry.dev.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * Development entry point using only client-side modules:\n * - Do not use this mode in production!\n * - No SSR\n * - No portion of the application is pre-rendered on the server.\n * - All of the application is running eagerly in the browser.\n * - More code is transferred to the browser than in SSR mode.\n * - Optimizer/Serialization/Deserialization code is not exercised!\n */\nimport { render, type RenderOptions } from '@builder.io/qwik';\nimport Root from './root';\n\nexport default function (opts: RenderOptions) {\n  return render(document, <Root />, opts);\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/entry.preview.tsx",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * It's the bundle entry point for `npm run preview`.\n * That is, serving your app built in production mode.\n *\n * Feel free to modify this file, but don't remove it!\n *\n * Learn more about Vite's preview command:\n * - https://vitejs.dev/config/preview-options.html#preview-options\n *\n */\nimport { createQwikCity } from '@builder.io/qwik-city/middleware/node';\nimport qwikCityPlan from '@qwik-city-plan';\nimport render from './entry.ssr';\n\n/**\n * The default export is the QwikCity adapter used by Vite preview.\n */\nexport default createQwikCity({ render, qwikCityPlan });\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/entry.ssr.tsx",
    "content": "/**\n * WHAT IS THIS FILE?\n *\n * SSR entry point, in all cases the application is rendered outside the browser, this\n * entry point will be the common one.\n *\n * - Server (express, cloudflare...)\n * - npm run start\n * - npm run preview\n * - npm run build\n *\n */\nimport { renderToStream, type RenderToStreamOptions } from '@builder.io/qwik/server';\nimport { manifest } from '@qwik-client-manifest';\nimport Root from './root';\n\nexport default function (opts: RenderToStreamOptions) {\n  return renderToStream(<Root />, {\n    manifest,\n    ...opts,\n    // Use container attributes to set attributes on the html tag.\n    containerAttributes: {\n      lang: 'en-us',\n      ...opts.containerAttributes,\n    },\n  });\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/root.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport { QwikCityProvider, RouterOutlet, ServiceWorkerRegister } from '@builder.io/qwik-city';\n\nexport default component$(() => {\n  /**\n   * The root of a QwikCity site always start with the <QwikCityProvider> component,\n   * immediately followed by the document's <head> and <body>.\n   *\n   * Don't remove the `<head>` and `<body>` elements.\n   */\n\n  return (\n    <QwikCityProvider>\n      <head>\n        <meta charSet=\"utf-8\" />\n        <link rel=\"manifest\" href=\"/manifest.json\" />\n      </head>\n      <body lang=\"en\">\n        <RouterOutlet />\n        <ServiceWorkerRegister />\n      </body>\n    </QwikCityProvider>\n  );\n});\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/routes/index.tsx",
    "content": "import { component$ } from '@builder.io/qwik';\nimport type { DocumentHead } from '@builder.io/qwik-city';\nimport { AutoComplete, Todos } from '@template/library-qwik';\n\nexport default component$(() => {\n  return (\n    <>\n      <div>Welcome to Qwik</div>\n      <AutoComplete />\n      <Todos />\n    </>\n  );\n});\n\nexport const head: DocumentHead = {\n  title: 'Welcome to Qwik',\n  meta: [\n    {\n      name: 'description',\n      content: 'Qwik site description',\n    },\n  ],\n};\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/routes/layout.tsx",
    "content": "import { component$, Slot } from '@builder.io/qwik';\nimport type { RequestHandler } from '@builder.io/qwik-city';\n\nexport const onGet: RequestHandler = async ({ cacheControl }) => {\n  // Control caching for this request for best performance and to reduce hosting costs:\n  // https://qwik.builder.io/docs/caching/\n  cacheControl({\n    // Always serve a cached response by default, up to a week stale\n    staleWhileRevalidate: 60 * 60 * 24 * 7,\n    // Max once every 5 seconds, revalidate on the server to get a fresh version of this page\n    maxAge: 5,\n  });\n};\n\nexport default component$(() => {\n  return <Slot />;\n});\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/src/routes/service-worker.ts",
    "content": "/*\n * WHAT IS THIS FILE?\n *\n * The service-worker.ts file is used to have state of the art prefetching.\n * https://qwik.builder.io/qwikcity/prefetching/overview/\n *\n * Qwik uses a service worker to speed up your site and reduce latency, ie, not used in the traditional way of offline.\n * You can also use this file to add more functionality that runs in the service worker.\n */\nimport { setupServiceWorker } from '@builder.io/qwik-city/service-worker';\n\nsetupServiceWorker();\n\naddEventListener('install', () => self.skipWaiting());\n\naddEventListener('activate', () => self.clients.claim());\n\ndeclare const self: ServiceWorkerGlobalScope;\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2022\",\n    \"lib\": [\"es2022\", \"DOM\", \"WebWorker\", \"DOM.Iterable\"],\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@builder.io/qwik\",\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"resolveJsonModule\": true,\n    \"moduleResolution\": \"node\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"incremental\": true,\n    \"isolatedModules\": true,\n    \"outDir\": \"tmp\",\n    \"noEmit\": true,\n    \"types\": [\"node\", \"vite/client\"],\n    \"paths\": {\n      \"~/*\": [\"./src/*\"]\n    }\n  },\n  \"files\": [\"./.eslintrc.cjs\"],\n  \"include\": [\"src\", \"./*.d.ts\", \"./*.config.ts\"]\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/qwik/vite.config.ts",
    "content": "import { qwikCity } from '@builder.io/qwik-city/vite';\nimport { qwikVite } from '@builder.io/qwik/optimizer';\nimport { defineConfig } from 'vite';\nimport tsconfigPaths from 'vite-tsconfig-paths';\n\nexport default defineConfig(() => {\n  return {\n    plugins: [qwikCity(), qwikVite(), tsconfigPaths()],\n    dev: {\n      headers: {\n        'Cache-Control': 'public, max-age=0',\n      },\n    },\n    preview: {\n      headers: {\n        'Cache-Control': 'public, max-age=600',\n      },\n    },\n  };\n});\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/.gitignore",
    "content": "dist-ssr\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/index.html",
    "content": "<!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>Vite App</title>\n  </head>\n  <body>\n    <div id=\"root\"></div>\n    <script type=\"module\" src=\"/src/main.tsx\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/package.json",
    "content": "{\n  \"name\": \"@template/server-react\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"tsc && vite build\",\n    \"dev\": \"vite\",\n    \"serve\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@template/library-react\": \"*\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\"\n  },\n  \"devDependencies\": {\n    \"@types/react\": \"^19.0.10\",\n    \"@types/react-dom\": \"^19.0.4\",\n    \"@vitejs/plugin-react\": \"^4.3.4\",\n    \"typescript\": \"^5.8.2\",\n    \"vite\": \"^6.2.0\"\n  }\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/src/App.jsx",
    "content": "import { AutoComplete, Todos } from '@template/library-react';\n\nfunction App() {\n  return (\n    <div>\n      <div>Welcome to React.</div>\n      <AutoComplete />\n      <Todos />\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/src/main.tsx",
    "content": "import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n);\n\n// <div\n//   style={{\n//     display: 'flex',\n//     height: '100vh',\n//     width: '100vw',\n//     flexDirection: 'column',\n//   }}\n// >\n//   <div\n//     style={{\n//       flex: 1,\n//       display: 'flex',\n//       flexDirection: 'column',\n//       alignItems: 'stretch',\n//     }}\n//   >\n//     <div style={{ height: '100%' }}>\n//       <img src=\"../react-logo.png\" width={50} />\n//       <Todos />\n//     </div>\n//   </div>\n//   <div\n//     style={{\n//       flex: 1,\n//       display: 'flex',\n//       flexDirection: 'column',\n//       alignItems: 'stretch',\n//     }}\n//   >\n//     <iframe src=\"http://localhost:3001\" height={'100%'} />\n//   </div>\n// </div>\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/src/vite-env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"useDefineForClassFields\": true,\n    \"lib\": [\"DOM\", \"DOM.Iterable\", \"ESNext\"],\n    \"allowJs\": false,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": false,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\"\n  },\n  \"include\": [\"src\", \"src/**/*.tsx\"],\n  \"references\": [{ \"path\": \"./tsconfig.node.json\" }]\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/tsconfig.node.json",
    "content": "{\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\"\n  },\n  \"include\": [\"vite.config.ts\"]\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/react/vite.config.ts",
    "content": "import react from '@vitejs/plugin-react';\nimport { defineConfig } from 'vite';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n  plugins: [react()],\n  server: {\n    port: 1111,\n  },\n});\n"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/.gitignore",
    "content": ".DS_Store\nnode_modules\n/build\n/package\n.env\n.env.*\n!.env.example\nvite.config.js.timestamp-*\nvite.config.ts.timestamp-*\n\n.svelte-kit"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/package.json",
    "content": "{\n  \"name\": \"@template/server-svelte\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"devDependencies\": {\n    \"@template/library-svelte\": \"*\",\n    \"@sveltejs/adapter-auto\": \"^2.0.0\",\n    \"@sveltejs/kit\": \"^1.27.4\",\n    \"svelte\": \"^4.0.5\",\n    \"vite\": \"^4.4.2\"\n  },\n  \"type\": \"module\"\n}\n"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/src/app.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%sveltekit.assets%/favicon.png\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    %sveltekit.head%\n  </head>\n  <body data-sveltekit-preload-data=\"hover\">\n    <div style=\"display: contents\">%sveltekit.body%</div>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/src/routes/+page.svelte",
    "content": "<script>\n  import { AutoComplete, Todos } from '@template/library-svelte';\n</script>\n\n<h1>Welcome to SvelteKit</h1>\n<AutoComplete />\n<Todos />\n<p>Visit <a href=\"https://kit.svelte.dev\">kit.svelte.dev</a> to read the documentation</p>\n"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/svelte.config.js",
    "content": "import adapter from '@sveltejs/adapter-auto';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n  kit: {\n    // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.\n    // If your environment is not supported or you settled on a specific environment, switch out the adapter.\n    // See https://kit.svelte.dev/docs/adapters for more information about adapters.\n    adapter: adapter(),\n  },\n};\n\nexport default config;\n"
  },
  {
    "path": "packages/starter/template/test-apps/svelte/vite.config.js",
    "content": "import { sveltekit } from '@sveltejs/kit/vite';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  plugins: [sveltekit()],\n});\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {},\n  \"references\": [{ \"path\": \"./packages/core\" }, { \"path\": \"./packages/cli\" }],\n  \"files\": []\n}\n"
  }
]